MongoDB初见-基础使用
原生语法使用添加
使用 insert() 或 save() 方法向集合中插入文档
1db.表名.insert(document);
12db.hello.insert({"title":"1","likes":1});db.hello.save({"title":"2","likes":2});
123// 指定id更新对应id的数据db.hello.save({"title":"6","likes":6});db.hello.find({"title":"6"});
1db.hello.save({'_id':ObjectId("603caed56a230000ef001b3e"),"title":"6 ...
MongoDB初见
下载&安装下载MongoDB官网下载页面https://www.mongodb.com/try/download/community
Windows 4.4.4下载链接https://fastdl.mongodb.org/windows/mongodb-windows-x86_64-4.4.4-signed.msi
安装
这一步选custom只是为了下一步可以选择安装位置
把mongo安装成服务
这一步会安装mongo自己的可视化工具,不是特别建议因为会很慢可以后期去官网下载
等待安装完成即可,Windows在这一步可能会有报错,至少我就没顺利过,具体问题参考踩坑填坑
踩坑填坑Service MongoDB Server MongoDB failed to start. Verify that you have sufficient privileges to start system services
当遇到这个问题,直接点ignore忽略就好,当然不是不解决这个问题,因为你的服务依旧没有正常启动
手动启动会报错
去安装目录的bin目录下执行 m ...
MongoDB自定义类型转换器
场景
当在springboot中集成MongoDB的时候,通常使用mongoTemplate操作db,而在不做任何操作的情况下,BigDecimal写入mongo会变成字符串的形式,这很显然不符合我们的预期,不管是在取值还是做排序。
另外一种情况就是存入时间的问题,因为mongo入库时间以UTC时间为标准,当将正常时间入库时因为东八区的问题会把时间减去8小时,导入入库时间不是我们想要看到的,当然这种方式可以通过手动转时间戳或者手动转换存取的时间格式。
以上这两种情况无论如果是手动处理每个实体则会导致操作变复杂,加大工作量,代码冗余,如果漏掉某次转换则会导致数据出现问题。
所以针对这种情况就可以通过自定义转换器实现。
自定义转换器期望达到效果
时间和时间戳在写入和取出时可以自动转换
BigDecimal和Decimal在写入和取出时可以自动转换
实现mongo配置123456789101112131415161718192021222324252627282930313233343536@Configurationpublic class MongoConfig { ...
Terminal改造从Powershell开始
Windows Terminal从Win10的Store下载就好
PowerShell安装GitHub下载地址往下找到这个 根据系统选64或者86的安装包下载就行
Windows Terminal改造更改默认的命令行选择设置,先找到下图安装的这个新的powershell,复制他的guid然后找到 defaultProfile ,将guid替换掉,重启Terminal
插件和配色修改
Docker Java 常用开发环境
最近重装了电脑。。但是又懒于安装开发环境。。于是想到了docker这里仅仅便于我自己而已没有深入的内容无奈不知道怎么可以在docker中安装jdk,外部环境可以使用,这样电脑里就少装两个软件随用随下可扩展,感觉还不错
利用docker-compose进行管理编写docker-compose.yml文件,
123456789101112131415161718192021222324252627version: '3'services: redis: image: redis:6.0.6 restart: always ports: - 6378:6379 volumes: - 你自己的本地路径/Redis/conf/redis.conf:/usr/local/etc/redis/redis.conf - 你自己的本地路径/Redis/data:/data command: redis-server /usr/local/etc/redis/redis.conf mysql: image: mysq ...
Redis通过ZSet实现限流
公司前段时间需要一个限流的功能,使用场景则是在一个滑动时间段内统计某一IP的访问数量
第一次接触窗口的概念还是在学习大数据的时候,在实时处理的时候了解到的,自然而然就想到了窗口统计的操作,不过目前业务量可能还不至于吧,嗯对就是那样
无脑上呗,就利用Redis做了一个实现(不是原子性的)
我太啰嗦了,网上百度一下Redis限流很多理论和操作实践就不罗嗦了,直接上自己魔改过的
基于Redis的ZSet实现的窗口限流操作忘记参考哪个贴了,如果有相似部分请补充一下原帖链接,代码各位取其精华去其糟粕,嗯~很可能都没了
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354/** * 窗口限制 * * @param key 限制key * @param windowTimes 窗口内限制次数 * @param windowTime 窗口时间(ms) * @param windowLimitTime 达到限制时,限制时间 * ...
使用LocalDateTime导致入库时时间被舍入
前置条件MySql,jdk1.8,LocalDateTime
使用场景需要获取到指定时间在当天的23.59.59
1234第一次使用的时候LocalDateTime.of(LocalDate.now(), LocalTime.MAX)得到的结果是2020-07-18T23:59:59.999999999
数据库时间字段为datetime类型,当把这个值入库时,库里会变成
12020-07-19 00:00:00 会发现后面的999999被进位了,但是这不是我们实际业务需要的值
更改两种方式可以解决
通过 LocalTime.of(23, 59, 59)123LocalDateTime.of(LocalDate.now(), LocalTime.of(23, 59, 59))得到的结果2020-07-18T23:59:59
通过 LocalDateTime下的truncatedTo阶段返回一个时间对象的副本123LocalDateTime.of(LocalDate.now(), LocalTime.MAX).truncatedTo(SECONDS)得到的结果2020-07-18T2 ...
消除try_catch
https://juejin.im/post/5ed7a03f518825433c13ae47?utm_source=gold_browser_extension#heading-18
关于升级jasypt引发的SpringBoot无法启动
问题概述最近升级了一次密码加密的插件从2.x->3.x的升级,启动项目时SpringBoot报错如下
123456789Description:Failed to bind properties under 'spring.datasource.password' to java.lang.String: Reason: Failed to bind properties under 'spring.datasource.password' to java.lang.StringAction:Update your application's configuration
原Pom版本
12345<dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>2.0.0 ...
关于aop切不到方法里的方法
https://blog.csdn.net/java_OnTheWay_kouhao/article/details/88964857