自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java基础知识总结

1.JVM,JRE,JDK区别2.基本数据类型区别3.访问修饰符访问修饰符 public,private,protected,以及不写(默认)时的区别定义:Java中,可以使用访问修饰符来保护对类、变量、方法和构造方法的访问。Java 支持 4 种不同的访问权限。分类private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)default (即缺省,什么也不写,不使用任何关键字): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。protec

2022-06-15 14:32:51 122

转载 Kafka如何处理消息积压?

消息队列

2022-06-08 21:30:32 1232 1

原创 操作系统笔记

1.同步和异步的区别?同步和异步的关注点是一种消息通信机制同步就是在发出一个调用时未得到返回结果之前,这个调用就不会返回,一旦返回就得到返回值调用者主动等待调用的结果而异步在发出调用后并不会立即得到返回结果,调用发出后被调用者通过状态,回调函数等等来通知调用者这个返回结果2.阻塞和非阻塞的区别?关注的是程序在等待调用结果时的一种状态阻塞调用是指结果返回之前当前线程会被挂起,调用线程只有得到结果后才会返回非阻塞调用是不得到返回结果之前这个调用不会阻塞当前的线程.(线程自身偶尔轮询一下结果…)

2022-04-19 20:20:37 129

原创 2022.3.30(ConcurrentMap)

一.多线程同步的机制总体上是4个部分:1.临界区2.信号量3.互斥量(synchrionzed)4.事件(notify)二.ConcurrentHashMap如何保证线程安全1.数组初始化如何保证安全?cp运用了自旋保证一定可以初始化成功,同时通过CAS设置sizectl变量(-1表明有线程在创建table)的值确保只有一个线程对数组初始化.2.put时如何保证?I.自旋死循环保证一定可以新增成功.II.如果当前数组下标位置时空的,可以通过CAS新增确保这个位置没有被其他线程所赋值

2022-03-31 20:37:45 119

原创 Redis哨兵

sentinel,中文名是哨兵。哨兵是 Redis 集群架构中非常重要的一个组件,主要有以下功能:集群监控:负责监控 Redis master 和 slave 进程是否正常工作。消息通知:如果某个 Redis 实例有故障,那么哨兵负责发送消息作为报警通知给管理员。故障转移:如果 master node 挂掉了,会自动转移到 slave node 上。配置中心:如果故障转移发生了,通知 client 客户端新的 master 地址。...

2022-03-30 11:33:59 128

原创 零拷贝知识

1.什么是零拷贝?零拷贝指计算机执行操作时,CPU不需要先将数据从某处内存复制到另外一个区域通俗地讲零拷贝就是避免CPU将数据从一个区域拷贝到另一个区域的技术零拷贝可以有效地提高数据传输效率.正常的文件从磁盘拷贝到内存中我们需要四次内核态与用户态上下文的切换,同时又4次的文件拷贝read():指系统调用的过程中把内核缓冲区的数据拷贝到用户的缓冲区write():操作系统将内核缓冲区的数据拷贝到socket缓冲区中.改进:使用mmp()把内核缓冲区的数据映射到内存空间这样就减少了一次文件拷贝的

2022-03-26 19:13:04 367

原创 项目后端技术点总结

2.为什么用nacos替代了Eureka?首先naco=Eurka+Spring cloud config其次Eurka在2000年就停止维护了,nacos效率要更高3.**Nacos:**作为注册中心,通过一个微服务调用另外一个微服务,必须将微服务都注册才行作为配置中心:统一管理配置文件,切换命名空间**Feign:**服务调用,项目中一个微服务调用的另外一个服务在项目中我们是如何调用的?eg:课程微服务中我们调用vod获取播放凭证或者在课程这个微服务中调用orders看课程是否...

2022-03-24 21:49:35 990

原创 构建大顶堆的过程示意图

2022-03-24 14:16:18 201

原创 IOC底层原理

1.原始方式去new一个UserDao,耦合度太高2.利用工厂模式

2022-03-23 14:47:14 62

原创 2022.3.21深信服面试记录

1.关于僵尸进程和孤儿进程僵尸进程:当进程退出但是父进程并没有调用wait或waitpid获取子进程的状态信息时子进程的PCB就会一直驻留在内存中,就会产生僵尸进程孤儿进程:孤儿进程则是指当一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。2.Linux杀死进程kill -9 pid 强制杀死一个进程kill -15 pid 正常杀死一个进程查找指定进程格式:ps -ef |

2022-03-23 11:29:14 563

原创 什么是跨域脚本攻击?

跨域脚本攻击又叫XSS攻击,属于客户端攻击,攻击者在我们的网页中嵌入恶意脚本,当用户使用浏览器浏览被嵌入恶意脚本的网页时,脚本就会在我们的浏览器中执行.XSS攻击的核心是脚本XSS可以分为以下三类:1.反射型(非持久型)当用户访问了一个网站A,攻击者在这个网站中嵌入了恶意的脚本用于盗取客户的cookie信息.攻击者诱导用户触发XSS攻击(诱导用户点击非法链接)这样攻击者就获取了用户的身份信息对其进行非法的操作2.持久型持久型的XSS的攻击是很危险的,一旦攻击成功造成大规模XSS攻击,如XSS蠕

