自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(55)
  • 资源 (1)
  • 收藏
  • 关注

原创 2024开始了

蹇解损益夬姤萃, 升困井革鼎震继。艮渐归妹丰旅巽, 兑涣节兮中孚至。小过既济兼未济, 是为下经三十四。乾坤屯蒙需讼师,比小蓄兮履泰否。同人大有谦豫随,蛊临观兮噬嗑贲。剥复无妄大畜颐,大过坎离三十备。咸恒遁兮及大壮,晋与明夷家人睽。

2024-02-18 19:50:48 316

原创 高考了高考了

不知不觉又到高考了!

2023-06-07 21:05:01 158

原创 redis-常见面试问题

1 aof 追加,命令协议,执行执行个命令恢复数据 aof三种配置: 1 always 每个命令落盘,阻塞当前线程,代价最高,丢失数据最少。fork进程写时复制流程 1 先复制进程,包括内存页表,并设置为只读,父子进程同时指向一块只读的物理内存 2 主进程写数据时,发生缺页中断,触发缺页处理函数,复制一块相同的物理内存,子进程指向此内存,父进程设置为可读可写。链表,扩容-有子进程的前提下才进行,渐进式rehash,前提没有子进程的前提下才进行。rdb 文件小,数据恢复快,丢失数据多。

2023-04-03 09:32:44 483 1

原创 设计模式-责任链模式

3 从实现上看引入模式后代码量增大不少,但是设定了一个稳定点,后续不管是修改每个处理的条件、处理的顺序、以及增删处理都会比较简单,也更加符合设计原则。该模式使一个对象无需知道是其他哪一个对象处理其请求,仅需要知道请求处理的结果。处理者handler处理它所负责的请求,如果可处理则处理,否则将该请求转发给它的后继者。2 部门主管无权限处理时再向他的上级申请比如项目主管,项目主管进行处理。3 项目主管无权限处理时再向他的上级申请比如区域主管,区域主管进行处理。变化点 节点的处理的条件或者处理顺序。

2023-03-16 21:06:19 617

原创 C++20 协程体验

协程是比线程更加轻量级并发编程方式,CPU资源在用户态进行切换。协程完成异步的调用流程,并对用户展示出同步的使用方式。协程的调度又应用层决定,所以不同的实现会有不同的调度方式,调度策略比较灵活。协程是基于线程之上运行,同一个线程中,协程是串行的,不会产生线程资源的竞争,不同的协程间却是相互交叉运行的,只要依赖的线程没有终止,协程最终会跳转回来。c++20 协程通过三大关键字co_waitco_returnco_yield在函数中使用到以上关键字的函数被称为协程函数,并且通过该关键字完成跳转。

2023-03-06 18:34:34 2059 3

原创 TCP协议的可靠性

TCP作为传输层协议,提供可靠的传输服务。可靠性:保证消息不重复、不丢失、不乱序。如何保证可靠性:TCP协议依据面向连接、流量控制、拥塞控制特性达到可靠的目的。

2023-02-05 11:35:20 968

原创 IO多路复用 select、poll 、epoll

IO多路复用指能在同一个线程中同时监听多个文件描述符是否就绪,从而达到高效操作就绪fd的作用。select、poll 、epoll是经常使用的三种多路复用接口。其中select、poll在各系统中基本都有实现, linux有epoll,windows下则有iocp.select、poll 、epoll共同点:提供检测fd就绪的机制,使其可以在一个线程内处理多个客户端消息。

2023-01-29 14:48:28 585

原创 网络IO模型

一提到网络IO,甚至一些网络框架,就无法避免遇到阻塞、非阻塞、同步、异步的概念,要理解这些概念,先要清楚网络IO是什么,以及网络IO如何工作。网络IO本质上也是IO的一种,就是数据的输入输出,可以理解为文件fd,这里也可以指socket fd。网络IO的处理流程,涉及到操作系统的用户空间与内核空间,在这两个阶段中发生的不同情况,从而衍生出多种网络IO模型。阻塞/非阻塞 从内核处理系统调用是否挂起用户线程的角度划分。同步/异步 从用户线程系统调用后后续的处理逻辑划分。

2023-01-29 11:42:10 543

原创 网络编程基础

3.3.1 TCP三次握手、四次挥手3.3.2 TCP慢启动、拥塞控制3.3.3 TCP滑动窗口3.3.4 TCP状态迁移图。

