摘要:首先,必须要有一个主程序集(exe 或 dll 都可以),就是把附加的程序集都整合到这个程序集中。附加的程序集可以以嵌入的方式或者整合的方式。若选择整合的方式,建议勾选仅整合(不保护)。设置分为常规设置,保护设置,软件限制设置等。除了主程序集及其附加程序集(主要是dll文件)的设置以外,还有证书管理
阅读全文
03 2023 档案
摘要:De4Dot是一个很强的.Net程序脱壳,反混淆工具,支持对于以下工具混淆过的代码的清理:如 Xenocode、.NET Reactor、MaxtoCode、Eazfuscator.NET、Agile.NET、Phoenix Protector、Manco Obfuscator 、CodeWall、
阅读全文
摘要:前面,我多次提到一些C# DLL的反编译工具,在我们没有对我们的程序有任何保护措施的情况下,别人利用这些工具很轻松的就能生成与原始源代码类似的高级代码,所以,我们需要混淆加密来让程序更加的安全,让别人不能那么轻易的获取到我们的劳动果实。 从其他网站截取过来的图片,图中并没有完全包含所有工具 从上图我
阅读全文
摘要:VMProtect完美脱壳过程 1.查看程序 这是我自己写的一个VB的小程序,长得有点丑,别介意。然后自己加了一个壳,是VMProtect v.1.6x - 2.03的壳。 接下来我们国际惯例,用PEID,EXEinfo PE查一下壳 可以看到是加了VMP的壳的,VMP壳的介绍我会放在帖子的最后哦。
阅读全文
摘要:用C#调用Windows API向指定窗口发送 一、调用Windows API。 C#下调用Windows API方法如下: 1、引入命名空间:using System.Runtime.InteropServices; 2、引用需要使用的方法,格式:[DllImport("DLL文件")]方法的声明
阅读全文
摘要:SendKeys.Send() 向活动应用程序发送击键 SendKeys.SendWait() 向活动应用程序发送给定的键,然后等待消息被处理 这两个方法可以发送组合键,需要注意的是字母按键应为小写。如全选Ctrl+A,要用SendKeys.SendWait("^a")才有效。 按键对应的代码如下:
阅读全文
摘要:微软提供的控件Pattern System.Windows.Automation 命名空间 System.Windows.Automation.BasePattern 为控件模式类提供基实现 System.Windows.Automation.DockPattern 表示在某个停靠容器内公开其停靠属
阅读全文
摘要:1.1 OpenCV介绍与环境搭建 1.1.1 介绍OpenCV(Open Source Computer Vision Library)开放源代码计算机视觉库,主要算法涉及图像处理、计算机视觉和机器学习相关方法。OpenCV 其实就是一堆 C 和 C++语言的源代码文件,这些源代码文件中实现了许多
阅读全文
摘要:在采用C++编写算法时,经常需要判断两个浮点数是否相等。由于计算精度的原因,采用“==”运算符是不可行的。下面给出采用C++11标准判断两个浮点数是否相等的代码: // Test whether two float or double numbers are equal. // ulp: units
阅读全文
摘要:* 未经许可,谢绝转载!请尊重原创! 【OpenCV】关于Mat_类的一个问题 * 对于Mat_类,就从文档里面复制点内容做个简单的介绍吧。 The class Mat_<Tp> is a “thin” template wrapper on top of the Mat class. It doe
阅读全文
摘要:更换电脑后更改了git的用户名和密码,导致git的操作失败,记录一下修改过程,报错类型 1、remote: Incorrect username or password ( access token )fatal: Authentication failed for 'https://gitee.c
阅读全文
摘要:文章目录 一、YOLOv5导出jit 二、YOLOv5导出onnx 三、使用onnx 四、YOLOv5导出engine(tensorrt/trt) 5.总结所有代码 5.1 models/common.py 5.2 models/yolo.py 5.3 pkg/test00.py 5.4 pkg/o
阅读全文
摘要:本文已参与「新人创作礼」活动,一起开启掘金创作之路。 一、参考资料 Jetson 系列——基于yolov5和deepsort的多目标头部识别,跟踪,使用tensorrt和c++加速 二、相关介绍 2.1 重要说明 ==该项目能部署在Jetson系列的产品,也能部署在X86 服务器中。== 2.2
阅读全文
摘要:整体思路 SORT 算法的思路是将目标检测算法得到的检测框与预测的跟踪框的 iou(交并比)输入到匈牙利算法中进行线性分配来关联帧间 Id。而 DeepSORT 算法则是将目标的外观信息加入到帧间匹配的计算中,这样在目标被遮挡但后续再次出现的情况下,还能正确匹配 Id,从而减少 Id Switch。
阅读全文
摘要:sudo 与 su 两个命令的最大区别是: sudo 命令需要输入当前用户的密码,su 命令需要输入 root 用户的密码。另外一个区别是其默认行为,sudo 命令只允许使用提升的权限运行单个命令,而 su 命令会启动一个新的 shell,同时允许使用 root 权限运行尽可能多的命令,直到明确退出
阅读全文
摘要:此片文章,相当于发布自己的 Python 代码给别人 “pip install”文章的补充。发布自己的 Python 代码给别人 “pip install”(linux和windows都有)。(window版)发布自己的 Python 代码给别人 “pip install”(linux和window
阅读全文
摘要:在root用户登录的情况,赋予opt目录给liuhai这个用户权限 示例代码: # 将目录/opt 及其下面的所有文件、子目录的文件主改成 liuhai chown -R liuhai:liuhai /opt #给目录opt设置权限 chmod 760 /opt chown 命令 语法 chown(
阅读全文
摘要:在公司开发过程中经常会遇到在同一台编译机上给不同的用户创建权限等需求,在这里贴上相应的代码 添加用户 useradd -m username -p password -d /data/home/gengkaiyu username、password处分别填上用户名、密码-m 表示添加用户的时候顺便建
阅读全文
摘要:前言 有一个需求是将一个宏和一个字符串拼接,然后在代码中拿到这个字符串,记录一下。 方案 首先,我们知道非常常见的一个宏的拼接和展示字符串的宏定义: #define CONTACT(x,y) x##y //拼接 #define STR(x) #x //转字符串 这种宏定义在开发中是很常见的! 但是,
阅读全文
摘要:目录 简介 GET 发送 GET 请求,并将结果打印出来 发送 GET 请求,并将 response 的 body 输出到文件里 POST 发送空的 POST 请求 发送有参数的 POST 请求 发送可重定向的有参 POST 请求 发送带 JSON 数据的 POST 请求 发送带 XML 数据的 P
阅读全文
摘要:1、使用function类 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 //myFunction.js var CMyFunc=function() { //类的公共方法,供外部调用 this.Func1=function(
阅读全文
摘要:ES6是什么 ECMAScript 6.0(以下简称ES6)是JavaScript语言(现在是遵循ES5标准)的下一代标准,已经在2015年6月正式发布了。它的目标,是使得JavaScript语言可以用来编写复杂的大型应用程序,成为企业级开发语言。 ES6的新特性 ES6中的let命令,声明变量,用
阅读全文
摘要:ffmpeg的avformat_open_input()和av_read_frame默认是阻塞的 * 用户可以通过设置“ic->flags |= AVFMT_FLAG_NONBLOCK;”设置成非阻塞(通常是不推荐的); * 或者是设置超时时间; * 或者是设置interrupt_callback定
阅读全文
摘要:索引地址:系列教程索引地址 上一篇:FFmpeg5开发入门教程02:开发组件介绍 新建一个Qt纯C/C++项目。按照FFmpeg5开发入门教程00:准备添加头文件和配置文件。 在main()中添加: 1 2 3 unsigned codecVer = avcodec_version(); print
阅读全文
摘要:本系列将记录FFmpeg开发过程中一系列相关操作、技术总结、项目经验等等,主要是: 成体系的资料难找,大部分教程都是从别处抄来的,东一块西一块 记忆力不够,有些操作过段时间就忘记了,所以要记录,这也是我写博客建网站的原因 以线性索引的方式记录开发流程,方便技术总结及架构整理 最重要的是指明方向,我永
阅读全文
摘要:索引地址:系列教程索引地址 FFmpeg开发需要完整(不完整也行)的C/C++知识。 软件配置: 我的操作系统是Manjaro Linux,所有的软件直接从Manjaro软件仓库中安装,保持更新。 Makefile 如果是纯C/C++开发的话,使用Makefile或者CMake编译。 模板Makef
阅读全文
摘要://其实ffmpeg从4.0开始不用stimeout,用的listen_timeout等待网络超时,不然会一直超时下去。 AVDictionary* options = nullptr; //实时播放使用udp,减小带宽并防止断线 av_dict_set(&options, "rtsp_transp
阅读全文
摘要:通过ffmpeg 读取摄像头数据, 当设备移除后, 读取数据不阻塞设置: infmtCtx->flags |= AVFMT_FLAG_NONBLOCK; // 加上既可. if (avformat_open_input(&infmtCtx, dshow_name, fmt, &options) !=
阅读全文
摘要:ffmpeg拉取RTSP流 正常操作不会有问题 但是如果途中, 把RTSP的流断了, 发现 会卡死 在avformat_find_stream_info函数中, 把这个函数注释掉的话就会卡死在av_read_frame中 ,大概需要30m才会返回 网上搜了下 无论是 设置超时方法 还是 回调函数都不
阅读全文
摘要:参考:http://www.mamicode.com/info-detail-561129.html FFmpeg长时间无响应的解决方法 需要解决的问题 1、FFmpeg去连接的时候相机不在线导致avformat_open_input等函数一直死等,造成程序卡死 2、av_read_frame的过程
阅读全文
摘要:【并发编程二十一】c++20协程(co_yield、co_return、co_await ) 一、协程分类 1、控制机制划分 2、有栈(stackfull)/无栈(stackless)划分 二、c++20协程 三、co_yield 1、demo 2、相关知识点介绍 四、co_return 五、co_
阅读全文
摘要:【并发编程十七】c++实现一个线程池 一、线程池原理 二、实现重点 三、个人理解 四、实验 简介:大多数系统上,若因某些任务可以与其他任务并行处理,就分别给他们配备专属的线程,则这种做法不切实际。但是只要有可能,我们还是想充分利用可调配的并发算力。线程池正好可以帮助我们达到目的:讲可同时执行的任务都
阅读全文
摘要:【并发编程十九】芊程(fiber) 一、前言 二、芊程(fiber) 1、线程中使用芊程 2、获取当前芊程数据 3、从芊程切回线程 4、创建新的芊程 5、删除芊程对象 6、在不同芊程间切换 7、芊程局部存储 三、demo 四、芊程和协程 简介: 我们本篇先讲解下芊程,下一篇再介绍协程,因为有了芊程的
阅读全文
摘要:【并发编程十八】线程局部存储(TLS) 一、定义 二、线程局部存储的实现 1、windows系统 2、linux系统 3、c++11 三、windows系统 1、线程局部存储是分块的(TLS_MINIMUM_AVAILABLE) 2、获得索引 3、通过索引:存储数据、取出数据 4、释放索引和内存块
阅读全文
摘要:【并发编程十六】无锁数据结构(2)——无锁队列 一、简介 二、原理图 三、代码:实现 三、代码:demo 四、其他知识点 1、delete 关键字 2、delete 的扩展 上一节我们讲解了无锁栈容器,这节我们讲解下无锁队列,如果大家还有基础知识不了解,建议先看下我的上两篇原子操作和无锁栈容器两篇文
阅读全文
摘要:【并发编程二十】协程(coroutine) 一、线程的缺点 二、协程 三、优点 四、个人理解 五、协程库 1、window系统 2、unix系统(包括linux的各个版本) 2.1、makecontext 2.2、swapcontext 2.3、setcontext 3、第三方库 3.1、Boost
阅读全文
摘要:【并发编程十五】无锁数据结构——无锁栈 一、无锁数据结构体的优点和缺点 1、优点 2、缺点 二、无锁数据结构分类 三、无锁栈容器 1、简介 2、无锁栈原理图 3、添加节点(push) 4、添加数据(添加节点demo) 5、弹出数据 6、弹出数据demo 7、无锁栈和智能指针 8、无锁栈内存泄露的解决
阅读全文
摘要:【并发编程十三】c++原子操作(1) 一、改动序列 1、改动序列 2、预测执行 二、原子操作及其类别 1、原子操作 2、非原子操作 3、原子类型 三、标准原子类型 1、标准原子类型的两种实现方式 2、原子操作的用途 3、原子操作的宏 四、操作std:atomic_flag 1、简介 2、使用说明 3
阅读全文
摘要:【并发编程十四】c++原子操作(2)——实现自旋锁 一、自旋锁简介 二、使用自旋锁 三、不使用自旋锁 四、分析 简介在介绍完原子操作,我们这篇使用c++提供的原子操作,实现一个自旋锁,并加以利用。 原子操作参见【并发编程十三】c++原子操作 一、自旋锁简介 “自旋”可以理解为“自我旋转”,这里的“旋
阅读全文
摘要:【并发编程九】c++线程同步——互斥(mutex) 一、互斥 1、mutex 1.1、mutex 1.2、 lock_guard 1.3、 RAII 2、std::recursive_mutex 3、std::shared_mutex、std::shared_lock、std::unique_loc
阅读全文
摘要:【并发编程十】c++线程同步——条件变量(condition_variable) 一、互斥 二、条件变量 1、为何要引入条件变量? 2、不使用条件变量 3、使用条件变量 3.1、互斥锁有什么问题? 3.2、条件变量 3.3、条件变量成员函数 3.4、demo 3.4、总结 三、future 四、信号
阅读全文
摘要:【并发编程八】线程和线程同步 一、线程 二、线程的实现 1、linux系统 2、windows系统 3、c++11 3.1、线程的操作 3.2、管理当前线程的函数 三、线程同步 1、linux系统 1.1、互斥体(mutual exclusive、Mutex) 1.2、信号量(semapphore)
阅读全文
摘要:【并发编程七】进程通信——套接字(socket)_80行代码实现一个聊天软件 一、简介 二、相关知识介绍 1、winsock1.h、winsock2.h 2、如何使用ws2_32.dll 3、WSAStartup() 函数 4、socket 5、bind 5、listen 6、accept 7、co
阅读全文
摘要:【并发编程四】c++进程通信——共享内存(shared memmory) 一、共享内存(shared memmory) 二、共享内存的过程 1、processA 写入共享内存 2、processB 读取共享内存 三、代码demo 1、processA demo 2、processB demo 四、输
阅读全文
摘要:windows进程通信和Linux进程通信 一、进程通信(IPC) 二、Linux进程通信 1、管道(pipe) 1.1、匿名管道 1.1、命名管道(有名管道) 2、消息队列(message queue) 3、共享内存(shared memmory) 4、信号量(Semaphore) 5、信号(si
阅读全文
摘要:【并发编程三】C++实现通信——管道(pipe) 一、管道(pipe) 二、匿名管道 1、简介 2、父子进程:匿名管道的通信过程? 3、相关函数 3.1、创建管道CreatePipe 3.2、写入管道WriteFile 3.3、读取管道ReadFile 3.4、获取句柄GetStdHandle 4、
阅读全文
摘要:【并发编程二】c++创建子进程CreateProcess() 一、创建子进程 二、demo 三、构建、编译、运行 四、相关知识介绍 1、CreateProcess 参数介绍 1.1、lpApplicationName 1.2、lpCommandLine 1.3、lpProcessAttributes
阅读全文
摘要:【并发编程六】c++进程通信——信号量(semaphore) 一、概述 二、信号量 三、原理 四、过程 1、进程A过程 2、进程B过程 五、demo 1、进程A 2、进程B 六、输出 七、windows api介绍 1. 创建信号量 CreateSemaphore() 2. 打开信号量 OpenSe
阅读全文
摘要:【并发编程十二】c++20线程同步——信号量(semaphore) 一、互斥 二、条件变量 三、future 四、信号量 1、信号量原理 2、c++ 20 信号量 3、demo 简介:本篇文章,是线程同步的最后一篇。我们详细的介绍下c++标准库提供的线程同步方法——信号量(semaphore)。 一
阅读全文
摘要:【并发编程十一】c++线程同步——future 一、互斥 二、条件变量 三、future 1、promise 1.1、子线程设值,主线程获取 1.2、主线程设置值,子线程获取 2、async 2.1、不开新线程的async 2.2、开新线程的async 3、packaged_task 3.1、不使用
阅读全文
摘要:左值(lvalue)与右值(rvalue) 左值与右值的概念其实在C++0x中就有了。概括的讲,凡是能够取地址的可以称之为左值,反之称之为右值,C++中并没有对左值和右值给出明确的定义,从其解决手段来看类似上面的定义,当然我们还可以定义为:有名字的对象为左值,没有名字的对象为右值。 class A
阅读全文
摘要:1.std::move std::move - cppreference.comzh.cppreference.com/w/cpp/utility/move std::move主要使用在以下场景: C++ 标准库使用比如vector::push_back 等这类函数时,会对参数的对象进行复制,连数
阅读全文
摘要:目录 windows使用CreateEvent、SetEvent、ResetEvent、WaitForSingleObject linux使用sem_init、sem_wait、sem_trywait、sem_post、sem_destroy windows使用CreateEvent、SetEven
阅读全文
摘要:目录 一、什么是线程同步? 二、为什么要使用线程同步? 三、线程同步的五种方式 1、互斥锁 互斥锁操作函数 互斥锁的属性 2、自旋锁 自旋锁操作函数 自旋锁的属性 3、读写锁 读写锁的操作函数 读写锁的特点 读写锁的属性 读写锁的注意事项 4、信号量 信号量操作函数 5、条件变量 条件变量操作函数
阅读全文
摘要:前言 Linux 中没有 Windows 系统中的 CreateEvent()、WaitEvent()、SetEvent()、ResetEvent() 等函数,本文将介绍如何使用 pevents 替代 Linux 缺失的函数。 pevents 介绍 pevents 的简介 pevents 是一个跨平
阅读全文
摘要:1、第一种方法(win和linux通用) //头文件.h#ifndef _HIK_EVENT_H_ #define _HIK_EVENT_H_ #ifdef _MSC_VER #include <Windows.h> #define hik_event_handle HANDLE #else #in
阅读全文
摘要:最近看代码发现,在多线程中实现有关throttle和阻塞等有关的功能时,条件变量的使用是最常见的。 首先先对条件变量有个基本的认识 条件变量的基础知识 条件变量std::condition_variable定义在头文件<condition_variable>中。 条件变量用于阻塞一个或多个线程,直到
阅读全文
摘要:摘要 C++11标准从发布到现在已经快10年了。笔者在工作中陆陆续续学习并应用了移动语义(move semantics),智能指针(unique_ptr<>, shared_ptr<>),lamda等C++11的新特性。总体感觉还是真香。最近因为项目开发,要搭建多线程的自动化测试,于是尝试使用了条件
阅读全文
摘要:在多线程开发过程中很多人应该都会遇到死锁问题,死锁问题也是面试过程中经常被问到的问题,这里介绍在c++中如何使用gdb+python脚本调试死锁问题,以及如何在程序运行过程中检测死锁。 首先介绍什么是死锁,看下维基百科中的定义: 死锁(英语:Deadlock),又译为死结,计算机科学名词。当两个以上
阅读全文
摘要:官方链接:https://github.com/cesanta/mongoose [C++]-网络库mongoose简介_alwaysrun的博客-CSDN博客_c++ mongoose Mongoose-基于C的Web服务器介绍和使用 - 百度文库 https://blog.csdn.net/qi
阅读全文
摘要:Sion是一个轻量级简单易用的c++请求库 仅单个头文件,自带std::string的扩展 跨平台,支持linux, win, mac... 有着良好的异步支持,可以选择以自己喜欢的方式发送异步请求, callback, await, 事件循环, etc. 支持文本及二进制的响应体 支持分块(chu
阅读全文
摘要:今天去面试被问到冒泡排序的最好,最坏,平均时间复杂度;tcp有哪些窗口,拥塞的原因,TCP拥塞控制的思想;最后还问了linux下如何查看某个进程下所有线程的情况;进程和线程的区别;其实都没怎么答好,都看过想过,却没有实践并落到实处。这篇可以看作原创也可以看作转载,主要是自己记录一下。 问题: 我的程
阅读全文
摘要:背景 在开发项目的一个feature时,发现有一个线程hang住,一直无法向元数据管理模块发送心跳,导致线程所在的机器被drop掉,组里的一个同学使用gdb找到了hang住的原因,于是自己也决定学一下这种方法。 测试程序 启动两个线程,竞争互斥锁,其中一个线程拿到锁之后不释放,两个线程因为死锁必然会
阅读全文
摘要:【多线程】C++11多线程(简约但不简单) 目录 一、简单使用 1、线程参数 2. 类成员函数做为线程入口 3. join: 等待线程执行完成 4. 线程暂停 5. 线程停止 二、进阶(更多你可能需要知道的) 1. 拷贝
阅读全文
摘要:查看网上基本都是快捷键方式: Ctrl+S:锁定当前屏幕 Ctrl+Q:解锁当前屏幕 和我的诉求不一样。想每次都是看当前打印,并且需要时,直接到底部(最新日志),后面琢磨了下是:”文件“-》”属性“-》”终端“-》”高级“,去掉”输入/输出终端时滚动到底部“;勾上”按键滚动到底部“如下图所示: 这是
阅读全文
摘要:1.安装 sudo apt-get update && sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common && curl -fsSL https://download
阅读全文
摘要:1.更新软件源列表 sudo apt update 2.安装软件包依赖 sudo apt install apt-transport-https ca-certificates curl software-properties-common 3.在系统中添加Docker的官方密钥 curl -fsS
阅读全文
摘要:pip3 显示未安装 我装行吧? What? 已装? 再试一遍pip3 -version,结果还是老样子 吐血! 好吧,我脚本安装,行了吧 输入wget https://bootstrap.pypa.io/get-pip.py 接着输入sudo python3 get-pip.py Successf
阅读全文
摘要:文章目录 报错:command not found: pip 解决办法:安装pip 如果安装pip报错,情景: 安装pip报错No local packages or download links found for pip 解决方法:(安装下面3步) 测试安装成功: `pip -V` 报错:com
阅读全文
摘要:本文介绍下如何使用ffmpeg将大量图片拼接成一个视频,并介绍其中部分参数的含义。 使用ffmpeg将图片拼接成视频前,需要将图片文件名做下预处理,文件名中必须有数字将其次序标记出来,这里我直接使用数字将图片重命名了,如下: 直接使用命令ffmpeg -f image2 -i %d.jpeg out
阅读全文
摘要:windows环境注意事项: 1、需先使用MSYS2编译安装ffmpeg+libx264,或下载内置libx264编码器的压缩包 2、thinkphp6中执行ffmpeg命令时,需将ffmpeg.exe文件拷贝到public目录 3、ffmpeg.exe位于public的子目录时,执行命令需带上ff
阅读全文
摘要:文章目录 1 原子操作 2 C++11原子变量 3 使用原子变量 3.1 没有使用线程互斥的数据操作 3.2 使用互斥量保证线程互斥 3.3 使用原子量std::atomic保证数据互斥 1 原子操作 原子操作:一个独立不可分割的操作。多线程编程需要保证线程安全,而线程安全一个很重要的特性就是原子性
阅读全文