自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 收藏
  • 关注

原创 Mysql刨根问底之六(日志系统)

undo log 是也属于引擎层(innodb)的日志,从上面的redo log介绍中我们就已经知道了,redo log 和undo log的核心是为了保证innodb事务机制中的持久性和原子性,事务提交成功由redo log保证数据持久性,而事务可以进行回滚从而保证事务操作原子性则是通过undo log 来保证的。在Mysql里数据每次修改前,都首先会把修改之前的数据作为历史保存一份到undo log里面的,数据里面会记录操作该数据的事务ID,然后我们可以通过事务ID来对数据进行回滚。

2023-03-01 19:32:26 260

原创 Mysql刨根问底之五(数据复制)

它的实现机制可以这样概括,首先在源服务器(source server)上,任何数据修改和数据结构变更的事件(event)都会被写入日志文件 中,然后,副本服务器从源服务器上的日志文件中读取这些事件并在本地重放执行。这样的好处,减少了事务数据丢失的概率,而对底层硬件的IO要求也没有那么高(log buffer写到文件系统中,一般只是从log buffer的内存转移的文件系统的内存缓存中,对底层IO没有压力)。在这种模式下,事件的写入,默认使用基于语句的格式,仅在需要时才切换到基于行的格式。

2023-03-01 14:47:11 544

原创 Mysql刨根问底之四(查询性能优化)

(3)当我们执行查询的时候,MySQL会自动生成一个执行计划,也就是query plan,而且通常有很多种不同的实现方 式,它会选择最低的那一个,而这个cost值就是开销最低的那一个。MySQL的客户端和服务器之间的通信协议是“半双工”的,这意味着,在任何时刻,要么是由服务器向客户端发送数据,要么是由客户端向服务器发送数据。这两个动作不能同事发生。mysql在设计删让连接和断开连接都是轻量的额,返回一个小的查询结果方面很高效,所以尽量尝试把一个大的查询分拆成几个简单的小的查询。

2023-03-01 11:58:19 247

原创 Mysql刨根问底之三(高性能索引)

单行访问是很慢的,特别是在机械硬盘中存储(SSD的随机I/O要快很多,不过这一点仍然成立)。如果服务器从存储中读取一个数据块只是为了获取其中一行,那么就浪费了很多工作。最好读取的块中能包含尽可能多的所需要的行。按顺序访问范围数据是很快的,有两个原因。第一,顺序I/O不需要多次磁盘寻道,所以比随机I/O要快很多(特别是对于机械硬盘)。第二,如果服务器能够按需顺序读取数据,那么就不再需要额外的排序操作,并且GROUP BY查询也无须再做排序和将行按组进行聚合计算了。

2023-02-28 23:16:29 283 1

原创 Mysql刨根问底之二(高效数据类型)

mysql数据类型 选择使用

2023-02-28 21:51:30 230

原创 Mysql刨根问底之一(MySQL并发控制)

Innodb使用两阶段锁定协议,在事务执行期间,随时获取锁,但是只有在提交或者回滚才会统一释放所有的锁。显示加锁的案例:分别是for update 排它锁 ,for share共享锁,都需要在事务中执行。简单说的就是会锁整张表,innodb存储引擎下,如果我们使用for update 不添加where id条件的话,会自动升级为排它的表级锁。处理并发读/写访问的系统通常实现一个由两种锁类型组成的锁系统 两种锁通常呗称为共享锁和 排他锁,也叫读锁和写锁。个事务锁定相同的资源时,也可能会发生死锁。

2023-02-28 19:27:28 279

原创 ubuntu下安装Kubernetes

1. 安装并启用 Dockersudo apt install docker.iosudo systemctl enable dockerdocker --version2.添加 Kubernetes signing key 和Repositorysudo apt install curlcurl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key addsudo apt-add-repository

2020-05-27 15:09:39 914

原创 ubuntu下spark集群实践以及问题总结

spark集群实践以及问题总结准备工作配置集群运行spark的样例准备工作安装虚拟机三台:192.168.55.128、192.168.55.132、192.168.55.133下载spark-2.3.2-bin-hadoop2.7、scala-2.12.8、jdk1.8安装并配置环境变量,在三台机器上均需配置安装在三台机器上均通过sudo apt-get install openssh...

2018-12-24 11:08:16 346

原创 分布式架构之(Zookeeper原理)

Zookeeper是一个典型的分布式数据一致性的结局方案,分布式应用程序可以基于它实现注入数据发布、订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master选举、分布式锁和分布式队列等功能,顺序一致性从同一个客户端发起的事务请求,最终将会严格地按照其发起顺序被应用到Zookeeper中去原子性。

2023-03-05 18:29:17 455

原创 分布式一致性原理之(分布式架构以及Paxps协议)

