自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 kafka学习笔记

kafka学习笔记

2022-07-29 17:03:47 353 1

原创 读书笔记-java开发手册

java开发手册读书笔记

2022-07-04 19:22:28 223

原创 计算机网络

计算机网络OSI七层协议:三次握手 & 四次挥手TCP&UDPTCP 与UDP的区别TCP如何保证传输可靠性ARQ协议拥塞控制URL输入后HTTP & HTTPSHTTP长连接和短链接cookie和session的区别HTTP1.0 VS HTTP1.1HTTP VS HTTPS补充http报文内容,和tcp的关系HTTP GET 和POST的区别OSI七层协议:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层;应用层:HTTP ,HTTPS,FTP,DNS传输层:

2021-09-10 16:00:57 123

原创 遇到的有个性的面试题(不定时更新)

Q1. RR级别下能解决幻读嘛A1:平常情况下RR存在幻读问题;但在InnoDB下,幻读是可以解决的,但解决的不是很完美。首先是可以通过加锁阻塞另一个线程的insert,也就是next-key。也也可以通过MVCC快照读,但MVCC存在一定的缺陷,也就是一旦某个事务的修改曹组覆盖到了其他事务的插入的“幻行”,就还是会出现幻读现象。...

2021-08-24 10:03:43 71

原创 多线程之锁

提高锁性能减少锁持有时间减小锁粒度用读写分离所代替独占锁锁分离锁粗化:把多个锁的操作整合成对锁的一次请求,减少对锁的请求的次数。锁优化锁偏向:对加锁的优化:如果一个线程获得了锁,那么锁就进入偏向模式。当这个线程再次请求锁事,无需再做任何同步操作。所以几乎没有锁竞争场合。-XX:+UseBiastedLocking 开启偏向锁。但是当在竞争激烈的场合,即每次都是不同的线程请求相同的锁,这时候偏向锁就会失败。轻量级锁:偏向锁失败,线程不会立即挂起,而是使用轻量级锁进行优化。...

2021-08-11 15:55:15 62

原创 多线程知识点整理

多线程基础并发相关概念死锁饥饿活锁并发级别JMM:java的内存模型指令重排进程 VS 线程线程的生命周期基础并发相关概念并行与并发:并行:表示两个或多个任务一起执行;并发:多个任务交替执行。临界区临界区表示一种公共资源或者共享数据,可以被多个线程使用,但每次只能有一个线程使用它。临界区一旦被占用,其他线程就必须等待这个资源的释放。阻塞和非阻塞阻塞:线程等待资源释放,就是被阻塞了。非阻塞:没有一个线程可以妨碍其他线程的执行。死锁只两个或两个以上的线程在执行过程中,因为争夺

2021-08-10 15:22:04 100

原创 JVM知识点整理

这里写目录标题java运行时区域线程私有区域线程共享区域其他说明对象的创建过程垃圾收集器和内存分配策略判定对象存活的方法关于引用判断对象死亡的过程方法区的回收垃圾回收算法垃圾收集器java运行时区域线程私有区域程序计数器程序计数器线程私有的,可以看做是当前线程所执行的字节码行号指示器。字节码解释器工作时就是用过这个程序计数器来选取下一条执行的字节码指令。因为一个处理器只能执行一个线程,所以线程切换时就是通过程序计数器来恢复到正确的执行位置。如果线程正在执行一个java方法,这个计数器记录的是正

2021-08-03 16:05:53 61

原创 Redis数据结构

