自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

日有寸进

世上只有一种英雄主义,就是在认清生活真相之后依然热爱生活。

原创 zookeeper 客户端源码解读(二)SendThread & EventThread

zookeeper 客户端源码解读(二)关于2个线程SendThreadstartConnectClientCnxnSocket.connectClientCnxnSocketNIO.registerAndConnect 关于2个线程 在 1.1.2.1.2 ClientCnxn.start ...

2019-10-31 15:47:23 327 0

原创 zookeeper 客户端源码解读(三)exists

public Stat exists(final String path, Watcher watcher) throws KeeperException, InterruptedException { final String clientPath = p...

2019-10-31 15:39:11 45 0

原创 zookeeper 客户端源码解读(一)入口

zookeeper 客户端源码解读1入口,ZooKeeperMain.main1.1 ZooKeeperMain1.1.1 MyCommandOptions.parseOptions1.1.2 ZooKeeperMain.connectToZK1.1.2.1 ZooKeeper1.1.2.1.1C...

2019-10-29 15:05:23 59 0

原创 zookeeper 与分布式系统

为什么学习ZK 应该重点掌握分布式环境的演进过程,从一个单节点开始,慢慢过渡到分布式,为什么单节点不行,传统一个tomcat打天下有什么有点,缺点又是什么,当一个tomcat搞不定的时候,分布式的架构图又是什么样的, 传统的单节点架构自然有问题,到了分布式的架构中,问题肯定也有不少,这些问题就...

2019-10-29 10:40:19 83 0

原创 zookeeper 客户端源码之 MyCommandOptions

MyCommandOptions 包含了两个东西:Command 和 Options。 它们分别被用在两处:进入客户端之后和进入客户端之前 进入客户端前: “zkCli.sh -server 127.0.0.1:2181” 这里,进入 main 的 args 是一个 String 数组...

2019-10-28 20:12:24 74 0

原创 为什么用 System.nanoTime() / 1000000 而不是 System.currentTimeMillis()?

问题来源 以下是 zookeeper3.4.12 源码里的一小部分: 注释里有一句话是在读不懂: Time.currentElapsedTime will change but nanoTime won't. 个人感觉应该是写错了(根据返回值,明显要变两个一起变),这里应该是...

2019-10-26 22:13:50 251 0

原创 zookeeper 基础

目录结构

2019-10-25 20:45:41 49 0

原创 Https 与对称加密和非对称加密

详解 https 以及 Nginx 配置为什么要有 https加密进化史对称加密非对称加密证书颁发机构颁发证书总结 为什么要有 https 没有 https,用户传输的数据,如账号密码,会被不法分子截获。 加密进化史 对称加密 客户端请求一次服务端后,服务端给客户端一个密钥。然后他们传输...

2019-10-24 10:10:13 122 0

原创 Linux(CentOS7) 安装 zookeeper 集群并配置

下载地址 https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/ 解压后 进入 conf 文件夹 cp zoo_sample.cfg zoo.cfg vim zoo.cfg 创建 dataDir 文件夹: mkdir -p /...

2019-10-23 21:28:52 65 0

原创 keepalived 解决入口机器(Nginx)挂掉的问题

keepalived 解决最前端 Nginx 挂掉的问题问题来源LVS 解决思路keepalived 配置 LVS 过程主机配置从机配置检验 keepalived 的 LVS 效果keepalived 监控 Nginx主机配置从机配置充分利用从机 问题来源 我们有很多 Tomcat服务器交由 ...

2019-10-22 22:52:15 817 0

原创 Nginx 资源压缩

Nginx 资源压缩问题来源解决思路Nginx 配置方法另外 问题来源 第一次打开页面,静态资源在浏览器上也没有缓存,响应有点慢,用户体验可能不太好,怎么办? 解决思路 浏览器在发送请求时,会附带自己支持的压缩方式: Nginx 配置方法 location ~ /(.*)\.(html|js|c...

2019-10-22 10:27:18 98 0

原创 Nginx 配置防盗链

Nginx 配置防盗链问题来源解决思路 问题来源 我的服务器里可能有很多好图片,那么别人可能会在自己的 html 里用 img 引用我的图片,这样就会给我的服务器带来压力。 解决思路 ...

2019-10-22 09:43:58 152 0

原创 Nginx 解决跨域问题

Nginx 解决跨域问题问题由来Jsonp 的解决之道CORS 的解决之道nginx 配置跨域操作(CORS)简单请求复杂请求CORS 对比反向代理 问题由来 浏览器拒绝执行其它域名下的 ajax 运作: 我想自己做一个搜索网站,但我不会搜索技术,怎么办呢?如果能发起 ajax 请求到百度就...

2019-10-20 23:30:32 783 0

原创 Openresty 的安装

如果有依赖没下载,可以参考 Linux(CentOS7) 下 Nginx1.15.8 安装步骤 前面的依赖下载。 下载解压源码: wget https://openresty.org/download/openresty-1.15.8.1.tar.gz tar -zxvf openresty-1...

2019-10-18 22:53:11 32 0

原创 Nginx 负载均衡 —— upstream 配置

Nginx 负载均衡 —— upstream 配置语法格式轮询(默认)weightip_hash代理时的负载使用 语法格式 upstream 负载名 { [ip_hash;] server ip:port [weight=数字] [down]; server ip:port...

2019-10-18 22:06:33 232 0

原创 《Linux高性能服务器编程》阅读笔记 之(三)TCP 协议详解

目录 TCP 服务的特点 TCP 头部结构 TCP 固定头部结构 TCP 头部选项 TCP 连接的建立和关闭 三次握手与四次挥手 半关闭状态 连接超时 TCP 状态转移 TCP 状态转移总图 服务器的典型状态转移过程 客户端的典型状态转移过程 TIME_WAIT 状态...

2019-10-18 15:58:54 82 0

原创 《Linux高性能服务器编程》阅读笔记 之(二)IP 协议详解

目录 IP服务的特点 IPv4 头部结构 介绍 使用 tcpdump 观察 IPv4 头部结构 IP 分片 介绍 使用 tcpdump 观察 IP 分片 IP路由 IP 模块工作流程 路由机制 IP转发 重定向 ICPM 重定向报文 IPv6 头部结构 IPv6 ...

2019-10-14 16:06:21 67 0

原创 《Linux高性能服务器编程》阅读笔记 之(一)TCP/IP 协议族

目录 TCP/IP 协议族体系架构以及主要协议 数据链路层 网络层 传输层 应用层 封装 分用 ARP 协议工作原理 以太网ARP请求/应答报文详解 ARP 高速缓存的查看和修改 DNS 工作原理 DNS 查询和应答报文详解 Linux 下访问 DNS 服务 使用 ...

2019-10-11 09:41:43 165 0

原创 归并排序

归并排序思路代码复杂度分析时间复杂度空间复杂度稳定性分析优势适用场景 思路 将数组对半分到长度为 1 为止,再逆向合并,合并的过程中进行排序。将轮数减少到了 logn。 代码 public class MergeSort{ public static void mergeSort(int[...

2019-10-08 11:05:01 97 0

原创 桶排序

桶排序思路代码复杂度分析时间复杂度空间复杂度稳定性分析优势适用场景 思路 非整形的计数排序,将数放到桶内,先将桶内排序,再整体排序。 k 个桶,最后一个桶用来放最大值,只有 k - 1 个跨度,这 k - 1 个跨度对应 k - 1 个桶。 所以跨度为 (max - min)/(k - 1) 数对...

2019-10-07 11:09:02 77 0

原创 计数排序

计数排序思路代码复杂度分析时间复杂度空间复杂度稳定性分析优势适用场景 思路 1.遍历原始数组 arr 找到最大值和最小值,确定计数数组 countArr 的范围 2.遍历 arr 并计数于 countArr 3.对 countArr 做调整,每个数等于前面的数之和 4.反向遍历 arr,对应 co...

2019-10-07 09:37:11 44 0

原创 堆排序

堆排序思路代码复杂度分析时间复杂度空间复杂度稳定性分析优势适用场景 思路 将数组看成二叉堆,如果是从小到大排序,先下沉为最大堆。再将堆顶的数(最大的数)逐轮与最后一个数交换并不将它纳入堆中,然后下沉。这样一来,每轮都能在数组最后得到这轮中最大的数。 代码 public class HeapSort...

2019-10-06 22:59:00 44 0

原创 快速排序

快速排序思路代码填坑法指针交换法复杂度分析时间复杂度空间复杂读稳定性分析 思路 利用分治的思想,每次选择一个 pivot,将小于 pivot 的数放在左边,大于 pivot 的数放在右边。左右两边再分别选择一个 pivot。 代码 填坑法 public class QuickSort{ ...

2019-10-06 20:45:40 67 0

原创 希尔排序

希尔排序思路代码复杂度分析时间复杂度空间复杂读稳定性分析 思路 插入排序适合大部分数有序。希尔排序为多轮等跨度插入排序。第一轮等跨度插入排序的跨度为 n/2,有 n/2 次插入排序。后面每轮跨度缩小到原来的一半。 代码 public class ShellSort{ public...

2019-10-06 19:12:38 56 0

原创 插入排序

插入排序思路代码复杂度分析时间复杂度空间复杂读稳定性分析 思路 第 i 轮,有序范围为 0 ~ i - 1,选择索引为 i 的数插入到前面合适的位置,使有序范围为 0 ~ i。需要 i - 1轮。 每一轮记录当前 i 的值,将前面比 i 的值大的,往后复制一位。发现比 i 的值小或等于的,将...

2019-10-06 18:12:00 31 0

原创 选择排序

选择排序思路代码复杂度分析时间复杂度空间复杂读稳定性分析 思路 第 i 轮从第 i 个数后面选择一个最小的数与第 i 个数交换。需要 n - 1轮,第 i 轮比较 n - i -1 次。 代码 public class SelectionSort{ public static v...

2019-10-06 17:39:04 39 0

原创 冒泡排序及两步优化

思路 数组长度为 n,每一轮将一个最大的数放到最右边,最后剩一个数不用排,n-1 轮就能排好。第 i 轮需要排 n - i -1 次。 代码 public class BubbleSort{ public static void bubbleSort(int[] arr) { ...

2019-10-06 17:13:54 93 0

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