自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

松哥(jccz_zys)的专栏

专著于linux内核、网络通信、MySQL方面的学习研究;希望与大家多交流

  • 博客(26)
  • 资源 (1)
  • 收藏
  • 关注

原创 MySQL计划任务

 MySQL的功能越来越强大了,逐渐在想大型商业数据库靠拢了,这不,5.1的版本已然支持视图、触发器、job等功能。下面简单介绍下我所使用的MySQL的job功能(也就是计划任务,Oracle中称job):一、创建计划任务:语法:CREATE [DEFINER = { user | CURRENT_USER }]   #计划任务的所有者,一般省略,则为创建者;#否则需要

2007-08-03 20:35:00 7377 1

原创 c/c++调用mysql存储过程

         mysql5.0以后就支持存储过程了,目前mysql的6.0Alpha版也已经推出。6.0不仅支持大型数据库如oracle等的绝大部分功能,如存储过程、视图、触发器、job等等,而且修正了这些功能所存在的bug,其中6.0.1还支持64位windows,以及表空间。在c/c++中访问mysql,常见的只是一些简单的业务,使用c中嵌入简单的查询、插入、更新等操作即可。随着业务的

2007-07-08 16:36:00 9050 3

原创 initcall机制原理及实践

说明:以下内容基于linux2.4.0一、initcall机制原理    在linux初始化的过程中,内核采用了一种initcall的机制,它利用gcc的扩展功能以及ld的连接控制脚本实现了在内核初始化的过程中通过简单的循环就实现了相关驱动的初始化。核心代码的/init/main.c里面有do_initcalls函数如下:static void __init do_initcalls(

2007-06-01 11:34:00 7106 1

翻译 Understanding Linux Network Internals 第二十六章 翻译稿:邻居子系统的概念

【翻译】邻居子系统:概念       本章描述了邻居协议使用的原因和时间,以及其主要功能。这主要是邻居协议(如arp)的一个简单的概观以及快速参考。包含了如下的常见问题:l         通用邻居框架具有什么功能l         高速缓存有何重要意义l         缓存中的邻居条目能够获得的状态l         可达探测和网络不可达探测l         为什么使

2007-05-17 15:53:00 2939

原创 LINUX/I386启动协议

 LINUX/I386启动协议                     H. Peter Anvin Last update 2000-07-27     在i386平台,linux内核使用了一种相当复杂的启动方式。这种做法部分归于历史因素,即早期要求内核自身即是一个可启动映象,还有复杂的PC内存模型以及由于实模式DOS作为主流操作系统的逐渐让位而导致PC工业发展的预期。

2007-04-29 14:17:00 2411

原创 C调用delphi动态库问题

 最近两天协助成都吉胜的同事做一个C调用Delphi动态库的demo,原以为会很简单的,毕竟以前还做过delphi调用c动态库的实践。实践过程中却也碰到了不少问题,现记录下来,供以后参考:开发工具:delphi7.0 、VC++6.0注意点:1、 delphi中的导出函数必须申明为cdecl,而在vc中必须申明为__cdecl教训:delphi中的stdcall和vc++中的_

2007-04-19 14:30:00 3578 1

原创 理解PE文件相对虚拟地址(RVA)到文件偏移的转换

        关于PE文件格式的详细描述在网络上可以找到一大堆,最近有空,我也来研究一把。读了很多参考资料,应该说都讲得非常清晰,尤其是看雪学院的iamgufeng翻译的那篇文章,读来受益非浅。       根据我这个菜鸟的阅读感受与实践来说来看,我觉得根据RVA正确换算出到数据相对文件的偏移这个细节这些文章都没有做过多的说明,而这是我唯一化比较多时间来思考的地方。下面我就说说我对此的理解,

2007-03-12 15:47:00 15181 15

原创 结合linux内核源码理解SYN_RECV状态

  结合linux内核源码理解SYN_RECV状态(以下基于linux内核2.4.0 松哥 [email protected])    SYN_RECV状态,顾名思义,是收到SYN包后应该置的状态。关于SYN_RECV状态,受某些教科书的误导,我以前一直理解为服务器收到SYN包后应该置此状态。也没细想到底是置那个socket的状态,最近在看三次握手协议在linux内核中的实现时,才仔细思

2007-02-15 14:34:00 2155

原创 linux内核网络监听哈希表介绍

以下基于linux内核2.4.0源码(转载请注明出处)松哥 [email protected]     网络通信过程中,服务器必然提供监听socket响应客户端连接请求,也必然提供连接socket与客户端进行交互。一台主机上有不止一个的socket服务器,如ftp、telnet服务器等,他们初始都处于监听状态,等待连接请求的到来。linux中为了管理这两类socket提供了两个哈希链表:

2007-02-14 12:12:00 6331

原创 三次握手协议在linux内核中的实现

以下基于linux内核2.4.0源码(转载请注明出处)    以前一直使用的网络通讯的函数都是工作在阻塞模式。在看connect实现源码时,突然想到tcp/ip的三次握手在内核如何实现的,尤其是在非阻塞模式下式,涉及到等待对端回送ack包,而本端又要立即返回,想来这种实现肯定是遵循某种规则或是将所有的相关函数组合起来。    查看一些网络通信书籍,可知果然如此。应用编程如果设置为非阻塞模式,则

2007-02-06 11:56:00 4914 3

原创 关于我以前写的MySQL5加密存储过程所对应的解密函数

        陆续有很多网友email我索取我以前写的《mysql5存储过程编写实践》一文中所对应的解密存储过程,这次我把它列出来供需 要的朋友参考,其实这个加解密函数在一些简单应用中还是比较有用武之地的。        函数的源码列出如下:---- Function `aurora`.`fun_submm`--DROP FUNCTION IF EXISTS `fun_submm`;

2007-01-08 17:47:00 2687

原创 Understanding Linux Network Internals 第八章 翻译稿:设备注册和初始化

【翻译】设备注册和初始化 第5章和第6章中,我们了解了内核是如何识别网卡以及内核执行初始化过程以使网卡能够和驱动程序通讯。本章中,我们讨论初始化的其它阶段:l         网络设备什么时候,如何注册到内核l         网络设备如何注册到网络设备数据库并分配一个net_device结构实例l         net_device结构是如何被组织到哈希表和队列中以支持各种

2006-12-27 17:06:00 5805 8

转载 第一次带爷爷吃麦当劳 !真正感动我们的只须一张图片[转帖]

看了这个网友的文章,我也挺感动的。文章把我的思绪带回了老家,想想辛苦了一辈子的父母,是他们养育我,教导我,把我从小学送到中学再送到大学去,其间的一幕幕瞬间冲击着我的大脑。父母含辛茹苦、不辞辛劳、任劳任怨,想到这些,我也想哭...也是时候让他们休息的时候了。让他们到祖国各地去走走看看。。。我也为人父母了,在这个浮华的都市里,相信大多数和我一样打拼的人都能够体味到生活的艰辛;在大家

2006-12-22 12:58:00 1810 4

原创 如何获取linux进程的执行文件路径

如何获取linux进程的执行文件路径    我发现的获取linux进程的执行文件路径的方法有如下2个:    1、在c++代码里面通过函数gecpwd获取进程当前执行文件路径,通过日志或       控制台来显示当前进程的运行路径。这估计是大家看到这个标题就想到的       方法。    2、直接通过shell来查看,这也是我在实际情况中碰到的情况:           就是我们开发的系统,

2006-12-11 11:36:00 9823 1

原创 linux内核IOCTL网络控制框架实现分析

    linux内核IOCTL网络控制框架实现分析       作者:松哥email:[email protected][email protected]: 15210449                                                  (转载请注明出处)                

2006-12-05 16:07:00 27034 23

原创 关于日志级别的选择

关于日志级别的选择:    关于日志级别的选择,许多书上已经说的很多了,我就不重复赘述了;只是因为最近我开发的系统在其他人维护新增功能后运行时难于定位错误原因,所以把我在开发中实际使用的经验做一个总结。从中我得出来的一个选择规则,可以在出现问题时有助于尽快分析、定位错位原因,又可以防止日志记录文件的飞速增长。    常见的日志级别有:        none:没有日志级别,一般采用printf并配

2006-12-04 11:35:00 7110

原创 arp_rcv函数实现分析

/* * 函数用于网络层收到一个arp请求时 */int arp_rcv(struct sk_buff *skb, /*接收到的包缓冲区指针*/    struct net_device *dev, /*接收到ARP包的网卡设备结构*/    struct packet_type *pt /*捕获的协议包类型,ARP应该为arp_packet_type(net/ipv4/arp.c的1147行

2006-11-22 14:00:00 4142 1

原创 arp_send()函数分析

  (代码基于linux2.4.0)void arp_send(int type,/*arp协议编码,如ARPOP_REPLY(arp响应)、ARPOP_REQUEST(arp请求)等*/       int ptype, /*以太网协议类型,或者说是接口的硬件类型,如ARP(ETH_P_ARP)、x.25(ETH_P_X25)、ip(ETH_P_IP)等*/       u32 dest_i

2006-10-19 18:13:00 7340

原创 ARP状态

(以下内容都基于linux内核2.4.0源码)     在include/net/neighbour.h中定义了ARP有限状态机所对应的各种状态:    27 #define NUD_INCOMPLETE 0x0128 #define NUD_REACHABLE 0x0229 #define NUD_STALE 0x0430 #define NUD_DELAY 0x0831 #define NUD

2006-10-07 18:38:00 8799

原创 arp数据结构关系图

 

2006-10-07 17:00:00 2202

原创 ARP初始化

  (以下内容都基于linux内核2.4.0源码)      地址解析协议ARP负责映射IP地址到mac地址。ARP邻居是主机系统或单跳可达路由并用于链路层(MAC)寻址以代替网络层IP寻址。1、ARP数据结构    ARP数据结构的根(root)结构是neigh_table结构,它定义在include/net/neighbour.h。neigh_table结构及其字段所指向的结构都用于arp

2006-10-07 16:33:00 4401

原创 struct sock结构的简单注释

内核网络四层结构:BSD socket层、INET socket层、IP层、数据链路层sock结构工作在INET socket层,所有BSD socket层的操作都通过struct sock及其域字段prot指针转化为prot锁指向的函数处理,所以sock结构是维系BSD socket层和INET socket层的纽带,其重要性是不言而喻的。下面是对sock结构的简单注释,有些没有的待我弄

2006-09-05 10:33:00 9664

原创 delphi调用c动态库实践

 一、概述Delphi是Borland公司研制的高效的可视化开发工具,它既可用于开发系统软件,也适合于应用软件的开发。随着韩国网络游戏《传奇》的红火,其开发工具delphi也被更多的软件开发人员所熟知;C语言也是目前IT界运用最广泛的开发语言之一。最近由于工作方面的原因,需要提供delphi调用c/c++编写的动态库的例子。在不同的开发语言之间相互调用,除了要熟练掌握各种语言的编写技巧之外

2006-08-04 19:59:00 7064 5

翻译 Understanding Linux Network Internals 第七章 翻译稿:内核组件初始化体系结构

【翻译】内核组件初始化体系结构 为了全面了解内核组件,你不仅需要了解特定的程序做了什么,也要知道这些程序什么时候被谁调用。内核子系统的初始化是一项基本任务,这些任务由内核根据它自己的模式来处理。这个体系结构值得我们学习并有助于理解网络堆栈的核心组件,包括网络设备驱动程序是如何初始化的。 本章的目的在于展示内核怎样处理用于初始化内核组件的函数,既包含静态嵌入内核的组件,也包括作为内核

2006-06-30 17:59:00 5416 2

原创 mysql5存储过程编写实践

作者:松哥email:[email protected][email protected]: 15210449MySql5.0以后均支持存储过程,最近有空,研究了一把这个 格式:        CREATE PROCEDURE 过程名 ([过程参数[,...]])    [特性 ...] 过程体CREATE FUNCTION 函数名 ([函数参数[,...]])    RETURNS 返

2006-05-26 13:46:00 21336

原创 解析Linux内核获取当前进程指针的方法 [原]

作者:松哥email:[email protected][email protected]: 15210449一、内存数据表示:我们在教材或阅读中,经常需要直观的用图示来展示数据在内存中的分布,那么数据是如何在内存中组织的呢?不同的机器有不同的表示法,我们以最常见的Intel X86系列计算机为例来说明这个问题。 screen.width/2)this.style.width=scree

2006-05-26 13:44:00 3042

综合程序开发案例-扫雷游戏

讲述一个少雷游戏开发的整个过程,包括数据结构的实现、源代码等,是熟悉数据结构解决问题的一个极好的例子

2008-12-27

空空如也

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

TA关注的人

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