自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(64)
  • 资源 (2)
  • 收藏
  • 关注

原创 MyISAM vs InnoDB

开发十年,就只剩下这套架构体系了!>>> ...

2019-03-27 21:46:00 147

原创 mysql explain

开发十年,就只剩下这套架构体系了!>>> ...

2019-03-27 21:42:00 113

原创 TCP/UDP

开发十年,就只剩下这套架构体系了!>>> ...

2019-03-27 20:58:00 152

原创 加密算法

开发十年,就只剩下这套架构体系了!>>> ...

2019-03-27 20:49:00 102

原创 TCP/IP TIME_WAIT

TIME_WAIT状态原理 ---------------------------- 通信双方建立TCP连接后,主动关闭连接的一方就会进入TIME_WAIT状态。 客户端主动关闭连接时,会发送最后一个ack后,然后会进入TIME_WAIT状态,再停留2个MSL时间(后有MSL的解释),进...

2018-09-09 10:13:00 81

原创 插入排序(insertSort)

插入排序,在数组中,保证 从位置0 到 p 位置 配上的元素都是已排序状态。每次比较 p+1 位置上的元素和已排序的列表,将 p+1 位置上的元素,加入到已排序的列表中。 /** * created by Demon, on 2018/9/6 */public class Ins...

2018-09-06 17:01:00 175

原创 关于 Integer

