随笔分类 -  Java

Java相关。
摘要:序列化在高性能网络编程、分布式系统开发中是举足轻重的之前有用过Java序列化、ProtocolBuffer等,在这篇文章这里中简单分析序列化后的byte数组观察各种序列化的差异与性能,这里主要分析Java序列化、Kryo、ProtocolBuffer序列化;* Java序列化为jdk自带的序列化实现... 阅读全文
posted @ 2015-07-17 02:16 AiFly 阅读(5288) 评论(0) 推荐(0)
摘要:共享内存模型,顾名思义就是通过共享内存来实现并发的模型,当多个线程在并发执行中使用共享资源时如不对所共享的资源进行约定或特殊处理时就会出现读到脏数据、无效数据等问题;而为了决解共享资源所引起的这些问题,Java中引入了同步、锁、原子类型等这些用于处理共享资源的操作; 在本篇文章中,将通过几个De... 阅读全文
posted @ 2015-05-21 00:21 AiFly 阅读(1512) 评论(0) 推荐(0)
摘要:这里我们使用Java的线程与锁来解析共享内存模型;做过java开发并且了解线程安全问题的知道,要使某段代码是线程安全的那必须要满足两个条件:内存可见性、原子性; 内存可见性 在JVM规定多个线程进行通讯是通过共享变量进行的,而Java内存模型规定了有主内存是所有线程共享的,而各个线程又有自... 阅读全文
posted @ 2015-05-03 22:09 AiFly 阅读(4007) 评论(0) 推荐(0)
摘要:从很久之前在学校到现在我们编程的时候经常都有听说到并发编程,偶尔也会听到说并行,但我们很多人其实都不太清除并发与并行具体的区别在哪;我们刚开始学习编程语言的时候我相信我们写的都是串行程序,一步接着一步来,可以说这比并发程序更不容易出错,但在性能上要远不如并发;还有一种并发具有很强容错性:分布式程... 阅读全文
posted @ 2015-04-29 23:37 AiFly 阅读(909) 评论(0) 推荐(0)
摘要:最近有接触通讯协议有碰到字节序,记得上学的时候有说过不过太久了不怎么记得了,现在我在这里说说字节序; 我们都知道计算机存储数据的时候都是把数据转换成字节进行存储,而日常我们的程序或存储的数据通常都是由多个字节组成的,而不同的计算机或设备存储的规则又不一致,导致我们在多计算机、设备间传输数据时就要了解... 阅读全文
posted @ 2015-04-13 22:09 AiFly 阅读(1179) 评论(0) 推荐(0)
摘要:在IntelliJ IDEA 14.1中使用在java项目中使用Maven时当没有在Maven中配置JDK编译版本、源码版本时,IDEA将默认的编译版本、源码版本设置为jdk5。在IDEA中Language level将使用默认的JDK5级别目标版本也是默认为JDK5当手动改为其他版本如:JDK8,... 阅读全文
posted @ 2015-04-06 13:17 AiFly 阅读(7812) 评论(0) 推荐(0)
摘要:一、SPI机制这里先说下SPI的一个概念,SPI英文为Service Provider Interface单从字面可以理解为Service提供者接口,正如从SPI的名字去理解SPI就是Service提供者接口;我对SPI的定义:提供给服务提供厂商与扩展框架功能的开发者使用的接口。在我们日常开发的时候... 阅读全文
posted @ 2015-03-08 17:32 AiFly 阅读(12037) 评论(0) 推荐(1)
摘要:从Tomcat启动调用栈可知,Bootstrap类的main方法为整个Tomcat的入口,在init初始化Bootstrap类的时候为设置Catalina的工作路径也就是Catalina_HOME信息、Catalina.base信息,在initClassLoaders方法中初始化类加载器,然后通... 阅读全文
posted @ 2014-12-07 17:28 AiFly 阅读(2579) 评论(1) 推荐(1)
摘要:Tomcat有多个容器组成,而Container也就是容器与Connecter连接器是Tomcat最核心的两个模块,Connecter连接器接收客户端的请求,并根据客户端的请求传递给Container处理并作出相应。Tomcat中有多个层次的容器对象:Engine、Host、Context、Wr... 阅读全文
posted @ 2014-12-03 01:36 AiFly 阅读(1454) 评论(0) 推荐(0)
摘要:Tomcat由多个组件组成,那么Tomcat是怎么对他们的生命周期进行管理的么,这里将从Tomcat源码去分析其生命周期的实现;Bootstrape类为Tomcat的入口,所有的组件够通过实现Lifecycle接口来管理生命周期,Tomcat启动的时候只需调用Server容器的start(),然... 阅读全文
posted @ 2014-11-27 07:28 AiFly 阅读(911) 评论(0) 推荐(0)
摘要:问题:原系统查询接口不支持分页也不可能加入分页支持,导致Ajax查询数据过多,返回数据达到2W多条记录时响应已经极慢,查询功能不要求数据实时性,页面反应速度极慢、体验不好;经排查是由于数据量过大导致写回页面的时候慢,实现是直接Servlet输出流写到页面上(output.write(buffer, ... 阅读全文
posted @ 2014-11-10 21:49 AiFly 阅读(6679) 评论(4) 推荐(0)
摘要:上节我们介绍了JVM垃圾回收的原则,还有几个垃圾收集算法:标记-清除算法、复制算法、标记整理算法、分代收集算法;现在将要说HotSpt的垃圾收集器,这小节将只是理论。 Java虚拟机规范对垃圾收集器的具体实现并没有任何规定,所以不同厂商、不同版本的虚拟机提供的垃圾收集器会有很大的不同。下面所介绍的收... 阅读全文
posted @ 2014-11-08 02:20 AiFly 阅读(438) 评论(0) 推荐(1)
摘要:上篇文章我们介绍了JVM所管理的内存结构也就是运行时数据区(Run-Time Data Areas),现在我们将介绍JVM的内存分配与回收静态内存分配与动态内存分配JVM的内存分配主要分为两种:静态内存分配与动态内存分配与之对应的是基本类型内存分配与对象内存分配;1、静态内存分配静态内存分配在编译时... 阅读全文
posted @ 2014-11-02 20:02 AiFly 阅读(470) 评论(0) 推荐(0)
摘要:本系列的第一篇文章,预计本系列最后面会有两三个案例。 Java与C、C++不一样Java不需要Coder进行手动内存管理,而这一切都交给JVM进行自动内存管理,这从某种程度上来说也减轻了我们Coder不少的编码量,而我们是否还有必要了解JVM的内存管理机制呢,答案是否定的;因为Java也会和C... 阅读全文
posted @ 2014-10-30 02:11 AiFly 阅读(572) 评论(0) 推荐(1)
摘要:1、空串+类型变量方式转换int i=20;String s=""+i;这种方式实际上经过了两个步骤,首先进行了i.ToString()把 i 转换为 字符串,然后再进行加法运算,这里利用了java的toString机制来做转换。2、String.valueOf方式转换类型int i=20;String s=String.valueOf(i);查看源码发现,这种方式实际上是使用了封装类(Integer)的toString方式来进行转换的。1 public static String valueOf(int i) {2 return Integer.toString(i);3 阅读全文
posted @ 2013-07-02 17:30 AiFly 阅读(2045) 评论(0) 推荐(1)