自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

laiwenqiang的专栏

It’s fucking miracle.

  • 博客(126)
  • 收藏
  • 关注

原创 tagsinput和typeahead生成标签

bootstrap-tagsinput是一款插件,用于页面tag标签生成。它支持自己手动输入,同时也能在ajax基础上智能填充输入框内容。一般的功能,官网上有介绍。不过对于自动填充这块,需要详细说明一下。效果图requirebootstrap-tagsinput-angular.jsbootstrap-tagsinput.jsbootstrap-tagsinput.cssbootstrap3-typ

2017-06-07 13:44:37 3034

原创 Cal-HeatMap(热点图)使用例子

目标编写类似GitHub上的栅格图(热点图)效果图如下:官网用到的js插件Cal-HeatMap,他的GitHub地址。代码引入依赖(cdn方式)<script type="text/javascript" src="//d3js.org/d3.v3.min.js"></script> <script type="text/javascript" src="//cdn.jsdelivr.ne

2017-05-30 20:15:49 3521 1

转载 用好你的Control键(针对类Unix系统用户)

转载于:https://ghui.me/post/2016/05/use-of-control-key/Control键是所有类Unix系统(Mac, Linux)下一个非常有用的按键,但也是一个经常被忽视的按键,特别是在Mac平台下,Command键完全代替了在Windows平台下的Ctrl键,很多人不清楚为什么Apple又额外加了一个Control键,我想这和著名的Emacs编辑器有关

2017-05-26 04:20:35 856

原创 HowTomcatWorks学习笔记--Tomcat的默认连接器(续)

这本书(How Tomcat Works 中文下载地址)之前就看过,然而也就开了个头就废弃了,所以一直耿耿于怀。这次决定重新开始,在此记录一些学习心得和本书的主要知识点。 所有代码也将托管在GitHub上面。O(∩_∩)O上节回顾剖析了Tomcat的HttpConnector类。工作原理梗概如下:用工厂模式创建出ServerSocket。创建特定数量的HttpProcessor对象池,用

2017-05-25 19:35:40 546

原创 用Alfred的Script Filter获取GitHub的个人仓库

效果演示操作流程:在搜索框中输入:code,显示CSDN和GitHub的个人主页。接着,再输入 空格 和 git,显示个人下的所有仓库。选择某个仓库,浏览器打开页面。创建workflow点击Workflows,在坐下家找到+号,新建一个Blank Workflow。弹出窗口,填写信息。创建Script Filter右击,Inputs -> Script Filter。with space 表

2017-05-25 01:33:53 1424

原创 HowTomcatWorks学习笔记--Tomcat的默认连接器

这本书(How Tomcat Works 中文下载地址)之前就看过,然而也就开了个头就废弃了,所以一直耿耿于怀。这次决定重新开始,在此记录一些学习心得和本书的主要知识点。 所有代码也将托管在GitHub上面。O(∩_∩)O上节回顾我们创建了一个connector连接器。将之前的程序更加模块化,同时解析了HTTP请求,将这些信息封装到HttpRequest,这样Servlet就能够获取到这

2017-05-23 00:06:44 644

原创 生产者和消费者的简单例子

synchronizd可以作用于代码块和方法块上,现在编写一个生产者和消费者的简单例子。功能:两个线程A,B。对同一个List进行操作。A写入数据,B读取数据。A每次写入一个数据,就会通知B去读取。B每次读取完,就将该数据从List中清除。当List为空的时候,B会一直等待。下面是详细代码:package com.test;import java.util.ArrayList;impor

2017-05-22 14:56:18 2480

原创 Intellij Idea安装主题包

一直用默认的主题,但是白色的背景看久了会晃眼睛。所以打算换成黑色的。 不过Intellij只有两种主题,Default和Darcula。 现在只能自己手动安装一个了。新主题需要满足,看久了不会太累。肉眼能够很容易识别出error的位置。(因为大多数的黑色主题都花花绿绿,对于error的位置不容易暴露出)下载主题打开主题网址,里面有各种主题。 这里还有流行的 sublime txt 主题,

2017-05-18 02:57:21 75787 6

