自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(94)
  • 收藏
  • 关注

原创 【C++】替代--whole-archive的一种方式

上篇文章《C++自动注册的工厂与--whole-archive》提到了--whole-archive选项在自动工厂示例的必要,“貌似也没其他方法了”。这篇文章介绍另一种可以替代的方式,并分析其优缺点,采用的代码示例同上篇文章。文章最后附代码。方法介绍ld链接器提供了另外一组选项解决符号依赖的问题。-u symbol--undefined=symbol上面的选项用来告诉链接器symbol符号在最终...

2023-11-13 07:00:25 518

原创 C++自动注册的工厂与--whole-archive

上篇文章《静态库和链接选项--whole-archive》提到--whole-archive的一个应用场景:C++自动注册的工厂,这篇文章来填坑。预备知识我们经常用工厂类或工厂方法统一管理资源,实现资源的创建和使用之间的解耦,调用者无需关心资源创建的细节,直接到工厂申请创建好的资源即可。一般情况下,资源提供了统一的接口供使用者调用,到工厂的获取也采用统一的方式,极大地简化了编码,尤其是资源创建比较...

2023-11-09 07:00:22 1023

原创 【C++】静态库和链接选项--whole-archive

欢迎大家关注公众号最近在迁移服务到Linux,不少人遇到未定义的符号之类的错误无所适从。简单的情况不做介绍,比如库路径不对等,最近几篇文章主要介绍库依赖相关的情况。预备知识静态库静态库实际上是二进制目标文件的集合。生成目标文件,需要用到-c选项;打包静态库用到ar命令。$g++-ca.cpp$arrcsliba.aa.o第一条命令生成a.o目标文件。第二条将a.o打包进liba.a...

2023-11-06 07:00:11 479

原创 【C++】弱类型的C++

(点击上方公众号,可快速关注)C++是强类型语言吗?在很多人眼里至少它不算弱类型语言,因为它在C语言的基础上类型增强了很多,如,nullptr_t类型区分整型的NULL、enum class 增强了作用域等。但由于兼容C语言,所以语言的某些部分永远“强”不起来,所以,一定要记住:C++是弱类型语言。强类型语言在编译时能给予程序更多的安全保证,所以经常有人说,程序编译通过了基本就没bug了,C++则...

2023-09-12 07:00:17 172

原创 【C++】引用重新赋值?

(点击上方公众号,可快速关注)前段时间解决了一个关于引用的bug,原因是引用“重新赋值”造成的,原来的代码逻辑关于队列的选择,为了凸显问题,这里使用一个简单的例子重写。示例代码如下:inta=1;intb=2;//默认取aint&c=a;//若满足某种条件,取bc=b;从代码注释可以看出来,这段代码希望实现的效果是:引用c可以根据条件选择指向的变量。...

2023-05-15 07:00:18 504

原创 工具推荐二

(点击上方公众号,可快速关注)GUI框架我是个后端程序员,使用GUI框架的机会很少,主要用来编写个人或工作中的一些小工具上,经验有限,仅供参考。Tk框架这个框架tcl语言自带,在python里由pytk包提供。Python默认的IDLE编辑器的界面就是pytk编写的。它功能简单,性能也一般,相对应地学起来也简单,适合一些小的个人项目。Java系框架早期的awt已淘汰,swing未来堪忧,即使更现代...

2023-05-12 07:02:14 276

原创 工具推荐其一

(点击上方公众号,可快速关注)工欲善其事,必先利其器。总结一下这些年用得一些比较顺手的工具,纯主关看法,希望对大家有所帮助。编程语言因为工作和兴趣爱好,用过很多编程语言,包括C/C++、Java、C#、Python、JavaScript、汇编、SQL、Go、Rust、Lua、Lisp、Prolog、Haskell、Idris、Scheme、Bash、HTML等,每种语言都有其特点,这里简单介绍它们...

2023-04-18 07:00:06 131

原创 【C++】浅谈C++中的错误处理【改】

