自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

DengYanLiang的一亩三分地

时常总结自己做过的东西

  • 博客(28)
  • 资源 (1)
  • 收藏
  • 关注

原创 java内存模型

1、java内存模型的基础     在多线程编程中,线程之间的通信机制有两种:共享内存和消息传递。在共享内存的并发模型中,线程之间共享程序的公共状态,通过写-读内存中的公共状态进行隐式通信;在消息传递的并发模型中,线程之间没有公共状态,线程之间必须通过消息进行显式通信。   java线程之间的通信通过java内存模型(简称JMM)控制。JMM定义了线程和主内存之间的抽象关系:线程之间的共享

2016-04-30 15:40:59 323 1

原创 快速排序

快速排序的基本思想:通过一趟排序将要排序的数据分割成两部分,其中一部分的所有数据都比另外一部分数据小。然后使用递归进行操作。这里采用三平均分区法,即不是选择第一个元素作为中轴,而是选用待排序的最左边的元素,中间的元素和最右边的元素这三个元素中的中间值作为中轴。这样可以避免,本来这个序列是有序的,按照相反的顺序进行排序时,效率最低这种情况。并且防止数组越界。 /** * 对开始索引和结束

2016-04-27 23:01:10 367

原创 冒泡排序

冒泡排序的基本思想:依次比较两个元素,如果发现前面的元素和后面的元素顺序不对,就进行交换。一趟循环走完,最值元素就放在最后的位置上了。 public static void buttleSort(int[] array){ // 总共比较的次数,即 n-1次 for(int i = 0; i < array.length - 1; i++){ // 每一趟结束后,最大值就在最后的

2016-04-27 22:47:21 332

原创 归并排序

归并排序的基本思想:采用分治法,先使每个子序列有序,再将有序的子序列进行合并,得到最终的有序序列。/** * 对拆分后的数组进行排序并合并 * @param a 原始数组 * @param tempArr 临时数组 * @param leftPos 左边有序序列的开始索引 * @param rightPos 右边有序序列的开始索引 * @param rightEnd 右边有序序列的

2016-04-27 22:39:35 353

原创 线程池的总结

1、在多线程中,线程池通过ThreadPoolExecutor的execute()方法来执行。执行步骤分为以下四步:1)如果当前运行的线程少于corePoolSize,则创建新线程来执行任务,在执行这个步骤时会获取全局锁。2)如果运行的线程等于或者大于corePoolSize,则将任务加入BlockingQueue。3)如果无法将任务加入BlockingQueue,即队列满的时候,则创

2016-04-27 21:47:49 357

原创 Lock和synchronized的区别

在多线程,可以通过Lock和synchronized这两种情况进行加锁。现总结一下它们的区别:1、Lock是一个接口,而synchronized是java内置的一个关键字。2、在发生异常时,Lock不能主动释放锁,所以需要我们在finally中通过unlock()去主动释放锁;而synchronized可以主动的释放锁,因此不会发生死锁。3、Lock可以响应中断,而synchroniz

2016-04-27 21:14:50 595

原创 选择排序

选择排序的基本思想:首先从所有元素中找到最小的元素,放在第一个位置,然后从剩余的元素中找到第二小的,放在第二个位置。/** * 对前N的数的数组进行排序 * @param a 数组 * @param n 前n个数 */ public static void selectionSort(int[] a,int n) { for(int index = 0; index <

2016-04-27 12:46:57 316

原创 插入排序

插入排序的基本思想:首先选择第一个元素作为有序部分,从第二个元素开始到结尾作为无序部分。从无序部分的第一个元素开始,和有序部分的最后一个元素开始向前进行比较,直到找到正确的位置为止。 /** * 对从开始位置和结束位置的元素进行排序 * @param a 原始数组 * @param first 开始位置 * @param last 结束位置 */ public stati

2016-04-27 12:40:41 306

原创 static的作用

static可以用于修饰变量,方法,静态代码块,以及静态导入。那能不能对static方法进行重写呢?首先看一个例子:public class StaticTest { public static void main(String[] args) { M m = new N(); m.test(); }}class M{ public static void test()

2016-04-24 20:54:38 279

原创 死锁

1、死锁产生的原因:    a.系统资源不足    b.进程拿锁的顺序不当    c.资源分配不当2、死锁产生的四个条件    a.互斥条件:进程在某一时刻独占一个资源,反过来讲,就是一个资源在某一时间内只能被一个进程占有,不能被两个或两个以上的进程占有。    b.占有且申请条件:进程至少占有一个资源,但又申请新的资源,由于该资源已经被另外进程占有,此时该进程阻塞。但是,

2016-04-24 19:19:35 331

原创 高级程序员的技能

在面试大型公司的时候,一般需要掌握以下技能,才能成为他们口中所述的高级程序员。1 Java基础  1.1 Collection和Map  (1)掌握Collection和Map的继承体系。  (2)掌握ArrayList、LinkedList、Vector、Stack、PriorityQueue、HashSet、LinkedHashSet、TreeSet、H

2016-04-24 18:44:37 537

原创 HashMap的工作原理

在面试的时候,会经常问到HashMap的一些情况。如果不了解HashMap的源码,对于该问题,实在无法完美的回答。大致问题如下:1.HashMap和Hashtable的区别:   HashMap允许null值的键和值,而Hashtable不能;HashMap非前程安全,而Hashtable是线程安全的。所以HashMap的效率要比Hashtable高。2.HashMap的工作原理:

2016-04-23 22:27:04 357

原创 同步异步阻塞非阻塞

同步:在发出一个功能调用时,在没有得到结果之前,该调用就不返回。必须一件事一件事的做,前一件事做完了才能继续做下一件事。异步:在发出一个功能调用时,调用者不能立即得到结果。实际处理这个调用的部件在完成后,通过状态、通知或者回调函数来通知客户端。阻塞:在调用结果返回之前,当前线程被挂起,函数之后得到结果之后才返回。非阻塞:在不能立即得到结果之前,该函数不会阻塞当前线程,而会立即返回。

2016-04-18 22:51:55 342

原创 垃圾收集器

本文只是以HotSpot虚拟机为例。1、Serial收集器:新生代、单线程、复制算法。       该收集器在执行的过程中,只会使用一个CPU或者一条收集线程去完成垃圾收集工作,并且会暂停其他所有的工作线程,直到它收集结束。虽然如此,但是,它简单而高效,对于限定单个CPU的环境来说,不会产生由于线程切换而引起的开销(从这一点也可以看出,多线程未必比单线程快)。2、ParNew收集器:新

2016-04-13 22:34:23 307

原创 垃圾收集算法

1、在介绍垃圾收集算法之前,首先介绍一下其他的算法。①引用计数算法:给对象添加一个引用计数器,每当有一个地方引用时,就加1,当引用失效时,就减1,。任何时刻计数器为0的对象就是不可能再被使用的。    但是java中并没有选择该算法来管理内存,主要原因是因为很难解决对象之间的相互循环引用。②根搜索算法:通过名为“GC Roots”的对象做为起始点,从这些节点开始,向下搜索,搜索所走过的

2016-04-12 22:26:11 316

原创 浅析ThreadLocal

ThreadLocal不是Thread,而是Thread的局部变量。ThreadLocalMap是ThreadLocal类的一个静态内部类,它实现了键值对的设置和获取,每个线程中都有一个独立的ThreadLocalMap副本,它所存储的值,只能被当前线程读取和修改。ThreadLocal类通过操作每一个线程特有的ThreadLocal副本,从而实现了变量访问在不同线程中的隔离。因为每个线程的变

2016-04-11 21:32:32 439

原创 浅析加密解密基础知识

1、公钥与私钥2、加密与解密3、签名与验签数字签名:将报文按照双方约定的HASH算法计算得到一个固定位数的报文摘要。改动任何一位,用同样的算法计算出来的摘要就不一样。然后将该摘要用发送者的私钥加密,然后连同原报文一起发送给接收者,这就是数字签名。接收方接收到数字签名后,用同样的HASH算法对原报文计算出摘要后,然后用发送者的公钥对数字签名进行解密,得到报文摘要进行比较。如果相等,则

2016-04-11 17:35:16 683

原创 消息服务一

1、在大型项目中,一般都会用到消息服务。消息服务具有的优点,这里简单介绍一下。   ①异构集成   ②缓解系统瓶颈   ③提高可伸缩性   ④提高效率   ⑤有助于体系结构的灵活性和敏捷性   作为开发人员而言,以上的几点只用简单的了解一下即可。2、JMS主要支持两种消息传送方式:点对点模型(P2P),发布/订阅模型(Pub/Sub)。     在点对点模型中,发送

2016-03-07 22:27:19 457

原创 各种协议浅析

1.TCP/IP把网络分为四层:应用层,传输层,网络层,链路层。  应用层:HTTP,FTP,DNS。FTP文件传输协议,DNS域名系统  传输层:TCP,UDP。TCP传输控制协议,UDP用户数据报协议  网络层:IP  链路层:网卡  IP协议的作用是把各种数据包传送给对方。  IP地址指明了节点被分配到的地址,MAC地址是指网卡所属的固定地址。IP可变,MAC不可变。

2016-01-27 17:51:09 664

原创 Spring的传播行为

事务在大多数面试中都会被问到。假如问到Spring,也一般会问到Spring的隔离机制和传播行为。隔离机制在第一篇的博客中已经介绍过了,并且Spring的隔离机制依旧采用数据的四种。下面简单的介绍一下Spring的七种传播行为。Spring的传播行为定义在TransactionDefinition这个接口中。1.PROPAGATION_REQUIRED  这是默认的属性。如果存在一个事

2015-12-04 17:09:44 949

原创 面试题

今天被电话面试了,发现问的问题大多数都是那样。以往的也被面试过,但是并没有总结过。以后会对面试的题做一下总结。1.被volatile修饰的变量,在任何场景下都是线程安全的吗?2.Map的底层实现?3.servlet是线程安全的吗?4.SpringAOP的隔离机制,传播属性5.SpingCglib和JDK动态代理在什么情况下分别使用?6.ConcurrentHashMap是如

2015-11-26 21:52:34 447

原创 this逃逸问题

在学习并发编程的时候,大多数的资料都会涉及到this逃逸这个问题。从本质上讲,this代表当前对象名,是一个指向本对象的指针。 首先看两个例子:第一个:public class ThisEscape {    private final int var;    public ThisEscape(EventSource source) {        so

2015-11-11 15:46:58 589

原创 JVM的内存区域划分

首先看一个java程序具体的执行过程:                                                                           如图所示,首先java源代码文件(.java后缀)会被java编译器编译为字节码文件(.class文件),然后由JVM中类加载器(Class Loader)加载各个类的.class文件,加载文笔之后,

2015-10-22 22:36:35 1331

原创 java中的equals和==,以及重写equals和hashCode

在初学java时,会遇到下面的代码两次输出的结果依次为:false true为什么会出现这种情况?  == 和equals之间到底有什么不同?作为程序员,必须要搞明白。一、关系运算符“==”到底是什么?首先看一个例子:输出的结果依次为:true false  true。m == n 结果为true,这个很容易理解,因为变量n和变量m存储的都是3,那一定相等。那为什么

2015-10-22 08:56:25 548

转载 java 堆和栈

1. 栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。 2. 栈的优势是,存取速度比堆要快,仅次于直接位于CPU中的寄存器。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。另外,栈数据可以共享,详见第3点。堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,Java的垃圾收集

2015-10-18 21:54:40 287

原创 索引使用及索引失效总结

1.在索引列上使用函数。比如substr,decode,instr等,对索引列进行计算。需要建立函数索引就可以了。  如:select * from staff where trunc(birthdate)='01-MAY-82'。---失效  select * from staff where birthday   注意,对于MAX,MIN函数,Oracle仍然使用索引。2.新建

2015-09-23 10:49:04 669

转载 程序员的自我修炼

http://blog.csdn.net/liuxiaoyi216/article/details/43852725

2015-09-18 14:16:07 358

原创 事务、隔离级别、锁

1.事务的概念:事务是一组相互依赖的操作行为,不可分割,由一组在业务上相互依赖的SQL语句组成。四个字概括:同生共死。2.多个事务并发时的并发问题: 脏读:A事务读取B事务尚未提交的更改数据,并在这个基础上操作。如 果B事务恰巧回滚,那么A事务读取到的数据是不被承认的。对于两个事务T1,T2。T1读取了已经被T2更改,但是还没有提交的数据,之后T2回滚,T1读取的数据是临时

2015-09-15 17:07:07 787

仓储物流信息管理系统内部信息管理

仓库管理内部包括六个子模块,它们在录入时有一个先后顺序。给资源将会给你展示出来

2011-11-19

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除