自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Salted fish in hand, I have the world.

Salted fish in hand, I have the world.

  • 博客(432)
  • 资源 (4)
  • 收藏
  • 关注

原创 Go常见并发模式

文章目录一、Go语言并发的基础元素1.goroutine2.channel3.sync 包的同步原语4.多并发控制神器:Context二、常见并发模式Go语言实现1.for select 循环模式无限循环(监控狗)有限循环(for range select )2.select timeout 模式3.流水线模式(Pipeline)4.扇出和扇入模式5.未来模式(Futures)一、Go语言并发的基础元素goroutine、channel、sync 是并发编程中必不可少的元素,context标准包更是为

2021-01-14 10:36:28 2546 5

原创 Go语言并发实践

https://golang.google.cn/一、并发模型CSPCSP基本思想是:将并发系统抽象为channel和process两部分,二者相互独立,没有从属关系 ;channel用来传递消息,消息的发送和接收有严格的时序限制;process用于执行 。在Go语言中,channel就是通道 process就是goroutine 。Go语言调度模型goroutine的调度模型抽象出来三个实体:M P GM:machine:一个内核线程 P:processor Go执行一段代码的上下

2021-01-11 14:40:18 478

原创 1、混合方式UI设计

项目名称->右键->add new->qt->qt resource file->名称随便写。右边mainwindow中有两个对象:menubar和statusbar 菜单栏和状态栏。将预创建的action,选中拖到指定的菜单栏中,上面出现红线,鼠标出现加号即可。在下方action editer 选中一个action,右键转到槽。在xx.ui中,左上角有一个在这里输入。会在menubar下的子对象生成子对象。文件:新建、打开、分隔符、退出。编辑:剪切、赋值、粘贴、清空。格式:斜体、粗体、下划线。

2023-12-11 22:25:58 985

原创 20、关联容器、无序容器

【代码】20、关联容器、无序容器。

2023-12-11 10:51:36 362

原创 19、线性容器、适配器容器

向量中的元素被存储在一段连续的内存空间中。

2023-12-11 10:44:06 410

原创 18、迭代器、查找、排序

【代码】18、迭代器、查找、排序。

2023-12-11 10:28:18 383

原创 17、类模板

由于模板要经过两次编译,在第一次编译模板的代码时,类型形参的具体类型尚不明确,编译器将把类型形参的嵌套类型理解为某个未知类型的静态成员变量,因此编译器看到使用这样的标识符声明变量时会报告错误这就叫嵌套依赖。类模板本身并不代表一个确定的类型( 即不能用于定义对象) ,只有通过类型实参实例化成真正的类后才具备类的语义(即可以定义对象)。利用未知类定义的对象来访问成员函数模板时,编译器在第一次编译时无法解析成员函数模板的类型参数列表的而报告编译错误。总结:成员函数模板的延迟编译,阻碍了虚函数表的静态构建。

2023-12-11 10:07:13 915

原创 16、函数模板

由于模板要经过两次编译,在第一次编译模板的代码时,类型形参的具体类型尚不明确,编译器将把类型形参的嵌套类型理解为某个未知类型的静态成员变量,因此编译器看到使用这样的标识符声明变量时会报告错误这就叫嵌套依赖。如果函数模板的调用形参和类型形参相关,那么在实例化函数模板时即使不显式指明函数模板的类型实参,编译器也有能力根据调用实参的类型隐式推断出正确的类型实参的类型。// virtual templatevoid Func(){ } // error:成员函数模板不可以定义为虚函数。

2023-12-11 09:58:31 845

原创 15、lambda表达式、右值引用、移动语义

lambda表达式的名称是一个表达式 (外观类似函数),但本质绝非如此。没有必要有常右值引用,因为常右值引用,完全可以被常左值引用替代。保证功能正确的情况下,做到性能提升。资源的转移 代替 资源的重建。

2023-12-10 21:48:30 736

原创 14-2(C++11)类型推导、类型计算

【代码】14-2(C++11)类型推导、类型计算。

2023-12-10 21:34:30 880

原创 14-1、IO流

其中filename表示文件路径,mode表示打开模式。I/O流类对象内部保存当前状态,其值为以下常量的位或。返回读/写指针当前位置相对于文件头的字节偏移量。l/O流类对象支持到bool类型的隐式转换。处于1或4状态的流,在复位前无法工作。返回最后一次从输入流中读取的字节数。通过构造函数打开I/O流。

2023-12-10 20:14:17 1127

原创 13、C++异常处理