(点击上方公众号,可快速关注)完备的错误处理是健壮的程序必不可少的。在C++中,错误处理主要通过两种形式:函数返回值简单起见,C中的errno也归为这一类。异常处理机制,try…catch函数返回值函数通过返回值告诉调用者具体的错误,简单明了,在C/C++中被广泛使用。基本的使用方式不再赘述,仅讨论常见问题的解决方式。嵌套深如下面的伪代码:if(func1()==Sucess){.....

2022-11-28 21:43:26 115

原创 【C++】小而快的Ninja

(点击上方公众号,可快速关注)CMake是C++事实上的标准构建生成器(Build generator),之所以叫生成器,是因为它通过分析CMakeLists.txt为构建系统生成真正的构建文件,如Makefile、VS的sln文件等。大部分上下文中,构建生成器跟构建系统指的是一回事。CMake虽应用广泛,但难用程度和语法的迷惑程度远高于类Python语法的Meson,有兴趣的朋友的可以看下(ht...

2022-11-27 09:33:15 647

原创 【C++】浅谈C++中的错误处理

(点击上方公众号,可快速关注)完备的错误处理是健壮的程序必不可少的。在C++中,错误处理主要通过两种形式:函数返回值简单起见,C中的errno也归为这一类。异常处理机制,try…catch函数返回值函数通过返回值告诉调用者具体的错误,简单明了,在C/C++中被广泛使用。基本的使用方式不再赘述,仅讨论常见问题的解决方式。嵌套深如下面的伪代码:if(func1()==Sucess){.....

2022-11-24 06:00:19 211

原创 【算法】三层嵌套循环的时间复杂度

(点击上方公众号,可快速关注)问题在中国大学MOOC听北京大学的《算法初步》课程,第一章有道课后习题比较典型,是关于三层循环的时间复杂度的评估。问题是这样的:解法一作为选择题,最直接的方法就是通过代入法验证结果对不对。当n=4,此时c只能是3,b只能是2,a只能为1,所以语句执行次数为1。将n=4带入上A、B、C三个选项,看看哪一个等于1,这道题比较直接,代入n=4的情况就能得到答案C。否则,就多...

2022-09-20 00:00:51 908 1

原创 【C++】为什么floor函数返回浮点数

(点击上方公众号,可快速关注)进入话题前先闲扯几句,聊一下今年的就业形势。最近出来两则新闻:1)一北航22届的朋友,拿跟去年几乎同样的简历找工作,去年收到了拿到了网易、快手、美团、百度、蔚来、B站的Offer,结果今年百度通过简历筛选,蔚来还在评估,快手和网易简历直接挂,阿里直接简历挂(去年是挂在hr面);2)毕业生企业就业率呈下降趋势,“985”毕业生涌入县城。感同身受,从20年疫情以来,就业行...

2022-09-16 05:30:49 533

原创 新人常有的一些不好习惯

(点击上方公众号,可快速关注)首先说明下,这里说的”新人“仅仅是我接触到的刚参加工作的新同事。肯定存在不少刚毕业的”老手“,比工作上的”老人“还老道。C++相关不好的习惯include 冗余头文件关于这一点,带来的主要副作用是给使用者增加了依赖,举个例子:假设一个http库提供了Get、Post等功能,大体这样子:#pragmaonce#include<string>#inc...

2022-09-05 07:00:40 266

原创 【现代C++】类型推导与auto

(点击上方公众号,可快速关注)类型推导(Type inference 或 Type deduction),顾名思义就是编译器能自动推导出数据类型,免去了显式的类型声明。Java、C#等静态...

2022-03-11 07:00:00 131

原创 【C++】巨坑-VC++的localtime_s的三宗罪

(点击上方公众号,可快速关注)前几天在运行一段代码的时候,发现localtime执行失败,由于代码没有判断返回值,后续对空指针操作导致段错误。所以,需要对该段代码增加保护判断,避免程序崩溃...

2021-06-22 07:06:00 1438

原创 【现代C++】自定义字面量-序:字面量(一)

(点击上方公众号,可快速关注)C++11引入了自定义字面量,由于这个语言特性的外延较大,为了系统介绍它,先把字面量的知识补全。在看语言规范的过程中,的确发现了好多知识点是以前没接触过的,这...

2021-06-21 07:00:00 1004

原创 【C++】再谈 STL reserve的坑

(点击上方公众号,可快速关注)前言之前写过一篇文章《STL reserve函数使用误区》,主要内容是说明一些标准模板类,比如,std::vector、std::string等,提供的res...

2021-06-08 07:00:00 721

原创 【C++】std::endl只是换行?

(点击上方公众号,可快速关注)前言一直用std::endl输出换行符,理所当然认为下面的代码等价:std::cout<<"HelloWolrd"<...

2021-06-01 07:30:00 707

原创 【现代C++】新的字符串格式化方法

(点击上方公众号,可快速关注)本篇文章主要介绍现代C++字符串格式化的方法。在此之前,回顾了一些老的字符串格式化的方法,并分析各自的优劣。在最后给出了一种提供给老编译器的折中方案,因为新的...

2021-05-28 07:00:00 11163

原创 【现代C++】简洁的as_cast函数模板

(点击上方公众号,可快速关注)前言C++17标准库加入了as_const函数模板,它可以将给定的左值引用转为常量左值引用,用法也很简单。下面的例子中,假设myValue是MyType类型的...

2021-05-19 07:07:00 465

原创 【现代C++】再谈Structured Bindings

(点击上方公众号,可快速关注)劳动节快乐!打工人加油!上一篇文章《使代码简洁的两种解包方式》介绍了两种代码简洁工具,尤其推荐Structured Bindings,因为它能绑定各种类型的成...

2021-05-04 07:00:00 353

原创 【现代C++】使代码简洁的两种解包方式

(点击上方公众号,可快速关注)前言C++没有模式匹配,在提取某个数据类型的元素或成员时会显得不太方便。假设t是一个包含3个元素的元组,类型为std::tuple<int,double...

2021-04-29 07:00:00 3731 2

原创 【Haskell】Haskell语言挺好的

(点击上方公众号,可快速关注)写本篇文章主要是对Haskell做一些澄清,因为看到网上很多文章都要把它说没了,心里很是不平啊。每种编程语言都有其生命周期,但Haskell肯定在短期内淘汰...

2021-01-26 07:00:00 2120

原创 【GTK4】现状及学习资源小结

(点击上方公众号,可快速关注)对GTK一直”情有独钟“,这个在之前有说过:主要是因为它支持GObject Introspection,简称(GI),能实现自动化的语言绑定,别的框架要绑定...

2020-12-20 11:21:07 4767 1

原创 【Asio】套接字绑定端点

(点击上方公众号,可快速关注)本篇文章介绍套接字绑定的相关内容。绑定指的是将套接字和端点关联起来,绑定后的效果:若服务端套接字绑定了端点,客户端连接时指定了该端点,则客户端的网络包会转给...

2020-12-13 14:44:25 540

原创 【Asio】客户端结构

(点击上方公众号,可快速关注)完整的网络通信涉及到IO操作,而IO操作在Asio中是一个大头,后面会花大篇章介绍。这篇主要呈现在Asio下,简单的客户端的代码结构是什么样的,毕竟准备内容...

2020-09-20 12:16:15 255

原创 【Asio】DNS域名解析

(点击上方公众号,可快速关注)背景互联网应用是通过IP标识通信双方的主机地址的。常用的IPv4是32位的整数,而这个数字不好记忆,所以引入了更加适合人类阅读和记忆的点分十进制表示法,如环...

2020-08-23 11:07:58 682

原创 【Asio】创建被动套接字

(点击上方公众号,可快速关注)概述在《创建主动套接字》一节中已经对被动套接字的定义做了说明:这类套接字用来被动的接收远程的连接请求,这类套接字不会进行数据交互。本篇将进一步展开对这类套接...

2020-08-09 23:08:42 228

原创 【Asio】创建主动套接字

(点击上方公众号,可快速关注)最近由于家里、工作事情比较多,文章更新比较慢,望大家包涵。公众号一定不会停更的,欢迎大家继续关注公众号。精力有限,后续主要更新asio相关教程,先把该系列结...

2020-07-19 22:02:48 318

原创 【Asio】创建端点

(点击上方公众号,可快速关注)定义在网络通信中,通信的两端就是两个端点(Endpoint)。Asio其中一条设计目标是:尽可能继承已被证明有效的实践经验。伯克利套接字(BSD socke...

2020-06-15 00:00:22 538

原创 【Python】控制流_比较操作符

(点击上方公众号,可快速关注)比较操作符用于比较两个值,最终求值为一个布尔值。比较操作符有:操作符含义==等于!=不等于<小于>大于<=小于等于>=大于等于==和...

2020-06-04 06:59:52 138

原创 Why Asio?

(点击上方公众号,可快速关注)Asio系列文章开写了,希望大家关注。Asio库大概率会进入C++23标准库,是时候该学习一下了。长久以来,C++最饱受诟病的一点就是缺少一些实用的库,比如...

2020-05-31 11:48:06 201

原创 【Python】控制流_布尔类型

(点击上方公众号,可快速关注)在逻辑学中,命题只有两个结果:要么是“真”,要么是“假”。在计算机编程中,也需要使用到真假的概念,比如下面的流程图:该流程图描述了618当天某商品的定价逻辑...

2020-05-30 20:43:34 150

原创 【Python】控制流_控制流是啥

(点击上方公众号,可快速关注)所谓“控制流语句”就是控制程序运行流程的一些语句,决定在什么条件下执行哪些 Python 语句。控制流整体上分为三类:顺序结构这类结构最直观,我们前面接触到...

2020-05-27 22:51:59 1269

原创 【Python】Python基础_习题解答

(点击上方公众号,可快速关注)变量很像盒子,但跟现实中的盒子又很不一样。前面我们提到一点:现实中的盒子可以放很多东西,而变量只能放一个值。再类比下,现实中的盒子,饭盒用来装饭,鞋盒用来放...

2020-05-19 22:35:00 271

原创 【Python】Python基础_第一个程序

(点击上方公众号,可快速关注)创建程序的步骤程序是语句的集合,即使最简单的一个print语句也是程序。程序通常以文件的形式保存在计算机上,下面说明使用IDLE创建程序的步骤:打开IDLE...

2020-05-16 15:43:39 166

原创 【Python】Python基础_类型转换很必要

(点击上方公众号,可快速关注)为什么需要类型转换一句话:当前的数据类型并不支持你需要的操作。比如,当我们要计算两个整数的和的时候,但我们接收到的数据是字符串类型,我们没法进行加法操作,因...

2020-05-08 08:00:00 420

原创 【Python】Python基础_IO操作很简单

(点击上方公众号,可快速关注)背景介绍我们平常接触到的程序运行都直接或间接地取决于用户地输入内容,并通过某种方式将结果呈现(输出)给用户。这就是编程所说的IO(Input/Output)...

2020-05-02 23:03:17 265

原创 【Python】Python基础_变量就像盒子

(点击上方公众号,可快速关注)变量定义在前面的内容中,接触到了很多值,比如1、1.0、'abc'等,这些值是固定的,它的值是正如其字面所表达的,在计算机科学中称为字面量(...

2020-04-25 21:49:08 839

原创 【Python】Python基础_常见数据类型

(点击上方公众号,可快速关注)数据类型数据类型指的是一组值和一组对这些值的操作的集合。定义比较抽象,举几个例子:整数集合Z和操作整数的加减乘除等运算,构成了整型。小数集合和操作小数的加减...

2020-04-19 11:09:17 111

空空如也

空空如也

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

TA关注的人

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