avatar
文章
383
标签
67
分类
46

主页
时间轴
标签
分类
关于
ClawHub的技术分享
搜索
主页
时间轴
标签
分类
关于

ClawHub的技术分享

利用Redis实现流水号生成
发表于2019-08-09|JavaJAVA基础
文章首发于:clawhub.club 最近有个需求,涉及到生成特定流水号:编码+14位时间YYYYMMDDHH24MMSS+6位流水号(定长),序号从000001开始,增量步长为1。因为系统为集群部署,所以需要中间件来做后6位的增量计数。redis的INCR命令正好合适:INCR 命令将 key 中储存的数字值增一,如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作。 因为系统使用的是jedis 2.9.0 所以封装了两个简单的方法:接口: 1234567891011/** * 对某个键的值自增 * 内部键对应的值自增与键的过期时间设置非原子性, * 假设多线程,同时执行自增操作,计数没有问题, * 过期时间在此键没有调用时开始生校。 * * @param key 键 * @param cacheSeconds 超时时间,0为不超时 * @return 值 */ long getAndIncrement(String key, int cacheSeconds); ...
maven项目打包时引入外部jar包
发表于2019-08-09|JavaJAVA基础
文章首发于:clawhub.club 最近在重构公司的老项目代码,将jar包通过maven管理,有些包不存在于maven仓库,所以要通过maven将本地jar打到最终的包中。 123456789<!--淘宝大鱼--><dependency> <groupId>com.taobao</groupId> <artifactId>taobao-sdk-java-auto</artifactId> <systemPath>${project.basedir}/lib/taobao-sdk-java-auto_1455552377940-20160816.jar</systemPath> <version>1455552377940-20160816</version> <scope>system</scope></dependency> pom文件的build节点下必须增加资源配置,否 ...
java字符串补零到定长
发表于2019-08-09|JavaJAVA基础
文章首发于:clawhub.club String.format(“%06d”, 1) %06d分析%d:整数类型(十进制)0:填补项6:填补的位数 附上转换表:
redis自增序列
发表于2019-08-09|JavaJAVA基础
文章首发于:clawhub.club Redis Incrby 命令Redis Incrby 命令将 key 中储存的数字加上指定的增量值。 如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCRBY 命令。 如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。 本操作的值限制在 64 位(bit)有符号数字表示之内。 redis Incrby 命令基本语法如下:1INCRBY KEY_NAME INCR_AMOUNT springboot-redis 中自增序列使用123456//redis自增RedisAtomicLong entityIdCounter = new RedisAtomicLong(key, Objects.requireNonNull(redisTemplate.getConnectionFactory()));//两秒超时entityIdCounter.expire(2, TimeUnit.SECONDS);//获取自增值long num = entityIdCounter.getAndIncrement( ...
java生成6位随机数
发表于2019-08-09|JavaJAVA基础
文章首发于:clawhub.club Math.random结果:[0.0,1.0),大于等于0但是小于1的浮点数值 6位随机字符串12345String result = "";for (int i = 0; i<6; i++){ int intVal = (int)(Math.random()*26+97); result = result +(char) intVal;} 0-9 48-57A-Z 65-90a-z 97-122 6位随机数字1(int) ((Math.random() * 9 + 1) * 100000) 结果为:[100000,1000000)
JAVA一个或多个空格分隔字符串,split方法分析。
发表于2019-08-09|JavaJAVA基础
文章首发于:clawhub.club java中通过split方法来分隔字符串,且支持正则表达式。空格在正则表达式中用\s标识,+号表示出现一次或者多次。 使用一个空格分隔字符串123456789101112//代码 String string = "Hi,hello world!"; String[] strArr = string.split("\\s"); System.out.println(strArr.length); for (String str : strArr) { System.out.println(str); }//结果3Hi,helloworld! 使用一个或多个空格分割字符串1234567891011//代码 String string = "Hi,hello world!"; String[] strArr = string.split("\\s+&quo ...
Mybatis批量插入
发表于2019-08-09|JavaJAVA基础
文章首发于:clawhub.club mybatis是通过foreach标签实现批量插入。在构建 IN 条件语句的时候,遍历集合。 foreach标签官方示例123456789<select id="selectPostIn" resultType="domain.blog.Post"> SELECT * FROM POST P WHERE ID in <foreach item="item" index="index" collection="list" open="(" separator="," close=")"> #{item} </foreach></select> 属性介绍 collection:指定要遍历的集合: list类型的参数会特殊处理封装在map中,map的key就叫list item:将当前遍历出 ...
javax.crypto.BadPaddingException-Given final block not properly padded
发表于2019-08-09|JavaJAVA基础
文章首发于:clawhub.club 项目中用到了AES加密,在windows上运行的好好的,但是在linux下,解密时就会抛出:javax.crypto.BadPaddingException: Given final block not properly padded。记录一下,以后不要踩这种坑。 出问题的代码123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475/** * AES加密字符串 * * @param content 需要被加密的字符串 * @param password 加密需要的密码 * @return 密文 byte [ ] */ public static byte[] encrypt(String content, String password) { try  ...
MQTT协议解析
发表于2019-08-09|JavaJAVA基础
文章首发于:clawhub.club 转 MQTT协议-MQTT协议解析(MQTT数据包结构)协议就是通信双方的一个约定,即,表示第1位传输的什么、第2位传输的什么……。在MQTT协议中,一个MQTT数据包由:固定头(Fixed header)、 可变头(Variable header)、 消息体(payload)三部分构成。 MQTT 数据包结构 固定头(Fixed header),存在于所有MQTT数据包中,表示数据包类型及数据包的分组类标识 可变头(Variable header),存在于部分MQTT数据包中,数据包类型决定了可变头是否存在及其具体内容 消息体(Payload),存在于部分MQTT数据包中,表示客户端收到的具体内容 1 MQTT固定头固定头存在于所有MQTT数据包中,其结构如下: Bit 7 6 5 4 3 2 1 0 byte 1 MQTT数据包类型 不同类型MQTT数据包的具体标识 byte 2… 剩余长度 1.1 MQTT数据包类型位置:byte 1, bits 7-4。 相于一个4位的无符号值,类型如 ...
FTPS碰到的事儿
发表于2019-08-09|JavaJAVA基础
文章首发于:clawhub.club 背景传输数据方案设计时,把SFTP定为了传输工具,但是昨天突然说SFTP不安全,要变成FTPS。 SFTP为什么不安全SFTP全称叫Secure File Transfer Protocol,客户端和服务器端都通过端口22传输和接收数据。SFTP 为 SSH的一部分,而SSH专为远程登录会话和其他网络服务提供安全性的协议。 又因为服务器是集群的,内部互联,所以不能对外开放这个SFTP。 FTPS是啥就是FTP加一层外壳SSL/TSL。 FTP全称:File Transfer Protocol 是用于在网络上进行文件传输的一套标准协议。有主动和被动两种传输方式,服务器端和客户端个通过不同的端口传输命令以及数据。 FTP主动模式的传输过程: FTP被动模式的传输过程: **SSL(**Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。 SSL/TLS协 ...
1…232425…39
avatar
ClawHub
ClawHub的技术分享,记录学习中的点点滴滴!
文章
383
标签
67
分类
46
Follow Me
公告
奋斗!
最新文章
以精准营销为例梳理短信业务
以精准营销为例梳理短信业务2023-10-16
小程序商品库存及限购优化改造
小程序商品库存及限购优化改造2023-10-16
从恶意刷单到小程序下单流程优化
从恶意刷单到小程序下单流程优化2023-10-16
从红包裂变活动了解活动业务
从红包裂变活动了解活动业务2023-09-27
从服务提醒单了解商机提醒业务
从服务提醒单了解商机提醒业务2023-09-23
标签
Golanghexo分布式微服务业务梳理小程序下单商机提醒活动短信nodeelectronvue测试PostmanJasper打印模板ExcelSQL微信ElasticSearchSQL优化福利资源问题与解决Excel上传OOMMap.computeIfAbsentAsyncTransmittableThreadLocalLists.partition随笔面试一键分发平台JavaJAVA基础java泛型arthasJAVA基础集合框架java并发容器源码分析
归档
  • 十月 20233
  • 九月 20233
  • 十二月 20223
  • 十一月 20223
  • 七月 20222
  • 六月 202210
  • 五月 202211
  • 四月 20222
©2019 - 2023 By ClawHub
好好学习 天天向上
搜索