彻底讲清楚ZooKeeper分布式锁的实现原理

本文转载自石杉的架构笔记 一、写在前面 之前写过一篇文章(《拜托,面试请不要再问我Redis分布式锁的实现原理》),给大家说了一下Redisson这个开源框架是如何实现Redis分布式锁原理的,这篇文章再给大家聊一下ZooKeeper实现分布式锁的原理。 同理,我是直接基于比较常用的Curator这个开源框架,聊一下这个框架对ZooKeeper(以下简称zk)分布式锁的实现。 一般除了大公司是自行封装分布式锁框架之外,建议大家用这些开源框架封装好的分布式锁实现,这是一个比较快捷省事儿的方式。
分类: 其他 发布时间: 01-01 21:34 阅读次数: 0

全文最详细的Linux命令系列-ls命令

Linux开始必须要会的命令当属ls,在日常工作中用到ls命令时的频率是很多的,作为一个初学者,可能我只会或者顶多ls -l两种用法。但是ls其实是一个非常实用的指令,ls命令就是list的缩写,ls默认是打印出来当前的目录的清单、如果ls用来查看指定目录,那么就会显示指定目录里的文件几文件夹清单。通过ls命令不仅可以查看linux目录中包含的文件,而且可以查看文件权限(包括目录、文件夹、文件权限)。 命令1. ls -a 列出文件下所有的文件,包括“.”开头的隐藏文件(linux下文件的隐藏
分类: 其他 发布时间: 01-01 21:34 阅读次数: 0

AT指令之 TCP/IP 命令

BC26 还有一组专用于 TCP 通信的 AT 指令:《BC26_TCP/IP_AT_Commands_Manual_V1.1》,之前已经有了 Socket 可以进行 TCP 通信,现在又出一个 TCP/IP。或许就是 C# 中的 Socket 与 TCPClient 之间的关系吧,也有可能是早期出了一个简单版本的可用于 TCP 编程的 Socket,之后又出一个功能更为强大的 TCP/IP,而为了兼容老程序,保留了 Socket 而已。总之,前面弄过的东西需要再来一遍。当然 TCP/IP 指
分类: 其他 发布时间: 01-01 21:34 阅读次数: 0

jquery笔记5——jquery中事件绑定方式

jquery中事件绑定方式 一.JavaScript中事件绑定方式: 1.嵌入式绑定:<input type="button" onclick="fun1()"> 缺点:一次只能为一个标签绑定监听事件 2.基于dom对象绑定方式: var array = document.getElementsByName("ck"); for(var i=0;i<array.length;i++){ var domobj = array[i]; domobj.onclick = fun1(); } 缺点:需
分类: 其他 发布时间: 01-01 21:34 阅读次数: 0

软件测试之接口测试系列八

使用postman进行接口测试 1.postman的简介与安装   postman的版本:chrome插件、独立APP版   下载网址:https://dl.pstmn.io/download/latest/win64        https://dl.pstmn.io/download/latest/osx   postman安装:双击下载的软件,自动安装,可以通过QQ邮箱注册,也可以不用注册。    pstmn-psw:birthday+@+3     2.简单使用postman发送一个
分类: 其他 发布时间: 01-01 21:34 阅读次数: 0

Topcoder RandomPaintingOnABoard

RandomPaintingOnABoard \(n\times m\) 的棋盘,每个位置有 \(p_{i,j}\)。每轮 \((i,j)\) 被选中的概率为 \(\frac{p_{i,j}}{sum}\)。 问⾄少⼏轮后每⼀⾏⼀列⾄少⼀个被选中。 \(nm\leq 150,\max\{n,m\}\leq 21,0\leq p_{i,j}\leq 9\)。 题解 显然是min-max容斥。如何DP呢? 注意到 \(nm\leq 150\),那么 \(\min\{n,m\}\leq 12\)。假
分类: 其他 发布时间: 01-01 21:34 阅读次数: 0

cf1270E —— 奇偶构造!+ 坐标系分类讨论旋转

/* d = (xa-xb)^2+(ya-yb)^2 01010101 10101010 01010101 10101010 按棋盘分组,0为白格,1为黑格 同组的情况:(xa-xb)奇数,那么(ya-yb)必为奇数 (xa-xb)偶数,那么(ya-yb)必为偶数 所以 d 最后必定是偶数 异组的情况:(xa-xb)奇数,那么(ya-yb)必为偶数 (xa-xb)偶数,那么(
分类: 其他 发布时间: 01-01 21:34 阅读次数: 0

转:WinInet, WinHttp, Winsock, ws2_32的区别和联系

在Windows平台进行网络程序开发, 可以使用不同的库, 但是最常用的还是微软自己开发的库。具体说来,有: (1)Winsock,工作于网络层和传输层的开发库,对于编写TCP,UDP,以及原始IP通信程序非常合适。函数原形也基本符合Unix socket标准。Windows平台上的大多数程序,如QQ,讯雷等都基于其开发。 (2)ws2_32,是Winsock的升级版本,在兼容的基础上增加了不符合Unix socket标准,但更适合Windows平台的库函数,一般以WSA*开头。 现代的大多数
分类: 其他 发布时间: 01-01 21:34 阅读次数: 0

C# compare different Encoding pattern between UTF8 and UTF32 based on Md5

1 using System; 2 using System.Text; 3 using System.IO; 4 using System.Security.Cryptography; 5 6 static void Main(string[] args) 7 { 8 CompareFileGetBytes("lyf.txt"); 9 Console.ReadLine(); 10
分类: 其他 发布时间: 01-01 21:34 阅读次数: 0

配置路由器ipv6访问(padavan&mi_r2d)

研一和研二因为有张无限流量的校园联通卡,所以一直没在意上网的事情。研三最后半个学期没有流量真是难受的要死。东北大学校园网ipv6出口免流量,家里移动的网络有ipv6,有几次放假回家都想着配好了能在学校用,之前没动力,也就没怎么仔细研究,到毕业了都没搞出来。最后一个学期用着vps的ipv6代理,由于海外ip,视频网站还不能看,网速还不确定,憋屈。 这次毕业了在家没事干,倒是把ipv6配出来了。。。记录一下自己踩的坑吧,其实就一层窗户纸,哎。 0.验证网络是否有ipv6 我家的网络环境,光纤入户,
分类: 其他 发布时间: 01-01 21:34 阅读次数: 0

1027 打印沙漏 (20分)

思路: java代码如下: //打印沙漏 //an=2n-1; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int num=sc.nextInt(); String outputStr=sc.next(); St
分类: 其他 发布时间: 01-01 21:34 阅读次数: 0

引用类型 位置方法 indexOf()和 lastIndexOf()

indexOf()和 lastIndexOf() 这两个方法都接收两个参数:要查找的项和(可选的)表示查找起点位置的索引 indexOf()方法从数组的开头(位置 0)开始向后查找 lastIndexOf()方法则从数组的末尾开始向前查找 这两个方法都返回要查找的项在数组中的位置,或者在没找到的情况下返回-1。 在比较第一个参数与数组中的每一项时,会使用全等操作符;也就是说,要求查找的项必须严格相等(就像使用===一样)。 查找元素在数组中的下标,如果没有查找到返回-1 arr.indexOf
分类: 其他 发布时间: 01-01 21:34 阅读次数: 0

使用vs code 开发python

1.下载vs code 2.下载python插件 使用ctrl+p,输入“ext install python" 3.选取python解释器 使用Ctrl+Shift+P打开命令板,输入Python: Select Interpreter进行搜索。 4.设置中文 使用快捷键组合【Ctrl+Shift+p】,在搜索框中输入“configure display language”,点击确定后; 5.配置flake8和yapf a.打开命令行 b.输入pip install flake8    pi
分类: 其他 发布时间: 01-01 21:34 阅读次数: 0

Windos framework .net 3.5规则失败

1. 安装的时候有一个.net警告,这里给后边造成了一个隐患,实际上是wondows少了一个framework .net的插件,跟SQLserver安装本身没关系,一开始忽略了,后边就报错了。 2.点击下一步 3.上边的隐患报错了,“需要microsoft .net framework 3.5 service pack 1规则失败”这里可以下载一个framework 3.5的插件,这里解释一下网上有的教程直接打开“程序和功能->启用或关闭windows功能->将未勾选的 .NET Framew
分类: 其他 发布时间: 01-01 21:34 阅读次数: 0

ECMAScript 6 基础

1. ECMAScript 6简介 JavaScript 三大组成: ECMAScript JS中的数据类型以及相关操作,流程控制,运算符及相关运算... 都是ECMAScript的 DOM 文档的一些操作: 文档对象模型 BOM 浏览器对象模型: 窗口尺寸,历史记录管理,滚动条位置...
分类: 其他 发布时间: 01-01 21:34 阅读次数: 0

jQuery笔记4——jQuery对象中【功能函数】

jQuery对象中【功能函数】 一.show() & hide(): show(可以加时间):负责让jQuery对象包含的所有dom对象关联的标签在浏览器上显示 即:style="display:block" hide(可以加时间):负责让jQuery对象包含的所有dom对象关联的标签在浏览器上隐藏 即:style="display:none" 二.empty() & remove(): empty: 将当前标签子标签进行清除处理 remove: 将当前标签及其子标签一并删除 三.append
分类: 其他 发布时间: 01-01 21:34 阅读次数: 0

吴裕雄--天生自然JAVA SPRING框架开发学习笔记:Spring CGLlB动态代理

JDK 动态代理使用起来非常简单,但是它也有一定的局限性,这是因为 JDK 动态代理必须要实现一个或多个接口,如果不希望实现接口,则可以使用 CGLIB 代理。 CGLIB(Code Generation Library)是一个高性能开源的代码生成包,它被许多 AOP 框架所使用,其底层是通过使用一个小而快的字节码处理框架 ASM(Java 字节码操控框架)转换字节码并生成新的类。因此 CGLIB 要依赖于 ASM 的包,解压 Spring 的核心包 spring-core-3.2.2.RE
分类: 其他 发布时间: 01-01 21:34 阅读次数: 0

关于Michael Nielsen的mnist测试代码import mnist_loader失败

我先在https://github.com/mnielsen/neural-networks-and-deep-learning上面下载了Michael Nielsen大神的mnist测试集数据和代码的压缩包,解压,然后在cmd里进入虚拟环境py27里,然后import mnist_loader,结果提示我找不到包。 我去下载下来的压缩包解压后的文件夹里去看了看,发现mnist_loader是一个py文件(mnist_loader.py),还注意到它的绝对路径是C:\neural-networ
分类: 其他 发布时间: 01-01 21:34 阅读次数: 0

windows定时重启

先准备好脚本restart.bat 新建一个txt,写入shutdown shutdown -s -t 10 十秒后重启,更改后缀为.bat批处理文件,切记编辑好后缀千万不要直接点开,否则就会直接调用然后重启,一定要注意这个,所以这个文件的路径最好放的深一点 如果不是测试,点开就会重启,可以右键编辑,如果想取消关机计划,可以在进行用Win+R组合,然后输入shutdown –a 取消计划关机,上边的10秒关机可以自己调整。 1.搜索任务计划程序 2.打开任务计划程序 3.新建任务 3.编辑任务
分类: 其他 发布时间: 01-01 21:34 阅读次数: 0

[vue学习]快速搭建一个项目

安装node.js 官网:https://nodejs.org/en/ 淘宝NPM镜像(npm是外网,用国内代理下载安装贼快) $ npm install -g cnpm --registry=https://registry.npm.taobao.org 全局安装 vue-cli $ cnpm install --global vue-cli 创建一个基于 webpack 模板的新项目 $ vue init webpack my-project 在命令行输出以上的命令后,出现一些项目的初始选
分类: 其他 发布时间: 01-01 21:34 阅读次数: 0