java
文章平均质量分 83
chaofanwei
这个作者很懒,什么都没留下…
展开
-
javacc学习总结
在学javacc的时候,发现一个问题,见下:Example.jj文件PARSER_BEGIN(Example)public class Example { public static void main(String args[]) throws ParseException { Example parser = new Example(System.in);原创 2014-05-11 21:32:06 · 3084 阅读 · 0 评论 -
关于Thread类中三个interrupt方法的研究与学习
先看三个方法原型: public void interrupt(); public boolean isInterrupted(); public static boolean interrupted(); 一、先说interrupt()方法,看注释 Interrupts this thread. Unless the current thread is interrupt原创 2014-02-13 12:52:59 · 3649 阅读 · 0 评论 -
三、基于HTTPS协议的12306抢票软件设计与实现--垂直查询效果分享
一、基于HTTPS协议的12306抢票软件设计与实现--实现效果二、基于HTTPS协议的12306抢票软件设计与实现--相关接口以及数据格式三、基于HTTPS协议的12306抢票软件设计与实现--垂直查询效果分享原创 2014-02-12 14:08:49 · 5696 阅读 · 4 评论 -
一、基于HTTPS协议的12306抢票软件设计与实现--实现效果
一、基于HTTPS协议的12306抢票软件设计与实现--实现效果二、基于HTTPS协议的12306抢票软件设计与实现--相关接口以及数据格式三、基于HTTPS协议的12306抢票软件设计与实现--垂直查询效果分享最近考虑到要过年回家买票,想到12306的反应迟钝,卡死、、,我就气愤,于是想着闲着也是闲着,索性再把我毕业答辩时所做的12306抢票软件给更新下,还是用自己的抢票软件来抢票吧,要不还是的站着回去,哎哎,只怪外出打工者太多,火车太少啊。好了,步入正题吧,先看看我最近的成果吧。原创 2014-01-23 17:20:01 · 21619 阅读 · 13 评论 -
二、基于HTTPS协议的12306抢票软件设计与实现--相关接口以及数据格式
一、基于HTTPS协议的12306抢票软件设计与实现--实现效果二、基于HTTPS协议的12306抢票软件设计与实现--相关接口以及数据格式三、基于HTTPS协议的12306抢票软件设计与实现--垂直查询效果分享实现效果:http://blog.csdn.net/chaofanwei/article/details/18709415 直接步入正题吧,在这主要想说下现在的12306各个功能的接口以及数据格式。主要分为登录,获取联系人,查票,预定,查询未完成订单五个模块。 一、原创 2014-01-25 16:04:32 · 14259 阅读 · 12 评论 -
关于java线程池的研究-Future与FutureTask
Future是一个接口,代表可以取消的任务,并可以获得任务的执行结果 主要方法 1、boolean java.util.concurrent.FutureTask.cancel(boolean mayInterruptIfRunning) 解释: Attempts to cancel execution of this task.原创 2013-12-13 16:03:25 · 4756 阅读 · 0 评论 -
关于java中线程池的研究
先看类图:总结如下:Callable 代表一个任务,最后返回一个值Future 代表一个可以取消的操作FutureTask 是最简单的Future实现,可以传进来runnable或者Callable,入口是run方法(在当前线程中执行,可以放在Thread里面执行)executor 是一个接口,定义一个execute方法,执行runnableExecutorService继承exe原创 2013-12-12 18:20:17 · 1934 阅读 · 0 评论 -
关于主机多IP和服务端口绑定IP的研究
在网络编程中,经常需要在服务器里开一个端口,这里有一个问题,这个端口是开到哪个IP上面了,因为对于服务器来说经常是不止一个IP的,一个是127.0.0.1,一个是内网IP,比如192.168.1.3,一个是外网IP,比如211.19.56.39。对于开发着来说,经常会忽略绑定到具体某个IP上面,类似于下面的代码 ServerSocket serverSocket = new ServerSo原创 2013-11-28 16:45:56 · 7557 阅读 · 0 评论 -
关于System.getProperty("user.dir")的研究
记得之前看过java里面调用系统的user.dir属性,印象中返回的就是当前用户工作目录,即在哪个地方启动的java程序,返回就是当前目录。但是在项目里面,看到同事用到这个东西,目的是想获取项目工作目录,即bin文件夹和lib文件夹的上层,我觉得就有问题,于是现在用了一点时间,特意测试了一下,果不其然,如我之前说的一样,详细见下文。 首先看java代码public clas原创 2013-11-12 10:55:21 · 35325 阅读 · 1 评论 -
map.get(0)和spring注入构造方法引用bean的问题
前几天遇到两个比较可笑的问题,现在总结起来,还觉得比较滑稽,一个是map.get(0),另一个是spring在构造bean时在构造方法里面引用别的bean的问题。 首先map.get(0)的问题应该是用惯了list的get方法。看例子@Test public void test22(){ Map map= new HashMap(); map.put("one原创 2013-11-12 08:53:21 · 4323 阅读 · 0 评论 -
关于java中位运算的研究
位运算,早些时候,在大学计算机原理的时候学过,也在处学java的时候也学过,但只是了解,并未真正在项目里面使用过(其实也用过一次,在给学校做项目的时候,用java的位运算进行位移实现加密的功能),到现在因为项目的需要,网络通信,不得不再次进行了解java的未运算,下面简要说下吧。 位运算符包括: 与(&)、非(~)、或(|)、异或(^) &:当两边操作数的位同原创 2013-11-09 16:16:38 · 2600 阅读 · 3 评论 -
深入理解java虚拟机(二):java内存溢出实战
深入理解java虚拟机(一):java内存区域(内存结构划分)按照java内存的结构,发生内存溢出的地方常在于堆、栈、方法区、直接内存。1、堆溢出堆溢出原因莫过于对象太多导致,看代码。package baby.oom;import java.util.ArrayList;import java.util.List;/** * java 堆溢出 * VM原创 2014-02-19 13:13:07 · 9158 阅读 · 3 评论 -
深入理解java虚拟机(六):java垃圾收集分析实战(内存分配与回收策略)
深入理解java虚拟机(一):java内存区域(内存结构划分)深入理解java虚拟机(二):java内存溢出实战 深入理解java虚拟机(三):String.intern()-字符串常量池深入理解java虚拟机(四):对象存活判定算法和垃圾收集算法深入理解java虚拟机(五):hotspot垃圾收集算法实现 试验环境jdk 1.6.0_37。原创 2014-02-24 18:20:55 · 7974 阅读 · 2 评论 -
深入理解java虚拟机(一):java内存区域(内存结构划分)
图一:java内存结构划分由上图可知,java内存主要分为6部分,分别是程序计数器,虚拟机栈,本地方法栈,堆,方法区和直接内存,下面将逐一详细描述。1、程序计数器线程私有,即每个线程都会有一个,线程之间互不影响,独立存储。代表着当前线程所执行字节码的行号指示器。2、虚拟机栈线程私有,它的生命周期和线程相同。描述的是java方法执行的内存模型:每个方法在执行的同时多会创建原创 2014-02-18 17:45:12 · 28289 阅读 · 7 评论 -
javacc-LOOKAHEAD MiniTutorial 翻译
本文翻译自\javacc-5.0\doc\lookahead.html章节。上文:http://blog.csdn.net/chaofanwei/article/details/255410651、LOOKAHEAD是什么 lookahead就是当语法分析器从词法分析器里取token时,需要取多少个才能让分析器正确的走下去。例一 void Input() :翻译 2014-05-11 21:05:09 · 3426 阅读 · 0 评论 -
编译原理与javacc初探
1、前序 真是书到用时方恨少啊,在大学的时候,虽然学过编译原理,但当时真是不懂啊,只是为了应付考试,死记硬背了一点点。现在呢,由于工作上的需要,不得不弥补一下啊。 这两天把编译原理的书又看了一遍,其实也就是主要看了文法,词法分析,语法分析而已,为了备忘,赶紧先记一下吧。2、定义 词法分析,就是把源码中的一行行代码按照事先规定好的格式分隔成一个个单词符号(to原创 2014-05-11 14:21:33 · 6404 阅读 · 0 评论 -
class常量池陷阱-百看不如一战
今天在修改现场项目时,遇见一个特别值得深刻记住的问题,说大也不大,其实就是class常量池的问题。 场景是这样的,现场原来已经部署了一套软件,现在呢,软件有了一点问题,于是我在本地源代码里面添加了几行日志后,编译成class文件后,替换现场的class文件,重启现场的程序后,发现问题更严重了,直接报文件找不到异常,试了好多次都不行。 于是,我在多处添加日志,发原创 2014-04-24 19:54:03 · 2904 阅读 · 1 评论 -
同步容器、并发容器、阻塞队列、双端队列与工作密取
在多线程的开发中经常会碰到数据的并发修改,并发存取,因此正确的使用不同的容器很关键,直接影响到数据的正确性。下面主要记录下三种重要的队列,以及一种非常使用的双端队列。1、同步容器 主要代表有Vector和Hashtable,以及Collections.synchronizedXxx等。 锁的粒度为当前对象整体。 迭代器是及时失败的,即原创 2014-03-23 13:46:46 · 3992 阅读 · 0 评论 -
利用btrace在线监控java程序状态
btrace介绍 下载地址:https://kenai.com/projects/btrace/downloads/directory/releases/ 选择版本进行下载,这里下载的是release-1.2.4 /btrace-bin.zip 这两天在调试程序时,发现一个比较好用的工具-btrace,能够线上监控程序状态,获取运行时数据信息,如方法返原创 2014-03-01 17:25:46 · 14496 阅读 · 0 评论 -
深入理解java虚拟机(五):hotspot垃圾收集算法实现
深入理解java虚拟机(一):java内存区域(内存结构划分)深入理解java虚拟机(二):java内存溢出实战深入理解java虚拟机(三):String.intern()-字符串常量池深入理解java虚拟机(四):对象存活判定算法和垃圾收集算法 本文所讲的是sun hotspot虚拟机实现,主要讲解Serial,ParNew,Parallel Scavenge,Serial原创 2014-02-20 15:33:51 · 6631 阅读 · 2 评论 -
深入理解java虚拟机(四):对象存活判定算法和垃圾收集算法
深入理解java虚拟机(一):java内存区域(内存结构划分)深入理解java虚拟机(二):java内存溢出实战 深入理解java虚拟机(三):String.intern()-字符串常量池 程序计数器、虚拟机栈、本地方法栈3个区域随线程生,随线程而灭;栈中的栈帧随着方法的进入和退出而有条不紊的执行这出栈和入栈操作。每一个栈帧中分配多少内存基本上是在类原创 2014-02-20 10:28:17 · 7021 阅读 · 5 评论 -
深入理解java虚拟机(七):java垃圾收集分析总结
深入理解java虚拟机(一):java内存区域(内存结构划分)深入理解java虚拟机(二):java内存溢出实战 深入理解java虚拟机(三):String.intern()-字符串常量池深入理解java虚拟机(四):对象存活判定算法和垃圾收集算法深入理解java虚拟机(五):hotspot垃圾收集算法实现 深入理解java虚拟机(六):java垃圾收集分析原创 2014-02-26 15:56:47 · 6991 阅读 · 2 评论 -
深入理解java虚拟机(八):java内存分析工具-MAT和OQL
深入理解java虚拟机(一):java内存区域(内存结构划分)深入理解java虚拟机(二):java内存溢出实战 深入理解java虚拟机(三):String.intern()-字符串常量池深入理解java虚拟机(四):对象存活判定算法和垃圾收集算法深入理解java虚拟机(五):hotspot垃圾收集算法实现 深入理解java虚拟机(六):java垃圾收集分析实翻译 2014-02-27 17:38:59 · 7347 阅读 · 1 评论 -
深入理解java虚拟机(三):String.intern()-字符串常量池
深入理解java虚拟机(一):java内存区域(内存结构划分)深入理解java虚拟机(二):java内存溢出实战 看源码: public native String intern(); Returns a canonical representation for the string object. A pool of strings, initially empty原创 2014-02-19 14:47:44 · 14762 阅读 · 3 评论 -
nexus windows启动脚本分析
@REM @if "%WRAPPER_DEBUG%" == "" @echo offif "%OS%"=="Windows_NT" goto beginecho Unsupported Windows version: %OS%pausegoto :eof:beginsetlocal enableextensionsset DIRNAME=%~dp0 获取脚原创 2013-11-22 17:56:32 · 2590 阅读 · 1 评论 -
关于log4j的研究
虽然用了老长一段时间的log4j了,基本的配置也都在项目里面使用了,但总还是会有一些问题时不时的摆在自己面前,还有有时候想修改一下输出格式,还的在网上搜,于是最近研究了一下,总结如下: slf4j是java日志的接口,下面有好多实现,比如log4j,commons-logging,logback,jdk-log,如下图:因为slf4j是接口日志包,所以在具体的项目里面可以选择原创 2013-11-22 10:47:36 · 2646 阅读 · 0 评论 -
深入java inputstream 源码看read具体如何操作
理解java世界的inputstream的read()和read(byte[])方法总结:1、单纯的InputStream是一个抽象类,实际在使用时一般都是InputStream的子类,比如在socket里面的SocketInputStream。2、空方法:available() 一直返回0,close()、mark(int readlimit)什么都没有操作,markSupporte原创 2013-10-24 17:39:06 · 9716 阅读 · 5 评论 -
关于java 中流读取时遇到的阻塞和返回-1的问题探究
最近在做一些关于网络方面的开发,常用到java中流的读取,其中有一个问题困扰了我好久,就是流的阻塞和返回-1的问题。 案例1、看代码:package io;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.Serv原创 2013-10-24 20:38:16 · 4823 阅读 · 1 评论 -
缓存-ehcach使用以及simplepagecache的使用
一般在项目中都要用到缓存,比如hibernate一级、二级缓存,对象缓存,方法缓存,页面缓存,浏览器缓存等等。这里主要说下我在上个公司用到的使用ehcach方法缓存(分布式缓存)和simplepagecache页面缓存,使用simplepagecache的目的是由于实现能够随时删除指定的页面缓存以及查看页面的访问次数。 下面首先说下方法缓存,看ehcache.xml文件原创 2013-10-16 21:17:20 · 5794 阅读 · 0 评论 -
负载均衡与集群之nginx+tomcat+memcached
Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。 近年来nginx越来越流行,很多网站都开始用nginx来做web代理,以及原来的大公司也都在考虑用nginx来代替apache和resign。由于我在上个公司时,一个电子商务原创 2013-10-14 20:28:15 · 8187 阅读 · 2 评论 -
java中异常总结-值得一看
本文要点:1、Throwable把错误进一步划分为 java.lang.Exception 和 java.lang.Error. java.lang.Error 用来处理系统错误2、所有继承自RuntimeException的异常都被称为非检查型异常3、只有在try里面是有System.exit(0)来退出JVM的情况下finally块中的代码才不会执行。4、finalize()原创 2013-10-13 08:27:41 · 3006 阅读 · 0 评论 -
负载均衡与集群之apache+tomcat
具体的负载均衡是什么意思,我就不详细说了,网上搜下便有,简单的说就是把接受到的请求按照设定分发到后台集群中不同的服务上。 集群的意思也比较简单,就是多台服务器对外提供一致的功能,在外界看来,就是一个。但在内部,则有很多个相似的服务器。 这里再说一下正向代理和反向代理吧。 正向代理 是一个位于客户端和原始服务器(origin server)之原创 2013-10-11 22:07:47 · 3086 阅读 · 0 评论 -
JVM 内存布局以及垃圾收集及管理详解
最近在学习周志明的《深入理解JAVA虚拟机》,首先最实用而且也是我最想了解的就是java的内存布局,也学到了许多,借此给大家分享一下。 JAVA的内存布局主要分为 方法区,虚拟机栈(VM Stack),本地方法栈(Native Method Area),堆(heap),程序计数器(Program counter register)。其中方法区和堆是线程共享的,而栈和程序计数器是每个原创 2013-09-25 21:29:40 · 3403 阅读 · 0 评论 -
全文索引-lucene,solr,nutch,hadoop之solr
上一节大概讲了一下lucene,但真正运用在项目中的并不多,运用的最多的当属于solr,solr是对lucene的封装,形成一个独立的服务,专门提供索引,分词,搜索的服务,一般在项目中,大概的布局也是这样,项目一般分好多个模块,而搜索则使用solr专门提供一个服务,别的模块需要使用搜索的功能时,则使用solrj 来调用solr的搜索功能获取结果。 而且solr已经默认启用了近实时搜索的功原创 2013-10-10 20:40:38 · 3670 阅读 · 2 评论 -
全文索引-lucene,solr,nutch,hadoop之lucene
最先接触全文索引,还是在大学的时候,要给学校做一个搜索的项目,当初需求是能够提供类似百度的关键词搜索,但当时由于本身技术不行,虽然当时在网上找了一下资料,也看到了lucene,但当时学习的话,时间还是不够,而且有的难度,但当时已经知道可以用lucene来实现所需要的需求(当时项目中采用的方案是数据库多列合并like)。 后来就开始学习lucene,才知道什么是全文索引,由于luce原创 2013-10-09 20:52:08 · 10116 阅读 · 4 评论 -
windows平台下用eclipse开发c和c++程序
既然用eclipse进行开发c程序,因为eclipse是用java开发的,所以如果允许eclipse那就肯定的用到jdk。而用eclipse开发c程序,首先的安装CDT,其实也就是eclipse的c插件,就是让eclipse具有开发c程序的一些快捷功能,比如能使eclipse在新建项目的时候具有 new c project 和new c++ project ,以及调用c或c++编译器编译运行。而原创 2013-09-20 11:10:44 · 22541 阅读 · 2 评论 -
深入java SocketInputStream看read具体如何操作
在网络编程中,常用的操作莫过于读写了,最重要的,也是最经常让程序员犯迷糊的地方。想要具体理解,当然还是看源码,看下面代码:ServerSocket serverSocket = new ServerSocket(4887); Socket client= serverSocket.accept(); InputStream is= client.getInputStream原创 2013-10-24 18:40:20 · 20060 阅读 · 2 评论 -
java classload类 源码
java classload类源码(jdk1.7.0_03)/* * Copyright (c) 1994, 2011, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * * *原创 2013-10-18 21:55:42 · 3169 阅读 · 0 评论 -
java URLClassLoader类源码
java URLClassLoader类源码(jdk1.7.0_03)/* * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * *原创 2013-10-18 21:58:28 · 3732 阅读 · 0 评论 -
守护进程与java中的守护线程使用
守护进程,也就是通常说的Daemon进程,是Linux中的后台服务进程。它是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程常常在系统引导装入时启动,在系统关闭时终止。Linux系统有很多守护进程,大多数服务都是通过守护进程实现的,同时,守护进程还能完成许多系统任务,例如,作业规划进程crond、打印进程lqd等(这里的结尾字母d就是Daemon的原创 2013-11-08 09:34:37 · 11369 阅读 · 1 评论