自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

SK_Jaco的博客

一个写正经代码的不正经程序员

  • 博客(217)
  • 收藏
  • 关注

原创 【深入设计模式】适配器模式—一切皆有可能

让不可能变成可能的适配器模式

2022-12-04 16:18:20 644

原创 【深入设计模式】随处可见的外观模式

随处可见的外观模式

2022-08-19 16:49:10 313

原创 【深入设计模式】迭代器模式模式—什么是迭代器模式?

什么是迭代器模式?

2022-08-01 20:47:29 442

原创 【深入设计模式】责任链模式—责任链模式及责任链模式在源码中的应用

别再说不知道责任链模式了

2022-07-25 23:44:47 578

原创 【深入设计模式】建造者模式—带你彻底弄懂建造者模式

一篇文章搞懂建造者模式

2022-07-19 23:45:20 4521 1

原创 【深入设计模式】模板方法模式—让你更科学地复用代码

听说你喜欢封装重复使用的代码块?

2022-07-06 00:05:16 289

原创 【深入设计模式】装饰模式—什么是装饰模式?装饰模式在源码中的应用

装饰模式——让你的代码锦上添花。装饰模式详解及装饰模式在源码中的应用

2022-06-27 23:12:39 615

原创 【深入设计模式】策略模式—策略模式详解及策略模式在源码中的应用

详解策略模式,并深入策略模式再源码中的应用

2022-06-22 00:09:02 938

原创 【深入设计模式】单例模式—从源码分析内部类单例、枚举单例以及单例模式在框架中的应用

最完美的单例写法以及单例模式在源码中的应用

2022-06-14 00:26:02 538

原创 【深入设计模式】单例模式—你确定你会写单例?饿汉式和懒汉式(DCL)演进

在项目开发中,获取一个对象我们通常是通过 new 在内存中进行创建,然后在对其进行引用,当项目逐渐庞大起来后,创建的对象越多对内存资源的占用也将越大,并且很多对象并不需要每次都创建,比如数据库连接池,因此诞生了单例设计模式。单例设计模式是指一个类只有一个实例对象,当我们获取该类对象时始终是同一个。单例模式不仅节省了内存资源,还保证了对象内的数据一致性。在使用单例模式时,我们需要注意单例模式的几个特点:根据上一节中描述的单例模式的四个特点,我们可以画出单例模式的结构图同时,我们也能够根据特点和结构图写出伪代码

2022-06-08 22:52:09 402

原创 【深入设计模式】工厂模式—抽象工厂及工厂模式在源码中的应用

前面介绍了简单工厂模式和工厂方法模式,相信你对工厂模式有了一定理解。接下来将继续深入工厂模式,主要介绍工厂方法模式的改进——抽象工厂模式,以及工厂模式在框架源码中的应用,希望在看完这两篇介绍之后能够对彻底搞懂工厂模式,并理解其在实际开发中的意义。

2022-05-30 22:27:01 718

原创 【深入设计模式】工厂模式—简单工厂和工厂方法

