自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(51)
  • 资源 (6)
  • 收藏
  • 关注

原创 MySql支持Emoji表情

现在有一个需求需要存储微信用户名,微信用户名可能包含Emoji表情,我们一般建表都使用UTF-8编码。Emoji表情是4个字节而Mysql的utf8编码最多3个字节,所以数据插不进去。解决方案:需要将Mysql的编码从utf8转换成utf8mb4。单元测试一下报错只修改表的默认字符集不行那怎么办,难道需要mysql后缀配置把字符编码加上。?characterEncodi...

2020-01-03 15:07:31 298

原创 Docker新手教程

简单的Docker入门教程Docker是基于Go语言实现的开源容器项目,诞生于2013年年初,最 初发起者是dotCloud公司。Docker自开 源后受到广泛的关注和讨论,目 前已有多个相关项目(包括Docker三剑客、Kubernetes等),逐渐形成 了围绕Docker容器的生态体系。Docker项目已加入了Linux基金会,并遵循Apache2.0协议,全部开源代码均在h...

2019-09-10 17:27:14 555

原创 限流算法和基本应用

简介令牌桶算法令牌桶算法最初来源于计算机网络。在网络传输数据时,为了防止网络拥塞,需限制流出网络的流量,使流量以比较均匀的速度向外发送。令牌桶算法就实现了这个功能,可控制发送到网络上数据的数目,并允许突发数据的发送。令牌桶算法是网络流量整形(Traffic Shaping)和速率限制(Rate Limiting)中最常使用的一种算法。典型情况下,令牌桶算法用来控制发送到网络上的数据的数目,...

2019-08-15 16:19:34 154

原创 Mysql锁基础

mysql架构图共享锁共享锁也称为读锁,读锁允许多个连接可以同一时刻并发的读取同一资源,互不干扰;排他锁排他锁也称为写锁,一个写锁会阻塞其他的写锁或读锁,保证同一时刻只有一个连接可以写入数据,同时防止其他用户对这个数据的读写。锁的开销是较为昂贵的,锁策略其实就是保证了线程安全的同时获取最大的性能之间的平衡策略。mysql锁策略:talbe lock(表锁)表锁是mys...

2019-03-03 15:07:15 122

原创 IO模型(Java)

io模型本是UNIX网络编程相关的内容。UNIX中IO模型有五种,包括阻塞 I/O、非阻塞 I/O、I/O 复用、信号驱动式 I/O 、异步 I/O 等。 阻塞 I/O 模型阻塞式IO模型,一般表现为进程或线程等待某个条件,如果条件不满足,则一直等下去。条件满足,则进行下一步操作。如下图:非阻塞 I/O 模型非阻塞式IO模型:进程或线程目的未达到时,不再一味的等着,而是直接返回...

2018-12-29 15:08:35 144

原创 Spring Boot AMQP+RabbitMq

主要解决两个问题:1如何发送/发布消息(将java对象序列化为json),通过使用RabbitTemplate2如何读取消费消息(json反序列化为java对象)使用@RabbitListener注解amqp是一个规范,一种定义了两个系统间通过消息进行交互的协议,而RabbitMQ则是实现了该规范的一个强大的中间件产物。我们通过设置两个监听队列分别演示通用消息的处理及自定义消息...

2018-09-04 17:20:18 209

原创 JAVA IO

#JAVA IOIO基础知识I(Input 把持久设备上的数据读取到内存中的这个动作称为输入(读)Input操作)O(Output 把内存中的数据存储到持久化设备上这个动作称为输出(写)Output操作)我们把这两种操作成为IO.以输入为例,我们可以粗略画个草图IO操作有多种方式,不同的实现方式性能上面表现也不一样。我们从内存复制,阻塞时间来分析不同的IO模型的差异,可能更好理解。常见IO模型分类及对比:我们按照次序从左到右 来介绍这几个IO模型:首先我们要知道一个基础共识:所有的系统

2020-09-16 16:30:04 150

原创 单元测试

单元测试相关为什么要单元测试首先我们了解下概念,什么是单元测试?单元测试是由开发者编写的一小段代码,用于检验被测代码一个很小的,很明确的功能是否正确。用于判断某个条件(或特定场景下)的某个特定函数的行为是否正确。执行单元测试,是为了证明某段代码的行为和开发者所期望的是否一致。因此,我们要测试的是规模很小的,非常独立的功能片段。通过对所有单独的部分行为建立起信心,确信他们都和我们期望的一致,然后我们才能开始组装和测试整个系统。单元测试目的其实只有一个目的,提高代码健壮性,减少bug率,减少线上故障

