自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(69)
  • 资源 (5)
  • 收藏
  • 关注

原创 浅谈微服务

微服务的驱动力

2024-07-15 18:38:43 361

原创 分布式共识算法

Paxos、Multi Paxos 和 Gossip

2024-07-06 23:48:36 632

原创 本地事务、全局事务、分布式事务

举个例子,假设你的代码调用了 JDBC 中的。

2024-07-06 16:39:44 767

原创 RPC与REST

就只有 RPC,开发者是围绕着“远程方法”去设计两个系统交互的,这样做的坏处不仅是“如何在不同系统间表示一个方法”、“如何获得接口能够提供的方法清单”都成了需要专门协议去解决的问题,更在于服务的每个方法都是独立的,服务者必须熟悉每个方法才能使用,而REST抽象为了几类。而远程服务又不仅仅是为了分布式系统服务的,在网络时代,浏览器、移动设备、桌面应用和服务端的程序,普遍都有与其他设备交互的需求,所以今天很难找到没有开发过远程服务的人,但是没有正确理解远程服务的coder比比皆是。

2024-07-06 16:35:54 959 2

原创 MySQL 优化,查询的原理,索引的使用,如何优化查询

MySQL 优化

2022-11-02 11:17:32 471 1

原创 MySQL 索引,聚簇索引、覆盖索引

索引是一个很复杂的话题。MySQL 中,大多数情况下选择 B+Tree 索引,其他的只适用于特殊目的。在选择索引和编写利用这些索引的查询时,有如下三个原则当行查询很慢,如果服务器从存储中获取一个数据只是为了获取其中一行,就浪费了很多工作,这时候索引就可以提升效率;按顺序访问范围数据时是很快的;索引覆盖查询是很快的,因为不需要回表查找行。总的来说,编写查询语句时尽可能选择合适的索引以避免单行查找,尽可能使用数据原生顺序从而避免额外的排序,并尽可能使用覆盖索引查询。

2022-11-02 11:01:01 560

原创 MySQL 存储引擎、事务、多版本并发控制(MVCC)、数据类型

InnoDB 内部做了很多优化,包括从磁盘读取数据时采用的可预测性预读,能够自动在内存中创建 hash 索引加速读操作的自适应哈希索引,以及能加速插入操作的插入缓冲区(Insert Buffer)等。解析查询会创建对应的解析树,然后对其各种优化,包括重写查询,决定表的读取顺序,以及选择合适的索引等。一列保存了行的创建时间,一个保存行的过期时间(或删除时间),这个时间是系统版本号,每开始一个新的事务,系统版本号就会自动递增。主键索引的叶子结点包含了整行数据,而二级索引的叶子节点存储的是主键索引的值。

2022-11-02 10:51:31 397

原创 JVM 内存分配与回收策略实战经验总结

内存分配与回收策略:Java 技术体系的自动内存管理最根本的目标是自动化地解决两个问题:。

2022-11-01 17:51:12 418

原创 经典垃圾收集器 CMS、G1

7. G1 提供了两种 GC 模式,Young GC 和 Mixed GC,两种都是完全 Stop The World 的,Young GC 会选取所有年轻代的 Region,Mixed GC 选定所有年轻代的 Region 和统计出的收益高的老年代 Region。5. G1 之所以能简历可预测的停顿时间模型,是因为它将 Region 作为回收的最小单元,每次回收都是 Region 大小的整数倍,这个大小即根据优先级列表排出的收益最大,这也是 Garbage First 的由来。

2022-11-01 17:49:05 628

原创 垃圾收集器与内存分配策略

即使在可达性分析算法中判定为不可达的对象,也不是“非死不可”的,这时他们还处于“缓行”期,要真正宣告一个对象的死亡,至少要经历两次标记:没有与 GC Roots 相连的对象会被第一次标记,随后进行一次筛选,筛选的条件是词对象是否有必要执行。在Java 体系中,固定可作为 GC Roots 的对象包括以下几种:1.在VM栈中引用的对象 2. 方法区中类静态属性引用的对象 3. 方法区中常量引用的对象 4. 本地方法栈中 JNI 引用的对象等等。这种,强引用下不会被回收。,相比之下,方法区的回收效率要低得多。

