Tag: 编程

使用libc封装库修改程序绑定端口

本文同步自(最佳显示效果请点击):https://zohead.com/archives/libc-bind-wrapper/ 最近在使用一个第三方程序的时候发现程序绑定的 UDP 端口和现有 Linux 系统中的程序有冲突,系统自带的程序又不好修改端口,而第三方程序更没有源码或者配置文件来指定端口。 这种情况下想到可以用 libc 的封装库自己实现 bind 之类的函数来修改端口号,而网上也找到了 Daniel Ryde 类似的实现: http://www.ryde.net/code/bind.c.txt 编译这个 bind 库可以通过环境变量指定绑定的本地 IP 地址,但不支持端口号修改, […]

Linux kernel学习-内存管理

本文同步自(如浏览不正常请点击跳转):https://zohead.com/archives/linux-kernel-learning-memory-management/ 接着之前的 Linux kernel 学习步伐,来到极其重要的内存管理部分,继续本文内容,需要先了解内存寻址的基础知识,见之前的 [内存寻址] 博文。 1、内存页及内存区域: 正如之前所说,Linux kernel 使用物理页作为内存管理的基本单位,其中重要的线程地址和物理地址的转换操作由页单元 MMU 来完成,系统的页表也由 MMU 来维护。kernel 使用 struct page 来表示一个物理页,它的定义在 in […]

Linux kernel kfifo分析

本文同步自(如浏览不正常请点击跳转):https://zohead.com/archives/linux-kernel-kfifo/ kfifo 是 Linux kernel 中的一个通用队列实现,对于 kernel 中常见的 FIFO 队列应用还是很有用的,本文主要简单介绍分析下 Linux kernel kfifo。实际上 ChinaUnix 上有个 kfifo 的分析文章,但已经比较老(基于 Linux 2.6.10),而且我现在用的 2.6.34 版本 kernel 中 kfifo 实现有很多改动,故自己简单写下,ChinaUnix 上的 kfifo 介绍帖子在这里: http://b […]

未能看到整个森林-编程学习中所犯的错误

本文同步自(如浏览不正常请点击跳转):https://zohead.com/archives/fail-to-see-the-big-picture/ 备注:本文根据 pongba 大哥的这篇E文文章翻译并结合自己体会总结而来,pongba 的E文原文请猛击这里: http://blog.csdn.net/pongba/article/details/2143245 人类的一个普遍的天性是容易被自己感兴趣的东西所吸引。 不论是本文要说的编程学习还是日常事务都是这样,包括美女之类(哈哈),这似乎是一个难以打破的公理。人类自文明开始以来就对非凡的自然现象下的本质非常好奇,我们渴望理解,渴望知道原因 […]

WordPress友言近期评论Widget更新(v1.1)

本文同步自(如浏览不正常请点击跳转):https://zohead.com/archives/wordpress-uyan-recent-comment-widget-v1-1 前两天写了一个友言近期评论的 WordPress Widget,初步测试还能用,但多次进行刷新,会出现不能正常登录之类的问题(Failed to authentication with uyan.cc、Invalid comments data from uyan.cc 之类的报错),而且原来每次都需要登录友言的后台管理严重影响速度,我也比较怕怕这样不断发请求会导致友言把我的脚本和博客给封掉,嘿嘿。 由于友言没有公开 […]

PHP实现WordPress友言近期评论Widget

本文同步自(如浏览不正常请点击跳转):https://zohead.com/archives/wordpress-uyan-recent-comment-widget/ 现在有很多人都使用 WordPress 来搭建自己的博客系统,其中有一些是像我这样使用 友言 这个社交评论插件来替代系统原始的评论框的,友言 评论框插件对一些主流的社交网站支持比较好,很是推荐,友言官网: http://uyan.cc/ 之前我写过一个修改 友言 插件实现完美与 WordPress Mobile Pack 插件配合实现移动版博客的文章,在这里仅供参考: https://zohead.com/archives/m […]

bind2nd普通二元函数时无法使用引用类型参数的问题

本文同步自(如浏览不正常请点击跳转):https://zohead.com/archives/cplusplus-bind2nd-reference/ 在使用 STL 的 find_if、count_if 等函数时会发现这些函数使用的参数不是普通的函数指针,而是 functional 函数对象,实际使用函数对象时可以自己定义一个仿函数来实现(实现带参数的 operator () 即可),这个相对比较简单就不写出来了。但有些情况需要直接使用普通的二元函数指针,这时可以使用 ptr_fun 将函数指针转换为函数对象作为 find_if、count_if 等的参数。 先看一个能正常工作的二元函数不使 […]

C++虚基类的实现验证

本文同步自(如浏览不正常请点击跳转):https://zohead.com/archives/cplusplus-virtual-base-class/ 在C++的某些应用环境中,如果有多个派生类同时继承同一个基类,但只要想基类成员的一份拷贝,这样可以把对基类的继承声明为虚拟(virtual)的,以达到需要的目的,用 virtual 限定的继承即为虚继承,对应的基类即为虚基类,没有则为非虚基类。在派生类产生的对象中,同名的虚基类只产生一个虚基类对象,非虚基类则有各自的对象,需要注意虚基类和抽象类的区分。 另外特别需要注意的是一个基类即可以被用作虚基类,也可以被用作非虚基类,这纯粹看是否是虚继承 […]

vector的push_back拷贝构造和空间占用分析

本文同步自:https://zohead.com/archives/vector-push-back-space-copy/ 这两天在实际程序中使用 STL 的 vector push_back 类对象时出现问题,偶尔发现 vector 在 push_back 时的调用类对象的拷贝构造函数和析构函数有点特别,简单做下分析。 程序代码: 功能很简单,main 中定义一个 sss 类对象和对应的 vector,然后在循环中改类成员的值,并依次 push_back 到 vector 中,类的构造函数、析构函数、拷贝构造函数中都加了对应的打印输出。循环运行了5次,往 vector 中增加了5个类成员。 […]

Linux下出现 pam_get_item 的原因分析

本文博客链接:https://zohead.com/archives/linux-pam-get-item-error-library/ 近日在将一个 RHEL6 上的服务程序移植到老的 Fedora Core 2 Linux 上时出现了一些问题,该程序的功能为预先加载几个动态库,这几个动态库中再需要根据不同的需求做 PAM 用户验证操作,程序在 RHEL6 上编译和使用都没有问题,换到 Fedora Core 2 环境之后,编译时一切正常,但在运行时出现比较奇怪的 pam_get_item 错误: pam: PAM [dlerror: /lib/security/../../lib/secu […]