自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Escaping

一只R&D社畜,兴趣驱动,学习、分享、沉淀。 筚路蓝缕,以启山林。

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

原创 [C++]迭代器失效

迭代器失效先看一段代码#include <iostream>#include <vector>#include <set>int main() { int cnt = 0; std::set<int> s{1,4}; std::vector<int> vec{0,1,2,3,4,5,6,7,8,9}; f...

2022-05-11 20:37:52 1267

原创 [c/c++]trivial/POD类型和standard layout

什么是trivial/POD类型?C++20标准之前,POD类型指符合C的平凡旧数据结构(Plain Old Data),即类似C中结构体的平凡的、不具备特殊操作的数据结构,可以用于元数据交换的数据类型,直接以二进制和C库兼容的数据类型。设立此概念的初衷是为了描述那些 和 C 中结构体的概念相似的类型。但是,这个概念是太过于抽象和难以精确、严禁描述的。通过标准中对 POD 定义的变动,甚至在...

2021-08-17 00:58:58 1493

原创 如何让代码看起来有万佛朝宗的气势

1.使用全限定作用域::std::string user_name;::std::find('daniu',user_name.begin(), user_name.end());使用全限定作用域有如下功效:1.后来者被限定符吓到,料想代码写的如此严谨,这哥们必是大神2.超长的作用域给人一种系统很复杂的感觉...

2021-08-16 23:48:11 1162

原创 c/c++静态库和动态库制作

1.什么是库库lib是编译好的二进制代码,可以被操作系统载入内存执行,一般是预先编译好的函数的集合,可以通过头文件链接到库文件,执行已经编译好的代码段。库一般分为静态库(static lib,在linux系统一般是.a文件)和动态库(dynamic lib,也叫共享库,在linux系统一般是.so文件)。二者的不同点在于被载入的时间不同:静态库.a在编译的过程中会被编译到可执行文件,也就是...

2020-08-22 03:06:26 292

原创 静态库和动态库

1.什么是库库lib是编译好的二进制代码,可以被操作系统载入内存执行,一般是预先编译好的函数的集合,可以通过头文件链接到库文件,执行已经编译好的代码段。库一般分为静态库(static lib,在linux系统一般是.a文件)和动态库(dynamic lib,也叫共享库,在linux系统一般是.so文件)。二者的不同点在于被载入的时间不同:静态库.a在编译的过程中会被编译到可执行文件,也就是说会增大可执行文件的体积。动态库则是在执行的过程中才会去读取.so文件,不用编译进可执行程序,因此可执行程序体

2020-08-03 01:55:57 439

原创 终端复用神器Tmux使用教程

文章目录1.什么是Tmux2.使用tmux2.1安装Tmux2.2 启动、进入、分离与退出Session`启动tmux``分离session``回到session``退出Session``重命名Session`2.3Tmux窗口扩展和切换`垂直划分``水平划分``在窗口间移动光标`交换窗格位置。3.常用操作3.1经典场景3.2经典快捷键4.其它1.什么是TmuxTmux是一个终端复用软件 T...

2020-04-02 04:30:41 1471

原创 DataWhale二手车价格预测Task4-建模调参

文章目录DataWhale二手车价格预测Task4-建模调参四、建模与调参4.1 学习目标4.2 内容介绍4.3 相关原理介绍与推荐4.3.1 线性回归模型4.3.2 决策树模型4.3.3 GBDT模型4.3.4 XGBoost模型4.3.5 LightGBM模型4.3.6 推荐教材:4.4 代码示例4.4.1 读取数据4.4.2 线性回归 & 五折交叉验证 & 模拟真实业务情况4...

2020-03-31 19:23:34 258

原创 CentOS8安装Docker出现package docker-ce-3:19.03.8-3.el7.x86_64 requires containerd.io >= 1.2.2-3

文章目录1.背景简介2.错误提示3.问题分析4.解决方法1.背景简介最近用上了VULTR机器,默认使用了CentOS8,正好尝尝鲜,尝试安装Docker时出现了错误,故及时记录一下,方面其他同学。2.错误提示 Problem: package docker-ce-3:19.03.8-3.el7.x86_64 requires containerd.io >= 1.2.2-3, but...

