自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 通过selenium框架爬取图片

搭建python环境就不在此展开了, 首先安装下载浏览器驱动, 此处仅仅以Chrome浏览器为例子,。,如果找不到对应版本, 是因为版本太新, 需要到找到对应版本。

2024-04-07 11:47:37 379

原创 标注工具labelme改造计划

labelme 改造, 支持导出, 修改文件列表

2024-04-04 18:38:10 300

原创 CMake 使用--指定C/C++编译器、安装路径及撤销cmake install

本文主要记录平时在开发过程中搭建各种环境需要用到的cmake工具, 其中涉及到如何指定不同版本编译器,以及常用的指定安装路径。指定编译器方式一在执行cmake之前导出两个环境变量即可。# 指定C编译器export CC=/home/GCC10.0/bin/gcc# 指定C++编译器export CXX=/home/GCC10.0/bin/g++# 或者直接设置CC=/home/GCC10.0/bin/gcc cmake ..方式二# 设置两个变量# 变量1: CMAKE

2020-11-25 23:28:09 7229

原创 探索Linux:进程(内存布局、栈)

本篇文件记录自己在从书籍中了解到的进程相关知识进程与程序进程是程序执行的一个实例, 可以用一个程序来创建多个进程实例。进程就类似于人类, 被产生后最终消亡, 而且只有一个父亲。从内核角度看, 进程的目的就是担当分配的系统资源(CPU时间、内存等)的实体。且其由用户内存空间和一系列内核数据结构组成,其中用户内存空间包含了程序代码及代码所使用的变量, 而内核数据结构则用于维护进程状态的信息。进程内存布局每个进程所分配的内存由很多部分组成, 通常称之为“段”。 如下所示:文本段包含了进程运行的程

2020-10-15 23:40:50 217

原创 探索Linux:在Linux下进行Debug的方法汇总(内存泄漏检测)

下载安装下载链接环境CentOS 8.1.0编译安装笔者下载了版本 Valgrind 3.16.1解压tar -xvf valgrind-3.16.1.tar.bz2环境配置# 自动生成./autogen.sh# 如果过程中出现类似错误aclocal:not found, 通常为没有安装automakezh# 只需执行安装命令:yum install automake# 安装完成之后再执行命令 ./autogen.sh, 等待完成# 接下来执行命令, 生成make

2020-10-13 22:49:44 780 1

原创 探索Linux:文件I/O

本篇文章为总结使用Linux文件I/O的心得体会文件描述符(file descriptor, fd)文件描述符为一非负整数, 所有执行I/O操作的系统调用都文件描述符来指代打开的文件。而在Unix中文件不仅仅指Windows中的文件, 它包括以下类型:普通文件(regular file)目录符号链接面向块的设备文件面向字符的设备文件管道(pipe)和命名管道(named pipe)套接字(socket)其中设备文件与I/O设备以及集成到内核中的设备驱动程序相关。而管道和套接字是用于进

2020-10-13 22:46:53 123

转载 [转载] Docker 入门教程

本文转载自Docker 入门教程原作者: 阮一峰2013年发布至今, Docker 一直广受瞩目,被认为可能会改变软件行业。但是,许多人并不清楚 Docker 到底是什么,要解决什么问题,好处又在哪里?本文就来详细解释,帮助大家理解它,还带有简单易懂的实例,教你如何将它用于日常开发。一、环境配置的难题软件开发最大的麻烦事之一,就是环境配置。用户计算机的环境都不相同,你怎么知道自家的软件,能在那些机器跑起来?用户必须保证两件事:操作系统的设置,各种库和组件的安装。只有它们都正确,软件才能运行.

2020-09-24 19:47:54 154

原创 C++11: [多线程系列1] std::thread的学习与实践

本篇文章主要用于记录与传播在实例中使用std::thread的实践心得创建一个线程#include <iostream>#include <thread>#include <chrono>void thread_call(const std::string& strTest){ std::cout << strTest.c_str() << "\n";}int main(int argc, char const

2020-09-16 23:24:43 112

原创 boost -- 序列化(serialize)

本篇文字主要来记录学习使用boost进行序列化介绍实例序列化成普通文本非侵入式// C#include <stdlib.h>#include <stdio.h>// C++#include <fstream>#include <string>// boost#include <boost/archive/text_iarchive.hpp>#include <boost/archive/text_oarchi

2020-09-16 09:48:32 1978 1

原创 网络编程 -- [API 使用] 获取IP地址变化通知

本篇文字记录如何使用API实时获取IP地址变化APINotifyAddrChangeAPI原型IPHLPAPI_DLL_LINKAGE DWORD NotifyAddrChange( PHANDLE Handle, LPOVERLAPPED overlapped);参数Handle输入一个句柄地址, 用于接收一个文件句柄。 可用于GetOverlappedResult 以获取结果overlapped指向OVERLAPPED 结构的指针。 该结构用于异步通知,

