自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

1024

我的学习笔记,便于理解和使用时查找

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

原创 设计模式——Observer观察者模式

设计模式——Observer观察者模式观察者模式当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知它的所有依赖对象。其实就是订阅和发布,只有订阅了才能收到发布的信息。主要解决:一个对象状态改变给其他对象通知的问题,而且要考虑到易用和低耦合,保证高度的协作。观察者模式属于行为型模式。Servlet中的Listener就是基于观察者模...

2018-03-31 03:15:41 266

原创 设计模式——Decorator装饰器模式

设计模式——Decorator装饰器模式装饰器模式装饰器模式(DecoratorPattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。同时,装饰器模式要做到对装饰类的使用者透明。装饰器模式结构Component:抽象组件角色,...

2018-03-29 15:34:54 250

原创 KMP算法Java实现

KMP算法Java实现字符串模式匹配问题,是求pattern模式字符串在target目标字符串中的位置。一般的暴力求解方法时间复杂度是O(m*n),而KMP算法可以在O(n+m)的时间数量级上完成串的模式匹配。其改进在于每当一趟匹配过程中出现字符比较不相等时,不需要回溯i指针,而是利用已经得到的“部分匹配”的结果将pattern模式字符串向右滑动,继续进行比较。这里有最通俗易懂的介绍KMP的思想:...

2018-03-28 13:58:06 229

原创 图的遍历——BFS和DFS

BFSBFS(Breadth First Search)广度优先搜索,类似于二叉树的层序遍历,基本思想:首先访问起始顶点v,接着由v出发,依次访问v的各个未访问过的邻接顶点w1,w2,...,wn,然后再依次访问w1,w2,...,wn所有未被访问过的邻接顶点。。。类似的思想还将应用于Dijkstra单源最短路径算法和Prim最小生成树算法。广度优先搜索是一种分层查找过程,不像深度优先有往回退的情...

2018-03-27 16:18:41 1895

原创 动态规划——01背包问题

问题描述01背包问题是特别经典的一个DP(DynamicProgramming)动态规划问题。在M件物品取出若干件放在空间为W的背包里,每件物品的体积为W1,W2至Wn,与之相对应的价值为P1,P2至Pn。也就是往包里放总价值最大的东西,所以一个物品拿与不拿就成了选择的问题。例如有如下物品(2/3)、(4/4)、(3/3)三样物品(w/p),背包空间5,如果拿价值最大的(4/4),则拿不了其他东西...

2018-03-27 14:40:02 267

原创 面试知识点总结——操作系统

面试知识点总结——操作系统和网络这里总结网上各大面经上出现的题目,持续整理。操作系统1.     进程与线程的区别。进程是系统进行资源分配和调度的基本单位,而线程是进程的一个实体,是系统调度和分派的基本单位;进程中各个线程可以共享进程的资源,线程之间可以相互的控制(并发编程),而进程之间不能共享资源(特殊情况除外,操作系统中有两个方法就就可以让一个进程直接去读取另外一个进程的内存,但是是高度保密的...

2018-03-20 13:32:18 961

原创 面试知识点总结——Java基础

面试知识点总结——Java基础这里总结网上各大面经上出现的题目,持续整理。1.     九种基本数据类型的大小,以及他们的封装类。byte1/float4/short2/double8/int4/char2/long8/boolean包装类一般首字母大写,除了Integer(int)和Character(char)。2.     Switch能否用string做参数?Java7之前无法使用字符串,...

2018-03-20 10:43:57 369 1

原创 Java中的锁

Java中的锁锁是用来控制多个线程访问共享资源的方式,一个锁能够防止多个线程同时访问共享资源(有些锁也可以并发访问共享资源,读写锁)。java.util.concurrent.locks包中包含以下内容:Lock接口在Java SE5之前都是靠synchronized关键字实现锁功能,而之后并发包新增了Lock接口以及实现类,使用时需要显示地获取和释放锁。Lock 实现提供了比使用 synchro...

2018-03-15 22:19:37 247 3

原创 Java中的线程池

Java中的线程池使用线程池的优点:降低资源消耗、提高响应速度、提高线程的可管理性。线程池原理线程池处理流程:if (核心线程池没满){    //创建线程执行,执行完后会去工作队列中获取新的任务task.run()}else if(工作队列没满){    //将提交的任务存储在工作队列里}else if (线程池没满){    //创建线程执行任务}else {    //其他策略处理无法执行的...

2018-03-14 10:51:24 226

原创 ConcurrentHashMap学习笔记

ConcurrentHashMap学习笔记简介ConcurrentHashMap是线程安全且高效的HashMap。我们都知道HashMap不是线程安全的,在并发编程中使用HashMap可能导致死循环。那么除了ConcurrentHashMap,还有Hashtable和Collections.synchronizedMap()方法都是线程安全的Map。Hashtable和Collections.sy...

2018-03-13 20:28:57 226

原创 NIO入门和使用

NIO入门和使用阻塞和非阻塞,同步和异步阻塞和非阻塞:程序在访问数据的时候,阻塞往往需要等待缓冲区中数据准备好才能继续处理,否则等待;非阻塞则是不论数据是否准备好都会返回。同步和异步:同步应用程序直接参与IO读写操作,同步IO方式必须阻塞在某个方法上(阻塞IO或非阻塞轮询IO的方式);而异步的IO操作交给了操作系统去处理,当IO完成后给应用程序一个通知即可。Java IO模型B...

2018-03-13 14:52:48 288

原创 Java源码阅读——TreeMap和红黑树

Java源码阅读——TreeMap和红黑树红黑树什么是红黑树红黑树是基于二叉搜索树的,为了能以较快的时间O(logN)来搜索一棵树,需要保证树总是平衡的(或者至少大部分是平衡的),这就是说对树中的每个节点在它左边的后代数目和在它右边的后代数目应该大致相等。红黑树就是这样的一棵平衡树,对一个要插入的数据项,插入例程要检查会不会破坏树的特征,如果破坏了,程序就会进行纠正,根据需要改变树的结构,从而保持...

2018-03-12 21:40:44 318 1

原创 MyBatis分页

MyBatis分页最早使用普通JDBC使用分页的时候,都是SELECT * FROM students LIMIT num1,num2;意思就是从students这个表中找第num1的记录开始往下的num2个记录。每次分页都得计算总条数,然后计算页数等等。后来使用MyBatis后, 该如何进行分页呢?当然也可以用以上的方法进行传参,但是每次遇到分页都得重写一个,很麻烦。实现MyBatis的拦截器实...

2018-03-11 14:44:50 729

原创 Java琐碎整理

Java面试笔试相关琐碎知识点,整理,持续更新。。。直到拿到offer。。。1.     静态块:用static声明,JVM加载类时执行,仅执行一次 构造块:类中直接用{}定义,每一次创建对象时执行 执行顺序优先级:静态块>main()>构造块>构造方法 父类静态成员和静态块、子类静态成员和静态块、父类构造方法、子类构造方法静态块按照声明顺序执行。2.     A.java用来运...

2018-03-09 11:30:01 256

原创 二叉树前中后序遍历——迭代和栈方式实现

二叉树前中后序遍历——迭代和栈方式实现用递归实现三种遍历方式只需改变递归顺序就可以实现任一顺序的遍历。而使用栈方式,则不同情况需要进行不同的考虑。首先,定义一个简单的二叉树节点的数据结构类:class Node {    int val;    Node left;    Node right;    public Node(int val) {        this.val = val;   ...

2018-03-08 20:12:19 10275 3

原创 MyBatis代码生成器——MyBatis Generator

MyBatis代码生成器——MyBatis GeneratorMyBatis Generator能够根据配置生成不同类型的代码,代码包含了数据库表对应的实体类、mapper接口类、mapperXML文件和Example对象等。这些代码中几乎包含了全部的表单操作方法,可以极大程度上方便我们使用MyBatis。说实话,刚刚接触MyBatis时,我不知道有这玩意这么好使,pojo和mapper.xml文...

2018-03-07 22:44:36 6953 1

原创 JVM学习笔记

Java虚拟机学习笔记GC(Garbage Collection)Java和JVM的历史1996年 SUN JDK 1.0 Classic VM,纯解释运行,使用外挂进行JIT 1997年 JDK1.1 发布,AWT、内部类、JDBC、RMI、反射 1998年 JDK1.2 Solaris Exact VMJIT 解释器混合 ,Accurate Memory Management...

2018-03-07 09:44:35 583

原创 Java源码阅读——HashMap

Java源码阅读——HashMap定义public class HashMap<K,V> extends AbstractMap<K,V>    implements Map<K,V>, Cloneable, Serializable 继承了AbstractMap抽象类,实现Map,Cloneable,Serializable接口。HashMap 是一个散列表,...

2018-03-06 15:20:41 760

原创 Java源码阅读——LinkedList

Java源码阅读——LinkedList上次介绍了ArrayList源码,自然少不了LinkedList。定义public class LinkedList<E>    extends AbstractSequentialList<E>    implements List<E>, Deque<E>, Cloneable, java.io.Seria...

2018-03-05 20:31:46 227

原创 Java源码阅读——ArrayList

ArrayList源码阅读起源这里说的起源不是ArrayList,而是插个题外话,为什么要开始源码阅读?本人研二,上周接到阿里的内推电话测评面试,20分钟左右,最后问了Java基础的ArrayList。心想,这个有啥好问的,但由于当时内心还是比较紧张的,所以说的不清不楚,说到底层说了初始为10容量,每次扩容50%,但问到每次怎么实现扩容的,当时就想着是基于数组实现的,具体怎么实现的还真一时没说上来...

2018-03-05 14:32:56 283

转载 ThreadLocal详解

概述相信读者在网上也看了很多关于ThreadLocal的资料,很多博客都这样说:ThreadLocal为解决多线程程序的并发问题提供了一种新的思路;ThreadLocal的目的是为了解决多线程访问资源时的共享问题。如果你也这样认为的,那现在给你10秒钟,清空之前对ThreadLocal的错误...

2018-03-05 10:33:11 181

空空如也

空空如也

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

TA关注的人

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