JAVA
文章平均质量分 53
征服.刘华强
这个作者很懒,什么都没留下…
展开
-
Aspose Cells Excel模板转PDF Linux中文乱码解决
版本20.11Copying Fonts from a Windows Machine An easy and quick way to get TrueType fonts on a Linux system is to copy .TTF and .TTC files from the C:\Windows\Fonts directory on a Windows machine to some directory on your Linux machine. You do not need原创 2020-12-16 17:53:39 · 3756 阅读 · 9 评论 -
JAVA中的时区设置
JAVA中的时区设置第一种方式、通过代码指定。final TimeZone timeZone = TimeZone.getTimeZone("GTM+8");TimeZone.setDefault(timeZone);第二种方式、通过JVM参数指定 -Duser.timezone=Asia/Shanghai第三种方式、通过环境变量指定export TZ=...原创 2019-12-16 13:31:50 · 12015 阅读 · 2 评论 -
Netty源码分析-解码器MessageToMessageEncoder
package io.netty.handler.codec;import io.netty.channel.ChannelHandlerContext;import io.netty.channel.ChannelOutboundHandler;import io.netty.channel.ChannelOutboundHandlerAdapter;import io.netty...原创 2019-02-14 17:12:10 · 1343 阅读 · 0 评论 -
Netty源码分析-SimpleChannelInboundHandler
package io.netty.channel;import io.netty.util.ReferenceCountUtil;import io.netty.util.internal.TypeParameterMatcher;public abstract class SimpleChannelInboundHandler<I> extends ChannelIn...原创 2019-02-13 10:48:56 · 676 阅读 · 0 评论 -
Netty源码分析-解码器ByteToMessageDecoder
package io.netty.handler.codec;import io.netty.buffer.ByteBuf;import io.netty.buffer.ByteBufAllocator;import io.netty.buffer.CompositeByteBuf;import io.netty.buffer.Unpooled;import io.netty.cha...原创 2019-02-13 16:31:49 · 902 阅读 · 0 评论 -
Netty源码分析-编码器LengthFieldPrepender
package io.netty.handler.codec;import io.netty.buffer.ByteBuf;import io.netty.channel.ChannelHandler.Sharable;import io.netty.channel.ChannelHandlerContext;import io.netty.util.internal.Ob...原创 2019-02-20 14:06:23 · 1046 阅读 · 0 评论 -
Netty源码分析-解码器LengthFieldBasedFrameDecoder
解码方式一:lengthFieldOffset = 0lengthFieldLength = 2lengthAdjustment = 0initialBytesToStrip = 0 (= do not strip header) 解码前 (14 bytes) 解码后 (14 bytes) +--------+-----------...原创 2019-02-21 11:28:05 · 1666 阅读 · 1 评论 -
java char类型的存值范围
Java采用Unicode进行编码,char类型在内存中占2个字节-16位,其值的范围在0-65535之间。20 世纪 80 年代开始启动设计 Unicode 编码时,人们认为两个字节(16 位)的代码宽度足以对世界上各种语言的所有字符进行编码,并有足够空间留给未来的扩展。所以在设计 Java 时决定采用 16 位的 Unicode 字符集。目前Unicode编码范围在0-1114111之间,显然...原创 2019-03-08 14:21:02 · 18092 阅读 · 3 评论 -
JAVA整形类型转换深入研究
1、负数低位转高位(隐式转换)public static void main(String[] args) throws Exception { byte b1 = -28; int a1 = b1; System.out.println(a1); System.out.println(Integer.toBinaryString(a1)); ...原创 2019-03-11 11:29:26 · 570 阅读 · 0 评论 -
MYSQL数据类型与存储空间
1:整形Integer Types (Exact Value) - INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT类型 存储空间(字节) 最小值(有符号) 最小值(无符号) 最大值(有符号) 最大值(无符号) TINYINT 1 -128 0 127 255 S...原创 2019-03-18 21:30:16 · 2141 阅读 · 0 评论 -
JavaIO-DataOutputStream源码分析
//把字符串以UTF-8方式写入到输出流 static int writeUTF(String str, DataOutput out) throws IOException { //字符串长度 int strlen = str.length(); //写成UTF-8后字节的长度 int utflen = 0; //c=字符的unicode编码...原创 2019-04-05 13:53:39 · 465 阅读 · 0 评论 -
JavaIO-DataInputStream源码分析
package java.io;public class DataInputStream extends FilterInputStream implements DataInput { //传入底层输入流 public DataInputStream(InputStream in) { super(in); } //字节缓冲区 pri...原创 2019-04-07 10:57:23 · 594 阅读 · 0 评论 -
Hashmap为什么容量是2的幂次,附加一个轮训算法。
我们知道hashmap底层是一个数组+连表的数据结构。transient Node<K,V>[] table;数组的长度为什么选择2的幂次。 比如 8或者16,为什么不能为7或者15呢?答:为了效率, (n - 1) & hash 其中N为16, hash为对象的哈希值,那么会返回【0-15】,正好作为数组的下标,我们知道&效率是最快的。我们来看一...原创 2019-06-13 18:06:36 · 506 阅读 · 0 评论 -
深度分析Fileupload是如何删除临时文件的
在使用Fileupload组件处理文件上传时,我们可以定义maxInMemorySize,当上传文件大小超过此值,则把文件写入临时文件,防止内存占用过多或溢出。如下配置代码。 @Bean(name = "multipartResolver") public CommonsMultipartResolver multipartResolver() throws IOExcepti...原创 2019-07-09 11:39:07 · 2310 阅读 · 0 评论 -
Integer.reverse(int)反转的原理
Integer有一个静态方法用于反转底层二进制数组public static int reverse(inti);System.out.println(Integer.reverse(886));得到的值为1858076672下面给出886的二进制数据(00000000000000000000)0011 0111 0110下面给出1858076672的二进制数据...原创 2019-08-07 22:41:05 · 5020 阅读 · 2 评论 -
RSA加密算法如何保证明文小于指数
RSA加密算法如何保证0<m<n,也就是说密文M需要大于零,并且小于指数。先说规则:如果秘钥长度为1024比特(128字节),那么明文M的字节长度不能超过117。keyPairGenerator.initialize(1024);如果秘钥长度为2048比特(256字节),那么明文M的字节长度不能超过245。keyPairGenerator.initiali...原创 2019-08-10 21:21:54 · 1499 阅读 · 0 评论 -
logback kafka elasticsearch kibana logstash 构建分布式日志聚合平台
需要解决的问题~在传统开发模式中,将日志信息写入到文件是比较常见的做法,在单节点情况下直接去服务器查看本地文件,通过grep~~进行过滤,或者把文件下载到本地,通过ctrl+f进行查询,非常麻烦,如果是一个分布式系统,出现点问题需要挨个节点去排查日志,而且在日志量比较大的情况,无论是存储日志,查询日志,都非常麻烦,下面将通过整合logback kafka elasticsearch kiban...原创 2018-12-21 16:21:15 · 1305 阅读 · 0 评论 -
分布式Long类型时间序ID生成算法,每秒百万级生成速度
Long类型,一共8个字节64位第1位,设置为0,表示正数第2-42位,(41bit),设置为时间戳第43-47位,(5bit),设置为数据标识 第48-52位,(5bit),设置为机器ID第53-64位,(12bit),设置为序列号本算法根据twriter的id生成算法改进,不同JVM节点 long workerId, long datacenterId 这俩个值不能...原创 2018-12-15 19:29:47 · 1879 阅读 · 0 评论 -
扩展Redis的Jedis客户端,哨兵模式读请求走Slave集群
Redis哨兵模式,由Sentinel节点和Redis节点组成,哨兵节点负责监控Redis的健康状况,负责协调Redis主从复制的关系。本文不详细讨论Redis哨兵模式,关于哨兵的详细介绍可以参考(https://blog.csdn.net/u010297957/article/details/55050098) 在使用哨兵模式以后,客户端不能直接连接到Redis集群,而是连接到哨兵集...原创 2018-12-06 14:26:45 · 4884 阅读 · 1 评论 -
Java中使用 Md5+Key的方式对Url签名防篡改
Java中使用 Md5+Key的方式对Url签名防篡改原创 2015-08-26 11:05:41 · 12732 阅读 · 3 评论 -
Haproxy反向代理MySQL底层原理分析
Haproxy反向代理MySQL底层原理分析最近研究了一下Haproxy反向代理的机制,它支持俩中模式的反向代理,有4层模式与7层模式。@:使用7层模式作为Web代理,下面是官方的解释,按照http模式工作,客户端的请求在被转发到真实服务器之前会被代理服务器深度分析,任何请求如果不满足(RFC-compliant)Web标准将被拒绝,会对请求进行过滤 处理 和 路由。也就是与目前比原创 2017-03-17 11:42:11 · 4030 阅读 · 0 评论 -
别拿无知当个性,跟新哥学CAS单点登录,手把手带你分析CAS源码
1:假设有web服务器A,web服务器B,和CasServer。A(www.a.com) B(www.b.com) CasServer(www.cas.com)2:当用户访问A的受保护资源时,如果没有登录,则A会让客户端浏览器重定向到CAS SERVER。假设:https://www.cas.com/server/login?service=http://www.a.com/c...原创 2018-05-15 16:23:17 · 1536 阅读 · 0 评论 -
Dubbo单一长连接多路复用原理解析
dubbo协议:2byte magic:类似java字节码文件里的魔数,用来判断是不是dubbo协议的数据包。魔数是常量0xdabb1byte 的消息标志位:16-20序列id,21 event,22 two way,23请求或响应标识1byte 状态,当消息类型为响应时,设置响应状态。24-31位。状态位, 设置请求响应状态,dubbo定义了一些响应的类型。具体类型见com.aliba...原创 2018-08-22 11:28:27 · 6244 阅读 · 0 评论 -
SpringBoot Centos6.x 设置为系统服务
1、首先修改pom.xml <executable>true</executable> 这样编译的jar会包含shell脚本<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin&...原创 2018-08-26 14:40:21 · 1228 阅读 · 0 评论 -
CentosOS6.8配置客户端使用SSL方式连接MySQL
CentosOS6.8配置客户端使用SSL方式连接MySQLMySQL安装完成后默认只允许localhost本地连接,如果允许其它机器远程连接,MySQL默认的传输方式是明文的,不安全。那么如何保证数据的安全性?1:内网物理隔离,数据库不对外开放连接,只允许内网连接,如:阿里云服务器的内网就是物理隔离的。2:让客户端已SSL方式连接MySQL服务器,加密传输,保证安全性。 ...原创 2018-09-09 13:55:40 · 1060 阅读 · 0 评论 -
AES/ECB/PKCS5Padding8)
/** * AES/ECB/PKCS5Padding (128) * AES加密 ECB模式 PKCS5填充方式 密钥长度必须为16个字节(128位) */ public static void main(String[] args) throws Exception { //密钥生成器 KeyGenerator kg...原创 2018-10-02 14:34:30 · 1909 阅读 · 0 评论 -
AES/CBC/PKCS5Padding (128)
CBC模式,将明文分组与前一个密文分组进行XOR运算,然后再进行加密。每个分组的加解密都依赖于前一个分组。而第一个分组没有前一个分组,因此需要一个初始化向量 IV package com.framework.test;import lombok.extern.slf4j.Slf4j;import javax.crypto.Cipher;import javax.cryp...原创 2018-10-02 14:41:14 · 7362 阅读 · 0 评论 -
支付宝接口调用返回参数验证签名采坑
一、同步返回参数和同步响应参数的区别 1.同步返回的参数是指在接口的请求参数中传入return_url参数,在支付成功后在return_url地址后面返回的如:https://m.alipay.com/Gk8NF23?total_amount=9.00&timestamp=2016-08-11+19%3A36%3A01&sign=ErCRRVmW%2FvXu1XO...转载 2018-10-10 11:16:09 · 12168 阅读 · 0 评论 -
Spring事物传播特性源码分析
PROPAGATION_REQUIRED:如果当前没有事务,就新建一个事务,如果已经存在一个事务,就加入到这个事务中。这是最常见的选择。PROPAGATION_SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行。PROPAGATION_MANDATORY:使用当前的事务,如果当前没有事务,就抛出异常。PROPAGATION_REQUIRES_NEW:新建事务,如果当前存在事...原创 2018-11-18 17:23:24 · 511 阅读 · 0 评论 -
java 获取 reuqest payload 里的数据
[code="java"] public static String getBody(HttpServletRequest request) throws IOException { String body = null; StringBuilder stringBuilder = new StringBuilder(); BufferedReader ...原创 2013-04-13 15:28:38 · 4193 阅读 · 0 评论 -
使用Aspose.Cells for java完成复杂Excel报表导出
[size=x-large]使用Aspose.cells for java 完成对复杂EXCEL的导出功能[/size]使用Aspose.cells导出Excel非常方便,而且可以自定义EXCEL样式.官方下载地址:[url]http://www.aspose.com/java/excel-component.aspx[/url]我使用的是最新版本的7.4.3需要j...2013-05-01 19:54:01 · 1321 阅读 · 1 评论 -
使用Aspose.Words for Java完成复杂Word与PDF的导出
[size=xx-large]使用Aspose.Words for Java完成复杂Word与PDF的导出[/size][size=x-large]使用Aspose.Words for Java 可以导出复杂WORD PDF HTML 多种数据格式官方下载地址:[url]http://www.aspose.com/java/word-component.aspx[/url]我所用的...2013-05-01 20:26:08 · 1262 阅读 · 2 评论 -
使用WeakReference 与 ReferenceQueue 简单实现弱引用缓存
[size=x-large][color=green]本文介绍对象的强、软、弱和虚引用的概念、应用及其在UML中的表示。1.对象的强、软、弱和虚引用 在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及(reachable)状态,程序才能使用它。从JDK 1.2版本开始,把对象的引用分为4种级别,从而使程序能更加灵活地...原创 2013-05-13 09:52:42 · 1030 阅读 · 0 评论 -
Java中使用RSA对请求和接收数据进行签名校验
Java中使用RSA对请求和接收数据进行签名校验RSA是非对称加密算法,具体原理是什么这里不做解释,给出一遍文字解释的非常详细。http://www.ruanyifeng.com/blog/2013/06/rsa_algorithm_part_one.htmlOpenSSL工具安装Linux用户(以Ubuntu为例) sudo apt-get i原创 2015-08-26 11:20:59 · 9926 阅读 · 2 评论