自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(160)
  • 收藏
  • 关注

原创 2. postgresql并行扫描(1)——pg强制走并行扫描建表及参数配置

pg强制执行的配置,以及pg索引扫描的核心

2023-09-03 00:54:34 913

原创 C++并发编程学习01——hello concurrent world

并发入门01

2023-08-22 10:45:25 371

原创 1. postgresql源码安装

pg源码安装

2023-06-07 17:30:47 209

原创 算法学习——滑动窗口

滑动窗口

2021-10-23 19:42:24 283 2

原创 算法学习——并查集

547. 省份数量题目有 n 个城市,其中一些彼此相连,另一些没有相连。如果城市 a 与城市 b 直接相连,且城市 b 与城市 c 直接相连,那么城市 a 与城市 c 间接相连。省份 是一组直接或间接相连的城市,组内不含其他没有相连的城市。给你一个 n x n 的矩阵 isConnected ,其中 isConnected[i][j] = 1 表示第 i 个城市和第 j 个城市直接相连,而 isConnected[i][j] = 0 表示二者不直接相连。返回矩阵中 省份 的数量。示例 1:输

2021-10-21 09:55:31 597

原创 算法学习——单调栈

84. 柱状图中最大的矩形给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。示例 1:输入:heights = [2,1,5,6,2,3]输出:10解释:最大的矩形为图中红色区域,面积为 10示例 2:输入: heights = [2,4]输出: 4提示:1 <= heights.length <=1050 <= heights[i] <= 104来源:力扣(Le

2021-10-11 16:35:02 195

原创 计算机网络——HTTP

1. http协议与TCP联系Http连接是一种短连接,是一种无状态的连接。所谓的无状态,是指浏览器每次向服务器发起请求的时候,不是通过一个连接,而是每次都建立一个新的连接。HTTP:超文本传输协议,是应用层的协议,以TCP为基础TCP:传输控制协议,是传输层的协议,以IP协议为基础可以这样理解: IP协议作为网络中的“公路”,TCP协议是“公路”上面的“货车”,而HTTP协议是用于打包“货车”中的“货物”的。TCP是底层通讯协议,定义的是数据传输和连接方式的规范HTTP是应用层协议,定义的是

2020-07-24 18:20:45 1016

原创 计算机网络——IP

1. IP首部第一个4字节:版本号:IPv4/IPv6;首部长度,4位:用于标识首部的长度,单位为4字节,所以首部长度最大值为:(2^4 - 1) * 4 = 60字节,但一般只推荐使用20字节的固定长度。总长度,16位;标识IP数据报的总长度第二个4字节:16位标识:数据报计数器,每产生一个数据报,计数器加1;3位标志:MF=0—无分片,MF=1—有分片,DF—不分片片偏移,13位;代表某个分片在原始数据中的相对位置。第三个4字节:生存时间TTL: 路由跳数;8位协议:代表上层传输

2020-07-22 17:16:10 632

原创 计算机网络——TCP/UDP

1. TCP UDP 区别,分别适用什么场景?TCP面向连接(三次握手),通信前需要先建立连接;UDP面向无连接,通信前不需要连接。TCP通过序号、重传、流量控制、拥塞控制实现可靠传输;UDP不保障可靠传输,尽最大努力交付。TCP面向字节流传输,因此可以被分割并在接收端重组;UDP面向数据报传输。TCP支持点对点单播,UDP支持单播,多播和广播TCP首部开销大,20字节。UDP首部8字节。UDP简单,可应用于多媒体应用,TCP相对复杂,应用于FTP,电子邮件等2. TCP怎么保证可靠传输

2020-07-21 17:03:02 1097

原创 学习《图说设计模式》模板模式

1. 概念Template Method模式也叫模板方法模式,是行为模式之一,它把具有特定步骤算法中的某些必要的处理委让给抽象方法,通过子类继承对抽象方法的不同实现改变整个算法的行为。2. 应用场景Template Method模式一般应用在具有以下条件的应用中:具有统一的操作步骤或操作过程具有不同的操作细节存在多个具有同样操作步骤的应用场景,但某些具体的操作细节却各不相同总结:在抽象类中统一操作步骤,并规定好接口;让子类实现接口。这样可以把各个具体的子类和操作步骤接耦合3. 角色和

2020-06-02 16:28:34 303 1

原创 学习《图说设计模式》策略模式

1. 模式动机完成一项任务,往往可以有多种不同的方式,每一种方式称为一个策略,我们可以根据环境或者条件的不同选择不同的策略来完成该项任务。在软件开发中也常常遇到类似的情况,实现某一个功能有多个途径,此时可以使用一种设计模式来使得系统可以灵活地选择解决途径,也能够方便地增加新的解决途径。在软件系统中,有许多算法可以实现某一功能,如查找、排序等,一种常用的方法是硬编码(Hard Coding)在一个类中,如需要提供多种查找算法,可以将这些算法写到一个类中,在该类中提供多个方法,每一个方法对应一个具体的查

2020-06-01 11:56:48 245

原创 学习《图说设计模式》观察者模式

图说设计模式之观察者模式1. 模式动机建立一种对象与对象之间的依赖关系,一个对象发生改变时将自动通知其他对象,其他对象将相应做出反应。在此,发生改变的对象称为观察目标,而被通知的对象称为观察者,一个观察目标可以对应多个观察者,而且这些观察者之间没有相互联系,可以根据需要增加和删除观察者,使得系统更易于扩展,这就是观察者模式的模式动机。2. 模式定义观察者模式(Observer Pattern):定义对象间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。观察

2020-05-29 15:31:10 292

原创 学习《图说设计模式》装饰模式

图说设计模式之装饰模式装饰者模式(Decorator Pattern)动态的给一个对象添加一些额外的职责。就增加功能来说,此模式比生成子类更为灵活。1. 模式动机一般有两种方式可以实现给一个类或对象增加行为:继承机制,使用继承机制是给现有类添加功能的一种有效途径,通过继承一个现有类可以使得子类在拥有自身方法的同时还拥有父类的方法。但是这种方法是静态的,用户不能控制增加行为的方式和时机。关联机制,即将一个类的对象嵌入另一个对象中,由另一个对象来决定是否调用嵌入对象的行为以便扩展自己的行为,我们称这

2020-05-27 12:50:45 308

原创 学习《图说设计模式》适配器模式

图说设计模式之适配器模式1. 模式动机在软件开发中采用类似于电源适配器的设计和编码技巧被称为适配器模式。通常情况下,客户端可以通过目标类的接口访问它所提供的服务。有时,现有的类可以满足客户类的功能需要,但是它所提供的接口不一定是客户类所期望的,这可能是因为现有类中方法名与目标类中定义的方法名不一致等原因所导致的。在这种情况下,现有的接口需要转化为客户类期望的接口,这样保证了对现有类的重用。如果不进行这样的转化,客户类就不能利用现有类所提供的功能,适配器模式可以完成这样的转化。在适配器模式中可以定

2020-05-26 12:18:21 241

原创 学习《图说设计模式》代理模式

图说设计模式之代理模式1. 模式动机在某些情况下,一个客户不想或者不能直接引用一个对 象,此时可以通过一个称之为“代理”的第三者来实现 间接引用。代理对象可以在客户端和目标对象之间起到 中介的作用,并且可以通过代理对象去掉客户不能看到 的内容和服务或者添加客户需要的额外服务。通过引入一个新的对象(如小图片和远程代理 对象)来实现对真实对象的操作或者将新的对 象作为真实对象的一个替身,这种实现机制即 为代理模式,通过引入代理对象来间接访问一 个对象,这就是代理模式的模式动机。2. 模式定义代理模式(

2020-05-26 11:50:35 169

原创 学习《图说设计模式》单例模式

图说设计模式之单例模式1. 模式动机对于系统中的某些类来说,只有一个实例很重要,例如,一个系统中可以存在多个打印任务,但是只能有一个正在工作的任务;一个系统只能有一个窗口管理器或文件系统;一个系统只能有一个计时工具或ID(序号)生成器。如何保证一个类只有一个实例并且这个实例易于被访问呢?定义一个全局变量可以确保对象随时都可以被访问,但不能防止我们实例化多个对象。一个更好的解决办法是让类自身负责保存它的唯一实例。这个类可以保证没有其他实例被创建,并且它可以提供一个访问该实例的方法。这就是单例模式的模式

2020-05-25 13:08:02 228

原创 学习《图说设计模式》建造者模式

图说设计模式之建造者模式1. 模式动机无论是在现实世界中还是在软件系统中,都存在一些复杂的对象,它们拥有多个组成部分,如汽车,它包括车轮、方向盘、发送机等各种部件。而对于大多数用户而言,无须知道这些部件的装配细节,也几乎不会使用单独某个部件,而是使用一辆完整的汽车,可以通过建造者模式对其进行设计与描述,建造者模式可以将部件和其组装过程分开,一步一步创建一个复杂的对象。用户只需要指定复杂对象的类型就可以得到该对象,而无须知道其内部的具体构造细节。在软件开发中,也存在大量类似汽车一样的复杂对象,它们拥有一

2020-05-23 12:43:35 353

原创 学习《图说设计模式》抽象工厂模式

图说设计模式之抽象工厂模式1. 模式动机在工厂方法模式中具体工厂负责生产具体的产品,每一个具体工厂对应一种具体产品,工厂方法也具有唯一性,一般情况下,一个具体工厂中只有一个工厂方法或者一组重载的工厂方法。但是有时候我们需要一个工厂可以提供多个产品对象,而不是单一的产品对象。为了更清晰地理解工厂方法模式,需要先引入两个概念:产品等级结构 :产品等级结构即产品的继承结构,如一个抽象类是电视机,其子类有海尔电视机、海信电视机、TCL电视机,则抽象电视机与具体品牌的电视机之间构成了一个产品等级结构,抽象电

2020-05-22 11:53:24 217

原创 学习《图说设计模式》工厂方法模式

图说设计模式之工厂模式1. 模式动机现在对该系统进行修改,不再设计一个按钮工厂类来统一负责所有产品的创建,而是将具体按钮的创建过程交给专门的工厂子类去完成,我们先定义一个抽象的按钮工厂类,再定义具体的工厂类来生成圆形按钮、矩形按钮、菱形按钮等,它们实现在抽象按钮工厂类中定义的方法。这种抽象化的结果使这种结构可以在不修改具体工厂类的情况下引进新的产品,如果出现新的按钮类型,只需要为这种新类型的按钮创建一个具体的工厂类就可以获得该新按钮的实例,这一特点无疑使得工厂方法模式具有超越简单工厂模式的优越性,更加符

2020-05-20 13:08:24 389

原创 学习《跟我一起学makefile》使用make更新函数库文件

文章来自函数库文件也就是对Object文件(程序编译的中间文件)的打包文件。在Unix下,一般是由命令 ar 来完成打包工作。1. 函数库文件的成员一个函数库文件由多个文件组成。你可以用如下格式指定函数库文件及其组成:archive(member)这个不是一个命令,而一个目标和依赖的定义。一般来说,这种用法基本上就是为了 ar 命令来服务的。如:foolib(hack.o) : hack.o ar cr foolib hack.o如果要指定多个member,那就以空格分开,如:f

2020-05-19 12:31:23 93

原创 学习《跟我一起学makefile》隐含规则

文章来源在我们使用Makefile时,有一些我们会经常使用,而且使用频率非常高的东西,比如,我们编译C/C++的源程序为中间目标文件(Unix下是 .o 文件,Windows下是 .obj 文件)。本章讲述的就是一些在Makefile中的“隐含的”,早先约定了的,不需要我们再写出来的规则。“隐含规则”也就是一种惯例,make会按照这种“惯例”心照不喧地来运行,那怕我们的Makefile中没有书写这样的规则。例如,把 .c 文件编译成 .o 文件这一规则,你根本就不用写出来,make会自动推导出这种规则,

2020-05-19 12:23:50 178

原创 学习《跟我一起学makefile》make 的运行

文章来源一般来说,最简单的就是直接在命令行下输入make命令,make命令会找当前目录的makefile来执行,一切都是自动的。但也有时你也许只想让make重编译某些文件,而不是整个工程,而又有的时候你有几套编译规则,你想在不同的时候使用不同的编译规则,等等。本章节就是讲述如何使用make命令的。1. make的退出码make命令执行后有三个退出码:0表示成功执行。1如果make运行时出现任何错误,其返回1。2如果你使用了make的“-q”选项,并且make使得一些目标不需要更新,那么

2020-05-19 10:59:22 276

原创 学习《跟我一起学makefile》使用函数

在Makefile中可以使用函数来处理变量,从而让我们的命令或是规则更为的灵活和具有智能。make 所支持的函数也不算很多,不过已经足够我们的操作了。函数调用后,函数的返回值可以当做变量来使用。函数的调用语法函数调用,很像变量的使用,也是以 $ 来标识的,其语法如下:$(<function> <arguments>)或是:${<function> <arguments>}这里, <function> 就是函数名,make支持的函数不

2020-05-18 12:57:51 120

原创 学习《图说设计模式》简单工厂模式

《图说设计模式》简单工厂模式1. 简单工厂模式( Simple Factory Pattern )1.1 模式动机考虑一个简单的软件应用场景,一个软件系统可以提供多个外观不同的按钮(如圆形按钮、矩形按钮、菱形按钮等), 这些按钮都源自同一个基类,不过在继承基类后不同的子类修改了部分属性从而使得它们可以呈现不同的外观,如果我们希望在使用这些按钮时,不需要知道这些具体按钮类的名字,只需要知道表示该按钮类的一个参数,并提供一个调用方便的方法,把该参数传入方法即可返回一个相应的按钮对象,此时,就可以使用简单工

2020-05-16 18:30:47 412

原创 学习《图说设计模式》UML类图和时序图

图说设计模式之看懂UML类图和时序图1. 从一个示例开始请看以下这个类图,类之间的关系是我们需要关注的:车的类图结构为<<abstract>>,表示车是一个抽象类;它有两个继承类:小汽车和自行车;它们之间的关系为实现关系,使用带空心箭头的虚线表示;小汽车为与SUV之间也是继承关系,它们之间的关系为泛化关系,使用带空心箭头的实线表示;小汽车与发动机之间是组合关系,使用带实心箭头的实线表示;学生与班级之间是聚合关系,使用带空心箭头的实线表示;学生与身份证之间为关联关系

2020-05-16 17:26:17 264

原创 学习《跟我一起学makefile》使用条件判断

文章来源使用条件判断使用条件判断,可以让make根据运行时的不同情况选择不同的执行分支。条件表达式可以是比较变量的值, 或是比较变量和常量的值。示例下面的例子,判断 $(CC) 变量是否 gcc ,如果是的话,则使用GNU函数编译目标。libs_for_gcc = -lgnunormal_libs =foo: $(objects)ifeq ($(CC),gcc) $(CC) -o foo $(objects) $(libs_for_gcc)else $(CC) -o fo

2020-05-15 12:01:16 116

原创 学习《跟我一起学makefile》使用变量

文章来源使用变量在Makefile 中的定义的变量,就像是 C/C++ 语言中的宏一样,他代表了一个文本字串,在Makefile 中 执行的时候其会自动原模原样地展开在所使用的地方。其与C/C++所不同的是,你可以在Makefile中改变其 值。在Makefile中,变量可以使用在“目标”,“依赖目标”, “命令”或是Makefile的其它部分中。变量的命名字可以包含字符、数字,下划线(可以是数字开头),但不应该含有 : 、 # 、 = 或是空字符(空格、回车等)。变量是大小写敏感的,“foo”、“F

2020-05-14 19:37:53 163

原创 学习《跟我一起学makefile》书写命令

书写命令每条规则中的命令和操作系统Shell的命令行是一致的。make会一按顺序一条一条的执行命令,每条命令的 开头必须以 Tab 键开头,除非,命令是紧跟在依赖规则后面的分号后的。在命令行之间中的空格或是 空行会被忽略,但是如果该空格或空行是以Tab键开头的,那么make会认为其是一个空命令。我们在UNIX下可能会使用不同的Shell,但是make的命令默认是被 /bin/sh ——UNIX的标准Shell 解释执行的。除非你特别指定一个其它的Shell。Makefile中, # 是注释符,很像C/C

2020-05-12 12:28:40 121

原创 学习《跟我一起学makefile》书写规则

转自书写规则规则包含两个部分,一个是依赖关系,一个是生成目标的方法。在Makefile中,规则的顺序是很重要的,因为,Makefile中只应该有一个最终目标,其它的目标都是被这 个目标所连带出来的,所以一定要让make知道你的最终目标是什么。一般来说,定义在Makefile中的目标 可能会有很多,但是第一条规则中的目标将被确立为最终的目标。如果第一条规则中的目标有很多个,那么 ,第一个目标会成为最终的目标。make所完成的也就是这个目标。好了,还是让我们来看一看如何书写规则。规则举例foo.o:

2020-05-11 12:06:15 181

原创 学习《跟我一起学makefile》介绍

转自makefile介绍make命令执行时,需要一个makefile文件,以告诉make命令需要怎么样的去编译和链接程序。首先,我们用一个示例来说明makefile的书写规则,以便给大家一个感性认识。这个示例来源于gnu 的make使用手册,在这个示例中,我们的工程有8个c文件,和3个头文件,我们要写一个makefile来告 诉make命令如何编译和链接这几个文件。我们的规则是:如果这个工程没有编译过,那么我们的所有c文件都要编译并被链接。如果这个工程的某几个c文件被修改,那么我们只编译被修改的

2020-05-09 19:05:59 228

原创 使用SourceTree

转自廖雪峰当我们对Git的提交、分支已经非常熟悉,可以熟练使用命令操作Git后,再使用GUI工具,就可以更高效。Git有很多图形界面工具,这里我们推荐SourceTree,它是由Atlassian开发的免费Git图形界面工具,可以操作任何Git库。首先从官网下载SourceTree并安装,然后直接运行SourceTree。第一次运行SourceTree时,SourceTree 并不知道我们...

2020-05-04 16:19:03 498

原创 自定义Git

转自廖雪峰在安装Git一节中,我们已经配置了user.name和user.email,实际上,Git还有很多可配置项。比如,让Git显示颜色,会让命令输出看起来更醒目:$ git config --global color.ui true这样,Git会适当地显示不同的颜色,比如git status命令:文件名就会标上颜色。我们在后面还会介绍如何更好地配置Git,以便让你的工作更高效...

2020-05-03 18:04:18 182

原创 使用Gitee

转自廖雪峰使用GitHub时,国内的用户经常遇到的问题是访问速度太慢,有时候还会出现无法连接的情况(原因你懂的)。如果我们希望体验Git飞一般的速度,可以使用国内的Git托管服务——Gitee(gitee.com)。和GitHub相比,Gitee也提供免费的Git仓库。此外,还集成了代码质量检测、项目演示等功能。对于团队协作开发,Gitee还提供了项目管理、代码托管、文档管理的服务,5人以下...

2020-05-03 17:30:43 1227

原创 使用GitHub

转自廖雪峰我们一直用GitHub作为免费的远程仓库,如果是个人的开源项目,放到GitHub上是完全没有问题的。其实GitHub还是一个开源协作社区,通过GitHub,既可以让别人参与你的开源项目,也可以参与别人的开源项目。在GitHub出现以前,开源项目开源容易,但让广大人民群众参与进来比较困难,因为要参与,就要提交代码,而给每个想提交代码的群众都开一个账号那是不现实的,因此,群众也仅限于报个...

2020-05-03 17:06:53 130

原创 标签管理

转自廖雪峰标签管理发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照。Git的标签虽然是版本库的快照,但其实它就是指向某个commit的指针(跟分支很像对不对?但是分支可以移动,标签不能移动),所以,创建和删除标签都是瞬间完成的。Git有co...

2020-05-02 16:32:47 224

原创 分支管理

分支管理分支就是科幻电影里面的平行宇宙,当你正在电脑前努力学习Git的时候,另一个你正在另一个平行宇宙里努力学习SVN。如果两个平行宇宙互不干扰,那对现在的你也没啥影响。不过,在某个时间点,两个平行宇宙合并了,结果,你既学会了Git又学会了SVN!分支在实际中有什么用呢?假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完,不完整的代码库...

2020-04-29 17:36:53 285

原创 远程仓库

远程仓库到目前为止,我们已经掌握了如何在Git仓库里对一个文件进行时光穿梭,你再也不用担心文件备份或者丢失的问题了。可是有用过集中式版本控制系统SVN的童鞋会站出来说,这些功能在SVN里早就有了,没看出Git有什么特别的地方。没错,如果只是在一个仓库里管理文件历史,Git和SVN真没啥区别。为了保证你现在所学的Git物超所值,将来绝对不会后悔,同时为了打击已经不幸学了SVN的童鞋,本章开始介...

2020-04-28 17:46:49 153

原创 操作系统学习(5) 输入输出(I/O)管理

1. 同步、异步、阻塞、非阻塞?同步和异步:(1) 同步: 当一个同步调用发出去后,调用者要一直等待调用结果的通知后,才能进行后续的执行。(2) 异步:当一个异步调用发出去后,调用者不能立即得到调用结果的返回。异步调用,要想获得结果,一般有两种方式:(1) 主动轮询异步调用的结果;(2) 被调用方通过callback来通知调用方调用结果。阻塞与非阻塞:(1) 阻塞与非阻塞的重点在...

2020-04-28 11:08:45 431

原创 操作系统学习(4) 文件管理

1. 文件读写使用的系统调用open,close,creat,read,write#include<unistd.h>ssize_t read(int fd, void *buf, size_t count);//read()函数从文件描述符fd对应的文件中读取count字节,放到buf开始的缓冲区。ssize_t write(int fd, const void *bu...

2020-04-28 11:07:24 215

原创 操作系统学习(3) 内存管理

1. Windows下的内存是如何管理的1). 虚拟内存:最适合用来管理大型对象或者结构数组2). 内存映射文件:最适合用来管理大型数据流(通常来自文件)以及在单个计算机上运行多个进程之间共享数据3). 内存堆栈:最适合用来管理大量的小对象2. Windows消息调度机制是?消息队列;3. 分段和分页的区别?(1)页是信息的物理单位,分页是为实现离散分配方式,以消减内存的外零头...

2020-04-28 11:06:41 3182

空空如也

空空如也

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

TA关注的人

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