自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(55)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 ThreadLocal深入研究

不久前我写过一篇关于ThreadLocal用法的文章,但最近项目上出现了Memory Leak,调查后发现可能与ThreadLocal的使用有关,在此对ThreadLocal的使用作一些补充。在ThreadLocal内部,其实是通过一个Map(类似Map)来保存各个线程独立的变量的,但是这个map有一点特殊,它对线程的引用是弱引用WeakReference(如果一个对象只被弱引用相联,

2015-04-08 23:54:21 627

转载 ThreadLocal Memory Leak

PermGen exhaustions in combination with ThreadLocal are often caused by classloader leaks.An example: Imagine an application server which has a pool of worker threads.They will be kept

2015-04-08 23:14:08 597

转载 WeakReference vs SoftReference in Java

WeakReference and SoftReference were added into Java API from long time but not every Java programmer is familiar with it. Which means there is a gap between where and how to use WeakReference and S

2015-04-08 22:37:51 544

原创 深入浅出Redis(三)高级特性:管道

Redis是一个响应式的服务,当客户端发送一个请求后,就处于阻塞状态等待Redis返回结果。这样一次命令消耗的时间就包括三个部分:请求从客户端到服务器的时间、结果从服务器到客户端的时间和命令真正执行时间,前两个部分消耗的时间总和称为RTT(Round Trip Time),当客户端与服务器存在网络延时时,RTT就可能会很大,这样就会导致性能问题。管道(Pipeline)就是为了改善这个情况的,利用

2015-03-19 17:16:11 974

原创 深入浅出Redis(二)高级特性:事务

第一篇中介绍了Redis是一个强大的键-值仓储,支持五种灵活的数据结构。事实上,Redis还支持其它的一些高级特性:事务、发布与订阅、管道、脚本等,本篇我们来看一下事务。前一篇中我们提到,在Redis中每个命令都是原子性的,因为Redis内部的实现是单线程的。当然Redis也支持多个命令之间的事务,不过事务在Redis中相对来说很简单,不像数据库事务那样涉及传播级别、隔离级别等特性。

2015-03-17 09:02:59 752

原创 Java ThreadLocal类

最近项目重构的时候,接触到了ThreadLocal这个类,才知道原来关于线程还有这么个东东,真是疏漏寡闻了。ThreadLocal类是做什么用的呢?网上Copy了一段英文的介绍:The ThreadLocal class in Java enables you to create variables that can only be read and written by the

2015-03-11 21:19:50 774

原创 重构小记

半年前入职新公司以来,一直参与一个维护型的大型JAVA项目。项目是一个交易系统,基于一个非常老的框架搭建的(大概98年的一个框架),框架本身的设计思想不错,没有应用任何开源框架,简单明了。但是公司平时在设计和代码质量把控方面做得不够到位,导致现在代码的质量可以说是高偶合、低类聚的典型,随便改点什么都无法简单评估影响范围,大部分需求变更都不得不把业务和开发人员集中起来,开个大半天的会议讨论。经过无数

2015-03-11 20:39:05 714

原创 深入浅出Redis(一)简介

官方描述Redis是一个开源的,支持网络、基于内存亦可持久化的日志型键-值仓储。个人认为这样描述过于简单,不足以体现出Redis的强大。Redis比起传统的键-值仓储要强大许多,事实上Redis支持五种数据结构,而传统的键-值存储只是其中之一。要真正认识Redis的强大所在,就必须理解它所支持的五种数据结构,如何操作它们以及它们能够解决哪些类型的问题。

2015-03-02 19:29:40 1120

原创 《设计模式》- 模板模式

模板模式在诸多模式中算是比较简单的一个,即便一个新手,也能很快的上手和使用。虽然简单,但合理的在项目中使用带来的好处可不小。软件设计中有个很重要的原则:DRY(Don't Repeat Yourself),重复有很多种,比如代码重复,逻辑重复,而模板模式的最拿手的就是消除逻辑重复。

2015-02-07 00:06:54 813

原创 vim 笔记

递增、递减序列:let i=1|g/${value}/s//\=‘${value}’.i/|let i=i+1其中value是要查找和替换的值s命令中\=表示后面是表达式,表达式中的.表示连接符插入行号:g/^/s//\=line(‘.’).”\t”/其中\t是在行号后面插入一个tab

2015-01-26 23:57:01 586

原创 《设计模式》- 观察者模式

还记得Windows系统右键菜单中的“刷新”吗?通过FPT传输一个文件至某个目录后,还需要手动刷新一下文件窗口才能看到文件,而在Linux系统中确不存在这样的问题。

2015-01-19 17:02:23 1028

转载 You say that you love rain

You say that you love rain,but you open your umbrella when it rains...You say that you love the sun,but you find a shadow spot when the sun shines...You say that you love the wind,But you cl

2015-01-18 01:10:31 784

转载 When I was a young man

When I was a young man, I wanted to change the world.I found it was diffficult to change the world, so I tried to change my nation.When I found I couldn't change the nation, I began to focus o

2015-01-18 01:08:43 1421

原创 MySQL InnoDB锁机制(三)

前面两篇文章讨论了MySQL InnoDB的锁类型与加锁方式,这次,我们来看看在不同的场景下,不同的SQL会以什么样的方式加什么类型的锁。 在开始之前,我们先了解一下什么是聚族索引? 每一张InnoDB表都有且仅有一表特殊的索引,聚族索引(Clustered Index),表中的数据是直接存放在聚族索引的叶子节点页面中,这样,根据聚族索引查询就会比普通索引更快,因为少了一次IO操作

2014-12-31 18:00:36 710

原创 MySQL InnoDB锁机制(二)

上一篇文章我们提到MySQL InnoDB对数据行的锁定类型一共有四种:共享锁(读锁,S锁)、排他锁(写锁,X锁)、意向共享锁(IS锁)和意向排他锁(IX锁),今天我们要讨论的是MySQL InnoDB对数据行的锁定方式。 MySQL InnoDB支持三种行锁定方式:行锁(Record Lock):锁直接加在索引记录上面。间隙锁(Gap Lock):锁加在不存在的空闲空间,可

2014-12-31 18:00:30 744

原创 MySQL InnoDB非阻塞式读的实现原理

以前在学习《数据库概论》这门课程的时候,了解到在可重复读这个隔离级别下,一个事务内同一个SELECT查询的多次执行会返回相同的结果,而这个是对查询返回的记录加共享锁来实现的。这样,别的事务如果要更新相同的记录的话就必要要等前一个事务先释放锁。说白了,这就是通过数据库三级封锁协议(三级封锁协议:在一级封锁协议的基础上,事务T在读取数据R之前,必须先对其加上S锁,直到事务结束后才释放。三级封锁协议可以

2014-12-31 18:00:25 1428

原创 MySQL InnoDB隔离级别

上篇文章讨论了事务隔离级别,隔离级别这个东西在不同的数据库产品上,是有一些区别的,本篇重点讲讲mysql数据库。四种标准的隔离级别MySQL数据库都支持,下面我们一个一个看过来先。首先我们先创建一个简单的测试表。CREATE TABLE tb1( id INT NOT NULL, value DECIMAL NOT NULL, PRIMARY K

2014-12-31 18:00:14 557

原创 事务、事务并发

最近工作非常郁闷,天天被领导盯着。主要是系统近来死锁发生在频率很高。最终,经过大家的共同努力,我们成功的定位并解决了问题,所以把过程中学习的知识与经验分享一下 问题背景系统中有一个账户模块,负责管理和维护会员的各种资金及明细,对外的功能涉及资金的增加与扣减等。通过监控系统发现,当外围系统并发访问和调用同一个会员的账户功能接口的时候,就会发生死锁和响应超时的情况,所以问题的分析还得从事务的并发

2014-12-31 18:00:08 801

原创 一般纳税人公司与小规模的公司有什么不一样

一般纳税人公司与小规模公司的不同 1、一般纳税人容易和一般纳税人作生意,通常大公司都是一般纳税人,因此生意容易做大。 2、一般纳税人的财务、税务、管理要求规范,财务人员要求高,可以减少经营风险、涉税风险。 3、一般纳税人有一定的经营实力才能申请到,因此让客户感到值得信任。 4、一般纳税人取得增值税进项票可以抵扣,税负比较合理,毛利低一点的生意也可以做,因此生意也容易作大。 

2014-12-31 18:00:02 1219

原创 MySQL 账户管理

Mysql 账户管理1、创建账户CREATE USER 'jeffrey'@'localhost' IDENTIFIED BY 'my pass';2、删除账户(删除账户同时会删除其所有权限)DROP USER 'jeffrey'@'localhost';3、分配权限GRANT ALL PRIVILEGES ON *.* TO 'jeffrey'@'%' IDENTIFIED BY '

2014-12-31 17:59:55 543

原创 How to setup SVN server

1. Create SVN serversvnadmin create pathsvn import project file:///path2. Make SVN server accessible via httpFile: httpd.confLoadModule dav_svn_module libexec/apache2/mod_dav_svn.soLoadModule

2014-12-31 17:59:49 566

原创 OSGi中使用log4j

最近在看关于OSGi方面的内容,自己做了些简单的例子。虽然在log方面OSGi有提供一些实现,但我们javaer们早已习惯了log4j,于是很想试试看log4j在OSGi上能不能用。在网上搜了下,相关的资料不多也不少,但都不是很详细,所以记下来,方便大家参考一下。例子用到了:apache的felix(版本4.0.2)springDM(版本1.2.1)中的log4j的jar包。首先

2014-12-31 17:59:44 812

原创 Java网络安全(一)

消息摘要是数据信息的数字指纹。通过某种安全散列算法(如SHA1)对数据信息进行加密,就可以生成一个20字节(MD5算法好像是16字节)的序列,这个序列就称为消息摘要。  从安全的角度考虑,我们总是希望任何不同的数据信息都生成不同的消息摘要,但这是不可能的,就拿SHA1算法来说,消息摘要是一个20字节的序列,也就是160位的长度,一共也只有2的160次方种可能。但这已经是一个巨大的数字了,我们可

2014-12-31 17:59:38 4073

原创 JAVA多线程(四)

死锁1、何为死锁  简单说来,死锁就是系统中的线程因相互等侍彼此占有的资源而暂停执行,造成系统假死的现象。2、死锁是如何发生的  假设系统有两个互斥资源A和B,系统中的两个线程1和2都要获得A和B之后才能正常工作, 但是线程1先取资源A再取资源B,线程2先取资源B再取资源A。这样就有可能发生这样的情况:线程1先申请了资源A,再准备申请资源B的时候,由于处理器调度,线程2开始执行;线程2申

2014-12-31 17:59:33 474

原创 JAVA多线程(三)

线程同步1、什么是线程同步  概念上的东西在这里就不过多介绍了,线程同步,也叫做线程间通信,就是多个线程共同协作完成一件事情。  为了完成一件事情,可能需要分很多的部分或步骤,每个部分由一个或一类线程来负责,而各个部分的处理又有先后顺序,这就对相互协作的线程有了一定的约束,也就是进程同步。2、Java中如何实现线程同步  在Java中,线程的同步涉及到synchronized和三个方

2014-12-31 17:59:27 526

原创 JAVA多线程(二)

资源竞争 (线程互斥)1、什么是资源竞争  有这样一种资源,在某一时刻只能被一个线程所使用:比如打印机、某个文件等等,如果多个线程不加控制的同时使用这类资源,必然会导至错误。  下面的例子模拟了一个打印机,多个线程不加控制的同时使用这个打印机:public class Printer{ public void print(int printer, String content

2014-12-31 17:59:16 561

原创 JAVA多线程(一)

Java多线程基础1、实现线程的方式  在Java中线程的实现无外乎两种方法:实现Runnable接口、继承Thread类:  实现Runnable接口public class MyTask implements Runnable{ @Override public void run() { System.out.println("m

2014-12-31 17:59:10 448

原创 JAVA初始化

在JAVA中变量在使用前,必须初始化,否则在编译时会报错。public void sample(){ int i; System.out.println(i);// Error -- i not initialized}  但是当变量是类的属性时,情况就有些不一样了。public class Sample{ int i; Object o;

2014-12-31 17:59:04 507

原创 mysql 笔记

安装完成后的设置1、修改root账号的登录密码mysqladmin -u root password 'password';2、权限设置登录mysqlmysql -u root -ppassword;设置root账号权限GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OP

2014-12-31 17:58:58 473

原创 Apache xml-rpc与spring的整合

之前在项目中使用了Apache xml-rpc,遇到了一个麻烦的问题。spring没有提供对xml-rpc的支持,在处理webservice请求的时候,没有办法使用spring容器中管理的各种各样的bean对象。显然,这是不能接受的。  使用Apache xml-rpc,一般只需要在web.xml中定义一个servlet (XmlRpcServlet), 再实现用于处理webservice请求

2014-12-31 17:58:53 552

原创 Periodic Tasks - Linux

CRON: SCHEDULE COMMANDS    Under Linux, periodic execution is normally handled by the cron daemon. cron starts when the system boots and remains running as long as the system is up. cron reads one or

2014-12-31 17:58:41 648

原创 Struts2的OGNL

OGNL的全称是Object Graph Navigation Language(对象图导航语言),它是一种强大的表达式语言,让你通过简单一致的表达式语法来读取和设置Java对象的属性值,调用对象的方法,遍历整个对象的结构图,实现字段类型转换等功能。 为什么使用OGNL   相对于其它的表达式语言,OGNL的功能更为强大,它提供了很多高级而必需的特性,例如强大的类型转换功能、静态或实例方法的

2014-12-31 17:58:30 482

《将博客搬至CSDN》

《将博客搬至CSDN》

2014-12-29 12:17:49 72

原创 MySQL InnoDB锁机制(三)

前面两篇文章讨论了MySQL InnoDB的锁类型与加锁方式,这次,我们来看看在不同的场景下,不同的SQL会以什么样的方式加什么类型的锁。 在开始之前,我们先了解一下什么是聚族索引? 每一张InnoDB表都有且仅有一表特殊的索引,聚族索引(Clustered Index),表中的数据是直接存放在聚族索引的叶子节点页面中,这样,根据聚族索引查询就会比普通索引更快,因为少了一次IO...

2014-12-28 22:46:19 87

原创 MySQL InnoDB锁机制(二)

上一篇文章我们提到MySQL InnoDB对数据行的锁定类型一共有四种:共享锁(读锁,S锁)、排他锁(写锁,X锁)、意向共享锁(IS锁)和意向排他锁(IX锁),今天我们要讨论的是MySQL InnoDB对数据行的锁定方式。 MySQL InnoDB支持三种行锁定方式:行锁(Record Lock):锁直接加在索引记录上面。间隙锁(Gap Lock):锁加在不存在的空闲空间...

2014-12-14 22:21:41 110

原创 MySQL InnoDB非阻塞式读的实现原理

以前在学习《数据库概论》这门课程的时候,了解到在可重复读这个隔离级别下,一个事务内同一个SELECT查询的多次执行会返回相同的结果,而这个是对查询返回的记录加共享锁来实现的。这样,别的事务如果要更新相同的记录的话就必要要等前一个事务先释放锁。说白了,这就是通过数据库三级封锁协议(三级封锁协议:在一级封锁协议的基础上,事务T在读取数据R之前,必须先对其加上S锁,直到事务结束后才释放。三级封锁协议...

2014-12-11 22:15:10 348

原创 MySQL InnoDB隔离级别

上篇文章讨论了事务隔离级别,隔离级别这个东西在不同的数据库产品上,是有一些区别的,本篇重点讲讲mysql数据库。四种标准的隔离级别MySQL数据库都支持,下面我们一个一个看过来先。首先我们先创建一个简单的测试表。[code="sql"]CREATE TABLE tb1( id INT NOT NULL, value DECIMAL NOT NUL...

2014-12-07 23:33:54 85

原创 事务、事务并发

最近工作非常郁闷,天天被领导盯着。主要是系统近来死锁发生在频率很高。最终,经过大家的共同努力,我们成功的定位并解决了问题,所以把过程中学习的知识与经验分享一下 :) [color=darkblue][size=xx-large]问题背景[/size][/color]系统中有一个账户模块,负责管理和维护会员的各种资金及明细,对外的功能涉及资金的增加与扣减等。通过监控系统发现,当外围系统并...

2014-12-07 16:46:34 118

原创 一般纳税人公司与小规模的公司有什么不一样

一般纳税人公司与小规模公司的不同 1、一般纳税人容易和一般纳税人作生意,通常大公司都是一般纳税人,因此生意容易做大。 2、一般纳税人的财务、税务、管理要求规范,财务人员要求高,可以减少经营风险、涉税风险。 3、一般纳税人有一定的经营实力才能申请到,因此让客户感到值得信任。 4、一般纳税人取得增值税进项票可以抵扣,税负比较合理,毛利低一点的生意也可以做,因此生意也容易作大。 ...

2014-07-02 10:43:17 252

原创 MySQL 账户管理

[align=center][size=x-large]Mysql 账户管理[/size][/align][size=large]1、创建账户[/size][code="shell"]CREATE USER 'jeffrey'@'localhost' IDENTIFIED BY 'my pass';[/code][size=large]2、删除账户(删除账户同时会删除其所有权限)[/s...

2013-01-31 17:47:11 82

俄罗斯方块(java版)

java做的小游戏,供大家参考

2008-02-02

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

TA关注的人

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