Java
文章平均质量分 75
Newpidian
这个作者很懒,什么都没留下…
展开
-
Java UDP编程实例
总序在学习UDP的编程 虽然可能在实际项目上用不到,但是并不影响我学习。由于时间原因 先贴出代码,后续的解释在未来修改添加UDP客户端UDP服务器端UDP客户端package UDPTest;import java.io.IOException;import java.net.DatagramPacket;import java.net.DatagramSocket;import jav原创 2016-06-28 23:04:09 · 1289 阅读 · 0 评论 -
基于JDK和CGLib的链式动态代理
动态代理与链式动态代理 链式代理就是将多个代理串链在一起,一个一个的去执行,执行的顺序取决于链上的先后顺序。JDK的动态代理只能代理实现了接口的类实例,而CGLib则可以代理普通的类实例。执行链式代理的样子大概如下图所示:这很像Spring Aop的前后增强,实际上我也是基于这个想到,如果增强有多个,那么就是链式动态代理的样子了。好像Filter也是这样的,Node.js中如Express的中间件原创 2016-12-29 11:19:06 · 1043 阅读 · 0 评论 -
JVM内存管理基础
一个Java进程的哪些部分需要分配内存Java堆 用于存储Java对象的区域,需要分配内存,堆大小在JVM启动时就向操作系统申请了。通过-Xmx和-Xms来控制大小,前者表示最大的堆的大小,后者表示初始化的堆的大小。 JVM管理着堆内存,对象创建由应用程序控制,而对空间的释放由GC垃圾收集器来完成。根据GC算法的不同,回收的时机也不尽相同。线程 JVM运行程序的实体就是线程。所以需要一原创 2016-12-14 16:05:20 · 540 阅读 · 0 评论 -
SkipList A Probabilistic Alternative to Balanced Trees
Skip Lists: A Probabilistic Alternative to Balanced Trees写博客,顺便看了一篇论文,也是挺好的。其实这篇博客我一直想写,但是怕写不好,没什么勇气。 跳跃表是一种可以用来替代平衡树的数据结构,因为它使用的是基于概率选择而不是严格平衡的方法,导致了在跳跃表中,插入和删除变得更加简单,速度明显变快。 跳跃表大概长这个样子,由图可以看出,是一种空间原创 2016-11-27 12:20:54 · 1937 阅读 · 0 评论 -
Java并发基础<1>
java内存模型基本概念原子性:32位机器中long型的读写是不具有原子性的。可见性:在并行关系中,当一个线程修改了某一共享变量的值时,其他的线程是否能立即知道这个修改。就比如CPU1 存在共享变量t的cache值,而CPU2修改了t的值,而CPU1还是直接从cache处取值,数据不一致。,产生可见性的问题。(指令重拍以及编译器优化都可能产生这个问题.)有序性: 就是执行时候,代码排在前的后执原创 2016-11-19 17:36:34 · 739 阅读 · 0 评论 -
Java并发基础<2>
Volatile 变量的声明11/21/2016 7:21:53 PM From 《高并发程序设计》volatile 保证一个线程修改变量之后,另一个线程能看到这个改动。 声明一个volatile变量相当于告诉虚拟机,这个变量的值极有可能被修改,为了确保该变量能被应用程序的所有线程访问看到,需要用volatile去声明,在本人所学的Linux C中,定义的volatile变量意味着不对这个变量去原创 2016-11-21 21:09:43 · 846 阅读 · 1 评论 -
深入分析ClassLoader工作机制
ClassLoader 较为深入分析。from <深入分析Java Web>加载CLASS到JVM中,审查每个类应该由谁加载,父优先的等级加载机制。加载机制ClassLoader类结构分析ClassLoader抽象类,有很多子类,一般在实现自己的ClassLoader时候,一般都会继承URLClassLoader这个子类,因为这个类已经实现了大部分的工作,就像Servlet通过会直接HttpServ原创 2016-12-10 00:26:49 · 4300 阅读 · 4 评论 -
Future模式的简单实现
Future模式的简单实现From 《Java 高并发程序设计》 Future模式,核心思想是异步调用,就是当调用一个方法时,这个函数可能执行得很慢,就需要等待,但是有时候并不着急要这个结果,所以选择不去傻傻等待,而是做其他的事情。就好比”双十一”购物,你买到了想要的东西,那么你不可能等待它到货,然后才做另一件事情,你可能想继续购物其他的商品。而对于已经购买得商品,会生成一个订单,你只需要等待这个原创 2016-11-29 15:31:03 · 1507 阅读 · 0 评论 -
2016/9/9阿里笔试编程题-字符串的查找替换
题目 对于输入的字符串,我们需要完成的任务是从左到右扫描字符串,如果存在由三个以上(包括三个)连续相同字符组成的子串,就将这个子串从原串中去掉,并将原串剩下的部分拼接到一起。重复上述过程,直到无法去掉任何子串示例inputAAABCCDDDCBAABBBABBBAoutputBBACode/** * Created by bamboo on 2016/9/9. */public cl原创 2016-09-09 22:26:44 · 2909 阅读 · 3 评论 -
Base64编码的原理与Java实现
Base64原理编码原理 编码原理:将3个字符转换成4个字符((3X 8)=24字节=(4X 6)) ,取输入流中的3个字节,每次取6位(共4次),以此6位值做索引去查表,输出相应的字符。 如果输入流中字符不是3的倍数,最后结果缺的就以”=”填充(输入流中最后只剩1个字符就填2个=;剩2个就填1个=)alphabet[]=”ABCDEFGHIJKLMNOPQRSTUVWXYZabcde原创 2016-10-07 20:59:36 · 1700 阅读 · 0 评论 -
实现一个简单的类加载器
功能 用来加载某包下的所有类,比如使用了某些注解的所有类,比如所有的@Service,或者Controller类 实现类加载器的3个功能获取类加载器根据类名称加载类获取指定包下的所有类获取类加载器 获取类加载器的实现非常简单,简单到只需要一句话,获取当前线程的ClassLoader即可。 /** * 获取类加载器 * * @retur原创 2016-10-16 16:35:02 · 1518 阅读 · 0 评论 -
Servlet工作原理摘要
Servlet容器是如何工作的Context容器直接管理Servlet的包装类WrapperTomcat public addWebapp() {创建Context(StandardContext),ConextConfig配置}ContextConfig:负责完成整个Web应用的配置文件解析工作ContextConfig的init:{创建用于解析XML的contextRegister对象。读取默原创 2016-12-28 16:00:20 · 1005 阅读 · 0 评论