JDK源码    2016-10-11 12:18:03    154    0    0
## 1. String的定义 - java.lang.String 在虚拟机中是 final不可变的(在常量池中 一旦被创建,不可修改) - str.substring()、str.concat()只是在常量池中str原始串的基础上,在Java堆中又生成了一个新的引用对象 - String的内容 只由 value[]数组决定 - 例1: ``` private static vo
数据结构与算法    2016-10-06 13:41:19    599    0    0
项目地址:[https://github.com/nibnait/algorithms/tree/master/src/SwordOffer](https://github.com/nibnait/algorithms/tree/master/src/SwordOffer) # 现场写代码的几个思路(几种常见套路) ## 1. 双指针解题 - [b04_替换空格](https://gith
2016-09-25 13:11:16    293    0    0
  1. 从底层数据库开始
    数据库主从复制
    数据库水平拆封&库表散列(Hash算法对数据进行一个路由)
    字段优化、
    建立索引、调用存储过程
    查询缓存(Hibernate一级缓存(SessionFactory级别))
  2. Java代码优化

  3. 服务器缓存
    Hibernate二级缓存((进程/集群范围内的缓存)存放对象的散装数据)
    Memcached、Redis、MongoDB

  4. 服务器集群、LVS分布式

  • Redis2.0的Value还可以是List、Set、dict(hash表)等数据结构
  • Redis支持主从模式的数据备份
  • Redis支持数据的持久化,(内存使用率>80%时)可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用

但是在并发的情况下,

  • Memcache用CAS保持数据一致性,用于在动态系统中减少数据库负载,提升性能;做缓存,提高性能(适合读多写少,对于数据量比较大,可以采用sharding)
  • 而Redis对事物的支持比较弱,只能保证事物中的每个操作连续执行。
    适用于数据量较小的更性能操作和运算上
  • MongoDB:主要解决海量数据的访问效率问题。事件记录、内容管理或者博客平台,比如评论系统。
Java    2016-09-24 05:25:06    379    0    3
#关于容器: - Set - ```public interface Set extends Collection``` - HashSet 无序,不重复 - LinkedHashSet 有序链表,不重复 - TreeSet 默认自动将元素按照升序排列,不重复 - List 有序,可重复 - ```public interface List extends Collect
2016-09-24 05:23:45    319    0    0

参考资料:

 - HashMap的实现原理:http://wiki.jikexueyuan.com/project/java-collection/hashmap.html

 - Hashtable的实现原理:http://wiki.jikexueyuan.com/project/java-collection/hashtable.html

 - ConcurrentHashMap 的实现原理:http://wiki.jikexueyuan.com/project/java-collection/concurrenthashmap.html

Spring    2016-09-24 07:27:08    365    0    0

IOC

Inversion of Control(控制反转)又叫依赖注入(DI)

AOP

Aspect Oriented Programming:面向切面的编程

2016-09-23 07:01:04    352    0    0

## 稳定性:

    选择排序、希尔排序、快速排序和堆排序不是稳定的排序算法,

    冒泡排序、插入排序、归并排序、基数排序是稳定的排序算法。


2016-09-23 06:00:38    64    0    0

# Morris神级遍历

 * 空间复杂度:O(1)【使用二叉树节点中大量的指向null的指针。】

 * 时间复杂度:O(h)

数据结构与算法    2016-09-19 08:55:21    736    0    0
# 题目:给定字符串str1 和str2,请返回str2 在str1 中第一次出现的位置;如果str1 不包含str2,返回-1 ## 1. 暴力解法 从str1[0]位置开始与str2[0]一个一个匹配,一步一步往下走。 str1的长度为N,str2的长度为M, 则时间复杂度为:O(N*M) ## 2. KMP算法 由于暴力算法,做了很多重复的匹配工作,比如str
数据结构与算法    2016-09-18 18:53:07    319    0    0
## 题目: 给定一个字符串,求它的最长回文子串长度。 ## 1. 暴力出奇迹 求出字符串n的所有字串(O(N^2)),然后判断每个字符串是否为回文串(O(N))。 时间复杂度:O(N^3) ## 2. 根据回文串都是对称的特性 分别以每个字符串(奇数个字符)或者两个字符串中间的位置(偶数个字符),向两边扩,直到无法再扩,记下长度。因为这样的位置一共有(2N+1)个,每个位置