自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

我想跟代码谈谈

技术点与代码段的归档之地

  • 博客(110)
  • 资源 (3)
  • 收藏
  • 关注

原创 MySQL 乐观锁 简例

乐观锁与悲观锁不同的是,它是一种逻辑上的锁,而不需要数据库提供锁机制来支持当数据很重要,回滚或重试一次需要很大的开销时,需要保证操作的ACID性质,此时应该采用悲观锁而当数据对即时的一致性要求不高,重试一次不太影响整体性能时,可以采用乐观锁来保证最终一致性,同时有利于提高并发性通常,乐观锁采用版本号/时间戳的形式实现:给数据额外增加一个版本号字段进行控制;更新时,若提交的数

2016-03-31 16:45:28 11942 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 2137

原创 Spring Bean 创建过程

0. 通常,无论是DispatcherServlet、ContextLoaderListener还是ClassPathXmlApplicationContext,首次实例化bean的入口并不是在每次调用getBean的时候,而是在DefaultListableBeanFactory类的preInstantiateSingletons方法中:当配置文件加载完毕后,会预先将 非abstract、非延迟

2016-03-31 16:40:17 5845 1

原创 DispatcherServlet与ContextLoaderListener的对比

1. 从DispatcherServlet和ContextLoaderListener的初始化过程可以看出,二者分别会生成一个WebApplicationContext,且以不同的attrName注册到web容器中2. 根据web.xml的加载顺序,listener总是先于servlet进行加载,因此虽然DispatcherServlet和ContextLoaderListener的Web

2016-03-31 16:39:07 4728

原创 SpringWeb ContextLoaderListener 初始化过程

ContextLoaderListener extends ContextLoader implements ServletContextListenerWebApplicationContext初始化的代码逻辑在ContextLoader中,供实现ServletContextListener接口的contextInitialized和contextDestroyed方法调用初始化

2016-03-31 16:37:01 1930

原创 SpringMVC DispatcherServlet 初始化过程

DispatcherServlet extends FrameworkServlet extends HttpServletBean extends HttpServlet初始化:HttpServletBean.init() -> FrameworkServlet.initServletBean -> FrameworkServlet.initWebApplicationContext()

2016-03-31 16:35:28 1896

原创 MySQL InnoDB 悲观锁机制

共享锁与排它锁数据库理论中根据互斥性将锁分为两种:共享锁(S锁、读锁):事务获得元组的共享锁后,其它事务也只能获得该元组的共享锁,而不能获得排它锁;获得共享锁的事务可以对元组进行读操作排它锁(X锁,写锁):事务获得元组的排它锁后,其它事务既不能获得该元组的共享锁,也不能获得排它锁;获得排它锁的事务可以对元组进行写操作此外,MySQL在此基础上做了扩展,增加了两种意向

2016-03-31 16:30:58 3115

原创 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 3150

原创 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 6816

原创 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 10071

原创 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 4011

原创 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 2377

原创 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 48554 5

原创 MySQL隔离等级

1. read uncommitted,读未提交。事务A能读取到事务B已修改但未提交的数据。脏读2. read committed,读已提交。事务A只能读取到事务B已经提交的数据,但由于事务读取到的是它每次SELECT前的数据快照,因此同一事务多次SELECT的结果可能不同。不可重复读。大多数关系数据库(如Oracle)的默认隔离等级3. repeatable read,可重复读。

2015-06-19 19:37:10 2462

原创 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 26083 21

转载 前缀、中缀、后缀表达式

它们都是对表达式的记法,因此也被称为前缀记法、中缀记法和后缀记法。它们之间的区别在于运算符相对与操作数的位置不同:前缀表达式的运算符位于与其相关的操作数之前;中缀和后缀同理。举例:(3 + 4) × 5 - 6 就是中缀表达式- × + 3 4 5 6 前缀表达式3 4 + 5 × 6 - 后缀表达式中缀表达式(中缀记法)中缀表达式是一种通用的算术或逻辑公式表示方法

2014-04-17 15:35:09 2184

原创 Drools 6.0入门:时钟实例

关于Drools 6.0的博文,写了很长时间。一方面是最近比较散漫,虽然也学了不点击打开链接少新的东西,但是不太愿意记录下来;另一方面是Drools本身比较繁琐,即便是入门也需要涉及很多内部的东西,越写越觉得动力不足。本文已经是第三次从头开始写的了。首先介绍一下Drools。Drools是一个基于Java实现的规则引擎开源库,由JBoss基金会管理,最新的是6.0.1版本。6.0版本中,Dro

2014-04-11 17:04:05 27251 12

转载 贝叶斯方法

原文地址:http://mindhacks.cn/2008/09/21/the-magical-bayesian-method/数学之美番外篇:平凡而又神奇的贝叶斯方法概率论只不过是把常识用数学公式表达了出来。——拉普拉斯记得读本科的时候,最喜欢到城里的计算机书店里面去闲逛,一逛就是好几个小时;有一次,在书店看到一本书,名叫贝叶斯方法。当时数学系的课程还没有学到概率

2014-03-13 14:24:23 3996

原创 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 13216 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 22840 9

原创 Python基本语法

1.      四种数值类型:整型,长整型,浮点数,复数2.      字符串:单引号,双引号(单双引号等价,无char类型)三引号(多行)转义符\(转义,换行)自然字符串(字符串前加r,转义符失效)Unicode字符串(字符串前加u,以Unicode格式处理)字符串不可变(同Java)两个相邻书写的字符串将自动连接3.      标识符:首字符只允许字

