自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

wuguinianjing的博客

乌龟念经

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

原创 标准库的归总

迭代器value type 迭代器所指对象的类型,Iterator_traits能根据容器的迭代器,萃取出元素类型value typedifference type 表示两个迭代器之间的距离,也可以用来表示容器的最大容量,例如count()计数功能,其传回值就必须使用迭代器的difference typereference type常引用普通引用pointer type...

2021-11-11 00:38:26 890

原创 C++术语

声明式定义式初始化

2021-10-16 15:32:04 204

原创 模板学习归总

SFINAESFINAE(Substitution Failure Is Not An Error) 是C++ 的一种语言属性,具体内容就是”从一组重载函数中删除模板实例化无效的函数”。SFINAE 应用最为广泛的场景是C++中的 std::enable_if,这里有完整的英文描述:In the process of template argument deduction, a C++ compiler attempts to instantiate signatures of a numbe

2021-10-14 00:39:09 136

原创 malloc申请堆内存

1.malloc申请的空间,是否记录空间大小?若是记录,那所记录的空间大小在哪呢?为什么利用free释放不需要空间大小参数呢?2.malloc函数的相关堆分配算法3.malloc申请失败,即可使用的内存满时应该怎么办?...

2020-11-23 01:17:53 2625

原创 类型的归总

类型sizeof 计算变量或数据类型所占的字节个数在32 位的系统上short 占据的内存大小是2 个byte;int 占据的内存大小是4 个byte;long 占据的内存大小是4 个byte;float 占据的内存大小是4 个byte;double 占据的内存大小是8 个byte;char 占据的内存大小是1 个byte。bool 占据的内存大小是1 个byte。void 不能定义变量,但可以定义指针常见的ASICII值'a' // 97'A' // 65'\0' //

2020-11-19 16:25:51 273

原创 二 LIUNX常见操作命令