最近面试,被问到两个Integer直接用 == 比较有什么问题。自己回答的不是很好,先总结下: @Test public void integerTest() { // case1 Integer a = new Integer(0); ...

2018-09-05 11:37:00 119

原创 aop + annotation 实现统一日志记录

aop + annotation 实现统一日志记录 在开发中,我们可能需要记录异常日志。由于异常比较分散,每个 service 方法都可能发生异常,如果我们都去做处理,会出现很多重复编码,也不好维护。这种场景就应该想到 aop, aop 的出现就是为了解决这类问题。 我们可以自定义一个注...

2018-07-22 12:20:00 292

原创 docker 入门

我们学习新技术的三要素:是什么?能干什么?有什么优势? 传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程; Docker是在操作系统层面上实现虚拟化,容器内的应用进程直接运行于宿主的内核。容器内没有自己的内核,复用本地主机的操作系统,而且也...

2018-07-14 12:32:00 77

原创 关于 hashcode

hashCode()方法被用来获取给定对象的唯一整数, 这个整数被用来确定对象被存储在HashTable类似的结构中的位置。默认的,Object类的hashCode()方法返回这个对象存储的内存地址编号。覆盖 equals 方法的类中,必须覆盖 hashCode 方法。如果不这样做会违背 ha...

2018-07-08 19:05:00 105

原创 CSRF 漏洞处理

CSRF 漏洞 由于HTTP协议是无状态的,所有客户端和服务器端的数据交换和鉴权信息都必须附带在HTTP请求中。 通常情况下,将鉴权信息放在COOKIE里已经足够。浏览器发起请求的时,会自动带上对应域名的COOKIE,服务器端接收到COOKIE后,就可以准确的判断是谁在发起请求。 但是...

2018-07-02 20:33:00 216

原创 Java 读取 jar 包文件

最近,做项目遇到这样一个需求,需要在 spring 容器启动后,从文件初始化一些数据。编码完成后,我在本地测试的时候,没有问题,文件可以读到。但是项目部署到 web 容器后,就报错,找不到文件。 开始的 demo 如下,文件在 resources 文件夹下: @SuppressWarn...

2018-07-01 17:13:00 119

原创 Java 内存模型

物理机并发处理方案 绝大多数计算任务,并不是单纯依赖 cpu 的计算完成,不可避免需要与内存交互,获取数据。内存要拿到数据,需要和硬盘发生 I/O 操作。计算机存储设备与 cpu 之间的处理速度有几个数量级的差距。现代计算机为了减少这种差距,在 cpu 与内存之间加了一层高速...

2018-06-23 15:42:00 73

原创 非阻塞同步之 CAS

为解决线程安全问题,互斥同步相当于以时间换空间。多线程情况下,只有一个线程可以访问同步代码。这种同步也叫阻塞同步(Blocking Synchronization). 这种同步属于一种悲观并发策略。认为只要不同步,共享数据就会被并发访问。随着硬件指令集的发展,我们可以采用基于冲突检测的乐观并...

2018-06-23 10:16:00 262

原创 如何成为技术专家

文章来源于 -- 时间的朋友 拥有良好的心态。首先要有空杯心态,用欣赏的眼光发现并学习别人的长处,包括但不限于工具的使用,工作方法,解决问题以及规划未来的能力等。向别人学习的同时要注意不要迷信权威,一定要记住实践才是检验真理的唯一标准,少空谈多动手去做。要坚持学习,要相信量变会...

2018-06-17 22:45:00 154

原创 redis 集群

redis 集群架构 redis 集群的架构细节: 所有 redis 节点彼此互联(PING-PONG 机制),内部使用二进制协议优化传输速度和带宽; 节点的 fail 是通过集群中超过半数的节点检测失效时才失败; redis-cluster ...

2018-06-17 10:37:00 62

原创 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 67

原创 起点

起点总是美好的,因为每个起点都意味着一次成长,也意味着无限可能。 作为一个人,要有空杯心态。要经常反思自己要做什么?想要什么?对现在的状态满意吗?和梦想中的自己还有什么差距?然后走出自己的舒适区,去面对未知的世界,这样你的灵魂才会更新。无论未来遇到什么困难,只要保持学习的心态和敢于挑...

2018-06-13 14:53:00 71

原创 volatile 和 synchronize

当一个变量被定义为 volatile 时,该变量会具备以下特性: 保证此变量对所有线程的可见性;任一个线程修改了该变量,其他线程立即可见;它是最轻量级的同步机制,只能保证可见性,并不能保证原子性; 使用 volatile 还可以禁止指令重排序优化;普通变量仅仅会保证...

2018-06-11 12:40:00 86

原创 对象导论

我们平常使用的语言大多数都是面向对象的语言。 所有编程语言都提供抽象机制,人类能够解决的问题复杂度,直接取决于抽象的类型和质量。汇编语言是对底层机器语言的轻微抽象。接着出现的 "命令式"语言(BASIC、C等)是对汇编语言的抽象;这类语言建立的抽象在解决问题...

2018-06-10 17:16:00 77

原创 uc 项目总结

​ 本人决定以后每完成一个项目,就做一个总结! iotx-uc (主要做物联网环境下, 用户设备, 场景的分享) 由于最开始的 项目架构设计,公司这边开发主管没有和上面架构师确认过,导致接口已经开发完成,才发现存在一些问题。 最开始的数据结构中,只有 ho...

2018-06-09 16:16:00 270

原创 JVM 垃圾回收

什么对象可以被 JVM 回收? Java 通过可达性分析算法,来判断对象是否存活。这个算法是通过一系列称为 “GC ROOTS” 的对象为起始点,从这些起始点向下检索,检索所走过的路径称为引用链(Reference Chain)。当一个对象到 “GC ROOTS” 没有任何引...

2018-06-09 16:15:00 59

原创 Linux系统启动详解

Linux系统启动详解 Linux系统启动流程如下: 加载BIOS(Basic Input Output Systen) 信息-----其升级方案是EFI(可扩展固件接口英文名Extensible Firmware Interface 的缩写),BIOS中包含了CPU的相关信息、设...

2018-06-04 23:40:00 84

原创 计算机硬件基础

计算机五大架构: 系统单元:系统单元包括 CPU 与内存及主板相关组件。CPU 是一个具备特定功能的芯片,内部具有微指令集,分为控制单元和逻辑运算单元; 记忆单元:包括主存储器 (main memory, RAM) 与辅助内存,其中辅助内存其实就是大家常听到的『储存 装置』包括硬盘、软...

2018-06-04 23:33:00 89

原创 autoConfig 之多环境打包

最近项目中使用了 autoConfig 工具; ​​// pom文件中定义多个环境 <profiles> <profile> <id>test</id> <properti...

2018-06-04 19:38:00 155

原创 MYSQL 索引

数据库表添加索引可以提高查询效率,开发中我们经常使用的索引有唯一索引和组合索引。 唯一索引 (数据库表多列加上唯一索引,可以保证在并发条件下,数据库不会有脏数据。因为 在开发中,我们很多业务场景都需要保证数据库记录的唯一。如果字段建立了唯一索引,但是 值为null,这时唯一索...

2018-06-04 11:50:00 58

原创 代码自动化测试

相信很多人和我一样,都不愿意写单元测试。尤其是在为了单纯提高覆盖率,应付测试的时候。但是,为了提高代码的健壮性,并为以后的代码重构,优化建立基础。测试还是特别重要的一个开发工作。 最近,发现了一种测试的写法,如下: package com.netease.test;import org...

2018-05-17 16:15:00 375

原创 MYSQL 之 allowMultiQueries=true

今天遇到一个问题,以前数据库可以执行成功的一个 sql 突然无法执行。sql 如下: <update id="batchUpdate" parameterType="java.util.List"> <foreach collection="devRelD...

2018-05-16 22:38:00 2146

原创 MYSQL 之 ON DUPLICATE KEY UPDATE

在设计数据库表的时候,为保证数据记录的唯一,防止并发情况下,数据库插入多条数据,我们通常会设计uk。但有了uk后,会存在这样一个问题。一条记录不能被删除多次或插入多次,但实际业务中经常会有这样的应用场景的。比如一个用户绑定一个设备,我下次解绑后,还需要可以再次绑定。 这时可以使用 ON DU...

2018-05-16 10:44:00 242

原创 synchronized 与 ReentrantLock

synchronized 作用于非静态方法 public class Sync implements Runnable{ private static int count; public Sync() { count = 0; }...

2018-05-10 14:31:00 60

原创 Effective Java 之通用程序设计

作为一个每天和代码打交道的人来说,我们如何写出优秀的代码呢?优秀的代码应该是这样的: 优秀的代码是简洁的,大道至简,最简单的才是最好的; 优秀的代码是符合规范的,世界不是混沌的,万事万物都有规可循; 优秀的代码是高效的,人类从非洲...

2018-05-07 22:28:00 61

原创 一张图读懂JVM

每一个Java开发者都知道字节码是通过JRE(Java 运行时环境)执行的,JRE实现了JVM ,JVM可以解析执行字节码文件。 什么是JVM? 虚拟机是一个软件,它是物理机的实现。Java 开发是建立在一次编译到处运行(Write Once Run Any...

2018-05-06 21:28:00 89

原创 Java并发编程之 CompletionService

最近遇到一个需求,其中一个操作比较耗时。为了提高效率,我选择新开线程异步去做。由于需要对方法的返回值进行操作,我选择使用FutureTask,可以循环获取task,并调用get方法去获取task执行结果,但是如果task还未完成,获取结果的线程将阻塞直到task完成。后来发现了...

2018-05-04 11:24:00 90

原创 Linux 内存管理

在Linux中经常发现空闲内存很少,似乎所有的内存都被系统占用了,表面感觉是内存不够用了,其实不然。这是Linux内存管理的一个优秀特性,在这方 面,区别于 Windows的内存管理。主要特点是,无论物理内存有多大,Linux 都将其充份利用,将一些程序调用过的硬盘数据读入内存,利用内...

2018-05-03 11:55:00 47

原创 影子设备心得

最近做了影子设备项目(device shadow),就是建立设备模型,对真实设备进行映射。 本人主要负责设备注册, (使用 guava缓存),处理前台发送的mq 消息, 使用 OTS 进行保存,修改,更新 使用技术 Java 回调,任何语言环境下的代码,调用方式有三种 ...

2018-05-03 11:53:00 918

原创 基于注解@Aspect的AOP实现

面向对象编程(OOP)有一些弊端,当需要为多个不具备继承关系的对象引入一个公共的行为时,例如日志、安全监测等,我们需要在每个对象里添加公共的行为,这样程序中会有很多重复代码,不便于维护。这时候就需要面向切面编程( AOP)的支持。 最近在做 iot 的一个项目...

2018-05-03 11:48:00 149

原创 Vi 编辑器

vi是Linux及类Unix系统中主流的命令行文本编辑器,功能极为强大,vim是增强版本的vi,vim支持高亮度显示;其他文本编辑器还有emacs,比vi还要强大;当用vi加一个文件名,如果这个文本文件存在则是打开这个文件,如果不存在则是创建这个文本文件 vim有三种工作模式: 命令...

2018-05-03 09:23:00 54

原创 动态代理

动态代理是 Java 一大特性。它的显著优势就是无侵入式的扩展代码。 通俗来讲就是可以用来做方法的增强,让你可以在不修改源码的情况下,利用动态代理,可以在运行时获取类的二级制字节流,可以用来 增强一些方法或者功能,在方法执行前后做任何你想做的事情。 比如可以添加调用日志,做事务控制等。目前动态代理主要分为 Java 自己提供的动态代理和 CGLIB 类似框架。 Java 自带的动态...

2018-02-08 16:59:42 118

转载 IoC框架(依赖注入 DI)

注:本文转载至 BBSMVC ,深入理解 IOC 和 DI 最好的博客之一。1 IoC理论的背景 我们都知道,在采用面向对象方法设计的软件系统中,它的底层实现都是由N个对象组成的,所有的对象通过彼此的合作,最终实现系统的业务逻辑。图1:软件系统中耦合的对象如果我们打开机械式手表的后盖,就会看到与上面类似的情形,各个齿轮分别带动时针、分针和秒针顺时针旋转,从而在表盘上产生正确的时间。图1中描述的就

2017-07-10 16:22:05 235

转载 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 344

搜索神器(Everything)

从CSDN上下载了不少资源,为了回馈这个平台.给大家上传一个搜索神器,当想从你庞杂的电脑硬盘中快速查找想要的文件时,可以使用它.

2017-04-09

Sun Certificated Programmer for Java

Java英文书籍,获公司SUN认证的哦

2017-02-28

空空如也

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

TA关注的人

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