java
链巨人
这个作者很懒,什么都没留下…
展开
-
自定义监听器 java
监听器,实际上是一个回调函数,具体一点就是当代码执行到某一行的时候就会调用你预先设置好的语句。这里我们有:监听者时刻监听着事件源,当有事件源的时候,监听者就会知道发生了什么事!相似的,警察是监听者,嫌疑犯所干的事是事件源,嫌疑犯干什么事,警察都知道。总体涉及到:事件、事件源(也就是事件的触发者,这里指嫌疑犯)、监听器(这里指警察);相应地,我们写几个类或者接口:Event、原创 2015-10-04 21:58:07 · 4517 阅读 · 4 评论 -
Remote Direct Memory Access (RDMA)
本博文主要是简单介绍RDMA的概念和与它相关的技术。实现RDMA需要许多其他技术的支持,包括硬件和软件。目前RDMA有多种实现方式,比如RoCE[^RoCE]、INFINIBAND[^InfiniBand],不同的实现方式所考虑的东西有很大差别,所以它们的性能和成本相差很大。本片博文只是做一个简单的介绍,如果要深入学习的话不妨看一看最后的链接所指向的内容或者其他论文。原创 2016-12-06 15:56:52 · 1575 阅读 · 0 评论 -
java异常机制
java异常机制是Java语言最重要的组成部分之一,java异常机制的引入使得逻辑代码和处理异常的代码分离,使代码更加清晰易懂,让程序员专注于逻辑代码而不是异常的处理。除此之外,还有下面几点作用:*(1)、解决问题并再次调用造成异常的方法。**(2)、平息事态的发展,并在不重新尝试方法的前提下继续。**(3)、计算另一些结果,而不是希。。。。。。http://blog.csdn.net/liangyi原创 2016-11-18 23:48:16 · 683 阅读 · 0 评论 -
java多线程
ThreadRunnableWaitnotify过时的suspendresume为什么suspend和resume这对方法会过时呢使用什么方法代替suspend和resume呢过时的stop和替代方法为什么Threadstop方法会过时呢用什么方法代替Threadstop呢过时的Threaddestroy一个不建议使用的类ThreadGroupThread、Runnable先举一原创 2016-11-24 23:37:44 · 933 阅读 · 0 评论 -
Java程序后台运行,即使关掉Putty终端
Java程序后台运行,即使关掉Putty终端比如,通过Putty启动远程主机上面的文件 java -cp Crawler.jar Main&关闭Putty终端之后,这个java程序也会被中断的。重新登录Putty,连接远程主机,使用命令 jps检查一下java进程,发现之前启动的java程序已经关闭了。因此,需要使用linux的nohup命令 nohup java -cp Crawl原创 2017-02-12 22:21:31 · 1884 阅读 · 0 评论 -
网络爬虫-自动推送小说最新章节的小应用--懒惰的追小说者
需求:本人在追两部小说,《大主宰》和《斗罗大陆3-龙王传说》,每过几个小时就去打开网页,点击bookmark,看看有没有更新。现在的需求是:我不需要用浏览器查看有没有更新,只要这两部小说更新了,这个应用就自动推送到我的手机上并提醒我。思路:写一个定时的应用,每15分钟访问一下相应的小说网页,如果有更新的小说章节,就下载下来,编辑好格式,发到我的qq邮箱上面。实现语言:java服务器:腾讯云工具原创 2017-02-15 15:04:29 · 1136 阅读 · 0 评论 -
Zxing生成二维码思路和源码解析
本博文是一篇介绍google zxing包生成二维码的思路和它的源码的文章。原创 2017-05-27 10:29:47 · 6504 阅读 · 0 评论 -
Mybatis传多个参数(三种解决方案)
Mybatis的Mapper接口的参数,一般是一个对象,但如果不是对象,并且有多个参数的时候呢?我们第一个的想法是把参数封装成一个java.util.Map类型,然后在方法的注释上面写上map的key是什么,但是,这样的做法明显不够直观,不能够一眼看出这个方法的参数是什么,并且,影响到了java方法的多态性(方法名相同,参数数量或类型不同)。下面的方法一和方法二能够解决问题!一DAO层的函原创 2015-11-21 16:59:21 · 20658 阅读 · 2 评论 -
使用具体的例子来讲解如何使用Esper
这篇文章使用了一个通俗的具体的例子来讲解Esper。在文末有两个版本的代码链接。通过这篇文章,你将会了解如何使用Esper,了解如何集成Esper到Spring框架中,了解如何使用Apache Active MQ和JMS来为Esper提供事件数据。以下是一个非常简单的事件流处理示例(使用ESPER引擎)。在GitHub上可以看到一个完整的代码, ~ 链接在文末 ~。什么是复杂...原创 2018-03-26 22:15:42 · 3125 阅读 · 0 评论 -
实现一个队列,使得push_rear(), pop_front() 和get_min()的时间复杂度为O(1)
待续。。。。。。https://stackoverflow.com/questions/4802038/implement-a-queue-in-which-push-rear-pop-front-and-get-min-are-all-consta原创 2018-07-23 22:34:23 · 3189 阅读 · 1 评论 -
Java的java.util.function.Function接口中identity方法解析
java.util.function.Function是函数式接口,它的特点是有且只有一个抽象方法,这样的接口被@FunctionalInterface所注释,能够应用于JDK1.8开始的函数式编程。对于这样的函数式接口,因为只有一个抽象函数,所以只要实现了该函数就能够实例化对象了。所以可以通过下面这一行代码的方式实例化一个“接口”对象:Function<Integer, Integ...原创 2018-08-16 21:46:21 · 8094 阅读 · 1 评论 -
下推自动机详讲 包含Java实现 Pushdown Automata (PDA)
下推自动机也可以叫下推有限自动机或者下推状态机,是一种实现无上下文语法的方法,类似于我们为常规语法所设计的有限状态机, 它是有限自动机的增强版。和有限状态机相比,它多了一个叫栈的数据结构。所以相比于有限状态机,它更加强大,能够记忆更多的内容。实现源码 (Java) Source Code of Pushdown Automata在这篇博文中,我们打算使用和有限状态机作相比较的方法来讲解。下...原创 2018-09-02 09:26:45 · 8360 阅读 · 1 评论 -
Java的CountDownLatch和CyclicBarrier的理解和区别
CountDownLatch和CyclicBarrier的功能看起来很相似,不易区分,有一种谜之的神秘。本文将通过通俗的例子并结合代码讲解两者的使用方法和区别。CountDownLatch和CyclicBarrier都是java.util.concurrent包下面的多线程工具类。从字面上理解,CountDown表示减法计数,Latch表示门闩的意思,计数为0的时候就可以打开门闩了。Cycli...原创 2018-10-17 11:23:21 · 44398 阅读 · 28 评论 -
Java虚拟机的静态常量池和运行时常量池
(静态)常量池:用于存放编译器生成的各种字面量和符号引用(符号引用区别于直接引用,后者在class字节码文件被虚拟机解析之后,符号引用将被替换为直接引用)。运行时常量池:(静态)常量池中的内容在类加载(这里的类加载指class字节码文件经过加载连接初始化的过程)后存放入方法区的运行时常量池中。相对于静态常量池,运行时常量池具有动态性,在程序运行的时候可能将新的常量放入运行时常量池中,比如使用St...原创 2018-11-23 17:27:40 · 1945 阅读 · 1 评论 -
Java虚拟机学习
这是本人学习Java虚拟机(JVM)的笔记在Oracle的hotspot中将方法区成为non-heap,特意与堆区分开来。方法区用于存放Class的相关信息,比如类名,访问修饰符,常量池,字段描述,方法描述等。常量池:存于方法区1 字符串常量池2 类(class)常量池( class文件的表述信息,包含类和接口的全限定名; 字段名称和描述符; 方法名称和描述符 )3 字面量...原创 2018-11-23 20:08:34 · 442 阅读 · 0 评论 -
分析JVM双亲委派模型的类加载源码 自定义类加载器
双亲委派模型下,在父类加载器无法加载的情况下再由当前类加载器去加载。具体的实现逻辑在java.util.ClassLoader抽象类的loadClass方法中。Boostrap ClassLoader |Extension ClassLoader |Application ClassLoader | |OtherClassLoader1 OtherClassLoa...原创 2018-12-16 20:37:36 · 472 阅读 · 0 评论 -
jdk8新特性 lambda表达式详解
从这边博客中你可以了解到:- Java匿名内部类- jdk se 8中lambda表达式代替匿名内部类。- lambda表达式的语法- 使用java.util.function.Predicate接口作为查询判断条件- java.util.function.Function接口- jdk8增加支持lambda表达式的新特性。原创 2016-11-28 12:01:45 · 7781 阅读 · 2 评论 -
JiBX1.2 处理XML
内容概要:本博文将讲解在JiBX下处理XML文件。涉及到如何把Java bean文件生成相应的binding.xml和xml schema文件、如何根据binding.xml文件进行JiBX编译以及简单测试。思路:由java二进制class文件A生成xml的连接文件B--》 根据连接文件B和原始的二进制文件A编译得到二进制clas文件A2。A2就是我们的目标。操作环境:linuxJiB原创 2016-05-30 17:28:12 · 2173 阅读 · 0 评论 -
java nio Selector (新IO)分析
Selector(选择器)是Java NIO中能够检测一到多个NIO通道,并能够知晓通道是否为诸如读写事件做好准备的组件。这样,一个单独的线程可以管理多个channel,从而管理多个网络连接。下面是本文所涉及到的主题列表:为什么使用Selector?Selector的创建向Selector注册通道SelectionKey通过Selector选择通道wakeUp()close()完整转载 2015-10-07 10:15:54 · 541 阅读 · 0 评论 -
java线程模拟生产者消费者问题
所谓的生产者消费者问题,就是存在生产者和消费者两个线程,当仓库还没满的时候,生产者可以生产,当仓库没空的时候,消费者可以取走商品。我们用实例说话:下面,我们创建几个类:1、消费者--主要负责消费商品2、生产者--负责生产商品3、仓库--存储商品,用一个变量表示仓库里面商品的数量。首先,我们先用一个程序来引出我们的话题:package com.huai.test;原创 2015-10-08 10:50:36 · 892 阅读 · 0 评论 -
线程同步问题分析
使用同步代码块或者同步方法。当一个对象Object 1在不同的线程中执行这个同步方法时,他们(同一个实例里的同步方法们)之间会形成互斥,达到同步的效果。但是这个对象所属的Class所产生的另一对象Object 2却能够任意调用这个被加了synchronized关键字的方法。我们用实例说话原创 2015-10-07 21:20:34 · 449 阅读 · 0 评论 -
IntelliJ IDEA WEB项目的部署配置
虽说Intellij IDEA已经用了四个多月,里面大部分功能还是比较熟悉的,但是很多细节地方还是搞不清楚,这几天公司另一个小组也换成了Intellij IDEA,帮他们迁移项目的时候,因为是非maven项目,遇到了很多问题,自己又研究了一番,下面整理一下转载 2015-11-20 12:20:06 · 729 阅读 · 0 评论 -
本人使用Intelij idea问题及解决汇总
一、鼠标悬停提示(比如鼠标悬停在方法名上面,出现方法的注解)Settings--Editor--General--Show quick doc on mouse move Delay(ms):500原创 2015-11-17 09:39:34 · 1078 阅读 · 0 评论 -
使用(x&y) + ((x^y)>>1) 求平均数
(x&y)+((x^y)>>1)的原理分析一、解释1(x&y)+((x^y)>>1),把x和y里对应的每一位(指二进制位)都分成三类,每一类分别计算平均值,最后汇总。1、是x,y对应位都是1,用x&y计算其平均值;2、是x,y中对应位有且只有一位是1,用(x^y)相当于计算机这些位的和,>>1相当于除2;3、是x,y中对应位均为0,无须计算。二、解释转载 2015-11-23 22:07:12 · 754 阅读 · 0 评论 -
静态内部类和非静态内部类区别汇总
一、非静态内部类:1、变量和方法不能声明为静态的。(类的编译顺序:外部类--静态方法或属性--内部类,如果内部类声明为静态的,造成编译顺序冲突。个人理解)2、实例化的时候需要依附在外部类上面。比如:B是A的非静态内部类,实例化B,则:A.B b = new A().new B();3、内部类可以引用外部类的静态或者非静态属性或者方法。二、静态内部类:1、属性和方法可以声原创 2015-12-11 11:02:02 · 2077 阅读 · 0 评论 -
Intelij IDEA注册码生成代码
Intelij IDEA 14 注册码生成代码! 直接保存成keygen.java文件即可!用户名:zhongguo注册码:57633-MPMCL-UZIP9-K27RU-A4MH6-7HJX3用户名:haolihai注册码:31841-2J7QT-AV4KF-NTQM9-MH55I-RWQI0转自:http://hw1287789687.iteye.com/blog/转载 2015-11-26 20:00:45 · 924 阅读 · 0 评论 -
synchronized(class)、synchronized(this)与synchronized(object)的区别分析
JAVA中synchronized关键字能够作为函数的修饰符,也可作为函数内的语句,也就是平时说的同步方法和同步语句块。假如再细的分类,synchronized可作用于instance变量、object reference(对象引用)、static函数和class literals(类名称字面常量)身上。synchronized void f() { /* body */ } 和void f(转载 2015-10-08 12:01:20 · 3998 阅读 · 0 评论 -
设计模式
一、代理模式package com.company;public class Main { public static void main(String[] args) {// Proxy proxy = new Proxy();// proxy.meeting();// proxy.office(); A原创 2015-12-21 10:37:08 · 474 阅读 · 0 评论 -
Java内存模型
JAVA内存模型CPU的运算速度比起内存的访问速度还要快几个量级,为了平衡这个差距,于是就专门为CPU引入了高速缓存,频繁使用的数据放到高速缓存当中,CPU在使用这些数据进行运算的时候就不必再去访问内存。但是在多CPU时代却有一个问题,每个CPU都拥有自己的高速缓存,内存又是所有CPU共享的公共资源,于是内存此时就成了一个临界区,如果控制不好各个CPU对内存的并发访问,那么就会产生错误,出现数原创 2016-02-15 20:30:04 · 506 阅读 · 0 评论 -
指令重排序
指令重排序重排序的目的是提高运行并发度,发生在编译器和处理器阶段,遵循as-if-serial语义(不管怎么重排序,单线程程序的执行结果不能改变),也就是重排序所带来的问题是针对多线程的。重排序发生的条件是A和B没有存在依赖关系,这里的依赖关系是指数据依赖关系和控制依赖关系两种。其中数据依赖表示两个以上操作访问同一个变量,且这两个操作中有一个为写操作。而控制依赖关系,比如if(a>0){i原创 2016-02-15 20:36:00 · 2773 阅读 · 0 评论 -
Java虚拟机(JVM)
Java虚拟机(JVM)是能够让计算机运行Java程序的虚拟且可以计算运作的机器。JVM有三个概念:规范文档、实现和实例。规范文档是规范地说明Java虚拟机必须有哪些实现的文档。单一的规范文档保证了所有的实现是彼此协作、能够共同使用的。一个Java虚拟机是满足JVM规范文档所要求的计算机程序。一个Java虚拟机实例是被编译成Java字节码且是计算机程序中正在运行的进程一个实现。Java运行时环翻译 2016-02-15 22:20:48 · 693 阅读 · 0 评论 -
Java基本类型和取值范围
Java基本类型Java 虚拟机中的整型类型的取值范围如下:一、 byte 类型:值为 8 位有符号二进制补码整数,默认值为零。对于 byte 类型,取值范围是从-128 至 127(-2^7 至 2^7-1),包括-128 和 127。说明: 取值范围是10000000-01111111,注意《1》第一位是符号位,1表示负数,0表示正数。《2》八位数值当中最小原创 2016-02-16 21:08:46 · 1841 阅读 · 0 评论 -
ServiceLoader跟DriverManager使用总结
ServiceLoader和DriverManager使用总结. 这篇文章不是专门讲ServiceLoader的用法,这篇文章也不仅是讲DriverManager的用法。他们两个一个是java.util包里面的类,另外一个在jdbc里面应用的很多。从表面上看起来他们之间似乎没有多少的联系。实际上DriverManager对ServiceLoader的使用可以达到一种巧妙的效果。在这里我想探讨一下转载 2016-02-22 12:55:35 · 1210 阅读 · 1 评论 -
java.util.ServiceLoader源码分析
java.util.ServiceLoader源码分析回顾:ServiceLoader类的使用(具体参考博客http://blog.csdn.net/liangyihuai/article/details/50716035):使用步骤基本为:1、编写一个接口(标准)。2、编写接口的实现类。3、在/src/META-INF/services下新建一个文件,文件名为接口的包名+原创 2016-02-22 14:39:29 · 2174 阅读 · 0 评论 -
java.lang.ThreadLocal实现原理和源码分析
java.lang.ThreadLocal实现原理和源码分析1、ThreadLocal的原理:为每一个线程维护变量的副本。某个线程修改的只是自己的副本。2、ThreadLocal是如何做到把变量变成副本的呢?不是clone,而是简单地new。具体一点就是对于变量A,每一个线程都会执行一个初始化方法initialValue(),这个方法在ThreadLocal中只是返回null,需要原创 2016-02-27 16:12:10 · 600 阅读 · 0 评论 -
Stream Processing: S4系统模型分析和关键源码读解
S4(Simple Scalable Stream System) 流数据处理系统是Yahoo!公司提出的,在2011年的时候成为Apache软件基金下的一个孵化项目,可惜的是在2014年的时候该孵化项目“退休”了,具体原因未知!!从这里可以了解它当前的状态信息:link. 阅读了所发表的论文S4:Distributed Stream Computing Platform之后,发现该系统模型有其独...原创 2018-12-17 09:48:24 · 981 阅读 · 0 评论