分布式系统是一个硬件或软件组成分布式在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统、

2023-03-05 17:50:47 379

原创 深入理解JVM之(内存管理)

因此,ZGC的重分配只是决定了里面的存活对象会被重新复制到其他Region中,里面的Region会被释放,而并不能说回收行为就只是针对这个集合里面的Region进行的。HotSpot虚拟机的集中收集器有不同的标记实现方案,有的吧标记直接记录在对象头上(如Serial收集器),有的把标记记录在于对象互相独立的数据结构上(G1、Shenandoah使用一个中相当于堆内存的1/64大小的,称为bitmapo的结构来记录标记信息),而ZGC的染色指针是最直接、最纯粹的,他直接把标记信息记录在应用对象的指针上,

2023-03-05 10:03:20 274

原创 读懂spring之循环依赖问题

/ A依赖了Bclass A{public B b;// B依赖了Aclass B{public A a;在Spring中循环依赖就是一个问题了,为什么?因为,在Spring中,一个对象并不是简单new出来了,而是会经过一系列的Bean的生命周期,就是因为Bean的生命周期所以才会出现循环依赖问题。当然,在Spring中,出现循环依赖的场景很多,有的场景Spring自动帮我们解决了,而有的场景则需要程序员来解决,下文详细来说。

2023-03-03 22:46:11 119

原创 读懂spring之以来注入源码分析

首先分两种:1. 手动注入2. 自动注入在XML中定义Bean时,就是手动注入,因为是程序员手动给某个属性指定了值。上面这种底层是通过set方法进行注入。上面这种底层是通过构造方法进行注入。这么写,表示Spring会自动的给userService中所有的属性自动赋值(不需要这个属性上有@Autowired注解,但需要这个属性有对应的set方法)。在创建Bean的过程中,在填充属性时,Spring会去解析当前类,把当前类的所有方法都解析出来,

2023-03-03 16:23:39 147

原创 读懂spring之Bean的销毁过程

Bean销毁是发生在spring容器关闭过程中的。

2023-03-03 14:57:11 507

原创 读懂spring之二(Bean的生命周期源码)

Spring最重要的功能就是帮助程序员创建对象(也就是IOC),而启动Spring就是为创建Bean对象做准备,所以我们先明白Spring到底是怎么去创建Bean的,也就是先弄明白Bean的生命周期。Bean的生命周期就是指:在Spring中,一个Bean是如何生成的,如何销毁的。

2023-03-03 11:58:15 67

原创 读懂Spring之一 (spring核心概念解析)

在Spring的源码实现中,当我们new一个ApplicationContext时,其底层会new一个BeanFactory出来,当使用ApplicationContext的某些方法时,比如getBean(),底层调用的是BeanFactory的getBean()方法。可以直接把某个类转换为BeanDefinition,并且会解析该类上的注解,它能解析的注解是:@Conditional,@Scope、@Lazy、@Primary、@DependsOn、@Role、@Description。

2023-03-02 21:31:22 100

原创 ShardingSphere原理之二(执行引擎、归并引擎)

将3个数据结果集的当前游标指向的数据值进行排序,并放入优先级队列,t_score_0的第一个数据值最大,t_score_2的第一个数据值次之,t_score_1的第一个数据值最小,因此优先级队列根据t_score_0,t_score_2和t_score_1的方式排序队列。该模式始终选择内存归并。连接限制模式适用于OLTP操作,OLTP通常带有分片键,会路由到单一的分片,因此严格控制数据库连接,以保证在线系统数据库资源能够被更多的应用所使用,是明智的选择。每一次的连接模式的选择,是针对每一个物理数据库的。

2023-03-02 08:28:56 394

原创 ShardingSphere-JDBC内核原理之一(解析引擎、路由引擎、改写引擎)

我们假设只有t_order_item表中包含order_item_id列,那么根据表的元数据信息可知,在结果归并时,排序项中的user_id是存在于t_order表中的,无需补列;假设数据库仍然是按照order_id的奇偶值分为两片的,仅将这条SQL中的表名进行修改,然后发送至数据库完成SQL的执行 ,则两个分片都会写入相同的记录。对于携带分片键的SQL,根据分片键的不同可以划分为单片路由(分片键的操作符是等号)、多片路由(分片键的操作符是IN)和范围路由(分片键的操作符是BETWEEN)。

2023-03-02 07:59:26 339

原创 ShardingSphere入门到精通之七(ShardingSphere-Proxy垂直分片)

配置和测试。

2023-03-02 07:40:05 96

原创 ShardingSphere-JDBC 介绍和基本概念

ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar(计划中)这3款相互独立的产品组成。他们均提供标准化的数据分片、分布式事务和数据库治理功能,可适用于如Java同构、异构语言、容器、云原生等各种多样化的应用场景。定位为轻量级Java框架,在Java的JDBC层提供的额外服务。

2023-03-01 22:03:24 1009

原创 ShardingSphere入门到精通之六(ShardingSphere-Proxy读写分离部署)

shardingSphere-proxy8104 项目。

2023-03-01 21:27:43 149

原创 ShardingSphere入门到精通之七(ShardingSphere-Proxy垂直分片)

配置和测试。

2023-03-01 21:27:06 81

原创 ShardingSphere入门到精通之五(Shardingsphere-Proxy部署使用)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pnpbytkN-1677676942890)(D:\BaiduNetdiskDownload\尚硅谷ShardingSphere5教程\笔记\assets\image-20220819152009158.png)]ShardingSphere-Proxy容器中默认情况下没有mysql命令行客户端的安装,因此需要远程访问。容器可以成功的创建并启动,但是无法远程连接。Linux:将文件上传至/opt目录,并解压。