2014-01-20 17:59:17 4267

转载 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 9066 2

转载 Java ScheduledThreadPoolExecutor延迟或周期性执行任务

原文地址:http://www.importnew.com/7276.htmlJava提供的Time类可以周期性地或者延期执行任务,但是有时我们需要并行执行同样的任务,这个时候如果创建多个Time对象会给系统带来负担,解决办法是将定时任务放到线程池中执行。Java的ScheduledThreadPoolExecutor类实现了ScheduledExecutorServi

2013-11-27 09:52:30 11411

原创 一个不喜欢读书的Javaer的读书单

很可惜,从我一开始学技术开始,我就不喜欢看书,严重的时候翻不到两页就会开始狂打瞌睡。很幸运,有互联网能够为我提供很多知识,甚至一些知识从网上看来的会更加权威一些。但是,我的经验告诉我,无论是从功利性的找工作的角度,还是从实用性的学技术的角度,下面这些书都非常值得多读几遍,于是它们很幸运没在我即将离校的时候被当做废纸卖掉。1.   《Java核心技术》仔细研读这套书上下册至少两遍,最现实最直

2013-08-29 23:28:56 8221 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 8633

原创 从JVM角度看线程安全与垃圾收集

线程安全Java内存模型中,程序(进程)拥有一块内存空间,可以被所有的线程共享,即MainMemory(主内存);而每个线程又有一块独立的内存空间,即WorkingMemory(工作内存)。普通情况下,当线程需要对某一共享变量进行修改时,通常会进行如下的过程:1.      从主内存中拷贝变量的一份副本,并装载到工作内存中;2.      在工作内存中执行代码,修改副本的值;3.

2013-08-26 10:04:32 4543

原创 Javassist学习总结

要想将编译时不存在的类在运行时动态创建并加载,通常有两种策略:1.      动态编译2.      动态生成二进制字节码(.class)对于第二种策略,实际上已经有诸多比较成熟的开源项目提供支持,如CGLib、ASM、Javassist等。这些开源项目通常都具备两方面的功能:1.      动态创建新类或新接口的二进制字节码2.      动态扩展现有类或接口的二进制字节码

2013-08-16 11:49:08 39975 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 2705 1

原创 Spring Data JPA环境配置

Spring Data JPA项目所需的jar包列表

2013-08-09 14:46:18 4631

转载 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 7824 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 1573

原创 基于Tire树和最大概率法的中文分词功能的Java实现

对于分词系统的实现来说,主要应集中在两方面的考虑上:一是对语料库的组织,二是分词策略的制订。1.   Tire树Tire树,即字典树,是通过字串的公共前缀来对字串进行统计、排序及存储的一种树形结构。其具有如下三个性质:1)      根节点不包含字符(或汉字),除根节点以外的每个节点只能包含一个字符(汉字)2)      从根节点到任一节点的路径上的所有节点中的字符(汉字)按顺序排

2013-06-22 21:45:54 8200 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 6711 2

原创 《大话设计模式》读书笔记:建造者模式与观察者模式

1.     建造者模式建造者模式(Builder Pattern),是将一个复杂对象的创建构造与其它功能性方法(或函数)分离到不同的封装之中,使同样的构造过程能够用于不同的功能表示。建造者模式主要分为三个部分:产品、建造者以及指挥者。其中,产品就是封装了功能性方法和成员变量的对象,它在建造者内部创建,并通过建造者提供的public方法返回。建造者封装了产品对象的构造过程,它的唯一作用就是

2013-05-14 23:40:03 2116

原创 简易垂直搜索引擎的核心算法总结

1.   倒排索引倒排索引源于实际应用中需要根据属性值(字段)来查找记录(所在的文件位置)。这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址。目前主流的索引技术有三种:倒排索引、后缀数组以及签名。后缀数组虽然快,但是维护困难,代价高昂,不适合作为搜索引擎的索引。而签名的速度和性能都不如倒排索引。因此倒排索引是各种搜索引擎中被主要使用的一种索引技术,同时也是搜索引擎的一个核心

2013-05-05 22:42:01 3647

原创 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 1487

原创 小谈Java内存泄露

今天一哥们接到了淘宝的电话面试,其中一题问到Java的内存泄露。面试之后,我们在群里稍微讨论了一下,结果他认为我的看法不对,让我再去看看资料。在网上看了一些资料,并且翻阅了《疯狂Java》中的“内存管理”章节之后,我反而觉得我的看法更加正确了。我的看法是:对于一般的强引用,并不需要特别刻意地去处理它,GC已经能够做得很好了,需要注意的是Java的类定义中隐藏的对象引用。对于Java的内存泄

2013-04-19 23:20:20 1521

原创 单源最短路径、最小生成树及堆的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 3114

原创 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 1865

原创 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 7775 1

Android通讯录demo

基于Android系统通讯录uri的简单通讯录示例源码,没有创建多余的数据库,而是调用了系统的通讯录数据库。 原本是准备参加MM论坛的一个比赛的,因为最近比较忙把截止日期给耽误了。 也因为这个原因没有做美工。

2012-03-29

OpenCart 最小内核

OpenCart 最小驱动内核,剥除了OpenCart中的实际电子商务页面和逻辑,供学习使用和搭建新的PHP网站

2012-02-10

HTML5 Canvas 2D竖版飞行射击游戏实例

一个使用HTML5 Canvas 2D技能开发的竖版飞行射击游戏的实例,包含JS脚本和图形资源,不要吐槽美工!

2011-12-19

空空如也

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

TA关注的人

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