2020-03-30 01:25:24 14697 12

原创 vs2017 配置OpenCV4.2开发环境(Win10环境)

最换了块硬盘,OpenCV得重装下,很久没用Win了,正好记录下给大家留个参考1.安装Visual Studio2017/2019目前最新的Visual Studio版本是Visual Studio 2019,读者按喜好安装即可,我的电脑上已经安装好了VS2017,就不安装新版本了2.配置OpenCV2.1 下载OpenCV登录OpenCV官网下载OpenCV...

2020-03-29 21:33:50 873

原创 win10 + vs2017/2019 + OpenCV4.2配置OpenCV开发环境

文章目录1.安装Visual Studio2017/20192.配置OpenCV2.1 下载OpenCV2.2 安装OpenCV3.VisualStudio配置OpenCV3.1添加环境变量3.2配置项目目录3.3 配置inlcude目录3.4 配置静态库4.测试OpenCV1.安装Visual Studio2017/2019目前最新的Visual Studio版本是Visual Studio...

2020-03-29 21:26:51 825

原创 DataWhale二手车价格预测Task3-特征工程

Task3 二手车价格预测Task3-特征工程1.常见的特征工程包括:异常处理:通过箱线图(或 3-Sigma)分析删除异常值;BOX-COX 转换(处理有偏分布);长尾截断;特征归一化/标准化:标准化(转换为标准正态分布);归一化(抓换到 [0,1] 区间);针对幂律分布,可以采用公式: log(1+x1+median)log(1+x1+median)数据分桶:等...

2020-03-27 19:19:14 134

原创 将博客搬至CSDN

暂时同步一下博客,同步完成删除

2020-03-24 22:10:15 79

原创 DataWhale二手车价格预测Task2-数据探索性分析EDA

二手车数据探索性分析EDATip:此部分为零基础入门数据挖掘的 Task1 赛题理解 部分,为大家入门数据挖掘比赛提供一个基本的赛题入门讲解,欢迎后续大家多多交流。赛题:零基础入门数据挖掘 - 二手车交易价格预测地址:https://tianchi.aliyun.com/competition/entrance/231784/introduction?spm=5176.12281957.10...

2020-03-24 21:48:29 472

转载 DataWhale二手车价格预测Task1-数据理解

Datawhale 零基础入门数据挖掘-Task1 赛题理解内容来自DataWhale零基础数据挖掘竞赛 Task1比较简单,简单熟悉下官方教程一、 赛题理解Tip:此部分为零基础入门数据挖掘的 Task1 赛题理解 部分,为大家入门数据挖掘比赛提供一个基本的赛题入门讲解,欢迎后续大家多多交流。赛题:零基础入门数据挖掘 - 二手车交易价格预测地址:https://tianchi.al...

2020-03-24 19:13:10 218

原创 [c/c++]1.堆、栈内存储存空间布局

历史沿袭至今,C程序一直由下列几部分组成:内存布局代码段:程序的所有指令会存放在这个区域,这是已经编译后的机器码。这是由CPU执行的机器指令部分。通常,正文段是可共 享的,所以即使是频繁执行的程序(如文本编辑器、C编译器和shell 等)在存储器中也只需有一个副本,另外,正文段常常是只读的,以防 止程序由于意外而修改其指令。字面量池是程序初始化时的一些字符串字面量,在程序中用于显...

2020-03-20 21:15:39 299

原创 APUE第13章 守护进程Deameon

守护进程守护进程daemon是一种生存周期很长的进程。它们通常在系统引导时启动,在系统关闭时终止。守护进程是没有终端的,它们一直在后台运行。守护进程的特征在Linux系统中,可以通过命令 ps -efj 来查看守护进程。例如下图:image.png从上图中可以看到 TTY 一列,该列显示每个进程的终端,对于问号(?)显示的进程,表明该进程没有控制终端。而CM...

