自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 利用python获取文件名,并批量复制给另一个文件夹

#!/usr/python#-*- coding:utf-8 -*-import osimport globimport shutilfilenames=set()#保存要复制的文件名集合,就是下面val.txt中的文件名#val.txt保存的是没有路径,没有后缀的文件名,比如2345,而不是~/"PATH"/2345.jpgwith open('/home/llc/llc/yolov3_keras/keras-yolo3/VOCdevkit/VOC2020/ImageSets/Main/

2020-12-10 15:55:01 656 1

原创 利用python批量提取xml文件中的某个类别的数目

import osimport xml.dom.minidomtotal_count = 0AnnoPath = './ads/ads_xml'Annolist = os.listdir(AnnoPath)for annotation in Annolist: filename = os.path.join(AnnoPath,annotation) dom = xml.dom.minidom.parse(filename) # 打开XML文件 collection = d

2020-12-03 11:10:34 944 3

原创 APUE读书笔记(九)线程及线程同步

文章目录1 线程标识1.1 线程ID的比较函数pthread_equal1.2 线程获得自身的线程ID函数pthread_self2 线程的基本操作函数2.1 线程创建函数pthread_create2.2 等待线程结束函数pthread_join2.3 线程终止函数pthread_exit2.4 实例3 线程同步3.1 互斥量3.1.1 互斥量的各种函数原型3.1.2 实例3.2 读写锁3.2....

2020-04-13 15:19:01 230

原创 APUE读书笔记(十)函数setjmp和longjmp

文章目录1 函数setjmp和函数longjmp1.1 函数原型1.2 参数说明1.3 示例在中国的编程教育中,似乎goto是每个教育唯恐避之不及的东西,其实,在unix的源码中,goto语句随处可见。但goto语句是不能跨越函数的,而执行这种类型跳转功能的是函数setjmp和longjmp。这两个函数对于处理发生在很深层嵌套函数调用中的出错情况是非常有用的。setjmp和longjmp函数又...

2020-02-07 16:20:09 180

原创 Linux网络编程笔记(六)广播介绍

文章目录参考1 套接字选项1.1 参数说明1.2 SO_BROADCAST选项1.3 SO_SNDBUF和SO_RCVBUF选项2 广播地址3 示例3.1 广播接收端3.2 广播发送端3.3 运行结果参考本文所有知识均参考网课:https://study.163.com/course/courseLearn.htm?courseId=1002913013&share=1&sh...

2020-01-16 20:11:55 303

原创 APUE读书笔记(八)打开流函数(fopen、freopen、fdopen)

文章目录1 函数fopen、freopen和fdopen1.1 函数原型1.2 参数说明1.3 返回值1.4 fclose函数1.5 freopen函数示例2 示例1 函数fopen、freopen和fdopen这三个函数可以打开一个标准I/O流1.1 函数原型#include<stdio.h>/**fopen函数打开路径名为pathname的一个指定文件**/FIL...

2020-01-16 11:43:51 405

原创 Linux网络编程笔记(四)UDP编程模型

文章目录参考1 UDP客户端服务器编程模型2 数据传输2.1 数据传送2.2 接收数据3 示例3.1 服务器端编程3.2 客户端编程3.3 运行结果参考本文所有知识均参考网课:https://study.163.com/course/courseLearn.htm?courseId=1002913013&share=1&shareId=1145943119#/learn/vi...

2020-01-15 16:56:54 210

原创 Linux网络编程笔记(五)域名解析

文章目录参考1 终端查看本地域名和ip地址信息2 域名解析函数参考本文所有知识均参考网课:https://study.163.com/course/courseLearn.htm?courseId=1002913013&share=1&shareId=1145943119#/learn/video?lessonId=1003300268&courseId=100291...

2020-01-15 16:52:25 192

原创 APUE读书笔记(七)函数futimens和各种目录操作函数

文章目录1 函数futimens、utimensat和utimes1.1 函数原型1.2 参数说明1.3 返回值2 函数mkdir、mkdirat2.1 mkdir函数原型2.2 参数说明2.3 返回值3 函数rmdir3.1 rmdir函数原型3.2 参数说明3.3 返回值4 读目录的各项操作函数4.1 各种函数原型4.2 dirent结构4.3 DIR结构4.4 示例——遍历某一目录所有目录项...