原创 HowTomcatWorks学习笔记--连接器

这本书(How Tomcat Works 中文下载地址)之前就看过,然而也就开了个头就废弃了,所以一直耿耿于怀。这次决定重新开始,在此记录一些学习心得和本书的主要知识点。 所有代码也将托管在GitHub上面。O(∩_∩)O上节回顾在上一章节中,我们创建了一个安全性相对高一点的Servlet容器。 前面的两个章节的内容简单,而且提到概念性的东西也是熟悉的,比如说:ServerSocket、

2017-05-18 02:06:50 529

原创 HowTomcatWorks学习笔记--一个简单的Servlet容器(续)

这本书(How Tomcat Works 中文下载地址)之前就看过,然而也就开了个头就废弃了,所以一直耿耿于怀。这次决定重新开始,在此记录一些学习心得和本书的主要知识点。所有代码也将托管在GitHub上面。O(∩_∩)O上节回顾构建了一个简单的Servlet容器,运用javax.servlet.ServletRequest和javax.servlet.ServletResponse,我们实现了自

2017-05-17 17:35:21 425

原创 HowTomcatWorks学习笔记--一个简单的Servlet容器

这本书(How Tomcat Works 中文下载地址)之前就看过,然而也就开了个头就废弃了,所以一直耿耿于怀。这次决定重新开始,在此记录一些学习心得和本书的主要知识点。所有代码也将托管在GitHub上面。O(∩_∩)O上节回顾在上面一章节HowTomcatWorks学习笔记–一个简单的Web容器中, 1. 运用Socket和ServerSocket, 2. 并且在遵循HTTP协议的规范下,创

2017-05-17 02:30:05 722

原创 HowTomcatWorks学习笔记--一个简单的Web容器