2020-02-23 19:16:54 114

原创 APUE第12章 线程属性设置

线程属性12.3 线程属性pthread 接口允许我们通过设置每个对象关联的不同属性来细调线 程和同步对象的行为。通常,管理这些属性的函数都遵循相同的模式。(1)每个对象与它自己类型的属性对象进行关联(线程与线程属性关联,互斥量与互斥量属性关联,等等)。一个属性对象可以代表多 个属性。属性对象对应用程序来说是不透明的。这意味着应用程序并不 需要了解有关属性对象内部结构的详细...

2020-02-23 19:08:25 151

原创 APUE第11章 线程

10.1 引言pthread在前面的章节中讨论了进程,学习了UNIX进程的环境、进程间的 关系以及控制进程的不同方式。可以看到在相关的进程间可以存在一定 的共享。本章将进一步深入理解进程,了解如何使用多个控制线程(或者简 单地说就是线程)在单进程环境中执行多个任务。一个进程中的所有线 程都可以访问该进程的组成部件,如文件描述符和内存。不管在什么情况下,只要单个资...

2020-02-23 17:37:32 138

原创 APUE第10章 信号

第10章 信号signal10.1 引言信号是软件中断。很多比较重要的应用程序都需处理信号。信号提 供了一种处理异步事件的方法,例如,终端用户键入中断键,会通过信 号机制停止一个程序,或及早终止管道中的下一个程序。UNIX系统的早期版本就已经提供信号机制,但是这些系统(如 V7)所提供的信号模型并不可靠。信号可能丢失,而且在执行临界区代 码时,进程很难关闭所选择...

2020-02-21 11:23:59 236

原创 [c/c++] 7.signal函数

函数signalUNIX系统信号机制最简单的接口是signal函数。#include <signal.h> void (*signal(int signo, void (*func)(int)))(int);返回值:若成功,返回以前的信号处理配置;若出错,返回SIG_ERRsignal函数由ISO C定义。因为ISO C不涉及多进程、进程组以及终 端I...

2020-02-21 01:19:53 258

原创 APUE第9章 进程关系、进程组、会话

9 进程关系image.pngimage.png在第8章学习了进程的控制原语,通过各种进程原语可以对进程进行控制,包括新建进程、执行新程序、终止进程等。在使用fork( )产生新进程后,就出现了进程父子进程的概念,这是进程间的关系。本章更加详细地说明进程间的关系,包括:进程组、会话、作业等。9.1 终端登录当我们通过硬件终端而非网络终端登录到系统时...

2020-02-20 01:37:46 146

原创 APUE第8章 进程控制

8.1 引言在理解线程之前,首先需要了解UNIX/Linux进程。 进程是由操作系统创建的,需要相当数量的“开销”。 进程包含有关程序资源和程序执行状态的信息,包括:它是一个在随机访问内存(RAM)中,正在执行的程序,它是资源分配的最小单位。image.pngpcb内容:1)进程ID,进程组ID,用户ID和组ID2)环境3)工作目录4)程序说明5)寄存器...

2020-02-20 01:17:56 204

原创 [c/c++]6. exec函数

execimage.png曾提及用fork函数创建新的子进程后,子进程往往要调用一种exec函数以执行另一个程序。当进程调用一种exec函数时,该进程执行的程序完全替换为新程序,而新程序则从其main函数开始执行。因为调用exec并不创建新进程,所以前后的进程ID并未改变。exec只是用磁盘 上的一个新程序替换了当前进程的正文段、数据段、堆段和栈段。有7种不同的e...

2020-02-20 00:38:08 3076

原创 [c/c++]5.wait、waitpid、waitid,wait3、4 exit和,孤儿、僵尸进程

1.函数exitimage.png进程有5种正常终止及3种异常终止方式。5种正常终 止方式具体如下。(1)在main函数内执行return语句。如在7.3节中所述,这等效于调 用exit。(2)调用exit函数。此函数由ISO C定义,其操作包括调用各终止 处理程序(终止处理程序在调用atexit函数时登记),然后关闭所有标准 I/O流等。因为ISO C并不处...