2020-01-14 21:24:10 368

原创 APUE读书笔记(六)函数link、unlink、remove和symlink

文章目录1 函数link和函数linkat1.1 link函数原型1.2 参数说明1.3 返回值1.4 示例2 函数unlink和函数unlinkat2.1 unlink函数原型2.2 参数说明2.3 返回值2.4 示例3 函数remove3.1 remove函数原型3.2 参数说明3.3 返回值4 函数symlink和函数symlinkat4.1 chown函数原型4.2 参数说明4.3 返回值...

2020-01-14 19:17:17 516

原创 Linux网络编程笔记(三)TCP编程模型

文章目录TCP客户端服务器编程模型客户端调用序列服务器端调用序列套接字与地址绑定绑定地址查找绑定到套接字的地址获取对方地址建立连接服务器端客户端TCP客户端服务器编程模型如上图所示,客户端调用序列调用socket函数创建套接字调用connect连接服务器端调用I/O函数(read/write)与服务器端通讯调用close关闭套接字服务器端调用序列调用socket函数创建套...

2020-01-14 14:43:26 214

原创 Linux网络编程笔记(二)字节序、地址结构和IPv4地址族

文章目录字节序简介字节序转换函数网络地址结构通用地址结构因特网地址结构IPv4地址族和字符地址间的转换示例字节序简介不同系统字节存储顺序不同,有的是高位在前,有的是低位在前:其中,MSB代表最重要位,LSB代表最不重要位。上图中第一个字节序称为大端字节序,因为高位在前;下面的字节序称为小端字节序,因为低位在前。需要注意的是,网络协议使用网络字节序即大端字节序,所以编程时,主机字节序和网...

2020-01-09 11:43:26 330

原创 APUE读书笔记(五)函数access、umsk、chmod、chown

文章目录1 函数access和函数faccessat1.1 access函数原型1.2 参数说明1.3 返回值1.4 示例2 函数umask2.1 umask函数原型2.2 参数说明2.3 返回值2.4 示例3 函数chmod、fchmod和fchmodat3.1 chmod函数原型3.2 参数说明3.3 返回值3.4 示例1 函数access和函数faccessat我们知道,当用open函数...

2020-01-08 18:45:12 289

原创 APUE读书笔记(四) stat函数集

文章目录函数stat、fstat、fstatat和lstat函数原型参数说明返回值stat结构st_mode成员示例函数stat、fstat、fstatat和lstat这四个函数是用来返回i文件有关的信息结构。函数原型#include<sys/stat.h>int stat(const char *restrict pathname,struct stat *restrict...

2020-01-06 17:37:34 162

原创 LeetCode_21——合并两个有序链表

