- 博客(43)
- 资源 (1)
- 收藏
- 关注
原创 socket通信应用
这是进程通信的最后一节. socket可以实现不同进程间的通信, 可以是相同机器的不同进程, 也可以是不同机器的不同进程.本文的目的是简要学习socket通信的应用, 并且结合前几篇的内容, 学习socket通信的部分底层实现. 涉及到的一些api因为网上参考内容很多, 这里就不会介绍api的使用了.utilsutils封装了init/bind和connet调用. 1 2 3 4 5 6 7 8 91011121314151617181920212223242
2021-08-26 13:26:09 592
原创 进程控制和通信(四)
在前面的文章中, 我们学习了进程通信的几种方式, 并且也接触到了内核控制进程的结构块task_struct, task_struct的内容主要会分为以下几个部分, 通过这一篇文章可以学习这些部分的大体内容.task_structtask_struct任务ID: 用于区分进程, 是进程的身份证, 比如pid就属于任务ID亲缘关系: 包含兄弟进程, 父子进程的信息任务状态: 用于标识当前进程的运行状态, 比如running, runable, stop, wait等;权限: 进程权限信息, 包括本进程对外以及外
2021-08-26 13:25:34 659
原创 进程控制和通信(三)
消息队列消息队列是在内核空间开辟的一块共享内存, 类似于以下结构:内核提供共享区域做IPC类似于具名管道, 消息队列也有一个标识符MSG_KEY, 用来标识不同的消息队列. 只要知道某个消息队列的标识符, 并且拥有相应的权限, 就可以使用相应的消息队列. 所以, 消息队列可以在没有亲缘关系的进程间使用.Linux系统调用为我们提供了几个C接口用于消息队列, 在sys/msg.h可以找到定义. 主要是以下4个函数: 1 2 3 4 5 6 7 8 91011121314/* Mes
2021-08-26 13:24:47 922
原创 进程控制和通信(二)
我们经常可以看到, 诸如Chrome/VSCode之类的程序打开运行的时候, 可以在后台看到会有多个相关进程启动. 同一个程序启动的不同进程间, 必然存在合作关系, 那么这些进程之间是如何合作的呢?IPC进程间通信也叫做IPC(InterPorcess Communication). 进程间通信可以让不同的进程共同合作完成某些任务.不同进程的虚拟内存空间可能会映射到不同的物理内存空间, 但是虚拟内存空间中的虚拟内核空间都会映射到相同的物理内核空间, 因为一般认为系统的内核只有一个.不同进程映射到相同物理内核
2021-08-26 13:24:13 287
原创 进程控制和通信(一)
Linux系统的进程由PCB(Process Control Block)管理.PCB推荐https://code.woboq.org/阅读linux源码.Linux PCB 可以在https://code.woboq.org/linux/linux/include/linux/sched.h.html#task_struct找到, 对应task_struct结构体. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
2021-08-26 13:23:10 358
原创 字符串匹配算法
先约定两个概念, 主串和模式串.比如在S字符串中查找s字符串, 则S是主串, s是模式串.如下, 在主串中搜索"cdf"模式串:主串和模式串BF暴力匹配是很朴素的字符串匹配算法, 将主串中的字符与模式串的字符一个一个匹配, 如果遇到不匹配的字符对则主串向后滑动一个字符, 从头开始匹配:暴力匹配代码实现如下, strStr的作用是从haystack字符串中找到needle字符串首次出现的位置, 如果没有找到则返回-1. (LC.28) 1 2 3 4 5 6 7 8 910111213
2021-08-26 13:18:53 280
原创 数据结构与算法之图
什么是图在前面的文章中, 我们了解了树的概念, 重点是二叉树, 图在拓扑结构上和树有点类似, 但是图不是树.直观地, 先来看一个图的拓扑结构:无向图上述展示的是无向图, 无向图就是没有方向的图, 只要两个结点之间是联通的, 就可以从一个结点到另外一个结点.我们可以将其理解为简化后的地图, A-G代表的是地点.一般地, 对图我们有以下的一般性概念:图的结点叫做顶点;顶点(结点)之间的连接叫做边;一个顶点(结点)有多少条边叫做这个顶点(结点)的度;对应的, 还有有向图, 有向图就是有方向的图, 链接的两个顶点的
2021-08-26 13:18:02 467
原创 数据结构与算法之跳表
一维链表一维链表链表不需要一块很大的连续的存储空间是其优点, 但是对一串有序序列, 使用一维链表查询的时间复杂度是O(n), 能否如查找二叉树之类, 将其查找时间复杂度降为O(logn)呢?一种常用的方法是升维. 升维也是一种空间换时间的思考方式, 会提高数据结构的空间复杂度, 但是可以降低一些操作的时间复杂度.跳表跳表的一般结构, 将一维链表升维成二维:跳表跳表类似于图书馆的图书管理结构. 一般地, 图书馆存放图书有以下约定:每本图书有其对应的唯一ID(key);每本图书的ID可以比较大小关系;图书是按照
2021-08-26 13:14:25 205
原创 数据结构与算法之堆
数据结构与算法之堆原文来自个人博客(求访问/关注/收藏): https://bbing.com.cn/ CSDN个人博客不定期转载堆的结构同二叉查找树类似, 堆也是一种特殊的二叉树:堆是一颗完全二叉树;堆的孩子结点都小于或者大于父结点;所以, 堆可以像一颗完全二叉树一样, 很自然地可以使用顺序存储; 区别于二叉查找树, 堆的孩子结点是都小于或者大于父结点.一般地, 堆划分为小顶堆和大顶堆:父结点小于孩子结点的堆叫做小顶堆;父结点大于孩子结点的堆叫做大顶堆;如下是一个小顶堆
2021-05-14 09:42:53 166
原创 数据结构与算法之2-3-4树
数据结构与算法之2-3-4树原文来自个人博客(求访问/关注/收藏): https://bbing.com.cn/ CSDN个人博客不定期转载平衡树[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y3SPrlM2-1615947159678)(https://s3.ax1x.com/2021/01/29/yi2tDs.png “不太平衡的二叉树”)]对于一个普通的二叉查找树, 我们可以发现一个问题, 存在一定的可能性, 一般的二叉查找树会退化成一般的链表.上图还没
2021-03-17 10:14:01 294
原创 数据结构与算法之二叉查找树
数据结构与算法之二叉查找树原文来自个人博客(求访问/关注/收藏): https://bbing.com.cn/ CSDN个人博客不定期转载什么是二叉查找树对一般容器的查找, 我们可以按顺序遍历, 找到符合要求的元素就返回; 对于元素是有序的容器, 可以使用二分查找等方法查找, 减少操作的时间复杂度.容易知道, 一般查找的平均时间复杂度是O(n), 二分查找的平均时间复杂度是O(logn).什么是二叉查找树?根结点的左子树的结点都小(大)于根结点, 根结点的右子树的结点都大(小)于根结点;
2021-03-11 09:30:20 149
原创 数据结构与算法之二叉树的遍历
数据结构与算法之二叉树的遍历原文来自个人博客(求访问/关注/收藏): https://bbing.com.cn/ CSDN个人博客不定期转载遍历二叉树的作用基于二叉树的结构, 衍生出了二叉查找树/平衡二叉查找树/堆等等结构或算法(这些之后会讲), 学会如何遍历一颗二叉树是学习此类"派生二叉树"的基础.二叉树的遍历我们先来看一颗一般的二叉树. 然后根据不同的遍历方式, 看看这颗二叉树结点最终遍历的顺序.前序遍历前序遍历就是按照先根结点, 再左右子结点的方式去遍历(root -> l
2021-03-03 15:10:58 206 1
原创 数据结构与算法之二叉树
数据结构与算法之二叉树原文来自个人博客(求访问/关注/收藏): https://bbing.com.cn/ CSDN个人博客不定期转载什么是二叉树二叉树的知识点, 需要有链表的基础知识, 一般二叉树的结构如图示:二叉树是一种树状结构.所谓二叉, 就是一个节点最多可以延伸出两个子节点. 对于二叉树的节点一般会有一些固有称呼.如上图,一般会把N1节点叫做"根结点"或者"root节点";会把N2叫做N1的"左子节点", N3叫做N1的"右子节点";N1则是N2或者N3的"父节点"或者"
2021-02-22 09:34:47 208
原创 数据结构与算法之单调栈
数据结构与算法之单调栈原文来自个人博客(求访问/关注/收藏): https://bbing.com.cn/ CSDN个人博客不定期转载单调栈顾名思义, 单调栈就是其元素单调的栈, 满足两个特性:是栈栈元素单调递减(<)或者单调递增(>)当然, 关于第二点也可以是单调不递减(>=)或者单调不递增(<=).构造一个单调栈从实践出发, 看看怎么构建一个单调栈;比如有一个正整数列表: [2 1 3 4 7 5]构建其中之一的单调不递减栈:列表是否空? 如果空
2021-02-03 09:23:25 224 1
原创 数据结构与算法之栈
数据结构与算法之栈原文来自个人博客(求访问/关注/收藏): https://bbing.com.cn/ CSDN个人博客不定期转载什么是栈栈是一种数据结构, 满足先入后出.一般栈支持以下几个操作:push(n); //数据入栈a.pop(); //数据出栈a.top(); //获取栈顶元素a.size(); //获取栈中元素数量a.empty(); //是否是空栈C++中的stack容器官方文档中, 定义如下template< class
2021-02-01 11:20:33 143
原创 C里面的变长参数
C里面的变长参数原文来自个人博客(求访问/关注/收藏): https://bbing.com.cn/ CSDN个人博客不定期转载stdarg.h这里用到的是stdarg.h这个库, 可以在C语言里面实现可变长参数.当然C++会简单得多, C++11之后的模板原生支持可变长参数.几个函数va_list、va_start、va_arg、va_end,定义在stdarg.h内存结构先需要理解C/C++函数入参的顺序.按照以下的demo, 将其翻译成汇编代码.#include <i
2021-01-28 09:34:44 258
原创 C++模板问题之多出的static
C++模板问题之多出的static原文来自个人博客(求访问/关注/收藏): https://bbing.com.cn/ CSDN个人博客不定期转载问题先看以下代码#include <iostream>using namespace std;using uint32 = unsigned int;template<bool ISIN>static void updateVal(uint32 &val){ static uint32 sval;
2021-01-25 19:46:01 197
原创 通过返回值‘重载‘函数
通过返回值’重载’函数以下的代码片段涉及到了不少的模板函数, 可以自行去官网查询.前言从实际问题出发, 期望开发一个函数, 可以计算另外一个函数的耗时; 比如测试下面函数的耗时int funcA(int &a, float &b);void funcB(bool &c, char &d, double &e);期望可以这样调用:(cost, ret) = costTime(funcA, a, b);cost = costTime(funcB, c,
2021-01-21 11:20:41 445
原创 rmm 一个替换rm 的工具
rmm 一个替换rm 的工具项目地址:https://gitee.com/jerry323/rmm欢迎pull request起因:在执行rm命令的时候,有时会因为动作太快,开不及思考,而删除一些重要的文件,此时再找回就很难了。rmmrmm是一个用于替换rm命令的命令行工具。将rm命令替换为mv命令,会在$HOME路径下新建一个.trash目录,将执行rmm命令后会将删除的文件mv到...
2020-04-18 18:59:38 437
原创 基于RC4加密算法的图像加密
基于RC4加密算法的图像加密某课程的一个大作业内容,对图像加密。项目地址:https://gitee.com/jerry323/RC4_picture这里使用的是RC4(流、对称)加密算法,算法流程网上可以找到很多例子,这里就不做介绍了。主要想法是提取图像每个通道的数据,直接作为一个字节流输入加密算法。每个通道可以是分离的,也可以是合并在一起的。效果图见下:原图加密图(密码:12...
2019-01-26 20:29:30 1656
原创 天气提醒邮件服务器(python + scrapy + yagmail)
天气提醒邮件服务器(python + scrapy + yagmail)项目地址: https://gitee.com/jerry323/weatherReporter前段时间因为xxx上班有时候忘记带伞,就写了这个通过发送邮件提醒天气的东西。其实目前还是有点小问题,暂时也还没花精力来维护(够用就行)。项目不涉及到数据库的东西,就是简单的爬虫+邮件服务器,代码拙劣。下面讲讲大概的想法吧。...
2019-01-25 21:20:49 1717
原创 高精度减法--C++
高精度减法–C++仿照竖式减法,先对其,再对应位相减。算法处理时,先比较大小,用大的减小的,对应位再比较大小,用于作为借位符。#include <iostream>#include <cstring>#define MAXSIZE 20#define MAXOUTSIZE MAXSIZE + 2using namespace std;int main(...
2018-09-17 20:50:00 1432 1
原创 高精度加法--C++
高精度加法–C++仿照竖式加法,在第一步计算的时候将进位保留,第一步计算完再处理进位。(见代码注释)和乘法是类似的。#include <iostream>#include <cstring>#define MAXSIZE 20#define MAXOUTSIZE MAXSIZE + 2using namespace std;int main(){ ...
2018-09-17 20:13:38 363
原创 高精度乘法--C++
高精度乘法–C++模仿竖式乘法,在第一步计算的时候将进位保留,第一步计算完再处理进位。(见代码注释)若要处理正负情况,可在数据输入后加以判断,处理比较简单。小数计算也可参照该方法,不过对齐方式需要改变,或者改成二段计算。#include <iostream>#include <cstring>#define MAXSIZE 20#define MAXOUTS...
2018-09-17 20:00:06 828
原创 c++日志记录模块
C++ 日志记录模块该模块从实际项目中产生,通过extern声明的方式,可在代码不同模块中生成日志,日志文件名称为随机码加用户指定名称,采用随机码是为了避免日志文件可能被覆盖的问题。愿意的话你也能自己构建个人的日志记录模块,本次分享的模块实现方法比较简单,可能有些地方没考虑清楚。源码://// Created by jerry on 2/12/16.//#inclu...
2018-08-10 08:28:03 1480 2
原创 c++时间计算模块
c++时间计算模块可用于计算代码运行耗时、计算代码运行时间线(比如处理与运行时间相关函数)。该模块从实际项目中产生,使用方式仁者见仁智者见智,设计思想可供参考。源码://author: cai bingcheng, 2018#pragma once#include &lt;iostream&gt;#include &lt;chrono&gt;class Get...
2018-08-08 16:59:56 879
原创 cbuild-一个创建和管理C++项目的工具
cbuild-一个创建和管理C++项目的工具介绍:这是个人开发的一个管理C++项目的工具,用shell脚本编写。可能会不定期更新,也欢迎大家一起完善。当前开发版本0.1。个版本功能如下:0.0 – 初始版本,具备创建、删除、编译、运行项目基本功能0.1 – 在0.0版本基础上使用模板文件,方便用户定制自我需求使用方法:github地址:https://g...
2018-08-07 09:47:16 724
原创 tensorflow 曲线拟合
tensorflow 曲线拟合Python代码:import numpy as npimport tensorflow as tfimport matplotlib.pyplot as plt# from tensorflow.examples.tutorials.mnist import input_data# creating datamu,sigma=0, 0.1...
2018-08-06 16:41:57 679
原创 基本矩阵与本质矩阵
基本矩阵与本质矩阵基本矩阵与本质矩阵的数学推导:假设空间中一点P=[X,Y,Z]TP=[X,Y,Z]TP = [X, Y, Z]^T。P在相机A相平面坐标为PA=[xA,yA,1]TPA=[xA,yA,1]TP_A = [x_A, y_A, 1]^T;P在相机B相平面坐标为PB=[xB,yB,1]TPB=[xB,yB,1]TP_B = [x_B, y_B, 1]^T;相机A...
2018-08-06 11:52:33 1859
原创 对含小目标的灰度图二值化方法
对含小目标的灰度图二值化方法在实际经历中,对原始图像经过一定操作之后得到了包含目标的灰度图像,其中,目标在图像中属于比较亮的区域,背景则是相对较暗的区域,现在需要将目标提取出来。最先想到的方法是将灰度图像二值化,并且希望目标区域二值图中为1(255)的集合,背景则是0的集合。一般想法可能直接是阈值分割,对于单帧或者图像序列亮度及目标亮度变化不大的情况一般适用,但是对于复杂情况可能不...
2018-07-04 09:04:37 848
原创 VSCode中C/C++库文件的配置(自动提示、补全)
VSCode中C/C++库文件的配置之前一直在是用sublime做主要编辑器,现在主要使用VSCode,毕竟大厂制作,从目前的使用情况来看,我更喜欢使用VSCode编辑器。有时候会用VScode来组件C/C++工程,并且用到了一些外部依赖的库文件,比如OpenCV。此时希望VSCode的代码提示功能能够提示OpenCV中的函数,这时候就需要配置工作空间中的C/C++编译环境。如...
2018-06-12 20:04:56 103532 6
原创 数据衰减的一些方法和比较
数据衰减的一些方法和比较在计算机视觉实时应用中,有时候需要向云台发送一些数据,比如说角度,使之运动到相应的角度。但是考虑到有时候如果直接发送目标的相对角度,可能角度比较大,从而导致云台运动过于剧烈,此时考虑将发送的数据做一个衰减。一般直接想到对发送的数据做线性衰减,比如说发送数据yaw:yaw /= 10;这样做能达到目的,但是对于所有数据都做了相同的衰减,对于很小的数,也...
2018-06-10 15:19:46 8258
原创 Eigen实现坐标转换
(《视觉SLAM十四讲》第三讲习题7)设有小萝卜一号和二号在世界坐标系中。一号位姿q1 = [0.35, 0.2, 0.3, 0.1],t1=[0.3, 0.1, 0.1]。二号位姿q2=[-0.5, 0.4, -0.1, 0.2], t2=[-0.1, 0.5, 0.3].某点在一号坐标系下坐标为p=[0.5, 0, 0.2].求p在二号坐标系下的坐标假设在世界坐标系中p点的坐标为P...
2018-05-27 20:31:50 5031 2
原创 处理视频流时可能出现的重复帧问题及解决办法
在Ubuntu下使用opencv处理视频流时,由于相机帧率跟不上(相机模块在另外一个线程运行,且帧率太低),导致算法会处理一些相同的图像,从而返回相同的结果,如果将结果返回给伺服机构,则可能导致伺服机构奔溃。 想到三种解决方法: 1. 用高帧率的相机,但是由于经费问题,此方案暂缓执行; 2. 判断返回值是否相同,如果返回的数据完全相同,则有比较高的置信度认为这是通过同一幅图像返回的结果;...
2018-05-05 14:14:47 7200
原创 ubuntu下shell脚本中cd命令无法实现跳转的解决办法
对于一段包含cd 命令的shell脚本(test.sh):#!/bin/bashcd ..mkdir ./test运行:sh ./test.sh脚本运行时无法在上级目录建立test文件此时用. ./test.sh即可...
2018-03-25 16:51:45 1962
原创 C++教程之初识编程
突然想写一份C++教程,并且此教程会尽量使用通俗语言来描述,进入正题!如果你从来没有接触过编程语言,希望我的教程能够帮助你!一、代码示例 当然我希望你暂时不要纠结我在写什么,把代码贴在前面是想给你看看,它会是什么样子的;如果一定要取个名字的话,你可以称这份代码为–“著名的helloworld代码”。#include <iostream>
2018-03-21 18:55:59 221
原创 Linux之改造轻量级桌面版Ubuntu
最近在virtualbox虚拟机上尝试各种系统,几个好玩的:1、lubuntu,官方发布的一款轻量级Ubuntu桌面系统;虚拟机分配4GRAM,开机占用不到400MB;2、Ubuntu-server+X.org & fluxbox: Ubuntu-server是Ubuntu服务器版,虚拟机分配4GRAM开机占用55MB,X.org是一款Linux下的图形环境,fluxbox则是一款L...
2018-03-08 21:46:31 5867 1
原创 学习SVM
我们先来看看线性SVM。 SVM的全程是Support Vector Machine,即支撑向量机;顾名思义,SVM核心在于支撑向量,因为SVM认为其最优分类面是由支撑向量决定的。 什么是支撑向量呢?如果你曾经接触过感知器算法就会知道,对于线性感知器,找出来的分类面似乎没有一种判定方法证明其分类面是优的,暂且也只能说这个分类面可以用于分类。但是SVM就不同了,它找出来的分类面尽可能...
2018-02-06 11:35:15 286
原创 C/C++反三角函数使用注意
最近写的东西用到了数学库中的acos函数,但是代码在运行的时候有时候会出莫名其妙的错误,比如返回值是个特别大的数。最后在debug 的时候发现acos返回的数据很奇怪,但是传入的参数明明没有问题,可以保证是(-1,1)。回想起,double类型的末尾数据时不确定的,当double类型数据alpha = 1.0时其真实值可能是1.00001;这明明是很早就知道的,但是在写代码的时候有时候却很
2018-01-27 11:30:29 19165
原创 若干排序算法的Python实现方法及原理
今天突然想到了一个问题:让你立即把堆排、快排等等排序算法写出来会不会,并且不能犯逻辑错误?我说:不会,至少需要思考一下,并且可能还需要时间调试。之前总是觉得,不就是排序算法吗?有什么大不了的?网上、书上一查一大堆。但是换个角度想:1+1 = ? 你会不会?排序算法应是作为最基本的工具一样,是信手捏来的,所以我把《算法导论》上的几个排序问题看了并且实现了一遍;在此做分享:冒泡排序:
2018-01-20 19:54:08 214
PL2303_Prolific_DriverInstaller_v1210
2015-11-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人