自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 收藏
  • 关注

原创 探索空间局部性对程序性能的影响

通过代码示例来探索空间局部性对程序性能的影响。

2022-07-30 10:32:55 123 1

原创 探索指令级并行对程序运行性能的影响

现代处理器设计,允许处理器在不影响最终计算结果的情况下,使用多个寄存器进行指令级并行计算是否能通过改造代码,让CPU使用更多的寄存器,从而进行指令级别的并行计算呢?答案是可以的。.........

2022-07-29 16:47:15 139

原创 使用 通配符+Lua脚本 删除大批量的Key

使用 通配符+Lua脚本 删除百万/千万级的key

2022-06-15 20:46:51 818

原创 关于Mysql当前读导致幻读的探索

关于Mysql当前读导致幻读的探索

2022-06-14 10:54:39 383

原创 Java实现LFU缓存算法

Java实现LFU缓存算法

2022-06-13 16:01:40 343

原创 Java实现LRU缓存

Java实现LRU算法

2022-06-13 15:50:54 199

原创 位运算的妙用

判断2的整数次幂快速取余判断奇偶判断两个数异号取二进制最高位取二进制最低位计算二进制中1的个数/计算汉明权重

2022-04-05 11:11:18 243

原创 斐波那契堆的java实现

介绍斐波那契堆的基础理论在算法导论第三版第19章有详细介绍,这里不再赘述。斐波那契堆 VS 二项堆斐波那契堆与二项堆相比,在插入和堆合并上,有显著优势。代码实现import java.util.ArrayList;import java.util.Arrays;import java.util.List;import java.util.TreeMap;import java.util.function.Consumer;/** * 斐波那锲堆 * * @author: zy

2022-04-03 09:18:40 163

原创 一致性哈希算法的原理与实现,时间复杂度O(1),支持扩容(扩容时可并发读,且最多只有一个虚拟节点处于只读状态)

这里写自定义目录标题虚拟节点和物理节点的定义时间复杂度为O(1)的一致性哈希算法一致性哈希算法的扩容完整代码《一致性哈希算法的原理与实现》 对一致性哈希算法做了比较完善的解读,但存在2个问题,本文主要解决这2个问题:算法时间复杂度为O(1)没有给出扩容逻辑,扩容时如何保证并发度,如何降低对写性能的影响?虚拟节点和物理节点的定义// 物理节点public static class Node { private Map<Integer, Integer> data;

2022-03-29 17:12:35 836 1

原创 记一次线上OOM排查及调优过程

通过异常邮件,发现线上定时任务服务产生了OOM: java.lang.OutOfMemoryError:Javaheapspace发现异常后,先重启线上服务,然后把未执行的定时任务恢复。查看gc信息,发现项目启动没多久,平均200秒一次FullGC> jstat -gcutil 6 S0 S1 E O M CCS YGC YGCT FGC FGCT GCT 0.00 25.85 66.86...

2022-03-28 17:09:16 496

原创 Van emde boas树Java实现

实现 算法导论 第三版 第20章 中的 VEB树

2022-01-21 18:25:35 387

原创 记一次线上RocketMQ消息堆积排查过程

今天运营同事报告了一个问题,有用户使用兑换码兑换课程后,在课程列表里看不到课。首先排查日志,发现兑换课程的MQ消息发送出去了,但没有被接收。进入阿里云控制台查看MQ消息队列,发现堆积了一千多条消息,很多消息一次都没有投递。查看Consumer服务,负载很低,服务正常运行。查看服务日志,几分钟前才消费了一条消息。对比这条消息和其中积压的一条消息,Topic相同,Tag相同。说明不是MQ配置发生了变化,且当前服务能正常消费消息。但积压的消息为什么消费不了呢?查看消息开始积压的时间点是16号,

2021-12-21 21:43:01 1288

原创 BASE理论详解

分布式系统无法满足CAP,BASE理论是一个降级方案。BASE理论是基本可用、软状态、最终一致性的缩写基本可用BasicallyAvailable系统某些节点出现了不可预知的故障,系统整体上还是可用的。只是相对于正常系统而言,响应时间上有所损失,或者某些功能不可用软状态SoftState不要求系统的强一致性,允许系统中的数据存在中间状态并认为该中间状态,不会对系统整体造成负面影响最终一致性EventuallyConsistent系统处于软状态,经过有限的时间期限后,数据最

2021-12-20 22:16:39 636

原创 解释为什么CAP无法同时满足

CAP是一致性、可用性、分区容错性的简称。这里用反证法进行推论。假设一个3节点的集群有(A/B/C)3个节点,同时满足CAP。假设C到A/B的网络断了,更新A/B节点的数据后,C节点数据无法更新,依然是旧数据。若果系统满足一致性,那么C节点就不能对外提供服务,此时C节点无法满足可用性。如果系统满足可用性,那么C节点只能对外提供旧数据,无法满足一致性。综上所述,分布式系统无法同时满足CAP...

2021-12-20 22:05:32 298

原创 Mysql explain执行计划详解

explain可以查看sql的执行计划,根据执行计划,可以看出sql慢在哪,方便进行调优。explain中比较重要的几个字段:type、key、key_len、rows、filtered、Extra。以下列举比较常见的情况typetype取值,一般而言从上到下性能依次降低system 表中只有一条数据的情况 const 查询条件只有一个值,通过主键或者唯一索引精确匹配一条记录 eq_ref 发生在链表查询中 使用非唯一索引进行关联 ref 连表、不连表都可能发生

2021-12-20 21:36:53 745

原创 用实际代码展示SoftReference的应用

SoftReference软引用,JVM发生 OutOfMemoryError 时,一个对象如果只有软引用,就会被回收。这段代码,程序会不断抛出OOM异常,抛出异常后年轻代和年老代都会被干净。package test;import org.junit.Test;import java.lang.ref.SoftReference;import java.util.ArrayList;import java.util.LinkedList;import java.util.List;

2021-12-14 21:17:34 369

原创 不把String直接转成byte数组的前提下,将String包装成InputStream,适合处理大字符串

一般而言,用以下代码将String转成InputStream。 public static InputStream wrapToInputStream(String input, Charset charset) { byte[] bytes = input.getBytes(charset); return new ByteArrayInputStream(bytes); }但这个方法会生成完整的byte数组。为了避免转换过程产生完整的byte数

2021-12-14 16:23:34 278

原创 对Spring事务开启、关闭、回滚的理解

对Mysql事务的理解autocommit=11. 此时每一条sql都是一个事务,执行时自动开始,执行后自动提交。2. 可以使用begin开手动开启事务,用commit、rollback来手动提交、回滚事务。如果不提交也不会滚,最终会执行回滚操作。autocommit=01. 此时事务是自动开启的,但需要手动提交、回滚。如果不提交也不会滚,最终会执行回滚操作。Spring事务在对Mysql事务理解的基础上,Spring事务就很好理解了。1. 如果当前连接是autocommit

2021-12-12 14:49:01 2044

原创 leetcode 41. 接雨水 [java][双指针]

题目a​​​​​​​​​​​​​t​​​​​​​t​​​​​​​leetcode 41. 接雨水代码 public static //leetcode submit region begin(Prohibit modification and deletion) /** * 计算装满水后,水和墙壁的总体积 * 用总体积减去墙壁的体积,就是水的体积 */

