自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(60)
  • 收藏
  • 关注

原创 Java IO 读文件的各种方法总结

IO分为字节流和字符流,字符就是简单的字符串存储,从理伦上讲,在内存中所有的数据都是二进制,是一个字节一个字节的序列,所以字节流可以存储像图片、图像等文件。现在有一个文件,分别用字节流和字符流来实现。[b]1. 字符读取(一次读若干个数据)[/b][code="java"]FileReader reader = new FileReader(file);char buf[] =...

2016-01-01 15:00:14 130

原创 Hadoop理解

作为分布式系统而言,有两个重要内容(当然还有其它的内容,这里仅仅讨论hadoop的核心):分布式存储和分布式计算。分布式存储的原理:将一个大文件划分成若干部分,存储到不同的节点上(副本存储)。好处:1)由于有副本存储,某个节点的down机不会影响到整个集群的使用,数据还是可以保证完整性的; 2)大文件划分小文件存储,这样便于后面的处理。这是因为计算节点(存储节点是同一个概...

2015-12-25 15:50:41 148

原创 动态代理的应用

代理模式作为开发人员来讲,应该不会很陌生,它要做的事情很简单:屏蔽被调用方的实现过程。它在一类远程过程调用中,使用得非常广泛。具体的过程呢?调用方 A 被调用方BmethodA(){ getResult(){ call B.getResult(...

2015-12-22 17:30:43 188

原创 RPC 框架的设计思路

看过Hessian的部分源码,这里总结一点RPC的设计思路。RPC可以由下面两种思路来实现:[b]1. 基于HTTP协议来设计;2. 基于TCP/IP来设计。[/b]不管哪一种思路,本质都是一样的,下面就讲讲它们实现的思路。[b]1. 传输的内容是什么?[/b] 一般而言,我们需要传输接口名,方法名,参数,而这些参数可以放在一个类中序列化进行传 输。...

2015-12-19 15:11:28 146

原创 Java Restful

对于两个系统之间交互信息,有两种常见的方式:webservice和restful。webservice简单理解就是一个系统开放出一个接口供别人调用,它注重的是方法的调用。restful简单理解是通过抽象出网络资源,通过http来调用,它注重的是网络资源的抽象。今天看一下个restful的实现框架,以一个例子来看看。[b]1. 下载jersey jar包;[/b]...

2015-12-19 14:01:00 365

原创 request.getInputStream() 只能读一次的解决方法

我们知道request.getInputStream()只能读一次,如果下一次读,就会报告Stream closed的错误。下面是解决方法。[code="java"]InputStream input = request.getInputStream(); ByteArrayOutputStream bytebuffer= new Byt...

2015-12-17 12:17:22 779

原创 Tomcat7 编译并导入ecplise中运行

网上有很多这方面的文章,但大多数好像不太靠谱,至少按照上面的方法和步骤基本上不能跑起来的。下面记录我做的方法。[b]1. JDK版本要在7以下(我用的是JDK6来编译的),这个很重要。2. 网络要靠谱,因为在编译的时候要下载一些依赖包。[/b]步骤:1. 下载ant,将其要加到PATH路径中,测试可输入命令:ant -version;2. 下载tomcat7源码...

2015-12-17 09:10:12 89

原创 JAVA并发框架ReentrantLock与Condition

同步代码与同步代码块可以实现多线程的同步,JAVA并发框架提供另外了一个框架,它也能实现多线程的同步,即是Lock和Condition,Condition和Lock是配合在一起使用,从字面意思上看,Condition是条件锁,有了锁,为什么要引用条件锁呢?原因有两个:1.对一个共享资源有读和写的能力,如果读线程或写线程获取了Lock的权力,即有能力进入,但是如果里面没有内容,读也没有用,如果空...

2015-12-14 22:50:50 86

原创 java Hessian 版本冲突问题解决方法

今天在实际的项目发现了一个问题就是hessian的版本不兼容的问题。原始的项目用的是3.0.20版本,后面与另一个项目中用的是4.0.37版本,结果一直出错。解决的方法:[b]1. 下载Hessian 4.0.37的源码下来;2. 修改源码的package 名字,加一个数字就好;3. 导出jar包。[/b]这样在后面调用时就注意了,3版本就调用3版本的包,4...

2015-12-11 19:44:34 887

原创 ThreadPoolExecutor参数讲解

[b]1. 线程池可以节省创建多个线程带来的开销问题。[/b][b]2. 线程池的参数如下:[/b] [code="java"]public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, l...

2015-12-10 08:14:49 245

原创 Java RSA 加密 解密 签名 验签

[b]1. 加密的作用[/b]1)明文变密文(你不知道密钥是很难解密的);2)数据的一致性(hash值一样);3)数据的可信任性(验签)。[b]2. 两种不同的加密与解密[/b][b]1)对称加密[/b]:加密与解密使用相同的密钥,处理速度快;[b]2)非对称加密[/b]:加密与解密使用不同的密钥(生对生成),处理速度不及对称加密。[b]3.在非对称加密...

