- 博客(22)
- 资源 (3)
- 收藏
- 关注
原创 数据库分库分表方案
数据库的拆分方式有两种:水平拆分和垂直拆分。水平拆分关注的单表数据量过大的问题,对于上千万过亿行数据的表来说,单表数据量过大,查询和变更的成本会变大,同时单库的吞吐量也会达到瓶颈,会同时对业务造成影响。水平拆分的目的就是为了将单表拆分为多表,每个表仍包含原有的数据结构。而垂直拆分关注的是表结构的拆分,我们需要根据业务的维度,将原本一个表拆分为多个表,其中每个表的结构与原表不同,这样不同的业务就可以...
2020-04-19 16:23:03
728
原创 开启数据库中间件之路
一、业务背景1、为什么需要中间件?谈起为什么需要数据库中间件,我们首先谈谈一个典型的网站架构演进。系统架构随着业务的变化演进,从而推动各种技术的发展,而数据库中间件技术就是在架构演进中出现的。(1)初始架构方案初始架构如上图所示。我们初始在单机上同时部署tomcat和DB。客户端访问的时候,首先通过DNS解析获得我们服务端的机器ip,然后通过网络连接,连接到Tomcat,然后后...
2020-04-13 20:37:55
245
原创 数据库中间件起源之一-我怎么入坑了
1、谈谈自己为什么要写这个?我是2018年7月份毕业的,2018年4月份就进入公司实习,在实习过程中接触java,接触java中间件。从实习算起也是工作有两年的时间了,两年时间说长不长,说短也不短。后来随着公司业务发展,我也转向大数据开发,不再做数据库中间件的升级开发工作,但其间一直在维护公司的数据库中间件,对公司数据库中间件源码做过一些阅读和分析,学习到很多东西。到今天或许以后,再做中间件开...
2020-04-07 20:12:22
228
原创 ZooKeeper产生的背景
在上一篇文章中提到,ZK是一个分布式的、开源的、分布式应用程序协调服务。这其中提到三个概念分布式、开源和协调服务。开源很好理解,ZK代码的源代码你可以在网上找到,你也可以自己修改和发布,这都是基于开源协议而来的。在全球最大同性交友网站-->github上,你可以找到它的源码,可以阅读并修改它的源码。关于分布式和协调服务,后面慢慢的学习。(1)分布式 ZK...
2019-05-27 23:02:05
487
原创 ZooKeeper学习之它能干什么?
最近在学习ZooKeeper(以后都用ZK代称),为了验证自己的学习,希望对ZK相关的知识进行整理,一方面检验学习成果,一方面进行笔记整理。 一般而言,我们学习一件东西的动机是这个东西对我们有用,不管是当前立即能带来效用还是长远看能带来好的收获。学习ZK也一样,首先要明白学习它干嘛?我们在开发中能用ZK做些什么?通过使用ZK能带来哪些便利?能解决哪些开发中的痛点?在我的今后的开发...
2019-05-26 14:47:13
296
原创 求链表中倒数第K个节点
思路: 用两个指针,第一个指针西安走k-1步,然后两个指针再一起走。当第一个指针走到尾节点时,第二个指针指向的就是倒数第K个节点。证明: 设节点个数为m, 则第一个指针两次分别走了k-1, n-k+1步; 第二个指针走了n-k+1步, 第二个指针所处的倒数的位置为:n-(n-k+1)+1=k。
2017-07-16 00:14:12
262
原创 单链表的反转算法
经典单链表反转问题,不增加额外空间消耗,去对单链表进行翻转,输出逆序后的链表。具体执行过程如下所示:上图显示了单链表翻转算法的步骤示意图,核心代码如下:while head->next!=NULL head->next=pre; pre=head; head=next; next=head->next;
2017-07-16 00:09:00
542
原创 链表结构有关的算法
一直一个单链表求问题:1. 如何判断链表是否有环?采用快慢指针方式,从头指针开始,快指针每次移动2步,慢指针每次移动一步,如果存在环,则二者会相遇,如果不存在环,fast会遇到NULL指针而停止。emptyListNode *fast=head;ListNode *slow=head;while(slow->next!=NULL && fast->next->next!=NUL
2017-07-01 19:45:09
275
原创 git从远程库获得最先版本
使用git从远程库更新下载代码到本地库方法:1. 查看远程仓库$:git remote -vorigin https://github.com/qinchao0525/MiniFTP.git (fetch)origin https://github.com/qinchao0525/MiniFTP.git (push)上述结果可以看到:结果的第一个单词为远程仓库的名称,可以看
2017-06-30 10:36:37
307
转载 C++内部链接和外部链接
当一个实现文件(.cpp ...)编译时,预处理器(CPP)首先递归的包含头文件,形成一个保含有所有必要信息的单个源文件. 这个源文件称为 编译单元.内部连接 如果一个名称对于它的编译单元来说是局部的, 并且在连接的时候不可能与其它编译单元中的同样的名称相冲突,则这个名称具有内部连接.即具有内部连接的名称不会被带到目标文件中.外部连接 在一个多文件程序中,如果一个名称在连接时可以和
2017-03-22 09:28:38
551
转载 shell正则表达式
元字符及其在正则表达式上下文中的行为: \ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个后向引用、或一个八进制转义符。 ^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的Multiline 属性,^ 也匹配 '\n' 或 '\r' 之后的位置。 $ 匹配输入字符串的结束位置。如果设置了 RegExp 对象的Multiline 属性,$ 也匹
2017-03-16 11:00:47
348
原创 C++空类默认产生的成员函数
class Empty{ public: Empty(); // 缺省构造函数 Empty( const Empty& ); // 拷贝构造函数 ~Empty(); // 析构函数 Empty& operator=( const Empty& ); // 赋值运算符 Empty* operator&(); // 取
2017-02-22 16:04:04
383
原创 十大经典排序算法之交换排序
交换排序算法:一、冒泡法:/*冒泡排序,算法时间复杂度为:O(n^2),稳定的排序算法Written by: QinchaoTime:2016/12/3Language: C++*/void bubblesort_6(vector &_snum, int _len){ int temp; for (int i = 0; i < _len; i++) for (int
2016-12-03 22:04:14
1072
原创 十大排序算法之归并排序算法
归并排序算法:/*归并排序,算法时间复杂度为:O(nlogn), 稳定排序算法Written by: QinchaoTime:2016/12/3Language: C++*/const int INFTY = 2147483647;void merge(vector &_num, int left, int mid, int right ){ int n1 = mid - l
2016-12-03 21:36:02
1095
原创 十大排序算法之计数排序
计数排序算法:void countingsort_10(vector &_snum, int _len){ vector::iterator k; k = max_element(_snum.begin(), _snum.end()); int knum = _snum[k - _snum.begin()]; vector t(knum); vector result(_len);
2016-12-03 21:34:30
482
原创 十大排序算法之插入排序
十大经典排序算法有:一、插入排序 (1)、直接插入排序:/* 直接插入排序,算法时间复杂度为:O(n^2), 稳定的排序算法 Written by: Qinchao Time:2016/12/3 Language: C++*/void insertsort_1(vector &_snum, int _len){ int j = 0; int temp =
2016-12-03 21:32:09
287
原创 C++ vector容器(包含c++11标准)
构造函数语法: vector(); vector( size_type num, const TYPE &val ); vector( const vector &from ); vector( input_iterator start, input_iterator end );C++ Vectors可以使用以下任意一种参数方式构造: vector
2016-11-21 09:36:59
1233
原创 锯齿形字符串转换问题
问题描述:给定一个字符串,以及锯齿深度n,把该字符串转换成锯齿形的模式后按行输出。举例如下:string str="0123456789";n=4;锯齿表述如下:0 61 5 72 4 83 9 输出结果为:0615724839实现方法:(1)注意第一行和最后一行,间隔为2*(
2016-11-19 16:07:13
499
原创 两个顺序数组的中间值
leetcode 第三题,已知两个已排序的矩阵nums1,nums2,大小分别为m,n,函数返回两个矩阵的中间值例如:情境1:nums1 = [1, 3]nums2 = [2]The median is 2.0情境2:nums1 = [1, 2]nums2 = [3, 4]The median is (2 + 3)/2 = 2.5class Solution {pub
2016-11-17 20:42:05
702
原创 最长无重复字符子串问题
问题描述:给定一个字符串,返回该字符串中最大子串,该子串满足连续,并且其中没有重复字符。leetcode c++代码的一种解法如下:class Solution {public: int lengthOfLongestSubstring(string s) { int left = 0, max = 0; vector m(128, 0); for (int
2016-11-17 11:18:09
295
转载 寻找和为定值的两个数
题目描述输入一个数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。要求时间复杂度是O(N)。如果有多对数字的和等于输入的数字,输出任意一对即可。例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,因此输出4和11。分析与解法咱们试着一步一步解决这个问题(注意阐述中数列有序无序的区别):直接穷举,从数组中任意选取两
2016-11-17 09:30:06
232
原创 c++奇阶幻方
奇阶幻方的产生规则:⑴ 将1放在第一行中间一列;⑵ 从2开始直到n×n止各数依次按下列规则存放:按 45°方向行走,如向右上每一个数存放的行比前一个数的行数减1,列数加1⑶ 如果行列范围超出矩阵范围,则回绕。⑷ 如果按上面规则确定的位置上已有数,或上一个数是第1行第n列时,则把下一个数放在上一个数的下面。# include # include using
2016-11-16 20:10:59
986
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人