1.基本提示信息用户名@ 主机名 当前工作目录名 标识(#root模式,$用户模式)命名格式ps:注意图中的简化选项与完整选项说明,完整选项要两个横杆–2.pwd cdpwd 显示当前绝对路径cd . 当前位置cd … 退回上一层(父目录),而不是返回上一此的所处位置cd - 返回上一此的所处位置3.clear reset 清屏clear 清屏reset 清屏并将之前输入命令的缓存清理4 lsps:文件名以小数点开始的都是隐藏文件(ls -a)隐藏

2020-11-15 01:40:00 264

原创 编译器的工作

编译器的编译顺序?编译器从上到下顺序扫描程序。sizeof() 编译时计算出来 ++运行时才进行

2020-11-14 22:03:00 128

原创 C++归总学习

1 类与对象封装是面向对象程序设计最基本的特性,把数据(属性)和函数(操作)合成一个整体,这在计算机世界中是用类与对象实现的。现实世界中的实体可以抽象出类别的概念。对应于计算机世界就有一个类(class)的概念,因为类是一个抽象的概念的对应体,所以计算机不给它分配内存,只给对象分配内存。class CGoods{ public : char Name[21] ; //对于中文可用wchar_t name[11] int Amount ; float Pric

2020-10-19 17:57:05 490

原创 C语言归总学习2

C总结

2020-10-18 12:44:45 2731

原创 C语言的归总学习1

C语言的归总学习第一节 C语言的相关知识1 计算机的组成其中总线按功能和规范可分为五大类型:1.1 数据总线:在CPU与RAM之间来回传送需要处理或是需要储存的数据。1.2 地址总线:用来指定在RAM之中储存的数据的地址PS:地址总线的位数不代表CPU位数1.3 控制总线:将微处理器控制单元的信号,传送到周边设备。1.4 扩展总线:外部设备和计算机主机进行数据通信的总线,例如ISA总线,PCI总线。1.5 局部总线:取代更高速数据传输的扩展总线。PS:其中的数据总线DB、地址总线AB和

2020-10-15 16:31:33 1331

原创 sylar学习系列一

开发环境Centos7最小系统gcc 9.1cmake环境可能存在的一些问题可能存在的问题,linux最小系统没有一些常用命令,如果我们处于外网我们可以yum安装,但却遇到以下问题 can not find a valid baseurl for repo: base/7/x86-64可修改网络配置vi /etc/sysconfig/network-scripts/ifcfg-ens123 # 不是每个主机都是ens123把ONBOOT=no,改为ONBOOT=yes重启网络

2022-02-09 13:36:18 722

原创 linux别名alias的使用

"ll"命令不是linux的基本命令,它是"ls -l"的别名,部分版本并不直接支持“ll”命令输出运行“vi ~/.bashrc”查看该文件里是否有“alias ll=‘ls -l’”这样的数据,如有,将数据前的“#”去掉,如果没有,将“alias ll=‘ls -l’”加进去并保存,然后运行“source ~/.bashrc”命令,即可成功。...

2021-12-04 18:01:01 161

原创 格式字符串format

C11仿写printf(const char * format,…)namespace sqh{void print(const char* format){ const char* s = format; while (*s) { if (*s == '%' && *(++s) != '%') { std::runtime_error("this format is error"); } std::cout << *s++; } }

2021-12-02 23:35:27 648

原创 effective C++思想总结

条款2 尽量以const,enum,inline 替换#definemocro 没有符号,可能不会进入system table,常量有符号const 变量命名,以"kxxx"开头,大小写混合类内的专属常量至多只有一份实体,你必须保证让它成为一个static成员,将定义实现到实现文件而非头文件define不会被作用域限制,一旦被定义,它就在其后的编译过程中有效(除非在某处被#undef),即不能提供任何封装性,const可被封装,const能有作用域影响,类private,extern等编译阶段只

2021-12-02 19:02:36 181

原创 vscode的使用

vscode 插件GitLens 支持git管理,若下载git没有选择vscode为默认可进行下载该插件

2021-11-30 00:28:43 112

原创 github的使用

github怎么找开源项目掘金,一些刚刚开发出来的开源项目会在此进行展示https://github.com/trending/ 每日趋势https://github.com/521xueweihan/HelloGitHub 项目推荐https://github.com/ruanyf/weekly 周刊特殊的查找资料小技巧常用前缀后缀找百科大全 awesome xxx找例子 xxx sample找空项目架子 xxx starter / xxx boilerplate找教程

2021-11-29 22:01:10 206

原创 内存管理、内存池

内存池

2021-11-28 17:05:10 161

原创 库版本管理

由于so-name无法处理次版本号的版本交汇问题,需要引入一种新的机制来进行区分次版本—符号的版本控制机制基于符号的版本控制机制正常情况下,为了表示某个共享库中增加了一些接口,我们就把这个共享库的次版本号升高(表示里面添加了一些东西)。但是我们需要一种更为巧妙的方法,来解决次版本号交会问题。Linux 下的Glibc 从版本2.1之后开始支持一种叫做基于符合的版本机制。这个方案的基本思路是让每个导出和导入的符号都有一个相关联的版本号,它的实际做法类似于名称修饰的方法...

2021-11-25 15:54:47 134

原创 smb.conf简单配置免密码映射

[global] workgroup=BIGCLOUD netbios name=ZZSRV2 server string=Samba Server #security=share security=user map to guest = Bad User[scp] path = /mnt/scp writable = yes available = yes browseable = yes guest ok = yes force user =

2021-11-22 15:42:52 768

原创 tupe 元组

简介tuple元组是一个固定大小的不同类型值的集合,是泛化的std::pair。和C#中的tuple类似,但是比C#中的 tuple强大得多。我们也可以把它当作一个通用的结构体来用,不需要创建结构体又获取结构体的特征,在某些情况下可以取代结构体,使程序更简洁、直观。tuple看似简单,其实它是简约而不简单,可以说它是C++11中一个既简单又复杂的类型,简单的一面是它很容易使用,复杂的一面是它内部隐藏了太多细节,往往要和模板元的一些技巧结合起来使用。下面看看tuple的基本用法。构建tuple

2021-11-10 21:53:27 746

原创 哈工大实验搭建

2)文件结构Image 文件oslab 工作在一个宿主操作系统之上,我们使用的 Linux,在宿主操作系统之上完成对 Linux 0.11 的开发、修改和编译之后,在 linux-0.11 目录下会生产一个名为 Image 的文件,它就是编译之后的目标文件。该文件内已经包含引导和所有内核的二进制代码。如果拿来一张软盘,从它的 0 扇区开始,逐字节写入 Image 文件的内容,就可以用这张软盘启动一台真正的计算机,并进入 Linux 0.11 内核。oslab 采用 bochs 模拟器加载这个 Ima

2021-11-10 17:34:46 350

原创 将文件间的编译依存关系降至最低

对于头文件利用声明的依存性替代定义的依存性定义的依存性编译器对其定义时根据类型推算出该对象大小#include"Person"int x;Person person;声明的依存性使用指针来延迟编译器对其所指类型的推演,编译器不知道指针会指向何处,推迟到运行时动态分配。前置声明的person不能去直接调用Person,前置声明是没有对象大小的,也不能以此去进行类型转换。类型转换同样需要提前知道类型大小函数的形参和返回值是可以前置声明的//不引入包含Person的头文件,而使用前置声明.

2021-11-08 13:24:17 85

原创 里氏代换原则和C11类型转换

里氏代换原则:里氏代换原则是面向对象设计的基本原则之一。即任何基类可以出现的地方,子类一定可以出现。里氏代换原则是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受影响时,基类才能被真正复用,而衍生类也能够在积累的基础上增加新的行为,里氏代换原则是对·开-闭"原则的补充。实现开-闭"原则的关键步骤就是抽象化。在基类与子类的继承关系就是抽象化的具体实现,所以里氏代换原则是对实现抽象化的具体步骤的规范。当满足继承的时候,父类肯定存在非私有的成员,子类肯定是得到了父类的这些非私有成员(假

2021-11-06 16:46:18 143

原创 RSYNC+inotify(同步和实时监测)

环境centso关闭防火墙与selinux文件同步数据同步本机:cp、ln、dd、dump、mount crond局域网:scp、sftp、samba、ftp、web弊端:本地执行完整复制,效率低没有实时同步文件同步工具RSYNC核心算法:rsync算法弱校验:32位强校验:128位Rsync ( remote synchronize )是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件,也可以使用Rsync同步本地硬盘中的不同目录。这个算法只

2021-11-04 10:20:42 254

原创 运行时加载动态库

一个程序从源文件编译生成可执行文件的步骤:预编译 --> 编译 --> 汇编 --> 链接(1)预编译,即预处理,主要处理在源代码文件中以“#”开始的预编译指令,如宏展开、处理条件编译指令、处理#include指令等。(2)编译过程就是把预处理完的文件进行一系列词法分析、语法分析、语义分析以及优化后生成相应的汇编代码文件。(3)汇编是将汇编代码转变成二进制文件。(4)链接将二进制文件链接成一个可执行的命令,主要是把分散的数据和代码收集并合成一个单一的可加载并可执行的的文件。

2021-11-02 00:36:17 1875

原创 右值引用和完美转发,浅拷贝,深拷贝,移动

右值引用右值引用为什么重要呢,其是STL标准库效率提升的利器折叠引用

2021-10-29 00:02:19 373

原创 Chrome 插件

Chrome 插件FasterHostsFasterHosts 是个 Chrome 插件,主要原理是拦截浏览器的某些请求,将 domain 替换成访问速度较快的那个。hosts 资源来自 GitHub520,每 1 小时更新一次。下载 FasterHosts 然后解压,找到 extension 子目录打开 Chrome,输入: chrome://extensions/打开「开发者模式」选择「加载已解压的扩展程序」,然后定位到刚才解压的文件夹里面的 extension 目录,确定这就安装好了,关

2021-10-28 19:59:39 1109

原创 SSH免密登录

简介在使用shh相关操作时,会弹出输入目录等阻塞信息,这对脚本操作而言是无法忍受的,所以需进行免密ssh操作基于ssh的免密码同步ssh-keygen -t rsa #生成密钥对ssh-copy-id server@服务器IP #公钥上传到服务器此时单向同步不需要密码了,需要双向操作可在另一台服务器进行以上相关操作,实现双向免密...

2021-10-18 09:27:43 136

原创 C++11可变参数模板

简介C++11增强了模板功能,在C++11之前,类模板和函数模板只能含有固定数量的模板参数,现在C++11中的新特性可变参数模板允许模板定义中包含0到任意个模板参数。可变参数模板和普通模板的语义是一样的,只是写法上稍有区别,声明可变参数模板时需要在typename或class后面带上省略号“…”。参数表省略号的作用有两个:声明一个参数包,这个参数包可以包含0到任意个模板参数。在模板定义的右边,可以将参数包展开成一个个独立的参数。解析参数包如果需要用参数包中的参数,则一定要将参数包展

2021-10-15 17:07:42 136

原创 sqlite学习归总

简介SQLite3只是一个轻型的嵌入式数据库引擎,占用资源非常低,处理速度比Mysql还快,专门用于移动设备上进行适量的数据存取,它只是一个文件,不需要服务器进程。SQL语句是SQL操作的指令,我们用C/C++访问数据库时,需要用char*即C字符串来保存SQL语句,然后调用相应sqlite3库的函数,传入C字符串,来执行SQL指令。常用术语:表(table)、字段(column,列,属性)、记录(row,record)。SQL(structured query language)语句特点:

2021-10-14 23:19:36 222

原创 C++11 enable_if

enable_if 的主要作用就是当某个 condition 成立时,enable_if可以提供某种类型.其作为选择类型的小工具,其广泛的应用在 C++ 的模板元编程(meta programming)中。它的定义也异常的简单:template <bool, typename T=void>struct enable_if {}; template <typename T>struct enable_if<true, T> { using type .

2021-10-14 00:41:12 320

转载 C++中boolalpha的用法

1.头文件#include 2.使用说明让输出流将bool解析成为true或者 false。3、示例代码void test_boolalpha(){ std::cout << "true is " << true << std::endl; std::cout << "false is " << false << std::endl; // 运行下面这个语句, 在输出流中的bool值将发生变化 std::cout

2021-10-14 00:35:26 1863

转载 C++11 std::is_same和std::decay

C++11的模板类型判断——std::is_same和std::decay问题提出:有一个模板函数,函数在处理int型和double型时需要进行特殊的处理,那么怎么在编译期知道传入的参数的数据类型是int型还是double型呢?#include <iostream>template<typename TYPE>void typeCheck(TYPE data){ //do something check data type //std::cout<&

2021-10-13 23:53:35 293

原创 rapidjson的简单使用

Write/*{"Int": 1,"Double": 12.0000001,"String": "This is a string","Object": {"name": "qq849635649","age": 25},"IntArray": [10,20,30],"DoubleArray": [1,2,3],"StringArray": ["one","two","three"],"MixedArray": ["one",50,false,12.

2021-10-13 15:47:35 1116

原创 rapidxml的简单使用

Write#include <iostream>#include <string>#include <fstream>#include "rapidxml.hpp"#include "rapidxml_print.hpp"/*xmlDocumnetDeclaration---NodeElement---NodeComment; //注释 ---NodeAttribute; //属性 Text; //内容//层级收rap

2021-10-13 15:39:06 731

转载 Linux ln命令:创建文件链接

ln 是一个很神奇的命令,它可以创建一个文件的影子,也可以通过一个通道进入另一个地方。其实,所有的这些把戏都是通过软链接和硬链接来实现的。链接也分软硬软链接,全称是软链接文件,英文叫作 symbolic link。这类文件其实非常类似于 Windows 里的快捷方式,这个软链接文件(假设叫 VA)的内容,其实是另外一个文件(假设叫 B)的路径和名称,当打开 A 文件时,实际上系统会根据其内容找到并打开 B 文件。使用格式ln 源文件名称 硬链接文件名称ln -s 源文件名称 软链接文件名称建立

2021-10-13 11:14:50 291

转载 Linux下处理json工具---jq

JSON是前端编程经常用到的格式,对于PHP或者Python,解析JSON都不是什么大事,尤其是PHP的json_encode和json_decode,干的相当的漂亮。Linux下也有处理处理JSON的神器:jq。对于JSON格式而言,jq就像sed/awk/grep这些神器一样的方便,而也,jq没有乱七八糟的依赖,只需要一个binary文件jq,就足矣。下面我们看下jq的使用。1 格式化JSON#数据cat json_raw.txt {"name":"Google","location":{"s

2021-10-13 10:50:29 708

原创 URL(Uniform Resource Locator)

简介URL就是统一资源定位器(Uniform Resource Locator:URL)。通俗地说,它是用来指出某一项信息的所在位置及存取方式;更严格一点来说,URL就是在WWW上指明通讯协议以及定位来享用网络上各式各样的服务功能。在WWW上各种功能的服务器主机千万有余,必须靠URL这个单一又简单的方式,才能找到用户所要的文件在哪个服务器主机及这个主机上的哪个目录。因此我们也可以说URL就是WWW文件的参考(Reference)格式,使用者只要在浏览器输入地址处输入URL的格式内容,便可以得到其所指定的

2021-10-13 10:10:05 929

原创 strace 调试

strace怎么用?strace是用来跟踪用户空间进程的系统调用和信号其是个功能强大的Linux调试分析诊断工具,可用于跟踪程序执行时进程系统调用(system call)和所接收的信号,尤其是针对源码不可读或源码无法再编译的程序若strace没有任何输出,并不代表此时进程发生阻塞;也可能程序进程正在执行某些不需要与系统其它部分发生通信的事情。strace有两种运行模式。一种是通过它启动要跟踪的进程。用法很简单,在原本的命令前加上strace即可。比如我们要跟踪 “ls -lh /var/l

2021-10-08 00:41:02 168

原创 Qt Model/View(模型/视图)结构

简介Model/View(模型/视图)结构是 Qt 中用界面组件显示与编辑数据的一种结构视图(View)是显示和编辑数据的界面组件模型(Model)是视图与原始数据之间的接口。(中间层,封装思想)GUI 应用程序的一个很重要的功能是由用户在界面上编辑和修改数据,典型的如数据库应用程序。数据库应用程序中,用户在界面上执行各种操作,实际上是修改了界面组件所关联的数据库内的数据。将界面组件与所编辑的数据分离开来,又通过数据源的方式连接起来,是处理界面与数据的一种较好的方式。Qt 使用 Model/V

2021-09-26 00:36:32 252

空空如也

空空如也

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

TA关注的人

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