精华内容
下载资源
问答
  • 新人刚开始学习java总结一下StringBufferStringBuilder的区别及一些知识,不对的地方还望大家指出让我...
    2016-04-23 18:37:51

    因为String定义的字符串是final类的是不可变的,涉及字符串的操作时是需要定义大量的String实例,这样就导致了垃圾回收时会销毁大量的无用的String实例,对性能的消耗很大。
    Java中StringBuffer和StringBuilder他们是字符串变量,是可改变的对象,每当我们用它们对字符串做操作时,实际上是在一个对象上操作的,不像String一样创建一些对象进行操作,所以速度就快了。

    StringBuffer线程是安全的,而StringBuilder线程是不安全的(两个线程不能同时修改StringBuffer中的内容,而能同时修改StringBuilder中的东西)。

    两者的优点是都能在做对长字符串进行修改时会创建一个缓冲区,来提高效率。

    堆、栈的初步认识:

    我们在新定义变量时,基本的8个变量都是在栈里保存了名称和值,然后再堆里保存了内存地址,在我们调用方法更改值得时候只是重新复制了一个变量进行计算,输出时还是原来的地址所以值不会改变。

    而数组和我们定义的其他变量(如Student s)只是将其变量名保存在栈里,将其值得内存地址保存在堆里,调用方法对其进行更改的话,再行输出就是更改后的值。

    接口和抽象类的总结:

    接口关键字:interface  implements

    抽象类关键字:abstract   extends

    完全抽象只有构造方法里面没有代码,由其子类来实现构造方法;

    接口因为不论定义不定义都是公共的,抽象的所以public abstract可以省略;

    接口中不能存在构造方法;

    一个子类可以实现多个接口,而一个子类只能继承一个父类;

    子类不能直接继承父类里面私有的成员,特殊修饰符修饰的构造方法。


    个人认为,也是开始学习感触比较深的是学习编程语言一定要锻炼自己的逻辑思维,比如排序法的实现先要想清楚是怎么进行交换,需要几个变量,几层循环怎么循环来实现就很容易来进行接下来的代码环节。然后就是反复的进行代码的练习,练习的多了,遇到的情况多了就慢慢理解对应代码的功能了。


    更多相关内容
  • 初学者最容易犯的错误是: 1、没有区分开教材上的数字1字母l,字母o数字0的区别,造成变量未定义的错误。另一个易错点是将英文状态下的逗号,分号;括号()双引号""输入出入成中文状态下的逗号,分号;括号(),...

    f13f17d9c7c4?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

    初学者遇到最多的困惑是:上课也能听懂,书上的例题也能看明白,可是到自己动手做编程时,却不知道如何下手。发生这种现象的原因有三个:

    一、所谓的看懂听明白,只是很肤浅的语法知识,而我们编写的程序或软件是吕爱国要根据要解决问题的实际需要控制程序的流程,如果你没有深刻地理解C语言的语句的执行过程(或流程),你怎么会编写程序解决这些实际问题呢?

    二、用C语言编程解决实际问题,所需要的不仅仅是C语言的编程知识,还需要相关的专业知识。例如,如果你不知道长方形的面积公式,即使C语言学得再好你也编不出求长方形的面积的程序来。

    三、C语言程序设计是一门实践性很强的课程,“纸上谈兵”式的光学不练是学不好C语言的。例如,大家都看过精彩自行车杂技表演,假如,你从来没有骑过自行车,光听教练讲解相关的知识、规则、技巧,不要说上台表演、就是上路你恐怕都不行。

    f13f17d9c7c4?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

    出现问题原因清楚了,那么如何学习呢?请你看【C语言学习六步曲】

    小编特别提醒:在使用本方法之前一定要先阅读C语言的相关内容,要初步掌握相关知识的要点,然后按下述方法学习,可以达到理解、巩固、提高C语言知识和提高程序调式能力的目的。

    第一步、验证性练习

    在这一步要求按照教材上的程序实例进行原样输入,运行一下程序是否正确。在这一步基本掌握C语言编程软件的使用方法(包括新建、打开、保存、关闭C程序,熟练地输入、编辑C程序;初步记忆新学章节的知识点、养成良好的C语言编程风格)。 单击此处查看【C语言的编程风格】

    使用《Turbo C/C++ for Windows 集成实验与学习环境》软件可以很方便地看着软件集成的《C语言入门教程》输入练习其中的程序例题。具体使用方法参见软件帮助部分。

    f13f17d9c7c4?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

    初学者最容易犯的错误是:

    1、没有区分开教材上的数字1和字母l,字母o和数字0的区别,造成变量未定义的错误。另一个易错点是将英文状态下的逗号,分号;括号()双引号""输入出入成中文状态下的逗号,分号;括号(),双引号“”造成非法字符错误。

    2、C语言初学者易犯语法错误:使用未定义的变量、标示符(变量、常量、数组、函数等)不区分大小写、漏掉“;”、“{”与“}”、“(”与“)”不匹配、控制语句(选择、分支、循环)的格式不正确、调用库函数却没有包含相应的头文件、调用未声明的自定义函数、调用函数时实参与形参不匹配、数组的边界超界等。

    3、修改C语言语法错误时要注意以下两点:

    (1)、由于C语言语法比较自由、灵活,因此错误信息定位不是特别精确。例如,当提示第10行发生错误时,如果在第10行没有发现错误,从第10行开始往前查找错误并修改之。

    (2)、一条语句错误可能会产生若干条错误信息只要修改了这条错误,其他错误会随之消失。特别提示:一般情况下,第一条错误信息最能反映错误的位置和类型,所以调试程序时务必根据第一条错误信息进行修改,修改后,立即运行程序,如果还有很多错误,要一个一个地修改,即,每修改一处错误要运行一次程序。

    第二步、照葫芦画瓢

    在第一步输入的C程序的基础上进行试验性的修改,运行一下程序看一看程序结果发生了什么变化,分析结果变化的原因,加深新学知识点的理解。事实上这和第一步时同步进行的,实现“输入”加深知识的记忆,“修改”加深对知识的理解。记忆和理解是相辅相成的,相互促进。

    展开全文
  • 互联网软件的开发发布,已经形成了一套标准流程,最重要的组成部分就是持续集成(Continuous integration,简称 CI)。  本文简要介绍持续集成的概念做法。  一、概念  持续集成指的是,频繁地(一天多...

      互联网软件的开发和发布,已经形成了一套标准流程,最重要的组成部分就是持续集成(Continuous integration,简称 CI)。

      本文简要介绍持续集成的概念和做法。

      一、概念

      持续集成指的是,频繁地(一天多次)将代码集成到主干。

      它的好处主要有两个。

    1、快速发现错误。每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易。

    2、防止分支大幅偏离主干。如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成。

      持续集成的目的,就是让产品可以快速迭代,同时还能保持高质量。它的核心措施是,代码集成到主干之前,必须通过自动化测试。只要有一个测试用例失败,就不能集成。

      Martin Fowler 说过,"持续集成并不能消除 Bug,而是让它们非常容易发现和改正。"

      与持续集成相关的,还有两个概念,分别是持续交付和持续部署。

      二、持续交付

      持续交付(Continuous delivery)指的是,频繁地将软件的新版本,交付给质量团队或者用户,以供评审。如果评审通过,代码就进入生产阶段。

      持续交付可以看作持续集成的下一步。它强调的是,不管怎么更新,软件是随时随地可以交付的。

      三、持续部署

      持续部署(continuous deployment)是持续交付的下一步,指的是代码通过评审以后,自动部署到生产环境。

      持续部署的目标是,代码在任何时刻都是可部署的,可以进入生产阶段。

      持续部署的前提是能自动化完成测试、构建、部署等步骤。它与持续交付的区别,可以参考下图。

      (图片来源

      四、流程

      根据持续集成的设计,代码从提交到生产,整个过程有以下几步。

      4. 1 提交

      流程的第一步,是开发者向代码仓库提交代码。所有后面的步骤都始于本地代码的一次提交(commit)。

      4. 2 测试(第一轮)

      代码仓库对 commit 操作配置了钩子(hook),只要提交代码或者合并进主干,就会跑自动化测试。

      测试有好几种。

    • 单元测试:针对函数或模块的测试
    • 集成测试:针对整体产品的某个功能的测试,又称功能测试
    • 端对端测试:从用户界面直达数据库的全链路测试

      第一轮至少要跑单元测试。

      4. 3 构建

      通过第一轮测试,代码就可以合并进主干,就算可以交付了。

      交付后,就先进行构建(build),再进入第二轮测试。所谓构建,指的是将源码转换为可以运行的实际代码,比如安装依赖,配置各种资源(样式表、JS 脚本、图片)等等。

      常用的构建工具如下。

      Jenkins 和 Strider 是开源软件,Travis 和 Codeship 对于开源项目可以免费使用。它们都会将构建和测试,在一次运行中执行完成。

      4. 4 测试(第二轮)

      构建完成,就要进行第二轮测试。如果第一轮已经涵盖了所有测试内容,第二轮可以省略,当然,这时构建步骤也要移到第一轮测试前面。

      第二轮是全面测试,单元测试和集成测试都会跑,有条件的话,也要做端对端测试。所有测试以自动化为主,少数无法自动化的测试用例,就要人工跑。

      需要强调的是,新版本的每一个更新点都必须测试到。如果测试的覆盖率不高,进入后面的部署阶段后,很可能会出现严重的问题。

      4. 5 部署

      通过了第二轮测试,当前代码就是一个可以直接部署的版本(artifact)。将这个版本的所有文件打包( tar filename.tar * )存档,发到生产服务器。

      生产服务器将打包文件,解包成本地的一个目录,再将运行路径的符号链接(symlink)指向这个目录,然后重新启动应用。这方面的部署工具有 AnsibleChefPuppet 等。

      4. 6 回滚

      一旦当前版本发生问题,就要回滚到上一个版本的构建结果。最简单的做法就是修改一下符号链接,指向上一个版本的目录。

      五、参考链接

    http://kb.cnblogs.com/page/529677/

    展开全文
  • typedefdefine区别(通俗)

    千次阅读 2020-04-18 11:10:53
    总结:typedefdefine可对一个对象进行 取别名(typedef) 或 字符替换(define) ,以此增强程序的可读性 typedeff是关键字,对已经存在的数据类型取别名。 在编译阶段处理,会进行类型检查,只能在定义的作用域内使用...

    总结:typedef和define可对一个对象进行 取别名(typedef) 或 字符替换(define) ,以此增强程序的可读性

    typedeff是关键字,对已经存在的数据类型取别名。
    在编译阶段处理,会进行类型检查,只能在定义的作用域内使用。


    define是预处理指令(宏定义),只进行简单的字符替换,是否产生错误要在编译时才可知。
    没有作用域限制,可以对类型/变量/常量等进行替换


    与const组合区别:

    typedef char* pstr;const pstr”会被解释为“char* const”:不能更改指向的地址(常量指针)
    如果是define则会被解读为const char*:指针指向一个常量,可以更改指向的地址。
    

    1、typedef:它在自己的作用域内给一个已经存在的类型一个别名。它是在是在编译时处理的。

    int main()
    {
      typedef int size;
      size a=3; //等同于int a =3;
      fun();
    }
    
    int fun()
    {
        size a=3;  //报错
    }
    
    

    2、#define 是预处理指令。在编译预处理时进行简单的替换
    tips:一个程序的运行过程,大致可分为:预处理->编译->程序执行。(链接与本知识无关,且不讨论)

    (1)预处理:执行预处理指令,进行简单的替换(替换后删除预处理指令)。

    #define a 3
    
    int main()
    {
    printf("%d",a);
    return 0;
    }
    
    

    字符替换后其实等同于

    int main()
    {
    printf("%d",3);
    return 0;
    }
    

    注意此时程序还远远没有执行,只是编译器在执行预处理(比如我们用记事本写东西,假设可以发送,那么记事本先改正拼写,然后再提交给别人,记事本自我改正拼写的功能就是预处理)

    显而易见,预处理仅是进行简单的字符替换,不作正确性检查,不管含义是否正确,也没有数据类型一说。
    当要替换的字符和定义的变量同名时就会产生定义冲突,如下:

    #define a 3
    
    int main()
    {
    int a=5;
    printf("%d",a);
    return 0;
    }
    

    (2)编译:进行程序的语法检查,检查无错程序再执行,否则直接报错。
    平时我们程序运行直接出错,实际就是编译检查出语法错误,如上的定义冲突错误。程序还没到执行的那一步。

    所以define宏替换,可能带来的错误只有在编译时才可能发现并报错。

    由上可知,define只是程序执行前的字符替换而已,不牵扯程序本身语法或者执行,因此想替换谁替换谁,也没有作用域一说,至于错误,那是编译时候检查的事情了(单纯字符替换对程序运行是缺点,可能造成各种错误)。


    (3)运行时,可能产生的问题

    #define X int*
    typedef int* Y
    X p1, p2;
    等同于int *p1,p2;//一个指针变量,一个整形变量
    
    Y p1,p2; //两个都是指针变量
    
    //int* 可以是一个类型,显然define把int当做类型,更印证的宏替换没有数据类型。
    
    展开全文
  • 之前在项目的存储过程中发现有通过 `DECLARE` 关键字定义...`,这两种类型的变量究竟有什么区别却弄不清楚,赶紧上网查询资料,发现还有`@@sql_mode`这样的变量,这一个圈俩圈的到底是什么啊?会不会出现三个圈的情况?
  • 登陆Linux系统时,虽然输入的是自己的用户名密码,但其实Linux并不认识你的用户名称,它只认识用户名对应的ID号(也就是一串数字)。Linux系统将所有用户的名称与ID的对应关系都存储在/etc/passwd文件中。说白了,...
  • ScratchPython与C++的区别在哪里?孩子都在学什么?在让孩子接触少儿编程时,许多家长都有疑问,Scratch、Python、C++……编程语言这么多,到底该怎么选择?孩子都在学什么?学完之后孩子能收获什么呢?不同的年龄...
  • 软件测试软件调试的区别

    万次阅读 2016-10-31 10:11:55
    最近替客户写论文,整理提纲的时候发现他们把软件的测试调试的部分分开写,虽然知道两者有区别但是当时根本搞不清楚应该怎么写,网上找了些资料看了以后才有些概念,现在贴出来,以后可那能用的到. 1,软件测试是找出...
  • C++中指针引用的区别

    千次阅读 2020-02-17 09:18:00
    指针引用主要有以下区别: 引用必须被初始化,但是不分配存储空间。指针不声明时初始化,在初始化的时候需要分配存储空间。 引用初始化后不能被改变,指针可以改变所指的对象。 不存在指向空值的引用,但是存在...
  • 大家好,我是小墨,最近有很多朋友们给我留言,很多朋友说不太清楚软件测试软件调试到底有什么区别,那么今天呢,我特意写了这篇文章,希望大家带来一些帮助。 正文: 我们先从宽泛的角度来分析领着之间的区别。 1...
  • 手工会计与计算机会计之间的区别手工记账与电算化记账的区别1、运算工具不同传统手工会计运算工具是算盘或电子计算器等,计算过程每运算一次要重复一次,由于不能存储运算结果,人要边算边记录,工作量大,速度慢。...
  • FTPTFTP的区别与介绍

    万次阅读 2019-02-17 11:55:40
    概述: 文件传送协议FTP(File Transfer Protocol)是Internet上使用比较广泛的文件传送协议。FTP提供交互式的访问,允许客户指明文件的类型与...它要存取一个文件,就必须先获得一个本地文件的副本,如果修改文件...
  • GAN实验fid代码的错误改正

    千次阅读 2020-02-15 21:16:41
    原博主进行了验证,发现这样计算出来的fid分数并没有多少差别.有人这样改之后成功了。 但是我修改之后依然报错:ValueError: Cannot iterate over a shape with unknown rank. 把对if shape._dims != []:代码的...
  • 诊断修正系统中遗留的错误,就是纠错性维护。纠错性维护时在系统运行中发生异常或故障时进行的,这种错误往往是遇到了从未用过的输入数据组合或是在与其 他部分接口处产生的,因此只是在某些特定的情况下发生。...
  • C++中指针常量常量指针的区别 一、指针常量是什么? 二、常量指针是什么? 三、如何记忆和区别它们 1.字面上区别它们 2.代码上区别它们 四 Test Yourself! 指针常量 常量指针这两个词其实翻译得不是很合适,...
  • FPGA验证FPGA测试的区别(ASIC IC FPGA的区别

    万次阅读 多人点赞 2019-07-01 14:15:08
    从认识FPGA到今天已经四年了。但有些概念我依然模糊。今天被领导问住了,决定好好补一补基础概念...我现在理解的FPGA都是现成的芯片,比如alteraXilinx出的一些芯片,我们拿过来用,加一些外设驱动功能代码什么的...
  • 堆内存栈内存的区别

    万次阅读 多人点赞 2019-03-14 00:03:46
    总结: 1 栈:为编译器自动分配释放,如函数参数、局部变量、临时变量等等 2 堆:为成员分配释放,由程序员自己申请、自己释放。否则发生内存泄露。...栈内存堆内存的区别(一个笔试题的一部分)http://...
  • nfs ,ftp samba都有什么区别

    万次阅读 多人点赞 2017-12-07 11:02:26
    您会发现TFTPFTP一个主要的区别就是它没有交互式,且不进行身份验证。 NFS最初应用于UNIX操作系统下,它允许应用进程打开一个远地文件,并能够在该文件中某一个特定位置上开始读写数据。 FTP在修改数据文件...
  • 高级程序员普通程序员有哪些区别? 先不说高级。 就只说初级程序员经常容易犯的错误,把这些错误改正了,你离中级就不远了。 初级程序员经常犯的错误集锦 1 命名不规范 2 日志不规范 3 拒绝写接口假...
  • 数据库视图的创建和修改

    万次阅读 热门讨论 2017-02-12 22:32:34
    遗憾啊本来应该早就完成了的数据库视频就因为过年临放假的时候太兴奋了所以就没学习过完年来了之后由于完的心还没有收好导致计划做的好但是实际执行连计划的一般都没有,得亏我意识到了这一点及时改正以后保证一定...
  • C++中对象对象指针的区别

    千次阅读 2018-12-24 11:44:12
    郑重声明:A *a ;是对象指针,而不是指针对象。... ★ 区别:  1. 指针是一个实体,而引用仅是个别名;  2. 引用使用时无需解引用(*),指针需要解引用;  3. 引用只能在定义时被初始化一次,...
  • 黑盒测试白盒测试的区别

    万次阅读 多人点赞 2018-09-21 11:41:40
     白盒测试:是一种测试用例设计方法,在这里盒子指的是被测试的软件,白盒,顾名思义即盒子是可视的,你可以清楚盒子内部的东西以及里面是如何运作的,因此白盒测试需要你对系统内部的结构工作原理有一个清楚的...
  • C++中指针引用的区别(超详细)

    万次阅读 多人点赞 2015-11-10 17:40:31
    指针引用主要有以下区别: 引用必须被初始化,但是不分配存储空间。指针不声明时初始化,在初始化的时候需要分配存储空间。 引用初始化后不能被改变,指针可以改变所指的对象。 不存在指向空值的引用,但是...
  • 浅谈SpringBoot传统的框架的区别

    万次阅读 2018-08-24 15:51:25
    SpringBoot是目前java开发很流行的一个框架,现在的java面试当中也基本上会问到的问题,具体需要查看java面试当中常见问题的可以关注小崔查看我的以往文章。...它传统的SSMSSH框架相比较有什么优势吗? ...
  • 论验收测试回归测试区别

    千次阅读 2018-05-06 21:57:00
    这里,修改的正确性有两重含义:一是所作的修改达到了预定目的,如错误得到改正,能够适应新的运行环境等等;二是不影响软件的其他功能的正确性。   软件测试主要有四个阶段:单元测试,集成测试,系统测试...
  • 在java中,异常分为两种,运行时异常(也就是uncheckException)已检查异常checkException,运行时异常包括平常遇到的各种异常,如空指针异常,数据格式异常等一系列异常,这种异常是可以不捕获的,可通过throws抛...
  • RAC环境修改undo_rentention需要谨慎在RAC环境中,修改某些数据库参数需要谨慎。有客户遇到了这样的问题,在RAC环境下修改undo_retention参数,使用如下命令:alter system set undo_retention=18000 sid='*';这条...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,397
精华内容 6,158
关键字:

修改和改正的区别