210302-QuickMedia升级2.6.0

quick-media 升级2.6.0,二维码组件扩展两种样式规则

  • MINI_RECT: 超火的小方块二维码生成
  • IMAGE: 图片二维码,当相同的区域指定多个图片时,支持随机挑选渲染

项目源码: https://github.com/liuyueyi/quick-media

210225-分页遍历的两种使用姿势

在日常开发中,分页遍历迭代的场景可以说非常普遍了,比如扫表,每次捞100条数据,然后遍历这100条数据,依次执行某个业务逻辑;这100条执行完毕之后,再加载下一百条数据,直到扫描完毕

那么要实现上面这种分页迭代遍历的场景,我们可以怎么做呢

本文将介绍两种使用姿势

  • 常规的使用方法
  • 借助Iterator的使用姿势

210224-ssh防掉线设置

通过ssh连接远程服务器,一段时间不操作之后自动断线,一个可选的设置方法,在服务端添加心跳设置

1
2
3
4
5
sudo vim /etc/ssh/sshd_config

# 配置
ClientAliveInterval 30
ClientAliveCountMax 6

200223-docker 批量删除命令小记

删除所有容器

1
docker rm `docker ps -a -q`

删除所有镜像

1
docker rmi `docker images -q`

删除没有tag镜像

1
docker rmi `docker images|grep none|awk '{print $3 }'|xargs`

200223-npm 打包溢出 FATAL ERROR Ineffective mark-compacts near heap limit Allocation failed

hexo打包上传博文时,忽然报了一个致命错误,FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed 堆内存不够

一个简单的解决办法

1
export NODE_OPTIONS="--max-old-space-size=8192"

或者直接在.bash_profile文件中配置,并全局生效

1
2
3
4
5
6
7
8
vim ~/.bash_profile

# 新增,并保存退出
export NODE_OPTIONS="--max-old-space-size=8192"


# 生效
source ~/.bash_profile

210208-git diff ^M不同操作系统下换行区别

不同操作系统下的换行不一致,当一个项目的开发者分别再linux/mac/win下做了代码提交改动之后,使用git diff命令时,可能会发现,即便啥也没改,当时有很多变动,显示^M的差别

主要原因就是换行的问题

解决这个问题的一个办法就是统一换行

1
git config --global core.autocrlf true

210207-MySql并发插入死锁引来的锁分析

最近遇到一个由于唯一性索引,导致并发插入产生死锁的场景,在分析死锁产生的原因时,发现这一块还挺有意思的,涉及到MySql中不少的知识点,特此总结记录一下

210203-tmux 批量操作

借助tmux,可以非常方便的实现同时操作多个面板

1
2
3
4
5
6
7
8
9
10
11
12
# 启用
tmux

# 开面板,上下、左右
ctrl + b: %
ctrl + b: "

# 开启批量操作
ctrl + b -> :set synchronize-panes on

# 关闭面板
ctrl + b: x

210129-Java对象内存地址输出

当一个对象没有重写hascode方法时,它返回的内存地址,当覆盖之后,我们有什么办法获取对象的内存地址么?

  • 使用 System.identityHashCode() 输出内存地址

210128-dubbo接口测试小技巧

记录一下借助telnate进行简单的dubbo接口测试

  • 获取dubbo端口号
  • telnate ip port
  • ls 列出所有服务
  • invoke com.xxx.Service.sayHello("xxx")

210125-tmux 快捷键

tmux 终端复用器,最简单质朴的需求就是多窗格,会话复用,本文简单记录一下常用的快捷键

210123-Quick-Media 前置渲染模板支持

Java端”最强”二维码渲染工具又双叒叕升级了,新增前置模板渲染,简单几行代码即可实现酷炫的二维码生成

项目源码:https://github.com/liuyueyi/quick-media

210121-StringUtils字符串分割使用姿势异常记录

字符串分割,属于比较常见的case了,在实际开发中,相信很多小伙伴会借助common-lang工具包中的StringUtils来实现,使用姿势也很简单

1
String[] ans = StringUtils.split("a,b,c", ",");

一般来讲上面这种使用方式没有问题,但是当分隔符前后为空时,需要特别注意,可能会和你预期的返回不一致

210107-Spring工具类之基本元素判断

实际业务开发中偶尔会遇到判断一个对象是否为基本数据类型,除了我们自老老实实的自己写之外,也可以借助Spring的 BeanUtils 工具类来实现

1
2
3
4
5
// Java基本数据类型及包装类型判断
org.springframework.util.ClassUtils#isPrimitiveOrWrapper

// 扩展的基本类型判断
org.springframework.beans.BeanUtils#isSimpleProperty

210105-Permissions for .ssh/id_rsa are too open

ssh私钥权限问题,导致登录服务器时,提示异常

1
2
3
4
5
6
7
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0750 for '/Users/user/.ssh/id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/Users/user/.ssh/id_rsa": bad permissions

解决这个问题的一个手段是将它的权限设置为700

1
chmod -R 700 .ssh/

210104-IDEA resin配置

Resin是CAUCHO公司(http://www.caucho.com/)的产品,是一个非常流行的支持servlets 和jsp的引擎,速度非常快。Resin本身包含了一个支持HTTP/1.1的WEB服务器。虽然它可以显示动态内容,但是它显示静态内容的能力也非常强,速度直逼APACHE SERVER

简单把resin理解为一个类似tomcat的web服务器就好,下面介绍一下IDEA如何配置resin,从而快速启动

201128-Maven 中央仓库提交Jar包全程指南

本文记录一下将jar上传到maven中央仓库的全过程,文中项目依托在github上,使用的是mac环境 (关于maven、jdk的环境配置不属于本文内容)

201125-Mysql 字符集不一致问题

做一个简单的如下的连表查询,居然直接提示错误,居然是字符集不一致的问题,本文记录一下mysql的字符集类型,以及下面这个问题的解决方案

1
2
3
select a.id, b.id from tt as a, t2 as b where a.xx = b.xx

-- Illegal mix of collations (utf8mb4_unicode_ci,IMPLICIT) and (utf8mb4_general_ci,IMPLICIT) for operation '='

201121-Mac android studio 4.1 missing essential plugin问题解决

android studio 4.1 禁用一个插件之后重启,结果发现应用都起不来了,直接报了一个错误

这就有点尴尬了,禁用一个插件直接导致不可用,那么能想到的解决办法就是将这个插件启用,问题是应用都跪了,怎么启用插件呢?

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×