java
文章平均质量分 83
风中的大葱
这个作者很懒,什么都没留下…
展开
-
几种常见排序算法(复杂度分析)
一般很少自己写算法去进行排序,实现相应的接口,指定排序规则,丰富的函数就帮助完成了排序需求,但是,掌握几门排序算法还是大有必要的。冒泡交换类排序,对相邻元素进行比较,如果第一个比第二个大(或者 小),进行交换。从第一对起,对每一对元素做相同比较操作,依次进行,这样末尾应该是最 大 (或者 小)的数字。重复上述步骤,除了最后一个。两个for循环,时间复杂度T(n^2)...原创 2018-10-10 18:08:17 · 339 阅读 · 0 评论 -
设计模式解释与用例
设计的六大原则单一职责原则(Single Responsibility Principle) 不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。里氏替换原则(Liskov Substitution Principle) 子类可以实现父类的抽象方法,不能覆盖非抽象方法;子类可以扩展自己的方法。该原则确保父类的行为不会改变,后续有对系统做扩展时,能够保...原创 2018-10-09 22:05:53 · 211 阅读 · 0 评论 -
String、StringBuffer、StringBuilder 区别
基本概述String是典型的Immutable类,这个在 final、finally、finalize 区别 中有提到过,类被声明为final、属性被声明为final,由于其不可变的性质,拼接、截取等动作,都会产生新的String对象。StringBuffer就是为了解决字符串拼接、截取造成的太多中间对象而提供的一个类,它是线程安全的可修改字符序列,但就是由于线程安全机制,导致额外的性...原创 2018-09-25 13:37:01 · 139 阅读 · 0 评论 -
java常用集合
首先请区分Collections , 它只是集合操作的工具类。下面一张图展示常用List、Set 集合下面一张图展示常用Map集合族谱 常用集合随笔 List List之下需要注意的集合实现在ArrayList 、 LinkedLIst、Vector下的Stack。 存储元素的特点:有序可重复,有序即入和出顺序一致。...原创 2018-09-25 22:52:23 · 334 阅读 · 0 评论 -
Java IO流
Java IO概要 Java.io包中5个核心类和一个重要接口,如下图 类 说明 File 文件类 InputStream 字节输入流 OutputStream 字节输出流 Reader 字符输入流 Writer 字符输出流 接口 Serializable 序列化...原创 2018-09-26 17:07:07 · 979 阅读 · 0 评论 -
BIO、NIO、AIO 区别和应用场景
前边简单介绍过IO的基本情况Java IO流简单回顾对于IO我们应该非常熟悉了,IO不仅仅针对文件的操作,网络编程socket的通信,就是IO操作。输入、输出流(InputStream、OutputStream)用于读取或写入字节,如操作图片、视频等。Reader和Writer 则用于操作字符,增加了字符编码功能。本质上计算机操作都是字节,不管是网络或者文件,Reader和Wr...原创 2018-09-27 11:14:08 · 45223 阅读 · 3 评论 -
java 线程理解
怎么理解线程和进程 单进程单线程:一个人在一个桌上吃菜 单进程多线程:多个人分享同一个桌子上的菜 多进程单线程:多个人在自己的桌上吃菜为什么需要用到多线程 从上面可以看出来,多线程实际上是对共享业务瓜分处理的一种机制,这样可以充分利用了硬件资源,处理器资源利用,缩短业务处理时间。 适合场景 主要用于计算机同时执...原创 2018-09-28 13:25:29 · 739 阅读 · 0 评论 -
复杂度分析(一) 分析算法的执行效率
为什么要进行复杂度分析? 有人会想,平时一个功能都会有相应的性能测试,跑一遍不就好了吗,为什么还要去分析呢? 首先,不同的设备配置如i3和i7处理器,同一个功能跑一遍,耗时肯定是不一样的,所以测试环境会影响判断。 再者,数据量的大小也会影响对功能性能的判断,极端的比如同步10000条数据和同步10000w条数据,性能波动也会影响判断。...原创 2018-09-28 15:23:09 · 801 阅读 · 0 评论 -
JVM 理解(一)
JVM历史了解1996年 Classic VM发布,到2002年jdk1.4 Classic VM退出历史舞台 NIO问世。2004年jdk1.5发布产生重要改变,增加 范型、注解、装箱、枚举、可变长参数,都是我们现在常用到的。2011年jdk1.7发布NIO2即现在的AIO等2014年jdk1.8 Lambda表达式问世。CurrentHashMap升级 、对IO做了升级等...原创 2018-09-28 16:40:22 · 212 阅读 · 0 评论 -
类的加载过程
类加载过程图类加载机制执行过程可见,子类调用父类加载器,如果无法加载成功,才找自身的findClass。双亲委派机制在java命令行中编译Hello.java文件会生成Hello.class文件,class文件是字节码格式文件。java虚拟机并不能直接识别.java文件,但是可以识别javac编译后的.class文件。环境变量简单介绍环境变量,便于加载过程理解。JA...原创 2018-10-08 16:25:42 · 225 阅读 · 0 评论 -
java 线程池(一) 概述
为什么要有线程池线程的创建和销毁存在一定的开销,利用线程池技术可以提高资源利用效率。java提供的线程池一般利用Executors提供通用的线程池创建,创建不同配置的线程池。 newCachedThreadPool() 用来处理大量短时间工作任务的线程池 比如 快算。 它会试图去缓存线程并重用,当无缓存线程可用,会创建新的工作线程,如果线程闲...原创 2018-09-29 17:06:48 · 164 阅读 · 0 评论 -
JVM 理解(二)
JVM 理解(一)谈到了jvm工作机制、内存模型、以及内存的垃圾回收算法今天继续深入,再谈谈jvm内存区域划分 和 哪些区域可能发生OutOfMemoryJVM内存区域组成部件分析程序计数器(Program Counter Register) 在JVM规范中,每个线程都有它自己的程序计数器,任何时间一个线程都有一个方法在执行,有就是所谓的当前方法。程序计数器会存储当前线...原创 2018-09-29 20:53:10 · 173 阅读 · 0 评论 -
final、finally、finalize 区别
一般性概述: fianl 修饰 类、方法、变量 , 修饰类即此类不可继承扩展,修饰方法则此方法不可重写override,修饰变量即变量不可修改 finally 是java能保证重要代码一定要被执行的手段。一般try finally 或 try catch finally 联合使用,如进行连接释放、锁释放操作 finalized 保证对象在被垃圾回收之前,完成对特定资源的回...原创 2018-09-25 11:28:48 · 177 阅读 · 0 评论