笔记
文章平均质量分 80
吉sf
这个作者很懒,什么都没留下…
展开
-
Docker
基本概念镜像docker镜像就好比是一个模板,可以通过这个模板来创建容器服务,通过这个镜像可以创建多个容器容器docker利用容器技术,独立运行一个或者一组应用,通过镜像来创建的仓库就是存放镜像的地方,仓库分为共有仓库和私有仓库底层原理Docker是一个Client-Server结构的系统,Docker的守护进程运行在主机上,通过Socket从客户端访问。DockerServer接收到DockerClient的指令,就会执行这个命令Docker命令docke原创 2022-02-06 20:32:30 · 1316 阅读 · 0 评论 -
ElasticSearch
全文检索通过一个程序扫描文本中的每一个单词,针对单词建立索引,并保存该单词在文本中的位置、以及出现的次数。用户查询时,通过之前建立好的索引来查询,将索引中单词对应的文本位置、出现的次数返回给用户,因为有了具体文本的位置,所以就可以将具体内容读取出来了倒排索引倒排索引也叫反向索引,通俗来讲正向索引是通过key找value,反向索引则是通过value找key。Elasticsearch分别为每个field都建立了一个倒排索引,倒排列表记录了出现过某个单词的所有文档的文档列表及单词在该文档中原创 2021-12-22 22:02:22 · 958 阅读 · 0 评论 -
Kafka
Kafka简介kafka是一个分布式的,分区的消息(官方称之为commit log)服务。它提供一个消息系统应该具备的功能,但是确有着独 特的设计。可以这样来说,Kafka借鉴了JMS规范的思想,但是确并没有完全遵循JMS规范。服务端(brokers)和客户端(producer、consumer)之间通信通过TCP协议来完成。 相关概念:Broker:消息中间件处理节点,一个Kafka节点就是一个broker,一个或者多个Broker可以组成一个Kafka集群Topic:Kafka根据原创 2021-12-11 22:39:00 · 1401 阅读 · 0 评论 -
RocketMQ
无原创 2021-12-11 22:38:26 · 319 阅读 · 0 评论 -
Java设计模式
设计模式七大原则单一职责原则对类来说,一个类应该只负责一项职责注意事项:1,降低类的复杂度,一个类只负责一项职责。2,提高类的可读性,可维护性3,降低变更引起的风险4,通常情况下,我们应当遵守单一职责原则,只有逻辑足够简单,才可以在代码级违反单一职责原则;只有类中方法数量足够少,可以在方法级别保持单一职责原则开闭原则里氏替换原则任何基类可以出现的地方,子类一定可以出现子类可以扩展父类的功能,但不能改变父类原有的功能子类继承父类时,除添加新的方法完成.原创 2021-11-16 21:54:27 · 391 阅读 · 0 评论 -
RabbitMQ
概述MQ全称 Message Queue(消息队列),是在消息的传输过程中保存消息的容器。多用于分布式系统之间进行通信。优势1,应用解耦,提高系统容错性和可维护性2,异步提速,提升用户体验和系统吞吐量3,削峰填谷,提高系统稳定性劣势1,系统可用性降低系统引入的外部依赖越多,系统稳定性越差。一旦 MQ 宕机,就会对业务造成影响。2,系统复杂度提高MQ 的加入大大增加了系统的复杂度,以前系统间是同步的远程调用,现在是通过 MQ 进行异步调用。原创 2021-11-14 18:12:41 · 1353 阅读 · 0 评论 -
Zookeeper
概述Zookeeper从设计模式角度来理解:是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生变化,Zookeeper就 将负责通知已经在Zookeeper上注册的那些观察者做出相应的反应。可以理解为Zookeeper是一个用于存储少量数据的基于内存的数据库,主要有如下两个核心的概念:文件系统数据结构+监听通知机制。特点Zookeeper:一个领导者(Leader),多个跟随者(Follower)组成的集群。原创 2021-11-03 22:01:10 · 327 阅读 · 0 评论 -
Linux
Linux目录结构在 Linux 世界里,一切皆文件。/bin [重点] (/usr/bin 、 /usr/local/bin)是Binary的缩写, 这个目录存放着最经常使用的命令/home [重点]存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。/root [重点]该目录为系统管理员,也称作超级权限者的用户主目录。/sbin (/usr/sbin 、 /usr/local/sbin)s就是Super User的意原创 2021-10-27 11:38:15 · 2287 阅读 · 0 评论 -
Java对象模型
对象的实例化创建对象的方式:newClass的newInstance()使用clone()使用反序列化第三方库Objenesis创建对象的步骤:1,判断对象对应的类是否加载、链接、初始化2,为对象分配内存3,处理并发安全问题4,初始化分配到的空间5,设置对象的头对象6,执行init方法进行初始化对象实例化过程:1,加载类元信息2,为对象分配内存3,处理并发问题4,属性的默认初始化(零值初始化)5,设置对象头信息6,属性的显示初原创 2021-10-03 11:15:54 · 259 阅读 · 0 评论 -
JavaIO
BIO概述同步并阻塞(传统阻塞型),服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器 端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销适用场景BIO 方式适用于连接数目比较小且固定的架构,这种方式对服务器资源要求比较高,并发局限于应用中,JDK1.4以前的唯一选择,但程序简单易理解。基本介绍Java BIO 就是传统的 java io 编程,其相关的类和接口在 java.ioBIO(blocking I/O) : 同步阻塞,服务器实现模式原创 2021-09-20 21:01:37 · 154 阅读 · 0 评论 -
操作系统面试题
进程与线程的区别和联系?进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。进程和线程的关系(1)一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。线程是操作系统可识别的最小执行和调度单位。(2)资源分配给进程,同一进程的所有线程共享该进程的所有资源。 同一进程中的多个线程共享代码段(代码和常量),数据段(全局变量和静态变量原创 2021-09-07 16:53:31 · 109 阅读 · 0 评论 -
网络面试题
状态码:1xx:信息性状态码101:切换请求协议2xx:成功状态码200:请求成功204:请求被受理但没有资源可以返回206:客户端只是请求资源的一部分,服务器只对请求的部分资源执行GET方法,相应报文中通过Content-Range指定范围的资源。3xx:重定向状态码301:永久性重定向,会缓存302:临时重定向,不会缓存303:与302状态码有相似功能,只是它希望客户端在请求一个URI的时候,能通过GET方法重定向到另一个URI上304:发送附带条件的请求时原创 2021-09-06 20:34:17 · 207 阅读 · 0 评论 -
Java内存模型(JMM)
是什么JMM(Java Memory Model)是一组规范,需要各个JVM的实现来遵守JMM规范,以便于开发者可以利用这些规范,更方便地开发多线程程序。如果没有这样的一个JMM内存模型来规范,那么很可能经过了不同JVM的不同规则的重排序之后,导致不同的虚拟机上运行的结果不一样,那是很大的问题。如果没有JMM,那就需要我们自己指定什么时候用内存栅栏等,JMM让我们只需要用同步工具和关键字就可以开发并发程序。最重要的3点内容重排序:...原创 2021-08-30 21:51:41 · 131 阅读 · 0 评论 -
Java多线程
线程的六种状态:初始态(NEW):创建一个Thread对象,但还未调用start()启动线程时,线程处于初始态。运行态(RUNNABLE):(包括 就绪态 和 运行态)就绪态:该状态下的线程已经获得执行所需的所有资源,只要CPU分配执行权就能运行。所有就绪态的线程存放在就绪队列中。运行态:获得CPU执行权,正在执行的线程。由于一个CPU同一时刻只能执行一条线程,因此每个CPU每个时刻只有一条运行态的线程。阻塞态(BLOCKED):当一条正在执行的线程请求某一资源原创 2021-08-11 20:00:32 · 242 阅读 · 0 评论 -
MySQL
基础当前读:读取的数据是最新版本的快照读:读取的是历史版本的记录索引索引和实际的数据都是存储在磁盘的,只不过在进行数据读取的时候会优先把索引加载进内存mvcc(多版本并发控制)第一部分:隐藏字段每一行记录上都会包含几个用户不可见的字段:DB_TRX_ID:创建或者最后一次修改该记录的事务idDB_ROW_ID:隐藏主键DB_ROLL_PTR:回滚日志(undolog)第二部分:回滚日志(undolog)锁表锁:偏向MyISAM存储引擎原创 2021-08-20 21:37:16 · 171 阅读 · 0 评论 -
Redis
概述支持多数据类型,支持持久化,单线程+多路IO复用,原子性Redis键(key)keys *查看当前库所有key (匹配:keys *1)exists key判断某个key是否存在type key查看你的key是什么类型del key删除指定的key数据unlink key 根据value选择非阻塞删除(仅将keys从keyspace元数据中删除,真正的删除会在后续异步操作)expire key...原创 2021-08-26 21:24:02 · 136 阅读 · 0 评论 -
JVM内存结构
方法区:(线程共享)存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据堆:(线程共享)所有的对象实例以及数组都要在堆上分配虚拟机栈:(线程私有)存储局部变量表,局部变量表存放了编译期可知长度的各种基本数据类型(boolean、byte、char、short、int、float、long、double)对象引用(reference类型,是对象在堆内存的首地址)。方法执行完,自动释放本地方法栈:(线程私有)程序计数器:(线程私有).原创 2021-08-11 11:10:30 · 207 阅读 · 0 评论 -
垃圾收集器
串行垃圾收集器串行垃圾收集器,是指使用单线程进行垃圾回收,垃圾回收时,只有一个线程在工作,并且java应用中的所有线程都要暂停,等待垃圾回收的完成。这种现象称之为STW(Stop-The-World)。对于交互性较强的应用而言,这种垃圾收集器是不能够接受的。一般在Javaweb应用中是不会采用该收集器的。并行垃圾收集器并行垃圾收集器在串行垃圾收集器的基础之上做了改进,将单线程改为了多线程进行垃圾回收,这样可以缩短垃圾回收的时间。(这里是指,并行能力较强的机器)并行垃圾收集器在收原创 2021-08-12 16:12:02 · 111 阅读 · 0 评论 -
垃圾回收的常见算法
引用计数法原理假设有一个对象A,任何一个对象对A的引用,那么对象A的引用计数器+1,当引用失败时,对象A的引用计数器就-1,如果对象A的计数器的值为0,就说明对象A没有引用了,可以被回收。优缺点优点:实时性较高,无需等到内存不够的时候,才开始回收,运行时根据对象的计数器是否为0,就可以直接回收。在垃圾回收过程中,应用无需挂起。如果申请内存时,内存不足,则立刻报outofmember 错误。区域性,更新对象的计数器时,只是影响到该对象,不会扫描全部对象。缺点:每次对象原创 2021-08-12 13:46:52 · 188 阅读 · 1 评论 -
JavaSE
实参给形参赋值时:基本数据类型:数据值引用数据类型:地址值不可变:String、包装类等对象不可变,进行运算时重新指向新的值原创 2021-08-10 20:52:04 · 141 阅读 · 0 评论 -
Java排序算法
冒泡排序:执行流程:① 从头开始比较每一对相邻元素,如果第1个比第2个大,就交换它们的位置(执行完一轮后,最末尾那个元素就是最大的元素)② 忽略 ① 中曾经找到的最大元素,重复执行步骤 ①,直到全部元素有序优化:如果序列已经完全有序,可以提前终止冒泡排序优化:如果序列尾部已经局部有序,可以记录最后1次交换的位置,减少比较次数复杂度:最坏时间复杂度:O(n2)最好时间复杂度:O(n)平均时间复杂度:O(n2)空间复杂度:O(1)稳定性:稳定选择排序.原创 2021-08-23 21:38:29 · 129 阅读 · 0 评论 -
Java数据结构
真二叉树所有节点的度都为0或都为2满二叉树所有节点的度都为0或都为2,所有叶子节点都在最后一层完全二叉树叶子节点指挥出现在最后2层,最后一层的叶子节点都靠左对齐二叉搜索树、二叉查找树、二叉排序树任意一个结点的值都大于其左子树所有节点的值任意一个结点的值都小于其右子树所有结点的值它的左右子树也是一颗二叉搜索树...原创 2021-08-17 21:52:13 · 187 阅读 · 0 评论