- 博客(148)
- 收藏
- 关注
原创 java面试(缓存Redis)
击穿:redis中没有查询到数据。解决:设置热点数据永不过期。加载DB时防止并发。穿透:redis和mysql中都没有查询到数据。解决:参数校验,将没有数据的情况也存入redis中,引入布隆过滤器雪崩:redis中大量数据同时过期。解决:设置不同的过期时间。如果判断一个元素不在集合中则一定不在如果判断一个元素在集合中则存在一定误判率布隆过滤器只能加数据不能减数据。
2024-03-05 22:14:40
1444
1
原创 java面试(消息队列MQ)
MQ(MessageQueue)消息队列。队列(FIFO)先进先出的数据结构,消息由生产者发送到MQ,后由消费者对消息进行处理。QQ,微信就是MQ场景。
2024-03-05 15:59:02
1166
原创 java面试(jvm)
有两种垃圾回收机制:1.引用计数:这种方式是给堆内存当中的每个对象记录一个引用计数,引用个数为0的就认为是垃圾。问题是无法解决循环引用的问题,会造成内存泄漏。2.根可达算法:内存中从引用根对象向下一直找引用,找不到的对象就是垃圾,可解决循环引用。GC Root:Stack(JVM Stack,Native Stack),class类,run-time constant pool常量池,static reference静态变量。
2024-03-04 23:13:47
1014
原创 java面试(网络)
文件描述符(FD):形式上是整数,实际上是索引,指向内核为每个进程维护进程所打开的文件记录表,当程序打开/创建一个文件时,内核就会向i昵称返回一个FD。epoll:事件驱动,不再扫描所有的fd,只将用户关心(读写)的fd事件存放在内核的事件表中,这样减少了从用户到内核的拷贝数据。AIO:异步非阻塞IO:可靠性好,吞吐量高,适用于连接多,且连接长操作,例如相册服务器,视频流,JDK1.7+广播,协议简单,占用资源少,效率高。1.HTTP:连接简单,无状态,HTTPS:传输经过证书加密,安全性高。
2024-02-25 22:14:45
1102
原创 java面试(并发)
思路:fork/join框架,实例:https://blog.youkuaiyun.com/qq_40100414/article/details/119202893;扩展jvm底层参数:-XX:UsedBiasedLocking:是否打开偏向锁,默认不打开 -XX:BiasedLockingStartupDelay:默认4s,打开。1.AQS是java线程同步的框架,是jdk中很多锁的核心实现框架。1.volatile:保持变量的内存(线程)可见性,避免编译器优化,适用于一个线程写,一个读的场景。
2024-02-25 14:39:46
627
原创 Netty(四)NIO-优化与源码
序列化,反序列化主要用于消息正文的转换。序列化:将java对象转为要传输对象(byte[]或json,最终都是byte[])反序列化:将正文还原成java对象。配置文件修改编解码器。
2023-10-06 14:53:04
522
原创 消息中间件笔记
聊聊 RocketMQ 主从复制:https://mp.weixin.qq.com/s/KI9hrEfLNVtRUwpU-fFznA。
2023-09-15 09:42:01
67
原创 多线程笔记
7000字+24张图带你彻底弄懂线程池:https://mp.weixin.qq.com/s/VN3RuVtmAelHe0xOtRZCTg。
2023-09-15 09:40:24
60
原创 Redis笔记
深度图解 Redis Hash(散列表)实现原理:https://mp.weixin.qq.com/s/1tES9pMr_EVi1zUiFhdkeQ。
2023-09-15 09:36:51
69
原创 spring笔记
spring启动核心12个步骤:https://mp.weixin.qq.com/s/D6v_wwFXnsug8MwBiPqnhQ。
2023-09-15 09:25:00
70
原创 nginx基础
nginx基础1. nginx安装1.1 常用版本Nginx开源版:http://nginx.org/Nginx plus商业版:https://www.nginx.comOpenresty:http://openresty.orgTengine:http://tengine.taobao.org/lnmp集成运行环境:oneinstack.com1.2 下载nginx常用版下载nginx-1.20.2.tar.gz文件,并解压指定目录:tar -zxvf nginx-1.20.2.t
2023-07-17 16:29:11
236
原创 KafKa 3.x(三、Eagle、Kraft、压测调优,源码解析)
Kafka-Eagle框架用于监控Kafka集群运行状况。官网https://kafka-eagle.org。
2023-07-12 14:24:23
1767
1
原创 KafKa 3.x(二、Broker,消费者)
1.zk存储的信息:broker.ids、leaders、controller2.工作理财3.服役:4.退役5.副本:副本好处:提高可靠性,生产环境一般2个默认1个,有ledaer和followerisr,ar,controller选举(第一次随机),leader挂了(leo,hw多删少补),follow挂了副本分配:负载均衡,保证数据分配手动副本分配:指定计划、执行计划,验证计划leader partition的负载均衡 10%手动增加副本因子6.存储机制。
2023-07-06 22:59:14
894
1
原创 Linux多虚拟机集群化配置详解(Zookeeper集群、Kafka集群、Hadoop集群、HBase集群、Spark集群、Flink集群、Zabbix、Grafana部署)
linux大数据集群环境搭建
2023-06-27 22:46:56
1720
原创 Linux基础+命令操作+mysql、tomcat、nginx、RabbitMQ、Redis,ElasticSearch
linux基础、linux下安装常用中间件
2023-06-25 23:54:53
1241
1
原创 JAVA的BIO、NIO、AIO模式精解(二)
java.nio.channels包定义,表示IO源与目标打开的连接。Channel类似流,但不能直接访问数据,Channel只能与Buffer进行交互。NIO通道类似流,可异步读写数据,流只能单向。Channel是在NIO中的一个接口:public interface Channel extends Closeable{}
2023-06-02 12:57:42
243
原创 Redis原理
Redis中key是字符串,value是字符串或字符串集合。不过redis没有直接使用C语言的字符串。因为C中字符串存在问题:①获取字符串长度需要运算②非二进制安全③不可修改。Redis构建一种新的字符串结构,简单动态字符串SDS(SimpleDynamicString)。扩容:如果新字符串小于1M,则新空间为扩展后字符串长度的2倍+1。如果大于1M,则新空间为扩容后字符串长度+1M+1,称为内存预分配。优点:①获取字符串长度时间复杂度O(1)②支持动态扩容③减少内存分配次数④二进制安全。
2023-04-21 11:02:07
556
原创 Redis最佳实践
key:固定格式,简短,不包含特殊字符value:合理拆分,不BigKey。合适的数据结构。hash结构entry数量不超过1000。设置合理的超时时间。批处理方案:原生M操作。Pipeline批处理注意事项:批处理时不建议一次携带太多命令。Pipeline的多个命令之间不具备原子性。
2023-04-21 10:37:22
597
原创 Redis分布式缓存方案
RDB方式bgsave基本流程?-fork主进程得到子进程,共享内存空间。-子进程读取内存数据,并写入RDB。-用新RDB文件替换旧的RDB文件。RDB会在什么时候执行?save60 1000代表什么?-手动save或bgsave,被动服务停止时。代表60s内至少修改1000次才触发RDB。RDB缺点?-RDB执行间隔时间长,两次RDB之间写入数据有丢失风险。-fork子进程,压缩,写出RDB文件都比较耗时。
2023-04-21 10:30:16
1157
原创 mysql基础易错总结
创建触发器创建只有一个执行语句的触发器:create trigger 触发器名 before|after 触发事件 on 表名 for each row 执行语句eg:create trigger dept_trig before insert on department for each row insert into trigger_time values(now());创建有多个执行语句的触发器:create trigger 触发器名 before|after 触发事件.
2022-06-17 17:11:46
781
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人