对于第二种情况,异常正处于激活状态,而析构函数又抛出了异常这时C++将通过std::terminate()函数,令进程中止。根据异常对象的类型自上至下顺序匹配,而非最优匹配,因此对子类类型异常的捕获不要放在对基类类型异常的捕获后面。如果函数抛出了异常说明以外的异常类型,那么该异常将无法被捕获并导致进程中止。异常说明是函数原型的一部分,旨在说明函数可能抛出的异常类型。异常说明是一种承诺,承诺函数不会抛出异常说明以外的异常类型。隐式抛出异常的函数也可以列出它的异常说明。异常说明可以没有也可以为空。

2023-12-10 18:57:42 790

原创 12、虚函数的应用、虚析构函数

一个类中,除了构造函数和静态成员函数外,任何函数都可以被声明为虚函数。

2023-12-10 18:37:17 352

原创 11、虚函数、多态、纯虚函数

当编译器看到通过指针或引用调用虚函数的语句时,并不急于生成有关函数跳转的指令,相反编译器会用一段代码替代该语句,这段代码在运行时才能被执行,完成如下操作。如果子类的成员函数和基类的虚函数具有相同的函数签名,那么该成员函数就也是虚函数,无论其是否带有virtual关键字。调用虚函数的指针也可以是基类中的this指针,同样能满足多态的条件,但在构造和析构函数中除外。virtual 返回值 函数名(形参表) { …的成员函数,称为纯虚函数或抽象方法。形如class 类名{形如class 类名{

2023-12-10 18:19:16 787

原创 10、多重继承、钻石继承、虚继承

将子类对象的指针,隐式转换为它的某种基类类型指针,编译器会根据各个基类子对象在子类对象中的位置,进行适当的偏移计算。汇聚子类对象中的每个中间子类子对象都持有一个指针,通过该指针可以获取 中间子类子对象的首地址 到 公共虚基类子对象的首地址的 偏移量。如果在子类的多个基类中,存在同名的标识符,那么任何试图通过子类对象,或在子类内部访问该名字的操作,都将引发歧义。一个子类继承自多个基类,而这些基类又源自共同的祖先这样的继承结构称为钻石继承(菱形继承)公共基类子对象,在汇聚子类对象中,存在多个实例。

2023-12-10 18:02:56 392

原创 9、三种继承方式

因为作用域的不同,分别在子类和基类中定义的同名成员函数(包括静态成员函数),并不构成重载关系,相反是一种。尽管基类的公有和保护成员在子类中直接可见,但仍然可以在子类中重新定义这些名字,子类中的名字会。在类的外部“通过”子类对象访问基类的成员时,需要考虑因继承方式对访问控制限定的影响。子类类型的指针或引用 和 基类类型的指针或引用可以进行转换 (其他继承方式不可以)基类中的公有、保护和私有成员,在子类中将对这些基类成员的访问控制限定进行重新标记。基类类型的指针不能隐式转换为子类类型的指针。

2023-12-09 12:41:21 795

原创 8、操作符重载

若源类型和目标类型都是类类型 (而非基本类型) ,则既可以通过类型转换构造函数也可以通过类型转换操作符函数实现自定义类型转换,但不要两者同时使用。若源类型和目标类型都是基本类型,则无法实现自定义类型转换,基本类型间的类型转换规则完全。无法重载所有操作数均为基本类型的操作符: 如实现。若源类型是基本类型,目标类型是类类型,则只能通过。若源类型是类类型,目标类型是基本类型,则只能通过。不是所有的操作符都能重载,以下操作符不能重载。函数实现自定义类型转换。

2023-12-08 09:34:26 1157

原创 7、类型转换构造、析构、深拷贝、类的静态成员

利用一个已定义的对象,来定义另一个不同类型的对象实现从源类型到目标类型的隐式类型转换的目的总结下已知构造,包括类型转换构造通过explicit关键字,可以强制这种通过类型转换构造函数实现的类型转换必须通过显式地进行。

2023-12-07 17:57:52 397

原创 6、缺省构造、拷贝构造、拷贝赋值、初始化表

缺省构造又称为无参构造。有参构造的每个形参都提供一个缺省值,这也是一个无参构造。,因为它可能作为另外个类的成员变量。

2023-12-07 17:31:19 393

原创 5、类的定义、类的实例化、string类的实现原理

为整个对象分配内存空间调用构造函数定义成员变量执行用户在构造函数中书写的代码// 构造函数:(1)函数名必须和类名相同 (2)没有返回值类型// 构造函数被调用的时间: 定义对象的同时,自动被调用// 构造函数的作用:定义对象的每一个成员变量public:Human( /* Human* this */ int age = 0, const char* name="匿名"){// 在this指向的内存空间中定义m_age(给m_age分类内存空间),初始值为随机数。

2023-12-06 08:48:12 866

原创 4、类和对象、this指针、常对象和常函数

对不同成员的访问控制限定加以区分,体现了C++作为面向对象程序设计语言的封装特性。在常函数内部无法修改成员变量的值,除非该成员变量被mutable关键字修饰。在类成员函数的形参表之后,函数体之前加上const关键字,则该成员函数的。该语句定义了变量p,且给p在栈分配了内存空间,成员属性初值为随机数。被const关键字修饰的对象、对象指针或对象引用,统称为常对象。原型相同的成员函数,常版本和非常版本构成重载。访问控制限定符仅作用于类,而非作用于对象。,这样的成员函数被称为常函数。

2023-12-05 18:06:31 368

原创 3、引用的应用、显示类型转换、面向对象

引用型的返回值,从函数中返回引用一定要保证在函数返回以后,该引用的目标依然有效。数组指针:指向一个数组的指针,保存的是首个元素的地址。引用型的返回值也分为常引用型和非常引用型。面向对象的三大要件:封装、继承、多态。指针数组:元素都是指针的数组。必须显示类型转换的情况。

2023-12-05 17:49:49 353

原创 2、函数重载和覆盖、动态内存分配、引用

重载关系的函数的调用重载和隐藏重载解析的类型决定其调用的哪个版本的重载函数重载是通过C++换名机制来实现的通过extern“C”可以要求C++编译器按照C方式编译函数,即不做换名,当然也就无法重载。

2023-12-05 08:52:47 401

原创 1、命名空间、C++的复合类型、缺省参数

void save( int m){ // 声明同时定义money += m;// 声明void BOC::pay( int m){ // 定义money -= m;std::cout

2023-12-04 18:17:59 589

原创 五一小长假!结束~

五一小长假!结束~

2023-05-05 14:34:20 122 1

原创 四月三号,记录下,缓口气~

三月也很忙,四月吧~

2023-04-03 15:50:16 126

原创 一个字,忙

忙。

2023-03-24 09:19:47 114

原创 哇!三月也很忙,四月吧~

三月也很忙,四月吧~

2023-03-09 14:02:04 88

原创 二月很忙,没时间写博客了,等三月吧。

二月很忙,没时间写博客了,等三月吧。

2023-02-24 08:44:07 63

原创 开工大吉,开始搬砖

开工大吉。开始搬砖

2023-01-28 09:01:26 115

原创 Helm3使用说明

helm3区别于helm2。

2023-01-12 17:56:52 547

转载 成为 Go 高手的 8 个 GitHub 开源项目

想成为 Go 高手吗?那推荐看看这些开源项目。Go 从 2009 年开始正式对外公布,随着时间的推移,Go 在当前的编程语言中占有良好的地位,在 WEB 领域、云原生领域、底层服务领域都有广泛的应用。Go 是一门相对年轻的语言,具有 C/C++ 等编译语言的性能和安全性,同时也具有良好的开发速度。本文将核心库、学习路线、项目和资源进行了分类,以便你进一步扩展你对 Go 语言的了解。

2023-01-10 17:38:21 598

原创 vsftp使用

取消匿名用户的相关设置(虚拟用户与匿名用户使用相同的参数,所以如果要设定虚拟用户,取消主配置文件中关于匿名用户的配置,子虚拟用户配置文件才有作用)人为创建,生成数据库文件,找一个系统用户作为虚拟用户的映射用户,借助系统用户的家目录作为默认登陆点,则默认登录位置:/home/*dir下的配置文件的名字和虚拟用户文件中的用户名相同即可,每个用户就有每个配置文件。2.使用本地用户作为虚拟用户的映射用户,为虚拟用户提供工作目录和权限控制。注:给映射用户的家目录,设置r权限,让虚拟用户有读写权限。

2023-01-05 17:36:04 912

原创 Go语言三个高效编程的技巧

其实也和上面的例子一样,encoding/json使用反射,这会导致性能不高,并且在编写返回 json 响应的 API 、或者微服务时会造成损失。比如像Loger,或者ORM,因为只有使用了通用的类型,才能编写出通用的代码,不然每个都要写一次。比如你可以使用 Easyjson,它很简单,也很高效,它是使用代码生成器来创建将结构转换为 json 所需的代码,以最大限度地减少分配。例如,Logrus 并不关心类型,但显然 Go 需要知道(最终)。两者都宣称零分配,这也是我们希望的,因为它们的性能影响最小。

2022-12-30 09:21:16 1483

原创 Selenium简介

selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法执行javaScript代码的问题。

2022-12-19 17:46:26 112

原创 Go实验性的大一统日志库

在 2022 年 8 月,Go 团队的 @ Jonathan Amsterdam 发起了 discussion: structured, leveled logging[1] 的讨论,试图与这个乱象再度一决雌雄。除此之外,在用户场景上,有着不包含上下文(context)信息、性能不够强劲、无法引入自定义插件等扩展诉求。基本上第三方库均有实现的,基本都用户的痛点之一。毕竟已经 10 年了,本讨论中得到了许多人的建议和推进,成功孵化。目标涵盖了前文背景中提到的痛点。

2022-12-12 17:23:37 457

原创 使用 Asynq 实现 Go 异步任务处理

Asynq 是一个 Go 库,用于对任务进行排队并与工作人员异步处理它们。它的工作原理:客户端将任务放入队列服务器从队列中拉出任务并为每个任务启动一个工作 goroutine多个工作人员同时处理任务仓库https://mp.weixin.qq.com/s/qCnjHo0uleLDr4Sukh77zw

2022-12-05 10:48:39 211

原创 Go 程序打成 rpm 包

go-bin-rpm 的配置文件是 rpm.json ,当然你也可以用其他文件名,我这里直接使用默认的,这样后面打包时就不用指定配置文件的名字。如果在不同的平台或系统有不同的二进制,则可以准备多个 rpm.json,然后在打包时,使用 -f rpm.json 来指定配置文件。于是乎,有人就编写了一个开源工具 go-bin-rpm,用它可以很方便的将二进制文件打包成 rpm 包。rpmbuild 的使用,需要你写不少的配置,非常繁琐,有研究过的人自然知道其中的泪。一切准备好了,就可以使用如下命令。

2022-11-30 17:33:34 917

原创 好用的源码行数统计工具——cloc

该命令会统计当前文件夹下所有符合.c和.h的文件。:统计某一压缩文件中的代码行数;:统计当前目录下的代码行数;

2022-10-27 10:24:11 1665

原创 makefile简单使用

commandtarget:一个object file(目标文件)、一个执行文件、一个标签(label)。label涉及“伪目标prerequisites: 生成该 target 所依赖的文件或targetcommand: 该 target 要执行的命令(任意的 shell 命令)这是一个文件的依赖关系,也就是说, target 这一个或多个的目标文件依赖于 prerequisites 中的文 件,其生成规则定义在 command 中。

2022-10-26 15:18:05 435

1、混合方式UI设计的源代码

1、混合方式UI设计的源代码

2023-12-11

MYSQL基础知识,一些常用问题

MYSQL基础知识,一些常用问题

2020-03-24

Redis集群配置文件

Redis集群配置文件,包含了三个主节点,三个从节点的配置文件,该配置是在docker中运行,有完整的docker-compose.yml文件,只要修改映射的宿主机的路径为你自己的路径。然后直接docker-compose up既可以完成环境启动。

2019-12-27

证书文件,cert.txt包含了制作的过程,下载下来解压就可以直接使用

证书文件,cert.txt包含了制作的过程,下载下来解压就可以直接使用。证书文件,cert.txt包含了制作的过程,下载下来解压就可以直接使用。证书文件,cert.txt包含了制作的过程,下载下来解压就可以直接使用。证书文件,cert.txt包含了制作的过程,下载下来解压就可以直接使用。证书文件,cert.txt包含了制作的过程,下载下来解压就可以直接使用。证书文件,cert.txt包含了制作的过程,下载下来解压就可以直接使用。证书文件,cert.txt包含了制作的过程,下载下来解压就可以直接使用。证书文件,cert.txt包含了制作的过程,下载下来解压就可以直接使用。证书文件,cert.txt包含了制作的过程,下载下来解压就可以直接使用。证书文件,cert.txt包含了制作的过程,下载下来解压就可以直接使用。证书文件,cert.txt包含了制作的过程,下载下来解压就可以直接使用。证书文件,cert.txt包含了制作的过程,下载下来解压就可以直接使用。

2019-08-13

grpctlsgrpctlsgrpctlsgrpctls

grpctlsgrpctls

2018-12-28

空空如也

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

TA关注的人

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