2023-03-01 21:22:54 555

原创 ShardingSphere入门到精通之三(ShardingSphere-JDBC水平分片)

实现对对t_order进行分库分表,分别在server-order0、server-order1两个数据库上建立t_order0和t_order1一共四张表,配置对应的数据源,然后再根据user_id模2分别对数据进行拆分。指所有的分片数据源中都存在的表,表结构及其数据在每个数据库中均完全一致。适用于数据量不大且需要与海量数据的表进行关联查询的场景,例如:字典表。使用绑定表进行多表关联查询时,必须使用分片键进行关联,否则会出现笛卡尔积关联或跨库关联,从而影响查询效率。**多表关联查询会出现笛卡尔积关联。

2023-03-01 21:22:06 153 1

原创 ShardingSphere入门到精通之二(ShardingSphere-JDBC垂直分片)

项目地址:https://gitee.com/lyhonline/JavaTechnologyLearn。application.properties 属性配置。创建server-user服务器。创建server-order容器。ShardingTest 测试类。登录MySQL服务器。登录MySQL服务器。

2023-03-01 21:19:06 80

原创 ShardingSphere入门到精通之一(基于Docker部署一主多从架构)

默认情况下MySQL的binlog日志是自动开启的,可以通过如下配置定义一些可选配置。可以配置多台从机slave1、slave2…,这里以配置slave1为例。在主机中执行以下SQL,在从机中查看数据库、表和数据是否已经被同步。在docker中创建并启动MySQL从服务器:端口3307`启动从机的复制功能,在主服务器上执行SQL。下面两个参数都是Yes,则说明主从配置成功。在从服务的mysql上执行下面的sql。创建mysql主服务器文件。安装master数据库。

2023-03-01 21:17:11 174

原创 nohup常用方式

nohup command > myout.file 2>&1 &

2020-06-18 10:37:10 123

原创 ubuntu安装特定版本软件

列出所有软件版本apt-cache madison 软件名安装特定版本软件apt-get install 软件名=版本号

2020-05-23 12:47:12 557

原创 linux免密ssh登录设置(集群部署时候常用)

服务器master服务器1服务器2服务器master生成密钥ssh-keygen三次回车cd /root/.ssh/ssh-copy-id 服务器1(ip)输入密码ssh-copy-id 服务器2(ip)输入密码完成,master服务器到1和2免密ssh登入

2020-05-23 09:45:58 121

原创 ubuntu修改源后报错解决只linux万能解决方法

E: Could not get lock /var/lib/apt/lists/lock - open (11: Resource temporarily unavailable)E: Unable to lock directory /var/lib/apt/lists解决办法reboot #重启

2020-05-22 18:21:46 170

原创 ubuntu下开发java准备工作

应用版本信息jdk 11ubuntu 20.2idea 2020.1

2020-05-22 14:27:07 133

原创 Linux下vi中使用方向键乱码解决办法

Linux系统下打开终端,敲入命令:sudo gedit /etc/vim/vimrc.tiny ,按回车键,输入密码,再按回车键。Linux下vi中使用方向键乱码解决办法进入vimrc.tiny文件的编辑状态,修改倒数第二行set compatible,将其改为set nocompatible。在set nocompatible下面添加一行:setbackspace=2。保存,退出编辑。再使用vi时,已经可以正常使用方向键和Backspace。...

2020-05-21 16:37:11 463

原创 springboot 找不到index页面问题

WebMvcConfigurerAdapter 过期使用WebMvcConfigurer接口代替*不要使用WebMvcConfigurationSupport,使用这个回出现index默认页面无法跳转到问题

2019-08-17 10:52:58 4801

原创 redis集群spring配置(java形式配置)

maven包 <!--jredis --> <dependency> <groupId>redis.clients</groupId&gt

2019-01-19 06:56:17 671

空空如也

空空如也

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

TA关注的人

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