- 博客(66)
- 收藏
- 关注
转载 NAT穿越原理——STUN
STUN是RFC3489规定的一种NAT穿透方式,它采用辅助的方法探测NAT的IP和端口。毫无疑问的,它对穿越早期的NAT起了巨大的作用,并且还将继续在ANT穿透中占有一席之地。 STUN的探测过程需要有一个公网IP的STUN server,在NAT后面的UAC必须和此server配合,互相之间发送若干个UDP数据包。UDP包中包含有UAC需要了解的信息,比如NAT外网 IP,PORT等等。UAC
2014-05-07 17:23:26 7125
原创 使用shell脚本创建好的图形应用程序
对话UNIX:使用shell脚本创建好的图形应用程序 简介: 命令行不适合于每一位用户。事实上,一些用户可能仅在握着鼠标时才感到舒服。要仅使用 shell 来满足这些用户或构建桌面应用程序,可以向您的脚本添加一些 GUI。这里是一些具体做法。如果您走进一个拥挤的机房,可能会听到有关 “shebangs”、斜线、点、根、管道、端口等等这个那个的闲聊。如果讲到 UNIX®,您无疑会理解本地术语 — 有
2014-05-07 17:23:11 792
原创 vim/ctags/TagList/NERD_Tree Set UP
1).unzip the zip file NERD_Tree.zip/TagList.zip/ctags.tar.gz to local dir.2).mkdir -v ~/.vim{plugin,doc} touch ~/.vimrc3).mv or cp plugin/xxx.vim to target dir(~/.vim/plugin) mv or cp doc/xxx.txt
2014-05-07 17:22:59 610
原创 Get ipv6address prefix content (TO BE FIXED LATER)
void get_ipv6addr_prefix_content(char *ipv6addr,char *prefix){ struct in6_addr ipv6; char ipv6_str_r[INET6_ADDRSTRLEN]={0}; char *p1,*p2; int prefix_num; char ipaddr_tmp[siz
2014-05-07 17:22:57 906
原创 bash的内部命令
bash命令解释套装程序包含了一些内部命令。内部命令在目录列表时是看不见的,它们由Shell本身提供。常用的内部命令有:echo, eval, exec, export, readonly, read, shift, wait和点(.)。下面简单介绍其命令格式和功能。 1.echo 命令格式:echo arg 功能:在屏幕上显示出由arg指定的字串。 2.eval 命令格式:eval a
2014-05-07 17:22:55 789
原创 写了一个解、压缩文件的shell脚本
#!/bin/bash##for file zip and unzip#date:2011/7/20 #input:current_filename#use gunzip\bzip\tar commands to do this .#two choices:pack||unpackpack(){ ##use tar cmd to pack file echo "Now will use tar
2014-05-07 17:22:53 4047
原创 cscope install&&use
花了点时间稍微的学了下cscop的用法,感觉还是很不错的,总结下过程吧:1.安装Ubuntu下的话直接:sudo apt-get install cscope其他的发行版可以下载好源码包进行安装,过程还是比较简单的,可以参考其中的README文本说明。3.配置cscope的配置也不是很难的,要用到一个文件cscope_map.vim,这个文件要去下载的(http://cscope.sourcefo
2014-05-07 17:22:50 553
原创 Linux 信号signal处理机制
信号是Linux编程中非常重要的部分,本文将详细介绍信号机制的基本概念、Linux对信号机制的大致实现方法、如何使用信号,以及有关信号的几个系统调用。 信号机制是进程之间相互传递消息的一种方法,信号全称为软中断信号,也有人称作软中断。从它的命名可以看出,它的实质和使用很象中断。所以,信号可以说是进程控制的一部分。 一、信号的基本概念 本节先介绍信号的一些基本概念,然后给出一些基本的信号类型和信号对
2014-05-07 17:22:48 505
原创 select函数以及FD_ZERO、FD_SET、FD_CLR、FD_ISSET
select函数: 系统提供select函数来实现多路复用输入/输出模型。原型: #include sys/time.h> #include unistd.h> select函数: 系统提供select函数来实现多路复用输入/输出模型。原型: #include sys/time.h>
2014-05-07 17:22:46 709
原创 linux之write函数
#include ssize_t write(int fd, const void *buf, size_t count);参数: fd:要进行写操作的文件描述符buf:需要输出的缓冲区count:最大输出字节计数而其相对于read函数却是不同的#include ssize_t read(int fd, const void *buf, size_t count);参数: fd:要进行读操作的
2014-05-07 17:22:44 1594
原创 Linux open函数
open 函数用于打开和创建文件。以下是 open 函数的简单描述 #include fcntl.h> int open(const char *pathname, int oflag, ... /* mode_t mode */); 返回值:成功则返回文件描述符,否则返回 -1对于 open 函数来说,第三个参数(...)仅当创建
2014-05-07 17:22:42 690
原创 Linux下pthread多线程编程整理
1 Introduction略2 Thread Concepts1. Thread由下面部分组成:a. Thread IDb. Stackc. Policyd. Signal maske. Errnof. Thread-Specific Data3 Thread Identification1. pthread_t用于表示Threa
2014-05-07 17:22:39 607
原创 C中的access函数
int access(const char *filename, int amode); amode参数为0时表示检查文件的存在性,如果文件存在,返回0,不存在,返回-1。 这个函数还可以检查其它文件属性: 06 检查读写权限 04 检查读权限 02 检查写权限 01 检查执行权限 00 检查文件的存在性而这个就算这个文件没有读权限,也可
2014-05-07 17:22:37 540
原创 理解 chroot
简介: chroot 在 Linux 系统中发挥了根目录的切换工作,同时带来了系统的安全性等好处。本文通过编写 chroot 来理解 chroot 的作用和好处,这不仅有助于更好的使用 chroot,同时加深了对 Linix 系统初始 RAM 磁盘工作的认识。什么是 chroot:chroot,即 change root directory (更改 root 目录)。在 linux 系统中,系统默
2014-05-07 17:22:35 535
原创 深入理解软件包的配置、编译与安装
版权声明本文作者是一位自由软件爱好者,所以本文虽然不是软件,但是本着 GPL 的精神发布。任何人都可以自由使用、转载、复制和再分发,但必须保留作者署名,亦不得对声明中的任何条款作任何形式的修改,也不得附加任何其它条件。您可以自由链接、下载、传播此文档,但前提是必须保证全文完整转载,包括完整的版权信息和作译者声明。其他作品本文作者十分愿意与他人共享劳动成果,如果你对我的其他翻译作品或者技术文章有兴趣
2014-05-07 17:22:32 535
原创 LFS,BLFS,ALFS,HLFS
Linux From Scratch (LFS) 及其后代代表一种新方法,向用户揭示 Linux 操作系统是如何工作的。LFS 基于这样的假设,即一部分一部分地编译完整的操作系统不仅能够揭示操作系统是如何工作的,也允许独立的操作人员为速度、内存占用或安全性而构建系统。许多作家已经编写了有关 UNIX? 风格的书籍,深入研究了调度、内存管理、多进程和线程、文件系统,以及用户与内核之间的交互。写作 L
2014-05-07 17:22:30 569
原创 Python学习资料
Python语言编程学习资料(电子书+视频教程)下载汇总:(原文:http://club.topsage.com/thread-361615-1-1.html)开发工具:Python语言集成开发环境 Wingware WingIDE Professional v3.2.12Python语言集成开发环境 Wingware WingIDE Professional v3.2.9.1高效Python/D
2014-05-07 17:22:27 1879
原创 Vim改装成一个IDE编程环境
手把手教你把Vim改装成一个IDE编程环境(图文)By: 吴垠 Date: 2007-09-07 Version: 0.5 Email: lazy.fox.wu#gmail.com Homepage: http://blog.csdn.net/wooin Copyright: 该文章版权由吴垠和他可爱的老婆小包子所有。可在非商业目的下任意传播和复制。对于商业目的下对本文的任何行为需经作者同意。
2014-05-07 17:22:24 540
原创 TR-069:如何远程管理网关、路由器?
TR-069是由DSL论坛(www.dslforum.org)所开发的系列技术规范之一,其全称为“CPE广域网管理协议”。它提供了对下一代网络中家庭网络设备进行管理配置的通用协议框架,用于从网络侧对企业或家庭网络中的网关、路由器、机顶盒等设备进行远程集中管理。DSL论坛提供的技术报告TR-069描述了CPE和自动配置服务器(ACS)之间的通讯机制,提供了ACS对CPE安全进行配置的策略。解决了CP
2014-05-07 17:22:22 7253
原创 基于X的GNOME、GTK、GDK、XLib、GLib等之间的关系
什么是Xlib? The X Library是X Window程式最低階的API,如果拿來和Windows 比較起來,Xlib 就和Windows APIs(或稱 Windows SDK)一樣,算是最接近 X Server的程序設计介面,它只提供最基本的绘图和訊息事件的處理。 什么是Xt?(X Toolkit Intrinsics) Xt是第一個把Xlib包裝成更抽象化的函式庫,它提供了「物件
2014-05-07 17:22:20 678
原创 年轻时必须养成的十大好习惯
1.守时 买个闹钟,以便按时叫醒你。贪睡和不守时,都将成为你工作和事业上的绊脚石,任何时候都一样。不仅要学会准时,更要学会提前。就如你坐车去某地,沿途的风景很美,你忍不住下车看一看,后来虽然你还是赶到了某地,却不是准时到达。"闹钟"只是一种简单的标志和提示,真正灵活、实用的时间,掌握在每个人的心中。 2.不要扭扭捏捏 如果你不喜欢现在的工作,要么辞职不干
2014-05-07 17:22:18 608
原创 TR-069 协议简介
TR-069是由DSL论坛(www.dslforum.org)所开发的技术规范之一,其全称为“CPE广域网管理协议”。它提供了对下一代网络中家庭网络设备进行管理配置的通用框架和协议,用于从网络侧对家庭网络中的网关、路由器、机顶盒等设备进行远程集中管理。 这些设备不论是在最开始安装的时候还是在后期运行中的业务配置变更或是出现故障需要维护的时候,都需要通过管理接口对设备进行配置或是诊断。现阶
2014-05-07 17:22:16 3484
原创 vim一些方便设置
vi ~/.vimrc,并将该文件加入以下内容: "Display line nuset nu "Syntax highlightsyntax on "indent based on filetypefiletype indent on set autoindentset cindent "ignore
2014-05-07 17:22:13 545
原创 GTK入门
1. 简介GTK (GIMP Toolkit) 起源於开发用来做为GIMP (General Image Manipulation Program)的一套工具. GTK建立在GDK (GIMP Drawing Kit)的上层, 基本上是将Xlib功能包装起来. 它被称为GIMP toolkit是因为原来是写来开发GIMP, 但现在被许多免费软体计划所使用. 原作者为 Peter Mattis pe
2014-05-07 17:22:11 3126
原创 sourceinsight使用技巧
1 sourceinsight screen font 的默认字体是Verdana的,它是一直变宽字体。在Document style中可以将字体改为定宽的Courier 2 勾掉indent Open Brace和Indent Close Brace的效果: 继上一段,在相对缩进行里, 如果输入"{"或"}", 则自动和上一行列对齐 3 今天把一个用sourceinsight排版整齐
2014-05-07 17:22:09 1977
原创 Linux下Socket编程
什么是Socket Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP网络编程,必须理解Socket接口。 Socket接口设计者最先是将接口放在Unix操作系统里面的。如果了解Unix系统的输入和输出的话,就很容易了解Socket了。网络的 Socket数据传输是一种
2014-05-07 17:22:07 486
原创 将普通用户添加到sudo组
在LINUX里当我们需要执行一条root权限的命令时,每次都要su到root,总是有些不方便?那么我们可以用 sudo代替它。fedora 10默认新建的用户不在sudo组,但可以编辑/etc/sudoers文件将普通用户加入sudo组。要注意的是修改该文件只能使用visudo命令: 1、首先切换到 root #su - (注意有- ,这和su不同,在用命令"su"的时候只是切换到root,但没有
2014-05-07 17:22:04 2040
原创 log_03_30
实在不知道用什么题目来总结最近的生活思绪,想来想去还是用log吧,实用些;平时不太喜欢在空间上发表日志,有的也只是一些转载的技术文章,现在发现自从找到工作到现在一直都在迷糊状态,似乎目前的目标已经完成。工作是自己喜欢的,也是自己以后很愿意花时间钻研的,感觉以往一年来自学的东西终于在求职道路上有了一点用武之地,现在自己似乎有点不知所措了,之前一天对着屏幕看视频、写代码的日子不再延续了,考研也完了,自
2014-05-07 17:22:02 557
原创 GTK+学习:搭建环境
Windows平台:在[url]http://www.gtk.org/download.html[/url]可以找到Windows(32-bit)和64-bit的版本下载,按照自己的系统是32位还是64位选择相应的版本,页面中的GTK+ individual packages是GTK+运行所必须的库,Third Party Dependencies是第三方依赖库。这样我们就能够根据
2014-05-07 17:22:00 673
原创 JTAG、开发板、PC连接
今天去电脑城买了一块PCI转的并口卡(自己机器上没有这种接口),这里说一下用JTAG连接开发板的设置HJTAG的方法,起初我装上并口卡,并且安装好驱动,将开发板和JTAG口连接到PC机上,打开电源,发现HJTAG不能够检测到ARM9处理器,这下可烦了!买回了的并卡总不能不用吧,在网上搜了下相关的资料,发现PC自带的并口资源范围是0x378开始的,而我扩展出的并口卡则是0xC400,于是将HJTAG
2014-05-07 17:21:58 3171
原创 Windows下建立QT开发环境
QT是一个功能十分强大的跨平台的GUI系统。从之前接触到的一些功能上,我就已经喜欢上了使用它。目前的工作主要是在ARM平台上的Linux下运行QT的程序。但是,我始终不甘寂寞,总想在Windows下也用一用~在网上找了些资料,终于把Windows平台下的QT开发环境配置好啦,记录下来,跟大家一起分享: 一、必须的软件 QT肯定是必须的。在QT的官网上下载的速度比较慢,推荐
2014-05-07 17:21:56 592
原创 drcom——讨厌至极
/tmp/drcom-hbut/kmod/drcom.c: 在函数 ‘is_syn_pkt’ 中:/tmp/drcom-hbut/kmod/drcom.c:301: 错误:隐式声明函数 ‘skb_network_offset’/tmp/drcom-hbut/kmod/drcom.c: 在函数 ‘sack_adjust’ 中:/tmp/drcom-hbut/kmod/drcom.c:433: 错误:
2014-05-07 17:21:54 2040
原创 0316_interview
今天下午去了光谷软件园参加面试,中午稍微眯了下就走了,生怕跟前天那样迟到而丧失面试机会;大概二点半的样子到达该公司,给我面试的是前天宣讲会上的“老王”,我感觉这个人挺强的,97年华科毕业,穿着也挺有个性,先看了看我的简历然后就开始问了,有关于linux方面的问题,其实我还是瞒熟悉的,只是当时不知道怎么搞的,可能有点紧张连说出几个有关网络方面的命令我居然只说出来了两个,后来在回去的公交上还想出来几个
2014-05-07 17:21:51 504
原创 typedef和define的详细区别
typedef是C语言语句,其功能是用户为已有数据类型取“别名”。 例如: typedef int INTEGER; 这以后就可用INTEGER来代替int作整型变量的类型说明了,如: INTEGER a,b; 用typedef定义数组、指针、结构等类型将带来很大的方便,不仅使程序书写简单而且使意义更为明确,因而增强了可读性。例如: typedef int a[10]; 表示a是整型数组类型,数组
2014-05-07 17:21:49 609
原创 两道选择题
#include stdio.h>int main(){ int i,a=0; for(i=0;i5;i++){ switch(i) { case 1: a++; case 2: --a;
2014-05-07 17:21:47 503
原创 将整数X的第p位开始的n个位(二进制位)取反并且将结果返回
今天笔试遇到的题,实现了一下://写一函数,将整型X的第p位开始的n个位(二进制位)取反,并且将结果返回#include stdio.h>#include math.h>#define Funa(a,b,c)\{\ a=a*b;\ c=a-b;\}void Funa2(int a,int b,int c){ a = a*b;
2014-05-07 17:21:45 4092
原创 C语言中宏定义和函数的取舍
作者:杨硕,华清远见嵌入式学院讲师。 要写好C语言,漂亮的宏定义是非常重要的。宏定义可以帮助我们防止出错,提高代码的可移植性和可读性等。 在软件开发过程中,经常有一些常用或者通用的功能或者代码段,这些功能既可以写成函数,也可以封装成为宏定义。那么究竟是用函数好,还是宏定义好?这就要求我们对二者进行合理的取舍。 我们来看一个例子,比较两个数或者表达式大小,首先我们把它写成宏定义:
2014-05-07 17:21:43 664
原创 栈内存与堆内存的区别
一:程序的内存分配 栈区(stack)有编译器自动分配释放,存放函数的参数,局部变量等. 堆区(heap)一般由程序员分配和释放,否则就由OS回收。堆用于存放全局变量,静态变量,常量字符串和函数代码(函数体的二进制代码).二:申请后系统的响应 栈:只要栈的剩余空间大于所申请的空间,系统将为程序提供内存,否则将报异常提示栈溢出。 堆:在记录空闲
2014-05-07 17:21:40 738
原创 又遇到的一些
#include stdio.h>#include stddef.h>int main(){ /* unsigned int u; int k = -1; if(u>k){ printf(">-1\n"); } else if(u == k) { printf("=-1\n")
2014-05-07 17:21:38 548
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人