2015-12-09 10:01:31 501

原创 Java Xstream xml 与bean之间的转换

xml文件如下:[code="xml"] /WEB-INF/view/index.jsp /index.jsp /WEB-INF/view/index.jsp /index.jsp [/code]代码如下:[code...

2015-12-09 08:31:08 79

原创 XPATH 解析XML

[b]1. 表达式描述[/b]nodename 选取此节点的所有子节点 / 从根节点选取 // 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置 . 选取当前节点 .. 选取当前节点的父节点 @ 选取属性 [b]2. 路径组合表达式[/b] 组合多个路径表达式,扩大选择范围;例如: //book/title | ...

2015-12-09 08:28:24 85

原创 Java Dom4j 解析XML

Dom4j和JDom是很相似的,用起来十分方便。XML文件如下:[code="xml"] 123456 abc 456789 def [/code]代码如下:[code="java"]public static void main(String a...

2015-12-09 08:23:13 90

原创 Java JDom 解析xml

JDOM在解析XML在代码量之上比之前的方法(DOM和SAX要少很多了)。XML文件如下:[code="xml"] 123456 abc 456789 def [/code]代码如下:[code="java"]public static void ...

2015-12-09 08:22:52 94

原创 Java SAX 解析xml

在上一篇中[url]http://gaofulai1988.iteye.com/blog/2262673[/url],主要讲解了DOM解析xml,它最大的不足之处是要在解析之前要载入这个XML文件,如果这个文件很大,它的效率就不高了。后来有人提出了基于标签事件触发的方式来解析XML文件。什么意思呢?如果遇到一个那么它是一个标签的结束。这些特殊标志出现的时候,就会触发一个事件来处理。...

2015-12-08 18:13:42 91

原创 Java XML解析系列

Java解析XML有多种方式,因此需要分为几个不同的系列来讲。具体安排如下:1. DOM最基本解析XML;2. SAX基于事件解析XML;[url]http://gaofulai1988.iteye.com/blog/2262677[/url]3. JDOM不错的解析XML;[url]http://gaofulai1988.iteye.com/blog/2262680[/url]...

2015-12-08 18:00:52 103

原创 Java 背包算法计算从数组中找若干个数使其最接近某个数

背包的算法的动态方式如下:[code="java"]f(i,w) = max{ f(i-1,w), f(i-1,v-weight[i])+value[i] }[/code]状态转移方程理解如下:f(i,w)表示前i个物体面对容量为w时背包的最大价值,weight[i]代表物体i的重量(即重量),value[i]代表物体i的价值;如果第i个物体不放入背包,则背包的最大价值等于前i...

2015-12-08 17:38:29 1539

原创 Mysql 异常处理

在Java中异常处理的方法, try --- catch -- finally。那么在Mysql里面是如何来处理的呢? 步骤如下:1)关联异常信息变量;2)开启事务;3)关联变量判断。Mysql里面其实也提供了一些异常捕获的情况,常见的有以下几种:1) SQLEXCEPTION;2) NOT FOUNT;3) WARNING。语法格式[code="s...

2015-12-08 09:20:36 210

原创 Java 非线程安全的集合转线程安全

我们知道List, Set, HashMap都是非线程安全的,有时我们希望它们是线程安全的,如何来解决这个问题呢?在Collections中有方法使它们变成线程安全的。[code="java"] public static List synchronizedList(List list) public static Set synchronizedSet(S...

2015-12-08 08:30:00 195

原创 JDK Arrays sort

[b]1. List排序的调用[/b] [code="java"]Collections.sort() --> Arrays.sort --> MergeSort()[/code][b]2. 两种排序策略:Comparable 和 Comparator[/b] [code="java"] public static void sort(List list, ...

2015-12-07 21:12:10 78

原创 HashSet 源码解读

[b]1. HashSet底层是怎样实现的呢?[/b] 是HashMap,看看它的构造函数就知道了。 [code="java"]public boolean add(E e) { return map.put(e, PRESENT)==null; }[/code] 这里的[code="java"]PRESENT[/code]是什么呢?再看看它的定...

2015-12-07 20:48:25 76

原创 Java HashMap 遍历

我记得当时在Oracle面试时,面试人问我一个HashMap有几种访问方式,我答有两种:一种通过key,另一种是通过Entry。今天总结一下这两种遍历的方式。[b]1. 最基本的get(Object key)方法[/b] [code="java"] HashMap map=new HashMap(); map.put("name", "test1"); ...

2015-12-07 18:59:03 137

原创 Java HashMap源码解析

[b]1. HashMap内存储的元素是Entry,并且Entry是按照链表的形式来存储的。[/b][code="java"]transient Entry[] table; // 用数组来存储,它的原理是每个数组的元素都是一个链表头[/code]Entry的定义如下:[code="java"]static class Entry implements Map.En...

2015-12-07 18:33:55 69

原创 Mysql 存储过程

[b]1. 创建一个存储过程[/b][code="sql"]CREATE PROCEDURE T6125_Init()[/code][b]2. 删除一个存储过程[/b][code="sql"]DROP PROCEDURE IF EXISTS T6125_Init;[/code][b]3.最基本的格式[/b] [code="sql"] BEGIN END;...

2015-12-07 13:45:12 68

原创 Java LinkedList

List接口有两个实现,一个是ArrayList,另一个是LinkedList。从字面上就可以看出Array表示 的是数组,Link表示的是链表,区别一目了然,今天看看LinkedList的迭代器的实现。节点定义:[code="java"] private static class Node { E item; Node next; ...

2015-12-03 19:01:50 132

原创 Java ListIterator与iterator的区别

在上一篇中[url]http://gaofulai1988.iteye.com/blog/2261505[/url]介绍了ArrayList iterator的实现,今天再分析另外一个list中特有的迭代器ListIterator。看看它是如何new的呢。[code="java"]public ListIterator listIterator() { ret...

2015-12-03 18:51:21 109

原创 ArrayList 迭代器模式

在面试中,迭代器被问到了很多次,今天来总结一下。从一个例子说起。[code="java"] public static void main(String args[]){ List list=new ArrayList(); list.add(2); list.add(5); list.add(7); ...

2015-12-03 18:42:27 131

原创 C3P0 连接分析

最近在看C3P0的原理,还是将C3P0的源码导入到Ecplise中debug看得清楚多了。下面记录我debug的经历。1. 下载c3p0的jar和源码,这个百度吧。2. 导入jar和源码到java工程中,导入后,会发现有些错误的,把junit的类去掉,有的提示没有实现一些方法,就加进去,还有的提示要删除多余的实现方法,就删除掉吧,这样下来,基本上不报错了。3. debug的过程中,...

2015-12-01 19:05:12 117

原创 Mysql 自动提交

进入到新的一家公司后, 发现大家在mysql客户端上执行sql都不写commit,大家都习惯了这种写法,有一天来了另外一个DBA,环境变了,一早上update一个sql,大家发现怎么表被锁住了呢?后天一发现,新的DBA,把[b]autocommit[/b]给关掉了,查看的sql如下:[code="sql"]show variables like 'autocommit';[...

2015-11-30 10:38:54 182

原创 微信开发的原理

微信在现在的生活中,扮演着举足轻重的角色,现在怎么东西都在微信上运转得风生水起,如微信支付,微信购物,微信红包等等。那么微信开发的原理又是怎样的呢?这里要区分两个概念:[b]微信服务器[/b]和[b]应用服务器[/b][b]微信服务器是腾讯的服务器,它做的工作是转发的作用。应用服务器的使用是接收微信服务器的请求,处理逻辑,向微信服务器响应请求。[/b]所以整个示意图如下...

2015-11-30 10:10:45 461

原创 JAVA Timestamp 与Data的转化以及BigDecimal 保留两位小数

[b]1. BigDecimal 保留两位小数[/b]今天在项目中遇到这样的一个需求,计算的结果保留两位小数点,不要求进行四舍五入。直接上代码了,没有什么好说的。[code="java"]BigDecimal decimal = new BigDecimal("0.002");// 保留两位小数String str = new DecimalFormat("0....

2015-11-27 14:47:26 655

原创 java try catch finally return 继续

之前在博客中有一篇文章讨论过异常中return值的情况,有兴趣可以参见[url]http://gaofulai1988.iteye.com/admin/blogs/2259371[/url],当时的例子比较简单,今天来了特殊点的例子。在上例子之前,还是回顾以下之前的几个要点:[b]1. throw 后面的代码是不会执行的。 2. 不管是否有异常,都会执行finally。 3...

2015-11-27 13:45:12 113

原创 Java JDBC executeBatch 批量操作

对JDBC 的 CRUD操作,我相信对于每个开发人员来讲,是十分熟悉的,尤其是在小型公司的开发人员来讲,大部分的工作也就是这些了。但是对于一个大型系统而言,简单的CRUD是无法存活下来的,因为它的数据量极大,不是简单的几千条,几万条,有时基本在几十万条,甚至几百万条数据量。之前我们的业务也没有太多,简单的生成订单就是普通的insert操作,有一次发现,操作一个2w条的订单数量,前后花费的时...

2015-11-27 08:05:59 1283

原创 win7 Mysql 记录所有的查询语句

今天想把在数据库所有的操作都记录下来,就在网上查了一些方法,一般的说法是在my.ini中增加一名[code="sql"] log = "D:\log.sql"[/code], 关闭服务后,重新启动就出现了问题。后来,运维方面的人来帮我看了下,发现网上的一些说法根本是错误的!下面介绍正确的做法。[b]1. 进入到mysql的命令行界面;[/b][b]2. 执行下面这个...

2015-11-26 15:14:44 115

原创 java Exception return 值的讨论

今天来分析下java 中Exception的处理方式,我们都知道,它执行的顺序如下:[b]1. try:检查是否有异常发生;2. 如果有,则由catch来捕获;3. 不管是否有异常发生,都会进入到finally里执行。[/b]先记住下面的结论:[b]1. throw 后面的代码是不会执行的。2. 不管是否有异常,都会执行finally。3. 不管有多少个re...

2015-11-26 13:52:02 210

原创 Java WeakHashMap 分析

昨天在我们的系统中看到了这样的一行代码:[code="java"]private final Map CACHE = new WeakHashMap();[/code]对于[code="java"]WeakHashMap[/code]而言,之前还真的没有听过, :cry: 惭愧啊!晚上就好好的研究了下,这个不对不说说强引用、软引用、弱引用、虚引用以及垃圾回收了。[b]1. 强引...

2015-11-26 08:17:45 81

原创 Mysql 定时器

这篇文章主要教大家怎样写定时器,在Mysql中,有几点是需要注意的。1. 确定是打开了定时器[code="sql"] 用这个sql可以查询,我自己在本地上第一次查询是OFF show VARIABLES LIKE 'event%'; 如果是OFF,则用下面的命令进行设置 SET GLOBAL event_scheduler = 1;[/code]2....

2015-11-23 16:56:35 87

原创 Mysql 触发器

今天有同事问了一下mysql的触发器的用法,就写了一个简单的例子供参考。需求:当在一张表上进行插入操作后,需要在另外一张表上做备份操作。步骤1. 创建两张表[code="sql"]DROP TABLE IF EXISTS FIRST;CREATE TABLE FIRST(id INT);DROP TABLE IF EXISTS SECOND;CR...

2015-11-23 16:24:39 65

原创 加密与解密

我本身不是学密码出身的,但在工作中经常要使用加密与解密的东东,因为从事金融领域,没有办法,对安全性比较高,所以必需要接触到加密与解密的知识。在这一篇中,不具体讨论任何加密和解密的实现代码,只是从现实的角度去理解加密和解密。数据的安全性体现在以下几点上:1.数据加密;2.数据的完整性;3.数据的信任性。对于加密而言,就是明文加密成密文,你拿去了也没有用。现在有两种加密方式...

2015-11-18 18:12:33 118

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除