2023-01-28 18:42:15 572

原创 数据结构 简述

数据结构是相互间存在特定关系的数据的集合。

2023-01-28 16:59:06 275

原创 设计模式 缘起

定义:软件开发中用于解决特定环境下,反复出现的问题的解决方案来源:在实践中使用面向对象的思想,满足设计原则一步步迭代而来目的:一个系统总是趋于稳定与变化之间,根据变化点选择合适的设计模式,增强系统的灵活性。做法:期望已少量的代码应对变化,提高复用。依据:面向对象的设计原则依赖倒置(DIP):高层模块(稳定)不应该依赖于低层模块(变化),二者都应该依赖于抽象(稳定);抽象不应该依赖于实现细节(变化),实现细节应该依赖于抽象;开闭(OCP):对扩展开发,对修改关闭单一职责(SRP):类的职责单一。

2023-01-28 16:12:28 839

原创 C语言#pragma常用方法

undef new将宏定义new压入栈并取消它的定义,如此一来new的本来含义便获得了恢复,使用完毕后将宏定义new弹出栈,恢复宏定义。

2023-01-09 14:27:26 755

原创 软件开发者书籍推荐

软件开发过程中遇到的一些重要书籍的推荐,也算是一个记录,以下是简单的一个分类。

2022-12-27 18:13:29 2465

原创 Protobuf 了解

搭建Protobuf c++ vs工程。

2022-12-23 16:12:57 961 1

原创 web服务器与web框架

web

2022-12-21 16:46:56 312

原创 HTML 响应处理

开始FAW测试这是一个段落

2022-12-21 16:06:44 298

原创 微表情数据集总结

表情标签:开心、悲伤、惊讶、害怕、厌恶、生气、中立;时序状态(表情开始帧-->峰值帧-->结束帧,onset-->apex-->offset)数据集大小:训练集含28709张图片, 验证集含3589张图片,测试集含3589张图片,分辨率48*48,数据及标签存放在csv文件里。数据集大小: 受试者 36,平均年龄22.35,包含微表情视频样本 300,宏表情视频样本 900 样本来自亚洲人。表情标签:开心、悲伤、惊讶、害怕、厌恶、生气、中立;表情标签:开心、悲伤、惊讶、害怕、厌恶、生气、中立、轻蔑;

2022-10-12 10:49:50 1553

原创 muduo 网络库补充

one loop per thread + thread pool 的 reactor模型。每个线程最多可以有一个自己的EventLoop,多个线程间也可以共享一个EventLoop。。工作线程从线程池分配,如果线程池大小为0,则共用一个线程。

2022-10-10 17:27:30 716

原创 c++ 虚函数实现

虚函数是C++中用于实现多态机制。通过基类访问派生类定义的函数,是C++中多态性的一个重要体现。利用基类指针访问派生类中的虚函数,在基类的函数前加上virtual关键字,在派生类中重写该函数,运行时将会根据对象的实际类型来调用相应的函数。每一个含有虚函数的类(包括派生类)都至少有一个与之对应的虚函数表,其中存放着该类所有虚函数对应的函数指针(地址),类的示例对象都包含有一个虚指针指向虚函数表。虚表是和类对应的,虚表指针是和对象对应的。

2022-10-09 15:15:05 416

原创 WIN下nginx启动不起来

分析:上述启动无法看到日志,通过cmd直接运行nginx.exe可看到日志缺少log目录。双击nginx.exe或使用start nginx.exe后,nginx未启动。在当前目录下创建log目录后再次启动。

2022-09-23 16:32:58 2718

原创 c++智能指针

c++智能指针

2022-08-09 15:11:52 260

原创 seetaface6 windows编译

seetaface6相对于前两个版本库结构上有较大区别,编译差异较大,这里总结一些windows编译过程。 seetaface6源码以及模型文件github下载路径:https://github.com/SeetaFace6Open/index1 模块分布seetaface6共14个模块度各模块库如下OpenRoleZoo 常用操作的集合SeetaAuthorize 模型解析工程TenniS 前向计算框架FaceAnti...

2022-05-23 16:05:33 1180 1

原创 人脸识别--SeetaFace2介绍

