- 博客(26)
- 资源 (1)
- 收藏
- 关注
原创 事务的四种隔离级别
原文链接:https://www.cnblogs.com/ubuntu1/p/8999403.html事务的四种隔离级别Read uncommittedRead committedRepeatable readSerializable 序列化tted 、Read committed 、Repeatable read 、Serializable 。而且,在事务的并发操作中可能会出现脏读,不可重复读...
2020-03-11 14:37:22
337
原创 算法导论(九)--二叉树
算法导论(九)--二叉树二叉搜索树BST Sort与快排的关系平衡搜索树红黑树二叉搜索树(BST,Binary Search Tree,也叫二叉排序树,Binary Sort Tree)BST Sort二叉搜索树的定义就不讲了。我们看看BST Sort,如何利用二叉树进行排序?答案是只要把数组构建出一棵二叉搜索树,然后中序遍历就行了。构建二叉搜索树的算法:T<-Øfor i&l...
2019-09-22 19:10:31
484
原创 Linux C基本原理
Linux C基本原理makemain函数输入,输出,和错误流管道C语言小巧灵活,语法简单,适合做一些小工具。如果用C语言做出各种各样的小工具,并结合起来,整个Unix/Linux系统就是这样来的;C语言还能用来做与硬件打交道的程序,比如操作系统,单片机,ARM嵌入式,Arduino;C语言还用来做一些有高性能要求的应用程序,比如Nginx。C语言是随着Unix而诞生的语言,在Unix下开发C...
2019-09-14 19:07:13
1539
原创 算法导论(十五)--动态规划,最长公共子序列
算法导论(十五)--动态规划,最长公共子序列最长公共子序列(LCS)最长公共子序列(LCS)给定两个序列x[1,…,m]和y[1,…,n],找出它们的一个最长公共子序列(LCS)(可能不唯一)。例如:x: A B C B D A By: B D C A B A先肉眼看看它们的LCS是什么,是BDAB,BCAB和BCBA。这个问题可以用穷举法(Brute-Force)来解决:检查x中的...
2019-09-14 12:35:14
839
原创 算法导论(八)--全域哈希
算法导论(八)--全域哈希定义构造方法定义哈希有一个根本的缺陷,对于任意哈希函数而言,都存在一个不好的键集,所有键都会哈希到同一个槽,这样如果有人知道你用的什么哈希函数,就会故意给你这些映射到同一个槽的键值,这就相当于运行一个链表,很大程度上减缓了运行速度。解决的方法就是随机性,在运行时随机地选择哈希函数,这个方法叫全域哈希(Universal Hashing)。定义:设U为键的全域,H...
2019-07-28 09:45:03
2913
1
原创 算法导论(七)--hash表
算法导论(七)--hash表先从一个问题引入哈希,这个问题经常出现在编译器里,就是“符号表”问题。有一个表S,里面有n条记录,每条记录都有下图所示的结构:现在我们要做一些操作:向表S中插入或删除一条记录x查找给定键值为k的记录x,如果没有就返回空。直接映射表当键值数目比较少的时候,假设这些键是来自一个有m个元素的集合U,U={0, 1, ⋯, m-1},并且没有重复。直接映射表是...
2019-07-25 16:03:21
496
原创 算法导论(五)--线性时间排序
算法导论(五)--线性时间排序决策树与比较排序排序最快可以有多快?这取决于具体的模型,具体来说就是排序过程中被允许的操作。目前我们已经知道的排序有插入排序(Θ(n2)),归并排序(Θ(nlogn)),快速排序(Θ(nlogn)),堆排序(Θ(nlogn)),他们的复杂度都不低于Θ(nlogn),那么有没有一种排序复杂度可以低于Θ(n)呢?上面的四种算法都有一个共同点,它们一次只能比较两个数。在...
2019-07-23 21:19:14
476
原创 算法导论(六)--顺序统计和中值
算法导论(六)--顺序统计和中值Top-k问题随机选择算法最坏情况下线性时间复杂度Top-k问题给一个数组,如何找到第k小的数?解决这个问题的最基本方案就是先排个序,然后返回第k个数。有没有更快的方法呢?随机选择算法这是一个分治法,从A[p, …, q]里找第i小的数。算法://找第i小的元素Rand_Select(A,p,q,i){ if p=q then return A[...
2019-07-23 21:18:27
412
原创 算法导论(四)--快排和随机化算法
算法导论(四)--快排和随机化算法快速排序快速排序快速排序是一个分治算法,而且就在原地排序,和插入排序一样,比较节省内存。而归并排序需要额外的空间来进行归并,为了在线性时间和空间内归并。分治步骤:先选一个数,根据它的大小把原数组分为两个子数组,一个都小于这个数,一个都大于等于这个数,然后递归处理两个子数组的排序,最后把它们连接起来。快速排序里最关键的一步就是划分(Partition),可以...
2019-07-19 16:46:10
589
原创 算法导论(三)--分治法
算法导论(三)--分治法二分查找乘方问题斐波那契数列矩阵乘法VLSI(Very Large Scale Integration) Layout(超大规模集成电路布局问题)分治法就是把一个大的问题分成若干个小的子问题,然后递归地解决小问题,最后再合并子问题的解。回顾一下归并排序,就是一个典型的分治法的例子:第一步把整个数组一分为二,第二步递归地对每个子数组排序,第三步合并两个有序数组。归并排序的复...
2019-07-17 21:31:18
749
原创 算法导论(二)--渐近符号 递归 和解法
算法导论(二)--渐近符号 递归 和解法基本渐近符号基本渐近符号首先看一个式子:f(n)=O(g(n))f(n)=O(g(n))f(n)=O(g(n))表示存在适当的常数c>0,和n0>0使得0≤f(n)≤c⋅g(n)0\leq f(n)\leq c·g(n)0≤f(n)≤c⋅g(n),对于充分大的n成立。...
2019-07-14 13:10:10
969
原创 算法导论(一)--排序
算法导论(一)--排序插入排序归并排序插入排序插入排序类似于我们打扑克时,每抓一张牌,就按顺序插入到手中已有的有序的牌中。代码如下://对a[0]~a[n-1]排序void insert_sort(int *a,int n){ for(int i=1;i<n;i++) { int tmp=a[i]; int j=i-1; ...
2019-07-14 13:09:00
226
原创 Mysql InnoDB存储引擎解析
mysql innodb存储引擎解析mysql底层有多种存储引擎。如果你看它的源码,打开storage目录,可以看到这么多种存储引擎:其中innobase最为经典,本文讲的就是innobase存储引擎的底层结构。InnoDB在主键上建聚簇索引:将主键组织到一棵B+树中,而行数据就储存在叶子节点上。在非主键上建辅助索引:第一步在辅助索引B+树中检索属性值,到达其叶子节点获取对应的主键;第二...
2019-07-11 15:25:46
2489
1
原创 Corda架构
Corda架构Corda的重要特性Corda网络Corda账本Corda的重要特性1.没有区块链,没有挖矿,是一个permissioned network2.没有广播,是点对点的消息交流方式3.用UTXO模型来记录状态(类似比特币)4.基于JVM的平台,使用Kotlin编写(可以用Java,Clojure等)Corda网络Corda网络是可验证的P2P网络,其中每个节点都是托管Cor...
2019-07-07 15:52:18
3668
原创 区块链轻节点和SPV
参考:https://blog.youkuaiyun.com/qq_25870633/article/details/81980376https://www.cnblogs.com/gzhlt/p/10271849.html为什么会有SPV:在比特币整个生态圈里,大部分都是普通用户,即只有基本的比特币投资及消费支付需要的用户,他们可能没有矿机,没有高端配置的电脑,那么他们是否也要运行一个全节点程序呢?...
2019-07-07 13:15:11
7811
2
转载 拜占庭共识算法PBFT:Practical Byzantine Fault Tolerance
拜占庭共识算法PBFT:Practical Byzantine Fault Tolerance转载自https://www.jianshu.com/p/0bef4fb1662b论文地址:http://pmg.csail.mit.edu/papers/osdi99.pdfPBFT是Practical Byzantine Fault Tolerance的缩写,意为实用拜占庭容错算法。该算法是M...
2019-05-20 20:59:40
1440
转载 The Byzantine General Problem
The Byzantine General Problem1.导引2.不可能性3.使用口头消息的解4.使用签名消息情况下的解5.通信路径缺失6.可靠性系统7. 总结作者:LESLIE LAMPORT, ROBERT SHOSTAK, and MARSHALL 1982译者:phylips@bmy出处:http://duanple.blog.163.com/blog/static/709717...
2019-05-18 19:17:14
356
原创 sscanf,sprintf,snprintf和stringstream用法
sscanfC 库函数,int sscanf(const char *str, const char *format, …) 从字符串读取格式化输入。如果成功,该函数返回成功匹配和赋值的个数。如果到达文件末尾或发生读错误,则返回 EOF。和scanf的区别是scanf是以键盘作为输入源,sscanf是以字符串作为输入源。str:这是c字符串,是函数检索数据的源format:这是 C 字符串...
2019-04-19 19:09:14
444
原创 优化程序性能 --《深入理解计算机系统》
这里优化程序性能的目的是通过手工改变代码结构,而不是算法效率和数据结构优化,有些编译器在某些优化选项下可能会做出类似的改动。优化编译器的能力和局限性现代编译器大多数都向用户提供了对优化的控制,最简单的就是指定优化级别,如-O1(基本的优化),-O2,-O3(更全面的优化),这里主要考虑限制优化级别1编译出的代码,其实优化级别1不一定性能就不如2和3。编译器必须很小心地对程序进行优化,因为要保证...
2019-04-19 18:58:10
383
原创 C++基础(五)模版
友元函数函数有全局函数、成员函数,如果把全局函数定义为友元,就叫友元全局函数,如果把成员函数定义为友元,就叫友元成员函数。class Coordinate{ friend void printXY(Coordinate&amp;amp; c);public: Coordinate(int x,int y);private: int m_iX; int m_iY;};void prin...
2019-04-19 18:54:54
271
原创 C++基础(四)多态
面对对象三大特征:封装,多态,继承多态就是相同对象收到不同消息或不同对象收到相同消息时产生不同的动作,简而言之就是静态多态(早绑定)和动态多态(晚绑定)。静态多态:就是重载成员函数,程序在编译阶段就已经确定了要用哪个函数,很早的就将函数编译进去了。比如矩形类中有两个计算面积的函数:class Rect{public: int calcArea(int width); in...
2019-04-19 18:52:54
358
原创 C++基础(三)继承
什么是继承子类(派生类)是父类(基类)的子集,比父类有更多的属性。写法:class Worker : public Person{};。子类不用再定义父类中的成员,在实例化对象时会包含父类的数据成员和成员函数,子类实例化时先执行父类的构造函数,再执行子类的构造函数,析构时先执行子类的析构函数,再执行父类的构造函数。继承方式三个访问限定符,public,protected和private,pr...
2019-04-19 18:46:54
236
原创 C++基础(二)封装
初始字符串类型初始化方式string s1;string s2(“ABC”);string s3(s2);string s4(n,‘c’);常用操作s.empty()s.size()s[n]s1+s2(注意string s=“abc”+&amp;quot;def&amp;quot;是不合法的操作)s1=s2s1==s2s1!=s2getline构造函数与析构函数类内定义编译器会以内联函数的方式编译...
2019-04-19 18:44:21
334
原创 C++基础(一)
C++基础新特性引用类型const关键字const与指针类型const与引用实例函数特性内存管理新特性新数据类型C语言中的数据类型包括基本类型、构造类型、指针类型和空类型,如下图所示:C++中新增了bool类型(C中用0和非0表示逻辑)新的初始化方法C语言中的初始化,如 int x=1024,叫做复制初始化;C++除了复制初始化还提供了直接初始化,如 int x(1024)随用随...
2019-04-19 18:38:18
243
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人