
应届生求职
文章平均质量分 67
义臻
你可以通过知乎ID找到我:义臻
转摘文章请注明出处。
展开
-
JAVA并发-3种典型的死锁
在JAVA并发编程中,我们使用锁来确保可变共享变量的安全性。要注意的是,不正确的使用锁很容易导致死锁。死锁的4个必要条件:1. 互斥访问2. 非抢占3. 持有并等待4. 循环等待在JAVA编程中,有3种典型的死锁类型:静态的锁顺序死锁,动态的锁顺序死锁,协作对象之间发生的死锁。静态的锁顺序死锁:a和b两个方法都需要获得A锁和B锁。一个线程执行a方法且已经获得了A锁,在等待B锁;另一个线...原创 2016-08-11 14:14:16 · 1930 阅读 · 0 评论 -
Spring事务处理-ThreadLocal的使用
经历了几天的研究,终于是明白了ThreadLocal在Spring事务管理过程中发挥的用途。下面就以图文的形式和大家分享,如有错误,欢迎指正。大家都知道,Spring允许以声明的方式进行事务管理。通过声明的方式,程序员可以仅仅专注于业务代码,事务管理由Spring框架代为进行。以JDBC为例,正常的事务代码可能如下:dbc = new DataBaseConnection();//第1行...原创 2016-08-11 14:11:32 · 4631 阅读 · 0 评论 -
JVM-类型的生命周期
类型的生命周期包括:装载,连接,初始化,卸载(和类装载器有关,不一定有)。装载:将类的结构信息装载到内存中(这其中就包括很重要的角色--类的常量池,但是符号引用还没有解析),装载完毕之后会生成一个该类的Class对象。连接:连接又包括验证,准备和解析。验证就是检验class文件语法等正确性。准备是为类变量分配内存并为他赋默认值。解析是将在装载阶段装载到内存中的常量池的符号引用解析为直接引用,这一步...原创 2016-08-11 14:10:07 · 1304 阅读 · 0 评论 -
Mysql高性能索引的策略
Mysql的explain命令:explain命令显示了mysql如何使用索引来执行select查询语句,可以帮助写出更好的索引和更优化的查询语句。看示例如下:结果如下:explain列的解释:table:显示这一行的数据是关于哪张表的type:这是重要的列,显示连接使用了何种类型。从最好到最差的连接类型为const、eq_reg、ref、range、index和all。显示index说明使用索引...原创 2016-08-11 14:17:26 · 699 阅读 · 0 评论 -
JAVA的四种引用类型
Java四种引用类型1.引用的基本概念强引用:当我们使用new创建对象时,被创建的对象就是强引用,如Object object = new Object(),其中的object就是一个强引用了。如果一个对象具有强引用,JVM就不会去GC它,JVM宁可会报OOM来终止程序,也不回收该对象。软引用: 如果一个对象只具备软引用,如果内存空间足够,那么JVM就不会GC它,如果内存空间不足了,就会GC该对象...原创 2016-08-11 14:16:54 · 6541 阅读 · 0 评论 -
mybatis是如何防止SQL注入的
SQL注入是一种很简单的攻击手段,但直到今天仍然十分常见。究其原因不外乎:No patch for stupid。为什么这么说,下面就以JAVA为例进行说明:假设数据库中存在这样的表:table user(id varchar(20) PRIMARY KEY , name varchar(20) ,age varchar(20) ); ...原创 2016-08-11 14:17:06 · 32492 阅读 · 8 评论 -
大型网站架构要素及常用手段
“一般来说,设计网站的架构。除了关注功能需求以外,还需要关注性能,可用性,伸缩性,扩展性,安全性。”性能:网站对并发请求的处理能力,有很多衡量指标,比如QPS,响应时间等。可用性:1-网站不能对外提供服务的概率,通常用几个9来衡量。伸缩性:网站能否通过添加硬件资源来提高处理能力。扩展性:网站能否在不改变原有架构的基础上添加新功能。安全性:你懂的。其中,伸缩性和扩展性经常被大家混淆。原创 2016-08-11 14:13:15 · 388 阅读 · 0 评论 -
数据库事务
1 数据库事务的ACID属性原子性(atomic) 对于中包含的操作,要么全部执行,要么全部不执行。一致性(consistent) 事务在完成时,必须使所有的数据都保持一致状态。隔离性(insulation) 当多个事务并发执行的时候,不同事务之间数据的可见程度。持久性(durability) 事务完成之后,更改的数据是永久的。2 事务的隔离性的级别包括:Read原创 2016-08-11 14:10:57 · 412 阅读 · 1 评论 -
JVM-典型的垃圾收集器
从前面的博客知道,类实例化产生的对象在堆区中存储,而堆区不可能无限大,因此需要有垃圾收集器。JVM的垃圾收集器干两件事:1 碎片整理:整理内存碎片2 垃圾回收:以某种算法发现垃圾,并使用某种算法清除垃圾。JVM常见的垃圾发现算法包括引用计数和追踪。其中,引用计数就是为每个对象维护一个数字,这个数字记录了当前对象被引用的次数。当这个数字变为0的时候,说明该对象可以被垃圾回收了。但是引用计数无原创 2016-08-11 14:10:33 · 371 阅读 · 0 评论 -
JVM-常量池
学习JVM之后,发现对常量池的理解又深入了一些。下面就从JVM的层面去理解JAVA程序中那些常见的语句。读过笔者博客“JVM-类的生命周期“http://yizhenn.iteye.com/blog/2290619的读者都应该已经知道,JVM在加载class文件时经历了装载,连接,初始化的过程,其中连接又包括验证,准备和解析。我们就来说说这个解析。所谓解析,就是将class文件中的静态常量池中的符...原创 2016-08-11 14:10:40 · 1076 阅读 · 0 评论 -
JAVA并发-DCL与JMM
首先必须声明,在volatile出现之前,错误的DCL代码如下。在volatile出现之后,正确的DCL代码如下。代码如下://错误的代码public class Singleton { private static Singleton instance=null; private Singleton(){} public static Singleton getInstance()...原创 2016-08-11 14:11:41 · 1607 阅读 · 0 评论 -
大型网站架构之应用服务器集群化
随着网站的发展,一台应用服务器无法处理太多用户请求,考虑部署多台应用服务器组成集群来提供服务。此时问题来了?问题1:扩展到多台应用服务器时,可能同一个用户的先后两次请求由不同的应用服务器处理,这个时候不同的应用服务器如何进行session的管理。(应用服务器集群的session管理)问题2:如何将请求均匀的分发给集群中的应用服务器。(应用服务器集群的负载均衡)应用服务器集群的sessio原创 2016-08-11 14:13:31 · 2659 阅读 · 0 评论 -
B+树在mysql数据库索引中的使用
一:B-树是一种平衡的多路查找树,它在文件系统中很有用。定义:一棵m 阶的B-树,或者为空树,或为满足下列特性的m 叉树:⑴树中每个结点至多有m 棵子树。⑵若根结点不是叶子结点,则至少有两棵子树。⑶除根结点之外的所有非叶结点至少有[m/2] 棵子树;⑷所有的非终端结点中包含以下信息数据:(n,A0,K1,A1,K2,…,Kn,An)其中:n 为关键码的个数,Ki(i=1,2,…,n)为原创 2016-08-11 14:12:42 · 2050 阅读 · 0 评论 -
单例模式的5种JAVA实现
JAVA实现单例模式有5种方案:分别是“懒汉”“饿汉”“枚举”“内部静态类”“双重校验锁”。由于是单例模式,因此不能将类的构造函数暴露在外面,所以要将构造函数重写为私有的。同时需要考虑多线程安全问题:多个线程不能构造出多个类对象。懒汉:public class Singleton{ private static Singleton instance=null; private Singl...原创 2016-08-11 14:09:56 · 2185 阅读 · 0 评论 -
compareTo
以前,一直使用compareTo的从小到大排序,实际上compareTo可以选择从小到大还是从大到小:设接口I,T是实现了接口I的类,则类T实现Comparable的话,如下//从小到大排序:当前比外来户小返回负值,当前比外来户大返回正值public int compartTo(I i){ T t=(T)i; if(age<t.getAge())原创 2016-08-11 14:04:22 · 503 阅读 · 0 评论 -
hashCode和equals
最近在复习的时候,又重新的理解了下equals()和hashCode().equals()用于判断两个对象是否相等,这是大家公认的。hashCode()被设计是用来使得哈希容器能高效的工作。为什么这么说?在java中,有一些哈希容器,比如Hashtable,HashMap等等。当我们调用这些类的诸如get(Object obj)方法时,容器的内部肯定需要判断一下当前对象obj在容器中是否存在,...原创 2016-08-11 14:11:58 · 13850 阅读 · 0 评论 -
学习Java,我建议这样做
很多同学向我邀答,想要学习Java,却不知道该学什么,也不知道该学到什么深度?也有些外包的同学,想在技术上提升,却不知怎么做?本次 Live专为想学习和提高Java的人定制,给出了详细的学习路线,适合想要系统的专业的学习Java的人。尤其是:想要从事Java开发工作的大学生,想要转行当Java程序员的在职人员,想要提升Java水平却不知如何入手的小白等。30天从入门到精通? 那是宣传的...原创 2018-01-04 20:10:23 · 1110 阅读 · 2 评论