设计模式(Design pattern)是软件工程的基础,最近在对公司项目代码进行迭代升级之后,决定把设计模式相关的知识点拉出来再重新整理一遍进行分享。学习设计模式,不仅是为了面试,更是为了在工作中能够写出易于维护、扩展性好的代码,否则不考虑设计的功能代码也是在给后人挖坑(已经深受其害)。首先分享的是工厂模式,将这部分分为两部分,第一部分是是简单工厂模式和工厂方法模式的介绍及演进,主要介绍这两种模式结构,以及如何从简单工厂衍生出工厂方法模式。第二部分是抽象工厂模式和工厂模式在源码应用(下一篇博客进行分..

2022-05-24 15:45:59 978

原创 记一次生产事故排查——CPU高负载原因排查分析

文章目录1. 背景描述2. 排查过程2.1 定位负载过高的进程2.2 进程内运行分析获取进程中各线程的 CPU 使用情况线程号处理最近线上一个在线服务发现请求特别慢,接口经常出现超时问题,需要排查定位接口慢的原因。通过对现场和代码进行模拟(毕竟公司代码不太好放上来)总结一下此次排查给经验,尽可能为大家排查线上问题提供一些帮助。1. 背景描述大半夜运维打电话反馈请求到服务端接口非常缓慢,并且出现超时、报500现象,严重影响客户使用,需要排查问题原因。首先看到这样的问题直接去排查 CPU 和内存的情

2022-05-17 23:50:10 1123 4

原创 解决项目版本冲突——maven-shade插件使用

文章目录背景maven-shade-plugin介绍解决问题1.环境准备2.解决方案3.引入依赖一些需要注意的坑maven-shade-plugins的其他使用背景当我们在maven项目中引入第三方组件时,三方组件中的依赖可能会与项目已有组件发生冲突。比如三方组件中依赖httpclient的版本是4.5.x,而项目中已有的httpclient版本是3.1.x,那么此时就会产生一下两种情况:如果用三方组件的高版本httpclient覆盖原有的低版本httpclient,有可能会导致原来项目启动运行失

2020-12-22 21:24:17 5739 3

原创 使用ES完成“离我最近”相关功能

文章目录前言准备工作1.构建索引2.插入数据完成需求1.根据经纬度进行距离排序并获取距离2.获取距离并筛选距离总结前言最近项目中有个需求是完成离我最近的功能,经过讨论决定使用ElasticSearch根据用户所在位置经纬度来完成相关需求,这里使用一个小的Demo来做记录。准备工作1.构建索引创建索引location_test,索引只包含两个字段,一个景点名字另一个是景点经纬度,保存经纬度使用geo_point类型存储。PUT http://localhost:9200/location_test

2020-09-20 23:37:48 2063 1

原创 面试官一步步逼问让我对ThreadLocal有了更深入的思考

文章目录前言内存泄漏什么是内存泄漏?内存泄露的本质ThreadLocalThreaLocal介绍ThreaLocal原理ThreadLocalMap原理ThreaLocalMap介绍ThreaLocalMap设置值ThreadLocal内存泄漏总结前言前几天面试面试官问到和ThreadLocal相关的一些问题,回来以后对相关问题进行了详细的思考并认真阅读了一下ThreadLocal源码,以前觉得ThreadLocal只是一个用来做线程变量隔离的类,看完源码发现这个类挺有意思的,里面涉及的原理还是比较复杂

2020-09-04 22:26:06 783 2

原创 面试:什么是缓存雪崩、缓存击穿、缓存穿透?

文章目录缓存雪崩1.什么是缓存雪崩2.解决方案缓存击穿1.什么是缓存击穿2.解决方案3.缓存雪崩和缓存击穿的区别缓存穿透1.什么是缓存穿透2.解决方案3.布隆过滤器4.缓存击穿和缓存穿透的区别总结缓存雪崩1.什么是缓存雪崩为了使查询速度更快,我们选择使用缓存来保存数据,使原本每次请求都需要查询数据库的操作变成先查询缓存,缓存有直接返回,缓存没有则查询数据库然后再写入缓存中,通常缓存都是有有效时长的,否则就会一直占用内存空间。当大量请求在访问都会先从缓存查询,如果此时大部分缓存同时过期失效,那么这些

2020-08-16 21:59:38 2187

原创 Canal和Kafka整合方案——解决Canal写入Kafka并发消费问题

文章目录一、问题描述二、引入Kafka1.Canal整合Kafka及项目初步搭建2.整合Kafka后引出新问题三、最终方案1.修改Canal配置文件2.修改项目代码3.整体架构4.结果验证四、总结思考五、参考一、问题描述在使用Canal读取binlog来对数据库增量进行同步时遇到一下几个问题首先是在使用Canal自带客户端进行同步时需要自己手动调用get()或者getWithoutAck()进行拉取拉取日志后进行同步只能一条一条处理,效率比较低如果处理日志过慢或者其他原因容易导致日志堆积在服务器

2020-08-11 21:36:34 8992 1

原创 MySQL数据增量同步——Canal搭建部署

文章目录简介canal部署MySql设置canalcanal多数据源监听canal-admin搭建canal整合kafka坑版本canal.deployer-1.1.4简介canal是阿里巴巴开源的一款用于MySQL数据库增量日志解析组件,提供增量数据订阅和消费功能。canal读音[kəˈnæl]canal 工作原理canal 模拟 MySQL slave 的交互协议,伪装自己为 MySQL slave ,向 MySQL master 发送dump 协议MySQL master 收到

2020-07-24 20:16:00 4761 11

原创 RocketMQ——NameServer和Broker

RocketMQ——NameServer和Broker文章目录RocketMQ——NameServer和BrokerNameServerNameServer功能为什么不用zookeeper?BrokerBroker消息存储Broker的HANameServerNameServer功能NameServer负责维护Producer和Consumer的配置信息、状态信息,并且协调各个角色的协同...

2019-08-16 21:21:50 8997 1

原创 LeetCode 每日一题——2178. 拆分成最多数目的正偶数之和

一直加2进行尝试,保证都是偶数剩余和小于当前数时,让剩余和加上列表最后一位即可。

2023-07-06 11:36:10 312

原创 LeetCode 每日一题——2032. 至少在两个数组中出现的值

LeetCode 每日一题——2032. 至少在两个数组中出现的值

2022-12-29 11:46:50 304 1

原创 LeetCode 每日一题——1750. 删除字符串两端相同字符后的最短长度

LeetCode 每日一题——1750. 删除字符串两端相同字符后的最短长度

2022-12-28 13:52:16 258 1

原创 LeetCode 每日一题——1759. 统计同构子字符串的数目

LeetCode 每日一题——1759. 统计同构子字符串的数目

2022-12-26 14:28:15 549 1

原创 LeetCode 每日一题——2011. 执行操作后的变量值

LeetCode 每日一题——2011. 执行操作后的变量值

2022-12-23 11:08:30 130

原创 通关剑指 Offer——剑指 Offer II 056. 二叉搜索树中两个节点之和

通关剑指 Offer——剑指 Offer II 056. 二叉搜索树中两个节点之和

2022-12-22 11:24:45 158 1

原创 通关剑指 Offer——剑指 Offer II 055. 二叉搜索树迭代器

通关剑指 Offer——剑指 Offer II 055. 二叉搜索树迭代器

2022-12-21 14:04:19 350 1

原创 LeetCode 每日一题——1971. 寻找图中是否存在路径

LeetCode 每日一题——1971. 寻找图中是否存在路径

2022-12-19 11:48:09 219

原创 LeetCode 每日一题——1785. 构成特定和需要添加的最少元素

LeetCode 每日一题——1785. 构成特定和需要添加的最少元素

2022-12-16 11:10:19 87

原创 LeetCode 每日一题——1945. 字符串转化后的各位数字之和

LeetCode 每日一题——1945. 字符串转化后的各位数字之和

2022-12-15 11:36:24 416

原创 LeetCode 每日一题——1832. 判断句子是否为全字母句

LeetCode 每日一题——1832. 判断句子是否为全字母句

2022-12-13 11:33:42 137

原创 LeetCode 每日一题——1781. 所有子字符串美丽值之和

LeetCode 每日一题——1781. 所有子字符串美丽值之和

2022-12-12 11:40:08 214

原创 LeetCode 每日一题——1780. 判断一个数字是否可以表示成三的幂的和

LeetCode 每日一题——1780. 判断一个数字是否可以表示成三的幂的和

2022-12-09 10:48:45 200

原创 LeetCode 每日一题——1812. 判断国际象棋棋盘中一个格子的颜色

LeetCode 每日一题——1812. 判断国际象棋棋盘中一个格子的颜色

2022-12-08 16:00:46 146

原创 通关剑指 Offer——剑指 Offer II 054. 所有大于等于节点的值之和

通关剑指 Offer——剑指 Offer II 054. 所有大于等于节点的值之和

2022-12-07 14:24:48 111

原创 LeetCode 每日一题——1805. 字符串中不同整数的数目

LeetCode 每日一题——1805. 字符串中不同整数的数目

2022-12-06 11:29:51 110

原创 LeetCode 每日一题——1769. 移动所有球到每个盒子所需的最小操作数

LeetCode 每日一题——1769. 移动所有球到每个盒子所需的最小操作数

2022-12-02 15:12:32 115

原创 LeetCode 每日一题——1779. 找到最近的有相同 X 或 Y 坐标的点

LeetCode 每日一题——1779. 找到最近的有相同 X 或 Y 坐标的点

2022-12-01 11:41:01 119

原创 通关剑指 Offer——剑指 Offer II 052. 展平二叉搜索树

通关剑指 Offer——剑指 Offer II 052. 展平二叉搜索树

2022-11-30 11:50:14 138

原创 LeetCode 每日一题——1758. 生成交替二进制字符串的最少操作数

LeetCode 每日一题——1758. 生成交替二进制字符串的最少操作数

2022-11-29 11:43:48 243

空空如也

空空如也

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

TA关注的人

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