class Solution1 {public: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { ListNode* phead = new ListNode(-1); //构建带有头结点的链表 ListNode* pNode = phead; while (l1 != nullptr && l2 !=...

2020-01-05 21:54:37 96

原创 LeetCode_20——有效的括号

class Solution1 {public: bool isValid(string s) { stack<char> cs; if (s[0]==')'||s[0]=='}'||s[0]==']') //字符串第0个元素就是右括号,返回false return false; for (int i = 0; i != s.size(); i++) { ...

2020-01-05 21:48:21 102

原创 LeetCode_14——最长公共前缀

if (strs.size() == 0) return ""; string result; for (int i = 1; i <= strs[0].size(); i++) { //以第一个字符串为基准,设公共前缀为第一个字符串前i个子字符串 result = strs[0].substr(0, i); for (int j = 1; j != strs....

2020-01-05 21:42:43 213

原创 LeetCode_13——罗马数字转整数

解法:定义返回值res=0,依次遍历字符串,比如IV,先遍历I,因为I后面的V比I大,则res=res+5-1=4;又比如VIII,(1)先遍历V,因为V后面I比V小,则res=res+5=5; (2)再遍历I,因为后面I和I相等,则res=res+1=6; (3)同理,最终可得res=8;class...

2020-01-05 21:32:03 114

原创 条款48:认识template元编程——263

文章目录TMP的优缺点——263总结——268template metaprogramming(TMP,模板元编程)是编写template-based C++程序并执行于编译期的过程。TMP的优缺点——263TMP有两个伟大的效力:(1)它让某些事情更容易。(2)由于template metaprograms执行于C++编译期,因此可将工作从运行期转移到编译期。基于第2个效力产生3个结...

2019-12-30 13:32:20 209

原创 条款47:请使用traits classes表现类型信息——256

文章目录总结——262我们期望的以下列方式实现advance:template<typename IterT,typename DistT>void advace(IterT& iter,DistT d){ if(iter is a random access iterator) { iter+=d; //针对random acce...

2019-12-30 13:31:14 159

原创 条款46:需要类型转换时请为模板定义非成员函数——252

文章目录总结——256将条款24的例子换成模板:template<typename T>class Rational{public: Rational(cosnt T& numerator=0, const T& denominator=1); const T numerator() const; cons...

2019-12-30 13:29:59 173

原创 条款45:运用成员函数模板接受所有兼容类型——248

文章目录Template和泛型编程——249总结——252Template和泛型编程——249我们来构造一个成员函数模板:template<typename T>class SmartPtr{public: template<typename U> SmartPtr(const SmartPtr<U>& other); ...

2019-12-30 13:29:08 132

原创 条款44:将与参数无关的代码抽离template——242

文章目录去同存异(共性与变形分析)——242总结——247去同存异(共性与变形分析)——242template的确让源代码看起来合身而整齐,但是其目标码却不是那么回事。考虑下面例子:template<typename T,std::size_t n> //template支持nxn矩阵,元素是类型为T的objectclass SquareMatrix{public: ...

2019-12-30 13:27:56 160

原创 条款43:学习处理模板化基类内的名称——237

文章目录三个办法令C++“不进入templatized base classes观察”的行为失效——240总结——242当我们从Object Oriented C++跨进Template C++,继承就不像以前那般畅行无阻了。三个办法令C++“不进入templatized base classes观察”的行为失效——240(1)在base class函数调用动作之前加上“this—>”...

2019-12-30 13:27:08 162

原创 条款42:了解typename的双重意义——233

文章目录从属类型、嵌套从属类型和非从属类型——234无论何时,请在嵌套从属类型名称前放上关键字typename——234typename 不可出现在base class list内的嵌套从属类型名称之前,也不可在member initializationlist中作为base class 修饰符——236总结——237从属类型、嵌套从属类型和非从属类型——234我们来看下面例子:templa...

2019-12-30 13:26:25 174

原创 条款41:了解隐式接口和编译器多态——229

文章目录显示接口和运行期多态——229隐式接口和编译器多态——230总结——233显示接口和运行期多态——229我们来看这样的例子:class Widget{public: Widget(); virtual ~Widget(); virtual std::size_t size() const; virtual void normalize(); ...

2019-12-30 13:25:24 110

原创 APUE读书笔记(三) 函数dup和函数fcntl

文章目录1 函数dup1.1 dup函数原型1.2 参数说明1.3 返回值1.4 示例2 函数fcntl2.1 fcntl函数原型2.2 参数说明2.3 返回值2.4 示例3 可以用fcntl函数实现dup函数1 函数dup函数dup和dup2都是用来复制一个现有的文件描述符,并和复制的对象共享已打开的文件。1.1 dup函数原型#include<unistd.h>int ...

2019-12-24 12:53:26 260

原创 ubuntu下的github简单使用

目录0 参考1 安装git2 检查SSH是否能连接到Github3 在终端git下注册你的邮箱和用户名(选择你的github的所用邮箱和用户名)4 建立远程仓库5 建立本地仓库0 参考https://blog.csdn.net/daydayjump/article/details/80850390https://www.jianshu.com/p/a71...

2019-12-18 16:52:35 240

原创 APUE读书笔记(二) 函数read、write和lseek

文章目录1 函数read1.1 read函数原型1.2 参数说明1.3 返回值2 函数write2.1 write函数原型2.2 参数说明2.3 返回值3 函数lseek3.1 lseek函数原型3.2 参数说明3.3 返回值4 示例1 函数read1.1 read函数原型#include<unistd.h>ssize_t read(int fd,void *buf,size_...

2019-12-16 22:05:27 244

原创 APUE读书笔记(一)函数open函数close

1 函数open1.1 open函数原型int open(const char* path,int oflag,...);1.2 参数说明path:是要打开或创建文件的名字oflag:是以什么方式打开文件。这些常量在头文件<fcntl.h>中定义。有如下选项:(1)必选5个常量的中必须制定一个且只能指定一个:O_RDONLY:只读打开O_WRONLY:只写打开O_...

2019-12-16 21:11:32 212

原创 条款38:通过复合塑模出has-a或“根据某物实现出”——214

文章目录总结——216复合(composition)是类型之间的一种关系,当某种类型的对象内含它种类型的对象,便是这种关系。例如:class Address { ... };class PhoneNumber { ... };class Person{public: ...private: std::string name; Address address; ...

2019-12-11 16:27:21 115

原创 条款39:明智而审慎地使用private继承——217

文章目录private继承的规则——217private继承意味implemented-in-terms-of——217何时选择private继承——218当protected成员和/或virtual函数牵扯进来的时候考虑选择private继承——218当继承空类使用private继承——220总结——222private继承的规则——217(1)如果class之间的继承关系是private,...

2019-12-11 16:27:16 267

原创 条款40:明智而审慎地使用多重继承——222

文章目录多重继承可能会产生歧义——222虚拟继承——223在Interface class中使用多重继承——225总结——228多重继承可能会产生歧义——222比如我们有以下继承体系:class BorrowableItem{public: void checkOut(); ...};class ElectronicGadget{private: bool c...

2019-12-11 16:26:02 170

原创 Linux网络编程笔记(一)Socket套接字简介

查看各协议端口号命令:more /etc/sericesSocket简介Linux中的网络编程通过Socket接口实现,是一种特殊的IO,提供对应的文件描述符。一个完整的Socket都有一个相关描述{协议,本地地址,本地端口,远程地址,远程端口};每一个Socket有一个本地的唯一Socket,由 操作系统分配。Socket和各层协议的关系创建Socket函数:#...

2019-12-11 16:25:22 166

原创 LeetCode_9——回文数

一、先转换为字符串,再利用反转函数:class Solution1 {public: bool isPalindrome(int x) { if (x < 0) return false; string temp = to_string(x); string temp_re = to_string(x); reverse(temp_re.begin(), te...

2019-12-05 10:16:49 76

原创 LeetCode_7——整数反转

一、利用C++逆迭代器实现:class Solution1 {public: int reverse(int x) { vector<int> vec; while (x != 0) { vec.push_back(x % 10); x = x / 10; } int result = 0, mul = 1; for (auto pt = ve...

2019-12-05 10:03:31 81

原创 LeetCode_1——两数之和

一、暴力解法:class Solution1 {public: vector<int> twoSum(vector<int>& nums, int target) { int i, j; vector<int> result; for (i = 0; i != nums.size(); i++) { for (j = i + ...

2019-12-05 09:51:38 95

原创 STL源码剖析(二)容器的种类与各种容器的衍生关系

目录序列(顺序)式容器:关联式容器:SGI STL的各种容器关系:根据“数据在容器中的排列”特性,这些数据结构分为序列式(sequence)和关联式(associative)两种。序列(顺序)式容器:所谓序列式容器,其中的元素都可序(ordered),但未必有序。顺序容器为程序员提供了控制元素存储和访问顺序的能力。这种顺序不依赖于元素的值,而是与元素加入容器时的位置相对应。...

2019-12-03 15:12:04 147

原创 STL源码剖析(一)STL六大组件简介及其交互关系

目录STL提供六大组件:STL六大组件交互关系:STL提供六大组件:1、容器(containers):各种数据结构,如vector,list,deque,set,map,用来存放数据。从实现的角度来看,STL容器是一种class template。2、算法(algorithms):各种常用算法如sort,search,copy,erase...。从实现角度来看,STL算法...

2019-12-02 17:29:20 228

原创 条款37:绝不重新定义继承而来的缺省参数值——210

文章目录virtual函数是动态绑定,而缺省参数值是静态绑定——201总结——213virtual函数是动态绑定,而缺省参数值是静态绑定——201这节应该好理解。总结——213绝对不要重新定义一个继承而来的缺省参数值,因为缺省参数值都是静态绑定,而virtual函数——你唯一应该复写的东西——却是动态绑定。...

2019-11-29 17:29:22 117

空空如也

空空如也

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

TA关注的人

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