5 泰勒今天不想展开

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 12w+

springboot多环境配置文件

    自己手上有一个项目,想要分环境设置yml配置文件,比如数据库,密钥等,各个环境都配置的不一样。但是又有一些公共的配置,比如一些需要进行配置化的业务常量等。比如当下有开发和生产环境,需要有三个配置文件:application.yml,application-dev.yml,application-prod.yml。其中application.yml为公共配置文件,在其中配置:spring: profiles: active: dev这样开发环境启动的时候,默认加载applicatio

2020-10-16 10:40:35

基于mongolist元素实现固定大小队列

    最近手上有一个需求,需要记录任意两人的会话,并且需要记录最近N条聊天记录。我们首先可以想到一个表记录所有人的聊天记录:发送方,接收方,发送内容,时间。然后一个表记录会话,用户1,用户2,最新的会话时间。然后根据会话表查询聊天记录表获取两人之间的按时间倒序的聊天内容。但是如果最近的N条聊天记录要同会话列表有一同展示就有点头秃了。如果查到一个会话列表,然后遍历去查每个会话的前N条聊天记录。那假设每查一次200ms(因为聊天记录表是庞大的,就算加上了索引,也在几百毫秒的性能损耗),那如果一个列表50条数据

2020-10-14 11:12:33

通过idea执行gradle任务输出乱码

    通过IDEA执行gradle的任务时,在终端的输出出现中文乱码。解决方法是Help->Edit Custom VM Options,然后再最后一行加上-Dfile.encoding=UTF-8重启IDEA即可解决,一定要重启!!!

2020-10-10 16:18:50

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

docker创建mongo容器并设置mongo权限

