自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 资源 (3)
  • 收藏
  • 关注

原创 数据库分库分表方案

数据库的拆分方式有两种:水平拆分和垂直拆分。水平拆分关注的单表数据量过大的问题,对于上千万过亿行数据的表来说,单表数据量过大,查询和变更的成本会变大,同时单库的吞吐量也会达到瓶颈,会同时对业务造成影响。水平拆分的目的就是为了将单表拆分为多表,每个表仍包含原有的数据结构。而垂直拆分关注的是表结构的拆分,我们需要根据业务的维度,将原本一个表拆分为多个表,其中每个表的结构与原表不同,这样不同的业务就可以...

2020-04-19 16:23:03 649

原创 开启数据库中间件之路

一、业务背景1、为什么需要中间件?谈起为什么需要数据库中间件,我们首先谈谈一个典型的网站架构演进。系统架构随着业务的变化演进,从而推动各种技术的发展,而数据库中间件技术就是在架构演进中出现的。(1)初始架构方案初始架构如上图所示。我们初始在单机上同时部署tomcat和DB。客户端访问的时候,首先通过DNS解析获得我们服务端的机器ip,然后通过网络连接,连接到Tomcat,然后后...

2020-04-13 20:37:55 190

原创 数据库中间件起源之一-我怎么入坑了

1、谈谈自己为什么要写这个?我是2018年7月份毕业的,2018年4月份就进入公司实习,在实习过程中接触java,接触java中间件。从实习算起也是工作有两年的时间了,两年时间说长不长,说短也不短。后来随着公司业务发展,我也转向大数据开发,不再做数据库中间件的升级开发工作,但其间一直在维护公司的数据库中间件,对公司数据库中间件源码做过一些阅读和分析,学习到很多东西。到今天或许以后,再做中间件开...

2020-04-07 20:12:22 178

原创 ZooKeeper产生的背景

在上一篇文章中提到,ZK是一个分布式的、开源的、分布式应用程序协调服务。这其中提到三个概念分布式、开源和协调服务。开源很好理解,ZK代码的源代码你可以在网上找到,你也可以自己修改和发布,这都是基于开源协议而来的。在全球最大同性交友网站-->github上,你可以找到它的源码,可以阅读并修改它的源码。关于分布式和协调服务,后面慢慢的学习。(1)分布式 ZK...

2019-05-27 23:02:05 427

原创 ZooKeeper学习之它能干什么?

最近在学习ZooKeeper(以后都用ZK代称),为了验证自己的学习,希望对ZK相关的知识进行整理,一方面检验学习成果,一方面进行笔记整理。 一般而言,我们学习一件东西的动机是这个东西对我们有用,不管是当前立即能带来效用还是长远看能带来好的收获。学习ZK也一样,首先要明白学习它干嘛?我们在开发中能用ZK做些什么?通过使用ZK能带来哪些便利?能解决哪些开发中的痛点?在我的今后的开发...

2019-05-26 14:47:13 239

原创 求链表中倒数第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 231

原创 单链表的反转算法

经典单链表反转问题,不增加额外空间消耗,去对单链表进行翻转,输出逆序后的链表。具体执行过程如下所示:上图显示了单链表翻转算法的步骤示意图,核心代码如下:while head->next!=NULL head->next=pre; pre=head; head=next; next=head->next;

2017-07-16 00:09:00 490

原创 链表结构有关的算法

一直一个单链表求问题:1. 如何判断链表是否有环?采用快慢指针方式,从头指针开始,快指针每次移动2步,慢指针每次移动一步,如果存在环,则二者会相遇,如果不存在环,fast会遇到NULL指针而停止。emptyListNode *fast=head;ListNode *slow=head;while(slow->next!=NULL && fast->next->next!=NUL

2017-07-01 19:45:09 252

原创 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 272

转载 C++内部链接和外部链接

当一个实现文件(.cpp ...)编译时,预处理器(CPP)首先递归的包含头文件,形成一个保含有所有必要信息的单个源文件. 这个源文件称为 编译单元.内部连接 如果一个名称对于它的编译单元来说是局部的, 并且在连接的时候不可能与其它编译单元中的同样的名称相冲突,则这个名称具有内部连接.即具有内部连接的名称不会被带到目标文件中.外部连接 在一个多文件程序中,如果一个名称在连接时可以和

2017-03-22 09:28:38 508

转载 shell正则表达式

元字符及其在正则表达式上下文中的行为: \ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个后向引用、或一个八进制转义符。   ^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的Multiline 属性,^ 也匹配 '\n' 或 '\r' 之后的位置。   $ 匹配输入字符串的结束位置。如果设置了 RegExp 对象的Multiline 属性,$ 也匹

2017-03-16 11:00:47 290

原创 C++空类默认产生的成员函数

class Empty{ public: Empty(); // 缺省构造函数 Empty( const Empty& ); // 拷贝构造函数 ~Empty(); // 析构函数 Empty& operator=( const Empty& ); // 赋值运算符 Empty* operator&(); // 取

2017-02-22 16:04:04 349

原创 十大经典排序算法之交换排序

交换排序算法:一、冒泡法:/*冒泡排序,算法时间复杂度为: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 1029

原创 十大排序算法之归并排序算法

归并排序算法:/*归并排序,算法时间复杂度为: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 1054

原创 十大排序算法之计数排序

计数排序算法: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 446

原创 十大排序算法之插入排序

十大经典排序算法有:一、插入排序    (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 262

原创 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 1162

原创 锯齿形字符串转换问题

问题描述:给定一个字符串,以及锯齿深度n,把该字符串转换成锯齿形的模式后按行输出。举例如下:string str="0123456789";n=4;锯齿表述如下:0         61     5  72  4     83         9                  输出结果为:0615724839实现方法:(1)注意第一行和最后一行,间隔为2*(

2016-11-19 16:07:13 441

原创 两个顺序数组的中间值

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 644

原创 最长无重复字符子串问题

问题描述:给定一个字符串,返回该字符串中最大子串,该子串满足连续,并且其中没有重复字符。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 261

转载 寻找和为定值的两个数

题目描述输入一个数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。要求时间复杂度是O(N)。如果有多对数字的和等于输入的数字,输出任意一对即可。例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,因此输出4和11。分析与解法咱们试着一步一步解决这个问题(注意阐述中数列有序无序的区别):直接穷举,从数组中任意选取两

2016-11-17 09:30:06 198

原创 c++奇阶幻方

奇阶幻方的产生规则:⑴ 将1放在第一行中间一列;⑵ 从2开始直到n×n止各数依次按下列规则存放:按 45°方向行走,如向右上每一个数存放的行比前一个数的行数减1,列数加1⑶ 如果行列范围超出矩阵范围,则回绕。⑷ 如果按上面规则确定的位置上已有数,或上一个数是第1行第n列时,则把下一个数放在上一个数的下面。# include # include using

2016-11-16 20:10:59 950

github的Windows版本

windows环境下的github桌面版软件

2018-01-11

lua for windows安装程序

lua for windows

2016-11-21

灰度预测C++代码

灰度预测的C++代码实现

2016-11-15

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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