2020-09-14 22:19:47 479

原创 算法 -- 最短路径算法(广度优先搜索, WFS)

找出从A到F的最短距离dijkstraBBEEB->EDDB->DCCC->BC->DE->DFFE->FD->FAAA->BA->C问题分析由图可知, 算出此图的最短路径即最少边数。 A到F的最少边数即为最短路径。 适用于广度优先搜索算法。实现思路源码实现python 实现fr

2020-08-24 23:11:05 803

原创 算法 -- 最短路径算法(狄克斯特拉算法)

找出从A到F的最短距离dijkstraBBEEB->E4DDB->D2CCC->B8C->D7E->D6FFE->F3D->F1AAA->B5A->C2问题分析不能?实现思路用散列表存储节点之间的关系及权重源码实现python 实现

2020-08-23 15:56:16 468

原创 设计模式 -- 深入探究观察者模式及源码实现(C++)

认识观察者模式顾名思义, 所谓观察者模式, 既存在观察者必然存在被观察的对象。那么被观察的对象称之为主题, 即观察主题。 那么主题对象将对观察者进行管理。而观察者决定对什么主题感兴趣, 从而进行订阅, 同时可以取消订阅。简单的说, 观察者模式中存在两个对象, 一个是主题对象, 一个是观察者对象。 而观察者对象通常为多个, 所以主题对象与观察者通常为“一对多”的关系。应用场景生活中,常见类似观察者模式的应用类似于:报社或者杂志的出版方和订阅者。出版方为主题对象, 订阅者为观察者收音机。 其中电台

2020-08-12 23:05:38 100

原创 Python 奇淫技巧 -- 利用pandas读取xml转换为excel

因为工作需要, 将xml中特定的节点值取出来, 然后统计到excel中。 于是乎试试写了一个python脚本, 加快工作效率。 而且今后还能复用。以下为完整示例, 需要的朋友们可参考。示例 XML<?xml version="1.0" encoding="utf-8"?><breakfast_menu> <food> <name>Belgian Waffles</name> <price>$5.95

2020-08-12 18:56:46 1862

原创 Linux 开发环境 -- C/C++开发环境安装(CentOS)

查看环境查看C环境rpm -qa|grep gcc查看C 版本gcc -v查看glibc版本ldd --version安装C/C++编译环境安装gcc编译器yum -y install gcc安装g++(c++)编译器yum -y install gcc-c++安装OpenSSLOpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。nginx 不仅支

2020-08-05 21:56:57 439

原创 Linux 开发环境 -- Xshell及Xftp 免费安装使用教程

安装不罗嗦, 直接放链接点击进入

2020-08-05 21:07:53 105

原创 Linux 开发环境 -- glibc 升级(不建议轻易升级)

由于项目需要, 在编译过程中遇到需要将glibc进行升级的编译错误。 于是乎, 各种baidu、google。查找升级教程。 经过了一番操作, 于是升级了。但是系统再也回不去了。 记录以此教训,同时给广大同胞一个提醒。由于条件不允许, 只能进行源码编译进行升级。以下流程几乎适用于所有软件包更新, 且方式为源码编译更新下载进入网站选择了版本2.27进行下载。完事之后, 解压到目录中glibc-2.27目录创建编译目录进入目录glibc-2.27新建目录buildmkdir build然后进入

2020-08-05 21:01:45 3259 1

原创 Windows内核 -- 内存体系结构

进程的虚拟地址空间每个进程都有自己的虚拟地址空间。对于32位进程来说,这个地址空间的大小为4GB, 因为32位指针可以表示地址在0x00000000~0xFFFFFFFF间的任意值。对于64位进程来说,这个地址空间的大小为16EB(即千亿亿字节)虚拟地址空间的分区物理存储器和页交换文件...

2020-08-02 17:44:08 217

原创 Windows GUI -- 消息循环与消息

本篇文章主要讲解Windows是如何处理GUI程序的消息。消息循环在文章Windows GUI --从main函数开始写一个Windows窗口程序中提到了当应用程序开始执行的时候, Windows会首先为该程序创建一个“消息队列”。没错, Windows操作系统为每一个程序都维护着其对应的“消息队列”。此消息队列为应用程序消息队列。当事件发生时, Windows会自动将这些事件转换为“消息”, 并将其放置在程序的消息队列当中。同时, 操作系统本身维护者一个系统消息队列。 比如当用户按下和释放键

2020-08-02 17:04:09 413

原创 Windows GUI --从main函数开始写一个Windows窗口程序