2022-11-01 17:45:19 201

原创 Java 运行时数据区域:堆、栈、方法区等以及 OOM

Java 虚拟机,OOM,GC,堆,栈,方法区

2022-11-01 17:40:41 640

原创 MyBatis 笔记

Mybatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。Mybatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。Mybatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(普通老式 Java 对象)为数据库中的记录。我们既然要学习 MyBatis ,就必须知道它是以 SqlSessionFactory 的实例为核心的。SqlSessionFactory 的实例通过 SqlSessionFactoryBuilder 获得。

2022-09-02 17:58:36 304

原创 SQL 练习

SQL练习

2022-09-02 17:53:45 627

原创 Linux 命令行——shell 脚本

shell脚本

2022-06-26 10:36:04 672

原创 Linux 命令行——格式化输出

Linux 格式化输出

2022-06-26 10:35:17 1222

原创 Linux 命令行——文本处理命令:cat、sort、uniq、cut、comm、diff、patch

文本处理命令:cat、sort、uniq、cut、comm、diff、patch

2022-06-26 10:34:51 714

原创 Linux 命令行——Linux 正则:grep 的使用

Linux 正则:grep 的使用

2022-06-26 10:34:26 210

原创 Linux 命令行——gzip、gunzip、bzip、bunzip、tar、zip等命令

linux gzip、gunzip、bzip、bunzip、tar、zip

2022-06-26 10:34:00 1062

原创 Linux 命令行——文件查找:locate、find

linux文件查找:locate、find

2022-06-26 10:33:00 1552

原创 Linux 命令行——网络系统、ping、netstat、ftp、wget、ssh

linux 网络系统、ping、netstat、ftp、wget、ssh

2022-06-26 10:32:19 463

原创 Linux 命令行——软件包管理、brew 使用

Linux 软件包、Mac brew

2022-06-25 19:48:38 924

原创 Linux 命令行——自定义 shell 提示符

自定义shell 提示符

2022-06-25 19:43:51 462

原创 Linux 命令行——vim 的基本操作和高级操作

vim 的基本操作和高级操作

2022-06-25 11:51:43 306

原创 Linux 命令行——Shell 环境变量的查看、配置、激活

Linux 环境变量的查看、配置、激活

2022-06-25 11:35:59 3179

原创 Linux 命令行——权限、读写执行、chmod

权限:在 Unix 安全模型中,一个用户可能拥有文件和目录。当一个用户拥有一个文件或目录时,用户对这个文件或目录的访问权限拥有控制权。用户反过来又属于一个由一个或多个用户组成的用户组,用户成员由文件或目录的所有者授权对文件和目录的访问权限。除了对一个用户组授权外,文件所有者可能给所有的人授权,在 unix 中,可以用 id 命令来找到关于你自己的身份信息::uid=0(root) gid=0(root) groups=0(root) 当用户创建账户后,系统会给用户分配一个号码,叫做用户 ID 或 uid,这

2022-06-25 11:27:43 2826

原创 Linux 命令行——Linux光标移动命令、剪切黏贴命令和历史命令

Linux光标移动命令、剪切黏贴命令和历史命令

2022-06-25 10:58:26 527

原创 Linux 命令行——Linux 中的命令展开*、~、{}以及路径名展开

Linux 中的命令展开*、~、{}以及路径名展开

2022-06-25 10:15:18 1630

原创 Linux 中查询服务、查询端口、查询 PID、防火墙

Linux 中查询服务、查询端口、查询 PID、防火墙

2022-06-25 10:02:35 2159

原创 Linux 命令行—— I/O 重定向之cat、sort、uniq、sort、grep、wc、head、tail