SDS:简单动态字符串数据结构:杜绝缓存溢出:当需要对SDS进行修改时,会先检查SDS的空间是否满足要求,如果不能,就会自动将SDS的空间扩展至所需大小,在执行修改工作。内存分配策略3.1 空间预分配(用于优化SDS的增长操作)如果SDS空间需要扩展,redis不仅会给SDS分配所需的空间,还会额外分配未使用的空间。未使用空间的大小由SDS的长度决定。如果SDS长度小于1MB,则未使用空间free = 使用空间len;如果大于1MB,则每次分配1MB的未使用空间。3.2 惰性空间释放(用于

2021-08-02 10:27:37 65

原创 Mysql面试题整理

Q1. MVCC是什么?如何实现?A1. MVCC:多版本并发控制。MVCC维持一个数据的多个版本,使得读写没有冲突。MVCC的实现依赖于:3个隐式字段+undo日志+Read View3个隐式字段:DB_TRX_ID:最近修改(包括插入的)事务ID,记录创建这条记录或者最后一次修改该记录的事务ID;DB_ROLL_PTR:回滚指针。指向这条记录的上一个版本。DB_ROW_ID:隐含的自增ID(隐藏主键)。如果数据表没有主键,InnoDB会自动以DB_ROW_ID产生一个聚簇索引。还有一个删

2021-07-27 18:50:13 112

原创 Java反射的学习

反射的概念java类的执行过程编译:java文件通过编译生成一个.class文件。加载:通过类的权限定名获取定义此类的二进制流;将这个字节流所代表的静态存储结构转换成方法区的运行时数据结构;在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个累的各种数据的访问入口。连接--------------------------------------------验证:文件格式的验证;元数据验证;字节码验证;符号引用验证。验证字节流是否符合class文件规范,描述的信息是否符合

2021-07-27 13:32:55 51

原创 动态代理学习

静态代理代理模式概念:就是为其他对象提供了一个代理,用来控制对某个对象的访问。代理类主要负责为委托类(被代理类)预处理信息、传递消息给被代理类以及事后的时间处理等。动态代理动态代理是在运行时创建代理类。相关说明:代码例子:public interface Person { void work();}public class Actor implements Person{ @Override public void work() { Syst

2021-07-27 09:37:58 72

原创 计算机网络——应用层协议

应用层协议DNS域名结构域名解析过程HTTP协议URL & URI请求与响应HTTPSDNSDNS是一个分布式数据库。用于映射域名和IP地址,使人方便访问网址。有三个组成部分:域名空间和资源记录+域名服务器+解析器DNS是基于TCP和UDO协议的:用户到服务器采用UDP协议;DNS服务器通信采用TCP协议;域名结构域名层次例子顶级域名com ; net ; gov ; org ; edu …二级域名cctv; baidu; 360; google …

2021-07-22 13:31:13 238 1

原创 计算机网络——传输层协议

传出层协议TCPTCP的基本认识三次握手TCP四次挥手TCP相关TCPTCP的基本认识报文格式TCP特点TCP是一个面向连接的、可靠的、基于字节流的传输层通信协议。Q1:有一个 IP 的服务器监听了一个端口,它的 TCP 的最大连接数是多少?最大TCP连接数 = 客户端IP数 * 客户端的端口数;但限制于文件描述符和内存三次握手三次握手原因:可以阻止历史重复连接的初始化(主要原因): 由于网络延迟等复杂的原因,使得旧的数据包比新的数据包先到达,这是三次握手情况下,服务端接收到

2021-07-20 16:40:15 207 1

原创 计算机网络——网络层协议

ICMPICMP协议报文格式ICMP类型查询报文类型ping命令查询报文类型应用实现:trancerouteIP协议ARP,RARP协议ICMP协议概念:(Internet Control Message Protocol)网络控制报文协议:用于IP主机、路由器之间传递控制信息。即IP包是否送达目的主机,或者IP包在送达过程中被抛弃的原因和改善网络设置等。报文格式ICMP报文包含在IP数据包中,格式一般为:IP包头+ICMP报文ICMP类型ICMP类型可以分为差错报文类型 和 查询报文类型

2021-07-19 15:26:35 101

原创 MySQL——查询性能优化

慢查询优化1:优化数据访问从两个方向考虑:确认应用程序是否存在检索大量超过需要的数据确认MySQL服务器是否在分析大量超过需要的行数据是否向数据库请求了不需要的数据.典型案例查询不需要的数据:MySQL会先返回全部结果再进行计算,看上去像是只返回了需要的数据多表关联时返回全部的列:一般用不到全部的列,只取我们需要的列总是去除全部列:喜欢用select * 是一个不好的习惯!重复查询相同的数据:可以将重复使用的数据缓存起来MySQL是否在扫描额外的记录

2021-07-15 15:57:19 48

原创 MySQL——索引

索引的类型B-Tree索引索引在没有特别指明时,一般指B-Tree索引。B-Tree适用于:· 全值匹配:和索引中所有的列进行匹配;· 匹配最左前缀: 和索引的第一列进行匹配;· 匹配列前缀:可以只匹配某一列的值得开头部分;· 匹配范围值: 可以匹配某一列的一个范围;· 精确匹配某一列 且 范围匹配另外一列。限制:必须从最左列开始查找,且不能跳过索引中的某列,如果查询中有某个列是范围查询,则它右边的所有列都无法使用索引优化。–B+树:哈希索引...

2021-07-14 11:24:07 79

原创 MySQL——数据类型的优化

数据选择更小的通常更好:占用的磁盘、内存、CPU更少;简单就好,如整型比字符操作代价更低;尽量避免NULL尽量使用相同的数据类型存储相似或相关的值,尤其是关联条件使用的列。具体说明整型:TINTINT SMALLINT MEDIUMINT INT BIGINT分别使用8,16,24,32,64位内存。对于存储和计算来说,指定大小是没有意义的。实数类型:DECIMAL FLOAT DOUBLE :DECIMAL支持精确计算,占用空间较大,相对而言,FLOAT 和DOUBLE占用的空间较小,在

2021-07-12 16:31:30 115

原创 Redis设计与实现——Redis的发布与订阅

目录订阅频道——SUBSCRIBE模式订阅——PSUBCRIVE发送消息查看订阅信息:订阅频道——SUBSCRIBEstruct redisServer{ ... dict *pubsub_channels}字典的键是某个被订阅的频道,字典的值是一个链表,记录所有订阅这个频道的客户端。订阅命令 SUBSCRIBE退订命令:UNSUBSCIRBE如果某个频道对应的值为NULL,即没有客户端了,就会被删除这个键。模式订阅——PSUBCRIVEstrcut redisServer{

2021-07-08 15:38:26 105

原创 Redis设计与实现——Redis集群

集群相关概念节点槽指派键与槽的关联重新分片ASK错误相关概念集群:由一个或多个节点组成的,是Redis提供的分布式数据库方案。集群通过分片来进行数据共享,并提供复制和故障转移功能。节点:一个集群模式下的Redis服务器。槽:整个集群数据库分为16384个槽节点节点通过握手和响应握手来组成一个集群通过CLUSTER NODES 可以查看集群节点信息。节点启动Redis服务器在启动时根据 cluster-enable来决定是否开启集群模式。相较于普通的服务器,节点会将集群模式下需要的数据

2021-07-08 14:54:30 256

原创 Redis设计与实现——Redis Sentinel(哨兵)

概念由一个或者多个Sentinel实例组成的Sentinel系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器。并在被监视的主服务器进入下线状态时,自动将下线的主服务器属下的某个从服务器升级为新的主服务器,并由这个新的主服务代替已下线的主服务器继续处理命令请求。如果已下线的前主服务回复上线,则会被降级这新的主服务器的从服务器。一个Sentinel可以监视多个主服务器,一个主服务器也可以被多个Sentinel监视。Sentinel的初始化初始化服务器:Sentinel本质上是一个特殊模

2021-07-02 16:26:41 178

原创 Redis设计与实现——Redis主从复制

主从复制概念复制实现旧的复制实现(2.8以前)新的复制实现复制的实现概念主从服务器:假设有两台服务器,分别为:127.0.0.1:12345和127.0.0.1:6379127.0.0.1:12345> SLAVEOF 127.0.0.1:6379OK通过SLAVEOF命令,使得127.0.0.1:12345成为127.0.0.1:6379从服务器。即此时:从服务器(slave):127.0.0.1:12345主服务器(master):127.0.0.1:63792. 从服务器复

2021-07-01 15:04:48 57

原创 Redis设计与实现——Redis服务器

服务器命令请求过程具体实现过程serverCron函数初始化服务器命令请求过程以SET命令为例客户端向服务器发送:SET key value;——> 服务端接收并处理请求,并产生OK命令;——> 服务端向客户端发送命令回复OK;——> 客户端接收并打印具体实现过程客户端发送请求命令服务器执行命令服务端将命令回复发送给客户端serverCron函数serverCron函数默认每隔100ms执行一次更新服务器时间缓存struct redisSe

2021-06-30 15:32:15 75

原创 Redis设计与实现——Redis客户端

客户端客户端通用属性普通客户端的创建于关闭伪客户端客户端struct redisServer{ …… list *clients; ……}通用属性typedef struct redisClient{ …… //通用属性 int fd robj *name int flags sds querybuf robj **argv int argc struct redisCommand *cmd char buf[REDIS_REPLY_CHUNK

2021-06-29 16:44:22 168

原创 Redis设计与实现——Redis 事件

事件文件事件概念文件事件处理器文件事件的类型文件事件处理器时间事件分类组成实例:serverCon函数事件的调度与执行文件事件概念Redis服务器通过套接字与客户端(或者其他Redis服务器)进行链接,而文件事件就是服务器对套接字操作的抽象。服务器与客户端(或其他Redis服务器)的通信会产生相应的文件事件,而服务器则通过监听并处理这些事来完成一系列网络通信操作。文件事件处理器用于处理网络事件,以单线程方式运行。组成部分:套接字 + I/O多路复用程序 + 文件事件分派器 + 事件处理器。I/

2021-06-29 15:23:25 75

原创 Redis设计与实现——Redis 持久化

持久化Redis持久化概念:Redis持久化概念:什么是持久化:因为Redis是内存数据库,它将自己的数据库状态存储在内存中,如果进程一旦退出aaa

2021-06-28 15:57:04 57

原创 Redis设计与实现——Redis 数据库知识点整理

Redis 数据库知识点整理Redis 数据库整理1. Redis服务器默认创建16个数据库2. 切换数据库3. 数据库中值得保存——以键值对形式保存4. 读写键空间时的维护操作5. 键的生存时间和过期时间6.过期键的判定:7.过期键的删除策略Redis 数据库整理1. Redis服务器默认创建16个数据库db 是一个数组,保存服务器中所有的数据库dbnum 表示需要创建的数据库数量2. 切换数据库SELECT 2 //表示选择的数据库这时,clientServer中的db就会指向db[

2021-06-25 16:56:12 143

原创 Redis学习一

Redis学习Redis的作用:用作缓存:与Memcached相比,首先Redis支持的数据类型更丰富;第二Redis支持数据持久化;第三:Reids有灾难恢复机制;第四:Memcached 过期数据的删除策略只用了惰性删除,而 Redis 同时使用了惰性删除与定期删除。事件发布或订阅高速队列Redis数据结构:基本数据类型:String ; Hash ; Set ; List ; SortedSet;bitmap其他: HyperLogLog; Geo; Pub/SubRedis Mo

2021-06-08 16:19:58 67

原创 String, StringBuffer, StringBuilder区别

String, StringBuffer, StringBuilder1.StringString具有不可变性,是固定长度的,底层是用final修饰的char型数组:String设置为不可变原因:1.1 运行时常量池的需要:如果常量池已存在所需string数据,就可以直接调用而不需要重新创建,从而节省了空间。1.2 可以保证String数据的hashcode是唯一的。1.3 String的不可变可以使得多个线程共享而不会出现问题,保证了线程安全。1.4 平时我们需要的登录用户名,密码也不会

2021-03-24 14:21:59 49

原创 基于XML的MyBatis的环境搭建(IDEA)

基于XML的MyBatis的环境搭建(IDEA)主要步骤可概括为创建一个Maven导入依赖编写你一个你需要的实体类和一个持久层接口编写一个SqlMapConfig.xml编写映射配置文件编写测试类测试学习了黑马的mybatis第一天总结主要步骤可概括为创建一个Maven这里选择maven,然后直接点击next填入自己的工程名,点击Finish,一个maven工程就创建好了。导入依赖在pom.xml中,导入需要的依赖。编写你一个你需要的实体类和一个持久层接口以User为了(为了实现对数

2020-11-09 14:18:35 108

原创 java 实现mysql 8.0 链接(错误解决)

java实现mysql 8.0链接一开始的时候,驱动仍旧选择了5.0+的旧版本,导致出现错误!!这是因为MySQL8.0 版本的身份验证方式为“caching_sha2_passwoed”,而MySQL 5.0 使用的身份验证方式为“mysql_native_password”然后网上查到这个原因之后,我就下载了8.0的驱动:下载链接:链接:https://pan.baidu.com/s/1Dl8Qcxg1gudVHaDA088bsg提取码:3b05然后将驱动5.0换成了这个版本;之后我又

2020-06-11 11:32:43 258

原创 LeetCode 1313题

LeetCode解题 第1313题 解压编码列表题目:给你一个以行程长度编码压缩的整数列表 nums 。自己的思路:别人家的代码 ——简洁高效!题目:给你一个以行程长度编码压缩的整数列表 nums 。考虑每对相邻的两个元素 [freq, val] = [nums[2i], nums[2i+1]] (其中 i >= 0 ),每一对都表示解压后子列表中有 freq 个值为 val 的元素,你需要从左到右连接所有子列表以生成解压后的列表。请你返回解压后的列表。来源:力扣(LeetCode)链接:h

2020-05-22 15:51:46 124

原创 LeetCode解题1365

leetcode 解题 第1365题,有多少小于当前数字的数字题目:给你一个数组 nums,对于其中每个元素 nums[i],请你统计数组中比它小的所有数字的数目。第一种思路:第一直觉(暴力解决!!)第二种思路:看了别人的解答,高效好用!题目:给你一个数组 nums,对于其中每个元素 nums[i],请你统计数组中比它小的所有数字的数目。换而言之,对于每个 nums[i] 你必须计算出有效的 j 的数量,其中 j 满足 j != i 且 nums[j] < nums[i] 。以数组形式返回答案。

2020-05-22 15:40:25 196

原创 力扣题目,宝石与石头

宝石与石头宝石与石头题目及思路我的答案官方答案宝石与石头你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。题目及思路给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头。 S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。J...

2020-01-09 08:58:00 154

空空如也

空空如也

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

TA关注的人

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