
杂谈
文章平均质量分 83
软件求生
这个作者很懒,什么都没留下…
展开
-
杂谈:I/O模型浅析。
I/O模型浅析。转载 2020-02-18 10:52:22 · 193 阅读 · 0 评论 -
泛型和反射。
泛型可以减少强制类型的转换,可以规范集合的元素类型,还可以提高代码的安全性和可读性,正式因为有这些优点,自从Java引入泛型后,项目的编码规则上便多了一个一条:优先使用泛型。 反射可以“看透”程序的运行情况,可以让我们在运行期知晓一个类或实例的运行状况,可以动态的加载和调用,虽然有一定的性能忧患,但他带给我们的便利远远大于其性能缺陷。Java的泛型是类型擦除的 ...原创 2018-06-01 14:28:59 · 538 阅读 · 0 评论 -
枚举和注解。
推荐使用枚举定义常量 1、枚举常量更简单 2、枚举常量属于稳态型 3、枚举具有内置方法 4、枚举可以自定义方法 枚举类型是不能有继承的,也就是说一个枚举常量定义完毕后,除非修改重构,否则无法做扩展,而接口常量和类常量则可以通过继承进行扩展。 注意:在项目开发中,推荐使用枚举常量代替接口常量或类...原创 2018-05-31 14:13:25 · 868 阅读 · 0 评论 -
数组和集合。
性能考虑,数组是首选 基本类型是在栈内存中操作的,而对象则是在堆内存中操作的,栈内存的特点是速度快,容量小,堆内存的特点是速度慢,容量大(从性能上来讲,基本类型的处理占优势)。 对基本类型进行求和计算时,数组的效率是集合的10倍。 注意:性能要求较高的场景中使用数组替代集合。若有必要,使用变长数组 Arrays数组工具类的co...原创 2018-05-30 14:46:55 · 999 阅读 · 0 评论 -
字符串。
推荐使用String直接量赋值 Java为了避免在一个系统中大量产生String对象(为什么会大量产生?因为String字符串是程序中最经常使用的类型),于是就设计了一个字符串池(也有叫做字符串常量池,String Pool或String Constant Pool或String Literal Pool),在字符串池中所容纳的都是String字符串对象,他的创造机制是这样的:创建...原创 2018-05-29 11:17:49 · 277 阅读 · 0 评论 -
类、对象及方法。
在接口中不要存在实现代码 接口中可以声明常量,声明抽象方法,也可以继承父接口,但就是不能具体实现,因为接口是一种契约(Contract),是一种框架性协议,这表明他的实现类都是同一种类型,或者是具备相似特征的一个集合体。 接口是一个契约,不仅仅约束着实现者,同时也是一个保证,保证提供的服务(常量、方法)是稳定、可靠的,如果把实现代码写到接口中,那接口就绑定了可能变...原创 2018-05-28 16:45:35 · 394 阅读 · 0 评论 -
基本类型。
用偶判断,不用奇判断 判断是否是偶数,代码如下:i % 2 == 0 ? "偶数" : "奇数"用整数类型处理货币 在计算机中浮点数有可能(注意是有可能)是不准确的,他只能无限接近准确值,而不能完全精确,这是由浮点数的存储规则所决定的。 解决精度问题有两种方法: 1、使用BigDecimal ...原创 2018-05-25 16:05:15 · 163 阅读 · 0 评论 -
对象及变量的并发访问。
synchronized同步方法“非线程安全”其实会在多个线程对同一个对象中的实例变量进行并发访问时发生,产生的后果就是“脏读”,也就是取到的数据其实是被更改过的。而“线程安全”就是以获得的实例变量的值是经过同步处理的,不会出现脏读的现象。方法内的变量为线程安全“非线程安全”问题存在于“实例变量”中,如果是方法内部的私有变量,则不存在“非线程安全”问题,所得结果也就是“线程安全”的了。...原创 2018-05-24 16:24:21 · 436 阅读 · 0 评论 -
Java开发中通用的方法和准则。
不要在常量和变量中出现易容易混淆的字母 注意:字母“l”作为长整形标志时务必大写。莫让常量蜕变成变量 注意:务必让常量的值在运行器保持不变。三元操作符的类型务必一致。 三元操作符类型的转换规则: 1、若两个操作数不可转换,则不做转换,返回值为Object类型。...原创 2018-05-25 13:50:49 · 545 阅读 · 0 评论 -
Java多线程技能。
多线程是异步的,所以千万不要把Eclipse里代码的顺序当成线程执行的顺序,线程被调用的时机是随机的。使用多线程继承Thread类使用多线程技术时,代码的运行结果与代码执行顺序或调用顺序是无关的。 Thread.java类中的start()方法通知“线程规划器”此线程已经准备就绪,等待调用线程对象的run()方法。这个过程其实就是让系统安排一个时间来调用Thread中的run()方法...原创 2018-05-24 14:34:53 · 248 阅读 · 0 评论 -
统计:PV、UV、VV、IP及其关系与计算。
什么是PV? PV即Page View,网站浏览量,指页面浏览的次数,用以衡量网站用户访问的网页数量。用户每次打开一个页面便记录1次PV,多次打开同一页面则浏览量累计。一般来说,PV与来访者的数量成正比,但是PV并不直接决定页面的真实来访者数量,如同一个来访者通过不断的刷新页面,也可以制造出非常高的PV。具体的说,PV值就是所有访问者在24小时(0点到24点)内看了某个网站多少个页面或某个...转载 2019-05-13 13:38:34 · 8186 阅读 · 0 评论 -
虚拟机字节码指令表
字节码助记符指令含义0x00nopNone0x01aconst_null将null推送至栈顶0x02iconst_m1将int型-1推送至栈顶0x03iconst_0将int型0推送至栈顶0x04iconst_1将int型1推送至栈顶0x05iconst_2将int型2推送至栈顶0x06iconst_3将int型3...转载 2019-06-11 13:33:13 · 361 阅读 · 0 评论 -
几种访问文件的方式。
我们知道,读取和写入文件I/O操作都调用操作系统提供的接口,因为磁盘设备是由操作系统管理的,应用程序要访问物理设备只能通过系统调用的方式来工作。读和写分别对应read()和write()两个系统调用。而只要是系统调用就可能存在内核空间地址和用户空间地址切换的问题,这是操作系统为了保护系统本身的运行安全,而将内核程序运行使用的内存空间和用户程序运行的内存空间进行隔离造成的。但是这样虽然保证了内核程序...转载 2019-08-06 11:34:18 · 3830 阅读 · 0 评论 -
杂谈:如何把外接显示器设置为主显示器。
一、各种操作系统下,显示器设置是不一样的。但基本点是一样的;二、以XP为例,将外接显示器高置为主显示器的步骤如下; 在桌面空处点右键,打开显示属性; 选择设置; 窗口中出现两个显示器,上面标明“1”和“2”; 点2,在“将Windows 桌面扩展到该显示器上”的前面选择框中打上勾; 通常情况上,2为外接显示器; 将鼠标按住标识为2的显示器...转载 2019-09-05 11:56:13 · 7560 阅读 · 0 评论 -
异常。
提倡异常封装 异常封装有三方面的优点: 1、提高系统的友好性 异常的阅读者分为两类:开发人员和用户。开发人员查找问题,需要打印出堆栈信息,而用户则需要了解具体的业务原因,比如文件太大、不能同时编写文件等。 2、提高系统的可维护性 3、解决Java异常机制自身的缺陷 一个方法抛出...原创 2018-06-04 09:12:26 · 156 阅读 · 0 评论 -
多线程和并发。
不推荐覆写start方法 启动线程前stop方法是不可靠的 不使用stop方法停止线程 有以下三个问题: 1、stop方法是过时的 2、stop方法会导致代码逻辑不完整 3、stop方法会破坏原子逻辑 如果期望终止一个正在运行的线程,则不能使用已经过时的stop方法,需要自行编码实现,如此即可保证原子逻辑不...原创 2018-06-04 10:58:40 · 377 阅读 · 0 评论 -
分布式一致性问题。
博文中的内容来源《从Paxos到Zookeeper 分布式一致性原理与实践》这一本书,感激不尽。转载 2017-11-22 17:20:09 · 8170 阅读 · 1 评论 -
操作系统64位和32位的区别。
操作系统64位和32位的区别。转载 2018-03-21 17:14:05 · 1277 阅读 · 0 评论 -
“动态类型语言和静态类型语言”术语介绍。
动态类型语言它的类型检查的主体过程是在运行期而不是编译器。常见的包括:APL、Clojure、Erlang、Groovy、JavaScript、Jython、Lisp、Lua、PHP、Prolog、Python、Ruby、Smalltalk和Tcl等。优点是可以为开发人员提供更大的灵活性,某些在静态类型语言中需要大量“臃肿”代码来实现的功能,由动态类型语言来实现可能会更加清晰和简洁,清晰和简洁通常...原创 2018-04-18 11:04:35 · 190 阅读 · 0 评论 -
生成二维码——zxing和jquery.qrcode。
注意:如果想要二维码跳到指定的页面链接,要在链接前加入“http://”,否则只是一个文本。zxing生成二维码代码如下:public class CreateQRCode { @SuppressWarnings("unchecked") public static void main(String[] args) { int width = 300; ...原创 2018-08-01 09:33:54 · 512 阅读 · 0 评论 -
编码格式的比较。
按照ISO-8859-1编码经常会出现中文编程“?”,很可能就是错误的使用了ISO-8859-1这个编码导致的。中文字符经过ISO-8859-1编码会丢失信息,通常我们称之为“黑洞”,他会把不认识的字符吸收掉。由于现在大部分基础的Java框架或系统默认的字符集编码都是ISO-8859-1,所以很容易出现乱码问题。按照GB2312编码GB2312对应的Charset是sun.nio.cs...转载 2018-08-01 10:41:50 · 450 阅读 · 0 评论 -
繁简转换的实现方式。
当网站遇到国际化问题时,会考虑将网站的文字转换语言形式。通常涉及这种国际化问题时会有多种实现方式。首先要将网站的编码格式设置成支持多种语言的UTF-8编码,然后对页面进行本地化翻译工作。本地化翻译分为: 机器自动翻译,类似于Google翻译或者Office繁简转换; 人工翻译,网站开发的页面模板直接由人工翻译成多种语言。 这两种方式各有利弊:前一...转载 2018-08-01 16:27:07 · 3634 阅读 · 0 评论 -
Happen——Before规则。
程序顺序原则:一个线程内保证语义的串行化:a=1;b=a+1; volatile规则:volatile变量的写,先发生于读,这保证了volatile变量的可见性。 锁规则:解锁(unlock)必然发生在随后的加锁(lock)前 传递性:A先于B,B先于C,那么A必然先于C 线程的start()方法先于他的每一个动作 线程的所有操作先于线程的终结(Thread.join()) 线程的中断...原创 2018-06-14 11:09:26 · 433 阅读 · 0 评论 -
版本管理。
为了方便团队的何做,在项目开发的过程中,大家都应该使用快照版本,Maven能够很智能的处理这种特殊的版本,解析项目各个模块最新的“快照”。快照版本机制促进团队内部的交流。但是当项目需要对外发布时,我们显然需要提供非常稳定的版本,使用该版本应当永远只能够定位到唯一的构件,而不是像快照版本那样,定位的构件随时可能发生变化。对应的,我们称这类稳定的版本为发布版。项目发布了一个版本之后,就进入下一个开发阶...转载 2018-11-15 16:44:17 · 1099 阅读 · 0 评论 -
持续集成。
简单的说,持续集成就是快速且高频率的自动构建项目的所有源码,并为项目成员提供丰富的反馈信息。这句话有很多关键的词:快速:集成的速度要尽可能的快,开发人员不希望自己的代码提交半天之后才得到反馈。 高频率:频率越高越好,例如每隔一小时就是个不错的选择,这样问题才能尽早的被反映出来。 自动:持续集成应该是自动触发并执行的,不应该有手工参与。 构建:包括编译、测试、审查、打包、部署等工作。 所...转载 2018-11-15 09:45:38 · 224 阅读 · 0 评论 -
位运算符。
说明>>(按位右移) <<(按位左移) >>>(按位右移不足补0),表示无符号右移,右移表达式的位,不保留符号形式result = expression1 >>> expression2参数result——任何变量。 expression1——任何表达式。 expression2——任何表达式。说明>...转载 2018-12-18 11:39:29 · 238 阅读 · 0 评论 -
杂谈:良好的编程思想。
提倡良好的代码风格 1、整洁 2、统一 3、流行 4、便捷 现在的项目中源代码主键增多,完全依靠人工来做代码走查很难查出问题,我们可以使用工具来统计代码,这里推荐使用Checkstyle,他可以自定义代码模板,然后根据模板检查代码是否遵循规范,从而减少枯燥的代码走查。不要完全依靠单元测试来发现问题...原创 2018-06-04 16:17:45 · 3257 阅读 · 0 评论 -
杂谈:大胆采用开源。
大胆采用开源工具 在选择开源工具和框架时要遵循一定的原则: 1、普适性原则 2、唯一性原则 3、“大树纳凉”原则 4、精而专原则 5、高热度原则推荐使用Guava扩展工具包 1、Collections不可变集合:包括ImmutableList、Immut...原创 2018-06-04 15:14:36 · 292 阅读 · 0 评论 -
杂谈:性能和效率。
提升Java性能的基本方法 1、不要在循环条件中计算 2、尽可能把变量、方法声明为final static 类型 3、缩小变量的作用范围 4、频繁字符串操作使用StringBuilder或StringBuffer 5、使用非线性检索 6、覆写Exception的fillInStackTrack...原创 2018-06-04 11:37:01 · 1255 阅读 · 0 评论