2020-02-20 00:04:55 1675 1

原创 [c/c++]4.fork、vfork、clone和写时拷贝(copy on write)技术

进程创建进程创建首先说明Linux下的进程与线程比较相近。这么说的一个原因是它们都需要相同的数据结构来表示,即task_struct。区别在于一个有独立的用户空间,一个是共享的用户空间(如果完全没有用户空间则是内核线程,不需要)。Linux的用户进程不能直接被创建出来,因为不存在这样的API。它只能从某个进程中复制出来,再通过exec这样的API来切换到实际想要运...

2020-02-16 07:59:01 411

原创 APUE第7章 进程环境

7.1引言image.png将介绍进程控制原语,在此之前需先了解进程的环境。本章 中将学习:当程序执行时,其main函数是如何被调用的;命令行参数是 如何传递给新程序的;典型的存储空间布局是什么样式;如何分配另外 的存储空间;进程如何使用环境变量;进程的各种不同终止方式等。另 外,还将说明longjmp和setjmp函数以及它们与栈的交互作用。本章结束 之前,还将查...

2020-02-15 23:36:55 118

原创 [c/c++]3.如何查看和更改程序运行栈的大小

进程内存布局image.png我们写程序运行栈的栈帧保存在栈区,函数调用深度太多将导致爆栈栈的大小有上限,每个进程可以指定软上限,操作系统可指定硬上限linux查看栈上限方法linux可以通过ulimit命令查看栈上限和设置上限ulimit -a 查看进程所有资源上限ulimit -s xx 修改栈上限也可以通过程序中调用函数修改每个进程都有一...

2020-02-15 23:36:15 3164

原创 [c/c++]2.malloc、calloc、realloc

储存空间动态分配image.pngISO C说明了3个用于存储空间动态分配的函数。(1)malloc,分配指定字节数的存储区。此存储区中的初始值不确 定。(2)calloc,为指定数量指定长度的对象分配存储空间。该空间中 的每一位(bit)都初始化为0。(3)realloc,增加或减少以前分配区的长度。当增加长度时,可能 需将以前分配区的内容移到另一个足够大...

2020-02-15 10:26:05 214

原创 [c/c++]1.内存储存空间布局

历史沿袭至今,C程序一直由下列几部分组成:内存布局image.png代码段:程序的所有指令会存放在这个区域,这是已经编译后的机器码。这是由CPU执行的机器指令部分。通常,正文段是可共 享的,所以即使是频繁执行的程序(如文本编辑器、C编译器和shell 等)在存储器中也只需有一个副本,另外,正文段常常是只读的,以防 止程序由于意外而修改其指令。字面量池是程...

2020-02-15 09:36:12 140

原创 yaml-cpp:c++ 开发中利用yaml-cpp读写yaml配置文件

在程序员的开发生涯中,读写配置文件必不可少。配置文件有利于我们灵活配置工程,解决大量重复劳动,也方便调试。配置文件的格式有很多,最简单的有一行一行的文本,也有像 json、xml、protocol buffer 这样结构化的格式,当然也有 yaml 这种格式。今天的博文介绍的是如何在 C++ 开发中利用 yaml-cpp 开源库读写 yaml 配置文件。如果有 Python...

2020-02-13 00:36:57 1307

原创 Makefile简单入门

最近工作编译程序一直在用别人写的Makefile,但是没有系统的学习过,趁着放假学一波makefile0x00 Makefile 概述一个企业级项目,通常会有很多源文件,有时也会按功能、类型、模块分门别类的放在不同的目录中,有时候也会在一个目录里存放了多个程序的源代码。这时,如何对这些代码的编译就成了个问题。Makefile 就是为这个问题而生的,它定义了一套...

2020-02-10 04:17:55 147

原创 gcc参数详解

