自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

闲狗的博客

稀缺物种。

  • 博客(244)
  • 资源 (5)
  • 收藏
  • 关注

原创 偶识一致性 Hash 算法

1 基本思路2 手写实现一致性 Hash 算法2.1 普通 Hash 算法实现public class GeneralHash { public static void main(String[] args) { // 定义客户端IP String[] clients = new String[]{"10.78.12.3","113.25.63.1","126.12.3.8"}; // 定义服务器数量 int serv

2020-12-05 21:41:13 279

原创 磨人的动态代理

一年一度的七夕虐狗节又到了,为了保持良好的心态,狗子选择用学习来抵抗外界的伤害。

2020-08-23 20:14:44 189

原创 使我日渐消瘦的MySQL索引

0 那些年我们听过的索引优化手段若不是生活所迫,我怎会把自己弄得一身才华。0 那些年我们听过的索引优化手段为了成为一只知其然知其所以然的闲狗,我开始了下面的探索之路。1 索引可以大幅提升查询效率?先来个小测试,我先挖来一张有 100 0000 条记录的用户表 user这张表目前只在 id 上有一个主键索引,其他字段都没有索引。下面在一个没有索引的字段 account_name 做一个查询操作给这个字段创建一个普通索引,耗时 1.960000s然后再执行相同的查询操作,神速啊!

2020-05-20 22:13:22 804

原创 学好 ElasticSearch,摆脱贫困

不学习是不能奔向小康的官方教程ElasticSearch中文社区搜索:ElasticSearch OR MySQL?目录开场白:1 为什么要用 Elasticsearch?1.1 站内搜索用SQL就能实现,为什么要用Elasticsearch 呢?1.2 模糊查询2 有了 ElasticSearch 还需要 MySQL 吗?2.1Elasti...

2019-06-15 16:34:04 706 1

原创 数据结构文件管理和外排序之垂死攻略

今天学修电脑。目录​1. 存储器1.1 主存储器(primary memory或main memory,简称“内存”,或“主存”)1.1.1 DRAM(Dynamic Random Access Memory)——便宜​ 1.1.2 SRAM —— 贵1.1.3 DRAM与SRAM的比较1.1.4 ROM(Read - Only Memory)只读存储器...

2018-11-07 09:42:24 1666

原创 数据结构内排序之惨死攻略(二)

接上回合《数据结构内排序之惨死攻略(一)》听闻今天还要学数据结构,心中堵着一片乌云。就算受低潮情绪影响也要坚持学下去啊。目录5 归并排序5.1 栗子5.2 代码实现5.3 归并算法优化5.3.1 R.Sedgewick优化5.3.2 R.Sedgewick代码实现5.4 算法分析​6 分配排序和索引排序6.1 桶式排序6.1.1 栗子...

2018-10-30 11:46:23 600

原创 数据结构内排序之惨死攻略(一)

目录1 基本定义2 插入排序2.1 直接插入排序(Straight Insertion Sort)2.1.1 栗子2.1.2 代码实现2.1.3 算法分析2.2 Shell排序2.2.1 栗子——增量每次除以2递减2.2.2 代码实现2.2.3 算法分析2.2.4 增量选择3 选择排序3.1 直接选择排序3.1.1 栗子3.1.2 代...

2018-10-24 10:38:57 726

原创 数据结构栈与队列之作死攻略

漫画乱入,供自己放轻松。目录​1 栈的是啥?2 栈的实现方式2.1 顺序栈(Array-based Stack)2.2 链式栈(Linked Stack)2.3 共享栈2.4 栈的应用-四则运算表达式求值2.3.1 后缀表达式2.3.2 中缀表达式2 队列2.1 队列是啥?2.2 队列的实现方式2.2.1 顺序队列​2.2.2 循...

2018-10-17 14:48:45 549

原创 数据结构线性表之吐血攻略

这是一篇闲狗写给闲狗看的线性表攻略。1 线性表1.1 线性表的概述线性表简称表,是零个或多个元素的有穷序列1.2 线性表类模板C++版template <class T> class List { void clear(); // 置空线性表 bool isEmpty(); // 线性表为空时,返回 true //在表尾添加一个元素...

2018-10-17 10:42:27 618 1

原创 数据结构二叉树之闲死攻略(一)

这是一篇闲狗都能看懂的二叉树教程,因为是闲狗写的。目录1 二叉树的概念1.1 二叉树是what?1.2 二叉树的五种基本形态1.3 二叉树的相关术语1.4 完美二叉树(Perfect Binary Tree)1.5 满二叉树(Full Binary Tree)1.6 完全二叉树(Complete Binary Tree)1.7 扩充二叉树Extended b...

2018-10-08 16:05:14 816 4

原创 数据结构图之上吊攻略

六度分割理论(小世界理论,六度空间理论):你和任何一个陌生人之间所间隔的人不会超过六个,也就是说,最多通过五个中间人你就能够认识任何一个陌生人。从陈家庄到张家村,怎么走最快呢?怎么修公路使得村村通的花费最少呢? 以上例子都是图在实际中的应用。目录1 图的定义与术语1.1 无向图1.2 有向图(directed graph)(1) 有向图(2)有向完全图...

2018-10-05 15:15:07 1292 4

原创 数据结构树之切腹攻略

树 —— 一种一对多的数据结构。目录1. 树的相关术语2. 树形结构的各种表示法2.1 树形表示法2.2 形式语言表示法2.3 文氏图表示法2.4 嵌套括号表示法2.5 凹入表表示法2.6 图书目录,杜威表示法3. 森林3.1 树转化成二叉树3.2 二叉树转化成树3.3 森林转化成二叉树3.4 二叉树转化成森林4. 森林的遍历4....

2018-10-05 15:13:36 4006 1

原创 网络设备之团灭攻略

先来一览互连设备的总结表然后来逐个消灭。目录​1 中继器(RP Repeater)—— 物理层2 集线器(Hub)—— 物理层3 网桥(Bridge)—— 数据链路层4 交换机(Switch)—— 数据链路层​​4.1 交换机工作原理4.2 交换机MAC地址表4.3 交换机数据交换方式5 路由器(Router) —— 网络层5.1 初...

2018-09-11 11:38:26 982 1

原创 高级数据结构之猝死攻略(一)

从基础数据结构一路杀到高级数据结构,历尽虚脱,在此奖励自己一个女神,希望能继续坚持。本文参考自:张铭《数据结构与算法》目录1 多维数组1.1 用数组表示特殊矩阵1.1.1 三角矩阵1.1.2 对称矩阵1.1.3 对角矩阵(diagonal matrix)1.1.4 稀疏矩阵1.1.5 稀疏矩阵的十字链表2 广义表L= (x0,x1,…,xi,…,...

2018-08-29 18:08:49 3457 3

原创 数据结构检索(查找)之入土攻略(一)

目录1 检索的基本概念2 线性表的检索2.1 顺序检索2.2 二分检索​2.3 分块检索3 集合的检索1 检索的基本概念度娘作为中国最牛的中文搜索引擎,各种问题在其中都会找到答案,其中不乏一些辣眼的奇葩提问。不好意思,以上在扯犊子。搜索引擎是检索的典型应用,当我们在搜索引擎上输入一个关键字,点击“搜索”按钮时,搜索引擎会带着关键字奔向索...

2018-08-27 15:41:17 1060 1

原创 数据结构索引之杀死攻略(一)

目录1  索引是啥???2  线性索引2.1  稠密索引2.2  稀疏索引(分块索引)2.3  二级线性索引2.4  倒排索引2.4.1 基于属性的倒排2.4.2 对正文文件的倒排这些年来,受尽索引的折磨,时常一脸懵逼,因此立志写一篇通俗易懂又不失专业性的索引攻略。1  索引是啥???风靡日本全球的“小黄书”——《大便书》的目录类似于一张索引表。...

2018-08-21 11:22:12 1103 1

原创 学到便秘之 JVM

JVM官方文档01JVM官方文档02目录​1 概述1.1 操作系统是啥1.2 JVM是啥1.3 JVM嘎哈的1.4 JVM的生命周期1.5 JVM中使用的数据类型1.5.1 原始数据类型(primitive types)1.5.2 引用数据类型(reference type)2 Java虚拟机内存划分2.1 Java虚拟机内存区域2.2 ...

2018-01-15 10:12:04 1058 1

原创 学到痛不欲生之 - Kotlin

公司需要利用Kotlin 的跨平台特性实现多端共享代码,所以我又要增加一门技能了。

2023-03-22 21:54:55 188 1

原创 面向对象之-接口鉴权

如果没有超过一分钟,则说明 token 没有过期,就再通过同样的 token 生成算法,在服务端生成新的 token,与调用方传递过来的 token 比对,看是否一致。实际上,这样也是不安全的,因为加密之后的密码及 AppID,照样可以被未认证系统(或者说黑客)截获,未认证系统可以携带这个加密之后的密码以及对应的 AppID,伪装成已认证系统来访问我们的接口。为了保证接口调用的安全性,我们希望设计实现一个接口调用鉴权功能,只有经过认证之后的系统才能调用我们的接口,没有认证过的系统调用我们的接口会被拒绝。

2023-02-26 01:06:30 861

原创 学到贫血之-贫血模型和充血模型

2 基于充血模型的 DDD 开发模式。1 基于贫血模型的传统开发模式。1 基于贫血模型的传统开发模式。3 开发一个虚拟钱包系统。

2023-02-25 21:48:03 885 1

原创 学到头秃之限流

限流算法。

2023-02-22 00:00:25 97

原创 业务侧相关问题总结

2)数据库层面使用订单号做唯一索引,或者基于乐观锁增加 version 字段。下单后冻结库存,冻结优惠券,订单号+类型做幂等,失败重试,订单状态为待支付。监听到订单下单失败的消息,回滚库存,回滚优惠,删除延时队列的任务,失败重试。,保证同一时间只有一个下单逻辑在运行(同一用户下)支付成功后核销库存,核销优惠券,订单状态为已支付。下单成功后,异步提交延时任务到延时队列。3 如何保证库存扣减数据一致性。1)业务层使用分布式锁。2 如何解决重复下单。

2023-02-20 13:14:13 209

原创 MySQL实战45讲笔记

1 基础架构 - 一条SQL查询语句是如何执行的?1 基础架构 - 一条SQL查询语句是如何执行的?2 日志系统:一条SQL更新语句是如何执行的?

2023-02-10 14:22:08 225

原创 学到emo之分库分表

阿里java开发手册写的是500w,若3年后达不到这个数据了,不要分库分表。表中字段太多且包含大字段的时候,在查询时对数据库的IO、内存会受到影响,同时更新数据时,产生的binlog文件会很大,MySQL在主从同步时也会有延迟的风险。2)当业务预估数据量级超过性能阈值时,需要通过分库分表来打散数据 ,降低单体数据量, 以解决单库单表性能问题;将单张表的数据切分到多个服务器上去,每个服务器具有相应的库与表,只是表中数据集合。微服务架构时,业务切割得足够独立,数据也会按照业务切分,保证业务数据隔离,大大提。

2023-02-07 01:43:23 415

原创 学到羊之Kafka

副本(Replica):Kafka 中同一条消息能够被拷贝到多个地方以提供数据冗余,这些地方就是所谓的副本。即系统 A 发消息给到 消息引擎系统,系统 B 通过消息引擎系统读取 A 发送的消息,在大数据场景下,能达到削峰填谷的效果。消费者位移(Consumer Offset):表示消费者消费进度,每个消费者都有自己的消费者位移。消息位移(Offset):表示分区中每条消息的位置信息,是一个单调递增且不变的值。主题(Topic):承载消息的逻辑容器,在实际使用中多用来区分具体的业务。1 kafka 是啥。

2022-12-22 17:59:37 756 1

原创 学到生无可恋之 Redis(下)

浅学redis

2022-12-12 16:15:11 242

原创 学到生无可恋之 Redis(上)

浅学 Redis

2022-12-02 17:32:43 685

原创 P1 动词大佬

Clause Elements(句子成分):Subject(主语) + Predicate(谓语)既能接直接宾语又能接间接宾语的动词,称为双及物动词(ditransitive verbs)。3 有2个动作承受者:主语 + 双及物动词 + 间接宾语 + 直接宾语。2 有1个动作的承受者:主语 + 及物动词 + 宾语。1 可以独立完成的动作:主语 + 不及物动词。光说兔老爹教英语,其实语义已经完整了。

2022-10-02 00:38:59 818

原创 2022 年坑过我的 JAVA 面试题

1 现场编写一道算法题(字符串里的数字求和)2 把 A 库的数据迁移到 B 库,说出思路(涉及海量数据处理思路)3 如何解决包冲突问题,如果依赖的第三方jar包新老版本不兼容,如何处理4 项目中数据库配置的事物隔离级别,事物隔离级别有哪些,各自的性能5 分布式锁,如果锁被占用了,如何处理。

2022-09-06 00:18:29 362

原创 学到忧愁之-分布式事务

下单分布式事务解决采用本地消息表和重试表的方式实现,有一个中间状态(冻结核销回滚)痛点:1.事务消息方式对数据库依赖较大,定时任务扫表去兜底重试调用解冻资产接口,重试无策略且对无需重试的异常。识别功能不强,会造成无效的重试任务调用,浪费程序线程资源。2.现有分布式事务处理对代码倾入性较大。两阶段提交:1 阶段修改完订单状态,先不提交事务,但保存sql执行成功的结果。再去减库存,保存sql执行成功的结果。2 阶段分别提交事务...

2022-03-07 00:59:40 478

原创 哈希表实战(求和,计算个数)

概念:Hash 函数之入土攻略实战 1:有效的字母异位词解题思路:思路1: 对单词的字母进行排序,看最终结果是否一致,如:rat ->art rat -> art思路2: 采用 Map 数据结构,计算每个字母出现的次数class Solution { public boolean isAnagram(String s, String t) { char[] sChars = s.toCharArray(); char[] tCh.

2022-02-10 01:16:46 661

原创 DB 设计规范汇总

数据库命名规范1、数据库名称全部使用小写;2、名称只允许使用a-z、0-9及下划线的组合,不允许出现其他字符;3、使用有意义的名称,能做到观其名知其意,比如:order_db;4、年份固定格式为YYYY四位;月份固定为MM两位;5、如果按百库十表方案分库,则名称为标准库名+下划线+编号后缀,其中编号长度固定为2位,取值范围从00到99,如order_db_00……order_db_99;6、如果按照月份分库,则库名为标准库名+下划线+年月编号,其中年月格式为YYYYMM,固定6位长度,如ord

2021-11-21 01:40:30 1187

原创 自定义注解及使用场景

1 重试注解(1)定义重试注解@Target({ElementType.METHOD, ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface RetryAnnotation { int retryTimes() default 0 ; /** * 重试策略 * @return */ MidBackoff backoff() d

2021-11-20 19:58:25 1056

原创 开发小技能

1 字段命名确保只有两种状态就命名 isXxx;有多种状态则命名 xxxType2 返回参数集合返回一个空对象,对象才返回null3 异常异常不能抛给前端,后端捕获处理4 需求分析思考这个功能牵扯到什么业务,怎样去实现 看到列表的需求要想到怎样排序,是否需要分页5 Java 基础== 比较地址,equals 比较值 包装类只能比较常量池里的-128~127,如 10000 == 10000 会返回 false 6 RPC 调用不建议调用其他项目的页面接口

2021-10-25 01:58:13 189

原创 Druid 连接池食用教程

1initialSize连接池初始化时,会调用 com.alibaba.druid.pool.DruidDataSource#init 初始化连接池的数据库连接while (poolingCount < initialSize) { try { // 初始化物理连接 PhysicalConnectionInfo pyConnectInfo = createPhysicalConnection(); DruidConnectionHolder holder .

2021-05-06 15:41:12 1802

原创 解决 ShardingSphere 第一次请求慢的喷血日子

学习起因:整合了 ShardingSphere 的项目第一次访问的时候很慢,第二次访问的时候速度就快了,然后老大让我去一探究竟,然后下面就是探索的血泪史。通过 Arthas 生成火焰图,定位到慢在ShardingSphere sql 解析,第一次请求使用 ANTLR 解析 SQL 耗时较长,而第二次请求由于缓存原因耗时很小curl -O https://arthas.aliyun.com/arthas-boot.jarjava -jar arthas-boot.jarprofiler s.

2021-05-05 13:47:09 5967 3

原创 学支付的无聊日子

正值青春的年纪,却过着每天学习的无聊生活。一 支付的种类

2021-04-17 21:57:09 484

原创 使我郁郁寡欢的 MySQL 事务和锁

1 ACID 特性1.1 原子性(Atomicity)原子性:单个事务的 SQL 要么全都执行成功,要么全部执行失败。 事务的原子性通过 Undo Log 日志实现,事务处理过程中,如果出现了错误或者用户执行了 ROLLBACK 语句,MySQL 可以利用 Undo Log 中的备份将数据恢复到事务开始之前的状态。1.2 持久性(Durability)持久性:一个事务一旦提交,它对数据库中数据的改变是永久性的。 事务的持久性通过 Redo Log 日志实现...

2021-04-11 15:48:00 408

原创 死宅学数据库设计

学习自:阿里新零售数据库设计与实战还不如在家学习数据库设计1 不一般的 CRUD1.1 批量插入(1)批量插入,一条失败,全部回滚改动前执行插入 sqlINSERT INTO `t_dept` VALUES(40, 'ACCOUNTING', 'NEW YORK'), (50, 'RESEARCH', 'DALLAS'),(60, 'SALES', 'CHICAGO'), (70, 'OPERATIONS', 'BOSTON');结果:报了个错,表数据没变.

2021-04-08 01:44:43 217

原创 优化页面导出功能

在页面点击导出,然后导出4万左右的数据,旧版本的导出结果为:响应超时报错。待续。

2021-03-19 12:11:46 134

基于ElasticSearch的搜房网源码.zip

核心技术&搜索引擎:ElasticSearch 前端:Thymeleaf、Jquery、Bootstrap、webUpLoad 基础核心框架:Spring Boot + Spring Data JPA 权限控制:Spring Security 数据库:MySQL、H2 消息中间件:Kafka 应用数据分析:ELK

2021-05-09

java秒杀系统.zip

SpringBoot/ RabbitMQ /Redis/ MySQL , 基于时下最火热的Java微服务框架

2021-05-09

模拟soul的社交app源码.zip

课程基于后端云数据库设计用户系统,基于用户关系实现即时通讯和音视频通话功能,实现一个完整的社交App开发,深入思考如何构建通讯层,以及音视频聊天框架,并带从内存,布局、加固混淆等方面来提升App性能及安全。

2021-05-09

java支付项目.zip

覆盖App/H5/PC/小程序等各个终端,玩转企业级支付解决方案。各支付手段效果图+配套wiki电子书,打造轻松易学的企业级支付系统。

2021-05-09

北大计算机考研资料.zip

历年真题,期中期末考试题等

2021-05-09

空空如也

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

TA关注的人

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