
java
文章平均质量分 74
Liuwenhao866595
这个作者很懒,什么都没留下…
展开
-
java打印
最近在弄发传真的,一直在研究怎么把word文档、pdf文件等等转换为tiff文件。因为虚拟打印机可以设置为打印到tiff文件,所以主要难在不知道如何打印这些格式的文件,走了很多弯路:word文档用了jcob来调用MS Office,也研究过永中Office,甚至PWS的个人版,但都觉得调用麻烦;pdf用dos命令来实现静默打印,但考虑到要部署在linux环境,也不爽啊。今天有点空,又继续找,找啊找...2010-03-15 15:39:44 · 132 阅读 · 0 评论 -
Java program idiom之 容器
Java常用的集合类型有List、Set、Map,容器一般也有线程安全与非线程安全之分,java.util包下的线程安全类一般都是废弃不用的,应该使用concurrent包下面的线程安全类。 1.1. 容器的一般使用A、声明容器时要指定泛型的类型,可避免编译器警告和强类型转换。 B、如果一个方法的返...2012-07-04 10:57:15 · 168 阅读 · 0 评论 -
rsync 核心算法的Java实现
rsync 算法场景:假设有两台计算机CA和CB,CA上有文件FA,CB上有文件FB,FA和FB是“相似的”。CA和CB通过低速通信链接连接,现在要把FA同步到FB上去,如何才能高效同步。 rsync 算法包含下面的步骤:1、CB把FB分割成固...2012-11-17 21:44:51 · 483 阅读 · 0 评论 -
非递归、固定量额外存储空间 遍历二叉树
原文发表于: http://coderbee.net/index.php/algorithm/20130618/231 题写出一个O(n)时间的非递归过程,输出给定的含n个节点的二叉树中每个结点的关键字,要求只能使用除树本身以外固定量的额外存储空间,而且在过程中不能修改该树,哪怕只是暂时的。 题目来自《算法导论》的一道习题。 树的遍历方式分类从树的深度分类树...2013-06-18 22:23:15 · 343 阅读 · 0 评论 -
JUC 原子类
原文地址: http://coderbee.net/index.php/java/20131117/581 volatile 变量volatile变量具有可见性,也就是说线程能够自动发现volatile 变量的最新值;对volatile变量进行操作不会造成阻塞。适用于:多个变量之间或者某个变量的当前值与修改后值之间没有约束。正确使用volatile变量的条件:对变...2013-11-20 22:57:41 · 318 阅读 · 0 评论 -
False Sharing 伪共享 – 译
原文地址:http://coderbee.net/index.php/basis/20131110/566翻译自:http://mechanical-sympathy.blogspot.com/2011/07/false-sharing.html伪共享内存在缓存系统里是以缓存行为单位存储的。缓存行是大小为2的整数幂的连续字节,典型是32-256字节。最普遍的缓存行大小是64...2013-11-20 22:59:34 · 173 阅读 · 0 评论 -
struts2 漏洞 和 缓存攻击
本文首先发表在我的独立博客站点: 码蜂笔记 http://coderbee.net/index.php/java/20130719/304 本文主要讲我对漏洞的探索和探索过程中发现的一个可以进行缓存攻击的坑。 问题struts2 的漏洞在网上已经够热闹了,各个技术站点都是头条显示,微博上也有大佬转发。 这个漏洞的危害行在于允许执行远程命令,直接攻击...原创 2013-07-19 21:37:32 · 261 阅读 · 0 评论 -
Java 内存模型 JMM
原文地址:http://coderbee.net/index.php/concurrent/20131219/650 JMM,Java Memory Model,Java 内存模型。什么是内存模型,要他何用?假定一个线程为变量var赋值:var = 3;,内存模型要回答的问题是:在什么条件下,读取变量var的线程可以看到3这个值?如果缺少了同步,线程可能无法看到其...2013-12-23 20:33:50 · 242 阅读 · 0 评论 -
内存关卡/栅栏 ( Memory Barriers / Fences ) – 译
原文地址:http://coderbee.net/index.php/concurrent/20131211/624 翻译自:Martin Thompson – Memory Barriers/Fences在这篇文章里,我将讨论并发编程里最基础的技术–以内存关卡或栅栏著称,那让进程内的内存状态对其他进程可见。CPU 使用了很多技术去尝试和适应这样的事实:CPU 执行单...原创 2013-12-23 20:37:37 · 429 阅读 · 0 评论 -
Java8 Striped64 和 LongAdder
原文链接:码蜂笔记 - Java8 Striped64 和 LongAdder 数据 striping根据维基百科的这段说明:In computer data storage, data striping is the technique of segmenting logically sequential data, such as a file, so tha...2014-05-18 16:41:53 · 307 阅读 · 0 评论 -
Java 8 新特性之 接口改进和Lambdas
本文首先发表在 码蜂笔记:http://coderbee.net/index.php/java/20130914/467 测试环境$ java -versionjava version "1.8.0-ea"Java(TM) SE Runtime Environment (build 1.8.0-ea-b106)Java HotSpot(TM) 64-Bit Ser...2013-09-14 16:44:39 · 169 阅读 · 0 评论 -
J.U.C 包
原文在:http://coderbee.net/index.php/java/20130927/491 概述J.U.C 包是java.util.concurrent包的简写。这个包在JDK5引入,大大增强了Java的并发特性。JDK7还引入ForkJoin框架。 该包提供的能力主要包括:可重入锁,具有原子性操作属性的类,线程池执行服务,调度执行服务,增强的线程安全...2013-09-27 17:37:57 · 214 阅读 · 0 评论 -
Java 8 之 java.time 包
原文:http://coderbee.net/index.php/java/20131015/503 包概述java.time 包是在JDK8新引入的,提供了用于日期、时间、实例和周期的主要API。java.time包定义的类表示了日期-时间概念的规则,包括instants, durations, dates, times, time-zones and periods。...2013-10-15 16:33:06 · 275 阅读 · 0 评论 -
JVM 运行时数据区
原文地址: http://coderbee.net/index.php/java/20131017/512 《深入理解Java虚拟机:JVM高级特性与最佳实践》-笔记 JVM运行时数据区根据《Java虚拟机规范》,JVM管理的内存如下:图片来自网络。其中绿色部分是所有JVM线程共享的,黄色部分是线程独立的。 程序计数器记录正在执行的虚拟机字节码...2013-10-17 22:59:12 · 146 阅读 · 0 评论 -
java.util.HashMap 源码解读及其进化
原文: http://coderbee.net/index.php/java/20131018/519 概述java.util.HashMap 是JDK里散列的一个实现,JDK6里采用位桶+链表的形式实现,Java8里采用的是位桶+链表/红黑树的方式,非线程安全。关于散列可以看这篇文章, 这篇文章主要是对JDK6和Java8里java.util.HashMap的一些...2013-10-18 16:47:49 · 193 阅读 · 0 评论 -
JVM 垃圾回收算法
原文: http://coderbee.net/index.php/java/20131031/547 《深入理解Java虚拟机:JVM高级特性与最佳实践》-笔记 一、概述垃圾回收,Garbage Collection,简称GC。GC需要完成三件事:哪些内存需要回收?什么时候回收?如何回收? 二、对象存活判断判断对象是否存活一般有两种...2013-11-01 09:32:27 · 133 阅读 · 0 评论 -
Java program idiom之 数组
数组是一种效率最高的存储和随机访问对象引用序列的方式,数组有固定的尺寸,是同一数据类型的集合。数组相比其他容器具有效率、类型和保存基本类型的优势,缺点是数组只是个存储机制,没有丰富的方法可用,也没有自动扩容的机制。 1.1. 基本类型与性能优势数组可以持有基本类型,而容器则不能,容器看起来能够持有基本数据类型,其实是通过自动装箱拆箱机制,把基本类型转为对应的包装类型...原创 2012-07-03 20:15:57 · 152 阅读 · 0 评论 -
java program idiom之 资源初始化与清理
源的初始化与关闭是非常常见的操作,也是很容易出错的地方。Java里一般使用try-catch-finally来处理这个问题,在JDK7增加了try-with-resource。1.1. try-catch-finally下面是个有错误的举例:public void copy_error(File src, File dst) throws IOException { Fil...原创 2012-07-02 16:39:03 · 180 阅读 · 0 评论 -
Java program idiom 之 String
1.1. String APIString对象是不可变的,那些看似改变了对象的方法其实是返回新的String对象,有一些方法使用时是要注意的。 A、substring、subSequence方法。String底层是使用字符数组来存储的,substring、subSequence方法返回新的String或Char...原创 2012-06-28 21:33:29 · 155 阅读 · 0 评论 -
JDBC 读取存储过程的多个结果集
关于JDBC 读取SQL Server存储过程的多个结果集来生成报表的解决方法,以前的一位同事已解决了,还写了文章发出来,被引用了很多次!只是自己觉得他写的代码比较复杂,意图也不够清晰,所以仔细阅读了jdk的API文档,给出下面的代码,[code="java"]DBConn = db.connectjdbc(Database);stmt = DBConn.prepareCall(SQL...原创 2010-09-30 14:47:28 · 275 阅读 · 0 评论 -
JSTL XML 学习备忘
把三个文件放在同一目录下。JSP页面[code="jsp"]Insert title here 使用c:set 设置字符串字面量 字符串字面量: 使用c:set 设置XML节点集 用户总数: 迭代输出前两个(根据节点的位置过滤): 姓名:;姓...原创 2011-05-22 11:34:21 · 167 阅读 · 0 评论 -
单例模式
最近看到项目组SE写的单例:[code="java"]private static SingleTon instance = null;public static SingleTon getInstance() { if(instance == null) { return instance; } else { synchronized(instan...原创 2011-05-22 13:12:33 · 123 阅读 · 0 评论 -
MINA 基础知识
MINA是简单的、功能完全的网络应用程序框架,提供:l 为不同的传输类型提供统一的API。u 用Java NIO实现TCP/IP和UDP/IP。u 用RXTX实现串行通信。u VM内部的管道通信。u 实现自己的传输类型。l Filter接口作为扩展点,类似S...2011-08-20 16:14:33 · 202 阅读 · 0 评论 -
MINA 简单示例
构建一个TCP的时间服务器和客户端来了解构建基于MINA的应用程序的步骤。 需要的最小jar包:日志是必须的,log4j.properties 配置为:log4j.rootCategory=DEBUG, stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppende...2011-08-20 16:25:08 · 142 阅读 · 0 评论 -
MINA 协议解码过滤器
为什么使用协议解码过滤器 ProtocolCodecFilter?1) TCP保证所有的包以正确是顺序传递,但不保证发送方的一次写操作在接收方产生一次读操作。在MINA的术语中:没有ProtocolCodecFilter,发送方的一次IoSession.write(Object message)导致接收方多次messageReceived(Io...2011-08-20 16:54:27 · 423 阅读 · 0 评论 -
Java Socket Http
用Java Socket 实现发送HTTP请求和读取响应。 public class LearnHttp { private static final byte CR = '\r'; private static final byte LF = '\n'; private static final byte[] CRLF = {CR, LF}; public stat...2011-09-08 16:45:07 · 180 阅读 · 0 评论 -
Map接口迭代
以前也曾看到过这种迭代方式,在实际编码时却一直忘了,今天特地记下来:[code="java"]for(Entry entry : map.entrySet()) { System.out.println(entry.getKey() + ":" + entry.getValue());}[/code]以前一直都是这样写的:[code="java"]for(S...原创 2011-06-12 10:48:12 · 151 阅读 · 0 评论 -
Windows 下 JNI 备忘
1、编写需要使用Jni的Java类文件[code="java"]public class JniCall { static { System.loadLibrary("testJNA"); } public native static int add(int first, int second); public static void main(Strin...2011-03-25 09:20:57 · 130 阅读 · 0 评论 -
JNA示例
[b]使用JNA简单调用DLL里的函数[/b]1、在VC下创建一个动态链接库项目testJNA2、在头文件里声明函数[code="c"]extern "C" _declspec(dllexport) int add(int first, int second);[/code]红色字体部分是必须的,包括定义结构体时也需要。应该是说此函数是发布的。3、在源码里实...原创 2011-03-25 09:37:14 · 336 阅读 · 0 评论 -
同步方法与同步代码块的区别
当JVM执行一个方法时,执行中的线程识别该方法的method_info结构是否有ACC_SYNCHRONIZED标记设置,然后它自动获取对象的锁,调用方法,最后释放锁。如果有异常发生,线程自动释放锁。同步化一个方法块会超过JVM对获取对象锁和异常处理的内置支持,要求以字节代码显式写入功能。如果使用同步方法读取一个方法的字节代码,就会看到有十几个额外的操作用于管理这个功能。[code="ja...原创 2011-03-25 09:57:01 · 304 阅读 · 0 评论 -
finally语句的执行时刻
以前虽然知道在try finally语句中,即使try块里有return语句,finally语句也会在return语句执行之前执行,却不知道return表达式与finally语句的执行顺序。[code="java"]public class Test { public static int a() { int i = 0; try { i++; ...原创 2011-03-31 14:39:08 · 166 阅读 · 0 评论 -
java.util.ServiceLoader demo
首先引用API中的说明文档: 一个简单的服务提供者加载设施。 服务 是一个熟知的接口和类(通常为抽象类)集合。服务提供者 是服务的特定实现。提供者中的类通常实现接口,并子类化在服务本身中定义的子类。服务提供者可以以扩展的形式安装在 Java 平台的实现中,也就是将 jar 文件放入任意常用的扩展目录中。也可通过将提供者加入应用程序类路径,或者通过其他某些特定于...原创 2012-05-25 16:45:09 · 163 阅读 · 0 评论 -
致力于提高Java初级程序员技能的一个努力
工作近3年,完全从零开始开发的项目较少,基本上都是接手别人的项目,在阅读别人的代码时,发现有些错误总是重复出现,这些错误有的是很低级的。所以最近在写一些文档,把自己知道的容易出错的、一些更好的编码方式和以前记录的一些笔记记录下来,希望对刚入门的程序员有所帮助。 附件是我目前完成的,在github上建立了一个项目:https://github.com/wen866595/program_id...原创 2012-06-19 20:58:34 · 148 阅读 · 0 评论 -
Java7 Zip file system, FileVisitor
Java7 的文件API可以把zip、jar文件看作是一个文件系统,访问文件系统都可以使用Path及相关的类进行。 下面是创建zip压缩文件的示例: private static void create() { Map<String, String> env = new HashMap<>(); env.put("create", "true"...原创 2012-02-21 22:56:08 · 301 阅读 · 0 评论 -
mybatis 批量插入插件
背景项目中有个设计不合理的表,总共 8 个字段,有 5 个索引,有几个索引字段还是 32 位的字符串。该表数据量已达 1 亿,最近每天新增 100 万。根据日志看,有次用户上传一个有 200 行记录的 excel,需要往这个表插入 3940 条记录,耗时 72 秒。这么大延迟是没法接受的。 要分析数据库方面的问题,首先是找 DBA 分析下表的情况,说跟以往没多大区别,只是跟这个...2015-08-03 20:40:03 · 741 阅读 · 0 评论