- 博客(110)
- 资源 (3)
- 收藏
- 关注
原创 MySQL 乐观锁 简例
乐观锁与悲观锁不同的是,它是一种逻辑上的锁,而不需要数据库提供锁机制来支持当数据很重要,回滚或重试一次需要很大的开销时,需要保证操作的ACID性质,此时应该采用悲观锁而当数据对即时的一致性要求不高,重试一次不太影响整体性能时,可以采用乐观锁来保证最终一致性,同时有利于提高并发性通常,乐观锁采用版本号/时间戳的形式实现:给数据额外增加一个版本号字段进行控制;更新时,若提交的数
2016-03-31 16:45:28 12022 6
原创 MySQL DataSource 性能对比(2015-8-19)
1. 本地性能测试耗时(一)共同条件:测试程序与数据库在同一台主机上,各DataSource均采用默认配置,每个线程循环1000次,查询语句为select * from table场景一:10行数据,10个线程场景二:10行数据,100个线程场景三:1000行数据,10个线程场景四:1000行数据,100个线程场景五:100000行数据,10个线程
2016-03-31 16:42:47 2186
原创 Spring Bean 创建过程
0. 通常,无论是DispatcherServlet、ContextLoaderListener还是ClassPathXmlApplicationContext,首次实例化bean的入口并不是在每次调用getBean的时候,而是在DefaultListableBeanFactory类的preInstantiateSingletons方法中:当配置文件加载完毕后,会预先将 非abstract、非延迟
2016-03-31 16:40:17 5888 1
原创 DispatcherServlet与ContextLoaderListener的对比
1. 从DispatcherServlet和ContextLoaderListener的初始化过程可以看出,二者分别会生成一个WebApplicationContext,且以不同的attrName注册到web容器中2. 根据web.xml的加载顺序,listener总是先于servlet进行加载,因此虽然DispatcherServlet和ContextLoaderListener的Web
2016-03-31 16:39:07 4781
原创 SpringWeb ContextLoaderListener 初始化过程
ContextLoaderListener extends ContextLoader implements ServletContextListenerWebApplicationContext初始化的代码逻辑在ContextLoader中,供实现ServletContextListener接口的contextInitialized和contextDestroyed方法调用初始化
2016-03-31 16:37:01 1997
原创 SpringMVC DispatcherServlet 初始化过程
DispatcherServlet extends FrameworkServlet extends HttpServletBean extends HttpServlet初始化:HttpServletBean.init() -> FrameworkServlet.initServletBean -> FrameworkServlet.initWebApplicationContext()
2016-03-31 16:35:28 1951
原创 MySQL InnoDB 悲观锁机制
共享锁与排它锁数据库理论中根据互斥性将锁分为两种:共享锁(S锁、读锁):事务获得元组的共享锁后,其它事务也只能获得该元组的共享锁,而不能获得排它锁;获得共享锁的事务可以对元组进行读操作排它锁(X锁,写锁):事务获得元组的排它锁后,其它事务既不能获得该元组的共享锁,也不能获得排它锁;获得排它锁的事务可以对元组进行写操作此外,MySQL在此基础上做了扩展,增加了两种意向
2016-03-31 16:30:58 3159
原创 Spring集成AspectJ的注解模式
过去曾经记录过基础的Spring AOP:http://blog.csdn.net/sadfishsc/article/details/8875110不过在实际工作中,这种非常早期的AOP写法由于比较繁琐,使用得并不多。大多数情况下使用的是spring集成aspectj提供的注解模式的AOP如下是一个简单的例子:1. Maven依赖 org.aspectj aspectjrt
2016-03-05 16:54:12 3179
原创 Apache Commons Mail 初步
Apache commons mail 是对java自带的 javax.mail 模块的封装。相比之下,apache-mail 显然要好用得多,不过这两者本质上实际是一样的,apache-mail 实际上就是将 javax.mail 中那些让人烦心的邮件配置封装掉了。如下是 apache-mail 的一些常见用法:1. Maven依赖 org.apache.commons common
2016-03-05 15:04:20 6874
原创 Spring集成Quartz的简单配置
过去曾经记录过Java定时任务包Quartz的用户:http://blog.csdn.net/sadfishsc/article/details/20638327不过在实际的工作中,很少会直接用到它。通常都是用的spring-quartz组件,直接通过配置,让spring框架来自动装配如下就是spring框架集成quartz组件,配置定时任务的方法1. Maven依赖 org.s
2016-03-05 12:11:32 10100
原创 Apache Commons Digester 初步
Apache Commons Digester是对SAX的封装,用于直接通过XML文件来生成Java类实例通常在使用SAX解析XML的时候,需要覆盖DefaultHandler类的startDocument、startElement、characters、endElement、endDocument等方法。这样编程过于复杂不友好,而且对于不同的XML格式需要编写不同的DefaultHand
2015-09-17 15:10:21 4057
原创 HTTP协议
1. 请求1.1. 规则请求报文 = 请求行 *((常规头部 | 请求头部 | 实体头部) CRLF) CRLF [消息体]请求行 = 方法 SP 请求URI SP HTTP版本 CRLF方法 = “OPTIONS” | “GET” | “POST” | “PUT” | “DELETE” | “HEAD” | “TRACE” | “CONNECT” | 扩展方法HTTP版本
2015-09-09 17:40:55 2400
原创 Spring MVC集成slf4j-logback
1. Spring MVC集成slf4j-log4j关于slf4j和log4j的相关介绍和用法,网上有很多文章可供参考,但是关于logback的,尤其是Spring MVC集成logback的,就相对少一些了,而且其中一些也有着这样那样的问题。进入正题之前先简单介绍下Spring MVC集成slf4j-log4j的过程,如下:1) 在pom.xml文件中添加slf4j-log4
2015-07-31 00:09:48 48817 5
原创 MySQL隔离等级
1. read uncommitted,读未提交。事务A能读取到事务B已修改但未提交的数据。脏读2. read committed,读已提交。事务A只能读取到事务B已经提交的数据,但由于事务读取到的是它每次SELECT前的数据快照,因此同一事务多次SELECT的结果可能不同。不可重复读。大多数关系数据库(如Oracle)的默认隔离等级3. repeatable read,可重复读。
2015-06-19 19:37:10 2492
原创 ConcurrentHashMap、synchronized与线程安全
最近做的项目中遇到一个问题:明明用了ConcurrentHashMap,可是始终线程不安全除去项目中的业务逻辑,简化后的代码如下:public class Test40 { public static void main(String[] args) throws InterruptedException { for (int i = 0; i < 10; i
2015-01-04 19:39:39 26312 21
转载 前缀、中缀、后缀表达式
它们都是对表达式的记法,因此也被称为前缀记法、中缀记法和后缀记法。它们之间的区别在于运算符相对与操作数的位置不同:前缀表达式的运算符位于与其相关的操作数之前;中缀和后缀同理。举例:(3 + 4) × 5 - 6 就是中缀表达式- × + 3 4 5 6 前缀表达式3 4 + 5 × 6 - 后缀表达式中缀表达式(中缀记法)中缀表达式是一种通用的算术或逻辑公式表示方法
2014-04-17 15:35:09 2213
原创 Drools 6.0入门:时钟实例
关于Drools 6.0的博文,写了很长时间。一方面是最近比较散漫,虽然也学了不点击打开链接少新的东西,但是不太愿意记录下来;另一方面是Drools本身比较繁琐,即便是入门也需要涉及很多内部的东西,越写越觉得动力不足。本文已经是第三次从头开始写的了。首先介绍一下Drools。Drools是一个基于Java实现的规则引擎开源库,由JBoss基金会管理,最新的是6.0.1版本。6.0版本中,Dro
2014-04-11 17:04:05 27334 12
转载 贝叶斯方法
原文地址:http://mindhacks.cn/2008/09/21/the-magical-bayesian-method/数学之美番外篇:平凡而又神奇的贝叶斯方法概率论只不过是把常识用数学公式表达了出来。——拉普拉斯记得读本科的时候,最喜欢到城里的计算机书店里面去闲逛,一逛就是好几个小时;有一次,在书店看到一本书,名叫贝叶斯方法。当时数学系的课程还没有学到概率
2014-03-13 14:24:23 4042
原创 Java任务调度类库Quartz初步
本文基于Quartz 2.2版本,官方地址如下:http://www.quartz-scheduler.org/现在网上关于Quartz的文章,大多都是1.x版本的,但在2.x版本之后,Quartz的语法已经有了很大的不同。其中最主要的一点就是,Quartz废弃了很多类的构造方法,而改为采用这些类的建造者类(Builder)来初始化它们。对于Quartz而言,有三个最为基础的组件:
2014-03-06 17:59:55 13288 3
原创 基于crawler4j、jsoup、javacsv的爬虫实践
1. crawler4j基础crawler4j是一个基于Java的爬虫开源项目,其官方地址如下:http://code.google.com/p/crawler4j/crawler4j的使用主要分为两个步骤:实现一个继承自WebCrawler的爬虫类;通过CrawlController调用实现的爬虫类。WebCrawler是一个抽象类,继承它必须实现两个方法:shouldV
2014-03-06 11:59:49 22973 9
原创 Python基本语法
1. 四种数值类型:整型,长整型,浮点数,复数2. 字符串:单引号,双引号(单双引号等价,无char类型)三引号(多行)转义符\(转义,换行)自然字符串(字符串前加r,转义符失效)Unicode字符串(字符串前加u,以Unicode格式处理)字符串不可变(同Java)两个相邻书写的字符串将自动连接3. 标识符:首字符只允许字
2014-01-20 17:59:17 4310
转载 MySQL 加锁处理分析
原文地址:http://hedengcheng.com/?p=7711 背景 11.1 MVCC:Snapshot Read vs Current Read 21.2 Cluster Index:聚簇索引 31.3 2PL:Two-Phase Locking 31.4
2013-12-13 16:43:55 9096 2
转载 Java ScheduledThreadPoolExecutor延迟或周期性执行任务
原文地址:http://www.importnew.com/7276.htmlJava提供的Time类可以周期性地或者延期执行任务,但是有时我们需要并行执行同样的任务,这个时候如果创建多个Time对象会给系统带来负担,解决办法是将定时任务放到线程池中执行。Java的ScheduledThreadPoolExecutor类实现了ScheduledExecutorServi
2013-11-27 09:52:30 11494
原创 一个不喜欢读书的Javaer的读书单
很可惜,从我一开始学技术开始,我就不喜欢看书,严重的时候翻不到两页就会开始狂打瞌睡。很幸运,有互联网能够为我提供很多知识,甚至一些知识从网上看来的会更加权威一些。但是,我的经验告诉我,无论是从功利性的找工作的角度,还是从实用性的学技术的角度,下面这些书都非常值得多读几遍,于是它们很幸运没在我即将离校的时候被当做废纸卖掉。1. 《Java核心技术》仔细研读这套书上下册至少两遍,最现实最直
2013-08-29 23:28:56 8609 12
原创 Python 3.x标准模块库目录
文本1. string:通用字符串操作2. re:正则表达式操作3. difflib:差异计算工具4. textwrap:文本填充5. unicodedata:Unicode字符数据库6. stringprep:互联网字符串准备工具7. readline:GNU按行读取接口8. rlcompleter:GNU按行读取的实现函数二进制数据9. struct:将
2013-08-27 14:12:05 8754
原创 从JVM角度看线程安全与垃圾收集
线程安全Java内存模型中,程序(进程)拥有一块内存空间,可以被所有的线程共享,即MainMemory(主内存);而每个线程又有一块独立的内存空间,即WorkingMemory(工作内存)。普通情况下,当线程需要对某一共享变量进行修改时,通常会进行如下的过程:1. 从主内存中拷贝变量的一份副本,并装载到工作内存中;2. 在工作内存中执行代码,修改副本的值;3.
2013-08-26 10:04:32 4579
原创 Javassist学习总结
要想将编译时不存在的类在运行时动态创建并加载,通常有两种策略:1. 动态编译2. 动态生成二进制字节码(.class)对于第二种策略,实际上已经有诸多比较成熟的开源项目提供支持,如CGLib、ASM、Javassist等。这些开源项目通常都具备两方面的功能:1. 动态创建新类或新接口的二进制字节码2. 动态扩展现有类或接口的二进制字节码
2013-08-16 11:49:08 40057 1
原创 DOM4J学习总结
之前做HTML的解析的时候用过jsoup,做XML的解析的时候用过SAX。最近在做XML的修改的时候,突然发现,jsoup不太支持XML,而SAX也不支持XML文档的修改。在网上查找了一番之后,发现针对XML,Java有4种技术可以对其进行CRUD:DOM、JDOM、DOM4J、SAX。对这四种技术的比较如下:http://blog.csdn.net/shijinupc/article/d
2013-08-16 10:47:11 2737 1
转载 Spring Data JPA
原文地址:http://www.ibm.com/developerworks/cn/opensource/os-cn-spring-jpa/从一个简单的 JPA 示例开始本文主要讲述 Spring Data JPA,但是为了不至于给 JPA 和 Spring 的初学者造成较大的学习曲线,我们首先从 JPA 开始,简单介绍一个 JPA 示例;接着重构该示例,并引入 Spr
2013-08-08 17:25:54 7843 3
转载 JPA概要
JPA定义了Java ORM及实体操作API的标准。本文摘录了JPA的一些关键信息以备查阅。如果有hibernate的基础,通过本文也可以快速掌握JPA的基本概念及使用。Table of Contents1 JPA概述2 实体生命周期3 实体关系映射(ORM)3.1 基本映射3.2 ID生成策略3.3 关联关系3.4 继承关系4 事件及监听5 Query Lan
2013-08-06 11:52:19 1588
原创 基于Tire树和最大概率法的中文分词功能的Java实现
对于分词系统的实现来说,主要应集中在两方面的考虑上:一是对语料库的组织,二是分词策略的制订。1. Tire树Tire树,即字典树,是通过字串的公共前缀来对字串进行统计、排序及存储的一种树形结构。其具有如下三个性质:1) 根节点不包含字符(或汉字),除根节点以外的每个节点只能包含一个字符(汉字)2) 从根节点到任一节点的路径上的所有节点中的字符(汉字)按顺序排
2013-06-22 21:45:54 8257 10
原创 Nginx+Memcached+Tomcat集群配置
1. NginxNginx是通过将多个Web Server绑定到同一个IP地址下,以实现多个WebServer间的负载均衡,降低单个Web Server的负荷,以提高整体的性能与稳定性。安装和配置Nginx的简单方式如下:1) 下载并解压Nginx到本地目录:http://nginx.org/en/download.html2) 对Nginx的配置主要是对它
2013-06-22 15:40:41 6736 2
原创 《大话设计模式》读书笔记:建造者模式与观察者模式
1. 建造者模式建造者模式(Builder Pattern),是将一个复杂对象的创建构造与其它功能性方法(或函数)分离到不同的封装之中,使同样的构造过程能够用于不同的功能表示。建造者模式主要分为三个部分:产品、建造者以及指挥者。其中,产品就是封装了功能性方法和成员变量的对象,它在建造者内部创建,并通过建造者提供的public方法返回。建造者封装了产品对象的构造过程,它的唯一作用就是
2013-05-14 23:40:03 2144
原创 简易垂直搜索引擎的核心算法总结
1. 倒排索引倒排索引源于实际应用中需要根据属性值(字段)来查找记录(所在的文件位置)。这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址。目前主流的索引技术有三种:倒排索引、后缀数组以及签名。后缀数组虽然快,但是维护困难,代价高昂,不适合作为搜索引擎的索引。而签名的速度和性能都不如倒排索引。因此倒排索引是各种搜索引擎中被主要使用的一种索引技术,同时也是搜索引擎的一个核心
2013-05-05 22:42:01 3817
原创 Spring AOP 初步
1. 面向切面编程(AOP)的概念参见如下链接:http://baike.baidu.com/view/1865230.htm简单地说,AOP就是在程序的纵向流程上添加横向的切面逻辑,相当于给已有的业务逻辑增加额外的功能,而不改动原有的代码。2. Spring中的AOP流程完整的AOP要素包括:切面(Aspect),逻辑(Advice),连接点(Joinpoint)
2013-05-02 11:26:55 1522
原创 小谈Java内存泄露
今天一哥们接到了淘宝的电话面试,其中一题问到Java的内存泄露。面试之后,我们在群里稍微讨论了一下,结果他认为我的看法不对,让我再去看看资料。在网上看了一些资料,并且翻阅了《疯狂Java》中的“内存管理”章节之后,我反而觉得我的看法更加正确了。我的看法是:对于一般的强引用,并不需要特别刻意地去处理它,GC已经能够做得很好了,需要注意的是Java的类定义中隐藏的对象引用。对于Java的内存泄
2013-04-19 23:20:20 1544
原创 单源最短路径、最小生成树及堆的Java实现
1. 堆import java.util.ArrayList;import java.util.Collection;import java.util.List;public class Heap> { private List list; private boolean isMaxHeap = true; public Heap() { list = new Array
2013-04-16 22:19:43 3162
原创 Spring IoC
1. 装配Bean的方法1) BeanFactory factory = new XmlBeanFactory(new FileSystemResource(“src\\applicationContext.xml”));Object factory.getBean(String beanId);2) ApplicationContext context =ne
2013-04-16 22:08:27 1880
原创 Struts2与JSON
1. 必需的库struts2-json-plugin-2.1.8.1.jarjson-lib-2.1.jar版本号可能会有所不同,而且这两个包也是MyEclipse在创建Struts2项目时自带并且已经包含的。2. setter与getterAction类中私有成员变量的setter和getter方法在Struts2框架下会被自动转化成HttpServletReques
2013-04-07 16:12:16 7824 1
Android通讯录demo
2012-03-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人