- 博客(108)
- 收藏
- 关注
原创 交易系统的设计与实现
在线交易是生活中必不可少的,交易包括支付和转账,简单理解就是个人或者商户的银行账户下资产的增减行为。在线支付一般需要借助网联进行,网联是网联清算有限公司(NetsUnion Clearing Corporation,简称NUCC)运营的第三方支付机构统一清算平台,由中国支付清算协会组织发起设立, 跨境转账一般通过NUCC进行。在线交易按类型可以大致分为:国内提取款,跨境提取款、电商平台的批次交易…
2024-04-22 17:46:15 169
原创 广告生成策略系统
在互联网大厂中,营销广告需要根据人群的特性生成对应的个性化广告,广告生成策略系统是其中必不可少的一个部分。下面以某公司的广告生成策略系统作为例子分析其架构。
2024-04-22 16:58:33 267
原创 Jvm垃圾回收器cms和g1区别
(Concurrent Mark-Sweep)垃圾回收器是Java虚拟机(JVM)综上所述,选择哪种垃圾回收器取决于应用程序的特性、性能要求以及可用硬件资源。)中的两种不同的垃圾回收策略,它们各有优缺点。G1垃圾回收器(Garbage First)和CMS。jvm垃圾回收器cms和g1区别。
2024-04-15 20:52:39 155
原创 @Transactional 详解
在接下来的整个事务中,客户代码都应该使用该connection连接数据库,执行所有数据库命令[不使用该connection连接数据库执行的数据库命令,在本事务回滚的时候得不到回滚](物理连接connection逻辑上新建一个会话session;REQUIRES_NEW,创建一个新的事务,并在其中执行当前方法,如果已经存在事务,就将其挂起,也就是说如果当前存在事务,那么将当前的事务挂起,并开启一个新事务去执行REQUIRES_NEW标志的方法。NEVER,当前方法不应该在事务中运行,如果存在事务将抛出异常。
2024-04-09 21:09:45 373
原创 rabbit mq 配置要点
所谓毒消息是指消息一直不能被消费者正常消费(可能是由于消费者失败或者消费逻辑有问题等),就会导致消息不断的重新入队,这样这些消息就成为了毒消息。Exclusivity表示独占队列,即表示队列只能由声明该队列的Connection连接来进行使用,包括队列创建、删除、收发消息等,并且独占队列会在声明该队列的Connection断开后自动删除。直接交换器(Direct Exchange): 直接交换器是最简单的交换器类型,它将消息路由到与消息中的路由键(routing key)完全匹配的队列。
2023-12-18 19:11:52 954
原创 leetcode 241. 为运算表达式设计优先级
给你一个由数字和运算符组成的字符串 expression ,按不同优先级组合数字和运算符,计算并返回所有可能组合的结果。例:1 + 2 + 3 -> (1) + (2 + 3),1和 (2 + 3) 分别reduce到base case, 再进行两个中间的运算。expression 由数字和算符 ‘+’、‘-’ 和 ‘*’ 组成。输入:expression = “2-1-1”输出:[-34,-14,-10,-10,10]输入表达式中的所有整数值在范围 [0, 99]输入:expression = “2。
2023-09-16 20:58:43 224
原创 Java 锁(synchronized)升级过程
升级为轻量级锁之后会在thread-2线程的栈帧中开辟一块锁记录空间叫做displaced Mark Word,并将锁对象的markword拷贝到线程本身的displaced Mark Word空间中,然后通过cas的方式去设置锁对像中线程id指针,并将锁的标志设置为00;最开始的synchronized的实现是直接启用重量级锁,这样对于效率的影响是比较大,在后来的改进中引入了锁升级的概念,来增加执行的效率。java中的锁是针对对象而言的,它锁住的是一个对象,并且具有可重入的性质。
2023-09-11 15:04:23 180
原创 高性能缓存 Caffeine 原理及实战
这就需要有合适的算法辅助我们淘汰掉使用价值相对不高的对象,为新进的对象留有空间。比如一个数据在一分钟内的前59秒访问很多次,而在最后1秒没有访问,但是有一批冷门数据在最后一秒进入缓存,那么热点数据就会被冲刷掉。缺点是如果先缓存的数据使用频率比较高的话,那么该数据就不停地进进出出,因此它的缓存命中率比较低。二、无法合理更新新上的热点数据,比如某个歌手的老歌播放历史较多,新出的歌如果和老歌一起排序的话,就永无出头之日。它是优先淘汰掉最不经常使用的数据,需要维护一个表示使用频率的字段。
2023-09-02 23:25:30 301
原创 Redis大key问题的排查与解决
大 key 并不是指 key 的值很大,而是 key 对应的 value 很大。一般而言,下面这两种情况被称为大 key:String 类型的值大于 10 KB;Hash、List、Set、ZSet 类型的元素的个数超过 5000个;
2023-08-18 16:52:37 810
原创 字符串的无重复排列组合
若字符串长度为n,将第一个字母分别与后面每一个字母进行交换,生成n种不同的全排列;再用第二个元素与后面每一个元素进行交换,生成n - 1种不同的全排列……输出:["qwe", "qew", "wqe", "weq", "ewq", "eqw"]仔细观察可以发现,求不同全排列的问题其实是可以利用交换字符串元素来完成的;输出:["ab", "ba"]字符串长度在[1, 9]之间。输入:S = "qwe"输入:S = "ab"
2023-08-18 15:55:04 210
原创 数据库执行计划
对于一棵B+树索引来讲,如果根节点是字符def,假如查询条件的通配符在后面,例如abc%,则其知道应该搜索左子树,假如传入为efg%,则应该搜索右子树,如果通配符在前面%abc,则数据库不知道应该走哪一面,就都扫描一遍了。你可以想象一下,对于一棵B+树,根节点是40,如果你的条件是等于20,就去左面查,你的条件等于50,就去右面查,但是你的条件是不等于66,索引应该咋办?还不是遍历一遍才知道。,在 WHERE 子句中,如果在 OR 前的条件列是索引列,而在 OR 后的条件列不是索引列,那么索引会失效。
2023-06-16 22:33:26 1820
原创 最短路径问题及其延伸问题
求图(单源简单图)的最短在实际生活中有许多应用,比如说在你在一个景区的某个景点,参观完后,要怎么走最少的路程到你想参观的下个景点,这就利用到了求图最短路径的算法。迪杰斯特拉算法采用贪心算法的策略,将所有顶点分为已标记点和未标记点两个集合,从起始点开始,不断在未标记点中寻找距离起始点路径最短的顶点,并将其标记,直到所有顶点都被标记为止。path[ ]:path[ i ]表示从源点到顶点 i 之间的最短路径的前驱结点。有些场景下需要知道路径的具体信息,可以用一个数组或者list来存储。
2023-06-05 15:11:48 83
原创 解决 could not initialize proxy [com.xxx.xxx.xxx.entity.xxxInfo#1] - no Session
解决 could not initialize proxy [com.xxx.xxx.xxx.entity.xxxInfo#1] - no Session
2022-12-02 13:42:41 342
原创 Leetcode34 有序数组元素查找Find First and Last Position of Element in Sorted Array
有序数组二分查找
2022-11-09 21:56:03 269
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人