Category Archives: Computers and Internet

proftpd

配置文件 /etc/proftpd/proftpd.conf   指定用户登录目录 look for the work "jail" in the file~  

发表在 Computers and Internet | 2条评论

[zz]Linux命令行界面的一般代理设置方法

windows下有个软件CCproxy, 可以配置本级为服务器, 设一下各个服务的端口号就好。     [zz]Linux命令行界面的一般代理设置方法 1、在profile文件中设置相关环境变量 # vi /etc/profile http_proxy=http://192.168.20.20:3128 # 分别指定http、https、ftp协议使用的代理服务器地址 https_proxy=http://192.168.20.20:3128 ftp_proxy=http://192.168.20.20:3128 no_proxy=192.168.20. # 访问局域网地址(192.168.20.0/24网段)时不使用代理,可以用逗号分隔多个地址 export http_proxy https_proxy ftp_proxy no_proxy 保存退出,注销重新登陆系统即可生效。 2、经测试结果 可以使用wget命令通过代理下载文件(如下行命令可以递归下载FreeBSD的整个中文手册目录): # wget -krp -np http://cnsnap.cn.freebsd.org/doc/zh_CN.GB2312/books/handbook/ 可以使用elinks访问web网站(适合在终端下访问以文字为主的英文网站)

发表在 Computers and Internet | 1条评论

曾经为此写程序写到腰酸

发表在 Computers and Internet | 发表评论

kernel module

