- 博客(40)
- 资源 (1)
- 收藏
- 关注
原创 【从部署服务器到安装autodock vina】
回到Downloads文件夹,将下载的anaconda移动到software文件夹中(鼠标右键即可 和windows一样)弹出以上界面则表示pymol安装成功,后续使用pymol均是先切换至pymol环境,再输入pymol!等待一段时间安装完成,紧接着输入以下代码验证pymol安装是否成功。切记,一定要在software文件夹中打开终端,界面如图所示。图形化界面安装好之后,服务器界面应该是这样,不再是命令行了。输入 yes,再按下enter确认,等待安装完毕。紧接着激活环境,输入以下代码。
2024-03-06 14:53:21 783
原创 python3.8如何安装pyhanlp
3.下载后解压, 将解压后的文件复制到你的hanlp所在目录, 如果是用annaconda安装的, 那么文件路径在 C:\Users\user.conda\envs\py38\Lib\site-packages\pyhanlp\static。2.装完JDK之后需要安装 visual_cpp_build_tools_2015_update_3_x64, 推荐在CSDN上找资源, 官网下载速度太慢了。3.安装完visual之后安装 JPype1-1.4.0-cp38-cp38-win_amd64。
2023-12-12 21:38:57 496
原创 tensorflow Windows安装说明
Tensorflow 2.10是最后一个在本地windows上支持GPU的版本。从2.11版本开始,需要在windows WLS2(适用于 Linux 的 Windows 子系统)上安装才能使用GPU。在anaconda shell控制台中,切换至虚拟环境, 安装TensorFlow。无镜像pip安装 速度超慢 但是会自动安装兼容当前python版本的最新版本。这是用的豆瓣镜像,要装不同版本只需修改版本号。
2023-09-19 19:11:34 369
原创 动态规划问题
比如一些求最值的场景,如最长递增子序列、最小编辑距离、背包问题、凑零钱问题等等,都是动态规划的经典应用场景。如果一个问题,可以把所有可能的答案穷举出来,并且穷举出来后,发现存在重叠子问题,就可以考虑使用动态规划。动态规划的核心思想就是拆分子问题,记住过往,减少重复计算。并且动态规划一般都是自底向上的。
2023-09-16 09:52:53 442
原创 Redis之BitSet
BitSet是Redis中提供的一种二进制数组的数据结构, 利用这种特殊的数据结构可以实现一些特定的场景.BitSet的数据长这样: [01010010], 存放的是boolean, 且长度为8的倍数 也就是byte的长度. 且只存true, false会自动填充.Redisson提供的RBitSet还额外提供了 与 或 非 等api.
2023-03-16 19:10:34 1232
原创 自定义注解校验请求参数
有这样的场景, 前端传参中会包含 “开始时间”,“结束时间”,“最小价格”,"最大价格"等字段, 前端通常会有校验, 比如最大价格不能小于最小价格, 后端也需要做校验, 但是会和业务代码耦合在一起, 那么有没有办法可以实现参数校验和业务解耦呢?1.在controller的方法上加 @FieldCompareMethod注解。默认可以根据字段的名称来比较, 比如 xxxMax, xxxMin。也可以加参数, 指定哪两个字段来比较。2.在需要校验的字段上加注解。
2023-03-03 14:29:24 299
原创 RabbitMQ 实现延时队列
队列ttl过期时间设置15分钟, 不设置消费者. 15分钟过后, 消息转发至死信队列.用户在商城下单成功并点击去支付后在指定时间未支付时自动失效。2.利用插件实现延时。
2022-11-30 18:15:04 830
原创 @Validated注解分组的使用
相信大家在实际工作中, 一定会遇到这样的场景. request的某个参数, 在新增时不需要前端传, 但是编辑时需要前端传, 其余字段也都是一模一样的, 没办法, 还是得建两个request. 用分组校验就是为了解决这个问题的.@Validated 是在@Valid 注解基础之上,提供了更丰富的功能, 其中之一就是分组校验. 那么什么是分组校验呢?以此类推, 可以定义不同的分组, 去匹配不通的场景, 就可以减少request的创建.
2022-11-14 13:54:24 3033 1
原创 自定义注解之数组与逗号拼接字符串自动转化
这样做是可以,但是显得很不优雅。看过前几篇自定义注解文章的同学, 应该能感受到@JsonSerialize 注解的强大, 本篇将介绍另一个对应的注解@JsonDeserializer的强大功能. 这俩注解可以配合着使用, 让你的代码在序列化或反序列化时, 无比的优雅.由此场景可以推广, 但凡前端想要的数据模型和后端定义的不一致, 都可以在序列化与反序列化时, 用自定义序列化类做处理, 这样可以简化业务代码.解析入参: 无论前端传 [“0,1,2”] / “0,1,2” 都会转为 “0,1,2”
2022-11-08 17:02:50 644
原创 如何监听Redis过期缓存
重写的onMessage()方法, 入参 message 是过期的key, 但是有一点需要注意, 任何过期的key, 都会被监听器捕捉到.Redis提供了Listener类KeyExpirationEventMessageListener, 重写其方法即可。只要能拿到key, 就可以针对不同的key, 做不同的处理.
2022-10-22 09:42:43 965
原创 巧妙利用枚举类消除if,else
在处理复杂业务时, 会遇到针对不同场景做不同处理的情况, 难免会产生大量的if, else if 的代码, 不仅会影响美观, 太多的if 也会影响阅读性. 在这里提供两种依靠枚举类去消除if代码的写法供各位参考.这里是将函数放在接口中, 所有的小枚举去实现对应的具体方法, 相较于将函数式接口用作属性, 更便于理解, 但是代码量会多一丢丢. 两种方法皆可.这里是用函数式接口做属性, 再提供一个接口, 让调用方可以通过映射, 获取对应的处理函数.贴一下, 大家意会即可, 相比这种代码也见怪不怪了!
2022-10-20 14:26:43 377
原创 记一次乐观锁并发场景下遇到的问题
处于 READ COMMITTED 级别的事务可以看到其他事务对数据的修改。除了容易产生虚幻的读操作和不能重复的读操作外,处于这个隔离级的事务可以读到其他事务还没有提交的数据,如果这个事务使用其他事务不提交的变化作为计算的基础,然后那些未提交的变化被它们的父事务撤销,这就导致了大量的数据变化。mysql默认的隔离级别是REPEATABLE READ, 所以并发场景, 开启事务之后, 后续请求是读不到第一次已经更新的版本号的, 所以将隔离级别降低为READ COMMITTED, 问题就得到了解决.
2022-10-19 18:10:23 511
转载 自定义注解实现数据脱敏
实现方案: 利用jackson提供的JsonSerializer 在返回response对象序列化时 处理数据.2.定义序列化类, 继承jackson的JsonSerializer, 具体的序列化过程, 由此类完成。
2022-10-10 11:58:17 270
原创 利用Redisson的Zset 实现历史搜索记录
ScoreSortedSet 是redisson提供的实现了Zset的数据类型, 相较于set, 在添加元素进集的时候, 需要给定一个score, score决定了该元素的在集里的顺序.首先介绍下,redis 有五大数据结构, String , List , Hash , Zset (有序集) , Set (无序)2.在添加时, 先remove该元素, 否则add失败. 这样即使之前add过了, 重新add时, 也会重置score.利用Zset的有序性 , 无重复 的特性, 正好适用于搜索记录等场景.
2022-09-27 21:50:56 1521
原创 MongoDB 踩过的坑之大小写问题
如果数据写入mongoDB的时候, 没办法明确的限制大小写, 那么该字段用作查询条件时, 就可能因为大小写不匹配, 而导致查不出数据. 此时就需要查询时忽略大小写.该方案适用于 身份证号等 字母比较明确的场景。该方案比较通用, 但是注意: 正则匹配的。方案2: 用 or 做处理。方案1: 用正则匹配。
2022-09-27 17:11:38 1220
原创 自定义注解之BigDecimal 保留固定小数
1.setScale()方法可以自定义, 前面的数字是保留的位数, 后面的是取舍的规则, 这里是四舍五入。jackson提供了相关的注解, 只需要自己定义一个具体的序列化类即可。2.else 里是 异常数据的处理策略, 这里是为空则返回 0.00。
2022-09-15 15:54:27 1332
原创 Java基于MongoDB Template封装Dao层
mongoDB Template 提供了许多直接操作Mongo的方法, 在此基础上在进行一层封装, 用起来更顺手。使用此封装类, 对实体有要求, 请自行修改。
2022-08-15 15:47:42 925
原创 MongoDB Template update的小坑
mongoTemplate.updateFirst() 这个方法, 如果传入的实体有字段没有赋值, update之后, mongo里值会置为null.大部分情况下为null的数据并不会产生什么影响,但是总归是不太好的, 所以推荐mongo的update使用下面这种方式。先根据objectId将原数据查出来, 再将传入的实体中变化的值覆盖, 这样不会产生为null的数据。1.先说一下坑之所在。...
2022-08-10 20:08:12 1507
原创 Mysql之排序分组后取第一条 慢SQL分析
乍一看没什么问题,但是看执行计划,会发现最外面一层的select没有走索引,而是全表扫描,这样随着数据量的增大,必将成为一个慢sql。mysql5.7之后,groupby和orderby后的字段不一样,orderby不生效。需要将上面的sql拆成两个sql,虽然会多链接一次数据库,但是可以避免慢sql。解决办法在orderby后加limit破坏mysql的自动优化条件。需要先根据创建时间倒排,再根据业务id分组,取每个分组的第一条数据。......
2022-07-21 20:44:58 1873
原创 MQ如何保证消息可靠投递
producer : 发送消息给Broker, 服务器将消息写入磁盘, 并发送确认请求后, 才算消息发送成功consumer : 定时轮询Broker的消息, 抽取消息, 并返回确认请求Broker : 接收生产者发送的消息, 消息本地存储; 消费者抽取消息返回确认请求后, 删除该消息注意点:生产消息, 消费消息 都是异步的...
2022-06-13 20:29:00 888
原创 mongoDB聚合函数
原生写法db.deviceDataCollection.aggregate([ { $match: { "commonDeviceData": { "$ne": null, "$exists": true }, "commonDeviceData.isAlarm": "1", "deviceId": "863204050.
2022-05-27 16:59:58 763
原创 分布式事务之XA方案
分布式事务XA学习视频什么是XAXA方案是X/OPEN组织定义的一种分布式事务处理标准, 在阿里巴巴seata定义的分布式事务框架内, 利用事务资源对XA协议的支持(即利用数据库支持XA协议 比如关系型数据库mysql,oracle等等) , 以XA协议的机制来管理事务分支的一种两段式方案。XA的流程三个角色(TM, RM, TC)TM : 事务管理器, 即开启全局事务的角色, 用来划定分布式事务的边界和范围。RM : 资源管理器, 即针对数据库进行具体操作的角色。TC : 全局事务协调者
2022-05-19 17:58:25 2107
原创 Java8 Stream 使用技巧
排序list.stream() .sorted(Comparator.comparing(x -> MapUtils.getString((Map) x, "order")) //排序字段 .reversed()) //反转 .collect(Collectors.toList());List 分组Map<String, List<Map<String, Object>>>.
2022-05-12 13:14:10 460
原创 Intellij热部署插件JRebel
安装第一步:安装插件第二步:在线GUID地址:在线生成GUID网址:https://www.guidgen.com/服务器地址:https://jrebel.qekang.com/GUID第三步:打开jrebel 如下所示面板,选择Connect to online licensing service安装成功之后就可以通过JRebel启动项目。这样修改完Java代码后,就可以通过快捷键 Ctrl+shift+F9 而不再需要重启站点这样繁琐浪费时间的操作了。相关设置设置成离线工作模式
2021-12-27 14:01:36 143
原创 如何获取阿里云上的图片压缩后再上传
本文用到了一个谷歌的图片处理插件 thumbnailator <!-- 图片处理 --> <dependency> <groupId>net.coobird</groupId> <artifactId>thumbnailator</artifactId> <version>0.4.8</version>
2021-04-26 09:47:55 365
原创 idea 插件
常用篇 1.GenerateAllSetter一键调用一个对象的所有set方法并且赋予默认值 在对象字段多的时候非常方便,在做项目时,每层都有各自的实体对象需要相互转换,但是考虑BeanUtil.copyProperties()等这些工具的弊端,有些地方就需要手动的赋值时,有这个插件就会很方便,创建完对象后在变量名上面按Alt+Enter就会出来 generate all setter选项。2.GsonFormat一键根据json文本生成java类 非....
2020-12-24 17:11:54 596 1
原创 上传MultipartFile同时添加水印(图片,文字)
适用于将图片上传至服务器时添加图片水印或者文字水印工具类import org.springframework.mock.web.MockMultipartFile;import org.springframework.web.multipart.MultipartFile;import javax.imageio.ImageIO;import javax.imageio.stream.ImageOutputStream;import java.awt.*;import java.a..
2020-10-10 08:40:01 1420 1
原创 给本地图片添加水印(图片,文字)
适用于给本地图片添加水印,需要知道图片和水印图片的绝对路径工具类import javax.imageio.ImageIO;import java.awt.*;import java.awt.image.BufferedImage;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;public class ImageUtil { public enum positionT.
2020-07-01 14:29:26 419
原创 将中文字符串转为拼音
Maven依赖<dependency> <groupId>com.belerweb</groupId> <artifactId>pinyin4j</artifactId> <version>2.5.0</version></dependency>拼音工具类import lombok.extern.slf4j.Slf4j;import net.sourceforge.pin
2020-06-29 21:01:16 1036 2
原创 jackson objectMapper json字符串、对象bean、map、数组list互相转换常用的方法
- 对象转json字符串User user=new User();String userJson=mapper.writeValueAsString(user);- Map转json字符串Map map=new HashMap(); String json=mapper.writeValueAsString(map);- 数组list转json字符串Student[] stuArr = {student1, student2}; String jsonfromArr = mappe
2020-06-19 10:15:45 11569 2
原创 ARRIS路由器梅林系统救砖
准备工作:TFTP救砖工具下载链接:https://pan.baidu.com/s/1ujNg7kEbpMvXjorPridGsg 提取码:ilfq梅林系统固件下载地址: https://share.weiyun.com/58sVzea1 电脑固件ip地址:把ip地址设置成:192.168.1.2,子网掩码:255.255.255.02 电脑用网线连接到路由器的LAN口上,连接四个中的任......
2020-04-24 11:18:21 9402 17
原创 梅林固件和华硕路由器通用设置上网教程
此教程适合所有华硕或梅林路由的设置,因为这类的路由器操作基本一样,根据教程说明一步步仔细操作即可1 路由器通电并连接好网线,WAN口接光猫或入户线,四个LAN口其中一个接电脑或者也可以连接路由器WIFI信号,WIFI名称:ASUS或者NETGEAR开头的信号名。2 进路由器设置页面,打开浏览器输入192.168.50.1进设置页面,账号:admin,密码:admin或者password。3......
2020-04-24 10:40:06 45439
原创 IDEA基础设置
集成maven的详细步骤全局配置mavenfile --> settings --> 搜索框搜maven --> 具体配置如下注意: directory里填maven的安装路径; file填maven安装路径里confi文件夹下settings.xml; 本地仓库会自动选取.(在settings.xml里需要配置本地仓库的路径,不要与maven放在意的文件夹里)...
2020-03-18 22:32:38 345
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人