- 博客(19)
- 收藏
- 关注
原创 从浏览器中输入URL到返回页面的过程,都发生了什么?
递归查询就是如果主机所询问的本地域名服务器不知道被查询域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其他根域名服务器继续发出查询请求报文,而不是让该主机自己进行下一步查询。查询到IP回来后,又会经过本地域名服务器。
2022-04-17 11:27:58
5258
原创 【学习笔记】程序员学操作系统
现代计算机系统由一个或多个处理器、主存、打印机、键盘、鼠标、显示器、网络接口以及各种输入输出设备构成。然而,程序员不会直接和这些硬件打交道,在硬件的基础之上,计算机安装了一层软件,这层软件能够通过响应用户输入的指令达到控制硬件的效果,从而满足用户需求,这种软件称之为**操作系统**,它的任务就是为用户程序提供一个更好、更简单、更清晰的计算机模型。
2022-04-15 18:20:10
4535
原创 部署kafka集群后创建主题超时Timed out waiting for a node assignment. Call:createTopics (kafka.admin.TopicCommand
代理将向生产者和消费者发布主机名和端口。 如果没有设置,则使用“listeners”的值。 否则,它将使用从java.net.InetAddress.getCanonicalHostName()返回的值。
2022-03-21 13:29:55
18953
原创 部署Zookeeper集群时遇到的两个坑QuorumCnxManager$Listener@7631Exception和ConnectionLossException: KeeperErrorCode
tickTime:通信心跳时间,Zookeeper服务器与客户端心跳时间,单位毫秒。极大可能是客户端的问题,即超时时间配置的太短(默认是2000,我改成10000就没问题了)。
2022-03-18 15:10:26
9645
原创 HashMap和ConcurrentHashMap底层源码详解以及相关面试题
JDK1.7:HashMap采取的是数组+链表的形式存储数据。JDK1.8:引入了红黑树数据结构,利用红黑树**快速增删改查的特点来优化了HashMap的性能。
2022-03-17 14:08:03
938
原创 ArrayList和CopyOnWriteArrayList详解和源码剖析【扩容机制】
在此列表中的指定位置插入指定的元素。 先调用 rangeCheckForAdd 对index进行界限检查;然后调用 ensureCapacityInternal 再将从index开始之后的所有成员后移一个位置;将element插入index位置;最后size加1。
2022-03-15 21:31:58
1421
原创 Netty启动流程、NioEventLoop、读写事件源码剖析
Netty底层是NIO,从对NIO的组件封装开始看。我们来看看 netty 中对下面的代码 是怎样进行处理的。
2022-03-02 13:45:57
627
原创 【巨坑】SpringBoot创建Bean失败 + 内存泄漏警告 The web application [ROOT] appears to have started a thread named
最近在做一个项目,今天稍微修改了一些mapper和service、加了一个controller后,项目启动突然警告 + 报错 mappThe web application [ROOT] appears to have started a thread named [logback-1] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread
2022-02-08 22:55:28
30287
5
原创 NIO优化底层原理和零拷贝
读取磁盘数据的时候,之所以要发生上下文切换,这是因为用户空间没有权限操作磁盘或网卡,内核的权限最高,这些操作设备的过程都需要交由操作系统内核来完成,所以一般要通过内核去完成某些任务的时候,就需要使用操作系统提供的系统调用函数。
2022-02-07 18:30:57
926
4
原创 分布式唯一ID生成:雪花算法的原理及实战使用、三大问题的解决
总之就是用一个 64 bit 的数字中各个 bit 位来设置不同的标志位,区分每一个 id。实际中我们的机器并没有那么多,可以改进改算法,例如将10bit的机器id优化和我们系统相关的业务。雪花算法只是一种思想,活学活用,切记生搬硬套。
2022-01-27 00:20:45
10269
5
原创 关于ElasticSearch的十道经典面试题
系统中的数据,随着业务的发展,时间的推移,将会非常多,而业务中往往采用模糊查询进行数据的搜索,而模糊查询会导致查询引擎放弃索引,导致系统查询数据时都是全表扫描,在百万级别的数据库中,查询效率是非常低下的,而我们使用 ES 做一个全文索引,将经常查询的系统功能的某些字段,比如说电商系统的**商品表中商品名,描述、价格还有 id 这些字段我们放入 ES 索引库里,可以提高查询速度**。
2022-01-24 22:28:37
13608
3
原创 synchronized和volatile关键字实现和底层原理详解
需要有一个地方来存储抢占锁的标记,否则当其他线程来抢占资源时,不知道当前是应该正常执行还是应该排队。实际上,这个锁标记是存储在对象头中的。
2022-01-02 23:06:15
5884
8
原创 一文详解计算机网络经典面试题
三次握手和四次挥手、半连接和全连接队列、浏览器中输入URL返回页面过程、HTTP和HTTPS、TCP和UDP、TCP/IP等详解
2021-12-09 21:40:41
3574
4
原创 Java中Future和FutureTask详解及使用
文章目录一、Future 接口二、FutureTask三、使用 Callable 和 Future四、小结(FutureTask核心原理)一、Future 接口当 call()方法完成时,结果必须存储在主线程已知的对象中,以便主线程可以知道该线程返回的结果。为此,可以使用 Future 对象。将 Future 视为保存结果的对象–它可能暂时不保存结果,但将来会保存(一旦Callable 返回)。Future 基本上是主线程可以跟踪进度以及其他线程的结果的一种方式。要实现此接口,必须重写 5 种方法,这
2021-11-29 22:36:46
11337
2
原创 【Java简易爬虫】使用Htmlunit爬虫学校教务网课程表信息
使用WebClient和htmlunit实现简易爬虫import com.gargoylesoftware.htmlunit.WebClient;提供了public P getPage(final String url)方法获得HtmlPage。import com.gargoylesoftware.htmlunit.html.*;包含了HtmlPage、HtmlForm、HtmlTextInput、HtmlPasswordInput、HtmlElement、DomElement等元素。构造
2021-11-11 18:20:42
1401
5
原创 【Java设计模式】图文代码案例详解Java五大创建者模式 建造者、原型、(抽象)工厂、单例模式
文章预览:一、工厂模式1、介绍2、实例(1)、典型的工厂模式(2)、多个工厂方法模式(3)、静态工厂方法模式3、总结二、抽象工厂模式1、介绍2、实例3、实例拓展4、总结三、建造者模式1、介绍2、实例3、实例拓展4、总结四、原型模式1、介绍2、实例3、实例拓展4、总结五、单例模式1、介绍2、实例(1)、懒汉式(线程不安全版)(2)、懒汉式(线程安全版)(3)、饿汉式(线程安全)(4)、使用类的内部类(线程安全)(5)、双重锁校验(线程安全)(6)、CAS「AtomicReference」(线程安全)(7)、枚
2021-10-30 20:30:27
2433
7
原创 [超详细] Git 远程仓库及回滚日志操作
一、远程仓库基本操作1、拿到仓库地址(以GitEE为例):2、初始化Git:使用命令:git init在准备存放的文件夹里使用命令git init进行初始化,也就是把这个文件夹变成git专属文件夹。注意,git的命令只能在git专属文件夹中才能使用。3、连接指定远程仓库使用命令:git remote add 远程仓库昵称 https://gitee.com/xxx/xxx.git此处的远程仓库昵称可以任意取,一般都是取作origin(以下命令统一使用origin展示),此时在本地你就有了
2021-10-27 09:39:21
5738
5
原创 SpringSecurity基本原理 认证流程源码剖析
SpringSecurity 基本原理一、基本认证流程SpringSecurity 本质是一个过滤器链:从启动是可以获取到过滤器链:org.springframework.security.web.下的:context.request.async.WebAsyncManagerIntegrationFiltercontext.SecurityContextPersistenceFilter header.HeaderWriterFiltercsrf.CsrfFilterauthentic
2021-10-24 10:19:49
487
3
原创 图解数据库和Redis缓存的一致性(延时双删与延时后删的区别及重要性)
图解数据库和Redis缓存的一致性问题来源使用redis做一个缓冲操作,让请求先访问到redis,而不是直接访问MySQL等数据库:读取缓存步骤一般没有什么问题,但是一旦涉及到数据更新:数据库和缓存更新,就容易出现缓存(Redis)和数据库(MySQL)间的数据一致性问题。不管是先写MySQL数据库,再删除Redis缓存,再更新缓存;还是先删除缓存,再写库,再更新缓存。都有可能出现数据不一致的情况。举一个例子:1.如果删除了缓存Redis,还没有来得及写库MySQL,另一个线程就来读取,发现缓
2021-10-23 11:36:13
2248
4
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人