- 博客(240)
- 资源 (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
331

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

原创 学好 ElasticSearch,摆脱贫困
不学习是不能奔向小康的官方教程ElasticSearch中文社区搜索:ElasticSearch OR MySQL?目录开场白:1 为什么要用 Elasticsearch?1.1 站内搜索用SQL就能实现,为什么要用Elasticsearch 呢?1.2 模糊查询2 有了 ElasticSearch 还需要 MySQL 吗?2.1Elasti...
2019-06-15 16:34:04
762
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
1879

原创 数据结构内排序之惨死攻略(二)
接上回合《数据结构内排序之惨死攻略(一)》听闻今天还要学数据结构,心中堵着一片乌云。就算受低潮情绪影响也要坚持学下去啊。目录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
684

原创 数据结构内排序之惨死攻略(一)
目录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
771

原创 数据结构线性表之吐血攻略
这是一篇闲狗写给闲狗看的线性表攻略。1 线性表1.1 线性表的概述线性表简称表,是零个或多个元素的有穷序列1.2 线性表类模板C++版template <class T> class List { void clear(); // 置空线性表 bool isEmpty(); // 线性表为空时,返回 true //在表尾添加一个元素...
2018-10-17 10:42:27
678

原创 数据结构二叉树之闲死攻略(一)
这是一篇闲狗都能看懂的二叉树教程,因为是闲狗写的。目录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
874
2

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

原创 数据结构树之切腹攻略
树 —— 一种一对多的数据结构。目录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
4611

原创 网络设备之团灭攻略
先来一览互连设备的总结表然后来逐个消灭。目录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
1086
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
3539

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

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

原创 学到便秘之 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
1209
1
原创 面向对象之-接口鉴权
如果没有超过一分钟,则说明 token 没有过期,就再通过同样的 token 生成算法,在服务端生成新的 token,与调用方传递过来的 token 比对,看是否一致。实际上,这样也是不安全的,因为加密之后的密码及 AppID,照样可以被未认证系统(或者说黑客)截获,未认证系统可以携带这个加密之后的密码以及对应的 AppID,伪装成已认证系统来访问我们的接口。为了保证接口调用的安全性,我们希望设计实现一个接口调用鉴权功能,只有经过认证之后的系统才能调用我们的接口,没有认证过的系统调用我们的接口会被拒绝。
2023-02-26 01:06:30
1044
原创 学到贫血之-贫血模型和充血模型
2 基于充血模型的 DDD 开发模式。1 基于贫血模型的传统开发模式。1 基于贫血模型的传统开发模式。3 开发一个虚拟钱包系统。
2023-02-25 21:48:03
1045
1
原创 电商相关问题总结
2)数据库层面使用订单号做唯一索引,或者基于乐观锁增加 version 字段。下单后冻结库存,冻结优惠券,订单号+类型做幂等,失败重试,订单状态为待支付。监听到订单下单失败的消息,回滚库存,回滚优惠,删除延时队列的任务,失败重试。,保证同一时间只有一个下单逻辑在运行(同一用户下)支付成功后核销库存,核销优惠券,订单状态为已支付。下单成功后,异步提交延时任务到延时队列。3 如何保证库存扣减数据一致性。1)业务层使用分布式锁。2 如何解决重复下单。
2023-02-20 13:14:13
365
原创 MySQL实战45讲笔记
1 基础架构 - 一条SQL查询语句是如何执行的?1 基础架构 - 一条SQL查询语句是如何执行的?2 日志系统:一条SQL更新语句是如何执行的?
2023-02-10 14:22:08
346
原创 学到emo之分库分表
阿里java开发手册写的是500w,若3年后达不到这个数据了,不要分库分表。表中字段太多且包含大字段的时候,在查询时对数据库的IO、内存会受到影响,同时更新数据时,产生的binlog文件会很大,MySQL在主从同步时也会有延迟的风险。2)当业务预估数据量级超过性能阈值时,需要通过分库分表来打散数据 ,降低单体数据量, 以解决单库单表性能问题;将单张表的数据切分到多个服务器上去,每个服务器具有相应的库与表,只是表中数据集合。微服务架构时,业务切割得足够独立,数据也会按照业务切分,保证业务数据隔离,大大提。
2023-02-07 01:43:23
524
原创 学到羊之Kafka
副本(Replica):Kafka 中同一条消息能够被拷贝到多个地方以提供数据冗余,这些地方就是所谓的副本。即系统 A 发消息给到 消息引擎系统,系统 B 通过消息引擎系统读取 A 发送的消息,在大数据场景下,能达到削峰填谷的效果。消费者位移(Consumer Offset):表示消费者消费进度,每个消费者都有自己的消费者位移。消息位移(Offset):表示分区中每条消息的位置信息,是一个单调递增且不变的值。主题(Topic):承载消息的逻辑容器,在实际使用中多用来区分具体的业务。1 kafka 是啥。
2022-12-22 17:59:37
892
1
原创 P1 动词大佬
Clause Elements(句子成分):Subject(主语) + Predicate(谓语)既能接直接宾语又能接间接宾语的动词,称为双及物动词(ditransitive verbs)。3 有2个动作承受者:主语 + 双及物动词 + 间接宾语 + 直接宾语。2 有1个动作的承受者:主语 + 及物动词 + 宾语。1 可以独立完成的动作:主语 + 不及物动词。光说兔老爹教英语,其实语义已经完整了。
2022-10-02 00:38:59
973
原创 学到忧愁之-分布式事务
下单分布式事务解决采用本地消息表和重试表的方式实现,有一个中间状态(冻结核销回滚)痛点:1.事务消息方式对数据库依赖较大,定时任务扫表去兜底重试调用解冻资产接口,重试无策略且对无需重试的异常。识别功能不强,会造成无效的重试任务调用,浪费程序线程资源。2.现有分布式事务处理对代码倾入性较大。两阶段提交:1 阶段修改完订单状态,先不提交事务,但保存sql执行成功的结果。再去减库存,保存sql执行成功的结果。2 阶段分别提交事务...
2022-03-07 00:59:40
558
原创 哈希表实战(求和,计算个数)
概念: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
848
原创 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
1450
原创 自定义注解及使用场景
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
1216
原创 开发小技能
1 字段命名确保只有两种状态就命名 isXxx;有多种状态则命名 xxxType2 返回参数集合返回一个空对象,对象才返回null3 异常异常不能抛给前端,后端捕获处理4 需求分析思考这个功能牵扯到什么业务,怎样去实现 看到列表的需求要想到怎样排序,是否需要分页5 Java 基础== 比较地址,equals 比较值 包装类只能比较常量池里的-128~127,如 10000 == 10000 会返回 false 6 RPC 调用不建议调用其他项目的页面接口
2021-10-25 01:58:13
273
原创 Druid 连接池食用教程
1initialSize连接池初始化时,会调用 com.alibaba.druid.pool.DruidDataSource#init 初始化连接池的数据库连接while (poolingCount < initialSize) { try { // 初始化物理连接 PhysicalConnectionInfo pyConnectInfo = createPhysicalConnection(); DruidConnectionHolder holder .
2021-05-06 15:41:12
1996
原创 解决 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
7337
4
原创 使我郁郁寡欢的 MySQL 事务和锁
1 ACID 特性1.1 原子性(Atomicity)原子性:单个事务的 SQL 要么全都执行成功,要么全部执行失败。 事务的原子性通过 Undo Log 日志实现,事务处理过程中,如果出现了错误或者用户执行了 ROLLBACK 语句,MySQL 可以利用 Undo Log 中的备份将数据恢复到事务开始之前的状态。1.2 持久性(Durability)持久性:一个事务一旦提交,它对数据库中数据的改变是永久性的。 事务的持久性通过 Redo Log 日志实现...
2021-04-11 15:48:00
475
原创 死宅学数据库设计
学习自:阿里新零售数据库设计与实战还不如在家学习数据库设计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
288
原创 那些年踩过的并发环境重复插入数据的坑
临近下班,消费订单表突然惊现两条一模一样的订单数据消费订单表没有加唯一索引,平时只会有一台服务器在消费订单,不会出现并发消费的情况。今天不停改线上bug,频繁发布 2 台线上机器,可能导致有一瞬间,两台机器同时在消费该订单导致。那么,问题来了???怎样规避并发环境下重复插入数据???...
2021-03-11 19:26:07
325
原创 那些年踩过的 MySQL 索引的坑
需求:修复表数据,修改会员订单表p_member_order 的 pay_time,同步修改会员子订单表p_member_order_item 的pay_time,这两个操作需要加事务。p_member_order 的数量量为1883 1645,p_member_order_item 的数据量为3252 7087实现类:@Component@Scope("prototype")public class FixOrderPayTimeToolsAction extends Adm...
2021-03-04 18:19:02
376
5
原创 Redis 之头裂攻略
1. 缓存介绍关于redis,学会这8点就够了3. 缓存常见问题1 设置数据不一致的最大容忍时间,如10min,Redis里的数据过期就自动去读取DB,进行更新。2 增加重试机制,异步更新DB的数据。3 Redis数据总是不过期,增加一个定时任务,定时去读取DB,把最新的数据塞给Redis。以上不适用于:电商秒杀扣库存,银行转账。秒杀抢到即赚到,不付款情况少,采用下单即减库存的方式。不需要对库存有精确的一致性。银行一系统升级就要停服务的原因。...
2021-02-06 10:45:00
156
基于ElasticSearch的搜房网源码.zip
2021-05-09
模拟soul的社交app源码.zip
2021-05-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人