java
阿征new
你只看到我在不停的忙碌,却没看到我奋斗的热情。你有朝九晚五,我有通宵达旦。你否定我的现在,我决定我的未来。你可以轻视我的存在,我会用代码证明这是谁的时代!Coding是注定痛苦的旅行,路上少不了Bug和Change,但!那又怎样?哪怕执行不了,也要编译得漂亮!我是屌丝程序猿,我为自己代言.
展开
-
通过字节码展示Java8 Lambda的实现-整理
原文:https://www.cnblogs.com/bigshark/p/11257395.htmlJava8 增加了 Lambda 表达式,很大程度使代码变的更加简洁紧凑了,那么 Java8 是如何实现 Lambda 表达式的呢?1. 直接看一个简单的创建线程的例子。public class TestLambda { public static void mai...转载 2020-03-24 09:32:15 · 603 阅读 · 0 评论 -
TCP为什么需要3次握手与4次挥手
为什么需要“三次握手” 在谢希仁著《计算机网络》第四版中讲“三次握手”的目的是“为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误”。在另一部经典的《计算机网络》一书中讲“三次握手”的目的是为了解决“网络中存在延迟的重复分组”的问题。这两种不用的表述其实阐明的是同一个问题。 谢希仁版《计算机网络》中的例子是这样的,“已失效的连接请求报文段”...转载 2018-04-08 18:15:49 · 828 阅读 · 0 评论 -
Runtime.getRuntime().availableProcessors()
然而,更大的问题在于Runtime.getRuntime().availableProcessors()也并非都能返回你所期望的数值。比如说,在我的双核1-2-1机器上,它返回的是2,这是对的。不过在我的1-4-2机器 上,也就是一个CPU插槽,4核,每个核2个超线程,这样的话会返回8。不过我其实只有4个核,如果代码的瓶颈是在CPU这块的话,我会有7个线程在同时 竞争CPU周期,而不是更合理的4个...转载 2018-10-25 11:09:03 · 26346 阅读 · 1 评论 -
Cglib动态代理实现原理-- 源码解读
Cglib动态代理实现方式我们先通过一个demo看一下Cglib是如何实现动态代理的。首先定义个服务类,有两个方法并且其中一个方法用final来修饰。public class PersonService { public PersonService() { System.out.println("PersonService构造"); } /...转载 2018-07-27 15:54:44 · 833 阅读 · 0 评论 -
JAVA中String类的intern()方法的作用
http://blog.csdn.net/hfmbook/article/details/7605527一般我们变成很少使用到 intern这个方法,今天我就来解释一下这个方法是干什么的,做什么用的首先请大家看一个例子:[java] view plain copy print?public static void main转载 2016-07-15 17:07:41 · 274 阅读 · 0 评论 -
为什么volatile不能保证原子性而Atomic可以(valatile只保证可见性,不保证原子性)
在上篇《非阻塞同步算法与CAS(Compare and Swap)无锁算法》中讲到在Java中long赋值不是原子操作,因为先写32位,再写后32位,分两步操作,而AtomicLong赋值是原子操作,为什么?为什么volatile能替代简单的锁,却不能保证原子性?这里面涉及volatile,是java中的一个我觉得这个词在Java规范中从未被解释清楚的神奇关键词,在Sun的JDK官方文档是这样形容转载 2016-07-25 17:54:08 · 4114 阅读 · 3 评论 -
Java之美[从菜鸟到高手演练]之atomic包的原理及分析
在x86 平台上,CPU提供了在指令执行期间对总线加锁的手段。CPU芯片上有一条引线#HLOCK pin,如果汇编语言的程序中在一条指令前面加上前缀"LOCK",经过汇编以后的机器代码就使CPU在执行这条指令的时候把#HLOCK pin的电位拉低,持续到这条指令结束时放开,从而把总线锁住,这样同一总线上别的CPU就暂时不能通过总线访问内存了,保证了这条指令在多处理器环境中的原子性。上面引用:h转载 2016-07-25 16:42:48 · 340 阅读 · 0 评论 -
我所理解的RESTful Web API [Web标准篇]
http://www.cnblogs.com/artech/p/restful-web-api-01.htmlREST不是一个标准,而是一种软件应用架构风格。基于SOAP的Web服务采用RPC架构,如果说RPC是一种面向操作的架构风格,而REST则是一种面向资源的架构风格。REST是目前业界更为推崇的构建新一代Web服务(或者Web API)的架构风格。由于REST仅仅是一种价格风格,转载 2016-07-25 11:56:17 · 319 阅读 · 0 评论 -
java异常的深入学习以及异常处理时一些内存问题
通过如下链接系统学习java异常框架,并通过文章的评论和自己的测试得到如下总结http://blog.csdn.net/hguisu/article/details/6155636小结:try 块:用于捕获异常。其后可接零个或多个catch块,如果没有catch块,则必须跟一个finally块。catch 块:用于处理try捕获到的异常。(catch中如果发生异原创 2016-06-14 10:26:00 · 1159 阅读 · 0 评论 -
千万不要误用 java 中的 HashCode 方法
千万不要误用 java 中的 HashCode 方法https://www.douban.com/note/142228140/String类是使用它的 value值作为参数然后进行运算得出hashcode的String只要值相同的String不管是不是一个对象,hash值全部相等HashMap对象的hashcode 是取key的hashcode和value的hashcod转载 2016-06-14 11:31:32 · 11176 阅读 · 1 评论 -
Java之内存分析和String对象
Java之内存分析和String对象 Java中内存分析: 栈(Stack) :存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中)。 堆(heap):存放所有new出来的对象。 常量池(constant pool):在堆中分配出来的一块存储区域,存放储显式的String常量和基本转载 2016-06-14 10:27:16 · 299 阅读 · 0 评论 -
Java中Runnable和Thread的区别
线程的起动并不是简单的调用了你的RUN方法,而是由一个线程调度器来分别调用你的所有线程的RUN方法,我们普通的RUN方法如果没有执行完是不会返回的,也就是会一直执行下去,这样RUN方法下面的方法就不可能会执行了,可是线程里的RUN方法却不一样,它只有一定的CPU时间,执行过后就给别的线程了,这样反复的把CPU的时间切来切去,因为切换的速度很快,所以我们就感觉是很多线程在同时运行一样.你转载 2016-06-28 16:23:37 · 343 阅读 · 0 评论 -
深入理解JVM—JVM内存模型
http://www.cnblogs.com/dingyingsi/p/3760447.html我们知道,计算机CPU和内存的交互是最频繁的,内存是我们的高速缓存区,用户磁盘和CPU的交互,而CPU运转速度越来越快,磁盘远远跟不上CPU的读写速度,才设计了内存,用户缓冲用户IO等待导致CPU的等待成本,但是随着CPU的发展,内存的读写速度也远远跟不上CPU的读写速度,因此,为了解决这一纠纷转载 2016-07-15 18:06:30 · 279 阅读 · 0 评论 -
Java threadpool机制深入分析
http://shmilyaw-hotmail-com.iteye.com/blog/1897638简介 在前面的一篇文章里我对java threadpool的几种基本应用方法做了个总结。Java的线程池针对不同应用的场景,主要有固定长度类型、可变长度类型以及定时执行等几种。针对这几种类型的创建,java中有一个专门的Executors类提供了一系列的方法封装了具体的实现转载 2016-07-05 13:52:37 · 403 阅读 · 0 评论 -
Java Reflection(反射机制)详解
Java反射机制可以让我们在编译期(Compile Time)之外的运行期(Runtime)获得任何一个类的字节码。包括接口、变量、方法等信息。还可以让我们在运行期实例化对象,通过调用get/set方法获取变量的值。下面是一个小例子,让大家感受下Java反射的魔力Method[] methods = MyObject.class.getMethods();for(Method meth转载 2017-07-13 17:08:45 · 701 阅读 · 0 评论 -
一个例子让你了解Java反射机制
Java反射机制可以让我们在编译期(Compile Time)之外的运行期(Runtime)获得任何一个类的字节码。包括接口、变量、方法等信息。还可以让我们在运行期实例化对象,通过调用get/set方法获取变量的值。下面是一个小例子,让大家感受下Java反射的魔力Method[] methods = MyObject.class.getMethods();for(Method method : m转载 2017-07-13 17:01:15 · 358 阅读 · 0 评论 -
跨域、跨服务器调用时候session丢失的问题总结!!!
http://blog.csdn.net/zq9017197/article/details/6326667这篇文档是最近一次工作中遇到问题的总结,且听我娓娓道来:(可能有很多地方不对,我只是这样想通拉。)最近新进一个公司,做的项目是手机支付系统。由于涉及到金钱相关的,所以安全性要求特别的高。项目分了很多个子系统,在部署(测试)的时候是每个Tomcat上面只放一个子系统转载 2016-09-02 17:41:06 · 15074 阅读 · 0 评论 -
Java当中的内存分配以及值传递问题内存解析
首先必须说明作为Java程序员对于内存只要有大致的了解就可以了,如果你对Java当中的某一个知识点在不需要分析内存分配过程的情况下可以掌握,那就大可不必去研究内存。如果你对知识点已经掌握,那么你应该把更多的精力放在对业务逻辑的分析与设计上,这样的话你才可能这一行业走的更远。 好了废话不多说了,下面我带着大家先来简单的看一下Java当中所涉及的内存分配,接着我会以讲解Java当中的值传递问题转载 2016-08-01 22:51:22 · 860 阅读 · 0 评论 -
Java系列笔记 - Java 内存区域和GC机制
Java垃圾回收概况 Java GC(Garbage Collection,垃圾收集,垃圾回收)机制,是Java与C++/C的主要区别之一,作为Java开发者,一般不需要专门编写内存回收和垃圾清理代码,对内存泄露和溢出的问题,也不需要像C程序员那样战战兢兢。这是因为在Java虚拟机中,存在自动内存管理和垃圾清扫机制。概括地说,该机制对JVM(Java Virtual Machine)中的内存转载 2016-07-21 10:56:45 · 248 阅读 · 0 评论 -
如何在java程序中调用linux命令或者shell脚本
http://blog.sina.com.cn/s/blog_6433391301019bpn.html在java程序中如何调用linux的命令?如何调用shell脚本呢?这里不得不提到java的process类了。process这个类是一个抽象类,封装了一个进程(你在调用linux的命令或者shell脚本就是为了执行一个在linux下执行的程序,所以应该使用pro原创 2016-07-20 06:57:26 · 779 阅读 · 0 评论 -
java多线程和并发库 学习笔记草稿
多路Condition 实现阻塞队列:class BoundedBuffer { Lock lock = new ReentrantLock() ; Condition notFull = lock .newCondition (); Condition notEmpty = lock .newCondition (); Integer[原创 2016-07-07 16:05:59 · 318 阅读 · 0 评论 -
单例模式与双重检测
http://jiangzhengjun.iteye.com/blog/652440首先要解释一下什么是延迟加载,延迟加载就是等到真真使用的时候才去创建实例,不用时不要去创建。 从速度和反应时间角度来讲,非延迟加载(又称饿汉式)好;从资源利用效率上说,延迟加载(又称懒汉式)好。 下面看看几种常见的单例的设计方式: 第一种:非延迟加载单例类原创 2016-07-06 15:10:43 · 1114 阅读 · 0 评论 -
组合,关联,聚合的区别
类间关系在类图中,除了需要描述单独的类的名称、属性和操作外,我们还需要描述类之间的联系,因为没有类是单独存在的,它们通常需要和别的类协作,创造比单独工作更大的语义。在UML类图中,关系用类框之间的连线来表示,连线上和连线端头处的不同修饰符表示不同的关系。类之间的关系有继承(泛化)、关联、聚合和组合。(1)继承:指的是一个类(称为子类)继承另外的一个类(称为基类)的功能,并增加它自己转载 2016-02-24 17:04:03 · 506 阅读 · 0 评论