摘要: CAS 指的是目前 CPU 中广泛支持的一种对内存中的共享数据进行操作的特殊指令,这个指令会对内存中的共享数据进行原子性操作。 CAS 操作过程 CPU 会将内存中将要被更改的数据与期望值做比较,相同则将内存中的值替换成新的值,否则不做操作,最后 CPU 将原来的旧值返回。其中这一系列操作是原子的。 阅读全文
posted @ 2018-12-27 11:02 扇影无风 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 简单工厂模式并不属于 GoF 23 个经典设计模式,但通常用它作为学习其它工厂模式的基础。 简单工厂模式定义 定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类。因为在简单工厂模式中用于创建实例的方法是静态方法,所以简单工厂模式又被称为静态工厂方法(Static 阅读全文
posted @ 2018-12-18 13:46 扇影无风 阅读(1375) 评论(0) 推荐(0) 编辑
摘要: [TOC] Windows 中安装使用 Hexo 的步骤如下: 安装 Node.js 下载 Node.js 安装文件直接安装即可。 安装 Git 下载 Git 安装文件直接安装,安装完成之后使用 Git 生成本机的 SSH Key 并添加到 Github 中(因为本地仓库和 Github 之间通过 阅读全文
posted @ 2018-12-14 10:18 扇影无风 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 在多线程编程中,线程个数一般要大于CPU个数,而每个CPU在同一时刻只能被一个线程使用,为了让用户感觉多个线程同时执行,CPU资源的分配采用了时间轮转的策略,也就是给每个线程分配一个时间片,线程在分配时间片内占用CPU执行任务,使用完时间片后,就会处于就绪状态并让出CPU让其它线程占用,这就是上下文 阅读全文
posted @ 2018-11-17 10:31 扇影无风 阅读(282) 评论(0) 推荐(0) 编辑
摘要: [TOC] 一、ThreadLocal 的理解 ThreadLocal 由 JDK 包提供,它提供了线程本地变量,如果创建了一个 ThreadLocal 变量,那么访问这个变量的每个线程都会有这个变量的一个本地副本。当多个线程操作这个变量的时候,实际上是操作自己本地内存里面的变量,从而避免了线程安全 阅读全文
posted @ 2018-11-11 14:42 扇影无风 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 下面将从一道阿里巴巴试题详细分析Java程序执行顺序。 阿里巴巴试题 运行结果为: 1:j i=0 n=0 2:构造块 i=1 n=1 3:t1 i=2 n=2 4:j i=3 n=3 5:构造块 i=4 n=4 6:t2 i=5 n=5 7:i i=6 n=6 8:静态块 i=7 n=99 9:j 阅读全文
posted @ 2018-11-02 15:41 扇影无风 阅读(223) 评论(0) 推荐(0) 编辑
摘要: TCP/IP协议栈主要分为四层:应用层、传输层、网络层、数据链路层,每层都有相应的协议,如下图: 所谓的协议就是双方进行数据传输的一种格式。整个网络中使用的协议有很多,所幸的是每一种协议都有RFC文档。在这里只对IP、TCP、UDP协议头做一个分析。 首先来看看在网络中,一帧以太网数据包的格式: 在 阅读全文
posted @ 2017-07-13 11:01 扇影无风 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 1. ICMP协议介绍 IP协议并不是一个可靠的协议,它不保证数据被送达,那么,自然的,保证数据送达的工作应该由其他的模块来完成。其中一个重要的模块就是ICMP(网络控制报文)协议。 当传送IP数据包发生错误,比如主机不可达,路由不可达等等,ICMP协议将会把错误信息封包,然后传送回给主机。给主机一 阅读全文
posted @ 2017-07-13 10:16 扇影无风 阅读(508) 评论(0) 推荐(0) 编辑
摘要: 1. 数据链路层使用的信道 (1)点对点信道:这种信道使用一对一的点对点通信方式(PPP); (2)广播信道:这种信道使用一对一的广播通信方式。 2. 使用点对点信道的数据链路层 点对点信道的数据链路层在进行通信时的主要步骤如下: (1)节点 A 的数据链路层把网络层交下来的 IP 数据报添加首部和 阅读全文
posted @ 2017-07-13 09:58 扇影无风 阅读(124) 评论(0) 推荐(0) 编辑
摘要: 1 阅读全文
posted @ 2017-07-12 16:45 扇影无风 阅读(108) 评论(0) 推荐(0) 编辑