05 2017 档案
摘要:ClassLoader的主要方法 1.loadClass(String name) 给定一个类名,记载一个类。 2.defineClass(byte[] b, int off, int len) 根据给定的字节数组定义一个类 3.findClass(String name) 查找一个类 4.find
阅读全文
摘要:Java是按照运行时数据的存储结构来划分内存结构的,java虚拟机规范将java运行时的诗句划分为6种: 1.PC寄存器 用于保存当前执行程序的内存地址,同时java程序是多线程的,不可能一直都按照线性执行下去,当有多个线程交叉执行时,被中断的线程程序当前执行到哪条的内存地址需要记录下来。 2.ja
阅读全文
摘要:GC中的垃圾,是指的是在内存中不在不再被使用的对象。 常见的垃圾回收算法 1.引用计数算法(无法回收循环引用的对象) 2.标记清除算法分为标记阶段和清除阶段(会产生内存的空间碎片) 3.复制算法(缺点是将系统内存折半,高效性是建立在存活对象少,垃圾对象多的前提下的) 在java新生代串行垃圾回收器中
阅读全文
摘要:对无序数组的并发搜索的实现可以充分的用到多cpu的优势 一种简单的策略是将原始数组按照期望的线程数进行分割,如果我们计划使用两个线程进行搜索,就可以把一个数组分成两个,每个线程各自独立的搜索,当其中有一个线程找到数据后,立即返回结果的index即可。 首先index需要采用atomicinteger
阅读全文
摘要:并不是所有的操作都能进行并发计算的,比如有关于数据相关性的操作,如(B+C) * B,操作之间都会有依赖关系的。 可以使用流水线方式充分利用多核环境。 开多个线程。每一条线程相当于车间,负责执行一小部分工作,执行完传递给下一个线程,线程之间可以通过阻塞队列来进行通信。 具体实现: 其中Div, Mu
阅读全文
摘要:Future模式核心思想是异步调用。我们可以先拿到调用的凭证,让方法先返回,让他在后台慢慢的处理这个请求。通过这个可以实现异步操作。 JDK经准备好了一套完美的实现方式。我们用于执行的异步线程需要继承Callable接口,相当于Runnable,Callable接口中有一个方法call(),相当于r
阅读全文
摘要:阻塞队列的实现 但是阻塞队列不是一个高性能的体现,完全使用锁和阻塞实现线程之间的同步,在高并发的场合它的性能并不卓越。他仅仅是方便数据的共享。 concurrentLinkedQueue是一个高性能的队列,大量使用无锁的CAS操作,会获得客观的性能提升(不过CAS不是在所有的情况下都比悲观锁的性能好
阅读全文
摘要:package com.hzins.suanfa; /** * 最长公共子序列问题 * @author Administrator * */ public class Demo5 { /** * 额外空间复杂度O(n^2) * @param str1 * @param str2 * @return */ public st...
阅读全文
摘要:1、TCP连接 手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接。TCP协议可以对上层网络提供接口,使上层网络数据的传输建立在“无差别”的网络之上。 建立起一个TCP连接需要经过“三次握手”: 第一次握手:客户端发送syn包(syn=j)到服务器,并
阅读全文
摘要:package com.hzins.thread; /** * 最完美的单例实现 * 1.getInstacne没有锁,使得在高并发环境下性能卓越 * 2.只有在getInstacne第一次调用时,StaticSingleton实例才会被创建 * 由于内部类StaticSingletonHolder被声明为private,使得我们不能在外部访问并初始化他, * 只能通过getInsta...
阅读全文
摘要:/** * 翻转双向链表 * 需要记录翻转后的下一个节点 * @param head * @return */ public DoubleNode reverserList(DoubleNode head){ DoubleNode pre = null; DoubleNode next = null; ...
阅读全文
摘要:package day; /** * 翻转单链表 * @author Administrator * */ public class ReverseList { public static Node reverList(Node head){ if(head == null || head.next == null){ return he...
阅读全文

浙公网安备 33010602011771号