- 博客(91)
- 资源 (7)
- 收藏
- 关注

原创 C++智能指针管理类
c++最麻烦的一件事莫过于对动态内存的管理了,本例采用引用计数机制实现了一个用于管理动态分配内存的类。使用这个类,使用者可以不必要再关心动态内存的释放。
2015-06-11 09:45:15
1866
2

原创 stl map底层之红黑树插入步骤详解与代码实现
文章用图片的方式对红黑树插入过程的调整进行了详细解释。并给出红黑树插入调整实现的C++源码。
2014-06-08 08:24:11
20829
原创 九、异形窗口
文章摘要:本文介绍了如何在Xlib中创建非矩形窗口,特别是如何移除窗口的标题栏并实现窗口的移动功能。通过使用XCreateSimpleWindow创建窗口,并结合XChangeProperty移除窗口装饰,可以创建无标题栏的窗口。为了处理键盘事件,程序监听KeyPress事件,并在按下Esc键时退出。此外,通过XSendEvent发送ClientMessage事件,实现了窗口的拖动功能。文章还详细解释了operateCode参数的含义,用于控制窗口的移动和大小调整。
2025-05-19 21:34:43
400
原创 八、实现编辑框控件
在GUI应用程序中,实现编辑框控件需要处理复杂的键盘和鼠标事件。与使用高级UI库(如QT、GTK)不同,使用xlib开发需要手动组合底层接口来实现控件功能。本文介绍了如何在xlib下实现编辑框控件,重点包括接收输入法输入(支持中英文混合输入)、显示输入光标以及响应Backspace键。文章还提到了一些关键函数,如XOpenIM、XSetLocaleModifiers、XCreateIC等,用于处理输入法和文本渲染。此外,文章详细描述了编辑框的绘制过程,并提供了一个结构体UIEdit来存储编辑框的基本信息。
2025-05-19 15:56:57
831
原创 七、xlib窗口渲染
本文介绍了如何在X Window系统中使用XRender扩展渲染带有透明度的PNG图片。由于默认的24位颜色深度窗口无法正确处理PNG的alpha通道,导致图片显示为黑色背景。解决这一问题有两种方法:一是创建支持32位颜色的窗口,二是使用XRender扩展。XRender不仅支持透明度绘制,还能实现图片混合和渐变窗口等复杂效果。文章提供了使用XRender渲染PNG图片的代码示例,包括加载PNG文件、创建Pixmap和Picture对象,并通过XRenderComposite函数将图片绘制到窗口上。
2025-05-18 19:50:16
429
原创 六、绘制图片
本文介绍了如何在Linux系统下使用Xlib接口在窗口中绘制图片,并通过示例代码展示了两种不同的图片绘制方式。第一部分通过手动生成红色块图片,展示了如何分配内存并设置像素颜色,最终将图片绘制到窗口中。第二部分则演示了如何加载24位的BMP图片,并将其转换为适合Xlib显示的格式。通过这个示例,读者可以了解Xlib处理图片的基本原理,为后续更复杂的图像处理打下基础。
2025-05-17 21:12:19
840
原创 五、xlib绘制按钮控件
本文简单介绍了在linux操作系统如何不使用qt、gtk库的情况下,创建GUI程序,并在窗口中绘制按钮控件。xlib没有提供控件这类高级概念,我们可以通过直接在主窗口中绘制,或是子窗口的方式实现按钮控件绘制;直接绘制和子窗口方式绘制本质上没有区别,只是对于事件处理逻辑不同。这种绘制控件的思想与具体操作系统、或界面库无关,只要提供基本绘图元素和鼠标事件处理接口,我们可以在任意操作系统下,使用任意UI绘制控件。通过按钮控件的绘制我们提示了gtk、QT这样的UI库事件循环、高级控件的基本原理。
2025-05-17 12:19:53
919
原创 四、xlib区域
本文介绍了如何在linux操作系统xlib窗口系统中使用Xft库进行文本渲染,并通过设置有效绘制区域来限制文本的显示范围。文章首先提到,在前一篇文章中已经实现了基本图形元素的绘制,但未对文本绘制范围进行限制,导致文本可能覆盖其他控件内容。为了解决这一问题,展示了如何通过创建区域(如矩形和多边形)来约束文本的绘制区域。利用区域(Region)。我们可以在xlib窗口系统创建复杂的控件,实现异形窗口效果。
2025-05-16 11:00:00
1512
原创 三、xlib窗口图元
本文介绍了如何在xlib窗口系统中绘制文本和图形元素。本文使用最简洁的代码展示了如何在xlib窗口系统中渲染文本。使用Xft库绘制特效文字。在xlib窗口系统中如何绘制点线、矩形、弧形。以及如何在xlib窗口系统使用颜色对一些特定区域进行填充。
2025-05-16 09:45:00
604
原创 二、xlib事件
在Xlib窗口系统中,窗口创建后可以接收鼠标点击、键盘输入、窗口位置和大小改变等操作,这些操作由X Server以事件形式处理。客户端程序通过XPending和XNextEvent等C语言函数查询和处理事件。XPending以非阻塞方式立即返回待处理事件的数量,而XNextEvent会阻塞程序直到有事件发生。示例程序展示了如何使用XSelectInput设置窗口接收的事件类型(如ExposureMask和KeyPressMask),并通过事件循环处理Expose和KeyPress事件。
2025-05-15 13:53:25
668
原创 一. xlib 创建窗口
本文介绍了如何在Linux操作系统下使用xlib创建GUI应用程序,并记录了将duilib移植到Linux下的过程。xlib是X Window System的C语言库,用于创建窗口、绘制图形和管理用户输入。文章详细讲解了如何使用xlib编写一个简单的图形应用程序,包括打开与X服务器的连接、创建窗口、处理事件以及销毁窗口等步骤。此外,还介绍了如何在Ubuntu系统下编译xlib程序,并对比了xlib与GTK、QT等现代界面框架的差异。
2025-05-15 10:34:45
962
原创 C++项目总结二之内存溢出
内存溢出用一个比较形象的比喻就好比向一个容量300ml的杯子中倒水。如果倒的水超出300ml,水就溢出。在程序中如果我们写入(或读取)数据的范围超出了变量的“容量”就可有可导致未知的程序行为。本方将从两个方面讨论内存溢出问题,一种是写入的数据超出变量“容量”;另一种是访问的数据超出变量范围,这种情况称为越界访问;大多数时候访问溢出内存区域不会造成程序异常行为。 一、字符处理函数使用不当 1.字符
2017-09-26 21:36:06
1431
原创 ARP攻击及实现详解
声明:本文只用于技术交流和学习使用,严禁用于任何其它用途,严禁转载。若因本文带来的任何麻烦,本人不承担任何连带责任。一、ARP协议关于arp协议作用就不再这里多说了,直接看下图 图1 上图来源于TCP-IP协议详解卷1的图4-3 图1中以太网目的地址,以太网源地址,发送端以太地址,发送端IP地址,目的以太网地址,目的IP地址这几个字段的含义很明显。主要看剩下几个字段的取值用途是什
2016-03-26 07:59:13
9156
原创 飞鸽传书源码分析四-消息发送
本篇文章是在飞鸽传书源码v2.06的基础上进行分析的 飞鸽传书是一款工作在局域网的软件,支持局域网里不同设备之间的消息发送及文件的传输(消息发送使用udp,文件传输使用tcp)。 发送消息及文件传输是在飞鸽传书的发送对话框中进行,而发送对话框的打开是通过双击拖盘(win7系统)到任务栏的图标。而拖盘到任务栏的这个图标就是飞鸽传书的主窗口,对应的源码就是Mainwin.cpp中的TMainWin
2015-03-24 09:05:51
4229
转载 网络基本功(二十八):Wireshark抓包实例分析HTTP问题(下)
网络基本功(二十八):Wireshark抓包实例分析HTTP问题(下) 转载请在文首保留原文出处:EMC中文支持论坛https://community.emc.com/go/chinese 介绍 本文承接上文。更多信息 Client errors:
2015-03-14 18:10:02
3205
转载 网络基本功(二十七):Wireshark抓包实例分析HTTP问题(上)
网络基本功(二十七):Wireshark抓包实例分析HTTP问题(上) 转载请在文首保留原文出处:EMC中文支持论坛https://community.emc.com/go/chinese 介绍 HTTP的问题可能是由于慢速服务器或客户端,TCP性能问题,本文讨论上述问题以及其他可能因素。更多信息 诊断过程: 浏览网页性能变
2015-03-14 18:09:32
2743
转载 网络基本功(二十五):Wireshark抓包实例分析TCP重复ACK与乱序
网络基本功(二十五):Wireshark抓包实例分析TCP重复ACK与乱序 转载请在文首保留原文出处:EMC中文支持论坛https://community.emc.com/go/chinese 介绍 TCP的一大常见问题在于重复ACK与快速重传。这一现象的发生也是由于性能问题,本章讨论如何发现这一问题以及他们意味着什么。另一个常见问题是前一片段丢失以及乱序
2015-03-14 18:09:29
15304
转载 网络基本功(二十四):Wireshark抓包实例分析TCP重传
网络基本功(二十四):Wireshark抓包实例分析TCP重传 转载请在文首保留原文出处:EMC中文支持论坛https://community.emc.com/go/chinese 介绍 TCP发送一个或一组报文,会等待收到报文的确认信息。重传,即发生在报文没有到达或确认信息没有及时返回的情况下。当发现网速变慢时,原因之一可能就是重传。发生重传的原因有多种,在
2015-03-14 18:08:44
50189
1
转载 网络基本功(二十六):Wireshark抓包实例分析TCP窗口及reset
网络基本功(二十六):Wireshark抓包实例分析TCP窗口及reset 转载请在文首保留原文出处:EMC中文支持论坛https://community.emc.com/go/chinese 介绍 TCP最重要的机制之一是滑动窗口机制,以及用以控制TCP终端节点愿意接收的数据总量的流控机制。TCP reset可以在几种情况下被发送。有一些是协议的正常工作
2015-03-14 18:08:38
16860
转载 网络基本功(二十三):Wireshark抓包实例诊断TCP连接问题
网络基本功(二十三):Wireshark抓包实例诊断TCP连接问题 转载请在文首保留原文出处:EMC中文支持论坛https://community.emc.com/go/chinese 介绍 前文论述了TCP基础知识,从本节开始,通过TCP抓包实例来诊断TCP常见问题。TCP进程通讯时,双方打开连接,发送数据,最后关闭连接。当TCP打开连接时,从源端口到目
2015-03-14 18:07:56
4474
1
转载 网络基本功(二十一):细说HTTP(上)
网络基本功(二十一):细说HTTP(上) 转载请在文首保留原文出处:EMC中文支持论坛https://community.emc.com/go/chinese 介绍 HTTP是一个由请求与响应组成的客户端与服务端交互协议。浏览器发送一个HTTP请求到指定的URL地址,持有此URL地址的WEB服务器将返回一个HTTP请求。请求的类型有GET, POST,
2015-03-14 18:06:47
1677
转载 网络基本功(二十二):细说HTTP(下)
网络基本功(二十二):细说HTTP(下) 转载请在文首保留原文出处:EMC中文支持论坛https://community.emc.com/go/chinese 介绍 本文承接上文。更多信息 HTTP回复信息: 每一个HTTP客户端发送给服务器请求都会要求服务器发回响应信息。在特定情况下,服务器会发回两条响应,一条初步响应和一
2015-03-14 18:05:59
1370
转载 网络基本功(二十):细说ICMP和ARP
网络基本功(二十):细说ICMP和ARP 转载请在文首保留原文出处:EMC中文支持论坛https://community.emc.com/go/chinese 介绍 ICMP是网络控制消息协议,主要用于传递查询报文与差错报文。ARP是地址解析协议,它的作用是在以太网环境下,通过3层的IP地址来找寻2层的MAC地址,得到一张ARP缓存表。转发数据的时候根据ARP
2015-03-14 18:04:20
1657
转载 网络基本功(十九):细说NAT原理与配置
网络基本功(十九):细说NAT原理与配置 转载请在文首保留原文出处:EMC中文支持论坛https://community.emc.com/go/chinese 介绍 NAT技术让少数公有IP地址被使用私有地址的大量主机所共享。这一机制允许远多于IP地址空间所支持的主机共享网络。同时,由于NAT屏蔽了内部网络,也为局域网内的机器提供了安全保障。
2015-03-14 18:03:06
6500
转载 网络基本功(十七):细说tcpdump的妙用(上)
网络基本功(十七):细说tcpdump的妙用(上) 转载请在文首保留原文出处:EMC中文支持论坛https://community.emc.com/go/chinese 介绍 tcpdump命令最初设计用于观察TCP/IP性能问题,它是一个用于截取网络分组,并输出分组内容的工具。tcpdump可以将网络中传送的数据包的报文头完全截获下来提供分析,它支持针对网络层
2015-03-14 18:01:28
2246
转载 网络基本功(十八):细说tcpdump的妙用(下)
网络基本功(十八):细说tcpdump的妙用(下) 转载请在文首保留原文出处:EMC中文支持论坛https://community.emc.com/go/chinese 更多信息 (承接上文) 过滤: 要有效地使用tcpdump,掌握过滤器非常必要的。过滤允许用户指定想要抓取的数据流,从而用户可以专注于感兴趣的数据。此外,ethereal
2015-03-14 18:01:28
1656
转载 网络基本功(十六):细说网络性能监测与实例(下)
网络基本功(十六):细说网络性能监测与实例(下) 转载请在文首保留原文出处:EMC中文支持论坛https://community.emc.com/go/chinese 介绍 网络问题中,性能问题是最复杂的问题之一,解决这样的问题能够透彻的了解整个网络的结构。但通过合适的吞吐量和数据流测试工具,能够帮你快速找到问题所在。本文承接上文,阐述netperf和n
2015-03-14 17:56:57
1570
转载 网络基本功(十四):细说诊断工具ping
网络基本功(十四):细说诊断工具ping 转载请在文首保留原文出处:EMC中文支持论坛https://community.emc.com/go/chinese 介绍 ping的工作原理很简单,一台网络设备发送请求等待另一网络设备的回复,并记录下发送时间。接收到回复之后,就可以计算报文传输时间了。只要接收到回复就表示连接是正常的。耗费的时间喻示了路径长度。重复请
2015-03-14 17:56:16
3467
转载 网络基本功(十五):细说网络性能监测与实例(上)
网络基本功(十五):细说网络性能监测与实例(上) 转载请在文首保留原文出处:EMC中文支持论坛https://community.emc.com/go/chinese 介绍 网络路径性能检测主要包括三方面的内容:带宽测量能够获知网络的硬件特性,如网络的最大容量,吞吐量测量能够获得网络实际可提供的最大容量,数据流测量能够了解真实占用的网络容量。本文介绍在评估
2015-03-14 17:56:02
1518
转载 网络基本功(十三):细说Linux网络配置(下)
网络基本功(十三):细说Linux网络配置(下) 转载请在文首保留原文出处:EMC中文支持论坛https://community.emc.com/go/chinese 介绍 本文承接细说Linux网络配置(上) 。更多信息 Linux网络硬件选项: ethtool命令查询并设置网络接口关于媒体相关的参数。如:链路速度和双工。
2015-01-16 22:01:42
1546
转载 网络基本功(十二):细说Linux网络配置(上)
网络基本功(十二):细说Linux网络配置(上) 转载请在文首保留原文出处:EMC中文支持论坛https://community.emc.com/go/chinese 介绍 将一台设备添加到本地网络的基本步骤包括:指定唯一的IP地址与主机名。确保启动时正确配置网络接口。创建默认路由。指定DNS域名服务器以使设备能够连接到网络其他部分。更
2015-01-16 22:00:25
1636
转载 网络基本功(十一):TCP窗口调整与流控
网络基本功(十一):TCP窗口调整与流控 转载请在文首保留原文出处:EMC中文支持论坛https://community.emc.com/go/chinese 介绍 前文已经介绍过了TCP滑动窗口大小的重要性。在客户端与服务器的连接中,客户端告知服务器它一次希望从服务器接收多少字节数据,这是客户端的接收窗口,即服务器的发送窗口。类似地,服务器告知客户端一次希望
2015-01-16 21:44:31
4868
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人