12 2020 档案
摘要:记录Zookeeper的集群搭建过程。 Zookeeper集群中有三种角色: Leader: 处理所有的写请求,可以处理读请求,集群中只能有一个Leader Follower:只能处理读请求,能参与Leader选举 Observer:只能处理读请求,不能参与选举 copy一份配置文件: cp con
阅读全文
摘要:一个java类的main方法是如何执行的?第一步就是通过类加载器将其加载到JVM中。 类加载过程:加载 > 验证 > 准备 > 解析 > 初始化 > 使用 > 卸载 加载:通过IO读入字节码文件,在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口。
阅读全文
摘要:学习spring源码最好是下载源码编译,方便写注释。提前声明,编译源码可能遇到各种问题,可能和机器环境、网络等有各种关系,如果解决不了也可以不通过编译源码方式学习。 机器环境:idea,jdk1.8,spring是gradle构建的,可以安装对应的gradle,也可以使用gradleWrapper中
阅读全文
摘要:如何解决线程并发安全问题? 并发场景下解决线程安全问题的方案都是使多线程序列化访问临界资源。即在同一时刻,只能有一个线程访问临界资源,也称作同步互斥访问。Java 中,提供了两种方式来实现同步互斥访问:synchronized 和 Lock。synchronized是java的一个关键字,是JVM内
阅读全文
摘要:树形结构中最重要的就是二叉树,很多经典的算法与数据结构其实都是通过二叉树演变而来。 二叉树:一种特殊的树形结构,每个节点至多只有两颗子树 满二叉树:除叶子结点外每个结点都有左右两个子结点 完全二叉树:除最后一层之外的结点个数达到最大,并且最后一层结点都连续靠左排列 二叉搜索树: 1.如果它的左子树不
阅读全文
摘要:贪心算法:在求解问题时,总是做出在当前看来做好的选择,所以它是局部最优解,试图通过局部最优推出全局最优。需要注意的是贪心算法没有固定的算法框架,算法设计的关键是选择贪心策略,其必须具备无后效性,即某个状态以后的过程不会影响以前的状态,只与当前状态有关。 常见的用贪心算法解决的问题,比如教师排课系统,
阅读全文
摘要:整理一下常见的排序算法。 1、插入排序 插入排序是基础的排序之一,插入排序的过程,脑补打扑克,分成两部分:一部分是手里的牌(已经排好序),一部分是要拿的牌(无序)。这种往一个有序的集合里面插入元素,插入后序列仍然有序这就是插入排序算法思路。 public static void main(Strin
阅读全文
摘要:程序调用自身,称为递归。 递归是一个非常重要的算法思想,生活中也常见类似场景,比如排队时想知道前面还有几个人,需要向前问。再比如考试时学生向后传试卷,直到最后一个就将剩余的试卷还给老师。 什么样的情况下可以用递归? (1)一个问题可以分解成多个子问题 (2)这个问题与分解成的子问题求解思路一致 (3
阅读全文
摘要:MQ全称:Message Queue,是在消息传输过程中保存消息的容器,在分布式系统通信中有比较多的应用场景。 对于一个系统,合理使用MQ,可以使应用解耦,提高系统的容错率。异步提速,提高系统吞吐量和提升用户体验。同时可以做到削峰填谷,提高系统稳定性。当然,系统中引入了一个外部的中间件,会使系统依赖
阅读全文
摘要:记录rabbitmq的安装过程 rabbitmq是erlang是使用erlang语言开发的,首先安装erlang环境 1.安装erlang依赖的环境 yum -y install make gcc gcc-c++ kernel-devel m4ncurses-devel openssl-devel
阅读全文

浙公网安备 33010602011771号