- 博客(43)
- 收藏
- 关注
转载 深入理解计算机系统 第三章 程序的机器级表示(1)
计算机执行机器代码,用字节序列编码低级的操作,包括处理数据、管理内存、读写存储设备上的数据,以及利用网络通信。编译器基于编程语言的规则、目标机器的指令集和操作系统遵循的惯例,经过一系列的阶段生成机器代码。GCC C语言编译器以汇编代码的形式产生输出,汇编代码是机器代码的文本表示,给出程序中的每一条指令。然后GCC调用汇编器和链接器,根据汇编代码生成可执行的机器代码。机器级编程中两种抽...
2019-09-22 20:15:00
286
转载 访问权限控制的理解三
1、接口和实现访问权限的控制常被称为是具体实现的隐藏。把数据和方法包装进类中,以及具体实现的隐藏,常共同被称作是封装。其结果是一个同时带有特征和行为的数据类型。出于两个很重要的原因,访问权限控制将权限的边界划在了数据类型的内部。第一个原因是要设定客户端程序员可以使用和不可以使用的界限。可以在结构中建立自己的内部机制,而不必担心客户端程序员会偶然的将内部机制当作是他们可以使用的接口...
2019-09-22 19:50:00
231
转载 深入理解计算机系统 第二章 信息的表示和处理(2)
接上一次的部分,后两节讲的是整数运算以及浮点数的运算。整数分为无符号数字和补码。浮点数分为二进制小数和IEEE浮点表示。三种数字表示:无符号:传统的二进制表示法补码:表示有符号整数的最常见方法浮点数:表示实数的科学计数法的以为为基底的版本结果太大,超出位数的限制时——溢出逻辑右移和算数右移: 逻辑右移在左端补0,算数右移在左端补最高有效位的值。无符号数右移必须...
2019-09-14 22:12:00
160
转载 深入理解计算机系统 第二章 信息的表示和处理(1)
大多数计算机使用8位的块,或者字节(byte),作为最小的可寻址的内存单位,而不是访问内存中单独的位。机器级程序将内存视为一个非常大的字节数组,称为虚拟内存(virtual memory)。内存的每个字节都由一个唯一的数字来标识,称为它的地址,所有可能地址的集合就称为虚拟地址空间(virtual address space)。顾名思义,这个虚拟地址空间只是一个展现给机器级程序的概念性映像...
2019-09-06 11:05:00
167
转载 访问权限控制的理解二
1、Java访问权限修饰词public、protected和private这几个Java访问权限修饰词在使用时,是置于类中每个成员的定义之前的--无论它是一个域还是一个方法。每个访问权限修饰词仅控制它所修饰的特定定义的访问权。如果不提供任何访问权限修饰词,则意味着它是“包访问权限”。因此,无论如何,所有事物都具有某种形式的访问权限控制。一、包访问权限默认访问权限没有任何关...
2019-09-05 15:01:00
186
转载 深入理解计算机系统第一章,计算机系统漫游
1、信息就是位+上下文系统中所有的信息都是由一串比特表示的。区分不同数据对象的唯一方法是我们读到这些数据对象时的上下文。同样的比特信息在不同的上下文中所代表的意思是不同的。2、系统的硬件组成总线、I/O设备、主存、处理器3、存储器层次结构4、计算机系统中的抽象文件是对I/O设备的抽象。 虚拟内存是对程序存储器的抽象。进程是对一个正在运行的程序的抽象。在处理...
2019-08-30 22:03:00
145
转载 访问权限控制的理解一
访问控制(或隐藏具体实现)与“最初的实现并不恰当”有关。Java提供了访问权限修饰词,访问权限控制的等级,从最大权限到最小权限依次为:public、protected、包访问权限(没有关键词)和private。1、包:库单元包内包含有一组类,它们在单一的名字空间之下被组织在了一起。当编写一个Java源代码文件时,此文件通常被称为编译单元(有时也被称为转译单元)。每个编译单...
2019-08-29 17:07:00
252
转载 初始化与清理的理解七
1、枚举类型enum关键字,它使得我们在需要群组并使用枚举类型集时,可以很方便的处理。在此之前,你需要创建一个整型常量集,但是这些枚举值并不会必然的将其自身的取值限制在这个常量集的范围之内,因此它们显得更有风险,且更难以使用。由于枚举类型的实例是常量,因此按照命名惯例它们都用大写字母表示(如果在一个名字中有多个单词,用下划线将它们隔开)。在你创建enum时,编译器会自动添加一...
2019-08-10 11:15:00
109
转载 初始化与清理的理解六
1、数组初始化数组只是相同类型的、用一个标识符名称封装到一起的一个对象序列或基本类型数据序列。数组是通过方括号下标操作符[]来定义和使用的。要定义一个数组,只需在类型名后加上一对空方括号即可:int [] a1;方括号也可以置于标识符后面:int a1 [] ;两种格式的含义是一样的,后一种格式符合C和C++程序员的习惯。不过,前一种格式或许更合理,毕竟它表明类型是“一个...
2019-08-06 12:37:00
135
转载 程序中MMap集合数据重复导致程序慢的情况
Map集合添加数据的时候,key值唯一,value可以重复。实际上使用的时候,很可能会遇到key重复的问题,需要使用key,就需要对Map封装一下了。下面是自定义的一个MMap集合对象。可以实现Map。import java.util.Date;import java.util.HashMap;import java.util.Set;import org...
2019-08-06 11:45:00
174
转载 初始化与清理的理解五
1、成员初始化Java尽力保证:所有变量在使用前都能得到恰当的初始化。对于方法的局部变量,Java以编译时错误的形式来贯彻这种保证。一、指定初始化如果想为某个变量赋初值,有一种很直接的办法,就是在定义类成员变量的地方为其赋值。也可以用同样的方法初始化非基本类型的对象。甚至可以通过调用某个方法来提供初值。这个方法也可以带有参数,但这些参数必须是已经被初始化了的。程序的正确性取决...
2019-07-28 17:01:00
157
转载 初始化与清理的理解四
1、清理:终结处理和垃圾回收Java有垃圾回收器负责回收无用对象占据的内存资源。但是也有特殊情况:假定你的对象(并非使用new)获得了一块”特殊“的内存区域,由于垃圾回收器只知道释放那些经由new分配的内存,所以它不知道该如何释放该对象的这块”特殊“内存。为了应对这种情况,Java允许在类中定义一个名为finalize()的方法。它的工作原理”假定“是这样的:一旦垃圾回收器准备好释放...
2019-07-25 09:44:00
182
转载 在Eclipse里频繁的修改JS 之后发现修改的不起作用
修改JS 之后发现修改的不起作用:注意清理浏览器的缓存。js文件一般都会被缓存,然后从缓存中取数据,缓存中的都是之前的数据。注意清理浏览器中缓存的js文件:F12 ---网络---看页面来自缓存,并不是修改后的文件。然后,点击第五个小图标,清除缓存。然后修改之后的文件就起作用:可以看到已经不是在缓存中拿到了。这时修改的js文件就起作用了...
2019-07-24 16:52:00
432
转载 初始化与清理的理解三
1、默认构造器如前所述,默认构造器(又名“无参”构造器)是没有形式参数的---它的作用是创建一个“默认对象”。如果你写的类中没有构造器,则编译器会自动帮你创建一个默认构造器。表达式 new Bird() 行创建了一个新对象,并调用其默认构造器----即使你没有明确定义它。没有它的话,就没有方法可调用,就无法创建对象。但是,如果已经定义了一个构造器(无论是否有参数),编译器就不会帮...
2019-07-24 16:40:00
120
转载 初始化与清理的理解二
1、方法重载任何程序设计语言都具备的一项重要特性就是对名字的运用。当创建一个对象时,也就给此对象分配到的存储空间取了一个名字。所谓方法则是给某个动作取的名字。通过使用名字,你可以引用所有的对象和方法。名字起的好可以使系统更易于理解和修改。大多数程序设计语言(尤其是C)要求为每个方法(在这些语言中经常称为函数)都提供一个独一无二的标识符。所以绝不能用名为print()的函数显示了整...
2019-07-22 17:19:00
157
转载 初始化与清理的理解一
随着计算机革命的发展,“不安全”的编程方式已逐渐成为编程代价高昂的主因之一。初始化和清理正是涉及安全的两个问题。许多C程序的错误都源于程序员忘记初始化变量。特别是在使用程序库时,如果用户不知道如何初始化库的构件(或者是用户必须进行初始化的其他东西),更是如此。清理也是一个特殊问题,当使用完一个元素时,它对你也就不会有什么影响了,所以很容易把它忘记。这样一来,这个元素占用的资源就会一直...
2019-07-18 18:08:00
176
转载 控制执行流程的理解四
1、switchswitch有时也被划归为一种选择语句。根据整数表达式的值,switch语句可以从一系列代码中选出一行去执行。它的格式如下:switch(integral-selector){ caseintegral-value1:statement;break; ... default:statement;}其中,Integral-se...
2019-07-09 10:15:00
146
转载 控制执行流程的理解三
1、break和continue在任何迭代语句的主体部分,都可用break和continue控制循环的流程。其中,break用于强行退出循环,不执行循环中剩余的语句。而continue则停止执行当前的迭代,然后退回循环起始处,开始下一次迭代。无穷循环的两种形式:while(true) 和 for(;;)。2、臭名昭著的goto编程语言中一开始就有goto关键词了,事实上,...
2019-07-08 16:34:00
102
转载 控制执行流程的理解二
1、Foreach语法foreach语法,表示不必创建int变量去对由访问项构成的序列进行计数,foreach将自动产生每一项。任何返回一个数组的方法都可以使用foreach。foreach还可以用于任何Iterable对象。许多for语句都会在一个整型值序列中步进,例如:for(int i = 0;i < 100; i++),对于这些语句,foreach语法将不起作用,...
2019-07-05 15:17:00
125
转载 控制执行流程的理解一
在Java中,涉及的关键字包括if-else、while、do-while、for、return、break以及选择语句switch。然而,Java并不支持goto语句。在Java中,仍然可以进行类似goto那样的跳转,但比起典型的goto,有了很多限制。1、true和false所有条件语句都利用条件表达式的真或假来决定执行路径。这里有一个条件表达式的例子:a==b。它用条件操作...
2019-07-04 14:47:00
137
转载 操作符的理解七
1、字符串操作符+和+=这个操作符在Java中有一项特殊用途:连接不同的字符串。操作符重载机制。字符串操作符有一些很有趣的行为。如果表达式以一个字符串起头,那么后续所有操作数都必须是字符串型(请记住,编译器会把双引号内的字符序列自动转成字符串)。2、使用操作符时常犯的错误使用操作符时一个常犯的错误就是,即使对表达式如何计算有点不确定,也不愿意使用括号。Java中有...
2019-03-05 15:41:00
107
转载 操作符的理解六
移位操作符操作的运算对象也是二进制的“位”。移位操作符只可用来处理整数类型(基本类型的一种)。左移位操作符(<<)能按照操作符右侧指定的位数将操作符左边的操作数向左移动(在低位补0)。“有符号”右移位操作符(>>)则按照操作符右侧指定的位数将操作符左边的操作数向右移动。“有符号”右移位操作符使用“符号扩展”:若符号为正,则在高位插入0;若符号为负,则在高位插入1。...
2019-02-18 14:20:00
159
转载 关于mybatis generator生成中文注释
1、创建MyCommentGenerator类实现CommentGenerator接口package gengrator;import org.mybatis.generator.api.CommentGenerator;import org.mybatis.generator.api.IntrospectedColumn;import org.mybatis...
2019-01-17 10:57:00
447
转载 static静态注入的坑
错误的方式:静态方法只能用静态的变量,不能调用非静态的,否则直接报错。看起来正确的方式:(实际仍有问题)把变量变成静态变量,就可以正常注入了,实际上仍然有问题,静态变量会在编译完成之后,运行直接加载,也就是在还没有引用变量的时候,给变量直接赋予了一个空值,即为null。所以上述这种运行的时候,会抛出运行时异常java.lang.NullPoint...
2019-01-08 17:02:00
611
转载 操作符的理解五
1、直接常量一般来说,如果在程序里使用了”直接常量“,编译器可以准确的知道要生成什么样的类型,但有时候却是模棱两可的。如果发生这种情况,必须对编译器加以适当的”指导“,用与直接量相关的某些字符来额外增加一些信息。直接常量后面的后缀字符标志了它的类型。若为大写(或小写)的L,代表long(但是,使用小写字母l容易造成混淆,因为它看起来很像数字1)。大写(或小写)字母F,代表floa...
2019-01-08 10:25:00
148
转载 操作符的理解四
1、关系操作符关系操作符生成的是一个boolean(布尔)结果,它们计算的是操作数的值之间的关系。如果关系是真实的,关系表达式会生成true(真);如果关系不真实,则生成false(假)。关系操作符包括小于(<)、大于(>)、小于或等于(<=)、大于或等于(>=)、等于(==)以及不等于(!=)。等于和不等于适用于所有的基本数据类型,而其他比较符不适用于boo...
2018-12-21 16:55:00
123
转载 操作符的理解三
1、算术操作符Java的基本算术操作符与其他大多数程序设计语言是相同的。其中包括加号(+)、减号(-)、除号(/)、乘号(*)以及取模操作符(%,它从整数除法中产生余数)。整数除法会直接去掉结果的小数位,而不是四舍五入的圆整结果。Java也使用一种来自C和C++的简化符号同时进行运算与赋值操作。这用操作符后紧跟一个符号来表示,它对于Java中的所有操作符都适用,只要其有实际意义就...
2018-12-12 10:30:00
151
转载 操作符的理解二
1、优先级当一个表达式中存在多个操作符时,操作符的优先级就决定了各部分的计算顺序。Java对计算顺序做了特别的规定。其中,最简单的规则就是先乘除后加减。程序员经常会忘记其他优先级规则,所以应该用括号明确规定计算顺序。注意,System.out.println()语句中包含“+”操作符。在这种上下文环境中,“+”意味着“字符串连接”,并且如果必要,它还要执行“字符串转换”。当编译器...
2018-12-05 15:08:00
139
转载 操作符的理解一
在最底层,Java中的数据是通过使用操作符来操作的。1、更简单的打印语句静态导入(static import) ,将创建一个小类库来简化打印语句的编写。//:operators/HelloDate.javaimport java.util.*;import static net.mindview.util.Print.*;public class Hello...
2018-11-27 17:37:00
148
转载 对象的理解四
1、你的第一个Java程序在每个程序文件的开头,必须声明import语句,以便引入在文件代码中需要用到的额外类。类的名字必须和文件名相同。public关键字意指这是一个可由外部调用的方法。main()方法的参数时一个String对象的数组。在程序中并未用到args,但是Java编译器要求必须这样做,因为args要用来存储命令行参数。一、编译和运行安装JDK开发环境。2、注...
2018-11-21 10:55:00
139
转载 对象的理解三
1、方法、参数和返回值Java的方法决定了一个对象能够接收什么样的消息。方法的基本组成部分包括:名称、参数、返回值和方法体。返回类型描述的是在调用方法之后从方法返回的值。参数列表给出了要传给方法的信息的类型和名称。方法名和参数列表(它们合起来被称为“方法签名")唯一的标识出某个方法。Java中的方法只能作为类的一部分来创建。方法只有通过对象才能被调用,且这个对象必须能执行这个...
2018-11-19 11:53:00
105
转载 对象的理解二
1、创建新的数据类型:类class这个关键字之后紧跟着的是新类型的名称。例如:class ATypeName{ /* Class body goes here */ }这就引入了一种新的类型,尽管类主体仅包含一条注释语句(星号和斜杠以及其中的内容就是注释)。可以用new 来创建这种类型的对象:ATypeName a = new ATypeName();在定义它的...
2018-11-12 16:42:00
148
转载 对象的理解一
1、永远不需要销毁对象一、作用域(scope)大多数过程型语言都有作用域的概念。作用域决定了在其内定义的变量名的可见性和生命周期。在C、C++和Java中,作用域由花括号的位置决定。在作用域里定义的变量只可用于作用域结束之前。任何位于“//”之后到行末的文字都是注释。缩排格式使Java代码更易于阅读。由于Java是一种自由格式的语言,所以,空格、制表符、换行都不会影响程序...
2018-11-09 11:28:00
85
转载 对象的理解
1、用引用操纵对象Java里一切都被视为对象,因此可采用单一固定的语法。尽管一切都看作对象,但操纵的标识符实际上是对象的一个“引用”(reference)。也就是说,你拥有一个引用,并不一定需要有一个对象与它关联。因此,如果想操纵一个词或句子,则可以创建一个String引用:String s;但这里所创建的只是引用,并不是对象。如果此时向s发送一个消息,就会返回一个运行时错误。这...
2018-11-08 15:29:00
97
转载 对象的特征与实现六
1、异常处理:处理错误异常处理将错误处理直接置于编程语言中,有时甚至置于操作系统中。异常是一种对象,它从出错地点被“抛出”,并被专门设计用来处理特定类型错误的相应的异常处理器“捕获”。异常处理就像是与程序正常执行路径并行的、在错误发生时执行的另一条路径。因为它是另一条完全分离的执行路径,所以它不会干扰正常的执行代码。这往往使得代码编写变得简单,因为不需要被迫定期检查错误。此外,被抛出...
2018-11-07 16:43:00
101
转载 对象的特征与实现五
1、参数化类型单根继承结构意味着所有东西都是Object类型,所以可以存储Object的容器可以存储任何东西。这使得容器很容易被复用。要使用这样的容器,只需在其中置入对象引用,稍后还可以将它们取回。但是由于容器只存储Object,所以当将对象引用置入容器时,它必须被向上转型为Object,因此它会丢失其身份。当把它取回时,就获取了一个对Object对象的引用,再次用到转型,将它变...
2018-11-05 12:30:00
94
转载 对象的特征与实现四
1、单根继承结构在OOP中,自C++面世以来就已变得非常瞩目的一个问题就是,是否所有的类最终都继承自单一的基类。在JAVA中,(事实上还包括除C++以外的所有OOP语言),答案是yes,这个终极基类的名字就是Object。在单根继承结构中的所有对象都具有一个共用接口,所以它们归根结底都是相同的基本类型。另一种(C++所提供的)结构是无法确保所有对象都属于同一个基本类型。从向后兼容...
2018-11-02 17:38:00
81
转载 对象的特征与实现三
1、”是一个“与”像是一个“关系导出类和基类是完全相同的类型,因为它们具有完全相同的接口。结果可以用一个导出类对象来完全替代一个基类对象。这可以被视为纯粹替代,通常称之为替代原则。我们将这种情况下的基类与导出类之间的关系称为is-a(是一个)关系。有时必须在导出类型中添加新的接口元素,这样也就拓展了接口。这个新的类型仍然可以替代基类,但是这种替代并不完美,因为基类无法访问新添加的...
2018-11-01 17:23:00
139
转载 对象的特征与实现二
1、复用具体实现代码复用是面向对象程序设计语言所提供的最了不起的优点之一。最简单的复用某个类的方式就是直接使用该类的一个对象。此外也可以将那个类的一个对象置于某个新的类中。我们称其为“创建一个成员对象”。新的类可以由任意数量、任意类型的其他对象以任意可以实现新的类中想要的功能的方式所组成。因为是在使用现有的类合成新的类,所以这种概念被称为组合,如果组合是动态发生的,那么它通常被称...
2018-10-30 10:33:00
168
转载 对象的特征与实现一
1、每个对象都提供服务当正在试图开发或理解一个程序设计时,最好的方法之一就是将对象想象为“服务提供者”。程序本身将向用户提供服务,它将通过调用其他对象提供的服务来实现这一目的。你的目标就是去创建(或者最好是在现有代码库中寻找)能够提供理想的服务来解决问题中的一系列对象。将对象看作是服务提供者还有一个附带的好处:它有助于提高对象的内聚性。高内聚是软件设计的基本质量要求之一:这意味着...
2018-10-26 11:16:00
96
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