kotlin
泰勒今天不想展开
这个作者很懒,什么都没留下…
展开
-
aes加解密
提供一个基于kotlin的aes加解密的工具类:import org.slf4j.LoggerFactoryimport xiaosong.yang.smallshopserver.config.interceptor.AdminDataAuthInterceptorimport java.security.SecureRandomimport javax.crypto.Cipherimport javax.crypto.KeyGeneratorimport javax.crypto.Secr原创 2021-05-27 12:05:23 · 190 阅读 · 1 评论 -
easyexcel封装
项目中有大量的报表并且有对应的报表导出功能,导出功能都是基于报表当前的查询条件,导出所有页的记录,流程相对单一,所以封装了一个阿里的easyexcel,只需要传入指定参数即可,隔离了文件相关处理流程:import com.alibaba.excel.EasyExcelimport com.alibaba.excel.ExcelWriterimport com.alibaba.excel.metadata.Tableimport com.alibaba.excel.write.metadat原创 2021-02-20 18:00:12 · 1095 阅读 · 2 评论 -
kotlin局部变量实现接口
java8中引入了Lambda表达式,其中带来的一个好处就是,我们实现匿名类时变得更加简洁:java8以前: //对于类的方法覆盖 Thread thread1 = new Thread() { @Override public void run() { System.out.println("hahah"); } }; threa原创 2020-12-07 11:21:43 · 571 阅读 · 0 评论 -
spring——基于mongolist元素实现固定大小队列
最近手上有一个需求,需要记录任意两人的会话,并且需要记录最近N条聊天记录。我们首先可以想到一个表记录所有人的聊天记录:发送方,接收方,发送内容,时间。然后一个表记录会话,用户1,用户2,最新的会话时间。然后根据会话表查询聊天记录表获取两人之间的按时间倒序的聊天内容。但是如果最近的N条聊天记录要同会话列表有一同展示就有点头秃了。如果查到一个会话列表,然后遍历去查每个会话的前N条聊天记录。那假设每查一次200ms(因为聊天记录表是庞大的,就算加上了索引,也在几百毫秒的性能损耗),那如果一个列表50条数据原创 2020-10-14 11:12:33 · 236 阅读 · 0 评论 -
forEach的return
对于列表的forEach函数是我们经常用到的,函数中带入一个lambda表达式完成对整个列表的每个元素进行处理,功能和for、while等循环获取元素并进行处理相当。但我们在for或者while中都有break,continue函数,而forEach是没有continue和break的,哪怕使用return,返回的也是外部整个函数。 不过kotlin的forEach提供了return@forEach,但是需要注意的是这个命令跳出的是当前循环,进入下一循环,相当于continue的功能。切记不原创 2020-09-28 19:10:31 · 1683 阅读 · 0 评论 -
spring——spring-data自定义mongo的聚合指令
最近使用基于spring-data的api对mongo进行操作时发现一些局限,比如如下命令: .match({time:{$gte:ISODate("2020-08-01T00:00:00.000+08:00"),$lt:ISODate("2020-09-01T00:00:00.000+08:00")}}) .unwind("$userList") .group({ _id: "$qd", "regUsers":{$addToSet:原创 2020-08-25 09:25:56 · 379 阅读 · 0 评论 -
spring——事务动态代理造成属性为null
近日遇到一个很诡异的问题,kotlin的一段老代码莫名其妙报空指针,而且只有整个springboot项目起起来才会报错,如果写单元测试时单独注入几个类,是不会报错的。最终锁定原因是因为在原本的service类中,新增的一些方法我加上了@Transcational进行事务处理,这就导致生成service类的对象时会为他生成一个基于cglib创建的代理子类。而这个子类中所有的属性都是空指针:但是为什么创建出来的对象会属性都为空呢,毕竟这这些属性都在父类的构造方法里,继承父类构建的子类也需要重写父类的原创 2020-08-18 20:03:29 · 2797 阅读 · 6 评论 -
kotlin函数的高级使用
函数变量 在kotlin中一个函数可以被当做一个参数一样,由入参->返参决定类型: var sum: (Int, Int) -> Int sum = fun(a: Int, b: Int): Int { return a + b } print(sum(1, 2))定义一个函数变量sum,类型为(Int, Int) -> Int,表示两个入参为Int,一个出参也为Int。 如果入参为空,则函数类型可以定义为()->I原创 2020-07-22 23:38:54 · 738 阅读 · 0 评论 -
apidoc生成接口文档
安装nodejs安装nodejs,下载地址(https://nodejs.org/en/)E:\Soft\Node\node_global>node -vv12.18.2E:\Soft\Node\node_global>npm -v6.14.5安装apidocnpm install apidoc -g安装之后进入node的node_global目录如下图说明安装完成生成kotlin的在线接口文档增加apidoc.json文件到项目根目录下:{ "name"原创 2020-07-12 22:54:38 · 297 阅读 · 0 评论