2022-03-16 17:12:51 6549

原创 2022.3.16SQL优化

1、网络中进程之间如何通信?本地的进程间通信(IPC)有很多种方式,但可以总结为下面4类:消息传递(管道、FIFO、消息队列)同步(互斥量、条件变量、读写锁、文件和写记录锁、信号量)共享内存(匿名的和具名的)远程过程调用(Solaris门和Sun RPC)2.如何排查慢SQL?I.分析语句是否又不必要的字段II.查询是否命中索引等等III.如果表数据量太大,考虑分表3.如何优化sql?优化表结构:尽量使用数字型字段,id不要char类型。尽量用varchar代替char,当索引含有大

2022-03-16 16:56:07 925

原创 SpringMVC知识点

1.什么是MVC?Model(模型):数据模型,提供要展示的数据,因此包含数据和行为,可以认为是领域模型或JavaBean组件(包含数据和行为),不过现在一般都分离开来:Value Object(数据Dao) 和 服务层(行为Service)。也就是模型提供了模型数据查询和模型数据的状态更新等功能,包括数据和业务。View(视图):负责进行模型的展示,一般就是我们见到的用户界面,客户想看到的东西。Controller(控制器):接收用户请求,委托给模型进行处理(状态改变),处理完毕后把返回的模型数据返

2022-03-15 21:35:46 186

原创 ReentrankLock的底层原理

底层是由AQS+CAS来实现的AQS的同步状态——StateReentrantLock的基本实现可以概括为:先通过CAS尝试获取锁。如果此时已经有线程占据了锁,那就加入AQS队列并且被挂起。当锁被释放之后,排在CLH队列队首的线程会被唤醒,然后CAS再次尝试获取锁...

2022-03-15 10:00:15 1857

原创 Redis实现消息队列

**List**首先List是十分适合做消息队列的数据结构存在问题:队列为空时,while死循环消费者频繁的拉取消息造成大量CPU资源的浪费,改进:当队列为空的时候,消费者可以休眠一会,这样避免了资源的大量浪费问题又来了,当消费者休眠时,消息来了,引发延迟,又改怎么办?鱼和熊掌不可兼得,总是存在问题Redis存在这样一种阻塞式BRPOP机制,使用这种机制的时候,没消息的时候阻塞等待,有消息的时候再去获取但是...

2022-03-13 20:44:02 2483

原创 undolog,redolog,binlog

undolog:数据被修改之前的样子,事务回滚的操作redo log 日志文件:记录数据被修改后的样子。redo log是 InnoDB 存储引擎特有的日志文件(特有的)binlog:二进制的文件,记录整个操作的过程,bin log属于是 MySQL 级别的日志undo log一般是逻辑日志,根据每行记录进行记录。(2)redo log 适用于崩溃恢复,bin log 适用于主从复制和数据恢复(3)redo log 记录的东西是偏向于物理性质的,如:“对什么数据,做了什么修改”。bin log是偏

2022-03-11 15:44:17 99

原创 CAP理论

CAP理论指的是C一致性,A可用性,P分区容错性只能同时满足其中2个,三个不能同时满足Consistency (一致性):“all nodes see the same data at the same time”,即更新操作成功并返回客户端后,所有节点在同一时间的数据完全一致,这就是分布式的一致性。Availability (可用性):可用性指“Reads and writes always succeed”,即服务一直可用,而且是正常响应时间。Partition Tolerance (分区容错

2022-03-05 17:40:50 47

原创 SpringBean生命周期

首先Java对象和Spring所管理的Bean实例化过程不同在Java中1).java文件被编译成.class文件2)等到类需要被初始化时(new,反射).calss文件被虚拟机通过类加载器加载3)初始化对象供我们使用在Spring中会用BeanDefinition的实例来描述对象的信息Bean的加载过程1.注册BeanFactory后置处理器2.通过BeanFactory后置处理器扫描出所有需要spring管理的类3.通过BeanFactory后置处理器封装成BeanDefinitio

2022-03-04 16:25:33 144

原创 Synchronized原理

1.什么是Synchronized?Synchronized是一种互斥锁,一次只能允许一个线程进入被锁住的代码块Synchronized是Java的一个关键字,能够将代码块,方法锁起来情况有三种:如果Synchronized修饰的是实例方法,锁的是对象实例如果Synchronized修饰的是静态方法,锁的是class实例如果Synchronized修饰的是代码块,锁的是传入Synchronized的对象实例2.Synchronized的原理当修饰方法时依靠ACC-Synchronized来标

2022-03-03 21:06:28 323

原创 Java线程池

