PerKins Zhu

Le vent se lève,il faut tenter de vivre.

导航

2017年8月30日

摘要: 系统要实现某个全局功能必定要需要各个子模块之间的协调和配合,就像一个团队要完成某项任务的时候需要团队各个成员之间密切配合一样。而对于系统中的各个子线程来说,如果要完成一个系统功能,同样需要各个线程的配合,这样就少不了线程之间的通信与协作。常见的线程之间通信方式有如下几种: 1、wait和notify 阅读全文

posted @ 2017-08-30 14:32 PerKins.Zhu 阅读(7575) 评论(3) 推荐(2) 编辑

2017年8月19日

摘要: 在多线程中,每个线程的执行顺序,是无法预测不可控制的,那么在对数据进行读写的时候便存在由于读写顺序多乱而造成数据混乱错误的可能性。那么如何控制,每个线程对于数据的读写顺序呢?这里就涉及到线程锁。 什么是线程锁?使用锁的目的是什么?先看一个例子。 调用testSimple()方法开启两个线程执行账户金 阅读全文

posted @ 2017-08-19 13:33 PerKins.Zhu 阅读(2453) 评论(1) 推荐(2) 编辑

2017年8月13日

摘要: 在Thread类中提供了可以停止线程的方法(包括杀死和挂起): @Deprecated public final void stop(){} @Deprecated public final void suspend(){} stop 和 suspend 添加的有Deprecated注释,也即是该方 阅读全文

posted @ 2017-08-13 16:47 PerKins.Zhu 阅读(2240) 评论(0) 推荐(1) 编辑

2017年8月11日

摘要: java中,启动线程通常是通过Thread或其子类通过调用start()方法启动。 常见使用线程有两种:实现Runnable接口和继承Thread。而继承Thread亦或使用TimerTask其底层依旧是实现了Runnabel接口。考虑到java的单继承的限制,所以在开发过程中大部分情况在使用线程的 阅读全文

posted @ 2017-08-11 21:38 PerKins.Zhu 阅读(1628) 评论(0) 推荐(1) 编辑

摘要: 一、为什么要使用多线程? 【使计算机所有资源在执行任务的时候能够全部利用上,以提升计算机资源利用率的方式来提升系统执行效率】 CPU的单核运行速度由于硬件技术问题已经遇到瓶颈,而概念性的“光脑”貌似离我们还很遥远,现在的计算机性能提升方向是向多核发展。多核同时工作,协同完成任务。大家熟知的神威·太湖 阅读全文

posted @ 2017-08-11 15:30 PerKins.Zhu 阅读(2594) 评论(2) 推荐(3) 编辑

摘要: “高并发和多线程”总是被一起提起,给人感觉两者好像相等,实则 高并发 ≠ 多线程 多线程是完成任务的一种方法,高并发是系统运行的一种状态,通过多线程有助于系统承受高并发状态的实现。 高并发是一种系统运行过程中遇到的一种“短时间内遇到大量操作请求”的情况,主要发生在web系统集中大量访问或者socke 阅读全文

posted @ 2017-08-11 11:35 PerKins.Zhu 阅读(33678) 评论(2) 推荐(13) 编辑

2017年7月22日

摘要: 原文链接: java异常处理机制 转载请注明出处! 一款高质量系统不仅仅要考虑到其功能的完备性,同时也要兼顾正确性、健壮性、可靠性、易用性、可读性(可理解性)、可扩展性、可复用性、兼容性、可移植性……而说到这里面的“健壮性”就不得不提到java的异常系统。 在开发过程中见多一些不合理使用Except 阅读全文

posted @ 2017-07-22 15:03 PerKins.Zhu 阅读(447) 评论(0) 推荐(0) 编辑

2017年7月19日