I/O 重定向之cat、sort、uniq、sort、grep、wc、head、tail

2022-06-25 09:51:03 494

原创 Linux 命令行——history 和文件系统命令

@TOC(history 和文件系统命令)查看历史:history | less找出和某个目录相关的历史:history | grep /usr/local复用历史命令:​ 上述查出的各字段含义如下:查看文件类型:file 文件名查看文件内容:less 文件名操作文件和目录:在当前目录下创建目录:mkdir 目录…复制文件和目录:移动和重命名文件:删除文件和目录:......

2022-06-25 09:39:38 333

原创 Spring Boot 缓存

Spring Boot 使用缓存在系统访问量越来越大后,首先出现瓶颈的往往是数据库,而为了减少数据库的压力,我们可以选择如下方式优化(暂时不考虑优化数据库的硬件、索引等):读写分离:通过将读操作分流到从节点,避免主节点过大。分库分表:通过将读操作分摊到多个节点,避免单节点压力过大。缓存:相比数据库来说,缓存往往能够提供更快的读速度,从而减小数据库的压力。Spring Cache:Spring 3.1 引入了激动人心的基于注释的缓存技术,它本质上不是一个具体的缓存实现方案(如 EhCache

2022-04-13 12:27:46 2611

原创 Redis 实战

RedisRedis 是一个开源的,高级的键值对存储和一个适用的解决方案,用于构建高性能,可扩展的 Web 应用程序。场景:在互联网中经常用来缓存热点数据:1. redis 数据在内存中,可以保证读取的高效(接近每秒数十万次);2. 减少下层持久层数据库读取压力,像 mongodb,每秒近千次就有压力;3. redis 单线程运行,天然具备读写的原子性使用:1. 先 get 读取 redis,没有读到再去 db;将 db 读到的数据 set 到 redis 中,返回数据。2. 更新:del 掉 red

2022-04-13 12:24:27 1163

原创 分布式缓存与本地缓存的区别

分布式缓存与本地缓存的区别转载自:https://ost.51cto.com/posts/1002缓存的概念:在服务端中,缓存主要是指将数据库的数据加载到内存中,之后对该数据的访问都在内存中完成,从而减少了对数据库的访问;解决了高并发场景中数据库容易成为性能瓶颈的问题;以及基于内存的访问速度高于磁盘的访问速度的原理,提高了数据的访问速度和程序性能。而根据缓存是否与应用程序属于同一进程,可以将内存分为本地缓存和分布式缓存。本地缓存是在同一个进程内的内存空间中缓存数据,数据读写都是在同一个进程内完成

2022-04-12 12:48:39 2231

原创 ShardingSphere 学习

ShardingSphere 学习中遇到的一些概念及总结先来了解下什么是 ShardingSphere:ShardingSphere确实是以分片为核心、其他功能为辅助的中间件。但Apache ShardingSphere的定位并不仅仅是用于分片的数据库中间层,它其实是一个可插拔平台。无论分片、读写分离、分布式事务、高可用治理、SQL审计、数据脱敏、数据扩容等功能,都将以SPI的形式加入到ShardingSphere平台中,ShardingSphere最终只是一个空白的可以跑的数据库协议+高性能IO的骨架。

2022-03-31 19:01:42 2062

原创 前期绑定和后期绑定

前期绑定和后期绑定转载自:https://blog.csdn.net/youngyouth/article/details/79747043在多态的时候,我们将子类的类型向上转换为父类,进行类型的泛化,便于我们写出实用性很强的代码,新类型不用改变原有代码。这里有个问题就是:任何类型传进去都是父类型 ,但是在方法调用的时候,却是调用的子类的方法,或者说,编译器是怎么知道,具体该调用哪一个方法的呢?这就与前期绑定和后期绑定有关系了。前期绑定前期绑定是面向过程语言的编译器做法:编译器在编译面向过

2022-03-31 18:58:49 780

原创 logback 日志使用

项目中的日志打印这些日志都打印到哪里去了?我们可以看到控制台有日志打印,但是在项目里也可以发现日志,这有什么区别吗?这个对于日志来说是可以选择的,可以配置。所以了解了下日志,东西还不少,记录如下:这里使用 logback, spring 自带 logback 和 slf4j 的依赖,日志框架会在项目启动时默认加载classpath 下命名为 logback-spring 或 logback 的文件。日志基本格式日志输出主要在文件中,应包括以下内容:时间、日志级别、调用链标识(可选)

2022-03-31 18:56:26 770

原创 关于 Spring Boot 中的一些注解使用

1. 关于项目中使用 @Autowired 注解刚开始接触 spring boot 的时候看到别人在字段上添加 @Autowired 自己也就跟着这样写了,刚开始只是注意到字段有下划线,这个如果是 Mapper 的话,在 dto 上添加 @Repository就可以解決,但是还是可以看到注解报错,鼠标悬浮显示“不推荐这样使用注解“,那么正确的方式是怎样的呢?有两种方式:基于构造函数的依赖注入:对于必须的依赖项,使用构造函数注入,可以使它们成为 final且不为null。综合来看 Constru

2022-03-31 16:25:24 336

原创 Mac 安装与配置 zookeeper

Mac 安装与配置 zookeeper以下来源:https://cloud.tencent.com/developer/article/1458839按照链接处理的话基本就不会出什么问题,记录一些小的点移动文件或文件夹:mv 当前目录下的XXX 目的地新建文件夹: mkdir XXX复制文件内容:cp 源文件 目标文件新建文件:touch XXX写入内容:echo “XXX”>>文件名Mac 打开某个找不到的目录:open /XX/xx创建一个服务节点,客户端登陆登陆查看l

2022-03-31 16:18:13 1842

原创 tcp/ip、http和socket区别

tcp/ip、http和socket区别首先要知道在网络结构中我们一直说的分层:http协议位于应用层,tcp协议位于传输层,ip协议位于网络层,它们三个层级依次递减。TCP/IP 是传输层协议,而 HTTP 是应用层协议,socket 是对TCP/IP 协议的封装,所以socket 可以看成是 TCP/IP。转载于:https://www.cnblogs.com/aspirant/p/11334957.htmlsocket和http的区别:Http协议:简单的对象访问协议,对应于应用层。Http

2022-03-31 16:06:46 155

原创 MySQL 中 InnoDB 引擎的 MVCC

MVCCmvcc : Multi-Version Concurrency Control(多版本并发控制),旨在实现对数据库的并发访问控制,在编程语言中实现事务内存。若有人从数据库读数据的同时,有另外的人写入数据,有可能读数据的人看到半写”或者不一致的数据。有很多方法来解决这个问题,叫做并发控制方法。最简单的方法就是加锁,让所有的读者等待写者工作完成,但这样会导致效率很低下。MVCC 使用了一种不同的手段,每个连接到数据库的读者,在某个时刻看到的是数据库的一个快照,写者写操作造成的变化在写操作完

2022-03-30 18:32:51 551

iTerm2 for macos

iTerm2 is a replacement for Terminal and the successor to iTerm. It works on Macs with macOS 10.14 or newer. iTerm2 brings the terminal into the modern age with features you never knew you always wanted.

2022-03-15

Xftp-7.0.0071p.exe

xtfp可视化操作linux

2021-05-27

Xshell-7.0.0073p.exe

linux操作

2021-05-27

c3p0-0.9.5.5.src.zip

C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate,Spring等。

2020-08-24

druid-0.1.10.jar

Druid是Java语言中最好的数据库连接池。Druid能够提供强大的监控和扩展功能。Druid 是一个 JDBC 组件库,包含数据库连接池、SQL Parser 等组件, 被大量业务和技术产品使用或集成,经历过最严苛线上业务场景考验,是你值得信赖的技术产品。

2020-08-24

空空如也

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

TA关注的人

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