2020-08-12 13:01:30 259

原创 SpringBoot优雅退出

目录概念原理SpringBoot实现源码分析查看源码我们发现会调用 Lifecycle 的stop()方法 或者调用SmartLifecycle的stop(Runnable var1)方法且isRunning()为ture才会被调用结论概念jvm有shutdownHook机制,中文习惯叫优雅退出。相当于在linux系统中执行SIGTERM(kill ...

2020-01-03 15:34:46 1422

原创 java限流器简单实现

package com.zeng.ratelimit;/** * @Description:限流器工厂 * @Author jerry * Date 2020/1/3 9:52 上午 **/public class RateLimiterFactory { public static SimpleRateLimiter getSimpleRateLimiter(RateL...

2020-01-03 11:06:52 2041

原创 JAVA自定义EVENTBUS简单实现

package com.wosai.constant;import com.wosai.data.util.CollectionUtil;import com.wosai.eventbus.Event;import com.wosai.eventbus.EventListener;import com.wosai.eventbus.SimpleEvent;import org.slf...

2020-01-02 17:45:39 1518 1

原创 java从HttpServletRequest中获取请求IP地址

public static String getRealIp(HttpServletRequest request) { String ip = request.getHeader("x-forwarded-for"); if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ...

2019-12-18 15:47:01 2781 1

原创 分布式主键生成方案(雪花算法 java)

/** * @Author: jerry * @date: 2019/5/18 22:24 * @Description:生成唯一ID */public class SnowFlakeIdGenerator { // The initial time(2019-01-01) private static final long INITIAL_TIME_STAMP = 1...

2019-11-13 15:32:47 401

原创 java Spring体系梳理

如今做Java尤其是web几乎是避免不了和Spring打交道了,但是Spring是这样的大而全,新鲜名词不断产生,学起来给人一种凌乱的感觉,我就在这里总结一下,理顺头绪。SpringSpring 概述Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的(替代更加重量级的企业级Java技术, 尤其是EJB),它完成了大量开发中的通用步骤,留给开发者的仅仅是与特定应用相关...

2019-11-06 09:36:59 162

转载 Java并发编程:CountDownLatch、CyclicBarrier和Semaphore

原文出处:http://www.cnblogs.com/dolphin0520/p/3920397.htmlJava并发编程:CountDownLatch、CyclicBarrier和SemaphoreJava并发编程:CountDownLatch、CyclicBarrier和Semaphore  在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountD...

2019-10-15 14:37:03 97

原创 解决Homebrew下载更新极慢的问题

近期使用Homebrew去下载安装软件的时候总是卡在update阶段,时间非常久,难以忍受。记录一下解决方法,症状使用Homebrew安装软件的时候一直卡在Update阶段。同时发现从github.com下载文件也极度缓慢(总是卡住不动了)。问题定位使用brew update --verbose观察update过程: 123456789101112...

2019-10-05 23:24:15 3918 1

原创 ZIPKIN分布式链路追踪系统

Zipkin是什么Zipkin分布式跟踪系统(Distributed Tracing System);它可以帮助收集时间数据,解决在microservice架构下的延迟问题;它管理这些数据的收集和查找;Zipkin的设计是基于谷歌的Google Dapper论文。每个应用程序向Zipkin报告定时数据,Zipkin UI呈现了一个依赖图表来展示多少跟踪请求经过了每个应用程序;如果想解决延迟问题...

2019-09-18 10:25:14 250

原创 java日志

历史背景1996年早期,欧洲安全电子市场项目组决定编写它自己的程序跟踪API(Tracing API)。经过不断的完善,这个API终于成为一个十分受欢迎的Java日志软件包,即log4j。后来log4j成为Apache基金会项目中的一员。期间log4j近乎成了Java社区的日志标准。据说Apache基金会还曾经建议Sun引入log4j到java的标准库中,但Sun拒绝了。2002年Java...

2019-08-02 14:46:48 105

原创 Python学习

python中的对象在python中,一切都是对象。每个对象由:标识(identity),类型(type),value(值)组成标识用于唯一标识对象,通常对应于对象在计算机内存中的地址。使用内置函数id(obj)可返回对象obj的标识。类型用于表示对象存储的数据类型。类型用于限制对象的取值范围以及可执行的操作。可以使用type(obj)获取对象的所属类型。值表示对象所存储的数据的信息。使...

2019-07-26 10:29:46 144

原创 Redis java应用端

基本介绍redis中间件。REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。它通常被称为数据结构服务器,因为值(value)可以是 字符串(Stri...

2019-07-24 09:13:38 89

原创 消息中间件

消息中间件卡夫卡基础入门其实主要是学习下markdown语法的使用。工作这么久。还不会这个。。。。。Kafka 最早是由 LinkedIn 公司开发一种分布式的基于发布/订阅的消息系统,之后成为 Apache 的顶级项目。特性同时为发布和订阅提供高吞吐量 。Kafka 的设计目标是以时间复杂度为 O(1) 的方式提供消息持久化能力,即使对TB 级以上数据也能保证常数时间的访问性能。即使...

2019-06-25 13:12:22 619

原创 kafka学习入门

kafka对消息保存时根据Topic进行归类,发送消息者成为Producer,消息接受者成为Consumer,此外kafka集群有多个kafka实例组成,每个实例(server)成为broker。无论是kafka集群,还是producer和consumer都依赖于zookeeper来保证系统可用性集群保存一些meta信息。一个Topic可以认为是一类消息,每个topic将被分成多个part...

2019-03-20 12:19:04 139

原创 分布式锁(Redis)

加锁public class RedisTool {private static final String LOCK_SUCCESS = "OK";private static final String SET_IF_NOT_EXIST = "NX";private static final String SET_WITH_EXPIRE_TIME = ...

2019-03-20 09:02:07 114

原创 数据库的脏读、不可重复读、幻读

丢失更新:两个事务同时更新一行数据,最后一个事务的更新会覆盖掉第一个事务的更新,从而导致第一个事务更新的数据丢失,这是由于没有加锁造成的;1. 脏读 :脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。 e.g.        1.Mary的原工资为1000, 财务人员将Mary的工资改为了8000(...

2019-01-23 13:51:11 120

原创 关于集群ElasticSearch官方文档的一点记录

集群是活着的、呼吸着的生命一旦你的集群投入生产,你会发现他就开始了他自己的一生。 Elasticsearch 努力工作来保证集群自给自足而且 真就在工作 。不过一个集群也还要有日常照料和投喂,比如日常备份和升级。Elasticsearch 以非常快的速度发布新版本,进行错误修复和性能增强。保持你的集群采用最新版总是一个好主意。类似的,Lucene 持续在发现 JVM 自身的新的和令人惊讶的...

2019-01-23 11:49:32 129

原创 XStream NullConvertor

public class NullConverter implements Converter { private Map<Class<?>, List<String>> attributes = null; /** * 是否是属性(是属性的不用以单独标签实现) * * @param type * @...

2019-01-22 15:03:35 746

原创 方便创建容器对象的工具CollectionUtil

public final class CollectionUtil { /** * 创建一个<code>ArrayList</code>。 */ public static <T> ArrayList<T> createArrayList() { return new ArrayList<...

2019-01-16 16:48:39 581

原创 常用Linux指令

熟练掌握常用linux十分有必要。服务器运行状态相关命令ps查看系统进程线程,我一般都是用这个命令查看进程pid的,然后用pid做更深入的排查。基本用法ps -aux 查看所有进程ps -T -p ${pid} 查看某个进程的线程参考资料10个重要的Linux ps命令实战pstree查看系统进程树,他可以把各个进程之间的关系用树形结构标识出来。基本用法pstre...

2019-01-16 13:59:02 165

原创 定义排序接口并实现排序功能

public interface Ordered { /** * Useful constant for the highest precedence value. * * @see java.lang.Integer#MIN_VALUE */ int HIGHEST_PRECEDENCE = Integer.MIN_VALUE; ...

2019-01-14 11:59:04 1687

原创 Sequences服务(分布式主键生成)

DefaultSequencepublic class DefaultSequence implements Sequence { private final Lock lock = new ReentrantLock(); private SequenceDao sequenceDao; /** * 序列名称 */ private S...

2019-01-07 14:43:39 940

原创 pinyin4j的使用工具类

pinyin4j是一个免费的开源框架,可以把中文(多音字,繁体字)转成拼音,是不是6到不行,而且还可以自定义输出格式等。 maven依赖<!-- https://mvnrepository.com/artifact/com.belerweb/pinyin4j --><dependency>    <groupId>com.belerweb</gr...

2018-12-27 14:17:03 1087

原创 HttpServletRequest获取客户端IP(java小记)

小记这个简单的方法。/** * 获取客户端IP * * @param request * @return */private String getIpAddr(HttpServletRequest request) { String remoteAddr = request.getHeader("X-Forwarded-For"); if (StringUtil.i...

2018-12-27 13:49:32 1129

原创 Connection reset by peer 的IOException的异常

http客户端发起连接时经常会碰到Connection reset by peer 的IOException,这个异常是由jdk抛出来的。详细介绍下这个异常的发生说明了什么。1. 对于连接而言,首先区分三种连接种类一般连接主要分为长连接,短连接和http的keepalive连接。1.1 长连接:建立完连接后,该连接不再进行释放。 优点 性能较高,不需要重复建立tcp连接...

2018-12-27 10:20:44 3305

原创 Redis学习

Redis 是一个使用 ANSI C 编写的开源、支持 网络、基于 内存、单线程模型、可选持久性 的 键值对存储数据库。它是一种基于 键值对 的 NoSQL 数据库。与很多键值对数据库不同,Redis 提供了丰富的 值数据存储结构,包括 string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合)、bitmap(位图)等等。Redis特性: 速度快...

2018-12-25 13:38:29 87

原创 ELK基础环境搭建Centos7.5

ELK版本:6.5.4Elasticsearch:wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.5.4.rpmLogstash:wget https://artifacts.elastic.co/downloads/logstash/logstash-6.5.4.rpmKiba...

2018-12-21 12:51:28 192 1

原创 dubbo系列之一Multicast注册中心

不需要启动任何中心节点,只要广播地址一样,就可以互相发现 组播受网络结构限制,只适合小规模应用或开发阶段使用。组播地址段: 224.0.0.0 - 239.255.255.255。  提供方启动时广播自己的地址。   消费方启动时广播订阅请求。   提供方收到订阅请求时,单播自己的地址给订阅者,如果设置了unicast=false,则广播给订阅者。   消费方收到提供方地址时,连...

2018-12-04 17:27:16 3407

原创 JSR310 java8日期时间类型概念初探

Tiago Fernandez做过一次投票,选举最烂的JAVA API,排第一的EJB2.X,第二的就是日期API。原本的java日期API槽点太多,列举有:1.最开始的时候,Date既要承载日期信息,又要做日期之间的转换,还要做不同日期格式的显示,职责较繁杂,违背单一原则2.年份是从 1900 开始计算的而月份则从 0 开始3关键的问题是可变性。参public class ...

2018-11-30 16:26:36 270

原创 centos7.5安装redis

流程:修改yum源,通过yum安装redis,修改redis配置(修改密码,允许远程访问)。先备份源cd /etc/yum.repos.d/mkdir repo_bakmv *.repo repo_bak/下载阿里源及网易源wget http://mirrors.aliyun.com/repo/Centos-7.repowget http://mirrors.163...

2018-11-16 10:52:09 136

原创 linux下用wget从官网下载jdk版本

wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" 后面加复制的链接地址关键是红色部分。否则下载下来的文件是不无法安装的。只是html文件内容...

2018-11-12 15:52:54 525

原创 centos下安装RabbitMq

rabbitmq需要erlang语言依赖。官网提供了两种安装方式。一种是通过使用yum资源包的形式,一种是手工依赖安装。Installing the package using Yum repositories on Package Cloud or Bintray (this option is highly recommended) Downloading the package and...

2018-11-12 11:49:41 141

redis源码分析PDF

redis源码级别的分析。需要具备c语言基础的开发学习,十分详细,带你全程深入了解redis。

2019-01-16

netty开发实战

netty性能实战,初学者必读的netty教程,基于netty4.x

2018-12-13

yum安装mysql官方文档(支持各个版本)

cetnos或者其他linux发行版支持yum方式,通过修改yum源安装mysql,十分详细,官方教程,支持各个mysql版本

2018-11-16

eclipse Mac安装

mac下的exlipse安装包,直接下载解压即可安装。最新的exlipse版本

2018-10-27

springboot+springmvc+mybatis+druid整合

基于springboot(2.0版本),整合了mybatis及druid,配置好了监控中心。可以直接下载用

2018-07-18

jsp+servlet+jdbc原生实现增删改查两张表

原生实现jsp+servlet的增删改查,通过JDBC连接数据库。没有框架内容,适合初学者使用。代码结构清晰注释很详细,直接下载就可以放到环境中跑起来

2018-07-04

空空如也

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

TA关注的人

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