自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 sql优化方法

在使用子查询时,尽量使用EXISTS代替IN,EXISTS只关心是否存在记录,而IN会将子查询的结果集加载到内存中,可能导致性能问题。是两个集合中所有可能的有序对的集合,而在数据库查询中,它指的是两个或多个表中的每一行都与另一个表中的每一行组合。1.使用索引,在创建索引时,需要考虑查询的频率和数据的更新频率,避免过度索引或不必要的索引。1.在查询数据时,尽量避免使用%通配符在查询字段的开头,这会导致索引失效,需要进行全表扫描。1.在查询大量数据时,使用LIMIT可以限制返回的记录数,避免查询过多的数据。

2024-06-25 12:57:40 858 1

原创 web攻击

常见的web攻击类型Java泛型的实现原理

2024-06-24 14:37:11 123

原创 多线程leetcode编程题

假设线程A已经拥有了某个对象(不是类)的锁,而其它线程B、C想要调用这个对象的某个synchronized方法(或者代码块), 由于B、C线程在进入对象的synchronized方法(或者块)之前必须先获得该对象锁的拥有权,而恰巧该对象的锁目前正被线程A所占用,此时B、C线程就会被阻塞,进入一个地方去等待锁的释放,这个地方便是该对象的锁池。假设线程A调用了某个对象的wait()方法,线程A就会释放该对象的锁,同时线程A就进入到了该对象的等待池中,进入到等待池中的线程不会去竞争该对象的锁。

2024-06-07 17:01:05 547

原创 消息队列常见面试题

这两个操作发生了两次系统调用,每次系统调用都得先从用户态切换到内核态,等内核完成任务后,再从内核态切换回用户态,也就是消息发送过程中一共发生了 4 次用户态与内核态的上下文切换。要想提高文件传输的性能,就需要减少【用户态与内核态的上下文切换】和【内存拷贝】的次数。通过上面的分析可以看出,第2、3次拷贝(也就是从内核空间到用户空间的来回复制)是没有意义的,数据应该可以直接从内核缓冲区直接送入Socket缓冲区。CPU把数据从用户缓冲区拷贝到内核的网络驱动的 socket 缓冲区;read:读取本地文件内容;

2024-06-06 16:48:51 195

原创 java基础面试题

因为参数的地址都指向同一个对象,所以我们也称之为"传共享对象",所以,如果在被调函数中改变了形式参数的值,调用者是可以看到这种变化的。Map 是键值对映射容器,与 List 和 Set 有明显的区别,而 Set 存储的零散的元素且不允许有重复元素(数学中的集合也是如此),List是线性结构的容器,适用于按数值索引访问元素的情形。因为传共享对象调用的过程和传值调用的过程是一样的,而且都有一步关键的操作,那就是"复制",所以,通常我们认为传共享对象调用是传值调用的特例。1、什么是值传递,什么是引用传递?

2024-06-05 18:47:29 712

原创 并发相关面试题

FutureTask类提供了一个Future的基本实现 ,具有启动和取消计算的方法,查询计算是否完整,并检索计算结果。2、不能用于实时读的场景,像拷贝数组、新增元素都需要时间,所以调用一个 set操作后,读取到数据可能还是旧的,虽然 CopyOnWriteArrayList 能做到最终一致性,但是还是没法满足实时性要求;1、由于写操作的时候,需要拷贝数组,会消耗内存,如果原数组的内容比较多的情况下,可能导致 young gc 或者 full gc;wait()方法会释放 CPU 执行权 和 占有的锁。

2024-06-05 16:44:15 263

原创 redis常见面试题

这个指令没有 offset、limit 参数,是要一次性吐出所有满足条件的 key,由于 redis 是单线程的,其所有操作都是原子的,而 keys 算法是遍历算法,复杂度是 O(n),如果实例中有千万级以上的 key,这个指令就会导致 Redis 服务卡顿,所有读写 Redis 的其它的指令都会被延后甚至会超时报错,可能会引起缓存雪崩甚至数据库宕机。scan 参数提供了三个参数,第一个是 cursor 整数值,第二个是 key 的正则模式,第三个是遍历的 limit hint。keys 指令会导致线。

2024-06-04 11:49:08 413

原创 MQ消息丢失/重复/顺序/挤压

通过以上流程,RocketMQ 的事务消息能够保证在消息发送和消费过程中的事务一致性和可靠性,确保消息在各个环节的正确处理。采用了2PC(两阶段提交)+ 补偿机制(事务状态回查)的思想来实现了提交事务消息,同时增加一个补偿逻辑来处理二阶段超时或者失败的消息,如下图所示。RocketMQ事务消息是指应用本地事务和发送消息操作可以被定义到全局事务中,要么同时成功,要么同时失败。RocketMQ 的事务消息是指在消息发送方发送消息后,需要经过两阶段提交来确保消息的可靠性传递和处理。

2024-06-03 23:24:30 316

原创 JVM调优实战

