210816-实战小技巧6:枚举的特殊用法

每天一个实战小技巧:枚举的特殊用法

难道我们日常使用的枚举还有什么特殊的玩法不成?没错,还真有,本文主要介绍枚举的两种不那么常见的使用姿势

  • 利用枚举来实现单例模式
  • 利用枚举来实现策略模式

210814-实战小技巧5:驼峰与下划线互转

每天一个实战小技巧:驼峰与下划线划转

这个考题非常实用,特别是对于我们这些号称只需要CURD的后端开发来说,驼峰与下划线互转,这不是属于日常任务么;一般来讲db中的列名,要求是下划线格式(why? 阿里的数据库规范是这么定义的,就我感觉驼峰也没毛病),而java实体命名则是驼峰格式,所以它们之间的互转,就必然存在一个驼峰与下划线的互转

今天我们就来看一下,这两个的互转支持方式

210812-实战小技巧4:优雅的实现字符串拼接

每天一个实战小技巧,字符串拼接

相信没有小伙伴没有写过这样的代码,比如说现在让我们来实现一个字符串拼接的场景,怎样的实现才算是优雅的呢?

210811-实战小技巧3:字符串与容器互转

每天一个实战小技巧:字符串与Collection的互转

将字符串转换为List,这种业务场景可以说非常非常常见了,实现方式也比较简单

1
2
3
4
public List<String> str2list(String str, String split) {
String[] cells = str.split(split);
return Arrays.asList(cells);
}

那么除了上面这种实现方式之外,还有其他的么?

210810-实战小技巧2:数组与list互转

每天一个实战小技巧:数组与list互转

这个考题比较常见,也比较简单,难道就这也有什么可以说到的门路不成?

接下来本文好好的说一说它的几种实现姿势,总有一款你喜欢的

210809-实战小技巧:字符串占位替换-JDK版

字符串占位替换,相信没有小伙伴是陌生的,这东西可以说是伴随着我们所有的项目工程,编码过程;别不相信,如

  • String.format
  • sql参数拼接的占位
  • log日志输出

接下来我们看一下在我们的日常工作生涯中,经常涉及到的几种占位替换方式

210807-Jackson 实用姿势小结

使用json进行数据交互可以说是非常常见的常见,在java侧,常用的json解析框架也不少,比如gson, fastjson以及spring mvc中默认使用的jackson;本文将主要介绍一下jackson的基本使用姿势,比如常见的

  • 普通对象转json字符串
  • json字符串转POJO,转Map/List
  • 泛型支持
  • 驼峰/下划线互转,自定义映射关系

210723-Arthas 获取SpringContext访问应用行为记录

使用arthas进行应用排查定位,这里主要记录借助arthas,获取SpringContext,然后就可以通过SpringContext来访问应用内存数据,调用bean方法等操作

基本操作

1
2
3
4
5
6
7
8
9
10
11
12
# 下载arthas
curl -O https://arthas.aliyun.com/arthas-boot.jar
# 启动
java -jar arthas-boot.jar
# 选择需要挂在的jar进程
1

# 监控,获取SpringContext
tt -t org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter invokeHandlerMethod

# 然后通过http访问一下应用,接下来就可以使用下面的获取到SpringContext
tt -i 1000 -w 'target.getApplicationContext()'

210715-Json序列化框架对比与最佳实践推荐

Java 生态中,最最常见的json序列化工具有三个jackson, gson, fastsjon,当然我们常用的也就是这几个

https://mvnrepository.com/open-source/json-libraries

json协议虽然是一致的,但是不同的框架对json的序列化支持却不尽相同,那么在项目中如何使用这些框架,怎样的使用才算优雅呢?

210706-MySql表字段修改记录

mysql修改表数据类型的方式

  • 针对一个已经存在的列,修改类型,主要使用 modify
1
alter table xxx modify id int(11) unsigned not null auto_increment comment '主键id'
  • 如果是希望新增一列,使用add column
1
2
-- after 表示这个新增的列在id这一列之后
alter table xxx add column to_add varchar(11) not null default '' comment '新增的列' after `id`;
  • 删除某一列,使用 drop column
1
2
-- 删除 xxx 这一列
alter table drop column xxx;

210702-curl 耗时统计脚本小记

记录一下curl访问url请求的耗时情况

1
curl 'https://blog.hhui.top/hexblog/about/' -w '%{time_namelookup}::%{time_connect}::%{time_starttransfer}::%{time_total}::%'

参数说明:

  • time_namelookup:DNS 解析域名耗时
  • time_connect:client和server端建立TCP 连接的时间
  • time_starttransfer:从client发出请求;到web的server 响应第一个字节的时间
  • time_total:client发出请求;到web的server发送会所有的相应数据的时间

建立TCP连接到server返回client第一个字节的时间:time_starttransfer – time_connect = s

server把响应数据发送给client的时间:time_total – time_starttransfer = s

210629-QlExpress使用姿势四:Operator与Micro扩展

本文将介绍QlExpress中自定义操作符Operator + Micro的使用姿势,通过扩展Operator,可以为规则脚本赋能,提供更友好的使用姿势

210628-QlExpress使用姿势三:Function与方法绑定

QlExpress绑定方法,实现能力扩展;支持自定Function,再脚本中定义函数,实现复用

210624-QlExpress使用姿势二:基本语法

上一篇博文简单的介绍了一下QlExpress,以及一个最基础的使用demo,接下来我们看一下QlExpress的语法,重点关注一下它与Java不同的地方

210524-win10与ubuntu子系统文件互查

记录一下win10与子系统ubuntu之间的文件共享方式,即如何在win10中查询ubuntu的文件,反过来又是怎么操作的

210518-String#format数量不匹配抛异常

偶然发现一个问题,在使用String.format进行格式化输出时,发现参数个数不匹配时,会抛出异常,如

1
String msg = String.format("hello %s, %s", "a");

上面这个执行之后,会抛MissingFormatArgumentException异常,提示信息如

1
java.util.MissingFormatArgumentException: Format specifier '%s'

210514-IDEA代码修改不生效,需要mvn install问题记录

最近用idea开发一个项目,遇到一个鬼畜的问题,代码修改之后,启动测试发现不生效,只有重新mvn clean install之后才能加载到改动的代码

这就有点过分了,怀疑是idea的配置问题导致的,没有什么特别好的办法,只能删配置重新导入

  • 删除 .idea文件夹
  • 删除 *.iml文件
  • 重新导入项目

210512-IDEA 项目module无法导入问题记录

idea一个项目有多个module,忽然发现一个module显示不太正常,如

一般有两种方法,基本的如:

  • 选中pom.xml,右键
  • maven
  • unignore Projects

210509-spring boot启动类启动 错误: 找不到或无法加载主类 xxx.xxxx.Application 的解决方法

SpringBoot项目启动,忽然提示找不到或者无法加载主类,记录两种常用的方式

方法一:清空idea缓存

idea清理缓存:

  • file -> Invalidate Cache & Restart IDEA

方法二:maven重新install

执行命令

1
mvn clean install -DskipTests=true
Your browser is out-of-date!

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

×