SeetaFace2是中科视拓在2019年发布的开源人脸识别引擎,使用c++编写,支持windows、linux系统,支持arm、x86平台,功能包含人脸检测、关键点定位、人脸识别,相比于2016开源的SeetaFace在性能上有很大提升,并在2020开源了SeetaFace6,增加了活体检测、质量评估、年龄性别估计、口罩检测。 本文主要讲解SeetaFace2的人脸识别功能,人脸识别主要包括人脸检测、关键点定位、人脸区域特征提取、特征相似度比对。1 算法理论1.1 人...

2022-05-20 15:43:30 2112

原创 ffmpeg 库 功能介绍

avcodec:编解码 (核心库)avformat:封装格式处理 (解封装)avfilter:滤镜特效处理 (美颜相机)avdevice:各种设备的输入输出 (基本不会用到)avutil:工具库 (大部分库都需要这个库支持)postproc:后加工 (基本不会用到)swresample:音频采样数据格式转换,比如32位转成16位的采样率swscale:视频像素数据格式转换,比如把视频转为YUV格式...

2022-04-20 15:55:25 1703

原创 Reactor、Proactor--网络服务器模型发展

1 原始模型 最开始的网络编程服务器是用一个while循环来监听新的套接字连接,然后用一个函数处理。这种方法无法并发,效率太低。如果当前请求没有处理完,那后面的只能被阻塞,服务器的吞吐量太低。随着客户端增多,而引发C10K问题2 基于线程的架构2.1 多线程并发模式一个连接一个线程,服务器每当收到客户端的一个请求, 便开启一个独立的线程来处理,一个线程处理一个连接的全部生命周期一定程度上极大地提高了服务器的吞吐量,由于在不同线程中,之前的请求在read阻塞以后,不会影响到后...

2022-01-27 11:11:38 2048 4

原创 Docker 简单使用

一 docke简介Docker 是一个开源的应用容器引擎,可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,在不同的机器中使用。Docker 包括三个基本概念镜像(Image) 就相当于是一个 root 文件系统容器(Container) 容器可以被创建、启动、停止、删除、暂停等仓库(Repository) 仓库可看成一个代码控制中心,用来保存镜像Docker 容器通过 Docker 镜像来创建,容器与镜像的关系类似于面向对象编程中的对象与类Docker镜像跨...

2021-12-10 17:59:04 654

原创 【问题】BLAS loading error: refblas.so: cannot open shared object file: No such file or directory

问题现象:MATLAB与C/C++混合编程,使用某国产机系统调用MATLAB中的c接口,提示BLAS loading error:refblas.so: cannot open shared object file: No such file or directory其中: matlab运行时已安装版本2020b。CPU为国产系统,x86架构问题分析: MATLAB没有正确检测到这个特定的处理器,因此没有加载正确的BLAS和LAPACK库。属于MATLAB的bug,可能...

2021-12-10 17:12:02 1628 2

原创 cpp-httplib 源码剖析

cpp-httplib是一个c++封装的http开源库,仅包含一个头文件,不过代码行数达到8000多行,相比于上一节中讲述的Tinyhttpd ,该库功能就比较完善,并且可以在简单的项目中使用。 cpp-httplib 服务端采用select IO多路复用模型,工作线程池的处理方式,主要包含的类Server、Client、Request、Response。1 该库使用简洁方便 1.1 服务端举例 httplib::Server server; ...

2021-12-06 17:42:49 3468

原创 Tinyhttpd 源码剖析

Tinyhttpd 是一个开源超轻量型的Http Server,使用C语言开发,代码仅516行,萌新可以借助它来了解网络编程以及http协议。1 整体处理流程比较简单,参考图。2 流程分析: 服务端通过socket套接字创建、绑定端口、启动监听,对于每一个新客户端请求创建一个线程处理,是一个简单的循环监听分配线程处理请求的服务端模型。 与HTTP协议相关的内容集中在accept_request,分行读取接收到的客户端消息,解析出请求...

2021-12-03 15:28:59 384

原创 【问题】 version `ZLIB_xxx‘ or `GLIBC_xxx‘ not found

问题一问题现象:执行其他环境编译的可执行文件出现异常 version `ZLIB_1.2.9' not found. version `GLIBC_2.27' not found问题分析:引入的 libopencv_world.so.4.3 或 自定义so,依赖的库与编译环境所用的库版本不兼容。如下查看依赖库包含的 ZLIB 与 GLIBC 版本,不支持编译环境生成的库。问题解决:方式1 如果依赖的库不多,则可以拷贝编译环境中的库文件,放入运行时依赖的路径中...

