- 博客(84)
- 资源 (3)
- 收藏
- 关注
转载 一致性哈希算法及其在分布式系统中的应用
本文将会从实际应用场景出发,介绍一致性哈希算法(Consistent Hashing)及其在分布式系统中的应用。首先本文会描述一个在日常开发中经常会遇到的问题场景,借此介绍一致性哈希算法以及这个算法如何解决此问题;接下来会对这个算法进行相对详细的描述,并讨论一些如虚拟节点等与此算法应用相关的话题。假设我们有一个网站,最近发现随着流量增加,服务器压力越来越大,之前直接读写数据库的方式不太给力了,于是我们想引入 Memcached 作为缓存机制。
2023-07-17 14:18:30
200
转载 typedef 定义数组类型用法
/ T 是具有 NunVertex 个元素的 struct TableEntry 数组。通过查看《 C Primer Plus 》中 typedef 的相关用法,找到答案。这条语句定义了一个含有 NunVertex 个元素的结构体数组类型。看到一条 typedef 语句,不明白其意义。typedef 关键字有如下用法。
2022-10-04 11:33:40
579
转载 中缀转后缀表达式【DS-栈】
继续遍历,遇到 +,因为 + 的优先级低于栈顶的 *,故将 * 弹出;继续遍历,遇到 +,因为 + 比栈顶 * 的优先级低,故将 * 弹出;继续遍历,遇到 *,因为栈顶为 (, 不遇到) 不将(弹出, 故直接将 * 放入栈中。继续遍历,遇到 *,因为 * 的优先级大于栈顶元素 + 的优先级,故直接将 * 入栈。继续遍历,遇到 *,因为 * 的优先级大于栈顶的 +,所以将 * 放入栈内。继续遍历,遇到 (,直接将其放入栈中,不遇到) 不会将(弹出。继续遍历,为空,遍历结束。继续遍历,遇到 +,将其放入栈中。
2022-10-03 17:15:55
302
转载 详解引用「&」与指针「*」
事实上,在 main 函数中声明了一个指针 p,并赋值为 NULL,当调用 test 函数时,事实上传递的也是地址,只不过传递的是值地址。当把指针作为参数进行传递时,也是将实参的一个拷贝传递给形参,即上面程序 main 函数中的 p 和 test 函数中使用的 p 不是同一个变量,存储 2 个变量 p 的单元也不相同,即两个指针它们自己的地址不同(只是 2 个 p 指向同一个存储单元,里面保存的是同样的值),那么在 test 函数中对 p 进行修改,并不会影响到 main 函数中的 p 的值。
2022-10-02 11:39:23
589
原创 522. 最长的特殊序列 II
时间复杂度:O(n2⋅l),其中n是数组strs的长度,l是字符串的平均长度。时间复杂度:O(n^2 \cdot l),其中 n 是数组 \textit{strs} 的长度,l 是字符串的平均长度。时间复杂度:O(n2⋅l),其中n是数组strs的长度,l是字符串的平均长度。解法思路操作细粒度为 str[i] 而非 str[i]的各子序列双指针的应用两两比较字符串比较两字符串是否有子串关系...
2022-06-30 11:58:44
174
原创 RSA加密:非对称密钥,公开密钥算法
具体是利用了:对两个质数相乘容易,而将其合数分解很难的这个特点进行的加密算法。n=p1*p2,已知 p1、p2 求 n 简单,已知 n 求 p1、p2 困难。(m^e) mod n=c,已知 m、e、n 求 c 简单,已知 e、n、c 求 m 很难。RSA 加密,实现了公开密钥,就是 A 可以给所有人发送锁,其他人把要加密的信息用这把锁加密后发送给 A,A 用自己的钥匙开锁就可以获得加密的信息了。反过来,A 要发送加密信息给 B,只要知道 B 的锁就可以了,而这个锁是公开的。随机选取两个质数 p1、p2,n
2022-06-29 16:29:08
1007
原创 水库抽样算法【文字描述、代码实现、数学原理】
水库抽样算法是一个典型的空间亚线性算法。水库抽样的要求是,每一时刻取到的样本都是前面已经流过的全部数据的均匀抽样。连续输入一组未知大小的数据,输出这组数据的 k 个均匀抽样申请长度为 k 的数组A保存抽样 (此处下标用 1~k 表示);首先保存接收到的前 k 个数据;当接收到第 i 个数据 t 时,生成 [1,i] 间的随机数 j, 若 j...
2022-06-11 11:57:04
1152
转载 MySQL实战45讲_8_从一个问题来加深对 mysql 可重复读的理解
我用下面的表结构和初始化语句作为试验环境,事务隔离级别是可重复读。现在,我要把所有 “字段 c 和 id 值相等的行” 的 c 值清零,但是却发现了一个 “诡异” 的、改不掉的情况。请你构造出这种情况,并说明其原理。...
2022-06-05 09:38:07
151
原创 opencv的java-maven-idea开发环境配置
OpenCV用C++语言编写,它的主要接口也是C++语言,但是依然保留了大量的C语言接口。该库也有大量的Python, Java and MATLAB/OCTAVE (版本2.5)的接口毕竟不是亲儿子,所以使用java去调opencv库或许没有c草方便,但这对于c艹阴影者来说不算什么1.找jar包opencv官网里点进去 releases曾试过在maven中央仓库找坐标,但因为里面官方的版本老旧,各式封装商林立,所以还是去opencv官网下载想要的jar包为好选择想用的版.
2022-05-05 21:17:15
6113
6
原创 数组切分【Java蓝桥杯】
第十三届蓝桥杯大赛软件赛省赛 Java 大学 B 组试题 G: 数组切分时间限制: 1.0s 内存限制: 512.0MB 本题总分:20 分题目【问题描述】已知一个长度为 N 的数组:A1, A2, A3, …AN 恰好是 1 ∼ N 的一个排列。现在要求你将 A 数组切分成若干个 (最少一个,最多 N 个) 连续的子数组,并且 每个子数组中包含的整数恰好可以组成一段连续的自然数。例如对于 A = {1, 3, 2, 4}, 一共有 5 种切分方法:{1}{3}{2}{4}:每个单独的数
2022-04-11 09:53:06
1232
1
转载 [总结] 由数据范围反推算法复杂度以及算法内容(总结+时间复杂度+空间复杂度)
由数据范围反推算法复杂度以及算法内容(总结+时间复杂度+空间复杂度)
2022-04-05 10:27:50
115
原创 梅森素数、猜年龄、啤酒饮料、武功秘籍、调和级数、李白打酒、猜字母、扩散、三升序列、寻找2020
梅森素数题目如果一个数字的所有真因子之和等于自身,则称它为“完全数”或“完美数”例如:6 = 1 + 2 + 328 = 1 + 2 + 4 + 7 + 14早在公元前300多年,欧几里得就给出了判定完全数的定理:若 2^n - 1 是素数,则 2^(n-1) * (2^n - 1) 是完全数。其中 ^ 表示“乘方”运算,乘方的优先级比四则运算高,例如:2^3 = 8, 2 * 2^3 = 16, 2^3-1 = 7但人们很快发现,当n很大时,判定一个大数是否为素数到今天也依然是个难题。
2022-03-30 10:07:02
232
转载 hashCode,equals 方法重写
如何重写equals()方法如果你决定要重写equals()方法,那么你一定要明确这么做所带来的风险,并确保自己能写出一个健壮的equals()方法.一定要注意的一点是,在重写equals()后, 一定要重写hashCode()方法.具体原因稍候再进行说明.我们先看看 JavaSE 7 Specification中对equals()方法的说明:It is reflexive: for any non-null reference value x, x.equals(x) should retur
2022-03-29 14:14:12
1006
原创 高斯日记、猜年龄、世纪末的星期、排他平方数、马虎的算式、振兴中华、组素数、第39级台阶
高斯日记题目大数学家高斯有个好习惯:无论如何都要记日记。他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢?高斯出生于:1777年4月30日。在高斯发现的一个重要定理的日记上标注着:5343,因此可算出那天是:1791年12月15日。高斯获得博士学位的那天日记上标着:8113请你算出高斯获得博士学位的年月日。
2022-03-28 22:45:33
573
原创 Servlet工作流程、类图、请求转发、重定向解读
Servlet工作过程图示:文字:客户端向服务器端发送HTTP请求服务器端容器解析该请求容器去创建Servlet实例调用Servlet实例的 init() 方法调用Servlet实例的 service() 方法Servlet实例向容器输出响应信息容器将响应信息回传给客户端容器调用Servlet实例的 destroy() 方法容器与实例关系Servlet 接口 定义了 Servlet 与 Servlet 容器之间的契约,Servlet 容器将 Servlet 类载入内存
2022-03-23 11:56:56
2196
转载 单例模式(Singleton Pattern)【5/23】
5. 单例模式(Singleton Pattern)目录单例模式模式动机模式定义模式结构时序图代码分析模式分析实例优点缺点适用环境模式应用模式扩展总结5.1. 模式动机对于系统中的某些类来说,只有一个实例很重要,例如,一个系统中可以存在多个打印任务,但是只能有一个正在工作的任务;一个系统只能有一个窗口管理器或文件系统;一个系统只能有一个计时工具或ID(序号)生成器。如何保证一个类只有一个实例并且这个实例易于被访问呢?定义一个全局变量可以确保对象随时都可以被访问,
2022-03-10 10:05:07
353
转载 建造者模式(Builder Pattern)【4/23】
4. 建造者模式(Builder Pattern)目录建造者模式模式动机模式定义模式结构时序图代码分析模式分析实例优点缺点适用环境模式应用模式扩展总结4.1. 模式动机无论是在现实世界中还是在软件系统中,都存在一些复杂的对象,它们拥有多个组成部分,如汽车,它包括车轮、方向盘、发送机等各种部件。而对于大多数用户而言,无须知道这些部件的装配细节,也几乎不会使用单独某个部件,而是使用一辆完整的汽车,可以通过建造者模式对其进行设计与描述,建造者模式可以将部件和其组装过程
2022-03-10 09:18:04
129
转载 抽象工厂模式(Abstract Factory)【3/23】
3. 抽象工厂模式(Abstract Factory)目录抽象工厂模式(Abstract Factory)模式动机模式定义模式结构时序图代码分析模式分析实例优点缺点适用环境模式应用模式扩展“开闭原则”的倾斜性工厂模式的退化总结3.1. 模式动机在工厂方法模式中具体工厂负责生产具体的产品,每一个具体工厂对应一种具体产品,工厂方法也具有唯一性,一般情况下,一个具体工厂中只有一个工厂方法或者一组重载的工厂方法。但是有时候我们需要一个工厂可以提供多个产品对
2022-03-10 09:00:27
266
原创 【2104】子数组范围和
总结:处理数组的子数组相关问题:用两个for循环 ,i,j 下标表示每种子数组情况,再继续求解给你一个整数数组 nums 。 我们首先枚举子数组的左边界 i,然后枚举子数组的右边界 j,且 i≤j。在枚举 j 的过程中我们可以迭代地计算子数组 nums 中,子数组的 范围 是子数组中最大元素和最小元素的差值。返回 nums 中 所有 子数组范围的 和 。子数组是数组中一个连续 非空 的元素序列。示例 1:输入:nums = [1,2,3]输出:4解释:nums 的 6 个子数组
2022-03-09 21:03:05
172
转载 工厂方法模式(Factory Method Pattern)【2/23】
2. 工厂方法模式(Factory Method Pattern)目录工厂方法模式(Factory Method Pattern)模式动机模式定义模式结构时序图代码分析模式分析实例工厂方法模式的优点工厂方法模式的缺点适用环境模式应用模式扩展总结2.1. 模式动机现在对该系统进行修改,不再设计一个按钮工厂类来统一负责所有产品的创建,而是将具体按钮的创建过程交给专门的工厂子类去完成,我们先定义一个抽象的按钮工厂类,再定义具体的工厂类来生成圆形按钮、矩形按钮、菱形按钮
2022-03-09 09:27:58
278
转载 简单工厂模式(Simple Factory Pattern)【1/23】
1.简单工厂模式( Simple Factory Pattern )目录简单工厂模式( Simple Factory Pattern )模式动机模式定义模式结构时序图代码分析模式分析实例简单工厂模式的优点简单工厂模式的缺点适用环境模式应用总结1.1. 模式动机考虑一个简单的软件应用场景,一个软件系统可以提供多个外观不同的按钮(如圆形按钮、矩形按钮、菱形按钮等), 这些按钮都源自同一个基类,不过在继承基类后不同的子类修改了部分属性从而使得它们可以呈现不同的外观,如果
2022-03-09 09:18:29
863
转载 读懂时序图
UML建模之时序图(Sequence Diagram)时序图简介(Brief introduction)时序图元素(Sequence Diagram Elements)角色(Actor)对象(Object)生命线(Lifeline)控制焦点(Focus of Control)消息(Message)自关联消息(Self-Message)Combined Fragments时序图实例分析(Sequece Diagram Example Analysis)时序图场景时序图实例时
2022-03-09 09:04:08
6001
转载 读懂UML类图
UML类图从一个示例开始请看以下这个类图,类之间的关系是我们需要关注的:车的类图结构为<>,表示车是一个抽象类;它有两个继承类:小汽车和自行车;它们之间的关系为实现关系,使用带空心箭头的虚线表示;小汽车为与SUV之间也是继承关系,它们之间的关系为泛化关系,使用带空心箭头的实线表示;小汽车与发动机之间是组合关系,使用带实心箭头的实线表示;学生与班级之间是聚合关系,使用带空心箭头的实线表示;学生与身份证之间为关联关系,使用一根实线表示;学生上学需要用到自行车,与自行车是一种依赖
2022-03-09 08:54:15
274
转载 里氏代换原则详解
里氏代换原则定义里氏代换原则(Liskov Substitution Principle LSP)面向对象设计的基本原则之一。里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。 里氏代换原则是对“开-闭”原则的补充。实现“开-闭”原则的关键步骤就是抽象化。而基类与子类的继承关系就是抽象化的具体实现,所以里氏代换原则是对实现抽象化的具体步骤的规
2022-03-09 08:43:40
1382
3
原创 鸟哥的Linux私房菜(第四版)读书笔记
鸟哥的Linux私房菜(第四版)读书笔记最佳实践如果是在写程序 (shell scripts) 来管理系统的条件下,务必使用绝对路径的写法如果是网络服务的问题时,请到/var/log/这个目录里头去查阅一下 log file(登录文件),这样可以几乎解决大部分的问题了开机自动挂载可参考/etc/fstab之设置,设置完毕务必使用 mount -a 测试语法正确否;建议您在学习 tar 时,将“ -f filename ”与其他选项独立出来,会比较不容易发生问题如果你并不觉得时间是你的成本考虑,
2022-02-06 13:28:16
801
原创 Maven实战读书笔记
Maven实战 许晓斌我认为Maven陡峭的学习曲线和匮乏的文档是当时最主要的问题。为了能改善这个问题,,我开始在博客中撰写各类关于Maven的中文博客,翻译了O’Reilly出版的《Maven权威指南》一书,并建立了国内的Maven中文社区,不定期的回答各类Maven相关问题,这在一定程度上推动了Maven这一优秀的技术在国内的传播老板Yin亲手烘焙咖啡豆、并能做出据说是苏州最好的咖啡—苏州十全街边的Solo咖啡馆最佳实践使用Maven最高效的方式永远是命令行约定优于配置(Con
2022-02-03 21:27:47
485
原创 eratosthenes筛法--关于素数
埃拉托斯特尼筛法(希腊语:κόσκινον Ἐρατοσθένους,英语:sieve of Eratosthenes ),简称埃氏筛,也称素数筛。这是一种简单且历史悠久的筛法,用来找出一定范围内所有的素数。所使用的原理是从2开始,将每个素数的各个倍数,标记成合数。一个素数的各个倍数,是一个差为此素数本身的等差数列。此为这个筛法和试除法不同的关键之处,后者是以素数来测试每个待测数能否被整除。截取维基百科的解释:...
2022-01-24 21:56:26
410
原创 图解向后兼容、向前兼容
图解向后兼容、向前兼容向后兼容(backward compatibility) 又称:向下兼容(downward compatibility)、回溯兼容向前兼容(Forward Compatibility) 又称:向上兼容(Upward Compatibility) forward有 未来的意思,可理解成:向未来,向以后兼容...
2022-01-24 20:21:51
540
原创 Restful风格是什么
Restful是种架构风格Representational State Transfer :表现层状态转化设计每一个URI代表一种资源客户端和服务器之间,传递这种资源的某种表现层客户端通过四个HTTP动词,对服务器端资源进行操作,实现"表现层状态转化"GET(SELECT):从服务器取出资源(一项或多项)POST(CREATE):在服务器新建一个资源PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)DELETE(DELETE):从服务器删除资源(补充:PATC
2022-01-21 22:04:35
379
原创 什么叫有状态,无状态
什么叫有状态,无状态先说结论:无状态当前的操作不需要历史信息的支持,一般都是短连接,比如在某个新闻网站上浏览新闻等。当从服务器获取资源后就可以和服务器断开连接有状态当前操作需要历史数据的支持,比如网络游戏、角色的各种属性、升级和装备都需要历史数据的支持。不能说已断开连接就重头开始。我们在学Cookie和Session技术时,提过HTTP是无状态的协议在接触restful风格时,提到说:所有的操作都是无状态的所以对状态的理解,可以是,它只代表、负责它自己,叫无状态我爱
2022-01-21 21:34:34
568
原创 常见状态码【快醒醒,你的代码500了】
状态码(Status Codes)服务器向用户返回的状态码和提示信息,常见的有以下一些(方括号中是该状态码对应的HTTP动词)。200 OK - [GET]服务器成功返回用户请求的数据,该操作是幂等的(Idempotent)。201 CREATED - [POST/PUT/PATCH]用户新建或修改数据成功。202 Accepted - [*]表示一个请求已经进入后台排队(异步任务)204 NO CONTENT - [DELETE]用户删除数据成功。400 IN
2022-01-21 21:23:50
924
转载 servlet的URL匹配规则
一、概述在利用servlet或Filter进行url请求的匹配时,很关键的一点就是匹配规则,但servlet容器中的匹配规则既不是简单的通配,也不是正则表达式,而是由自己的规则,比较容易混淆。本文来详细举例介绍下。下面的说明都是在tomcat服务器中得到验证的。先介绍一下匹配的概念,上例子代码。在一个app(如名字为myapp)的web.xml文件中,有如下信息:<servlet> <servlet-name>MyServlet</servlet-name&g.
2022-01-21 20:36:27
410
转载 时间复杂度分析之Master公式
Master公式T(N) = a * T (N / b) + O (N ^ d)log(b,a) > d -> 复杂度为 O ( N ^ log(b,a) )log(b,a) = d -> 复杂度为 O ( N ^ d * log N )log(b,a) < d -> 复杂度为 O ( N ^ d )
2022-01-15 16:20:45
222
原创 DDL,DML,DQL,DCL浅谈含义用法
SQL分类DDL(Data Definition Language) : 数据定义语言,用来定义数据库对象:数据库,表,列等DDL简单理解就是用来操作数据库,表等DML(Data Manipulation Language) 数据操作语言,用来对数据库中表的数据进行增删改DML简单理解就对表中数据进行增删改DQL(Data Query Language) 数据查询语言,用来查询数据库中表的记录(数据)DQL简单理解就是对数据进行查询操作。从数据库表中查询到我们想要的数据。D
2022-01-15 15:43:03
671
原创 相对路径的得到方法
痛点当涉及IO流,写文件路径时,不想写绝对路径,但相对路径又不确定 Properties properties = new Properties(); //问号处是写“src/druid.properties”, //还是“jdbc-demo/src/druid.properties”? properties.load(new FileReader("?")); DataSource dataSource = DruidDataSourc
2022-01-13 22:19:57
238
原创 一对多,多对多,一对一,数据库设计
数据库设计–表关系设计实现一对多实现方式在多的一方建立外键,关联一的一方主键多对多实现方式建立第三张中间表中间表至少包含2个外键,分别关联双方主键也可以添加其他字段,实现业务需求一对一实现方式在任意一方建立外键,关联对方主键,并设置外键唯一设计一对一,可用来提高查询效率...
2022-01-13 11:38:30
424
原创 【思特奇杯·云上蓝桥-算法集训营】第1周
Q:2 3 5 10 12 13 来自Ctrl CV题目链接Qpackage praxis;import org.junit.Test;public class Week1_1 { //per-second private final int consume = 600; //per-min private final int recover = 300; //per-min private int energy = 10000; //tot.
2022-01-07 17:08:39
326
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人