keep move.

2019-01-10
base64原理

原理

  用记事本打开exe、jpg、pdf这些二进制文件时,会看到一堆乱码,因为二进制文件包含很多无法显示和打印的字符,要让记事本这样的文本处理软件能处理二进制数据,就需要一个二进制到字符串的转换方法。Base64是一种最常见的二进制编码方法。

阅读此文

2018-12-01
Spring Boot缓存之Caffeine

什么是缓存

缓存就是将程序或系统频繁使用的对象保存在内存中,便于使用时可以快速调用,不必再去创建新的重复的实例或者重复调用接口。可以显著减少系统开销,提高系统效率。

阅读此文

2018-11-04
Spring Boot使用jetty作为Servlet容器

SpringBoot默认tomcat作为内置的Servlet容器.spring-boot-starter-web pom.xml文件description有如下描述.

Starter for building web, including RESTful, applications using Spring MVC. Uses Tomcat as the default embedded container

pom文件中有spring-boot-starter-tomcat依赖,spring-boot-starter-tomcat中又包含了tomcat.但是修改为jetty也十分简单.

阅读此文

2018-10-05
MySQL中逻辑主键与业务主键对比

逻辑主键:没有业务含义,比如自增主键

业务主键:有业务含义,比如person表用身份证号当主键

插入性能

用逻辑主键的情况下,插入的过程中需要定位到页再插入,效率上会比直接追加到最后一个数据页要低很多。

阅读此文

2018-09-21
MySQL中乐观锁的两种实现方式

使用锁场景

在多节点部署或者多线程执行时,同一个时间可能有多个线程更新相同数据,产生冲突,这就是并发问题。这样的情况下会出现以下问题:

更新丢失:一个事务更新数据后,被另一个更新数据的事务覆盖。

脏读:一个事务读取另一个事物为提交的数据,即为脏读。

阅读此文

2018-08-11
mysql中varchar(20)与varchar(255)区别

首先看下为什么MySQL中varchar会经常设置成varchar(255)?

MySQL 数据库的varchar类型在4.1以下的版本中的最大长度限制为255,其数据范围可以是0~255或1~255(根据不同版本数据库来定)。在 MySQL5.0以上的版本中,varchar数据类型的长度支持到了65535,也就是说可以存放65532个字节的数据,起始位和结束位占去了3个字 节,也就是说,在4.1或以下版本中需要使用固定的TEXT或BLOB格式存放的数据可以使用可变长的varchar来存放,这样就能有效的减少数据库文件的大小。

阅读此文

2018-07-01
mysql存储时间类型对比

将时间转成int存储

占用4个字节

建立索引之后,查询速度快

范围查询可以使用between

不能使用MySQL提供的时间函数

结论:适合进行大量时间范围查询的场景

阅读此文

2018-06-17
正向代理与​反向代理

正向代理

一个位于客户端和原始服务器之间的服务器,客户端向代理发送一个请求并指定目标(原始服务器),代理向原始服务器转交请求并将获得的内容返回给客户端。(客户端需要设置),客户端发送请求时需指定目标

简单的说,client访问不了某网站destination,但是client能访问一个代理服务器proxy,而proxy能访问destination,于是client请求代理服务器proxy,让proxy去请求destination取回数据并返回给client

阅读此文

2018-05-01
Spring Boot初识

1 What is Spring Boot

Spring Boot 是一个轻量级框架,可以完成 Spring 应用程序的大部分配置工作,能够快速创建可以直接运行的基于 Spring 的应用程序。Spring Boot 的目的是提供一组工具,以便快速构建容易配置的 Spring 应用程序。

阅读此文

2018-05-01
Spring AOP原理

我们知道声明式事务是通过spring 的aop实现的,先看spring aop的实现

Spring aop

注解属性解析

spring能完成AOP的代理,因为Spring有这样的配置

<aop:aspectj-autoproxy />

这一配置使得整个Spring项目拥有了AOP的功能.那么spring如何解析aop配置的呢?

阅读此文