- 博客(64)
- 资源 (2)
- 收藏
- 关注
原创 TCP/IP TIME_WAIT
TIME_WAIT状态原理 ---------------------------- 通信双方建立TCP连接后,主动关闭连接的一方就会进入TIME_WAIT状态。 客户端主动关闭连接时,会发送最后一个ack后,然后会进入TIME_WAIT状态,再停留2个MSL时间(后有MSL的解释),进...
2018-09-09 10:13:00
109
原创 插入排序(insertSort)
插入排序,在数组中,保证 从位置0 到 p 位置 配上的元素都是已排序状态。每次比较 p+1 位置上的元素和已排序的列表,将 p+1 位置上的元素,加入到已排序的列表中。 /** * created by Demon, on 2018/9/6 */public class Ins...
2018-09-06 17:01:00
221
原创 关于 Integer
最近面试,被问到两个Integer直接用 == 比较有什么问题。自己回答的不是很好,先总结下: @Test public void integerTest() { // case1 Integer a = new Integer(0); ...
2018-09-05 11:37:00
151
原创 aop + annotation 实现统一日志记录
aop + annotation 实现统一日志记录 在开发中,我们可能需要记录异常日志。由于异常比较分散,每个 service 方法都可能发生异常,如果我们都去做处理,会出现很多重复编码,也不好维护。这种场景就应该想到 aop, aop 的出现就是为了解决这类问题。 我们可以自定义一个注...
2018-07-22 12:20:00
329
原创 docker 入门
我们学习新技术的三要素:是什么?能干什么?有什么优势? 传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程; Docker是在操作系统层面上实现虚拟化,容器内的应用进程直接运行于宿主的内核。容器内没有自己的内核,复用本地主机的操作系统,而且也...
2018-07-14 12:32:00
104
原创 关于 hashcode
hashCode()方法被用来获取给定对象的唯一整数, 这个整数被用来确定对象被存储在HashTable类似的结构中的位置。默认的,Object类的hashCode()方法返回这个对象存储的内存地址编号。覆盖 equals 方法的类中,必须覆盖 hashCode 方法。如果不这样做会违背 ha...
2018-07-08 19:05:00
952
原创 CSRF 漏洞处理
CSRF 漏洞 由于HTTP协议是无状态的,所有客户端和服务器端的数据交换和鉴权信息都必须附带在HTTP请求中。 通常情况下,将鉴权信息放在COOKIE里已经足够。浏览器发起请求的时,会自动带上对应域名的COOKIE,服务器端接收到COOKIE后,就可以准确的判断是谁在发起请求。 但是...
2018-07-02 20:33:00
268
原创 Java 读取 jar 包文件
最近,做项目遇到这样一个需求,需要在 spring 容器启动后,从文件初始化一些数据。编码完成后,我在本地测试的时候,没有问题,文件可以读到。但是项目部署到 web 容器后,就报错,找不到文件。 开始的 demo 如下,文件在 resources 文件夹下: @SuppressWarn...
2018-07-01 17:13:00
147
原创 Java 内存模型
物理机并发处理方案 绝大多数计算任务,并不是单纯依赖 cpu 的计算完成,不可避免需要与内存交互,获取数据。内存要拿到数据,需要和硬盘发生 I/O 操作。计算机存储设备与 cpu 之间的处理速度有几个数量级的差距。现代计算机为了减少这种差距,在 cpu 与内存之间加了一层高速...
2018-06-23 15:42:00
101
原创 非阻塞同步之 CAS
为解决线程安全问题,互斥同步相当于以时间换空间。多线程情况下,只有一个线程可以访问同步代码。这种同步也叫阻塞同步(Blocking Synchronization). 这种同步属于一种悲观并发策略。认为只要不同步,共享数据就会被并发访问。随着硬件指令集的发展,我们可以采用基于冲突检测的乐观并...
2018-06-23 10:16:00
299
原创 如何成为技术专家
文章来源于 -- 时间的朋友 拥有良好的心态。首先要有空杯心态,用欣赏的眼光发现并学习别人的长处,包括但不限于工具的使用,工作方法,解决问题以及规划未来的能力等。向别人学习的同时要注意不要迷信权威,一定要记住实践才是检验真理的唯一标准,少空谈多动手去做。要坚持学习,要相信量变会...
2018-06-17 22:45:00
182
原创 redis 集群
redis 集群架构 redis 集群的架构细节: 所有 redis 节点彼此互联(PING-PONG 机制),内部使用二进制协议优化传输速度和带宽; 节点的 fail 是通过集群中超过半数的节点检测失效时才失败; redis-cluster ...
2018-06-17 10:37:00
94
原创 redis 基础
redis 五种数据类型 String:key-value Redis中使用的字符串是通过包装的,基于c语言字符数组实现的简单动态字符串(simple dynamic string, SDS)一个抽象数据结构。 127.0.0.1:6379> set name Michael...
2018-06-15 15:07:00
103
原创 起点
起点总是美好的,因为每个起点都意味着一次成长,也意味着无限可能。 作为一个人,要有空杯心态。要经常反思自己要做什么?想要什么?对现在的状态满意吗?和梦想中的自己还有什么差距?然后走出自己的舒适区,去面对未知的世界,这样你的灵魂才会更新。无论未来遇到什么困难,只要保持学习的心态和敢于挑...
2018-06-13 14:53:00
121
原创 volatile 和 synchronize
当一个变量被定义为 volatile 时,该变量会具备以下特性: 保证此变量对所有线程的可见性;任一个线程修改了该变量,其他线程立即可见;它是最轻量级的同步机制,只能保证可见性,并不能保证原子性; 使用 volatile 还可以禁止指令重排序优化;普通变量仅仅会保证...
2018-06-11 12:40:00
109
原创 对象导论
我们平常使用的语言大多数都是面向对象的语言。 所有编程语言都提供抽象机制,人类能够解决的问题复杂度,直接取决于抽象的类型和质量。汇编语言是对底层机器语言的轻微抽象。接着出现的 "命令式"语言(BASIC、C等)是对汇编语言的抽象;这类语言建立的抽象在解决问题...
2018-06-10 17:16:00
108
原创 uc 项目总结
本人决定以后每完成一个项目,就做一个总结! iotx-uc (主要做物联网环境下, 用户设备, 场景的分享) 由于最开始的 项目架构设计,公司这边开发主管没有和上面架构师确认过,导致接口已经开发完成,才发现存在一些问题。 最开始的数据结构中,只有 ho...
2018-06-09 16:16:00
307
原创 JVM 垃圾回收
什么对象可以被 JVM 回收? Java 通过可达性分析算法,来判断对象是否存活。这个算法是通过一系列称为 “GC ROOTS” 的对象为起始点,从这些起始点向下检索,检索所走过的路径称为引用链(Reference Chain)。当一个对象到 “GC ROOTS” 没有任何引...
2018-06-09 16:15:00
80
原创 Linux系统启动详解
Linux系统启动详解 Linux系统启动流程如下: 加载BIOS(Basic Input Output Systen) 信息-----其升级方案是EFI(可扩展固件接口英文名Extensible Firmware Interface 的缩写),BIOS中包含了CPU的相关信息、设...
2018-06-04 23:40:00
119
原创 计算机硬件基础
计算机五大架构: 系统单元:系统单元包括 CPU 与内存及主板相关组件。CPU 是一个具备特定功能的芯片,内部具有微指令集,分为控制单元和逻辑运算单元; 记忆单元:包括主存储器 (main memory, RAM) 与辅助内存,其中辅助内存其实就是大家常听到的『储存 装置』包括硬盘、软...
2018-06-04 23:33:00
118
原创 autoConfig 之多环境打包
最近项目中使用了 autoConfig 工具; // pom文件中定义多个环境 <profiles> <profile> <id>test</id> <properti...
2018-06-04 19:38:00
188
原创 MYSQL 索引
数据库表添加索引可以提高查询效率,开发中我们经常使用的索引有唯一索引和组合索引。 唯一索引 (数据库表多列加上唯一索引,可以保证在并发条件下,数据库不会有脏数据。因为 在开发中,我们很多业务场景都需要保证数据库记录的唯一。如果字段建立了唯一索引,但是 值为null,这时唯一索...
2018-06-04 11:50:00
83
原创 代码自动化测试
相信很多人和我一样,都不愿意写单元测试。尤其是在为了单纯提高覆盖率,应付测试的时候。但是,为了提高代码的健壮性,并为以后的代码重构,优化建立基础。测试还是特别重要的一个开发工作。 最近,发现了一种测试的写法,如下: package com.netease.test;import org...
2018-05-17 16:15:00
417
原创 MYSQL 之 allowMultiQueries=true
今天遇到一个问题,以前数据库可以执行成功的一个 sql 突然无法执行。sql 如下: <update id="batchUpdate" parameterType="java.util.List"> <foreach collection="devRelD...
2018-05-16 22:38:00
2279
原创 MYSQL 之 ON DUPLICATE KEY UPDATE
在设计数据库表的时候,为保证数据记录的唯一,防止并发情况下,数据库插入多条数据,我们通常会设计uk。但有了uk后,会存在这样一个问题。一条记录不能被删除多次或插入多次,但实际业务中经常会有这样的应用场景的。比如一个用户绑定一个设备,我下次解绑后,还需要可以再次绑定。 这时可以使用 ON DU...
2018-05-16 10:44:00
282
原创 synchronized 与 ReentrantLock
synchronized 作用于非静态方法 public class Sync implements Runnable{ private static int count; public Sync() { count = 0; }...
2018-05-10 14:31:00
82
原创 Effective Java 之通用程序设计
作为一个每天和代码打交道的人来说,我们如何写出优秀的代码呢?优秀的代码应该是这样的: 优秀的代码是简洁的,大道至简,最简单的才是最好的; 优秀的代码是符合规范的,世界不是混沌的,万事万物都有规可循; 优秀的代码是高效的,人类从非洲...
2018-05-07 22:28:00
80
原创 一张图读懂JVM
每一个Java开发者都知道字节码是通过JRE(Java 运行时环境)执行的,JRE实现了JVM ,JVM可以解析执行字节码文件。 什么是JVM? 虚拟机是一个软件,它是物理机的实现。Java 开发是建立在一次编译到处运行(Write Once Run Any...
2018-05-06 21:28:00
134
原创 Java并发编程之 CompletionService
最近遇到一个需求,其中一个操作比较耗时。为了提高效率,我选择新开线程异步去做。由于需要对方法的返回值进行操作,我选择使用FutureTask,可以循环获取task,并调用get方法去获取task执行结果,但是如果task还未完成,获取结果的线程将阻塞直到task完成。后来发现了...
2018-05-04 11:24:00
120
原创 Linux 内存管理
在Linux中经常发现空闲内存很少,似乎所有的内存都被系统占用了,表面感觉是内存不够用了,其实不然。这是Linux内存管理的一个优秀特性,在这方 面,区别于 Windows的内存管理。主要特点是,无论物理内存有多大,Linux 都将其充份利用,将一些程序调用过的硬盘数据读入内存,利用内...
2018-05-03 11:55:00
75
原创 影子设备心得
最近做了影子设备项目(device shadow),就是建立设备模型,对真实设备进行映射。 本人主要负责设备注册, (使用 guava缓存),处理前台发送的mq 消息, 使用 OTS 进行保存,修改,更新 使用技术 Java 回调,任何语言环境下的代码,调用方式有三种 ...
2018-05-03 11:53:00
1015
原创 基于注解@Aspect的AOP实现
面向对象编程(OOP)有一些弊端,当需要为多个不具备继承关系的对象引入一个公共的行为时,例如日志、安全监测等,我们需要在每个对象里添加公共的行为,这样程序中会有很多重复代码,不便于维护。这时候就需要面向切面编程( AOP)的支持。 最近在做 iot 的一个项目...
2018-05-03 11:48:00
178
原创 Vi 编辑器
vi是Linux及类Unix系统中主流的命令行文本编辑器,功能极为强大,vim是增强版本的vi,vim支持高亮度显示;其他文本编辑器还有emacs,比vi还要强大;当用vi加一个文件名,如果这个文本文件存在则是打开这个文件,如果不存在则是创建这个文本文件 vim有三种工作模式: 命令...
2018-05-03 09:23:00
77
原创 动态代理
动态代理是 Java 一大特性。它的显著优势就是无侵入式的扩展代码。 通俗来讲就是可以用来做方法的增强,让你可以在不修改源码的情况下,利用动态代理,可以在运行时获取类的二级制字节流,可以用来 增强一些方法或者功能,在方法执行前后做任何你想做的事情。 比如可以添加调用日志,做事务控制等。目前动态代理主要分为 Java 自己提供的动态代理和 CGLIB 类似框架。 Java 自带的动态...
2018-02-08 16:59:42
146
转载 IoC框架(依赖注入 DI)
注:本文转载至 BBSMVC ,深入理解 IOC 和 DI 最好的博客之一。1 IoC理论的背景 我们都知道,在采用面向对象方法设计的软件系统中,它的底层实现都是由N个对象组成的,所有的对象通过彼此的合作,最终实现系统的业务逻辑。图1:软件系统中耦合的对象如果我们打开机械式手表的后盖,就会看到与上面类似的情形,各个齿轮分别带动时针、分针和秒针顺时针旋转,从而在表盘上产生正确的时间。图1中描述的就
2017-07-10 16:22:05
275
转载 Linux系统启动详解
注:本文配套视频资源见 Linux 系统启动详解 Learn from the web and give it back, Let’s make the web a better place。Linux系统启动流程如下:加载BIOS(Basic Input Output Systen) 信息—–其升级方案是EFI(可扩展固件接口英文名Extensible Firmware Interface 的
2017-07-10 13:02:00
376
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人