- 博客(69)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Raft-分布式系统一致性解决方案
此贴非原创,仅仅是楼主的学习笔记。原帖:https://www.jianshu.com/p/8e4bbe7e276c目录针对简化版拜占庭将军问题,Raft 解决方案类比Raft结点的状态选主 Leader Election1. 正常情况下选主2. Leader出故障之后,选新主3. 多个 Candidate情况下的选主复制日志 Log Replication1. 正常情况下复制日志2. Netw...
2019-08-30 16:34:37
434
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 BitMap-字节映射算法[数据的压缩存储]
https://blog.csdn.net/lxlmycsdnfree/article/details/78926359 参考自大佬的博客,记录自己的学习心得一、出现了什么问题?当存储一个int数组时,假设数组长度是5, array = [1,2,5,7,11]。 此时数组在内存中占用了5*4bytes = 160bits;好像没什么问题。那如果数组长度是10亿呢?10亿 * 4 / (...
2019-04-27 17:27:27
1449
原创 暑期实习经历
感谢腾讯的遇见腾讯CDG事业群-FIT金融科技产品线-基础支付研发平台-订单交易开发组2019年3月开学以来,我便投入到暑期实习的求职中。但并不是一帆风顺的,其实可以说非常坎坷。幸好努力和运气一直在线,拿到了腾讯的实习offer。也幸好运气一直在线,实习小组是支付后台的核心,流量巨大,挑战也很大,leader和mentor对我都非常好,耐心的帮助我融入环境、教我支付架构、开发规范等等,最后转正...
2019-08-30 15:29:21
586
原创 学习笔记-大型网站架构演变过程
1、Web服务器(Http服务器 + 应用服务器)和数据库部署在同一个服务器主机上。此时,web服务器和数据库在处理业务时可能会互相限制。因此将web服务器和数据库分放在不同的主机上。结论:不满足服务器设计的高可用性目标, 因为无论是web服务器还是数据库出现问题,都会影响另一端。2、浏览器的请求分为静态资源请求(HTML页面、js脚本、css和img请求)和动态资源请求( jsp/php...
2019-06-18 16:10:49
324
原创 C++ 内存管理-对象池的设计与实现
前言对象池与内存池的设计思路大体相同,如果我们的程序需要对一个类的对象进行大规模的申请和释放,用内存池也没有问题。但是由于内存池的内存块大小可能会与对象的大小不一致,从而导致内存块的碎片相对较多,因此通过构建一个对象池,对某个类的对象的内存申请和释放进行管理。那么考虑一下对象池和内存池的区别?1、对象池管理的是某个类的对象的内存管理,内存池管理的是内存块。2、内存池重载了全局的new/de...
2019-06-13 21:01:10
969
1
原创 C++Socket 多线程编程 服务端收发数据业务分离
当前存在的问题在目前版本的网络通信引擎中,服务端收到数据(recv)后,会立即对给它发网络数据的客户端返回一个网络数据包(send),并且recv和send的做法是在同一个线程中的。那么存在什么问题呢? 我们都知道TCP是面向字节流的传输协议,TCP连接的双方都有一个数据缓冲区用来接收数据。那么如果一方发送的速度远大于另一方接收的速度时,可能会导致接收方的缓冲区满,从而导致网络阻塞。在同一个...
2019-06-07 20:11:29
2618
原创 C++Socket 多线程编程 定时和定量发送数据
C++ Socket API中 发送函数Send和接收函数Recv函数的调用不一定是1对1的关系。对于服务器来说,它收到了一个网络消息调用了一次Recv,并且需要回复给客户端并调用send函数,那么其实大多数情况下,send的调用次数会大于recv的调用次数。因为服务器收到了一个网络消息之后,可能要通知多个客户端,服务器要做的响应。考虑这样一个情景:构建一个 万人同服的网络游戏,需要对每个人做的...
2019-06-07 10:26:22
2507
1
原创 C++Socket 多线程编程 select/网络IO的性能瓶颈级优化
select I/O复用模型的工作机制是将想要检测的socket通过FD_SET宏将描述符放入到fd_set集合中,然后将fd_set这个描述符集合传入到select函数中进行检测。因此,每次在调用select函数之前,需要将想要检测的socket都放入fd_set中。那么当服务器检测的socket集合没有发生变化的时候,每次调用select函数都执行FD_SET宏将描述符放入到fd_set集...
2019-06-04 20:49:45
1702
原创 Leetcode 62,63,64(自顶向下的动态规划)
62题一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?63题一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标...
2019-06-03 11:34:38
321
原创 Leetcode 50: Pow(x,n) 快速幂初探
题目描述:实现 pow(x, n) ,即计算 x 的 n 次幂函数。示例 1:输入: 2.00000, 10 输出: 1024.00000示例 2:输入: 2.10000, 3 输出: 9.26100示例 3:输入: 2.00000, -2 输出: 0.25000如何用快速幂求a^10呢?假如我们现在知道了a^5的值,那么a的10次方只需要用 a的5次方乘以a的5...
2019-05-27 21:35:34
177
原创 STL源码剖析学习-深度探索Vector
补充知识:Iterator traits 萃取机Iterator是算法和容器之间的桥梁,算法在操作容器元素的过程中,需要了解Iterator,以便采取最佳的操作方式。算法常常会问迭代器的五种属性:1、iterator_category 迭代器的分类 (iterator支持++、–、随机跳跃?)2、iterator_difference_type 两个迭代器之间的距离应该用什么的表达。3...
2019-05-23 16:17:07
418
原创 LeetCode 42:接雨水
给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。示例:输入: [0,1,0,2,1,0,1,3,2,1,2,1]输出: 6解题思路:一个柱子最终接多少水,取决于这个柱子所在的接水区间。也就是说要找到...
2019-05-20 22:01:59
257
原创 leetcode:39 and 40 数组总和 回溯法
给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。 示例 1:输入: candidates = [2,3,6,7], target = 7,所求解集为:...
2019-05-16 21:22:48
254
原创 STL源码剖析学习-深度探索list
list的部分源码如右图的中间方框所示:一个关键的地方是,list是一个模板类,这个类的数据成员只有一个,那就是 link_type node; 那么link_type是什么呢? 向上看, typedef list_node* link_type; link_type是一个指针,指向了list_node的对象。既然link_type是一个指针,那么指针的大小在32位操作系统是4个字节,因此...
2019-05-07 22:11:16
299
原创 STL源码剖析学习-体系结构与内核分析-1
分配器(allocator)简说容器(Container)的背后需要分配器(allocator)支持对内存的使用和操作,但写程序时最好不要直接使用分配器,直接使用容器或者New/delete即可。下述是容器源码中隐藏使用的分配器代码,在使用容器的时候我们不需要显示调用分配器。通过源码也可以看出,在类模板中,分配器这个参数是缺省提供的。下述分配器的源码应该是GNUC的编译版本,VC中不一定适...
2019-05-07 15:41:15
328
原创 LeetCode: 21. Merge Two Sorted Lists / 23. Merge k Sorted Lists
21. Merge Two Sorted ListsMerge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.Example:Input: 1->2->4...
2019-05-07 10:18:19
144
原创 LeetCode: 22. Generate Parentheses
Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.For example, given n = 3, a solution set is:[ "((()))", "(()())", "(())()", "()(())",...
2019-05-05 20:09:48
144
原创 LeetCode 17. Letter Combinations of a Phone Number
Given a string containing digits from 2-9 inclusive, return all possible letter combinations that the number could represent. A mapping of digit to letters (just like on the telephone buttons) is giv...
2019-04-29 19:08:48
200
原创 LeetCode 16: 3Sum Closet
Given an array nums of n integers and an integer target, find threeintegers in nums such that the sum is closest to target. Return thesum of the three integers. You may assume that each input would...
2019-04-27 15:34:16
155
原创 LeetCode. 15:3sum
Given an array nums of n integers, are there elements a, b, c in nums such that a + b + c = 0? Find all unique triplets in the arraywhich gives the sum of zero.Note:The solution set must not con...
2019-04-27 10:35:13
124
原创 MySQL学习笔记—查询练习
1.首先建立几张表学生表Student:学号、姓名、性别、出生年月日、所在班级create table Student( sno varchar(20) primary key, sname varchar(20) not null, ssex varchar(2) not null, sbirthday datetime, classno varchar(20));课程表...
2019-04-22 18:55:57
595
原创 LeetCode: Atoi
假设我们的环境只能存储 32 位大小的有符号整数,那么其数值范围为 [−231, 231 − 1]。如果数值超过这个范围,qing返回 INT_MAX (231 − 1) 或 INT_MIN (−231) 。示例 1:输入: “42” 输出: 42 示例 2:输入: " -42" 输出: -42 解释: 第一个非空白字符为 ‘-’, 它是一个负号。我们尽可能将负号与后面所有连续出...
2019-04-20 22:06:27
268
原创 MySQL学习笔记:数据库的三大设计范式
–1. 第一范式 1NF数据表中的所有字段都是不可分割的原子值。create table student2( id int primary key, name varchar(20), address varchar(30));insert into student2 values (1,'张三','江苏省南京市栖霞区仙林大道163号');insert into student2...
2019-04-20 20:42:58
197
原创 MySQL学习笔记:外键约束
外键约束涉及到两个表:父表,子表;主表,副表;–设计一个班级表create table classes( id int primary key, name varchar(20));--学生表 // 学生表的class_id 来自于 班级表的id字段create table students( id int primary key, name varchar(20), c...
2019-04-20 20:13:28
191
原创 MySQL学习笔记:非空约束、默认约束
**1. --非空约束**–修饰的字段不能为空 NULLcreate table user6( id int, name varchar(20) not null);+-------+-------------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra ...
2019-04-20 19:56:06
2467
原创 MySQL学习笔记 唯一约束
– 唯一约束约束修饰的字段的值不可以重复create table user5( id int, name varchar(20));alter table user5 add unique(name);desc user5;表结构 name是一个UNI key,表明name不允许重复。+-------+-------------+------+-----+---------+-...
2019-04-20 17:32:45
122
原创 MySQL学习笔记 --主键约束
– 主键约束它能够唯一确定一张表中的一条记录,也就是通过给某个字段添加主键约束,就可以使得该字段不重复且不为空。create table user(id int primary key,name varchar(20));insert into user values(1,'张三');//重复添加两个主键相同的记录是不允许的, 主键为空的记录也是不允许的。mysql> i...
2019-04-20 17:22:11
250
原创 MySQL学习笔记 一、如何使用终端操作数据库?
– mysql 学习笔记– 关系型数据库-- 1、如何登陆数据库服务器mysql -uroot -p-- 2、如何查询数据库服务器中所有数据库mysql> show databases;+--------------------+| Database |+--------------------+| information_schema || mys...
2019-04-20 15:26:30
290
原创 LeetCode 5. Longest Palindromic Substring
Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.Example 1:Input: “babad” Output: “bab” Note: “aba” is also a valid answer.Example...
2019-04-20 11:36:17
122
原创 Leetcode 4 : Median of Two Sorted Arrays
There are two sorted arrays nums1 and nums2 of size m and n respectively.Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)).You may assume nums1 and num...
2019-04-19 15:11:59
144
原创 Leetcode 3. Longest Substring Without Repeating Characters
Given a string, find the length of the longest substring without repeating characters.Example 1:Input: “abcabcbb”Output: 3Explanation: The answer is “abc”, with the length of 3.Example 2:Input: ...
2019-04-18 22:20:24
127
原创 Leetcode 2. Add Two Numbers
You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return i...
2019-04-18 21:38:50
145
原创 Linux Shell编程 for循环
wget + url :从url下载1、打印数字循环,反引号 · · 代表是命令被执行#!/bin/bashfor i in `seq 1 15`do echo "The num is $i"done2、求1-100的和#!/bin/bash#auto sum 1-100#expr a+b = sumsum=0for((i=0;i<=100;i++))do...
2019-04-16 19:29:57
342
原创 Linux Shell 编程 IF条件语句
if (表达式)语句1else语句2fi1、case 1 : 测试数字大小#!/bin/bash#auto if test#by authors evilaNUM1=100NUM2=200if(($NUM1 > $NUM2));then echo "This $NUM1 greater $NUM2 !"else echo "This $NUM2 greate...
2019-04-16 13:55:27
1142
原创 Linux Shell编程 (从入门到放弃) 1、 变量及简单使用
//测试环境 Ubuntu18.0+ 虚拟机 终端//输入 touch helloshell //创建一个脚本gedit helloshell //使用文本编辑器打开脚本#!/bin/bash //第一行是shell脚本的固定何时 后三行是注解#Filename:helloshell#auto echo hello world!# by authors Evila 2019...
2019-04-16 11:09:52
216
原创 C++Socket 多线程编程 服务端1.7版本 多线程分组处理多客户端
之前在处理客户端多个socket连接服务端的程序运行时,例如1000个客户端;这1000个客户端socket连接到服务端需要花费相当长的时间。因此,本节对服务端的程序进行改进,使接受连接的select业务和接受发送数据的select业务分开。1、生产者和消费者模型生产者线程处理客户端连接的请求,并将新接入的客户端socket安排到消费者线程的处理队列中。消费者线程,每个线程增加一个消息队列...
2019-04-15 22:15:28
1223
5
原创 C++Socket 多线程编程 客户端1.7版本 多线程分组模拟高频发送数据
1、客户端1.7版本 多线程分组模拟高频发送数据如上图所示的多线程客户端结构,启动多个线程对客户端进行socket创建->连接->发送的业务;//客户端socket连接数量const int cCount = 1000;const int tCount = 4; //线程数量//客户端socket数组EasyTcpClient* client[cCount];mutex ...
2019-04-15 11:14:18
643
原创 剑指Offer: 链表中环的入口节点
给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。个人思路:链表中的环也就是出现次数超过1次的节点;std::map 可以很好的实现计数功能。踩一个坑,map模板的第一个参数,传入指针比传入结构体要好,且不需要去重载map的相关操作(如果传入结构体)。 ListNode* EntryNodeOfLoop(ListNode* pHead) { ...
2019-04-14 22:16:00
129
原创 C++ 多线程、锁、临界区、自解锁与原子操作
C++ 11 引入了线程库, #include <thread>一般简单的,编写一个线程执行的函数,传递给thread去开启线程,就可以简单的实现多线程程序。void WorkFun(int param){ ... for(int i = 0;i<4;i++) { cout<<param<<"Hello, other thread." &l...
2019-04-14 17:32:51
1387
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人