2021-11-24 10:57:39 529

原创 【问题】 undefined reference to ‘std::thread::_State::~_State()@GLI)@GLIBCXX_3.4.22’ 类似问题解决

问题现象: 在可执行文件中引入了第三方的 Matlab库,编译链接过程中出错,提示“xxx 未定义的引用”问题原因: gcc或g++版本较低导致问题解决: 更新较高版本gcc,如果系统不支持在线更新或无法更新到较高版本,参考如下:linux离线安装 gcc、g++_fy291021851的博客-CSDN博客...

2021-11-23 17:24:25 1903

原创 linux半离线安装 gcc、g++

2.2 查看gcc的软链接,则系统实际使用的gcc路径 /usr/bin/gcc-4.8。但是对于较低操作系统,能安装的gcc版本低于我们理想的版本,这时就需要离线安装自己想要的版本。对于在线安装gcc或g++,操作起来比较简单,执行基本的命令就可以自动化安装。sudo apt-get install gcc-5(要安装的gcc版本)2.1 先查看已有gcc或g++版本,版本较低4.8.5。2.3 修改gcc、g++ 软链接到新安装版本路径。1.2 安装gcc,将下载的文件拷到环境上,解压。

2021-11-23 15:13:17 16618

原创 十九世纪的两朵乌云开始-未完

最近思考一个问题

2021-11-22 12:02:28 591

原创 CMake设置运行时链接库路径-rpath问题

使用CMake编译生成so或可执行文件运行时,依赖的库要放到系统目录或设置环境变量。 而自定义的链接目录都是绝对路径,当库文件目录发生变化时则找不到链接的库,使用起来比较麻烦。link_directories(path) 配置路径为绝对路径配置相对路径:set_target_properties(${TARGET_NAME} PROPERTIES LINK_FLAGS "-Wl,-rpath,./lib")查看可执行文件链接路径,只需将依赖的库打包到可...

2021-11-18 11:20:24 7035 3

原创 linux 运行时链接库的加载顺序

1. gcc 编译时指定的运行时库路径 -Wl,-rpath2. LD_LIBRARY_PATH 指定的地方3. ldconfig 缓存 /etc/ld.so.cache4. 系统默认库位置 /lib /usr/lib-------------------------------------------------------CMakeList指定-rpathlink_directories(path)Makefile指定-rpath-I,添加包含路径-l,添加引用链接库-L..

2021-11-17 17:17:21 979

原创 CMake 使用

1 CMake简介 cmake 是一个跨平台编译工具。(类似于Unix的Makefile文件、Windows的Visual Studio工程、Mac的Xcode工程),cmake命令根据CMakeLists.txt文件生成Makefile文件或Visual Studio工程。使用简单,可以避免编写makefile文件的麻烦。2 CMake安装 安装步骤简单略3 CMakeList语法 cmakelist需要我们依照cmake语法规则编写,然后根据不同系统编...

2021-11-05 10:24:35 981

原创 IntelliJ IDEA maven springboot 简单实例

准备:mysql数据库1. 创建普通maven项目2. 配置springboot2. 1. 配置pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=..

2021-08-05 17:24:31 279

原创 IntelliJ IDEA maven web项目

前提准备:maven、tomcat安装配置成功1 创建projectFile->New-> Project运行配置完成后,点击run运行Tomcat。

2021-08-04 16:41:27 314

原创 intelliJ IDEA web项目

1 普通的html服务class Handler extends Thread { Socket sock; public Handler(Socket sock) { this.sock = sock; } public void run() { try (InputStream input = this.sock.getInputStream()) { try (OutputStream output.

2021-08-03 17:36:27 395

原创 intelliJ IDEA maven项目

1 准备工作 1.1 下载安装intelliJ IDEA, java jdk,maven1.2 配置maven本地仓库2 idea配置maven路径3 创建maven项目File->New->Project4. 编写main方法,运行程序5. 打包jar6. 运行jar包 java -jar xxx.jar...

2021-08-03 09:46:25 1411

GOF结构图.docx

GOF结构图.docx

2021-03-05

空空如也

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

TA关注的人

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