此段内核中的代码采用了linux中较新的sysfs机制。 sysfs是内核较新的一种虚拟的基于内存的文件系统 , 它的作用与 proc 有些类似,但除了与 proc 相同的具有查看和设定内核参数功能之外,还有为 Linux 统一设备模型作为管理之用。相比于 proc 文件系统,使用 sysfs 导出内核数据的方式更为统一,并且组织的方式更好。 uswitch设备文件结点在文件系统中sys/devices的子目录下, 它的属性由DEVICE_ATTR宏设定。 这一宏的四个参数分别为设备结点名称、权限位,读函数和写函数。所以对uswitch进行读操作时,会调用show_usb_uart_switch函数,进而调用check_switch_pins, 在此函数中, 会查询GPIO 173, 166, 84号pin的值并组合成一个0~7的level值返回; 对uswitch进行写操作时, 会调用control_switch_pins, 将输入的0~7的值转换为三个pin的高低电平。    linux-2.6.25/drivers/char/ftm/ftm_driver.c   /* UART/USB Switch (s) */ extern int check_switch_pins(); extern int control_switch_pins(); ssize_t show_usb_uart_switch(struct device *pdev, struct device_attribute *attr, char *buf) { unsigned int  value; value = check_switch_pins(); return sprintf(buf, "%d", value); } ssize_t store_usb_uart_switch(struct device *pdev, struct device_attribute *attr, const char *buf, size_t count) { int cmd; sscanf(buf,"%d", &cmd); //count = sprintf(buf, "%c\n", &cmd); //printk("%c\n", cmd); control_switch_pins(cmd); return count; } DEVICE_ATTR(uswitch, 0666, show_usb_uart_switch, store_usb_uart_switch); /* UART/USB Switch (e) */ ********************************************   以下为进行内核模块编程的最简单的示例, 通过printk打印hello world, 可以在shell中用dmesg命令查看, 感兴趣的话可在我们的手机上进行实验。  hello.c #include <linux/init.h> #include <linux/module.h> #include <linux/kernel.h> MODULE_LICENSE("Dual BSD/GPL"); static int hello_init (void) {     printk("hello linux kernel\n");                 return 0; … 繼續閱讀

发表在 Computers and Internet | 发表评论

java file read & write

import java.io.*; public class rwcase{ public static void main(String[] args)throws Exception{  File f1 = new File("f:\\1.txt");  File f2 = new File("f:\\2.txt");  FileInputStream fr = new FileInputStream(f1);  BufferedReader  br = new BufferedReader(new InputStreamReader(fr, "UTF-8"));  Writer bw = new OutputStreamWriter(new FileOutputStream(f2), "UTF-8");  String str;  while((str = br.readLine()) != null)  {   bw.write(str);  }  bw.flush();  bw.close();  br.close();  System.out.println("input" + … 繼續閱讀

发表在 Computers and Internet | 2条评论

[zz]Hash Table

哈希表心得 收藏 最近我在做一个项目,其中要用到一个数据结构——Hash Table(哈希表),以前只有理论知识,现在实却发现很不简单,所以写下来和大家共分享。 我们知道,哈希表是一个固定大小的数组,数组的每个元素是一个链表(单向或双向)的头指针。如果Key一样,则在一起,如果Key不一样,则不在一起。哈希表的查询是飞快的。因为它不需要从头搜索,它利用Key的“哈希算法”直接定位,查找非常快,各种数据库中的数据结构基本都是它。但带来的问题是,哈希表的尺寸、哈希算法。 哈希表的数组是定长的,如果太大,则浪费,如果太小,体现不出效率。合适的数组大小是哈希表的性能的关键。哈希表的尺寸最好是一个质数,最小的质数尺寸是17。 当然,根据不同的数据量,会有不同的哈希表的大小。对于数据量很时多时少的应用,最好的设计是使用动态可变尺寸的哈希表,那么如果你发现哈希表尺寸太小了,比如其中的元素是哈希表尺寸的2倍时,我们就需要扩大哈希表尺寸,一般是扩大一倍。下面的数库是哈希表变化尺寸时尺寸大小的一个列表。 static int prime_array[] = {    17,             /* 0 */    37,             /* 1 */    79,             /* 2 */    163,            /* 3 */    331,            /* 4 */    673,            /* 5 */    1361,           /* 6 */    … 繼續閱讀

发表在 Computers and Internet | 发表评论

kobject_uevent and netlink

in driver there is one line to write: kobject_uevent(&dev->kobj, KOBJ_CHANGE);   in userspace application: #include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <string.h>#include <ctype.h>//#include <sys/un.h>#include <sys/ioctl.h>#include <sys/socket.h>#include <linux/types.h>#include <linux/netlink.h>#include <errno.h> static int init_rtc_sock(void){ struct sockaddr_nl snl; const int buffersize = 16 * 1024; int retval;  memset(&snl, 0×00, … 繼續閱讀

发表在 Computers and Internet | 发表评论

linkedlist模板类

就写了add和show_list函数,用到的时候再补充吧 #include<iostream>    using namespace std; template<class T> class Node{public:    Node(T invalue):m_Value(invalue), m_Next(0){}    ~Node();     T getValue() const {return m_Value;}    void setValue(T value) {m_Value = value;}    Node<T> * getNext() const {return m_Next;}    void setNext(Node<T> * next){m_Next = next;}private:    T m_Value;    Node<T> … 繼續閱讀

发表在 Computers and Internet | 发表评论

[zz]PPP驱动程序的基本原理

PPP驱动程序的基本原理=====================1) ppp设备是指在点对点的物理链路之间使用PPP帧进行分组交换的内核网络接口设备, 由于Linux内核将串行设备作为终端设备来驱动, 于是引入PPP终端规程来实现终端设备与PPP设备的接口. 根据终端设备的物理传输特性的不同, PPP规程分为异步规程(N_PPP)和同步规程(N_SYNC_PPP)两种, 对于普通串口设备使用异步PPP规程. 2) 在PPP驱动程序中, 每一tty终端设备对应于一条PPP传输通道(chanell), 每一ppp网络设备对应于一个PPP接口单元(unit). 从终端设备上接收到的数据流通过PPP传输通道解码后转换成PPP帧传递到PPP网络接口单元, PPP接口单元再将PPP帧转换为PPP设备的接收帧. 反之, 当PPP设备发射数据帧时, 发射帧通过PPP接口单元转换成PPP帧传递给PPP通道, PPP通道负责将PPP帧编码后写入终端设备. 在配置了多链路PPP时(CONFIG_PPP_MULTILINK), 多个PPP传输通道可连接到同一PPP接口单元. PPP接口单元将PPP帧分割成若干个片段传递给不同的PPP传输通道, 反之, PPP传输通道接收到的PPP帧片段被PPP接口单元重组成完整的PPP帧. 3) 在Linux-2.4中, 应用程序可通过字符设备/dev/ppp监控内核PPP驱动程序. 用户可以用ioctl(PPPIOCATTACH)将文件绑定到PPP接口单元上, 来读写PPP接口单元的输出帧, 也可以用ioctl(PPPIOCATTCHAN)将文件绑定到PPP传输通道上, 来读写PPP传输通道的输入帧. 4) PPP传输通道用channel结构描述, 系统中所有打开的传输通道在all_channels链表中. PPP接口单元用ppp结构描述, 系统中所有建立的接口单元在all_ppp_units链表中. 当终端设备的物理链路连接成功后, 用户使用ioctl(TIOCSETD)将终端切换到PPP规程. PPP规程初始化时, 将建立终端设备的传输通道和通道驱动结构. 对于异步PPP规程来说, 通道驱动结构为asyncppp, … 繼續閱讀

发表在 Computers and Internet | 1条评论

得到进程的pid

#include <stdio.h> int getPID(char * processName){    char buf[256] = {0,}, cmd[64];    char * digit;    int pid = -1;    FILE *pp;     sprintf(cmd, "ps | grep %s", processName);    if( (pp = popen(cmd, "r")) == NULL )    {        return -2;    } … 繼續閱讀

发表在 Computers and Internet | 发表评论