1数据量一次性申请的内存过多,比如数据库查询返回值大多,所以做个分页。如果老年代能回收掉大部分,说明年轻代太小了,放不下。2.并发过高的情况下,一些连接未释放。

2024-06-03 21:05:33 236

原创 redis如何实现分布式锁

tryLock() 获取到锁返回true,获取不到锁并直接返回false。它支持多种锁模式,如公平锁、可重入锁、读写锁等,并且提供了锁的超时设置和自动释放功能。System.out.println(“获取锁成功,执行被保护的代码…System.out.println(“获取锁成功,执行被保护的代码…(3)tryLock() 是可以被打断的,被中断的;lock() 方法 与 tryLock() 方法。lock() 与 tryLock() 的区别。// 使用 tryLock() 方法获取锁。

2024-06-02 21:57:57 522

原创 zookeeper详解

zookeeper详解

2024-06-02 11:29:56 119

原创 ThreadLocal简介

这样的话,ThreadLocalMap中就会出现key为null的Entry,就没有办法访问这些key为null的Entry的value,如果当前线程再迟迟不结束的话(比如线程池的核心线程),这些key为null的Entry的value就会一直存在一条强引用链:Thread变量 -> Thread对象 -> ThreaLocalMap -> Entry -> value -> Object 永远无法回收,造成内存泄漏。ThreadLocal的很重要一个注意点,就是使用完,要手动调用remove()。

2024-05-27 16:56:30 560

原创 Sentinel 与 hystrix

缺点是除了增加了线程切换的成本(过多的线程池导致线程数目过多),还需要预先给各个资源做线程池大小的分配。和资源池隔离的方法不同,Sentinel 通过限制资源并发线程的数量,来减少不稳定资源对其它资源的影响。当某个资源出现不稳定的情况下,例如响应时间变长,对资源的直接影响就是会造成线程数的逐步。当依赖的资源出现响应时间过长后,所有对该资源的访问都会被直接拒绝,直到过了指定的时间窗口之后才重新恢复。当线程数在特定资源上堆积到一定的数量之后,对该资源的新请求就会被拒绝。堆积的线程完成任务后才开始继续接收请求。

2024-05-26 16:08:02 425

原创 spring自动配置

b站详解视频

2024-05-26 13:31:59 154

原创 一些常见的程序设计问题

库存扣减后发送mq消息,去异步执行创建订单流程,创建订单失败会造成少卖。可加重试机制,对多次重试依旧失败的,用定时任务处理。1.判断库存名额是否充足,2.进行扣减。2个50亿的url文件找出相同的url。为了防止超卖,必须保证这两部的原子性。2.rabbitMq的延迟队列。30min取消未支付订单。

2024-05-19 17:44:02 155

原创 Nginx读书笔记

Nginx 是高性能的 HTTP 和反向代理的web服务器。

2024-05-16 14:45:07 94

原创 spring面试题笔记

2、AsyncLogger是采用Disruptor,通过环形队列无阻塞队列作为缓冲,多生产者多线程的竞争是通过CAS实现,无锁化实现,可以降低极端大的日志量时候的延迟尖峰,Disruptor 可是号称一个线程里每秒处理600万订单的高性能队列。slf4j是对所有日志框架制定的一种规范、标准、接口,并不是一个框架的具体的实现,它的接口并不能独立使用,需要和具体的日志框架实现配合使用(如log4j、logback、log4j2)。我们在项目中经常使用一个叫SLF4J的依赖,它是做什么的呢?

2023-11-05 19:06:52 308

原创 nacos面试题

通常我们说,Nacos技能保证CP,也能保证AP,具体看如何配置,但其实只不过是Nacos中的注册中心能保证CP或AP,Nacos中的配置中心其实没什么CP或AP,因为配置中心的数据是存在一个Mysql中的,只有注册中心的数据需要进行集群节点之间的同步,从而涉及到是CP还是AP,如果注册的节点是临时节点,那么就是AP,如果是非临时节点,那么就是CP,默认是临时节点。Nacos最外层是namespace隔离环境,然后是group对服务进行分组,然后就是服务,一个服务下 有多个集群,集群下有多个实例。

2023-10-29 20:27:37 358

原创 极客笔记-消息队列

如果nameserver都挂了,sdk缓存了topic信息,依旧可用,所有它是AP,即保证可用性跟分区容错性。

2023-10-16 09:34:15 167

原创 netty知识集锦2

2.定长解码器:服务器端选最大长度的消息作为定长,客户端不足补齐,缺点造成浪费。1短链接,它的消息边界是从链接建立到链接断开。netty协议设计与解析。Message编码解码。

2023-07-23 15:10:16 128

原创 netty知识集锦

Netty原理架构解析【硬核】肝了一月的Netty知识点简单深入理解高性能网络编程(Netty)中的Reactor模型(图文+代码)

2023-06-30 16:41:48 64

原创 sql知识集锦

ALTER TABLE ALTER COLUMN SET DEFAULT alter table alter column drop default。ALTER TABLE ADD COLUMN [约束条件]ALTER TABLE MODIFY COLUMN ALTER TABLE DROP COLUMN 若字段有默认值,则需要先删除字段的约束,在添加新的默认值。

2023-06-27 17:11:33 152

原创 spring框架终极版

spring

2023-04-24 20:29:27 68

原创 牛客JAVA问答题

链接:https://www.nowcoder.com/questionTerminal/82331a08576e4e9485de71fa54e12c7f来源:牛客网1、创建泛型对象的时候,一定要指出类型变量T的具体类型。争取让编译器检查出错误,而不是留给JVM运行的时候抛出类不匹配的异常。 2、JVM如何理解泛型概念 —— 类型擦除。事实上,JVM并不知道泛型,所有的泛型在编译阶段就已经被处理成了普通类和方法。 处理方法很简单,我们叫做类型变量T的擦除(erased) 。 总结:泛型代码与JVM ①

2023-03-29 10:19:29 302 1

原创 Slf4j

1

2022-09-16 15:39:28 201

原创 牛客网一些题目的错误笔记

小杂碎

2022-09-01 20:32:03 298

原创 sql习题

qqqq

2022-07-21 14:06:42 114

原创 Tomcat 集成大秘籍

Tomcat顶层架构Tomcat中最顶层的容器是Server,代表着整个服务器,从上图中可以看出,一个Server可以包含至少一个Service,用于具体提供服务。Service主要包含两个部分:Connector和Container。从上图中可以看出 Tomcat 的心脏就是这两个组件,他们的作用如下:Connector用于处理连接相关的事情,并提供Socket与Request和Response相关的转化;Container用于封装和管理Servlet,以及具体处理Request请求;一个To

2022-05-31 16:57:19 135

原创 操作系统--b站视频

https://www.bilibili.com/video/BV1wq4y1M7qf?p=45&spm_id_from=pageDriver进程

2022-05-19 18:43:22 82

原创 spring源码

Aware的作用?

2022-04-20 09:39:34 74

原创 HTTP与HTTPS的区别

HTTP 和 HTTPS 的区别(面试常考题)HTTPS:是以安全为目标的 HTTP 通道,是 HTTP 的安全版。HTTPS 的安全基础是 SSL。SSL 协议位于 TCP/IP 协议与各种应用层协议之间,为数据通讯提供安全支持。HTTPS 设计目标:(1) 数据保密性:保证数据内容在传输的过程中不会被第三方查看。就像快递员传递包裹一样,都进行了封装,别人无法获知里面装了什么 。(2) 数据完整性:及时发现被第三方篡改的传输内容。就像快递员虽然不知道包裹里装了什么东西,但他有可能中途掉包,数据完

2022-03-21 22:45:37 83

转载 HTTP 状态码

链接200多这一类型的状态码,代表请求已成功被服务器接收、理解、并接受。300多重定向400多请求错误400 Bad Request1、语义有误,当前请求无法被服务器理解。除非进行修改,否则客户端不应该重复提交这个请求。2、请求参数有误。401 Unauthorized当前请求需要用户验证。该响应必须包含一个适用于被请求资源的 WWW-Authenticate 信息头用以询问用户信息。客户端可以重复提交一个包含恰当的 Authorization 头信息的请求。如果当前请求已经包含了

2022-03-21 22:29:32 148

原创 并发 bibili.

锁他的原理

2022-03-20 10:28:56 236

转载 XXL-JOB原理

XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。在众多XXL-Job平台的特征中,有如下几条需要关注的:1、使用简单:支持通过Web页面对任务配置,降低操作任务的难度;2、动态:支持动态修改任务状态、启动/停止任务,以及终止运行中任务,即时生效;3、调度中心HA(中心式):调度采用中心式设计,“调度中心”自研调度组件并支持集群部署,可保证调度中心HA;4、执行器HA(分布式):任务分布式执行,任务”执行器”

2022-03-18 11:36:58 17119

原创 WebSocket 的一些东东

HTML5 WebSocketWebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。在 WebSocket API 中,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。现在

2022-03-17 21:03:05 83

原创 redis,缓存 bilibili

这个锁必须是分布式锁,,防止各个微服务并发,并且可以使不同的key对应不同的锁,,单纯用sychrnized并发不行

2022-03-15 00:07:30 1057

原创 分布式bilibili

采用第三方生成id,所有服务都请求第三方获取,,那第三方挂了,岂不是所有服务都无法插入数据库了,为保证高可用,可整个集群,主从模式,但主节点往从节点同步数据的时候,可能会延时,出现已执行问题,最终主节点挂了,切换从节点会产生撞key情况,可主主方式,比如用两个节点,各自生产自己的key,改变布长即可,比如步长为2,一台专门生产奇数,一个偶数,当然拓展性能比较差...

2022-03-13 14:40:41 1227

原创 select poll epoll

2022-03-09 00:03:15 81

原创 双亲委派机制

2022-03-07 23:20:51 104

原创 spring cloud 视频

2022-03-07 22:57:32 79

空空如也

空空如也

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

TA关注的人

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