- 博客(263)
- 资源 (6)
- 收藏
- 关注
原创 RocketMQ生产者原理及最佳实践
发送消息的一方被称为生产者,它在整个RocketMQ的生产和消费体系中扮演的角色如下图所示。生产者组一个逻辑概念,在使用生产者实例的时候需要指定一个组名。一个生产者组可以生成多个Topic的消息。生产者实例一个生产者组部署了多个进程,每个进程都可以成为一个生产者实例。Topic主题名字,一个Topic由若干个Queue组成。和。前者用户生产普通消息、顺序消息、单向消息、批量消息、延迟消息,后者主要用户生产事务消息。......
2022-07-30 21:21:52 2100
转载 Redis数据结构源码解析之SDS
1.前言Hello,欢迎大家来到《 Redis 数据结构源码解析系列》,在《Redis为什么这么快?》一文中敖丙说过 Redis 速度快的一个原因就是其简单且高效的数据结构。本系列文章面向各个阶段的 Coder 们,新手也不用怕。每一篇文章敖丙都将从命令实战入门入手,随后深入源码解析,最后面试题回顾这三个方向上给各位看官一一介绍。2.SDS命令实战[初来乍到]SDS 是 Redis 中最简单的数据结构。Redis 中所有的数据结构都是以唯一的 key 字符串作为名称,根据 key 获取value,
2022-02-14 17:58:35 1429
转载 Redis为什么这么快?
Redis为什么这么快?说起当前主流NoSql数据库非 Redis 莫属。因为它读写速度极快,一般用于缓存热点数据加快查询速度,在工作中各位看官也肯定和 Redis 打过交道,但是对于Redis 为什么快,除了对八股文的背诵,大部分人并未真正了解前世今生。今儿,敖丙带你揭开 Redis 速度的真相,打通任督二脉。高效的数据结构Redis 的底层数据结构一共有6种,分别是,简单动态字符串,双向链表,压缩列表,哈希表,跳表和整数数组,它们和数据类型的对应关系如下图所示:本文暂时按下不表,后续会针
2022-01-08 11:11:14 1159
原创 从鸭蛋开始学习分布式锁——分布式锁精进之路
在开发分布式系统中,分布式锁的应用是极其广泛的,以至于现在的校招都会问分布式锁的实现方案。大部分人都是通过网络上的碎片化知识拼错出了分布式锁的相关方案,对其缘由、具体代码落地却没有深究,本文将从0开始带领读者一步一步地实现分布式锁,并阅读关键源码。缘起 在谈分布式锁之前,首先需要了解本地锁。本地锁,顾名思义,这个锁对象只存在于本地应用中,比如我们可以使用诸如syn
2021-08-29 02:10:34 1708 6
原创 一致性Hash算法
一致性哈希算法常用于负载均衡中要求资源被均匀的分布到所有节点上,并且对资源的请求能快速路由到对应的节点上。先从一个分布式缓存开始说起。分布式缓存 如上图展示了一个分布式系统架构,为了应对日益剧增的数据访问我们通常会使用Redis作为缓存,减轻底层数据库的压力。最简单的缓存策略即将热点数据保存到所有的Redis中,每次请求时则随机选择一个Redis节点获取数据,但
2021-08-22 21:50:46 1054
原创 短网址的设计与实现
短网址 顾名思义,短网址就是一个很短的链接而已。在生活中我们经常能收到诸如以下短信。 若我们点开此链接会发现实际的URL十分长。https://fast-wallet.finzjr.com/file/marketing/20210624/f1739910-5531-4380-b33b-d8dc94d294b1.html?fy=1&from=701&
2021-08-21 20:05:17 2091 2
原创 接口幂等性设计与实现
幂等 幂等(idempotent、idempotence), 在编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数,或幂等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数。 如下表示为幂等性的数学表示方式,无论函数f(x)执行多少次,值都不变。 接口
2021-08-17 23:31:09 1085
原创 折腾Redis之字典
字典,又称为符号表、关联数组或映射,是一种用于保存键值对的抽象数据结构。在学习Redis字典基本操作的同时我们需要思考,它和其他语言(或工具)中的字典是否不同,尤其在解决哈希冲突和rehash的细节上。基本操作127.0.0.1:6379> hset person name "zhangsan"(integer) 1127.0.0.1:6379> hset person age 20(integer) 1127.
2021-04-05 18:23:12 1007
原创 折腾Redis之位图
如果我们需要记录用户在一年时间内每天是否登陆我们的应用这一需求该如何完成呢?如果使用普通的 key/value,每个用户要记录 365 个,当用户上亿的时候,需要的存储空间是惊人的。所幸,Redis 提供了位图数据结构,这样每天的登陆记录只占据一个位,365 天就是 365 个位,46 个字节 就可以完全容纳下,这就大大节约了存储空间。基本操作 Redis提供了
2021-03-31 20:24:31 1047 1
原创 硬肝半月,翻译最新Redis配置文件,快来看吧~
Redis的配置文件是英文版,对英文不好的同学特别不友好。硬肝半月只为将其翻译为中文,快来看吧~
2020-12-20 01:56:58 2703 5
原创 数据库优化之Explain
Explain 使用EXPLAIN关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的。分析你的查询语句或是表结构的性能瓶颈【官网介绍】。 使用方式:EXPLAIN sqlstatement 通过EXPLAIN,我们可以分析出以下结果:表的读取顺序数据读取操作的操作类型哪些索引可以使用哪些索引被实际使用表之间的引用每张表
2020-10-24 10:21:47 3655
原创 一定能学会的持续集成教程之环境搭建(一)
在学习CI/CD的初步就是环境的部署,其中Jenkins的安装和部署是最头痛的(由于众所周知网络原因)。本文从环境安装开始迈入CI/CD的大门。一定能学会系列!!!
2020-07-12 15:12:42 3790
原创 折腾Redis之字符串
字符串是Redis五种基本数据类型中的基础。同时也是我们在学习编程中接触最多的一种数据类型。本文将从使用、源码、编码三个部分讲解此数据类型在Redis中的使用。字符串 string是Redis中最简单的数据结构。Redis中所有的数据结构都是以唯一的key字符串作为名称,根据此key获取value,差异仅在于value的数据结构不同。string使用非常广泛,最常
2020-06-27 00:00:48 3895
原创 Shell编程之文本处理三剑客~干货满满!!
剑客一grep语法格式:第一种形式:grep [option] [pattern] [file1,file2...]第二种形式:command | grep [option] [pattern]grep参数: 选项 含义 -v 不显示匹配的行信息 -i 忽略大小写 -n 显示行号 -r 递归搜索 -E 支持扩展正则表达式 -F 不按正则表达式匹配,按照字符
2020-05-21 17:49:33 5426 2
原创 还搬砖呢?快去表白!没准备好!!OMG,看我看我看我~
嗯,一年一度的520又来了,看看自己是不是单身汪,快点找妹纸表白呀!!就用我们程序员的专有表达方式。从0-Electron开始告白 网页告白方式似乎已经没落,如果能有桌面端应用就极好了。可是咱也不会呀,只会html,可妹纸还是要,怎么办?? Electron 可以让你使用纯 JavaScri
2020-05-19 18:44:06 4425
原创 你真的懂i++和++i吗?从字节码理解它吧!
i++ 在初次学习i++和++i时我们就一直牢记着:i++是先使用后加1,++i是先加1再使用,长时间都一直这样搬着砖(这结论当然是没毛病的),我也是。直到我看见了下面的题目。public static void func(){ int i=0; for(int j=0;j < 100;j++){ i = i++; } Stystem.out.println(i);//打印什么??
2020-05-16 01:08:47 5554 21
原创 Shell编程之常用查找命令
文件查找之find语法格式: 语法格式 find [路径] [选项] [操作]选项参数对照表: 选项 含义 -name 根据文件名查找,支持模糊匹配 -iname 根据文件名查找,不区分大小写 -perm 根据文件权限查找 -prune 该选项可以排除某些查找目录 -user 根据文件属主查找 -group 根据文件属组查找 -m
2020-05-13 23:04:31 4573
原创 Shell编程之函数
定义与使用 第一种格式 name(){ command1 command2 ... commandn} 第二种格式 functio
2020-05-13 12:41:58 3734
原创 Shell编程之变量的高级用法
【文章同步个人站】变量替换 语法 说明 ${变量名#匹配规则} 从变量**开头**进行规则匹配,将符合**最短**的数据删除 ${变量名##匹配规则} 从变量**开头**进行规则匹配,将符合**最长**的数据删除 ${变量名%匹配规则} 从变量**尾部**进行规则匹配,将符合**最短**的数据删除 ${变量名%%匹配规则} 从变量**尾部**进行规则匹配,将符合**最长**的数据删除 ${变量名
2020-05-13 01:52:37 4697
原创 一起来读字节码
什么是.class Java源文件被编译后被Java虚拟机所执行的代码使用了一种平台中立(不依赖于特定硬件及操作系统)的二进制格式来表示,并且经常(但并非绝对)以文件的形式存储,因此这种格式成为class文件格式。class文件格式中精确地定义了类与接口的表示形式。 ...
2020-03-29 17:53:47 3770 1
原创 JDK源码阅读之Hashtable
在面试时经常将HashMap和Hashtable进行对比,我们已经阅读了HashMap的源代码了,自然不会放过Hashtable的学习。类前注释 该类实现了一个哈希表,它将键映射到值。 任何非null对象都可以用作键值或值。(说明HashTable的ke...
2020-03-22 23:24:24 3539
原创 JDK源码阅读之HashMap演进
HashMap一直是Java开发中的重点,在面试中经常被问及,本文从JDK7出发首先分析其源码了解其不足,进而开始分析JDK8的源码,查看HashMap的改进,加深印象,打败面试。
2020-02-21 21:16:31 3641 1
原创 MyBatis-Plus实战
环境准备建库建表#创建用户表CREATE TABLE user ( id BIGINT(20) PRIMARY KEY NOT NULL COMMENT '主键', name VARCHAR(30) DEFAULT NULL COMMENT '姓名', age INT(11) DEFAULT NULL COMMENT '年龄', email VARCHAR(5...
2019-11-24 17:50:55 5806 2
原创 onclick不执行了?注意\r\n
在web开发中CRUD是基础,也是初学者进行最多的工作,其中Update需要进行回显,一般我们会再次发送请求进行回显,但是有时候有人也会直接将data写在edit方法中(这很难描述,如下代码所示)。<!--data为请求后端获取的数据,使用js将下面这部分html串添加到dom中;使用时点击edit进行编辑,将数据回显...
2019-11-14 15:21:47 3610
原创 JDK源码阅读之Vector
Vector Vector与ArrayList十分相似,只是ArrayList【读我】是线程不安全的,而Vector的实现是线程安全的。现在一起来看看它的实现吧!类图public class Vector<E> extends AbstractList<E> implements ...
2019-10-03 13:12:13 3461
原创 JDK源码阅读之LinkedList
LinkedList 当比较LinkedList和ArrayList的区别时我们也许知道前者底层实现是链表,后者底层实现是数组,对于ArrayList在【此文】中详细介绍了,但是对于LinkedList的理解仅仅局限在链表而已,现在一起来看看它的底层实现吧!类图public class LinkedList<E&g...
2019-09-28 18:17:47 3384
原创 JDK源码阅读之ArrayList
ArrayList 在学习JAVA集合中初次学习的容器就是ArrayList,我们深深的感到它的强大,和数组相比它能实现容量的自动增长。但是大部分人对它的了解都是不够详细的,现在跟随我的步伐窥探一下吧!类图 ArrayList 继承了AbstractL...
2019-09-24 15:02:52 3442
原创 尝鲜——Centos8下载(非官方)
Centos8非官方下载,尝鲜链接:http://mirror.marwan.ma/centos/8.0.1905/isos/x86_64/*学不动啦~~~~*
2019-09-24 10:07:01 9028
原创 JDK源码阅读之Character
Character Character类是基本数据类型char的包装类,该类提供了几种方法,以确定字符的类别(小写字母,数字,等等),并将字符从大写转换成小写,反之亦然。Jdk1.8中字符信息基于 Unicode 标准,版本 6.2.0。类图public final class Character implements ...
2019-09-19 10:53:36 3895
原创 JDK源码阅读之Double
Double Double是基本类型double的包装类,学习之前建议阅读【Jdk源码阅读之Float】相信能更加理解Double。类图public final class Double extends Number implements Comparable<Double> &nb...
2019-09-08 22:48:05 3598
原创 JDK源码阅读之Long
;Long类型是java八大基本数据类型long的包装类,当数值使得Integer无法表示时我们都会想到Long类型,现在我们窥探一下它的源码吧~
2019-09-06 14:34:14 3558
原创 JDK源码阅读之Byte
byte是java基本数据类型之一,是java中长度最小的基本数字类型,并且我们在读写文件时经常使用byte数组,Byte是其包装类,现在我们一起去看看它的实现吧!
2019-09-03 14:18:24 3448
原创 JDK源码阅读之Boolean
Boolean是java基本数据类型中boolean的包装类,它只有false和true两种值,现在我们一起去看看它的实现吧^_^
2019-09-01 21:01:23 3425
原创 JDK源码阅读之Integer
我们在学习对象的自动装箱和自动拆箱时首次接触的就是Integer类。同时我们知道如果新建小数字对象其实是同一个对象,那么这之中的奥秘是什么呢?现在我们从源码的角度剖析一下吧!
2019-08-20 14:51:41 3443
mybatis与spring整合全部jar包(包括springmvc)
2017-12-17
hibernate-distribution-3.6.10.Final-dist.zip
2017-12-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人