2021-12-12 10:37:17 194

原创 leetcode 11. 盛最多水的容器 [java][双指针]

leetcode 11. 盛最多水的容器 static //leetcode submit region begin(Prohibit modification and deletion) class Solution { /** * 双指针 * * @param heightArr heightArr * @return int * @author zhe

2021-12-11 18:04:44 496

原创 leetcode 5. 最长回文子串 [java][Manacher 算法代码]

leetcode 5. 最长回文子串Manacher算法代码 static //leetcode submit region begin(Prohibit modification and deletion) class Solution { public String longestPalindrome(String s) { if (s.length() < 2) { ret.

2021-12-10 15:40:15 200

原创 红黑树插入/删除 详细流程图和代码实现

插入流程图删除流程图红黑树代码实现/** * 红黑树 * * @author: zyp * @since: 2021/11/25 13:32 */public class RedBlackTreeMap<K extends Comparable<K>, V> { // NULL用来标记NULL节点 private static final Object NULL = new Object(); private..

2021-11-25 18:26:35 340

原创 一个支持复杂时间解析的工具类

支持时间格式时间戳: 1637395885585 带毫秒的: 2021-11-20T11:11:25.585 带毫秒的: 2021-11-20 11:11:25.585 不带毫秒的: 2021-11-20 11:11:25 不带秒的: 2021-11-20 11:11 不带分钟的: 2021-11-20 11 只有日期: 2021-11-20 带有完整时区的: 2021-11-20T11:11:25.585+03:00[Asia/Aden] 带有完整时区的: 2021-11-20T08:

2021-11-20 16:28:31 187

原创 记一次预发布环境网络极不稳定的排查流程

我司从合作伙伴那里接手了一个项目。测试同学返回预发布环境请求极不稳定,请求超时概率非常大。于是我便进行故常排查。项目请求路径: 1. 域名解析到slb 2. slb把请求负载均衡到gateway物理机80端口(1台)3. gateway物理机内的nginx监听80端口,对请求进行转发 4. api-gateway服务运行在gateway物理机内的docker中,监听物理机的9004端口 5. nginx将请求转发...

2021-11-11 16:05:19 1720

原创 JDBCLogger: 基于javaagent实现可执行的sql日志,同时记录sql执行的位置,对业务无侵入,支持基于jdbc所有orm框架,

示例java类@Servicepublic class CustomerService { @Resource private CustoemrMapper customerMapper; public Customer getCustomerById(Long id) { return customerMapper.selectById(id); // 假设这里是103行 }}sql日志2021-09-18 1

2021-10-21 21:45:31 407

原创 2021-09-03 怎么开启IDEA的Services运行窗口

关闭idea打开文件:.idea/workspace.xml在这个文件末尾添加如下内容<component name="RunDashboard"> <option name="configurationTypes"> <set> <option value="SpringBootApplicationConfigurationType" /> </set> </option>&.

2021-09-03 17:54:41 216

原创 基于JxBrowser/electron的服务端分页打印原理(html+js -」 pdf)

此方法可实现服务端运行带有js的html文档,且js代码有计算文档中元素宽高的能力,最后输出成pdf。1. 客户端发起打印请求2. 服务端拿到所需数据,生成html(这个html里面可以写js)3. 服务端将数据发送到JxBrowser/electron4.JxBrowser/electron运行html中的js。(用JxBrowser/electron运行,相当于是用浏览器运行,可以用js读取dom节点的宽高,从而进行分页处理)5. js运行结束后,回调JxBrowser/el..

2020-07-10 21:46:31 724

原创 超大图片的缩放算法(撑爆内存的那种)

最近做图像处理时,在超大图的缩放上遇到了困难。阿里云OSS不支持20M以上图片的缩放。用opencv在内存里缩放,30000x30000的png图片,占用3g+内存,有点无法接受。于是自己调研相关算法。以300x300的png为例,正常缩放时,是将其整个读进内存,生成300x300x4的矩阵,然后对矩阵进行缩放,再将缩放后的矩阵写成png。png读取时,是一行一行读取的,写盘时,也是一行一行写的。这里用 双立方(三次)卷积插值 进行缩放,该算法用临近的16个点(4x4)进行采样。所以一边读,

2020-07-03 12:00:29 790

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除