1.为什么要有线程池?在一个应用程序中,我们需要多次使用线程,也就意味着,我们需要多次创建并销毁线程。而创建并销毁线程的过程势必会消耗内存。而在Java中,内存资源是及其宝贵的,所以,我们就提出了线程池的概念。首先线程是很宝贵的资源,不断的创建线程会造成资源的大量浪费引发oom线程池能够降低资源的消耗,任务可以不需要等到线程创建就能立即执行(速度快),同时提高的对资源的可管理性2.如何创建线程池?创建时我们用ThreadPoolExecutor类public ThreadPoolExecutor

2022-03-02 11:12:48 183

原创 SpringCloud笔记

1.什么是springcloud?Springcloud是一个微服务框架,提供了一套包括服务注册,服务发现,负载均衡,配置中心等一系列的微服务一站式解决方案2.什么是Eureka?Eureka是基于REST(代表性状态转移)的服务,是一个服务发现框架类似于alibaba的Nacos,拥有服务发现,服务注册,服务续约,服务下线等的功能的框架.Springclou的·服务注册框架3.什么是Ribbon?首先。什么是RestTemplate?RestTemplate是Spring提供的一个访问Http

2022-02-28 11:23:07 31

原创 二叉树的最近公共祖先

传统思路:1.用HashMap记录每一个节点和其父节点2.记录Node1向上的链3.从node2开始向上寻找第一个和node1链中汇聚的点,该点就是最近的公共祖先public Node lowestAncestor2(Node head,Node o1,Node o2){ //找到来个节点向上的第一个汇聚点就是LCA, // fatherMap记录每一个节点的父节点 HashMap<Node ,Node >fatherMap=new Ha

2022-02-15 17:53:53 586

原创 SpringAOP实现原理

AOP(Aspect-OrientedProgramming):面向切面编程AOP,一般称为面向切面,作为面向对象的一种补充,用于将那些与业务无关,但却对多个对象产生影响的公共行为和逻辑,抽取并封装为一个可重用的模块,这个模块被命名为“切面”(Aspect),减少系统中的重复代码,降低了模块间的耦合度,同时提高了系统的可维护性。可用于权限认证、日志、事务处理。讲将验证用户提取出来2.AOP使用场景:AOP用来封装横切关注点,具体可以在下面的场景中使用:Authentication 权限Cachi

2021-12-28 10:15:46 142

原创 HashMap与ConcurrentHashMap

HashMap:HashMap在1.7版本中默认为数组+链表,并且采用的是头插法.而在1.8版本中对哈希冲突的解决有了改变,当链表的长度大于阈值(8)时,会自动讲链表转化为红黑树提高其搜索效率,采用尾插法.HashMap默认的初始化大小为 16。当HashMap中的元素个数之和大于负载因子*当前容量的时候就要进行扩充,容量变为原来的 2 倍。(这里注意不是数组中的个数,而且数组中和链/树中的所有元素个数之和!)ConcurrentHashMap:在1.7版本中是分段的数组加链表,jdk1.8的时候

2021-12-27 17:44:24 375

原创 Redis的5种基本数据结构

一、String类型String数据类型是Redis中最基本的数据类型,是key-value的对应形式,redis中的string可以包含任何类型的数据,数字,字符串,图片等等使用:get 、 set 、 del 、 incr、 decr 等适用场景:缓存: 经典使用场景,把常用信息,字符串,图片或者视频等信息放到redis中,redis作为缓存层,mysql做持久化层,降低mysql的读写压力。二、Hash类型本身是一个HashMap,一种键值对的形式,field对应value使用:所有h

2021-10-31 10:42:41 3429

原创 MySQL隔离级别

1.读未提交:隔离级别最低。脏读,幻读,不可重复读都有可能发生。但性能高2.读已提交:它保证了事务不会出现中间状态的数据,所有数据都是已提交且更新的,解决了脏读的问题。但读已提交级别依旧很低,它允许事务间可并发修改数据,所以不保证再次读取时能得到同样的数据,也就是还会存在不可重复读、幻读的可能。3.可重复读:MySQL InnoDB 引擎的默认隔离级别,保证同一个事务中多次读取数据的一致性,解决脏读和不可重复读,但仍然存在幻读的可能。4.可串行化不会出现任何问题。 事务 A 操作数据库时,事务

2021-09-28 19:29:18 57

原创 B树和B+树的区别

1.B树每个节点都会有数据域和关键字,而B+树是在非叶子节点是没有数据域的,所有数据与都在叶子节点中,并且各个叶子节点之间通过指针相连接。2.B+树查找起来更加稳定,时间复杂度为logN级别,但是B树时间复杂度有可能是O(1)级别,适合随机检索。主要原因是因为答案有可能在树中的任何位置找到,同样时间复杂度可能会更高高于logn级别3.B树更适合查找某一频繁出现的数据,同时B树无法进行范围查找,而B+树可以进行范围查找,只需要找到叶子节点最小的数据然后通过链表O(N)的时间复杂度就能查找整个数据的范围。

2021-09-27 19:40:58 620

空空如也

空空如也

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

TA关注的人

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