- 博客(82)
- 资源 (1)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 各种集群(mysql,redis,mq)节点之间的数据同步以及微服务分布式的笔记问题
首先,备库会启动一个工作线程,称为I/O线程,I/O线程跟主库建立一个普通的客户端连接,然后在主库上启动一个特殊的二进制转储(binlog dump)线程(该线程没有对应的SQL命令),这个二进制转储线程会读取主库上二进制日志中的事件。如果该线程追赶上了主库,它将进入睡眠状态,直到主库发送信号量通知其有新的事件产生时才会被唤醒,备库I/0线程会将接收到的事件记录到中继日志中。主从节点之间的数据就是备份的,但是槽节点不是,redis集群对外工作是多个主节点一起对外的,一旦有一个挂了就整个服务集群挂了。
2023-02-03 22:57:40
1153
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 docker学习
1.docker一般由四部分组成DockerClient客户端Docker Daemon守护进程Docker Image镜像DockerContainer容器2.docker和虚拟机有啥不一样Docker不是虚拟化方法。它依赖于实际实现基于容器的虚拟化或操作系统级虚拟化的其他工具。为此,Docker最初使用LXC驱动程序,然后移动到libcontainer现在重命名为runc。Docker主要专注于在应用程序容器内自动部署应用程序。应用程序容器旨在打包和运行单个服务,而系统容器则设计为运行多个进
2021-09-02 15:18:27
362
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 多路复用总结
什么是多路复用很多地方都说到这个名词?其实没那么难理解,其实是一个操作系统的概念,是一种监听的机制,操作系统负责监听多个文件描述符(soket其实在linux就是一个文件,或者缓存区);区别:端口和socket是两个不同的东西,socket可以理解为一个文件或者缓存区。阻塞和非组赛也没那么难理解,和操作系统课本的概念是一样的,都是说进程或者现成的一种状态,并不是说用了NIO非阻塞类型的编程就不存在阻塞了,当没有任何客户端发信息到socket就是阻塞的,BIO和NIOBIO就是一个线程(入门教程说的
2020-05-27 14:53:24
342
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 一图看懂线程池执行一个工作单元(Runnable,callable)过程
从JDK 5开始,把工作单元与执行机制分离开来,工作单元包括Runnable和Callable,而执行机制有Executor框架提供全文参考线程池四大组件1.线程池管理器(ThreadPool):用于创建并管理线程池,包括 创建线程池,销毁线程池,添加新任务;2、工作线程(PoolWorker):线程池中线程,在没有任务时处于等待状态,可以循环的执行任务;3、任务接口(Task):每个任务必须实现的接口,以供工作线程调度任务的执行,它主要规定了任务的入口,任务执行完后的收尾工作,任务的执行状态等;
2020-05-16 19:42:39
559
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 TCP拥塞控制算法
TCP报文rwnd(Receive Window)接受窗口:如果发送方传输的数据量超过了接收方的处理能力,那么接收方会出现丢包。为了避免出现此类问题,流量控制要求数据传输双方在每次交互时声明各自的接收窗口「rwnd」大小,用来表示自己最大能保存多少数据cwnd(congetion Window)拥塞窗口:接受窗口只能表示个体自己的网络情况,不能表示网络路由器等设备的状况,所以引入了拥塞窗口的...
2020-03-29 00:45:15
673
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 从对象头的两个字宽解析对象的4种状态,锁信息,分代信息 和分析锁升级的过程
什么是元数据:解析数据的数据叫元数据,Java里面有4种类型的元数据,类,接口,枚举,注解,对象的元数据,就是处于方法区的类型对象信息什么是CAS指令:CAS (Compare And Swap) 指令是一个CPU层级的原子性操作指令,Lock接口底层实现不是通过synchronized实现的lock的实现完全是由java写的,和操作系统或者是JVM虚拟机没有任何关系。整体来看Lock主...
2020-02-12 18:40:27
379
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 分布式学习路线知识点总结
(集群,分布式,微服务区别就不多说了)知识点分为好几个大点:1.集群中负载均衡2.分布式数据库(重要是分布式事务)3分布式缓存4.分布式消息队列(每个服务之间如何通信的,如阿里的rocketMQ)5.分布式文件系统(下面简单的总结一下知识点之间的联系,后补充)现在看springcloub的微服务思路:客户端的请求首先经过负载均衡(Ngnix),再到达服务网关(Zuul 集群,一个负...
2020-01-30 22:33:04
787
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 图像处理的基本操作(灰度化,二值化)
基本的概念:图像的深度:图像中像素点占得bit位数,就是图像的深度,并不是每个像素点分配了多少位内存空间,就一定能够要用完,深度仅仅标识用于真真能表示颜色的位数,比如二值化图每一个像素点可能已经分配了8位,但是实际上只用到了1位,深度就是1二值图像:图像的像素点不是0 就是1 (图像不是黑色就是白色),图像像素点占的位数就是 1 位,图像的深度就是1,也称作位图。灰度图像:图像的像素点位于...
2019-12-02 16:28:33
2060
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 hashMap扩充机制总结
了解基本的概念和术语:数组链表结合体:每一个hashMap都是一个数组链表结合体,每一个数组的元素是一条链表桶:约定数组的每一个格元素称为桶bin:约定桶后面存放的每一个数据称为binsize:表示HashMap中存放KV的数量(为链表和树中的KV的总和)。这个size不可能大于capcity,因为一旦大于阈值就扩充resizecapcity:指HashMap中桶的数量。默认值为16。一...
2019-11-19 13:48:20
1241
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 套接字socket的理解
首先必须理解TCP的的11种状态,三次握手的作用,四次挥手的作用,为什么要有TCP,那就是HTTP的弊端,HTTP是一个释放连接的的的协议,是在应用层,其实它底层也是新建了TCP协议的来进行传输,只是短暂的任务完成即刻断开了,那么它底层的TCP也是断开的,当请求次数特别频繁时就有弊端,比如说聊天,实时信息。。。其次就是要了解端口和端点的区别,端点也可以理解为一个插口,是用TCP协议连接起来的两个...
2019-10-16 11:38:27
413
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 数据结构总结(十大排序,各种树详解)
**二叉排序树:**二叉排序树或者是一棵空树,或者是具有下列性质的二叉树:(1)若左子树不空,则左子树上所有节点的值均小于它的根节点的值;(2)若右子树不空,则右子树上所有节点的值均大于它的根节点的值;(3)左、右子树也分别为二叉排序树;(4)没有键值相等的节点。**平衡二叉树**平衡二叉树(Balanced Binary Tree)具有以下性质:它是一棵空树或它的左右两个...
2019-09-03 20:22:59
1344
2
原创 golang语言本身设计点总结
在了解golang的内存分配之前要知道什么事虚拟内存,虚拟内存是把磁盘作为全局大内存进行管理,内存是磁盘数据的高数缓存区。CentralCache:用于小对象的分配,线程之间可以共享了,当ThreadCache内存不够时会从这里进行申请分配,ThreadCache内存超过阈值进行内存回收时会归还给centralCache。答:线程是CPU执行调度的最小单位,goroutine是可以说是一种线程的执行流的结构格式,他是由MPG理论三个部分组成。ThreadCache:线程独有的,不能共享,用于小对象的分配。
2023-02-13 20:44:40
558
原创 vue学习笔记
/1.想要vue工作必须new一个vue对象出来,容器依旧符合html模板规范,只是加入了一些vue的语法例如双括号{{}},//5.{{}}是插值语法,使用在标签体内容读取插值,标签属性值得用指令语法v-bind:表示会把属性的值当做js语句来执行。5.{{}}是插值语法,使用在标签体内容读取插值,标签属性值得用指令语法v-bind:表示会把属性的值当做js语句来执行。//7.指令语法包括v-bind:,v-if:等等,他可以用于解析标签体内容,标签属性,标签事件等。
2022-09-21 12:03:31
930
原创 ES(elasticSearch学习笔记)
es是面向文档型的数据库,一条数据在es数据库就是一个文档,和关系型数据库做一个类比,es的索引类比关系型数据库的数据库,es的type类比数据表(7.0版本以上删除了type这个概念),es的文档document类比关系型数据库的行,es的字段类比关系关系型数据库的列。1.安装访问在本地es执行目录:/Users/liuqinhua/Desktop/错误/elasticsearch-7.6.2/bin执行可执行文件:./elasticsearch访问2.创建索引put请求。................
2022-08-19 19:13:59
9041
原创 k8s笔记4 ---数据存储详解
k8s的存储有很多种方式****1.使用指令在目录创建指定在目录下的所有文件都会被用在ConfigMap里面创建一个键值对,键的名字就是文件名,值就是文件的内容kubectl create configmap lqhcm1 --from-file=…/configmap/ -n space012.使用文件创建kubectl create configmap lqhcm2 --from-file=…/configmap/file3.txt -n space013.使用字面新建kubectl
2022-06-09 15:38:00
429
原创 k8s笔记3-----service详解
之前学下pod时,k8s集群所有node上的的pod在一个fennel搭建的一个互通的网络中,每一个pod的ip都是互通的,即使不同空间下的空间下。由kubectl exec 进入一个pod的容器里面ping不同命名空间的ip也能ping通得知。但是,service(即常说的svc)定义了一中抽象,是几个完全一样的pod(可能有多个副本的pod)的分组。这几个分组对外提供一种服务,也就是微服务。通过label-selector(一个或者多个标签)标识属于某一个svc。svc表示一种服务,有自己的一个虚拟i
2022-06-07 10:23:18
1710
原创 k8s笔记2----pod详解
参考1.pod容器1.一个Pod中运行一个容器。"每个pod中一个容器"的模式是最常见的用法2.在一个Pod中同时运行多个容器。一个Pod中也可以同时封装几个需要紧密耦合互相协作的容器,它们之间共享资源。这些在同一个Pod中的容器可以互相协作成为一个service单位。2.pause容器k8s解决同一个pod的所有容器共享资源问题一个Pod下的容器必须运行于同一节点上。现代容器技术建议一个容器只运行一个进程,该进程在容器中PID命令空间中的进程号为1,可直接接收并处理信号,进程终止时容器生命周期
2022-05-19 21:07:53
927
原创 K8s笔记1----入门基础与fannel网络
1.k8s网络通信方式1.k8s网络模型假设所有的pod都***在一个可以直接联通的扁平的网络空间里面***,在google compute engine 里面是现成的的网络模型。k8s假设这个网络已存在。而在私有云里面搭建k8s集群这个集群式不存在的,需要自己的实现这个网络,将不同节点pod里面的docker容器相互打通,然后运行k8s。2.a.同一个pod里面的容器共用一个叫pause的路由器容器,其他容器都挂载这里。个人理解pod这个节点默认内嵌了docker守护进程的所有服务b.各个pod之
2022-03-11 18:34:31
1583
原创 docker搭建redis集群实战
1.检查是否有redis镜像2.创建局域网redis注意:网络前缀一定要符合redis的配置文件docker network create redis --driver bridge --subnet 172.38.0.0/16 --gateway 172.38.0.13.宿主机shell写redis配置文件宿主机新建redis配置文件主要是为了和容器内的配置挂载(复制下面shell指令不能复制多done后面的空行)for port in KaTeX parse error: Undefined
2022-03-09 17:26:17
1718
原创 直播技术:nginx内加rtmp协议和hls协议
centos7上安装内嵌rtm协议和hlc协议的nginx1.内嵌rtmp协议和hlc协议的nginx从本机传到linx解压进入目录执行安装nginx指令:./release.sh -i启动nginxcd /usr/local/pingos/./sbin/nginx安装采集视频信息端obs从nginx拉去obs录入的视频流,可以按规则在浏览器中输入urlhttp(s)-flv http(s)????/ip/flv/流名hls http(s)????/ip/hls/流名.m3
2021-12-30 11:58:06
1843
原创 goland里面的堆,栈,队列
go语言里面都没有像java里面有现成的set,stack,和优先队列,都需要自己去实现或者封装contain下的list和heap,然后再使用,set的话使用map。Java里面的优先队列是很好用的,要是面试写LeetCode,可以考虑放弃goland语言,使用java直接看代码package mainimport ( "container/heap" "container/list" //"container/list" "fmt")/** * @Author: liuqin
2021-12-28 20:17:47
445
原创 go学习笔记
1.go数据类型2.声明变量var 声明可以不加类型但是必须初始化,不初始化就要声明变量类型;:=的用法:3.常量常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型。const identifier [type] = value你可以省略类型说明符 [type],因为编译器可以根据变量的值来推断其类型。显式类型定义: const b string = “abc”隐式类型定义: const b = “abc”常量的枚举:const (Unknown = 0
2021-07-14 10:51:13
253
原创 2021-07-02PHP学习笔记
1.单引号和双引号区别单引号串和双引号串在PHP中的处理是不相同的。双引号串中的内容可以被解释而且替换,而单引号串中的内容总被认为是普通字符举例看下:$foo = 2;echo “foo is $foo”; // 打印结果: foo is 2echo ‘foo is $foo’; // 打印结果: foo is $fooecho “foo is $foo\n”; // 打印结果: foo is 2 (同时换行)echo ‘foo is $foo\n’; // 打印结果: foo is $foo
2021-07-12 11:07:11
267
3
原创 复杂SQL总结
groud by 和聚合函数查询出来的字段必须是在 groub by后面的groub by 语句 因为在select指定的字段要么就要包含在Group By语句的后面,作为分组的依据;要么就要被包含在聚合函数中参考如何查出每科分数最高的学生用and 和where过滤jion on语句查出来的记录的区别where会把 具有具有Null的过滤掉 and则不会,有点难说明参考下文参考如何过滤关联删除,同时删除多张表的记录也用到jion on参考...
2020-09-12 11:32:10
151
原创 大文件上传总结
上次被面试官问了excel文件上传文件太大怎么办?当时哑口无言,现在做一个总结。文件上传的策略有问常用的的formdata表单(是一种异步上传),但是这个是一次性上传的,失败了就会重新上传,这个策略会经常超时,一旦网络不好或者文件太大就会失败,更不能断点续传,像百度网盘那样子可以暂停上传然后再重新开始。网上还有的说把文件内容编码成一个字符串传过去相当于加码(利用例如base64编码)然后接收端解码就行,但是这种方案加码后的数据体积比原来的体积还大,所以一般不采取。直接获取文件的二进制内容传输,但是这种
2020-07-12 18:04:11
328
原创 mysql的Extra的4个属性Using index UsingWhere 和Index Condition Pushdown
mysql 可分为两层server层和存储引擎层,server层又包括:连接器,解析器,优化器,执行器四个重要的层次。。回表是从server层再次访问存储引擎的过程。使用索引在查询的时候存储引擎返回到server层的数据是整个索引的关键字,如果用户要的数据字段就是索引的字段,即覆盖了,Extra的字段就会有Using Index,表示不需要回表了。但是即使存储引擎返回的数据在server层也会有可能被再次被server层过滤再返回给用户,根据是否server层进行过滤Extra会有无Using where
2020-05-15 18:50:37
819
2
原创 日常面试题记录
switch比较支持哪些类型来做面试题啊,老铁们~下面的switch语句中,x可以是哪些类型的数据:()switch(x){default:System.out.println(“Hello”);}A、longB、charC、floatD、byteE、doubleF、Object
2020-05-12 16:55:42
251
原创 执行构造函数时内存的变化 和 equal也是比较hashcode为什么却值相同就是true
栈帧(操作数栈,局部变量表,动态链接,返回地址)这四部分组成,每一个方法对应一个栈帧,栈帧之间压栈出栈,程序计数器只会在栈顶的栈帧运行,操作数栈的指令也是按照压栈出栈来执行的(后缀表达式执行)。无论是堆上的还是栈上的,基本上归根到底都是由8种元数据组成,布尔,数值,字符char等,具体这些数据是在那里放着,**由你声明的地方决定,**看下面代码public class Test { p...
2020-04-24 18:19:07
199
原创 Redis缓存的三个经典问题:缓存穿透,缓存雪崩,缓存击穿
缓存穿透:客户端要求访问一个redis中没有的key值,此时缓存就相当于没有任何意义,相当于穿过了缓存这层膜。缓存预热就是在系统上线之前把热点数据加载到redis数据库。缓存雪崩设置了相同过期时间的大量的key瞬间集体过期,这些数据的访问全部来到了数据库,瞬间增大了数据库的压力,像雪崩一样,大量缓存瞬间失效,这个会造成数据库有周期性的压力缓存击穿某一个key一个认杠了很多的高并发,当它失...
2020-02-01 18:59:54
180
原创 密码学基本的概念
基本概念密钥:发信方(加密)和接受方(解密)的自己独有的算法,不能被外界知道的明文:没加密的信息密文:加了密的信息所以说md5不能说是一个密钥,他只是一个散列函数,可以用来加密的函数,输出信息是唯一的,不可逆的(其实是可逆的),传输东西必须要加密了还要解密的,并且密钥是由参与了这次信息传输的双方使用,其他人是不能知道的,md5全世界都知道,不会用来作为密钥的,双方自己商讨好写一个算法只有自...
2019-12-17 16:41:33
273
原创 cookie和session的详解
cookie是由服务端颁发的一段信息,以文本存在浏览器中,浏览器每访问一个网站一般都会新建一个文本来存储该网站的cookie,这个是这个网站服务端给你的通行证,可以辨别是哪一台电脑(IP),而session是存在服务端的信息,也适用于这个系统访问的所有客户端唯一辨别信息,可能存在不辩别客户端电脑(IP)的信息,不会重复超详细的文章转发...
2019-12-16 21:57:01
124
原创 git基本指令
初始化远程仓库的步骤:git init//初始化本地仓库git checkout -b hugh//新建本地分支git add .//添加当前文件夹本地的文件夹的东西添加到本地分支的栈存区git commit -m “本地分支名字” ///提交到本地仓库git remote add origin url //关联远程仓库git push origin “远程分支名称”:提交到远程分...
2019-12-15 15:13:29
118
原创 内存管理的4种方式,内存分区4种选择算法和3种常见缓存算法的总结
内存管理:这个是系统进程要干的活,对于不同的操作系统选用哪一种管理方式是不一样的,但是现在基本不用分区管理的内存分配算法,大体来说分为:连续式分配 与 非连续式分配顾名思义连续式分配就是把所以要执行的程序 完整的,有序的 存入内存,连续式分配又可以分为固定分区分配 和 动态分区分配非连续式分配就是把要执行的程序按照一定规则进行拆分,显然这样更有效率,现在的操作系统通常也都是采用这种方式分配内...
2019-12-04 12:45:46
3793
原创 mybatis的${}存在的危险sql注入问题
参考文献什么是sql预编译sql 预编译指的是数据库驱动在发送 sql 语句和参数给 DBMS 之前对 sql 语句进行编译,这样 DBMS 执行 sql 时,就不需要重新编译。预编译阶段可以优化 sql 的执行。预编译之后的 sql 多数情况下可以直接执行,DBMS 不需要再次编译,越复杂的sql,编译的复杂度将越大,预编译阶段可以合并多次操作为一个操作。{}与${}的区别:#相当于...
2019-11-23 00:29:05
1833
原创 一张图看懂IO类之间的关系
四大基类Java的IO包下的IO流分为两种:输出流和输入流,每一种流根据它操作的对象(字符或者字节)的不同分为字节流和字符流:就有了4种:字节输出流OutputStream,字节输入流InputStream,字符输出流Writer,字符输入流Reader。。。FIle类于IO类无关File类代表与平台无关的文件和目录,他可以操作文件或目录,比如 File能新建、删除、重命名文件和目录,Fi...
2019-11-11 18:23:47
352
原创 三种动态代理和三种工厂模式,单例模式
工厂模式:一种把创造(实例化)各种类类对象的工作抽出来的思想简单的工厂模式:也叫静态的工厂模式,因为这个工厂类就办一件事创建实例化对象,方法可以定为static类型;工厂方法模式:把实例化类的工作抽象成一个抽象方法,让实现这个抽象方法的类来完成实例化的工作,抽象工厂模式:把实例化对象的工作抽象成一个接口,让实现这个接口的类去完成实例化工作:代理:一句话说完,把调用某个类方法的工作(办...
2019-11-06 21:21:42
886
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人