gcc 与 g++ 分别是 gnu 的 c & c++ 编译器 gcc/g++ 在执行编译工作的时候,总共需要4步:1、预处理,生成 .i 的文件[预处理器cpp]2、将预处理后的文件转换成汇编语言, 生成文件 .s [编译器egcs]3、有汇编变为目标代码(机器代码)生成 .o 的文件[汇编器as]4、连接目标代码, 生成可执行程序 [链接器ld]过程如下:...

2020-02-10 03:19:32 248

原创 linux系统信息读取小程序

获取内核版本、架构、用户名、终端、目录image.png/* * @Author: machineplay * @Date: 2020-02-05 03:04:30 * @Description: only for fun */#include <iostream>#include <stdio.h>#include <...

2020-02-05 05:42:50 98

原创 本地项目在github和coding上同步

用过一段时间的github,一直挺顺畅,突然用上了coding,略不适应,因此把coding和github上的远程仓库统一同步.image.png之前设置过SSH key,其值放在目录/.ssh/id_rsa.pub中,注意不是id_rsa,把id_rsa.pub文件中的ssh值放入此时已经在github和coding中已经设置好了SSH,用git remote...

2020-02-05 00:07:30 203

原创 计算可由time_t数据类型表示的最近时间。如果超出了这一时间将会如何?

计算可由time_t数据类型表示的最近时间。如果超出了这一时间将会如何?C++11标准规定long类型最少占32位,在我的计算机上,系统使用long int来实现time_t,实际使用64位来表示long类型,因此其取值值范围为 -9223372036854775808~9223372036854775807,由于该值特别大,2900亿年后才会溢出,此时宇宙可能都不存在了。对于某...

2020-02-04 22:45:42 474

原创 如果系统使用阴影文件,那么如何取得加密口令?

如果系统使用阴影文件,那么如何取得加密口令?无法获取,因为shadow文件只允许root用户访问,普通用户无法取得。假设你有超级用户权限,并且系统使用了阴影口令,重新考虑上一道习题。#include <iostream>#include <shadow.h>int main (int argc, char *argv[]){ string ...

2020-02-04 22:34:37 201

原创 APUE第6章 系统数据文件和信息

6.1 引言UNIX系统的正常运作需要使用大量与系统有关的数据文件,例 如,口令文件/etc/passwd和组文件/etc/group就是经常被多个程序频繁 使用的两个文件。用户每次登录UNIX系统,以及每次执行ls -l命令时都 要使用口令文件。由于历史原因,这些数据文件都是ASCII文本文件,并且使用标准 I/O库读这些文件。但是,对于较大的系统,顺序扫描口令文件很花费 时...

2020-02-04 22:30:32 231

原创 c时间函数strftime、struct timespec 和 struct timeval

时间和日期由UNIX内核提供的基本时间服务是计算自协调世界时(Coordinated Universal Time,UTC)公元1970年1月1日00:00:00这一特定 时间以来经过的秒数。1.10节中曾提及这种秒数是以数据类型time_t表示 的,我们称它们为日历时间。日历时间包括时间和日期。UNIX在这方 面与其他操作系统的区别是:(a)以协调统一时间而非本地时间计 时;(...

2020-02-04 22:19:55 1241

原创 Linux读取系统信息

系统标识POSIX.1定义了uname函数,它返回与主机和操作系统有关的信息。#include <sys/utsname.h>int uname(struct utsname *name);返回值:若成功,返回非负值;若出错,返回-1 通过该函数的参数向其传递一个 utsname 结构的地址,然后该函数填写此结构。POSIX.1只定义了该结构中最少需提供的字...

2020-02-03 04:05:24 181

原创 内存流

我们已经看到,标准I/O库把数据缓存在内存中,因此每次一字符 和每次一行的I/O更有效。我们也可以通过调用setbuf或setvbuf函数让 I/O库使用我们自己的缓冲区。在SUSv4中支持了内存流。这就是标准 I/O流,虽然仍使用FILE指针进行访问,但其实并没有底层文件。所有 的I/O都是通过在缓冲区与主存之间来回传送字节来完成的。我们将看 到,即便这些流看起来像文件流,它们的...

2020-01-30 15:56:11 352

空空如也

空空如也

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

TA关注的人

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