- 博客(198)
- 资源 (37)
- 收藏
- 关注

原创 实现登录态的几种方式
原文链接:https://www.dubby.cn/detail.html?id=9109随着服务化的普及,直接维护session的越来越困难,现在一般来说都会使用一个token来表示用户的登录状态,用来标识这个用户的身份,这就是登录态。登录态的解析一般就是入参是token,而返回结果是userId的方法(或服务、接口)。一般来说,登录态校验的服务,QPS都会很大,因为大部分请求都需要依赖这...
2018-10-15 10:59:41
5853
原创 一个简单却是实用的分布式ID解决方案light-id
动机希望可以有一个容易部署,容易维护,原理简单(意味着不容易出问题),且性能还不错的分布式ID解决方案,没错,是方案,而不是方法。ID组成signsequencework id1 bit53 bit10 bitsign : 固定1bit符号标识,即生成的ID为正数;sequence : 2^53个取值,9007199254740992;worker id...
2019-08-01 22:22:47
1495
1
原创 常用加密解密(4)——数字签名
原文链接:https://www.dubby.cn/detail.html?id=9125之前介绍了《常用加密解密(1)》里面提到了消息摘要,那么这一篇的数字签名和消息摘要有什么区别呢?事实上数字签名就是带上非对称加密的消息摘要。消息摘要的目的是防数据被篡改;而数字签名是抗否认。签名的过程是:总结就是,使用私钥加签,使用公钥验签import java.security.*;im...
2018-12-28 10:14:28
975
原创 常用加密解密(3)——非对称加密
原文链接:https://www.dubby.cn/detail.html?id=9124最常用的非对称加密算法应该就是RSA,而且非对称加密算法的实现比较复杂,所以这里只介绍RSA。密钥长度密钥默认长度工作模式填充方式512~65536(必须是64的倍数)密钥默认长度:1024工作模式:ECB填充方式:NoPadding,PKCS1Padding等其他RS...
2018-12-28 10:13:41
852
原创 常用加密解密(2)——对称加密
原文链接:https://www.dubby.cn/detail.html?id=9123文章目录AESDESDESedeIDEA本文主要介绍常用的对称加密算法的Java实现<dependency> <groupId>org.bouncycastle</groupId> <artifactId>bcprov-jdk15on&...
2018-12-28 10:12:54
607
原创 常用加密解密(1)——消息摘要
原文链接:https://www.dubby.cn/detail.html?id=9122文章目录1. 常见编码1.1 Hex1.2 Base641.3 Base322. 消息摘要2.1 MD52.2 SHA2.3 MAC1. 常见编码为什么要介绍编码呢?因为在Java中,加密/解密都是对byte的操作,一段文本的byte[]经过加密后的bye[]可能是一段很随机的字节数组,如果不经过编码...
2018-12-28 10:10:59
804
原创 自己动手写一个Redis客户端
原文链接:https://www.dubby.cn/detail.html?id=9121使用JavaFX,不依赖任何其他依赖,实现的一个简单的Redis客户端,编写的初衷是觉得Redis Desktop Manager太难用,并且Redis的RESP比较简单,所以这里就尝试着写了下RESPREdis Serialization Protocol,这里给出官方的文档链接。为啥Redis要...
2018-12-28 10:10:01
703
1
原创 【浅度渣文】Jackson之jackson-annotations
原文链接:http://www.dubby.cn/detail.html?id=9071字段命名@JsonProperty可以指定字段的命名(还可以指定这个字段需要参与序列化和反序列化)。@JsonProperty.value:指定的字段名字@JsonProperty.index:指定顺序,默写数据格式是基于顺序(JSON不是这种数据格式)@JsonProperty.defaultV...
2018-10-17 14:20:15
490
原创 【浅度渣文】Jackson之jackson-databind
原文链接:http://www.dubby.cn/detail.html?id=9070前几篇介绍Jackson的文章(Jackson介绍,Jackson之jackson-core),虽然很好,但是我相信你并愿意在项目中使用,因为使用起来很复杂,也许这也是很多人愿意使用Fastjson的原因吧。为什么会感觉这么复杂呢,因为jackson-core提供的是很低级的API,我们可以充分的了解细节,...
2018-10-17 14:19:44
2285
原创 【浅度渣文】Jackson之jackson-core
原文链接:http://www.dubby.cn/detail.html?id=9069我们在这里使用jackson-core提供的JsonParser和JsonGenerator来实现基本的序列化和反序列化。1.数据和实体类我们先定义出JSON字符串:{ "id":123456789, "text":"我是杨正,我在http://www.dubby.cn", "fromUse...
2018-10-17 14:19:06
727
原创 Go实现对MySQL的增删改查
原文链接:https://www.dubby.cn/detail.html?id=9113依赖先下载go-sql-driver/mysql:go get -u github.com/go-sql-driver/mysql数据库建表:CREATE TABLE `data` (`id` bigint(10) NOT NULL AUTO_INCREMENT,`key` varchar(...
2018-10-15 10:59:10
1266
原创 Redis删除大Key
原文链接:https://www.dubby.cn/detail.html?id=9112这里说的大key是指包含很多元素的set,sorted set,list和hash。删除操作,我们一般想到有2种,del和expire。DELTime complexity: O(N) where N is the number of keys that will be removed. Whe...
2018-10-15 10:58:42
8102
1
原创 Lettuce和Jedis的基准测试
原文链接:https://www.dubby.cn/detail.html?id=91081.准备工作本地需要安装Redis,使用JMH做基准测试的框架:<dependency> <groupId>org.openjdk.jmh</groupId> <artifactId>jmh-core</artifactId>...
2018-10-15 10:58:25
5063
3
原创 Web Socket 性能对比——Spring Boot vs Tomcat vs Netty
原文链接:https://www.dubby.cn/detail.html?id=9106统计结果精确到5位小数;每次请求都预热过了等待上一个消息响应后再发送下一个消息实现方式消息类型消息长度发送消息数总耗时(s)Messages/s单方向单次耗时(ms)吞吐(MChars/s单方向)Spring BootText10010000032.3583...
2018-10-15 10:58:06
7847
3
原创 WebSocket的Frame协议解析
原文链接:https://www.dubby.cn/detail.html?id=9105先给出WebSocket Frame的协议:复制抓包抓到的数据:81 85 30 6c e2 9a 54 19 80 f8 49字段分析:8185306ce29a541980f8491000000110000101001100000110110011...
2018-10-15 10:57:42
11457
原创 Netty实现Web Socket
原文链接:https://www.dubby.cn/detail.html?id=9104获取代码 https://github.com/dubby1994/netty-study/tree/master1.依赖 <dependency> <groupId>io.netty</groupId> <artifactId>net...
2018-10-15 10:57:20
308
原创 Tomcat实现Web Socket
原文链接:https://www.dubby.cn/detail.html?id=91031、依赖本文使用的是Tomcat9项目结构也是最基本的servlet的项目结构:代码地址:https://github.com/dubby1994/tomcat-web-socket-study其实啥依赖都不需要,但是需要几个api,这些在Tomcat里都已经提供了,但是代码里还是需要提供一下...
2018-10-14 12:00:23
5473
1
原创 Spring Boot实现Web Socket
原文链接:https://www.dubby.cn/detail.html?id=9102实现代码依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId&...
2018-10-14 11:59:25
374
原创 Hystrix问题记录
原文链接:https://www.dubby.cn/detail.html?id=91001、CommandKey缓存问题考虑这样一个场景,先new了一个Command(commandKey=“commandA”),他的隔离策略是信号量隔离(ExecutionIsolationStrategy.SEMAPHORE),之后又new了一个Command(commandKey=“commandA”)...
2018-10-14 11:59:09
6546
原创 Apache Curator简单介绍
原文链接:https://www.dubby.cn/detail.html?id=9099提供了一个抽象级别更高的API,来操作Zookeeper,类似Guava提供的很多工具,让Java书写起来更加方便。至于有没有用,那就要看每个人自己的理解了。1、依赖<dependency> <groupId>org.apache.curator</groupI...
2018-10-14 11:58:55
1219
原创 JVM dump和分析
原文链接:https://www.dubby.cn/detail.html?id=90981、dumpjmap -dump:live,format=b,file=~/Desktop/dump.hprof 1110其他参数意义:Usage: jmap [option] <pid> (to connect to running process) j...
2018-10-14 11:58:39
3863
原创 Java加密之IV
原文链接:https://www.dubby.cn/detail.html?id=9097AES是一种**分组密码**。密码学中,分组(block)密码的工作模式(mode of operation)允许使用同一个分组密码密钥对多于一块的数据进行加密,并保证其安全性。分组密码自身只能加密长度等于密码分组长度的单块数据,若要加密变长数据,则数据必须先被划分为一些单独的密码块。通常而言,最后一块...
2018-10-14 11:58:24
8174
1
原创 crontab
原文链接:https://www.dubby.cn/detail.html?id=9088使用crontab命令来定义任务,开启和关闭:sudo service cron startsudo service cron stop定义任务:crontab -e会打开一个文件,每一行代表一个任务,语法如下:m h dom mon dow command其中可以使用数字,*,,...
2018-10-14 11:58:01
419
原创 多线程下载文件
原文链接:https://www.dubby.cn/detail.html?id=90901.基本原理先使用head方法查询得到对应文件的Content-Length,然后拆分成多个部分,交由多个线程去处理,使用"Range", "bytes=" + start + "-" + end这个header来指定下载文件的哪个部分。2.代码实现为了方便展示,我是用了一个类来实现,其余都是内部类...
2018-10-14 11:57:42
771
原创 使用Maven打包你的应用——maven-jar-plugin & maven-assembly-plugin & maven-shade-plugin
原文链接:https://www.dubby.cn/detail.html?id=9091介绍maven-jar-plugin,maven-assembly-plugin和maven-shade-plugin的使用,和他们之间的区别。原文出自:https://blog.dubby.cn/detail.html?id=90911.maven-jar-plugin首先,需要配置这个plugi...
2018-10-14 11:56:17
8750
1
原创 MyBatis入门——了解配置
原文链接:https://www.dubby.cn/detail.html?id=90941、mybatis-config.xml这个配置文件的结构如下:propertiessettingstypeAliasestypeHandlersobjectFactorypluginsenvironmentsenvironmenttransactionManagerdataSo...
2018-10-14 11:55:45
235
原创 MyBatis入门——了解基本概念
原文链接:https://blog.dubby.cn/detail.html?id=90931. 了解MyBatis1.1 MyBatis是什么?使用Java操作数据库的话,JDK给我们提供了一层对各个数据库的封装,也就是JDBC,它屏蔽了数据库之间的差异,使用JDBC可以统一操作。但是他长期以来被人诟病的就是重复代码太多。封装参数需要一个一个set,还需要你把ResultSet一...
2018-02-09 10:10:55
1018
原创 Java实现多线程下载文件
原文地址:https://blog.dubby.cn/detail.html?id=90901.基本原理先使用head方法查询得到对应文件的Content-Length,然后拆分成多个部分,交由多个线程去处理,使用"Range", "bytes=" + start + "-" + end这个header来指定下载文件的哪个部分。2.代码实现 为了方便展示,我是用了一个类来实
2018-01-16 18:57:00
6808
原创 如果使用Maven打包成一个完整可执行的Jar包
原文链接:https://blog.dubby.cn/detail.html?id=9083Maven提供了这么一个plugin,Apache Maven Shade Plugin。他的作用就是用来打包一个超级Jar包(被称作uber-jar),其中包含了他依赖的其他Jar包。使用也是非常简单:pom.xml:project xmlns="http://maven.apache.
2018-01-04 13:49:51
24256
7
原创 Ubuntu下,使用Java画图,中文乱码
原文链接:https://blog.dubby.cn/detail.html?id=9082原因其实很简单,你使用的字体不支持中文,或者你的操作系统没有支持中文的字体,你需要先安装有个中文字体:sudo apt-get install ttf-wqy-zenhei进入J2SDK的库目录中的字体目录,位于/usr/lib/jvm 中的某个目录 可能为 java-6-sun 可能为 j
2018-01-04 13:17:06
1395
原创 图形验证码
原文链接:https://blog.dubby.cn/detail.html?id=9081演示结果如下:用的是SpringBoot,当然其实这个和框架没啥关系,直接用servlet也是一样的操作:AuthResult.java:public class AuthResult { private String authCode; private String c
2018-01-04 13:15:48
446
原创 Kibana + Elasticsearch + Logstash + Filebeat
原文链接:http://www.dubby.cn/detail.html?id=9080环境Ubuntu两台,一台用来安装Elasticserach和Logstash,一台用来安装Filebeat收集本机的日志文件,在本机上安装Kinaba: IP 安装 127.0.0.1(这个不重要) Kibana 192.168.126.128 Elasticsearch + Logsta
2017-12-28 00:19:25
1801
1
原创 Elasticsearch 安装IK Analysis插件
原文链接:http://www.dubby.cn/detail.html?id=90791.找到合适的版本插件版本对应Elasticserach的版本: IK version ES version 6.1.1 6.1.1 5.6.4 5.6.4 5.5.3 5.5.3 5.4.3 5.4.3 5.3.3 5.3.3 5.2.2 5.2.2 5
2017-12-28 00:18:08
15632
1
原创 Elasticsearch 初学错误汇总
原文链接:http://www.dubby.cn/detail.html?id=9078单机多实例安装node.max_local_storage_nodes: 2默认情况下,是不建议单机启动多个node的,这里这个参数,就是告知es单机上启动了几个实例,这里我们配置2个,若是要配置3个或者更多实例,修改这个数字即可max virtual memory areas vm.maxmapcount [6
2017-12-28 00:17:02
704
原创 Elasticsearch 基本语法汇总
原文链接:http://www.dubby.cn/detail.html?id=9077数据基本操作在Elasticsearch中,包含多个索引(Index),相应的每个索引可以包含多个类型(Type),这些不同的类型每个都可以存储多个文档(Document),每个文档又有多个属性。一个索引索引 (index) 类似于传统关系数据库中的一个数据库,是一个存储关系型文档的地方。 索引 (index)
2017-12-23 02:06:09
18533
2
原创 记一个执行了16分钟的请求
原文链接:http://www.dubby.cn/detail.html?id=90761.现象这是内部监控系统记录下这个请求的耗时:紧接着监控系统开始告警:为什么呢?因为有这么一个接口,我简单描述一下他干了什么吧:他接受一个图片的url,然后在服务端请求这个图片,读出字节后再输出给response。2.危害 这个接口可能并没有什么意义,但是在某些场景下确实有存在的必要。在此不讨论它存在的意义,
2017-12-22 18:26:19
290
原创 INSERT ... ON DUPLICATE KEY UPDATE
原文链接:http://www.dubby.cn/detail.html?id=9075如果在insert语句后加上ON DUPLICATE KEY UPDATE子句,那么如果这个insert语句因为UNIQUE或者PRIMARY KEY冲突而插入失败时,会执行这个子句来执行更新操作。例如,如果a上有唯一键约束,并且有一列的值是1,那么下面两句SQL是等价的:INSERT INTO t1 (a,b,
2017-12-20 19:47:46
558
原创 Jackson之jackson-annotations
原文链接:http://www.dubby.cn/detail.html?id=9071字段命名@JsonProperty可以指定字段的命名(还可以指定这个字段需要参与序列化和反序列化)。 @JsonProperty.value:指定的字段名字@JsonProperty.index:指定顺序,默写数据格式是基于顺序(JSON不是这种数据格式)@JsonProperty.defaultValu
2017-12-10 01:16:30
5895
Redis管理端
2018-12-30
machinelearninginaction
2017-12-21
btrace-bin-1.3.9.tgz
2017-11-17
深入理解java虚拟机
2017-11-15
tomcat 7.0.79
2017-09-26
rabbitmq(windows版)
2017-09-13
机器学习实战
2016-11-30
redis-3.2.1.tar.gz
2016-09-08
[云计算实践指南].(威尔特等).周庆辉等.扫描版.pdf
2014-06-06
[深入浅出数据分析(中文版)].(Michael.Milton).李芳.扫描版.pdf
2014-06-06
QML与C++混合编程.pdf
2014-06-05
IBM大型机汇编语言.pdf
2014-06-05
C语言与算法分析.pdf
2014-06-05
Perl语言入门.pdf
2014-06-05
unix环境高级编程.rar
2014-06-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人