shichang

Welcome!

 2018-07-17 10:20:05 | 0条评论  |  ? java ?

Java线程安全

线程安全:保证在多线程运行环境中,程序的能正确运行并且正确性有迹可循。主要体现在多个线程对共享资源的抢夺,同时在保证程序能正确运行的情况下减少性能消耗。 三种方式可以保证线程安全: ### 互斥同步 使用互斥来保证线程安全和同步。在Java中有Synchronized关键字和ReentrantLock两种互斥手段。 `Synchronized`关键字是由JVM提供的语法,可以修饰实例方法,静态
 2018-07-01 16:01:05 | 0条评论

线程的同步

为了实现数据的共享,资源的合理分配,进程之间也必须要进行同步。线程的同步更是为了消除线程之间的不确定性,使得整个程序的运行和正确性都有迹可循,提高CPU的执行效率。 ### 加锁: 将资源加锁保证同一时刻只能有一个线程在访问和修改资源 ### 互斥 不能有两个进程同时在临界区中, 进程能够在任何数量和速度的CPU上正确执行, 在互斥区域外不能阻止另一个进程的运行, 进程不能无限制地等待进入临
 2018-07-01 13:53:38 | 0条评论  |  ? mysql ?

mysql 索引,视图,数据导入导出,备份和恢复

### 索引: 表中有大量的记录时,可以通过建立索引加快查询速度。索引应该是一种分类,就像字典中以首字母排序,找到首字母后,又可以以第二个字母排序,而索引就记录每个字母作为开始位置的次序页数,查找时就先查找一遍索引,再去对应的索引区中查找。 避免了只能全局遍历的惨剧。 `将无序的记录按照某种规律和逻辑用另一种数据结构组织起来使得查询的效率能加快的数据组织方式。` 索引的使用: 在查询表时,使用w
 2018-06-22 20:23:38 | 0条评论

HTTP缓存机制

HTTP协议中一般使用协议头字段进行缓存控制,缓存分为两种: 强缓存和协商缓存,强缓存的优先级高于协商缓存。 ### **模型:** 用户点击->浏览器检测强缓存(命中则终止)->未命中,发送请求到协商缓存(命中,向服务器发送校验请求)->未命中,请求服务器下发资源,并更新字段值 ### **强缓存** 如果命中缓存,不会与服务器进行通信。 强缓存是一种无验证缓存,一般使用HTTP的头字段exp
 2018-06-17 20:37:42 | 0条评论  |  ? java ?

异常

### 抛出异常 异常抛出后,后面的语句将不会执行 ```java throw new Exception(); ``` 执行过程:使用new在堆上创建异常对象,当前的执行路径被终止,从当前的执行环境中弹出异常对象的引用,异常处理机制接管程序,并寻找一个恰当的地方继续执行程序。一切都是为了保证程序从错误状态恢复。 ### 异常体系 ``` Throwable——>Error——>StackOve
 2018-06-17 20:30:58 | 0条评论  |  ? 设计模式 ?

设计模式-单例模式

单例模式:一个类只能有一个实例,并且整个项目都能访问该实例,私有化构造方法,私有化静态实例,通过方法提供给外部访问实例,根据实例的创建时间不同单例模式可以分为饿汉式和懒汉式两种 ### 饿汉式:实例在类加载时创建 ```java public class Instance{ private static Instance instance = new Instance(); pr
 2018-06-14 16:47:15 | 0条评论

docker + shadowsocks代理搭建

- `docker pull oddrationale/docker-shadowsocks`通过docker获取shadowsocks - `docker run -d -p 1984:1984 oddrationale/docker-shadowsocks -s 0.0.0.0 -p 1984 -k mypassword -m chacha20` 使用端口8338开启代理,密码为mypa
 2018-06-08 11:06:10 | 0条评论  |  ? java ?

关于java

1995年,sun公司发布JAVA1.0版本,至今已经发展了二十三年,java分为三个部分: - java SE(标准版,主要写桌面程序,现在被C#,QT和HTML取代) - java EE(企业版,java语言最强大的领域) - java ME(精简版,主要活跃于嵌入式开发,现在被安卓和IOS取代) 同样作为面向对象语言,java在抽象程度上比c++要高,对于业务编程,用java比用
 2018-06-04 12:30:56 | 0条评论  |  ? 操作系统 ?

死锁

### 计算机资源 计算机中的资源分为两种:可抢占资源和不可抢占资源。 如果进程之间都是可抢占的资源那么无论如何都不会发生死锁。可抢占资源表示将资源从该进程手中抢夺之后,系统不会因此发生紊乱。(有一种重要性的感觉,说明该资源对该进程的重要性不高,并且该进程应有被抢占的处理方案)。
### 死锁的描述 1. 通过有向图描述资源的使用和被占用的情况 2. 通过资源需求矩阵,和资源拥有矩阵,资源可
 2018-06-03 21:52:11 | 0条评论

mysql优化

### 数据库设计三范式 1NF: 表中的属性不可再分,确保每一列的原子性 2NF: 满足1NF,并确保表中的属性必须依赖于全部主键而非部分主键 3NF: 满足2NF,并确保非主键外的所有属性互相之间不依赖 遵循三范式优化表的结构,可以减少数据的冗余,使得数据的插入删除和修改不会出现异常。 [知乎:数据库第一二三范式详解](https://www.zhihu.com/question/2