Windows GUI --从main函数开始写一个Windows窗口程序关于Windows main函数准确地说Windows总共提供了2种main函数, 而由于字符编码的缘由, 又将2种main函数拆分成4个main函数,其函数名称及其区分如下表: 程序分类 main入口点函数 解释说明 CUI(控制台程序) _tmain(Main) ANSI编码控制台程序 _tmain(Wma

2020-08-01 18:16:40 1205

原创 Windows技术揭秘: 深入了解ODBC

深入了解ODBC什么是ODBC什么是ODBCODBC即开放式数据互联(Open-DataBase-Connectivity,即ODBC)

2020-07-22 20:46:44 684

原创 数据结构--队列

/** * @brief 循环队列, 先入先出FIFO*/class CircularQueue{public: CircularQueue(int nsize) : m_nSize(nsize) , m_nRear(-1), m_nFront(-1), m_arrData(new int[nsize]) { } ~CircularQueue() { delete[] m_arrData; m_arrData = nullptr; } /** * @br.

2020-07-22 20:05:40 216

原创 OpenCV 核心--Mat基本图像容器

目的真实世界中所有的图片,在计算机中都可以理解为一个矩阵,包含了图像中所有像素点的强度值。OpenCV其主要目的就是通过处理和操作这些信息,来获取更高级的信息。MatMat是一个类,由两个数据部分组成:矩阵头(包含矩阵尺寸,存储方法,存储地址等信息)和一个指向存储所有像素值的矩阵(根据所选存储方法的不同矩阵可以是不同的维数)的指针。 矩阵头的尺寸是常数值,但矩阵本身的尺寸会依图像的不...

2020-07-22 10:23:58 65

原创 C++ const的一切

const限定符 如果你想定义一个不想被改变的变量,只需要在变量类型前面添加const限定符即可初始化和const如:const int bufSize = 512;因为const对象一旦创建之后就不能修改,所以const对象必须初始化。const int j = get_size(); // 运行时初始化const int j = 42;in...

2018-05-13 17:02:27 151

原创 线性代数--矩阵消元

消元(elimination)回代(back substitution)消元矩阵置换矩阵(permutation matrix)可逆矩阵(inverses matrix)消元(elimination)示例: ⎧⎩⎨x+2y+z=23x+8y+z=124y+z=2{x+2y+z=23x+8y+z=124y+z=2 \begin{cases} x+2y+z=2\...

2018-03-25 22:49:03 1996

原创 线性代数--方程组的几何解释

二维方程求解三维方程求解矩阵乘法二维方程求解尝试利用线性代数解如下方程:方程组: {2x−y=0−x+2y=3{2x−y=0−x+2y=3\begin{cases}2x - y = 0\\-x+2y = 3\end{cases} 对应矩阵(row picture): [2−2−12]∗[xy]=[03][2−1−22]∗[xy]=[03]\left...

2018-03-25 11:56:32 421

原创 双缓冲绘图原理及应用

目的原理优点实现目的主要用于解决因绘制复杂数据量大的图形,或是需要实时更新的图形数据,直接在DC中绘制,会产生图形显示延迟闪烁等现象。原理首先将需要绘制的图形绘制到内存虚拟屏幕中,然后利用相关API函数,一次全屏拷贝到OSD实际显示屏幕中,此过程即完成双缓冲绘图。优点在一定程度上提高CPU处理效率可避免因数据量过大,而大致绘制过程中掉帧或...

2018-03-19 23:30:05 555

原创 算法--插入排序

原理对于少量元素排序,它是一个有效的算法。其工作方式类似于许多人排序一手扑克牌。开始时,手里没牌,牌在桌面上乱序叠放。然后每当我们在桌面上拿走一张牌并将其放置手中时,都会插入到相应的位置,使其有序。这个过程我们需要将拿到的牌,与手里已有的牌总右到左逐个比较,在合适的位置进行插入。代码// 升序插入排序template&lt;typename T&gt;void InsertSo...

2018-03-18 23:38:24 300

原创 OpenCV 核心--Mat基本图像容器

目的真实世界中所有的图片,在计算机中都可以理解为一个矩阵,包含了图像中所有像素点的强度值。OpenCV其主要目的就是通过处理和操作这些信息,来获取更高级的信息。MatMat是一个类,由两个数据部分组成:矩阵头(包含矩阵尺寸,存储方法,存储地址等信息)和一个指向存储所有像素值的矩阵(根据所选存储方法的不同矩阵可以是不同的维数)的指针。 矩阵头的尺寸是常数值,但矩阵本身的尺寸会依图像...

2018-02-28 22:50:28 310

labelme改造版本

labelme 标注工具(改造版)

2024-04-04

空空如也

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

TA关注的人

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