进一步学习请看vim发布的帮助文档

VIM常用操作
    k      
h      l
     J
当前光标位置插入                  i
所在行首位置插入                  I
当前光标位置后面插入           a
在行尾编辑                           A
当前行下面另起一新行           o
当前行上面另起一新行           O
删除换行符                            J (即把一行连接到当前行)
删除光标所在字符                  x
删除光标所在前一个字符        X
删除整行                               dd
删除到行尾                            D
删除当前光标所在字符后编辑  s
退格                                      Ctrl-h
删除当前行后编辑                   S
撤消                                       u ,可以撤消多次
重做                                       Ctrl + R
重复上一个改变                       .  (Dot)
查前当前字的man页                相当于执行 : !man
屏幕左下角非空白处                L
屏幕中间非空白处                   M
屏幕左上角非空白处                H
向后移动一个word的开头         W, w (这两个有稍微的区别,W 以空白区分字)
向前移动一个word                   B, b(这两个有稍微的区别)
移到当前word的最后一个字符  e
移动到当前行行尾                   $
移动到当前行的第一个             ^
非空白字符上    
移动到当前行的第一个字符上    0 (zero)
单字符搜索命令(向右)              f :  命令"fx"在当前行上查找下一个字符x
单字符搜索命令(向左)              F
跳转到匹配的括号去                %   包括 { }  [ ]  ( ) 具体可以处理哪 些括号可以
                                             由'matchpairs'选项来定义: help mps
跳转到第一行                          gg (or 1G)
跳转到最后一行                       G
跳转到第 n 行                          nG 如 5G
跳转到文件的百分之N行           N%  如 90%跳到接近文件尾的地方
移动到当前窗口的中间             M
当前在文件中的位置                CTRL-G
向上滚动半屏                          CTRL-U
向下滚动半屏                          CTRL-D
向上滚动一屏                          CTRL-B
向下滚动一屏                          CTRL-F
将光标所在行调整至页面中间     zz
下卷一行                                 Ctrl+e
上卷一行                                 Ctrl+y
简单搜索(向后)                    如 /include  搜索单词 "include"
简单搜索(向前)                    如 ?include
查找当前单词的下一个位置       *
查找当前单词的上一个位置       #

Visual模式
V                                           (整行的选择)                          
Ctrl-v                                       选择一个区域内容
Shift-v                                     选择一个矩行区域
光标后粘贴                              p
光标前粘贴                              P
复制一行                                 Y
复制                                        y (需加一行辅助如 y3w 复制3个单词)
寄存器复制(a-z)                     如复制3行放到寄存器 a中 "a3Y
寄存器粘贴                              "aP
复制到剪切版                              "+y
剪切到剪切版                              "+x
从剪切版粘贴                              "+gp
只读方式打开文件                    Vim -R filename

折叠
环境变量 foldmethod 有6种值 manual、indent、expr、syntax、diff、marker
对着折叠的行展开                     0 (Zero)
创建折叠区域                           zf 后加上移动指令,如 zfj、 zf5k等
在括号处zf%,创建从当前行起到对应的匹配的括号上去((),{},[],<>等)。
折叠                                         zc
对所在范围内所有嵌套的            zC
折叠点展开折叠
展开折叠                                   zo
对所在范围内所有嵌套的            zO
处展开折叠
到当前打开的折叠的开始处。      [z
到当前打开的折叠的末尾处。      ]z
向下移动。到达下一个折叠的      zj
开始处。关闭的折叠也被计入。
向上移动到前一折叠的结束处。   zk
关闭的折叠也被计入。
删除 (delete) 在光标下的      zd (仅当 'foldmethod' 设为 "manual" 或 "marker" 时有效。)
折叠。
循环删除 (Delete) 光标下      zD (仅当 'foldmethod' 设为 "manual" 或 "marker" 时有效。)
的折叠,即嵌套删除折叠。
除去 (Eliminate) 窗口里        zE (仅当 'foldmethod' 设为 "manual" 或 "marker" 时有效。)
“所有”的折叠

窗口操作
水平分隔                                split
垂直分隔                                vsplit
新建一个窗口                         new
关闭当前窗口                         close
关闭其它窗口                         only
增加当前窗口高度                   Ctrl+W +
减小当前窗口高度                  Ctrl+W -
指定固定高度                        {height}Ctrl+W _
切换活动窗口                         Ctrl+W w   或 Ctrl+W Ctrl+W
到左边窗口                            Ctrl+W h
到右边窗口                            Ctrl+W l
到上边窗口                            Ctrl+W k
到下边窗口                            Ctrl+W j
到顶部窗口                            Ctrl+W t
到底部窗口                            Ctrl+W b

排版
向右缩进                                >>
向左缩进                                <<

右移当前行所在的{....}             >i}
内的所有代码(不含"{"和"}")
一个shiftwidth个空格
<i{  相反 <i} 一样效果

右移当前行所在的{....}             >a}  
内的所有代码(含"{"和"}")
一个shiftwidth个空格
<a{  相反 <a} 一样效果

大小写转换
行小写                                     guu
行大写                                     gUU
行翻转                                     g~~

标签页Vim在7以后的版本,开始支持标签页的功能
新建一个标签                        :tabnew
转到下一个标签                     :tabnext
转到上一个标签                     :tabprevious

标签 mark--方便跳来跳去

