自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 基于Libevent的个人对服务器结构的初步理解

本篇是我个人对单个TCP服务器开发的理解。网络模型基于Libevent,如果大家觉得有什么不妥的地方,欢迎指正,促使我提高,谢谢大家!先上图:说明:1.Libevent用于网络控制,包括客户端的连接与断开,网络数据的接收与发送。2.客户端连接之后,生成一个对应的客户端对象,并交给客户端管理对象去管理。3.Libevent数据缓存池默认只有4K的大小,而客户端一个数据包很可能不仅仅4K,所以收到的数据,先拷贝到客户端自己保存。4.客户端在收到完整的数据包后,将消息形成对应消息子类对

2021-04-30 15:53:42 11

原创 C#写的Dos窗口或者Windows服务如何接受Windows消息

无奈接收到一个C++写的Windows动态库,该动态库是基于MFC的框架写的,偏偏原作者当年痴迷于Windows下的消息机制。所以该动态库的初始化接口中需要传递一个窗口句柄,用于动态库方便上传消息。而现在我需要写一个Windows服务程序,为了方便开发,当时选用的就是C#。原本C#调用C++动态库,就只要考虑一下接口文件的数据类型就好了,现在要考虑的问题就比较复杂了。首先,我们假设初始化接口的如下所示:int WINAPI InitDll(HWND hwnd);像这种句柄的参数,问题不大,

2021-03-10 16:26:46 24

原创 WPF---Opencv中的Mat转BitmapImage

如题,网上有很多一键转的函数,可惜我使用的opencv没有这个函数。那么我就委婉的想了一个办法。在C#中,很多内存操作的东西都是byte数组,自然BitmapImage也有相应的方法,如下面的代码,就可以实现从byte[]转BitmaoImageBitmapImage bmp = new BitmapImage();bmp.BeginInit();bmp.StreamSource = new MemoryStream(byte[]);bmp.EndInit();那么现在就很明确了,如果我

2021-01-29 19:04:45 53

原创 查找内存泄漏的方式

(原创不易,如需转载,请注明出处)所有的内存泄漏,就是一个原因,分配内存后没有释放。智能指针是通过在某些结构体(类)中增加一个计数模块,如果有引用,计数模块加一,如果某个地方释放引用,那么计数模块就减一,直到计数为零,智能指针能自动释放内存。那么,如果没有智能指针模块,那么为了防止内存泄漏,一定要规范内存分配与释放的原则。我的个人原则就是谁申请,谁释放。在同一个函数内申请和释放。当然,在实际情况中,必然会出现这边申请,但是不能马上释放的情况,比如对某些数据在程序启动的时候需要初始化,那就讲究一个

2020-09-07 15:00:03 102

原创 指针与长度

在C语言中,经常要为数据分配一段连续的空间,用于保存一段相同数据类型的数据。这时候为了防止访问越界,常常需要跟一个数值,指配长度。于是我写了一段如下的代码#ifndef _STRUCT_ARR_H_#define _STRUCT_ARR_H_#include <stdio.h>#include <stdlib.h>#define STRUCT_ARR(type) \unsigned int nSize; \type* pData;typedef str

2020-08-31 16:09:38 90

原创 树莓派4B(ubuntu)设置wifi的方法

系统:Linux ubuntu 5.3.0-1019-raspi2重点:要把时区设置为当地所在时区,在中国当然是东八区咯可以先看看你的设备时间的具体情况:date -Rdate -RWed, 03 Jun 2020 17:05:57 +0800这个是我修改后的情况。具体修改,如下几条命令:# 选择州sudo tzselect# 执行该命令后,选择亚洲 4) Asia# 然后选择中国 9) China# 然后选择北京时间 1) BeiJing Time# 最后让你再确

2020-06-03 17:33:50 5336 1

原创 Linux GPIO口的控制(树莓派4B实现)(文件方式)

手中有个树莓派4B,闲的无聊,想操作一下他的GPIO口。我装的系统是Ubuntu 19.10 IoT版,系统的安装方式就不赘述了,可以在官网上查查,有详细说明。当然也可以在《树莓派实验室》这个网站找找,也感谢这个网站为我提供了树莓派的原理图下载(树莓派实验室)言归正传Linux的GPIO文件方式操作,首先要找到这个文件在的位置,其路径在:/sys/class/gpio/。在这个文件夹下至少有两个文件 export和unexport,分别记录要操作的GPIO口的值和取消操作的值。接下来就要

2020-06-01 09:27:53 2045 2

原创 C语言实现链表的标准化操作

假如你的C语言程序里面有很多链表,那么对链表的操作还是每个数据结构对应一组函数吗?这就显得你的代码不够高级了,以下是对双向环状链表操作,实现方法仅仅写了两个,完全可以用你智慧的大脑,续写!Link.h#ifndef _LINK_H_#define _LINK_H_#define POINT_TEST(STRUCT_TYPE) \STRUCT_TYPE *prve; \STRUCT_TYPE *next; \#ifdef __cplusplusextern "C"{#endif

2020-05-19 15:25:43 158

原创 C语言实现面向对象的一种方式

从某天开始,我认为面向对象只是一种思想,至于用什么语言实现,怎么实现,其实就看语言的开发者怎么去思考这种问题。以下代码是我用纯C语言实现面向对象的一种方式。C语言实现面向对象从应用级开发来讲,纯粹是个鸡肋,所以勿喷!这里只是提供一个思考问题的方向而已!先来一个父类的头文件 Father.h#ifndef _FATHER_H_#define _FATHER_H_typedef int(*PrintInfo)();#define CLASS_BASE() \int nValue;

2020-05-19 15:01:17 96

软考——程序员考试真题

2004——2010年的程序员考试真题,据我统计,基本上把每年的题目做两遍就可以过了,不过这份试题中无答案

2012-12-05

空空如也

空空如也

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

TA关注的人 TA的粉丝

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