摘要: 原文链接: 为什么覆写equals必须要覆写hashCode? 转载请注明出处! 《Effective java》Chapter Three Item 9:Always override hashCode when you overried equals. (下载链接: Effective_java 阅读全文

posted @ 2017-07-19 22:28 PerKins.Zhu 阅读(1026) 评论(0) 推荐(0) 编辑

2017年5月29日

摘要: 原文链接: Scala对MongoDB的增删改查操作 转载请注明出处! 依赖环境:jdk1.8、Scala 2.12、idea mongodb Driver:3.1.1。注意,mongo for scala的驱动涉及多个jar(如下图),依赖于mongo-java-driver.jar 这里使用的s 阅读全文

posted @ 2017-05-29 00:32 PerKins.Zhu 阅读(6850) 评论(2) 推荐(0) 编辑

2017年5月8日

摘要: 原文链接: 通俗理解数据库隔离机制 转载请注明出处! 在理解数据库隔离机制的时候发现网上很多文章都是千篇一律,解释语言太过于标准书面化,描述的晦涩难懂,因果关系模糊。在这里将自己对隔离机制的理解描述一下,力争做到能够通过浅显的语言描述出来。 数据库隔离机制是对于多线程同时操作数据库而言的。对于单线程 阅读全文

posted @ 2017-05-08 22:03 PerKins.Zhu 阅读(3372) 评论(1) 推荐(2) 编辑

2017年4月3日

摘要: 原文链接: JDK动态代理实现机制 转载请注明出处! 本文只对JDK动态代理的底层实现进行分析,如需了解代理模式和动态代理的使用请移步:设计模式—代理模式 动态代理的两种实现方式(JDK/Cglib) 在读代码之前先清楚两个概念: 1、Class类存储的是类的所有信息,包括类的所有方法、属性、实现接 阅读全文

posted @ 2017-04-03 01:54 PerKins.Zhu 阅读(1667) 评论(2) 推荐(0) 编辑

2017年3月14日

摘要: 原文链接: 动态代理的两种实现方式(JDK/Cglib) 转载请注明出处! 什么是代理模式?(设计模式—代理模式) 代理模式:在调用处不直接调用目标类进行操作,而是调用代理类,然后通过代理类来调用目标类进行操作。在代理类调用目标类的前后可以添加一些预处理和后处理操作来完成一些不属于目标类的功能。为什 阅读全文

posted @ 2017-03-14 16:32 PerKins.Zhu 阅读(3602) 评论(0) 推荐(0) 编辑

2017年3月5日

摘要: 原文链接: spring源码浅析——IOC 转载请注明出处! 在读之前应该明白其重点:读spring读的不是其具体的技术实现,读的是其系统层面的结构和设计! spring漂亮就漂亮在她的结构,包括接口和抽象类的灵活使用! IOC模块只是spring框架中的一个模块,这里只对该模块进行分析(使用版本: 阅读全文

posted @ 2017-03-05 20:57 PerKins.Zhu 阅读(2048) 评论(2) 推荐(1) 编辑

2017年3月4日

摘要: 数据库资料: MySQL 5.1参考手册(中文) MySQL5.1手册(官方英文CHM) java资料: Java Language and Virtual Machine Specifications(JVM规范) 类图: spring-IOC相关类图 电子书: spring源码深度解析 Effe 阅读全文

posted @ 2017-03-04 23:02 PerKins.Zhu 阅读(311) 评论(0) 推荐(0) 编辑

2017年2月24日

摘要: 与一个简单的算法不同,一个合格的系统不仅仅要求具有运行的高效和计算的准确,同时又必须兼顾稳定性、可靠性。其次,对于开发人员来说,又必须具有可拓展性和可维护性。各方面都必须很完善,这样的一个系统才能称得上是一个合格完美的系统。简单的站在开发人员的角度分析,比较重视的是系统的可维护性,毕竟开发人员直面的 阅读全文

posted @ 2017-02-24 22:30 PerKins.Zhu 阅读(14263) 评论(0) 推荐(0) 编辑

2017年1月20日

摘要: 网上对于JVM内存模型讲解的博客很多也很详细,这里就不再进行详细介绍了,只当做学习的一个总结或者记录。 这里先看一张整体的示意图: 这里主要分为五大块,分别是:本地方法栈、方法区、java堆、程序计数器和java栈。其中重点是方法区、java堆和java栈。 下面就把各个区域的性质总结一下:(说明, 阅读全文

posted @ 2017-01-20 23:55 PerKins.Zhu 阅读(1247) 评论(0) 推荐(1) 编辑

2017年1月17日

摘要: 今天遇到一个关于静态代码块和非静态代码块执行的问题。先看如下程序。 程序运行结果如下: 对于前两行的输出倒是没什么疑问,加载的时候先加载静态代码块然后加载非静态代码块,静态代码块只在加载类的时候加载一次,而非静态代码块在每次new一个对象的时候进行加载。可第三行的那个A明明已经赋值为8了,可为什么还 阅读全文

posted @ 2017-01-17 20:57 PerKins.Zhu 阅读(357) 评论(1) 推荐(0) 编辑

2017年1月13日

摘要: List ArrayList(具体情况需要进行具体分析,不能死记理论) 1、可指定容量,如果不指定则默认10. 扩容策略为:(oldLength*3/2)+1,可调用ensureCapacity()进行手动扩容。 劣势:在进行删除、添加的时候(不包括不需要扩容的情况:数组没满的情况下的添加和最后一位 阅读全文

posted @ 2017-01-13 17:10 PerKins.Zhu 阅读(309) 评论(0) 推荐(0) 编辑

2017年1月9日

摘要: 原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1005 主要内容: A number sequence is defined as follows: f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n 阅读全文

posted @ 2017-01-09 21:58 PerKins.Zhu 阅读(321) 评论(0) 推荐(0) 编辑

2017年1月8日

摘要: HDOJ链接 http://acm.hdu.edu.cn/showproblem.php?pid=1003 不了解题目的朋友可以先看一下题目,在这里就不再详细介绍了。(文章内容和解题思路不完全相同,方法一、二、三、四没有对sequence 全为负数的情况进行考虑,就不再对代码进行更新了,如果需要可看 阅读全文

posted @ 2017-01-08 00:39 PerKins.Zhu 阅读(2082) 评论(1) 推荐(0) 编辑

2016年9月25日

摘要: 访问者模式:表示一个作用于某对象结构中的各个元素操作。可以在不改变元素类的前提下为这种对象添加新操作。 优势:很容易扩展对象的功能,不需要再对对象就行修改操作,只需要添加一个功能扩展类即可。 劣势:数据结构中存储的对象类型需要唯一,不允许有两种及以上类型 示例说明:为企业和个人客户增加数据分析请求功 阅读全文

posted @ 2016-09-25 09:33 PerKins.Zhu 阅读(213) 评论(0) 推荐(0) 编辑

2016年9月14日

摘要: 在此之前对commons包了解的不多,最常用的就是StringUtils.isBlack(str)来取代if(str !=null && str.lenght()>1)的判断,昨天忽然想看看StringUtils是个什么神奇的东西,这一看才发现里面没那么简单! 先看StringUtils中的所有方法 阅读全文

posted @ 2016-09-14 16:54 PerKins.Zhu 阅读(211) 评论(0) 推荐(0) 编辑

2016年9月5日

摘要: 原型模式:添加一个自我克隆的方法,可以调用object的clone()(需要实现Cloneable接口,不会调用构造器),也可以自己写个clone()方法进行克隆。 这里涉及到一个深复制和浅复制的东西,也就是对象中包含其他对象的时候需要通过深复制来复制被包含对象,否则被包含对象只是克隆出来了一个引用 阅读全文

posted @ 2016-09-05 22:12 PerKins.Zhu 阅读(192) 评论(0) 推荐(0) 编辑

摘要: 中介者模式:为了减小各个对象的直接接触,引入中介对象来对各个对象之间的复杂操作进行处理。 就像卖方中介一样的。帮助维护租客和房东之间的沟通。 示例说明:房屋买卖中介。卖房者和买房者都认识中介,但是买房者和卖房者是不认识的。 定义一个中介(单例实现) 定义一个炒房者抽象类Operator 添加两个炒房 阅读全文

posted @ 2016-09-05 18:04 PerKins.Zhu 阅读(241) 评论(0) 推荐(0) 编辑

摘要: 责任链模式:在请求对象不清楚处理对象是谁的情况下使用该模式。 请求对象把请求提交给处理对象,所有的处理对象依次进行判断,如果是自己的处理范围则进行处理,结束请求向后传递,如果不属于自己的处理范围则向下传递请求直到请求被处理。 注意区分责任链模式和装饰模式的区别:责任链是对请求对象的处理过滤;装饰模式 阅读全文

posted @ 2016-09-05 17:55 PerKins.Zhu 阅读(278) 评论(0) 推荐(0) 编辑