这本书之前就看过,然而也就开了个头就废弃了,所以一直耿耿于怀。这次决定重新开始,在此记录一些学习心得和本书的主要知识点。所有代码也将托管在GitHub上面。O(∩_∩)O本章节,简要介绍HTTP协议,并且实现一个简陋的web服务器。 主要运用到java.net.Socket和java.net.ServerSocket,并且通过Http消息和客户端进行通信。HTTP协议(基本上是书上的概念搬过来。

2017-05-16 16:10:49 1489 2

原创 值得一看的开发资料

借助开源项目,学习软件开发

2017-05-16 12:19:55 383

原创 MySQL查询优化小结

有索引,但是没有使用到避免Like参数以通配符在前,提倡通配符在后使用。例如,select xx from table where name like ‘%Hi’ 这样即使在name上面存在索引,也会进行全表扫描,不建议使用。而使用,select xx from table where name like ‘Hi%’ 会用到索引,这种方法是值得提倡的。最左前缀原则这是针对多列索引而言的。

2017-05-09 12:46:34 256

原创 Mybatis入门--缓存问题

只要涉及持久化框架,必然少不了缓存机制。Mybatis的缓存分为一级缓存和二级缓存。一级缓存是存在于sqlSession中,而二级缓存范围更大,是可以被多个sqlSession所共用的。一级缓存提升查询效率一个客户端,发送同样的查询请求,如果每次都去访问数据库,效率低下。在一个sqlSession的开启和关闭之间,会维护一个缓存对象。当查询的时候,如果在缓存中存在该数据,直接取出;如果不存在,访问

2017-05-09 01:53:27 694

原创 Mybatis入门--一对多查询

场景新增加一个场景,查询顾客的所有订单信息。实体类需要新增User.java类。由于有每个顾客有多个订单信息,所以用List来保存订单信息:private List<Order> orders = new ArrayList<Order>()。所有代码如下:package domain;import java.util.ArrayList;import java.util.HashMap;imp

2017-05-08 23:49:14 282

原创 Mybatis入门笔记--一些概念

开启一个session需要使用到SqlSessionFactory,而SqlSessionFactory是由SqlSessionFactoryBuilder创建的。具体的代码就是:String resource = "configuration.xml";InputStream stream = Resources.getResourceAsStream(resource);SqlSession

2017-05-08 20:30:22 287

原创 Mybatis入门笔记--终端显示sql语句

正常情况下Mybatis无法显示出sql语句,这样就不便于我们开发调试和排除sql语句的编写错误。1. 导入log4j.jar2. 编写log4j.properties文件log4j.rootLogger=DEBUG, stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appende

2017-05-08 19:42:10 421

原创 Mybatis入门笔记--简单例子

Mybatis的效率和灵活性会在Hibernate之上。 和Hibernate相比较而言,Mybatis更为轻量级,更为易学理解。 不过,它需要我们手工编写sql语句,不像Hibernate那样可以实现sql的自动生成和执行。订单Order的查询1. Order.java创建package domain;/** * Created by laiwenqiang on 2017/5/8

2017-05-08 19:21:09 315

原创 HashMap源码解析(三)

hash函数final int hash(Object k) { int h = hashSeed; if (0 != h && k instanceof String) { return sun.misc.Hashing.stringHash32((String) k); } h ^= k.hashCode(); h ^= (h >>> 20)

2017-02-10 17:12:39 286

原创 HashMap源码解析(二)

成员变量这里的table,就是所谓的 “桶” 的概念,存储 键/值 对。它的长度必须为2的次幂,原因不知。 具体一点,table的初始长度是 DEFAULT_INITIAL_CAPACITY(16),当存储数量的元素大于 16*0.75 时,会进行扩充容量,长度变为 1 << 4 (32)。static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; //

2017-02-10 08:44:23 500

原创 HashMap源码解析(一)

引言由于HashMap相对来说复杂一些,所以从类的注释开始。基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了非同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 /** * Hash table based implementation of th

2017-02-09 15:53:44 381

原创 Iterator和ListIterator对比

Iterator是ListIterator的父类,Iterator不可以并发操作,ListIterator可以并发操作。 方法名称 hasNext() next() remove() hasPrevious() pervious() add(e) nextIndex previousIndex() set(e) 方法说明 是否有下一个元素 获取下一个元

2017-02-09 09:48:09 432

原创 ArrayList源码解析(下)

序列化操作,writeObject和readObjectprivate void writeObject(java.io.ObjectOutputStream s) throws java.io.IOException{ // Write out element count, and any hidden stuff int expectedModCount = modCou

2017-02-08 17:54:34 324

原创 ArrayList源码解析(中)

判断元素位置这些函数都相对简单。因为存储的元素可能为null,所以判断的时候多了一次。public int size() { return size;}public boolean isEmpty() { return size == 0;}public boolean contains(Object o) { return indexOf(o) >= 0;}publi

2017-02-08 12:32:20 756

原创 ArrayList源码解析(上)

成员变量elementData为实际存储数据的数组size为ArrayList的实际大小,和elementData的长度有所区别private static final long serialVersionUID = 8683452581122892189L;//默认的容量private static final int DEFAULT_CAPACITY = 10;private stati

2017-02-07 18:59:50 353

原创 JVM运行时数据区域

图例程序计数器当前线程所执行的字节码的行号指示器。虚拟机栈java方法执行的内存模型描述,存储局部变量表、操作数栈、动态链表、方法出口等信息。本地方法栈和虚拟机栈类似,不过执行的方法是Native方法,是由非java语言实现的方法。java堆最大的一块内存区域,存放对象实例。方法区存储类结构信息、常量、静态变量、即时编译器编译后的代码等数据。运行时常量属于方法区的一部分,存放编译期生成的各种字面量和

2017-02-07 14:34:37 317

原创 观察者模式

观察者模式(又被称为发布-订阅(Publish/Subscribe)模式,属于行为型模式的一种,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态变化时,会通知所有的观察者对象,使他们能够自动更新自己。简单代码实现public interface Observer { public void update(String message);}publi

2017-02-06 19:27:46 237

原创 Spring 自定义xsd

项目结构图代码application.xml<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:people=

2017-02-01 12:24:09 1679

原创 BeanFactory和ApplicationContext联系和区别

在Srping Ioc容器中,有BeanFactory和ApplicationContext两个系列。 实现BeanFactory接口的简单容器,具备最基本功能。 实现ApplicationContext接口的复杂容器,具备高级功能。 IoC容器的主要接口关系图BeanFactory设计路径BeanFactory -> HierarchicalBeanFactory ->

2017-01-23 14:00:27 14837

原创 集合类图

java的集合类图

2017-01-22 15:39:20 423

原创 ThrealLocal详解

ThrealLocal用于提供线程内部的局部变量, 这种变量在多线程环境下访问能保证各个线程里的变量相对独立于其他线程内的变量, 也就是数据隔离。简单例子先看一个简单示的ThreadLocal示例,创建五个线程,每个线程都会, 1. 获取当前日期秒数 2. 存入一个变量中 3. 取出变量打印final ThreadLocal<Long> secs = new ThreadLoca

2017-01-13 17:10:31 1367

原创 使用Policy文件来设置Java的安全策略

众所周知,Java语言具有完善的安全框架,从编程语言,编译器、解释程序到Java虚拟机,都能确保Java系统不被无效的代码或敌对的编译器暗中破坏,基本上,它们保证了Java代码按预定的规则运作。但是,当我们需要逾越这些限制时,例如,读写文件,监听和读写Socket,退出Java系统等,就必须使用数字签名或安全策略文件(*.Policy)。 在企业内部网中,本文提出了使用安全策略文件来设置

2017-01-12 13:04:29 13016

原创 Spring源码--关于AccessController.doPrivileged

AccessController.doPrivileged是一个在AccessController类中的静态方法,允许在一个类实例中的代码通知这个AccessController:它的代码主体是享受”privileged(特权的)”,它单独负责对它的可得的资源的访问请求,而不管这个请求是由什么代码所引发的。DefaultListableBeanFactory的preInstantiateSingl

2017-01-11 00:30:47 6811 1

原创 抽象类继承非抽象类

在java里面抽象类是常见的,一般情况下都是, 1. 抽象类被实体类继承 2. 抽象类被其他的抽象类继承今天查看Spring源码,发现,public abstract class FactoryBeanRegistrySupport extends DefaultSingletonBeanRegistry {public class DefaultSingletonBeanRegist

2017-01-10 17:35:24 4178

原创 Intellij Idea的日常

不定期更新使用过程中的小方法和技巧, - 显示方法调用的关系,Ctrl+Alt+H - 删除项目, 1. 先关闭项目,然后界面上出现项目例表, 2. 鼠标移到你想要删除的项目上(不要点击,一点就打开了), 3. 然后按DELETE键

2017-01-10 16:19:41 288

原创 接口多继承

一直以为java是没有多继承的,但是才发现其实对于interface,是可以多继承的。今天查看Spring源码,发现,public interface ConfigurableBeanFactory extends HierarchicalBeanFactory, SingletonBeanRegistry这样一段代码。类为何没有多继承java的类没有多继承,原因是为了避免所谓的钻石危机,如果B、C

2017-01-09 10:52:55 410

原创 IntelliJ IDEA 删除项目

IntelliJ IDEA 删除项目, 1. 先关闭项目,然后界面上出现项目例表, 2. 鼠标移到你想要删除的项目上(不要点击,一点就打开了), 3. 然后按DELETE键

2017-01-05 16:49:31 10818 4

原创 tomcat责任链模式

本文模拟一个FilterChain过滤器处理请求Request,并且返回Response。 用到的设计模式是, 责任链。 责任链设计模式 每个对象都持有下家对象的引用而形成一条链,请求在这个链条上传递,直到某个对象处理这个请求。发出请求的客户端并不知道该条链子的哪一个对象处理了消息。定义一个Filter接口

2017-01-05 11:13:21 1124

原创 栈的最小值查找(O1)

问题描述错误的解决思路正确的解决思路问题描述 对栈增加一个获取最小值的方法(getMin),要求, 时间复杂度为O(1)。错误的解决思路定义一个minIndex,存储最小值的下标。每次push的时候比较大小, 如果小于最小值,则minIndex修改为当前下标, 否则不修改。这样貌似可以,但是发现一个严重的问题, 如果pop操作,把最小值出栈后,minIndex就无效了。

2017-01-05 00:57:17 1685

空空如也

空空如也

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

TA关注的人

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