- 博客(14)
- 资源 (8)
- 问答 (16)
- 收藏
- 关注
原创 java 的线程安全
现代CPU基本都是多核,支持多线程工作的,每个CPU都有自己的高速缓存,多个CPU之间通过缓存一致性与主内存进行交互,Java的每个线程都有自己的工作内存,每个线程之间通过Java内存模型来和主内存交互,当多个线程同时操作或者共享同一个可变变量时,就有了我们经常提到的线程安全问题。 解决线程安全的方案有几种,synchroni...
2014-12-30 14:43:37 89
原创 JVM ClassLoader
JVM在加载类的时候,都是通过ClassLoader的loadClass()方法来加载class的,loadClass(String name)方法 class在被虚拟机加载开始,到被卸载出内存主要经过 加载,验证,准备解析 初始化,使用,卸载几个阶段。 每个ClassLoader都维护了一份自己的名称空间, 同一个名称空间里不能出现两个同名的类。为了实现jav...
2014-12-25 16:33:20 109
原创 minor Gc ,Full Gc
在发生Minor gc之前,虚拟机会先检查老年带最大连续可用空间是否大于新生代的总和,假如大于,那么这个时候发生Minor Gc是安全的,假如不大于,那么需要判断是否允许担保失败,假如允许,则继续判定老年带连续可用空间是否大于平均晋升到老年带对象的平均值,如果大于,这个时候可以发生Minor GC ,如果小于,则需要做一次Full Gc,通常会把HandlePromotionFailu...
2014-12-24 17:22:04 436
原创 Java的主要垃圾回收器
对象的可达性是判断一个对象是否需要进行垃圾回收的依据,即Gc root 与对象之间是否具有可达的路径,如果没有,则表明这个对象可以进行回收,对象被放到F-Quence的一个队列里,JVM会启动一个优先级较低的线程来对其进行回收。 主要的垃圾回收算法有:标记--清除法:把可回收的对象一一打上标记,然后回收,这样做的缺点会产生不少内存碎片。 ...
2014-12-24 16:33:42 100
原创 JVM的内存结构的一点理解
Java语言把内存的管理交给了JVM自己来做,向比较C++而言,一定程度上,简化了程序的开发,应为它的内存管理是JVM自己去主动做的,不需要程序员自己干预。然而,也正应为如此,一旦发生了内存泄漏和溢出等问题,调试起来也比较麻烦。所以,对JVM的内存结构还是需要有一定的理解。 JVM把程序分成了如下几块内容:方法区,堆,栈,程序...
2014-12-24 11:30:36 96
原创 如何实现数据库的Sql注入拦截的一点想法
Sql注入攻击是一种比较常用的攻击手段,通常我们比较难以界定,所以,做防控也是比较困难的,开发的时候,需要考虑代码被Sql注入的可能,业界通用的做法是配置黑白名单或者规则库,这是一种解决方案,然而这种解决方案对于使用起来成本还是挺高的,特别对于不是特别懂的人难于配置。 我想,这样一种思路:一个系统内的Sql语句的数量是有限的,那么我们可以把所有的SQl都收集起来,...
2014-12-23 11:51:33 404
原创 利用生产者消费者模式实现串行的任务并行化
试想,一个省有100个处理节点需要监控,全国加起来有上1000,如果我们需要对这些节点进行监控,或则向他们发送处理莫个任务的指令,或者中断,或者定时执行,立即执行 需要怎么处理? 我们知道,如果我们直接这样做,指挥者说你去做任务A,当你还没结束时,指挥者又说你去做任务B,或者说任务C需要定时执行,这样的话,任务的执行者将会非常的忙碌,苦不堪言。 通过...
2014-12-22 17:48:17 341
原创 关于Linux的Ulimit参数
JVM 64位平台与32位平台的差异 64位虚拟机需要由于指针的膨胀和变量的对其补白,需要比32为更加大的内存,一般为10%-30%;而且处理性能要比32位下降15% 但是由于有些平台需要大于4G的内存,这个时候他们需要64位虚拟机,那么怎么办呢,可以对启用指针压缩功能(-XX:+UseCompressedoops),这样动态植入压缩指令可以节省内存,但是却会增加执行代码的数量。所以没有一...
2014-12-22 12:13:20 191
原创 一种表格数据比对的方法
假设有连个库,一个是生产库,一个是备份库,在一个特定的时间定,比较备份库与生产库的数据是否一致,用Java实现怎么样做效率比较高? 在单进程的情况下,原来做过这样的设计:利用conCurrentHashMap来实现比对。 一个线程负责从A库抽取数据,每行数据构造成一个Hash对,Key采用:主键+列相加的Hashcode,value采用key来做,线程B负责...
2014-12-19 16:59:07 450
原创 基于Oracle的数据库审计系统
通常,应用程序访问数据库,执行各种各样的业务SQL或者存储过程,都会对数据产生影响,为了使我们的数据库更加安全,都需要我们在对来访问的各种工具软件或者应用进行合理的管控或者授权,对他们所做的操作进行审计,这样才能增加数据库的安全性 我们都知道,想要执行一条SQl,首先要做的就是先登录数据库,不管是匿名还是有帐户的,都是要登录,登录也可以采用不同的软件,有开源...
2014-12-19 15:36:56 1147
原创 一种文件完整性校验的方法
通常,运维人员会在系统上安装杀毒软件,用来做病毒防护。其实病毒最基本的特征是对文件系统的部分或则全部做了改动,假如我们开发这样一个程序,定时对文件系统的改动进行计算,定期或不定期生成报告或发送告警信息,也一样可以实现防病毒功能,主要可以用来检测系统是否被改动过。 这个功能类似Linux系统上一款比较著名的软件tripwire ,用来检测Linux的文...
2014-12-18 17:49:41 2065
原创 使用Java代理来实现对JDBC驱动的一些扩展
我们都知道,编程语言在与数据库打交道的时候,中间需要一个Driver,这个驱动,一般由数据库厂商开发提供,根据不同的数据库版本而提供不同版本的驱动,Oracle数据库对Java的版本就有好几种:比如Ojdbc14.jar等,这些驱动,通常实现了有JSR定义好的接口规范,比如Java.sql.connection,java.sql.Driver;接口等。 ...
2014-12-18 16:25:44 410
原创 hadoop学习笔记之七:hadoop与Mongodb结合
mongodb是NoSQl领域里非常流行的一款非关系型数据库,提供了强大的分片存储与查询功能,用来做历史数据(日志)存储与查询比较适合,本身也提供了mapreduce功能,但是并不是任何时候Mongodb的使用者都会使用分片功能,更大的可能是使用副本集的方式(有时候机器并不多),而Hadoop提供了HDFS和分布式计算的功能,我们可以利用hadoop的MapReduce来取代...
2014-12-02 17:24:08 932
原创 hadoop学习笔记之六:一些优化点
hadoop 性能调优 1调优主要集中在另个方面 A 减少运算时间 B减少磁盘空间占用率 CIo方面的优化 2 Hadoop自身会将Task分配给正在空闲的节点去做,这样可以充分利用资源,并且会将Map任务分配给InputSplit所在的集群,以减少IO的开销,提升运算速度。 3我们知道,在编写MapReduce程序时,Map的中间输出结果可能会很多,很大,对其进行压缩可以减少...
2014-12-02 10:16:12 112
java 做的桌面程序可以打包成EXE,但能打包成MSI安装吗?
2010-10-27
有没有办法在不改变web程序源代码的基础上加入一个自己的过滤器?
2010-08-16
求win7 上可用的c/c++开发环境
2010-08-16
我现在写了一个java的桌面程序,部署的时候配置文件怎么放才好?
2010-03-24
win7上安装netbeans6.8报找不到jdk错误
2010-03-23
有没有办法不解压zip或者war包直接更新里面的文件的东西?
2010-03-09
Spring javaMail发邮件,在邮件的正文中包含网址,但网址不能点击,怎么解决?
2009-08-31
java 的桌面程序怎么样才能自动的更新?
2009-07-16
请教一段代码的解释:java 算文件的MD5值是怎么用十六进制表示的?
2009-06-09
java能否获得windows进程的信息?
2009-05-27
JTable 有没有数据适配器?
2009-05-13
求一段代码实例:ajax结合jquery和json的增,删,改,查的实例。
2009-04-27
大家谁知道PDF文档有没有接口可以提供给java来编程管理?
2009-04-21
关于java的IO包的困惑,应该怎么学习才好
2009-04-14
关于oracle大数据量的分页查询的效率问题
2009-03-23
TA创建的收藏夹 TA关注的收藏夹
TA关注的人