Home

Servlet filter的责任链模式

什么是责任链模式 责任链模式在面向对象程式设计里是一种软件设计模式,它包含了一些命令对象和一系列的处理对象。每一个处理对象决定它能处理哪些命令对象,它也知道如何将它不能处理的命令对象传递给该链中的下一个处理对象。该模式还描述了往该处理链的末尾添加新的处理对象的方法。 Servlet中的Filter public final class ApplicationFilterChain implements FilterChain { private ApplicationFilterConfig[] filters = new ApplicationFilterConfig[0]; private int pos = 0; private int n = 0;...

Read more

Mysql Hacks

统计某个字段中单词的数量 SELECT SUM( LENGTH( bodytext ) - LENGTH( REPLACE( bodytext, ' ', '' ) ) +1 ) FROM tt_content

Read more

JAVA集合介绍之Map

图片来源网络,如有侵权,请联系删除 Map Map是一种键值对数据对象,不能包含重复的键,每个键只能映射一个值。 Map接口提供了三种接口视图:键集合、值集合和键-值集合。 Map实例的顺序定义为map集合视图返回元素的迭代器的顺序。在一些map的实现中,比如TreeMap就可以保证他们的顺序,而HashMap则是无序的。 了解map对象,主要从他的四个方面进行: 增加:put/putAll/putIfAbsent/merge 删除:remove/clear 查询:get/isEmpty/size/values/keyset 修改:replace 下面将会对他的三个实现类进行介绍 HashMap HashMap的定义 public...

Read more

openResty lua lapis环境安装

基于windows系统 openResty安装 下载 下载win64位版本,下载地址为https://openresty.org/download/openresty-1.13.6.2-win64.zip 安装 解压后,设置环境变量。设解压目录为D:\ProgramFiles\openresty-1.13.6.2-win64,把该目录添加到PATH环境变量中 测试 打开命令行终端,输入以下代码resty -e 'print("hello,world")',看到输出hello,world表明openResty已经安装成功了。 安装luarocks 下载 下载地址h...

Read more

JAVA 源代码阅读

HashMap putVal hash下标的确定(tab.length-1) & hash Node<K,V>[] tab; Node<K,V> p; int n, i; if ((tab = table) == null || (n = tab.length) == 0) n = (tab = resize()).length; if ((p = tab[i = (n - 1) & hash]) == null) tab[i] = newNode(hash, key, value, null); 由于tab.length为2的倍数,假设为1000,减一后,变成了0111,与h...

Read more

使用模板代码去消除样板式代码

你是否写过这样的代码,当编写的时候总会感觉以前曾经这么写过。我的朋友,这不是似曾相识,这是样板式代码(boilerplate code)。 通常为了实现通用和简单的任务,你不得不一遍遍地重复编写这样的代码。 遗憾的是,它们中的很多都是因为使用Java API而导致的样板式代码。样板式代码的一个常见范例是使用JDBC访问数据库查询。举个例子,如果你曾经用过JDBC,那么你或许会写出类似下面的代码。 public Employee getEmployeebyId(long id){ Connection conn = null; PreparedStatement stmt = null; ResultSet rs = null; try{ conn = dataSourc...

Read more

Spring AOP 切面编程介绍

你是否写过这样的代码,当编写的时候总会感觉以前曾经这么写过。我的朋友,这不是似曾相识,这是样板式代码(boilerplate code)。 通常为了实现通用和简单的任务,你不得不一遍遍地重复编写这样的代码。 遗憾的是,它们中的很多都是因为使用Java API而导致的样板式代码。样板式代码的一个常见范例是使用JDBC访问数据库查询。举个例子,如果你曾经用过JDBC,那么你或许会写出类似下面的代码。 public Employee getEmployeebyId(long id){ Connection conn = null; PreparedStatement stmt = null; ResultSet rs = null; try{ conn = dataSourc...

Read more

链表相关算法总结

快慢指针 假设慢指针(走一步)用()表示,快指针(走两步)用[]表示。在起始位置与数量不同的情况下,快慢指针所处的位置如下: 第一种情况:起点都是在链表头 示例1: [(1)] 2 3 1 (2) [3] 示例2: [(1)] 2 3 4 1 (2) [3] 4 1 2 (3) 4 [] 示例3: [(1)] 2 3 4 5 1 (2) [3] 4 5 1 2 (3) 4 [5] 第二种情况:起点都是链表头的前一个位置 示例1: [()] 1 2 3 (1) [2] 3 1 (2) 3 [] 示例2: [()] 1 2 3 4 (1) [2] 3 4 1 (2) 3 [4] 示例3: [()] 1 2 3 4 5 ...

Read more