- 博客(23)
- 收藏
- 关注
原创 RabbitMQ实现定时/延迟任务
方案选择实现方式(两种)实现缺陷:不一定准时投送,当某一个时间堆积大量消息,那包会有延迟的基于死信队列有这样一个场景,当我是基于消息设置过期时间,第一个投送到空队列的过期时间设置为1h,第二个设置为2m,由于是顺序队列,会导致第二个消息被阻塞,所以基于死信队列还是适合固定时间的延迟那建议还是用插件实现,插件可以实现自定义消息过期时间,利用了一种类似于优先队列的数据结构(具体不了解),虽然依然是监控队首,但是内部消息是根据过期时间长短来决定队首消息的。
2025-03-16 11:59:07
491
原创 ConcurrentHashMap怎么实现线程安全的
putVal方法通过多种机制(如 CAS 操作、加锁等)实现了在多线程环境下安全地插入或更新键值对的功能。它会根据不同的情况(如哈希表是否初始化、桶是否为空、是否正在扩容等)采取不同的处理方式,确保操作的正确性和高效性。
2025-03-16 11:51:45
382
原创 01背包问题-队列分支限界法-C++
给定n种物品和一个背包。物品i的重量是wi,其价值为vi,背包的容量为C。问应如何选择装入背包中的物品,使得装入背包中物品的总价值最大?对于给定的n种物品的重量和价值,以及背包的容量,计算可装入背包的最大价值。
2024-07-05 10:43:25
1778
1
原创 最小权顶点覆盖问题-优先队列分支限界法-C++
要采用优先队列来求解该问题,对于堆中的每一个节点,都有一个目前所选的点的集合,我们需要维护那些已经被选入U集合的点,同时维护当前的点权和,这样每次我们都从堆中选出当前扩展出的节点中点权和最小的一个来扩展,特别的,当点权相同时,我们通过判断当前覆盖集的大小来选择覆盖集大的来扩展。因为我们采用的是优先队列来查找,我们的目标只是求出一个解,每次从堆中选出的节点都是当前的所有扩展出节点中点权和最小的一个,如果当前节点的状态已经实现了覆盖,那么说明当前已经是最优解了,我们可以直接返回结果。否则继续进行下一步搜索。
2024-07-05 10:37:28
1545
原创 Spring Data Redis操作Redis
Spring Data Redis 是 Spring 的一部分,对 Redis 底层开发包进行了高度封装在Spring项目中,可以使用Spring Data Redis来简化操作。
2024-02-08 11:15:22
256
原创 Redis的一些基础命令
Redis是一个基于内存的 key-value 结构数据库基于内存存储,读写性能高适合存储热点数据(热点商品、资讯、新闻)企业应用广泛字符串 string:普通字符串,Redis中最简单的数据类型哈希 hash:也叫散列,类似于Java中的HashMap结构列表 list:按照插入顺序排序,可以有重复元素,类似于Java中的LinkedList集合set:无序集合,没有重复元素,类似于Java中的HashSet。
2024-02-08 11:13:53
399
原创 spring boot具体开发案例 笔记
controller层叫控制器层,负责前后端交互,接受前端请求,调用service层,接收service层返回的数据,最后返回具体的页面和数据到客户端。service层叫业务逻辑层,存放业务逻辑处理,不直接对数据库进行操作,有接口和接口实现类,提供controller层调用的方法。描述模块的功能通常使用复数,也就是加s的格式来描述,表示此类资源,而非单个资源。查看页面原型确定需求——阅读接口文档——思路分析——接口开发——接口测试——前后端联调。REST是风格,是约定方式,约定不是规定,可以打破。
2024-01-31 11:09:05
1150
原创 Spring boot事物管理&AOP 笔记
Spring AOP为IoC的使用提供了更多的便利,一方面,应用可以直接使用AOP的功能,设计应用的横切关注点,把跨越应用程序多个模块的功能抽象出来,并通过简单的AOP的使用,灵活地编制到模块中,比如可以通过AOP实现应用程序中的日志功能。另一方面,在Spring内部,一些支持模块也是通过Spring AOP来实现的,比如事务处理。连接点(join point):对应的是具体被拦截的对象,因为Spring只能支持方法,所以被拦截的对象往往就是指特定的方法,AOP将通过动态代理技术把它织入对应的流程中。
2024-01-31 11:01:45
921
原创 Spring boot配置文件类型及阿里云OSS配置
- 大小写敏感- 数值前必须有空格作为分隔符- 使用缩进表示层级关系,缩进时只允许使用空格- 缩进的空格数目不重要,只要相同层级的元素左对齐即可- #表示注释
2024-01-30 14:07:12
623
1
原创 Spring boot关于登录功能实现(过滤器、拦截器)笔记
定义配置类,并让它实现WebMvcConfigurer接口,在接口的addInterceptors方法中,注册拦截。会话跟踪:一种维护浏览器状态的方法,服务器需要识别多次请求是否来自于同一浏览器,以便在同一次会话的多次请求间。会话:用户打开浏览器,访问web服务器的资源,会话建立,直到有一方断开连接,会话结束。实现handlerInterceptor接口,从三个方法中选择合适的方法,实现拦截时要执行的具体业务逻。如果是对所有的请求(如访问静态资源的请求)进行拦截,则可以使用Filter。
2024-01-30 11:21:56
1492
1
原创 Mybatis笔记
使用Mvbatis的注解,主要是来完成一些简单的增删改查功能。如果需要实现复杂的SOL功能,建议使用XML来配置映射。:用于判断条件是否成立。使用test属性进行条件判断,如果条件为true,则拼接SQL。:where元素只会在子元素有内容的情况下才插入where子句。解决方案二:@Results,@Result注解手动映射封装。新增(主键返回):数据添加成功后返回主键的id。>:通过属性refid,指定包含的sql片段。:动态的在行首插入set关键字,并且。>:定义可重用的sql片段。
2024-01-25 14:44:37
971
原创 Ubuntu中go环境配置
使用wget命令在官方网站选择对应的压缩包进行下载使用tar命令解压缩-v-x-f-f-zgzip-ztarball-C最后面加入以下内容命令立即生效环境变量envecho $变量名~/.bashrc。
2023-07-31 15:03:27
1737
1
原创 linux学习笔记
which:查找命令的程序文件所在的位置:搜索指定的文件语法1:nkMG:获得管理员权限sudo -i也可以ls -lh:列出文件并显示文件大小grep:从文件中通过关键字过滤文件行关键字文件路径-m-l-w文件路径:管道符,左边的结果作为右边的内容源重定向符>>-num路径chmod-R参数是把文件目录下所有文件的权限都修改chownchmod用户用户组。
2023-07-29 18:30:48
98
原创 linux一些命令
参数是把文件目录下所有文件的权限都修改。:管道符,左边的结果作为右边的内容源。:从文件中通过关键字过滤文件行。:列出文件并显示文件大小。
2023-07-28 18:31:38
106
1
原创 go学习笔记
它允许开发人员将Go数据结构编码为JSON格式的字符串,或者将JSON格式的字符串解析为Go数据结构,以方便在Go程序中操作和处理JSON数据。布尔类型的直接判断:在Go语言中,条件表达式的结果必须是布尔类型(true或false),而不像C语言那样,可以由非零值和零值来表示真假。go的switch和C语言类似,但是比C更牛逼一些,没有类型要求,不需要加break,就像是简洁版的if-else语句。在Go语言中,如果在if语句中定义了变量,则该变量的作用域仅限于if语句的代码块内部。
2023-07-25 19:55:18
102
原创 markdown中的数学公式
使符号大小与临近公式相适应(适用于所有语句),如。定义函数的时候经常需要分情况给出表达式,用。,如果不是单个字符,可以用花括号括起来。如果想分类之间的垂直间隔变大,可以用。区别是行内是一个$间隔,行间是两个。有时候需要将一行公式分多行进行显示。作用于后面两个组a,b,结果是。之间加入矩阵中的元素。可以在这些运算符前加上。区别是点的位置不同,这种形式表示矩阵,在。根据前面括号的用法用。
2023-07-23 11:09:34
553
1
原创 基于docker创建ubuntu:22.04容器并实现ssh连接
首先需要确保服务器上有docker并有相关的镜像第一次学linux自己摸索的,可能有问题,请及时指出。
2023-07-09 15:07:08
864
1
原创 ST表,二进制优化区间查询
分别是区间[i,i+2^(j-1)-1]和区间[i+2^(j-1),i+2^(j-1)+2^(j-1)-1]也基于用二进制优化,用于求解RMQ问题,也就是区间最值询问进行O(1)的解决。可以假设l+2^k-1=r,求解k可以得到k=log2(r-l+1);max(f[l][k],f[r-(1<<k)+1][k])即可。对于log2,我们可以进行预处理,也可以直接调用函数。fij 表示从区间[i,i+2^j-1]的最大值。预处理转移方程f[i]=f[i/2]+1。
2023-04-20 07:54:08
126
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人