docker 创建运行mongo容器,并进入到容器内部$ docker run -itd --name mongo -p 27017:27017 mongo --auth$ docker exec -it mongo mongo admin创建用户创建所有数据库管理用户db.createUser({ user: "useradmin", pwd: "adminpassword", roles: [{ role: "userAdminAnyDatabase", db: "admin" }] }

2020-09-24 11:27:27

window脚本上传linux无法执行的问题

    今天使用gradle构建发布脚本,但是start.sh脚本上传到linux后执行报错,但同样的代码复制到vi编辑器重新保存执行,却没问题。最后发现window默认的shell脚本编码格式和linxu不一致,我们可以通过vi命令进入编辑界面,然后在命令框执行:set ff命令查看,当前编码格式,linux默认的是是:fileformat=unix,而window上传上来的是fileformat=dos,然后我们可以通过set ff=unix,在保存退出vi就可以修改文件的格式了。    但是上面这种

2020-09-23 11:31:51

修改CustVMOptions造成idea无法启动

    今天遇到一个问题,一大早过来发现IDEA无法启动了,昨晚还是好好的。于是我把IDEA安装目录下的/bin/idea.bat文件最后一行加上了pause暂停,然后手动执行,报错内容如下:OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.Error opening zip fil

2020-09-16 10:25:28

centos 启动 docker 报错

    docker 启动容器报错:Error response from daemon: oci runtime error: container_linux.go:247: starting container process caused “write parent: broken pipe”其实原因还是,linux与docker版本的兼容性问题第一步:通过uname -r命令查看你当前的内核版本uname -r第二步:使用 root 权限登录 Centos。确保 yum 包更新到最新。y

2020-09-13 11:29:46

mongo唯一键冲突造成事务破坏

先上代码 @Transactional fun bindParentQd(childQdName: String, parentQdId: String) { try { //插入子渠道表 qdDao.insertChildQd(childQdName, parentQdId) } catch (e: DuplicateKeyException) { //插入冲突,说明有人插入过了,进行更

2020-08-26 19:36:59

mongo聚合指令

    为了便于做复杂的聚合查询,mongo提供了aggregate指令,基于管道运算进行对数据的处理,常见的$sort,$project,$group,$match就不在赘述了,下面整理一些不常见的但是有时候很有用的指令:$unwind我们插入mongo数据的时候,肯定会遇到插入数组或者列表的场景,但是对于列表数据的读取怎么操作呢,比如我想把多条文档中的列表数据重新整合去重该怎么操作,这是就需要用到unwind,它可以将某一个列表打散拆成多条文档:{"id":1,list:[1,2,3,4]}{"

2020-08-25 18:26:23

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

spring事务动态代理造成属性为null

    近日遇到一个很诡异的问题,kotlin的一段老代码莫名其妙报空指针,而且只有整个springboot项目起起来才会报错,如果写单元测试时单独注入几个类,是不会报错的。最终锁定原因是因为在原本的service类中,新增的一些方法我加上了@Transcational进行事务处理,这就导致生成service类的对象时会为他生成一个基于cglib创建的代理子类。而这个子类中所有的属性都是空指针:但是为什么创建出来的对象会属性都为空呢,毕竟这这些属性都在父类的构造方法里,继承父类构建的子类也需要重写父类的

2020-08-18 20:03:29

spring的事务问题

    spring基于代理的事务分为以下几个类别:required,支持当前事务如果没有再创建一个supports:支持当前事务,如果没有,就不使用事务mandatory:强制使用当前事务,如果不存在抛异常requires_new:必须创建一个新的,如果有了挂起not_supported:不支持,如果有事务,把事务挂起never:如果有事务,抛异常nested:嵌套,如果当前有了,执行嵌套,如果当前没有创建一个新的通常情况下我们在一个方法体上加上@Transcational这个注解,就能

2020-08-06 23:15:41

idea bash乱码问题解决

    为了方便像linux上以上使用shell,在idea的终端里引入了git bash,这样就可以在window下使用shell了,但是配置之后却出现一个问题,使用git的过程中老会出现乱码问题。解决方法如下:在git bash命令行中依次输入以下命令:$ git config --global core.quotepath false # 显示 status 编码$ git config --global gui.encoding utf-8 # 图形界面编码$ git conf

2020-08-01 13:15:39

docker配置阿里云镜像

    需要注意的是我的docker是安装在centos7.0上的,如果是其他的操作系统,方法可能不一样。修改docker镜像配置文件:/etc/docker/daemon.json:{ "registry-mirrors": ["https://3of2xqw2.mirror.aliyuncs.com"]}如果没有配置过的话,该文件初始应该是这样的:{}配置好之后,依次执行两个shell命令:systemctl daemon-reloadsystemctl restart docke

2020-07-28 23:16:48

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

vscode修改终端为bashshell

    window上,vscode的终端默认是cmd,让我们习惯使用linux shell命令的人,多少有点头疼,所以这里来修改vscode的终端。crtl+shift+P 进入vscode管理工具的命令行输入命令:>Preferences:Open User Settings然后进入如图界面[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N2pYEcxx-1595130950851)(…/picture_back_up/change_vsco

2020-07-19 11:57:53

git基本使用整理

    git作为如今我们最广泛使用的项目代码管理工具,这里详细整理一下使用基本流程,适用于基本理解git流程的,当做工具书用的。git分之间的基本操作如下图:

2020-07-19 00:11:38

html间跳转中文乱码问题

    今天遇到一个问题,有两个html界面A、B,我从A跳转到B,并给B传来一个参数param,该参数可能为中文,当我跳转到B界面时,通过以下函数:/** * 获取链接参数 * @param name 参数key * @returns 参数value */function GetQueryString(name) { var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)"); va

2020-07-18 10:25:47

iframe实现高度由内部内容决定

    通常的div块,在不设置高度情况下,父元素的大小,由内部元素大小决定,这样设置比较灵活,当div内部为float浮动元素时,父div需要添加overflow:hidden这个css属性才能实现父div高度由内部大小决定。但是当我们使用iframe时却不能通过上面的两种方式实现iframe的大小由内部大小来决定。所以这里找了一个比较可靠地方式,如下:var browserVersion = window.navigator.userAgent.toUpperCase();var isOpera

2020-07-18 00:01:58

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。