m 标签指令,mx把当前位置标为x, x 可为 a-z A-Z
'x 跳至标签为 x 所在行的行首非空白处
`x 跳至标签为 x 所在行标签时的位置

编辑多个文件

:n 下一个文件
:N 上一个文件
:first 第一个文件
:last 最后一个文件
:qa  全部退出

映射表
:map                                 Normal, Visual and Operator-pending
:vmap                               Visual
:nmap                               Normal
:omap                               Operator-pending
:map!                                Insert and Command-line
:imap                                Insert
:cmap                               Command-line
<silent>                            不在命令行上显示该映射

例子:
映射< 为 <>
:imap < x<Esc>r<a><Esc>ha



本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/xuzhihong_gdut/archive/2009/01/15/3788220.aspx
无意间想看一下各个门户网站所使用的编码,于是习惯性的用自己写的HTTP调试工具来看。

新浪、网易、搜狐这中国互联网原生的3个大佬,都是gb2312的页面编码。

web服务器方面来看,网易用了nginx,sohu和sina用的是apache,sina是2.0,sohu是1.3

web服务器架构上来看,三个都用了squid来做前端缓冲,至于是否使用负载均衡的软硬件就无法探测得知了。

从此可见,技术领先上,网易第一,新浪次之,sohu最土。而从他们的经营情况来看,也是这个排序。

互联网是一个新技术几乎每时每刻都出现的行业领域,每一次有重大的新技术出现,如果能对现有环境产生巨大改变的,那必然会造就一个时代的英雄出来,网易是,borland是,Google是,就连微软和Oracle都是,占据技术制高点,是成功的法宝!IT企业在技术方面的投入多少,也侧面反映了他们能走到的高度情况。当然这里的前提是非盲目性投资,盲目的投资就像土财主买了个MBA证书一样的可笑。

后话,至于UTF8编码他们都没采用,也能想得通,如果全更换为UTF8,他们的带宽和系统负载需要提高将近一倍,而他们的受众群体都是华人,明显得不偿失。
404不正确页面的优势可能在于不用调用Rewrite模块,Rewrite须要调用此模块。因此404不正确页面可能会更节省资源,使大型站点的速度更快一些。我编写的静态化网页,目前大多数都是运用 404不正确。

  运用 404不正确页面,不能被POST和GET。例如305.php?name1=auiou,假如此305.php页面是用404不正确产生,则此$_GET["name1"]的值不会被读取。其它页面的
运用 POST要领将action指向此404不正确产生的305.php,也不能被接收,例如所发送的信息不能被305.php接收。

  如果您希望产生的虚拟路径如305.php被POST和GET,运用 Rewrite可处理。

  404不正确页面的开头有一些Linux空间必须写入这句,有一些Linux空间则必须写为才可以被搜索引擎收入,否则会被认为是404页面。调试时,可以在网上搜索“404 检测工具”执行 测试。

  Rewrite能不能须要写语句,我还没有测试过。

  404不正确页面的准则相对不严格,因此有更好的适应范围。Rewrite相对更严格,例如305.html与305-1.html须要写2个重写准则;运用 404不正确页面只要一个准则即可。这也是我运用 404不正确,而不运用 Rewrite的另一个主要原由。


#RewriteRule ^(.*)$ [L,r=404]
#RewriteRule ^(.*)$ - [L,r=404]
RewriteRule ^(.*)$ /error404.html [L,r=404]


我是这么写的:

RewriteRule /con/user/act/gift  [L,R=404]
[L,R=404]// # NOTE! FOR APACHE ON WINDOWS
为了使Apache更加平滑地从1.3版升级到2.0版,Apache开发团队做了很多工作。目前很多重要的模块已经可以很好地支持2.0版,如PHP、FastCGI、Mod_perl、Mod_python等。在httpd.conf的指令配置语法上,目前的2.0版(2.0.45)与1.3版的兼容性已做得相当好。比如,以前的2.0版如果要使用PHP,一般用过滤器实现;现在的PHP官方文档中已经使用1.3版中的LoadModule语句做为加载PHP的推荐方式。只要略微了解一下Apache 2.0的新特性,从1.3版升级到2.0版将是一件非常容易的事情。使用Apache 2.0是大势所趋,因为Apache的开发团队已经把开发重心转移到2.0版上。1.3版自2002年10月发布了1.3.27后一直没有新版本推出,而2.0版在与1.3.27同时发布2.0.43后,在今年1月发布了2.0.44,并于今年3月末发布了2.0.45,并包含了很多改进和修正。

  MPM的引入带来性能改善

  Apache 2.0在性能上的改善最吸引人。在支持POSIX线程的Unix系统上,Apache可以通过不同的MPM运行在一种多进程与多线程相混合的模式下,增强部分配置的可扩充性能。相比于Apache 1.3,2.0版本做了大量的优化来提升处理能力和可伸缩性,并且大多数改进在默认状态下即可生效。但是在编译和运行时刻,2.0也有许多可以显著提高性能的选择。本文不想叙述那些以功能换取速度的指令,如HostnameLookups等,而只是说明在2.0中影响性能的最核心特性:MPM(Multi-Processing Modules,多道处理模块)的基本工作原理和配置指令。

  毫不夸张地说,MPM的引入是Apache 2.0最重要的变化。大家知道,Apache是基于模块化的设计,而Apache 2.0更扩展了模块化设计到Web服务器的最基本功能。服务器装载了一种多道处理模块,负责绑定本机网络端口、接受请求,并调度子进程来处理请求。扩展模块化设计有两个重要好处:

  ◆ Apache可以更简洁、有效地支持多种操作系统;

  ◆ 服务器可以按站点的特殊需要进行自定制。

  在用户级,MPM看起来和其它Apache模块非常类似。主要区别是在任意时刻只能有一种MPM被装载到服务器中。

  指定MPM的方法

  下面以Red Hat Linux 9为平台,说明在Apache 2.0中如何指定MPM (Apache采用2.0.45)。先解压缩源代码包httpd-2.0.45.tar.gz,生成httpd-2.0.45目录(Apache 1.3源代码包的命名规则是apache_1.3.NN.tar.gz,而2.0版则是httpd-2.0.NN.tar.gz,其中NN是次版本号)。

  进入httpd-2.0.45目录,运行以下代码:


$ ./configure --help|grep mpm





  显示如下:


--with-mpm=MPM Choose the process model for Apache to use. MPM={beos|worker|prefork|mpmt_os2| perchild|leader|threadpool}




  上述操作用来选择要使用的进程模型,即哪种MPM模块。Beos、mpmt_os2分别是BeOS和OS/2上缺省的MPM,perchild主要设计目的是以不同的用户和组的身份来运行不同的子进程。这在运行多个需要CGI的虚拟主机时特别有用,会比1.3版中的SuExec机制做得更好。leader和threadpool都是基于worker的变体,还处于实验性阶段,某些情况下并不会按照预期设想的那样工作,所以Apache官方也并不推荐使用。因此,我们主要阐述prefork和worker这两种和性能关系最大的产品级MPM ( 有关其它的MPM详细说明,请参见Apache官方文档:http://httpd.apache.org/docs-2.0/mod/)。

  prefork的工作原理及配置

  如果不用“--with-mpm”显式指定某种MPM,prefork就是Unix平台上缺省的MPM。它所采用的预派生子进程方式也是Apache 1.3中采用的模式。prefork本身并没有使用到线程,2.0版使用它是为了与1.3版保持兼容性;另一方面,prefork用单独的子进程来处理不同的请求,进程之间是彼此独立的,这也使其成为最稳定的MPM之一。

  若使用prefork,在make编译和make install安装后,使用“httpd -l”来确定当前使用的MPM,应该会看到prefork.c(如果看到worker.c说明使用的是worker MPM,依此类推)。再查看缺省生成的httpd.conf配置文件,里面包含如下配置段:


<IfModule prefork.c>

StartServers 5

MinSpareServers 5

MaxSpareServers 10

MaxClients 150

MaxRequestsPerChild 0

</IfModule>





  prefork的工作原理是,控制进程在最初建立“StartServers”个子进程后,为了满足MinSpareServers设置的需要创建一个进程,等待一秒钟,继续创建两个,再等待一秒钟,继续创建四个……如此按指数级增加创建的进程数,最多达到每秒32个,直到满足MinSpareServers设置的值为止。这就是预派生(prefork)的由来。这种模式可以不必在请求到来时再产生新的进程,从而减小了系统开销以增加性能。

  MaxSpareServers设置了最大的空闲进程数,如果空闲进程数大于这个值,Apache会自动kill掉一些多余进程。这个值不要设得过大,但如果设的值比MinSpareServers小,Apache会自动把其调整为MinSpareServers+1。如果站点负载较大,可考虑同时加大MinSpareServers和MaxSpareServers。

  MaxRequestsPerChild设置的是每个子进程可处理的请求数。每个子进程在处理了“MaxRequestsPerChild”个请求后将自动销毁。0意味着无限,即子进程永不销毁。虽然缺省设为0可以使每个子进程处理更多的请求,但如果设成非零值也有两点重要的好处:

  ◆ 可防止意外的内存泄漏;

  ◆ 在服务器负载下降的时侯会自动减少子进程数。

  因此,可根据服务器的负载来调整这个值。笔者认为10000左右比较合适。

  MaxClients是这些指令中最为重要的一个,设定的是Apache可以同时处理的请求,是对Apache性能影响最大的参数。其缺省值150是远远不够的,如果请求总数已达到这个值(可通过ps -ef|grep http|wc -l来确认),那么后面的请求就要排队,直到某个已处理请求完毕。这就是系统资源还剩下很多而HTTP访问却很慢的主要原因。系统管理员可以根据硬件配置和负载情况来动态调整这个值。虽然理论上这个值越大,可以处理的请求就越多,但Apache默认的限制不能大于256。如果把这个值设为大于256,那么Apache将无法起动。事实上,256对于负载稍重的站点也是不够的。在Apache 1.3中,这是个硬限制。如果要加大这个值,必须在“configure”前手工修改的源代码树下的src/include/httpd.h中查找256,就会发现“#define HARD_SERVER_LIMIT 256”这行。把256改为要增大的值(如4000),然后重新编译Apache即可。在Apache 2.0中新加入了ServerLimit指令,使得无须重编译Apache就可以加大MaxClients。下面是笔者的prefork配置段:


<IfModule prefork.c> StartServers 10 MinSpareServers 10 MaxSpareServers 15 ServerLimit 2000 MaxClients 1000 MaxRequestsPerChild 10000 </IfModule>




  上述配置中,ServerLimit的最大值是20000,对于大多数站点已经足够。如果一定要再加大这个数值,对位于源代码树下server/mpm/prefork/prefork.c中以下两行做相应修改即可:


1.define DEFAULT_SERVER_LIMIT 256
2.define MAX_SERVER_LIMIT 20000



  worker的工作原理及配置

  相对于prefork,worker是2.0 版中全新的支持多线程和多进程混合模型的MPM。由于使用线程来处理,钥梢源硐喽院A康那肭螅低匙试吹目∮诨诮痰姆衿鳌5牵瑆orker也使用了多进程,每个进程又生成多个线程,以获得基于进程服务器的稳定性。这种MPM的工作方式将是Apache 2.0的发展趋势。

  在configure -with-mpm=worker后,进行make编译、make install安装。在缺省生成的httpd.conf中有以下配置段:


<IfModule worker.c> StartServers 2 MaxClients 150 MinSpareThreads 25 MaxSpareThreads 75 ThreadsPerChild 25 MaxRequestsPerChild 0 </IfModule>





  worker的工作原理是,由主控制进程生成“StartServers”个子进程,每个子进程中包含固定的ThreadsPerChild线程数,各个线程独立地处理请求。同样,为了不在请求到来时再生成线程,MinSpareThreads和MaxSpareThreads设置了最少和最多的空闲线程数;而MaxClients设置了所有子进程中的线程总数。如果现有子进程中的线程总数不能满足负载,控制进程将派生新的子进程。

  MinSpareThreads和MaxSpareThreads的最大缺省值分别是75和250。这两个参数对Apache的性能影响并不大,可以按照实际情况相应调节。

  ThreadsPerChild是worker MPM中与性能相关最密切的指令。ThreadsPerChild的最大缺省值是64,如果负载较大,64也是不够的。这时要显式使用ThreadLimit指令,它的最大缺省值是20000。上述两个值位于源码树server/mpm/worker/worker.c中的以下两行:


1.define DEFAULT_THREAD_LIMIT 64
2.define MAX_THREAD_LIMIT 20000



  这两行对应着ThreadsPerChild和ThreadLimit的限制数。最好在configure之前就把64改成所希望的值。注意,不要把这两个值设得太高,超过系统的处理能力,从而因Apache不起动使系统很不稳定。

  Worker模式下所能同时处理的请求总数是由子进程总数乘以ThreadsPerChild值决定的,应该大于等于MaxClients。如果负载很大,现有的子进程数不能满足时,控制进程会派生新的子进程。默认最大的子进程总数是16,加大时也需要显式声明ServerLimit(最大值是20000)。这两个值位于源码树server/mpm/worker/worker.c中的以下两行:


1.define DEFAULT_SERVER_LIMIT 16
2.define MAX_SERVER_LIMIT 20000




  需要注意的是,如果显式声明了ServerLimit,那么它乘以ThreadsPerChild的值必须大于等于MaxClients,而且MaxClients必须是ThreadsPerChild的整数倍,否则Apache将会自动调节到一个相应值(可能是个非期望值)。下面是笔者的worker配置段:


<IfModule worker.c>

StartServers 3

MaxClients 2000

ServerLimit 25

MinSpareThreads 50

MaxSpareThreads 200

ThreadLimit 200

ThreadsPerChild 100

MaxRequestsPerChild 0

</IfModule>





  通过上面的叙述,可以了解到Apache 2.0中prefork和worker这两个重要MPM的工作原理,并可根据实际情况来配置Apache相关的核心参数,以获得最大的性能和稳定性。

我的配置:

<IfModule prefork.c>
StartServers         150
MinSpareServers      100
MaxSpareServers      150
ServerLimit         6193
#ServerLimit         2150
MaxClients         824
#MaxClients         600
MaxRequestsPerChild  0
</IfModule>
------以下引用php手册内容--------------

bool setcookie ( string name [, string value [, int expire [, string path [, string domain [, bool secure]]]]] )


要删除 cookie 需要确保它的失效期是在过去,才能触发浏览器的删除机制。
下面的例子说明了如何删除刚才设置的 cookie: 例子 2. setcookie() 删除
例子

// 将过期时间设为一小时前

setcookie("TestCookie", "", time() - 3600);
setcookie("TestCookie", "", time() - 3600, "/~rasmus/", ".utoronto.ca", 1);
----------------引用结束--------------------------

 删除一个cookie的方法就是把这个cookie的有效期设置为当前时间以前,这
也是几乎所有php程序员都会这么做。

  后来一个初接触php的朋友告诉我,他在程序中本想把一个cookie的值设置为
空,结果导致这个cookie直接被删除。我当时的第一反应是不相信,于是测试
了一下
setcookie("testcookie", '');
print_r($_COOKIE);
结果果然是整个$_COOKIE数组都是空的,而非仅仅$_COOKIE['testcookie']为
空.于是用winsock抓包,观察返回的http头,发现http头竟然是
Set-Cookie: testcookie=deleted; expires=Mon, 18-Jun-2007 02:42:33 GMT

这说明setcookie("testcookie", '');的的确确是将testcookie这个cookie直
接删除.而关于这种情况在php手册中完全没有说明.

最后阅读php源码,终于发现真相(这就是开源的好处了,有什么不清楚的内幕
直接查源码)

以下代码可以在php5.20的linux源码包中ext/standard/head.c第99行附近找到.


if (value && value_len == 0) {
    /*
     * MSIE doesn't delete a cookie when you set it to a null value
     * so in order to force cookies to be deleted, even on MSIE, we
     * pick an expiry date 1 year and 1 second in the past
     */
    time_t t = time(NULL) - 31536001;
    dt = php_format_date("D, d-M-Y H:i:s T", sizeof("D, d-M-Y H:i:s T")-1, t, 0 TSRMLS_CC);
    sprintf(cookie, "Set-Cookie: %s=deleted; expires=%s", name, dt);
    efree(dt);
    } else {
    sprintf(cookie, "Set-Cookie: %s=%s", name, value ? encoded_value : "");
    if (expires > 0) {
    strcat(cookie, "; expires=");
    dt = php_format_date("D, d-M-Y H:i:s T", sizeof("D, d-M-Y H:i:s T")-1, expires, 0 TSRMLS_CC);
    strcat(cookie, dt);
    efree(dt);
    }
    }


 源码中清清楚楚的显示,if (value && value_len == 0) ,当value_len为0


sprintf(cookie, "Set-Cookie: %s=deleted; expires=%s", name, dt);
会发送删除cookie的http头给浏览器.

 最后我们可以得出结论,在php中使用

setcookie($cookiename, '');或者 setcookie($cookiename, NULL);
都会删除cookie,当然这些手册中并没有。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>CSS + jQuery 个性化的下拉框效果 by www.865171.cn</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" type="text/javascript"></script>
<style type="text/css">
  body { font-family:Arial, Helvetica, Sans-Serif; font-size:0.75em; color:#000;}
  .desc { color:#6b6b6b;}
  .desc a {color:#0092dd;}
  .dropdown dd, .dropdown dt, .dropdown ul { margin:0px; padding:0px; }
  .dropdown dd { position:relative; }
  .dropdown a, .dropdown a:visited { color:#816c5b; text-decoration:none; outline:none;}
  .dropdown a:hover { color:#5d4617;}
  .dropdown dt a:hover { color:#5d4617; border: 1px solid #d0c9af;}
  .dropdown dt a {background:#e4dfcb url(arrow.png) no-repeat scroll right center; display:block; padding-right:20px;
          border:1px solid #d4ca9a; width:150px;}
  .dropdown dt a span {cursor:pointer; display:block; padding:5px;}
  .dropdown dd ul { background:#e4dfcb none repeat scroll 0 0; border:1px solid #d4ca9a; color:#C5C0B0; display:none;
            left:0px; padding:5px 0px; position:absolute; top:2px; width:auto; min-width:170px; list-style:none;}
  .dropdown span.value { display:none;}
  .dropdown dd ul li a { padding:5px; display:block;}
  .dropdown dd ul li a:hover { background-color:#d0c9af;}
  .dropdown img.flag { border:none; vertical-align:middle; margin-left:10px; }
  .flagvisibility { display:none;}
</style>
<script type="text/javascript">
  $(document).ready(function() {
    $(".dropdown img.flag").addClass("flagvisibility");
    $(".dropdown dt a").click(function() {
      $(".dropdown dd ul").toggle();
    });    
    $(".dropdown dd ul li a").click(function() {
      var text = $(this).html();
      $(".dropdown dt a span").html(text);
      $(".dropdown dd ul").hide();
      $("#result").html("Selected value is: " + getSelectedValue("sample"));
    });    
    function getSelectedValue(id) {
      return $("#" + id).find("dt a span.value").html();
    }
    $(document).bind('click', function(e) {
      var $clicked = $(e.target);
      if (! $clicked.parents().hasClass("dropdown"))
        $(".dropdown dd ul").hide();
    });
    $("#flagSwitcher").click(function() {
      $(".dropdown img.flag").toggleClass("flagvisibility");
    });
  });
</script>
</head>
<body>
<h1>CSS + jQuery 个性化的下拉框效果</h1>
<h3><a href="http://www.865171.cn/css-code/">更多CSS代码实例</a></h3>

<dl id="sample" class="dropdown">
  <dt><a href="#"><span>Please select the country</span></a></dt>
  <dd>
    <ul>
      <li><a href="#">Brazil<img class="flag" src="br.png" /><span class="value">BR</span></a></li>
      <li><a href="#">France<img class="flag" src="fr.png" /><span class="value">FR</span></a></li>
      <li><a href="#">Germany<img class="flag" src="de.png" /><span class="value">DE</span></a></li>

      <li><a href="#">India<img class="flag" src="in.png" /><span class="value">IN</span></a></li>
      <li><a href="#">Japan<img class="flag" src="jp.png" /><span class="value">JP</span></a></li>
      <li><a href="#">Serbia<img class="flag" src="cs.png" /><span class="value">CS</span></a></li>
      <li><a href="#">United Kingdom<img class="flag" src="gb.png" /><span class="value">UK</span></a></li>
      <li><a href="#">United States<img class="flag" src="us.png" /><span class="value">US</span></a></li>

    </ul>
  </dd>
</dl>
<span id="result"></span>
</body>
</html>
前面是原文件,第二参数是软链接的符号链接文件:
ln [OPTION]... [-T] TARGET LINK_NAME   (1st form)  #man ln
ln -s /etc/issue /tmp/issue.soft :创建/etc/issue文件的软链接/tmp/issue.soft
ln /etc/issue /tmp/issue.hard:创建/etc/issue文件的硬链接/tmp/issue.hard

ln -sf  /home/xiangdong/spec/centos7  SPECS  #不用建SPECS,是源链接、新的目录, SPECS -> /home/xiangdong/spec/centos7
备注:软链接是左边是存在待被指向的实体文件,右边是软链接的软链接文件(仅仅是一个链接文件)。

-f, --force                 remove existing destination files
ln -sf /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -sf /usr/local/openssl/include/openssl/ /usr/include/openssl


对于一个文件来说,有唯一的索引接点与之对应,而对于一个索引接点号,却可以有多个文件名与之对应。因此,在磁盘上的同一个文件可以通过不同的路径去访问该文件。
  1.连接有软连接和硬连接(hard link)之分的,软连接(symbolic link)又叫符号连接。符号连接相当于Windows下的快捷方式。 软链接实际上只是一段文字,里面包含着它所指向的文件的名字,系统看到软链接后自动跳到对应的文件位置处进行处理。
Shell代码

   1. ln -s source dist        # 建立软连接  

ln -s  /home/jackxiang/mhxy20*hn.act/htdocs mhxy20*hn.act  //实际目录  ,软目录 的顺序


ln -s source dist        # 建立软连接


  2. 硬连接可以看作是同一个文件的不同命名。 硬联接为文件开设一个新的目录项,硬链接与文件原有的名字是平权的,在Linux看来它们是等价的。由于这个原因,硬链接不能连接两个不同文件系统上的文件。 不可以对文件夹建立硬连接的,通常用的还是软连接比较多。
Shell代码

   1. ln source dist            # 建立硬连接  
------Finger

一般来说,tcp正常关闭需要四个包。比如a和b关闭连接,a先 给b发一个fin,b会进行确认ack,然后b也会发出fin,当a接受到这个fin,并发出最后一个ack后,就会处于time_wait状态。这个时 间长短跟操作系统有关,一般会在1-4分钟,也就是两倍的数据包(2msl)最大生存时间。TCP主动关闭方采用TIME_WAIT主要是为了实现终止 TCP全双工连接的可靠性及允许老的重复分节在网络中消逝,等过了2msl(大约1~4分钟)后TIME_WAIT就会消失。    
TIME_WAIT状态的目的是为了防止最后a发出的ack丢失,让b处于LAST_ACK超时重发FIN



点击在新窗口中浏览此图片

所以说,主动发起关闭连接的一方会进入time_wait状态,这个时候,进程所占用的端口号不能被释放。除非在你的程序中用setsockopt设置端口可重用(SOCK_REUSE)的选项,但这不是所有操作系统都支持的


   解决TIME_WAIT的办法主要有以下几种:    


   1、修改LINGER值,缩短关闭时间
   LINGER    lingerStruct;
   lingerStruct.l_onoff    =    1;
   lingerStruct.l_linger     =    0;
   setsockopt(m_socket,SOL_SOCKET,SO_LINGER,(char *)&lingerStruct,sizeof(lingerStruct));
   不过这种办法不是很安全的,不过现在网络都很好啦,不会有问题的。

   2、修改注册表
   [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Tcpip\Parameters]
   "TcpTimedWaitDelay"=dword:00000005
   这个值好像是300秒到30秒之间,改成30秒后你会发现TIME_WAIT很快就会消失了。


   3、禁用LINGER
   //如果你使用的是Socket API,可以这样
   BOOL bDontLinger=FALSE;      
   setsockopt(m_socket,SOL_SOCKET,SO_DONTLINGER,(LPCTSTR)&bDontLinger,sizeof(BOOL));
   closesocket(s);

   //如果你使用的是CAsyncSocket,需要响应的修改,例如禁用LINGER可以这样
   BOOL bDontLinger=FALSE;    
   m_socket->SetSockOpt(SO_DONTLINGER,(const char *)&bDontLinger,sizeof(bDontLinger),SOL_SOCKET);
   m_socket->Close();

   4、客户端可以不BIND(),这样,即使断开连接后再次连接,SOCKET将使用不同的端口(1025-5000),
   等几分钟后,原有的端口就会自动关闭。

关闭BITCOMET后系统出现的几个TCP状态
点击在新窗口中浏览此图片
点击在新窗口中浏览此图片
在日常的软件开发当中,我们一般都是采用了分层的方式来架构系统,但是为什么我们需要分层进行架构呢?在此之前,我觉得需要搞明白两个概念,什么是软件的伸缩性,什么是性能。

首先,什么是软件的伸缩性(Scalability)?我们都知道设计良好的系统可以应对不断增加的系统访问量,但是我们如何能在系统用户增多的时候,来提高系统的吞吐量呢?这就是伸缩性之魅力所在。

伸缩性可以有两个方面,垂直伸缩性和水平伸缩性,垂直伸缩性是通过在同一个业务单元中增加资源来提高系统的吞吐量,比如增加服务器cpu的数量,增加服务器的内存等。水平伸缩性是通过增加多个业务单元资源,使得所有的业务单元逻辑上就像是一个单元一样。比如EJB分布式组件模型,集群配置等都属于此种方式。

下面我说一下,我对性能的理解,我们在日常的开发当中,当说到性能的时候,一般都会首先想到系统有多“快”,我想说的就是性能还涉及到另一个方面,那就是系统有“多少”,也就是说系统的吞吐量。我们在考虑性能的时候,一般都会考虑到这两方面。

理解了伸缩性和性能这两个概念以后,我们来看看系统为什么需要分层架构。

首先采用分层架构的好处,我想大家肯定都会普遍接受的是,系统分层有利于系统的维护,系统的扩展。这其实就是系统的可维护性和可扩展性。

其次,我围绕伸缩性以及性能来说一下,为什么需要分层架构。比如在目前的J2EE系统开发当中,我们普遍采用了分层构架的方式,一般分为表现层,业务层和持久层,当然了我们还可以对各层进行进一步的划分,但是层次划分也不能太细,具体项目要具体对待,原因下面讨论。我们想想,采用分层以后会带来什么不好的地方?想这个问题,我们可以先反过来想一下,不采用分层有什么好处,这当然是每个业务处理速度会更快,因为层与层之间通信会引来额外的开销,所以采用分层后,给我们软件系统带来的就是每个业务处理开销会变大。

好了,既然采用分层会带来额外的开销,那么我们为什么还要进行分层呢?这就涉及到了伸缩性和性能的问题。

如果不采用分层的话,系统的扩展和伸缩也主要靠垂直伸缩,但是垂直伸缩是有限度的,随着系统规模的扩大,垂直伸缩带来的代价也将变得非常昂贵。当采用了分层以后,虽然带来了层与层之间的通信开销(这得益于计算机硬件的飞快发展,如果计算机硬件的发展水平不足以抵消分层以后带来的额外的开销,那么分层架构也会有一个巨大的问号,所以从某种程度上来说,分层架构也利用了一点垂直伸缩性),但是它有利于层的水平伸缩性,并且各个层都可以进行独立的伸缩而不会影响到其它的层,比如EJB分布式组件模型以及目前采用的分成架构的方式就有利于水平伸缩性,

对于性能方面,我上面也说了,性能存在两个方面,一是“快”,二是“多少”,采用分层架构,当然会影响到性能快的方面,因为层次之间通信会带来额外的开销,但是采用了分层架构后,我们的软件系统可以更容易变大(“多少”的问题),也就是说当系统要应对更大的访问量的时候,我们可以通过增加多个业务单元资源(此时的多个业务单元逻辑上看起来就像一个逻辑单元,这对外界是透明的)来增加系统吞吐量。所以对于那些实时性比较高的系统,层的划分不应该太细,太细必然带来实时性的减低,而对于实时性不高,而需要高度的伸缩性的系统,我们可以通过引入不同的层来达到系统水平伸缩的目的。

以上是有关伸缩性和性能,以及它们与分层架构之间的联系,下面我再说一下另外一个问题,这就是Amdahl law(阿姆达尔定律),这个定理主要说明了系统中串行部分对系统速度提升的影响,假设程序中串行部分占a%的比例,那么程序最多提升1/a%的速度。我从这个定律也看出了,软件垂直伸缩的局限性,因为无论增加多少个cpu,如果程序中有串行化的部分,那么程序的速度的提升是有一个极限的,是不能靠增加硬件来无限度的增强系统性能的。所以对于我们软件工程师来说,我们更加需要关注系统的水平伸缩性。
C51RF-WSN-CC2430教学系统:
http://www.rfidworld.com.cn/blog/u/83192/archives/2009/4390.html
做好的半成品ds18B20:
http://www.dongfangic.com/product/8000%5Cfae60cd3bcceaa76.html


http://hi.baidu.com/liweidiy/blog/item/0760e901348fdf071c9583e7.html
有贴子说httpd和mysql在FREEBSD下的性能远不如在LINUX下?
但是很多论坛都有前辈说啊…… 说什么线程啊,什么 的…… MYSQL什么的………

--------------------------------------------------------------------------------

好象没有听说啊,只知道FreeBSD的文件系统性能要差一点
为什么要用它,这怎么说,它存在就有它存在的理由,一般它较为保守,不具有象LINUX那么多的新特性

--------------------------------------------------------------------------------
完全不懂…… 这个MySQL with LinuxThreads 在FREEBSD下性能好的和在LINUX下一样的说??

关键是稳定性!我还是这个观点,再不同的帖子里给你说同样的话,BSD的性能也许不是最好的,但是他的稳定性绝对是最好的!!!

而且BSD的性能到底如何也不是一个人说了算,不同的系统可以根据不同的需要来进行不同的优化.


This is an issue that comes up all the time at work. It is an issue for roughly four reasons:

Yahoo is a FreeBSD shop
Someone has heard that MySQL runs better on Linux
Someone knows that we run some of our servers on Linux rather than FreeBSD, and Yahoo is a FreeBSD shop (see #1), so they start to infer #2.
Most of the MySQL development is done on Linux and Windows. The only "FreeBSD guy" at MySQL AB seems to have left sometime in the last year or so.
This is an attempt to answer that question for folks at work and elsewhere.

The Short Version阅读全文
http://www.cnblogs.com/meil/archive/2007/09/14/875874.html

正则表达式再次让我震撼,寥寥数行代码就可以完成普通代码不易实现的功能,至少是实现起来比较复杂的功能。

一、清楚内容中的Javsscript 代码

1 Function ClearJSCode(originCode)
2
3   Dim reg
4
5   set reg = New RegExp
6
7   reg.Pattern = "<SCRIPT[^<]*</SCRIPT>"
8   reg.IgnoreCase = True
9   reg.Global = True
10
11   clearJSCode = reg.Replace(originCode, "")
12
13 End Function
14
二、清除内容中的HTML代码

1 Function ClearHTMLCode(originCode)
2
3     Dim reg
4     set reg = new RegExp
5
6     reg.Pattern = "<[^>]*>"
7     reg.IgnoreCase = True
8     reg.Global = True
9  
10     ClearHTMLCode = reg.Replace(originCode, "")
11
12 End Function
13

现在好多网站的内容都是使用采集程序生成的,使用上边的代码就可以轻松的将内容中的HTML和JS代码清除掉。
html为checkBox和radio添加label  
为checkbox或者radio加上label,让对label中文字的点击也同时对checkbox/radio生效:

<input type="checkbox" name="tstCheckBox" id="cbox"><label for="cbox">for checkbox</lable>
<br />
<input type="radio" name="tstradio" id="radio"><label for="radio">for radio</label>
参考:http://blog.longwin.com.tw/2005/04/html_label_radio_bottom/
真正的用PHP的smarty来做是这样的:
---------------------------------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------------------------------
Label标识有两个属性,一个是FOR,一个是ACCESSKEY。

FOR的意思是,这个Lable是为哪个控件服务的;
ACCESSKEY则定义了访问这个控件的热键。
比如,有一个名字叫Name的文本框,<INPUT TYPE="TEXT" ID="Name" SIZE=30>,
那么,<label>就可以定义成:<LABEL FOR="Name" ACCESSKEY="N">姓  名(<U>N</U>):</LABEL>。
可以看见,这个<Label>是为那个ID为“Name”控件服务的,而ACESSKEY则定义了,这访问这个控件的热键为“Alt+N”。


1<LABEL FOR="txtName" ACCESSKEY="N">姓  名(<U>N</U>):</LABEL>
2<INPUT TYPE="TEXT" ID="txtName" SIZE=30>Meil<br>
3
4<LABEL FOR="txtUrl" ACCESSKEY="U">个人主页(<U>U</U>):</LABEL>
5<INPUT TYPE="TEXT" ID="txtUrl" SIZE=30>http://www.livebaby.cn<br>
6
7<LABEL FOR="txtPhonebox" ACCESSKEY="P">联系电话(<U>P</U>):</LABEL>
8<INPUT TYPE="TEXT" ID="txtPhonebox" SIZE=30> <br>
9
10<LABEL FOR="areabox" ACCESSKEY="S" >留  言(<U>S</U>):</LABEL>
11<TEXTAREA ID="areabox" COLS="30" ROWS="3"></TEXTAREA>


  单选钮、复选框都要点击控件才能选中控件,而如果使用<label>标识就可以实现点击文字选取。

点击文字可以选取的多项选择框:


1<input type="CHECKBOX" id="chk1" value="often" name="chkoften">
2<label for="chk1" >经常来这里</label>
3<input type="CHECKBOX" id="chk2" value="seldom" name="chkseldom">
4<label for="chk2" >偶尔来看看</label>
带热键的多项选择框:
1<input type="CHECKBOX" id="chk3" value="often" name="chkoften">
2<label for="chk3" ACCESSKEY="H">经常来这里(<U>H</U>)</label>
3<input type="CHECKBOX" id="chk4" value="seldom" name="chkseldom">
4<label for="chk4" ACCESSKEY="L">偶尔来看看(<U>L</U>)</label>


===========================
例如,在 XHTML 中:

显式的联系:
<label for="SSN">Social Security Number:</label>
<input type="text" name="SocSecNum" id="SSn" />

隐式的联系:
<label>Date of Birth: <input type="text" name="DofB" /></label>
  FTP命令是Internet用户使用最频繁的命令之一,不论是在DOS还是UNIX操作系统下使用FTP,都会遇到大量的FTP内部命令。熟悉并灵活应用FTP的内部命令,可以大大方便使用者,并收到事半功倍之效。

  FTP的命令行格式为:ftp -v -d -i -n -g [主机名],其中

  -v:显示远程服务器的所有响应信息;

  -n:限制ftp的自动登录,即不使用;

  .n: etrc文件;

  -d:使用调试方式;

  -g:取消全局文件名。

  FTP内部命令格式(中括号表示可选项):

  1.![cmd[args]]:在本地机中执行交互shell,exit回到ftp环境,如:!ls*.zip.

  2.$ macro-ame[args]:执行宏定义macro-name.

  3.account[password]:提供登录远程系统成功后访问系统资源所需的补充口令。

  4.append local-file[remote-file]:将本地文件追加到远程系统主机,若未指定远程系统文件名,则使用本地文件名。

  5.ascii:使用ascii类型传输方式。

  6.bell:每个命令执行完毕后计算机响铃一次。

  7.bin:使用二进制文件传输方式。

  8.bye:退出ftp会话过程。

  9.case:在使用mget时,将远程主机文件名中的大写转为小写字母。

  10.cd remote-dir:进入远程主机目录。

  11.cdup:进入远程主机目录的父目录。

  12.chmod mode file-name:将远程主机文件file-name的存取方式设置为mode,如:chmod 777 a.out。

  13.close:中断与远程服务器的ftp会话(与open对应)。

  14.cr:使用asscii方式传输文件时,将回车换行转换为回行。

  15.delete remote-file:删除远程主机文件。

  16.debug[debug-value]:设置调试方式,显示发送至远程主机的每条命令,如:deb up 3,若设为0,表示取消debug。

  17.dir[remote-dir][local-file]:显示远程主机目录,并将结果存入本地文件local-file。

  18.disconnection:同close。

  19.form format:将文件传输方式设置为format,缺省为file方式。

  20.get remote-file[local-file]:将远程主机的文件remote-file传至本地硬盘的local-file。

  21.glob:设置mdelete,mget,mput的文件名扩展,缺省时不扩展文件名,同命令行的-g参数。

  22.hash:每传输1024字节,显示一个hash符号(#)。

  23.help[cmd]:显示ftp内部命令cmd的帮助信息,如:help get。

  24.idle[seconds]:将远程服务器的休眠计时器设为[seconds]秒。

  25.image:设置二进制传输方式(同binary)。

  26.lcd[dir]:将本地工作目录切换至dir。

  27.ls[remote-dir][local-file]:显示远程目录remote-dir,并存入本地文件local-file。

  28.macdef macro-name:定义一个宏,遇到macdef下的空行时,宏定义结束。

  29.mdelete[remote-file]:删除远程主机文件。

  30.mdir remote-files local-file:与dir类似,但可指定多个远程文件,如:mdir *.o.*.zipoutfile

  31.mget remote-files:传输多个远程文件。

  32.mkdir dir-name:在远程主机中建一目录。

  33.mls remote-file local-file:同nlist,但可指定多个文件名。

  34.mode[modename]:将文件传输方式设置为modename,缺省为stream方式。

  35.modtime file-name:显示远程主机文件的最后修改时间。

  36.mput local-file:将多个文件传输至远程主机。

  37.newer file-name:如果远程机中file-name的修改时间比本地硬盘同名文件的时间更近,则重传该文件。

  38.nlist[remote-dir][local-file]:显示远程主机目录的文件清单,并存入本地硬盘的local-file。

  39.nmap[inpattern outpattern]:设置文件名映射机制,使得文件传输时,文件中的某些字符相互转换,
       如:nmap $1.$2.$3[$1,$2].[$2,$3],则传输文件a1.a2.a3时,文件名变为a1,a2。该命令特别适用于远程主机为非UNIX机的情况。

  40.ntrans[inchars[outchars]]:设置文件名字符的翻译机制,如ntrans 1R,则文件名LLL将变为RRR。

  41.open host[port]:建立指定ftp服务器连接,可指定连接端口。

  42.passive:进入被动传输方式。

  43.prompt:设置多个文件传输时的交互提示。

  44.proxy ftp-cmd:在次要控制连接中,执行一条ftp命令,该命令允许连接两个ftp服务器,以在两个服务器间传输文件。
            第一条ftp命令必须为open,以首先建立两个服务器间的连接。

  45.put local-file[remote-file]:将本地文件local-file传送至远程主机。

  46.pwd:显示远程主机的当前工作目录。

  47.quit:同bye,退出ftp会话。

  48.quote arg1,arg2...:将参数逐字发至远程ftp服务器,如:quote syst.

  49.recv remote-file[local-file]:同get。

  50.reget remote-file[local-file]:类似于get,但若local-file存在,则从上次传输中断处续传。

  51.rhelp[cmd-name]:请求获得远程主机的帮助。

  52.rstatus[file-name]:若未指定文件名,则显示远程主机的状态,否则显示文件状态。

  53.rename[from][to]:更改远程主机文件名。

  54.reset:清除回答队列。

  55.restart marker:从指定的标志marker处,重新开始get或put,如:restart 130。

  56.rmdir dir-name:删除远程主机目录。

  57.runique:设置文件名唯一性存储,若文件存在,则在原文件后加后缀..1,.2等。

  58.send local-file[remote-file]:同put。

  59.sendport:设置PORT命令的使用。

  60.site arg1,arg2...:将参数作为SITE命令逐字发送至远程ftp主机。

  61.size file-name:显示远程主机文件大小,如:site idle 7200。

  62.status:显示当前ftp状态。

  63.struct[struct-name]:将文件传输结构设置为struct-name,缺省时使用stream结构。

  64.sunique:将远程主机文件名存储设置为唯一(与runique对应)。

  65.system:显示远程主机的操作系统类型。

  66.tenex:将文件传输类型设置为TENEX机的所需的类型。

  67.tick:设置传输时的字节计数器。

  68.trace:设置包跟踪。

  69.type[type-name]:设置文件传输类型为type-name,缺省为ascii,如:type binary,设置二进制传输方式。

  70.umask[newmask]:将远程服务器的缺省umask设置为newmask,如:umask 3。

  71.user user-name[password][account]:向远程主机表明自己的身份,需要口令时,必须输入口令,如:user anonymous my@email。

  72.verbose:同命令行的-v参数,即设置详尽报告方式,ftp服务器的所有响应都将显示给用户,缺省为on.

  73.?[cmd]:同help。

 他,怀揣着梦想只身一人闯荡北京;他,放弃了中国电力科学院的“金饭碗”;他,毅然从世界排名500强的某外资企业辞职。他就是吕晋宇,2001年毕业于太原理工大学,从最初刚出校门的两手空空,到如今成立并控股4家公司的年轻CEO。创业8个年头,个中曲折艰难惟有他自己感触最深:“大学生创业,资金、人脉都不重要,关键是你要有想法,要勤奋。”说起创业才能,吕晋宇早在上大学时就有体现。大二暑假,他在校内开设了电脑培训班,当起了老师。之后,又瞅准了电脑市场,帮学生组装电脑,做起了校园生意。大四时,吕晋宇开始在一家企业打工,打工的过程也是学习和实践的过程,他学会了单片机编程与应用,这些对于他的毕业论文 《单片机在电力系统中的应用》和今后的工作来说,都是一笔宝贵的财富。他建议:“大学生应摆正自己的位置,把自己当作一名普通人来看待,不要有优越感。选择和自己专业相关的、技术含量高的工作作为你的起点,把所学理论应用到实践中,积累经验。”

  刘文浩今年7月刚刚从中北大学毕业,时隔4个月的他再次重返校园已经是山西启轩文化传媒有限公司的副总经理了,公司主要服务高校品牌推广、媒体覆盖、赛事策划等项目。刚毕业就创办公司,其实和他大学阶段所作的一系列“准备工作”是分不开的。高考时,刘文浩因几分之差与东北财经大学失之交臂,最终选择了中北大学的电气工程及自动化专业。虽然专业是工科,但他依然对市场营销有着浓厚的兴趣。大三时,刘文浩因3天净赚15万的事迹而成为学校的 “风云人物”,这次经历也让他积累了丰富的经验,赚到自己创业的第一桶金。之后,他利用这笔资金在上海注册成立了一家网络公司,制作网页。熟悉公司运作流程,拥有自己的营销团队,这些前期积累为他创办山西启轩文化传媒有限公司奠定了基础。

  □“大学生想要创业,就应该抓住大四这段黄金时间,因为它是承上启下的重要时期,既是大学生活的终结,也是社会生活的开始。用这段时间,完成从一名学生到一个社会人的转变。”

  奚小艳是中北大学环保技术领域一年级研究生,也是山西中北大学科技园有限公司康洁环保设备分公司的负责人。“以前我觉得成立一家公司不是什么难事,现在我才发现,想创办属于自己的公司,需要熟悉整个公司的运作流程,学会经营。”这段时间,奚小艳只要一有时间,就从网上搜集和她研发方向一致的公司,了解其他公司的产品设备情况,掌握行业动态,逐步完善自己的公司理念。

  “想创业,就得做一名生意人,学会如何做生意。”吕晋宇在大学毕业后进入世界排名500强的施耐德中国有限公司太原分公司,从销售做起,不断更新自己的创业理念。“他们的整体运营系统非常科学,我学到了企业管理方面的经验。”两年后,他递交了辞职信,开始寻找适合自己的项目。他告诉记者:“大学生想要创业,就应该抓住大四这段黄金时间,因为它是承上启下的重要时期,既是大学生活的终结,也是社会生活的开始。用这段时间,完成从一个学生到一个社会人的转变。”

  □“人的思想能想多远,人就能走多远。大学生创业,一定要务实,要勤奋,不能光停留在理论研究上。可以从小投资开始,积累经验,一口想吃个胖子,结果一定是失败。没有资金,没有人脉都不要紧,关键是你要有好的思路和想法,有勇气去迈出第一步,才会成功。”

  和一些大学生因为找不到工作,被迫自主创业不同,2002年毕业于太原理工大学的孔鹏伟是主动扔掉 “铁饭碗”走上创业之路的。因不甘于一成不变的工作,孔鹏伟主动放弃了公务员的“铁饭碗”,决心要干自己的事业,踏上自主创业之路。他拿着借来的几万元钱三上北京寻找项目,经过多方考察,孔鹏伟决定加盟欧克壹佰西式快餐店。2005年8月,欧克壹佰侯马快餐店正式开业。孔鹏伟说:“当时,太原、临汾等地级以上城市都有了肯德基、麦当劳等大品牌,为了避开和大品牌竞争的风险,我把目标锁定了经济条件较好的县级市场。因为我不懂西餐行业的管理,最初我选择做加盟商,等积累了一定的管理经验后,再创立自己的品牌。”

  2007年,孔鹏伟创立了自己的品牌“克罗克”,并开了多家连锁店。现在,孔鹏伟的伟涛餐饮服务有限公司拥有6个中式和西式快餐厅以及一个大型网吧,孔鹏伟的目标是在5年内让伟涛餐饮服务有限公司成为山西省知名企业,让“伟涛”这个品牌在全省所有的县市亮相。

  同样缺少创业资金的吕晋宇在公司起步时,选择用自己的智慧作为投资成本。“只要你有想法,而且你的想法是对的,资金和人脉都不是问题。”2007年4月,吕晋宇找到了一个好的创业项目,苦于没有资金和人脉,他主动联系了两名同学。听完他的项目后,俩人当即决定和他一起干。于是三人一个出资金,一个有人脉,而吕晋宇则以自己聪明的头脑作为资本入股,共同创办了太原市博云建业电气科技有限公司,代理西门子输配电集团的配网设备,成为山西和内蒙古的总经销商,完成了自己第一桶金的积累。2008年年底,他将公司的股份全部收回来,成为公司的董事长。2009年10月,他在北京成立了北京元工电气有限公司,准备面向全国发展。“我还打算在太原开一家设计公司,在晋中做一些实体产业,目前已经在运作阶段了。我的梦想,就是将来能有一家上市公司,这才是我人生价值的体现。”

  对于大学生关注的创业资金问题,吕晋宇说:“人的思想能想多远,人就能走多远。大学生创业,一定要务实,要勤奋,不能光停留在理论研究上。可以从小投资开始,积累经验,一口想吃个胖子,结果一定是失败。没有资金,没有人脉都不要紧,关键是你要有好的思路和想法,有勇气去迈出第一步,才会成功。”


51NET以太网开发板  

1.系统介绍  

    51NET是一个具有10Mbps以太网接口和RS232串行接口的51系列单片机的嵌入式开发学习板,它采用WINBOND公司生产的W78E58B微控制器为核心处理器,包括TCP/IP协议栈和相应的应用程序。实现了ARP、ICMP、TCP、UDP协议,可应用于HTTP Web服务器、Mail客户机、网络协议转换(如Ethernet-RS232接口转换、Ethernet-SPI接口转换等)、基于Internet的远程控制、基于Internet的远程数据采集等嵌入式网络应用  



新款设计2008隆重上市,产品更新,价格不变(做了一些设计更新,修正了一些硬件上的BUG)

    与市场同类产品相比,开发板上的资源极为丰富,板子本身可以完成以太网通讯的同时,还可以利用以太网板上的资源来实时监控通讯情况,也是我们设计该板时为广大工程师方便开发考虑到的问题,您可以通过数码管显示数字,蜂鸣器鸣音,继电器吸合来更直观地给开发者讯息。

    板上带19PIN的外扩展端口,供用户进行扩展开发、试验。



    接口齐全,从左至右为:电源口,RJ45 10M以太网接口,RS232串口。  



    网络通讯核心芯片选用RealTek的RTL8019AS芯片。

2.系统说明  

    ● CPU采用W78E58BP-40,工作频率可达到40MHz,完全满足运行多种网络协议的要求;也可根据需要将CPU替换为其它8052兼容微控制器
    ● HM62256 32Kx8 CMOS静态RAM
    ● X5045 上电复位、可编程看门狗定时器、4Kb SPI EEPROM
    ● 多组LED用来指示系统运行情况
    ● 系统扩展标准RJ45以太网接口,3针串行RS232接口,1组可供用户自由扩展的系统资源接口
    ● 输入电压范围为7-30VDC
    ● 支持在系统编程,方便二次开发
    ● 支持各种通用的8052兼容编译器,如Keil C等
    ● TCP/IP协议栈、独立RTOS和应用软件支持

3.主要应用领域  

    ● 智能仪器、仪表
    ● 远程控制
    ● 嵌入式以太网接入
    ● 嵌入式网络开发、实验

4.用户光盘上提供的源代码及资料

    ● ARP、ICMP、TCP、UDP协议,ARP中实现了缓存,发包电路实现了缓存,上位机可以ping这块板子,下位机也可以ping上位机(通过上位机小程序,连串口),可以用tcp进行数据传送
    ● 详细使用说明文档
    ● 电路PDF格式的原理图
    ● 所有芯片data sheet

5.套件组成

    ● 51NET开发板1块
    ● 稳压电源1只
    ● 串口电缆1根  
    ● 资料光盘1份(内含系统详细说明文档、RTOS、TCP/IP协议软件、元器件手册、应用文档等)  



    这是51NET以太网开发板工作时的瞬间照片(上图是老款开发板的样子,现在出售的都为新款了),上面两个LCD为电源指示,网络连接指示,右下方的红色LED为程序运行指示,具体表现为不停地闪烁则程序正常运行。该图中,我们可以看到,我们通过RS232接口来对开发板进行网络参数的设置,如IP地址,子网掩码,服务器端口号等等。



    这是三块51NET以太网开发板同时工作时的瞬间照片,三块开发板通过HUB集线器,连在一起,预先通过RS232串口设置好各板的网络参数,然后插上电源适配器,RJ45网线,打开电源开关即可。
1.与其他人群相比,白领们患上急性咽喉炎的原因可能较为复杂,主要有哪些诱因?
    病原微生物(包括细菌、病毒、螺旋体、立克次体等)是急性咽炎的主要致病因素,可直接来源于空气、饮食,也可间接来源于血液循环和淋巴循环。 而白领阶层由于长期处于工作竞争压力状态下,生活不规律,再加上心身长期疲劳、精神紧张,使得身体抵抗力下降;导致白领阶层人士极易遭受细菌和病毒的感染侵袭;另外,白领人群长期处于空调的环境下(夏天空调降温、冬天空调加温),而且工作环境闭塞、干燥,极易造成咽部粘膜血管收缩,吞噬细胞数目减少,局部抵抗力下降;干燥还可影响咽部粘液分泌和纤毛蠕动,降低对空气的清洁加湿作用,直接对咽部粘膜造成刺激和损害,室内空气流通差,也容易引起抵抗力下降和致病微生物入侵发病;再者,此环境下的白领人士还容易并发感冒、鼻炎,因工作紧张饮食不规律,喜食辛辣刺激之物,则易于发生牙龈炎、口腔炎,这些上呼吸道的炎性病症也可出现炎性分泌物倒流入咽喉部,咽喉部长期受刺激也会并发咽喉炎症,据不完全统计,白领人士(尤其是年轻教师、商场营业员、职场经理等)患咽喉炎高达30%左右,因此,本病是白领人士的高发疾病之一。阅读全文
分页: 209/339 第一页 上页 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 下页 最后页 [ 显示模式: 摘要 | 列表 ]