在使用SecureCRT进行远程操作的时候,遇到一个奇怪的问题,【ctrl+l】清屏失效,按完这个组合键之后,没有任何反应,键盘是好的。输入clear命令觉得麻烦。有人遇到过这样的问题吗?
找到问题原因:“谷歌金山词霸合作版”的热键冲突了,关掉它,就OK了。。。
我喜欢在.bashrc 中加上这句  alias c='clear'     运行: source ~/.bashrc  
如果不是root登陆但是su成 root的用户:source /root/.bashrc  OK。。。
  
If还是没有搞定:
如果暂时清屏幕在Linux的terminal下还是用:cls吧。
如果在Mysql下面还是用mysql的清屏命令:system clear或system reset 吧,这样也成,试了一下:\! clear;  ,斜杠转义一下。
ssh-keygen -r rsa 在用户名下面的.ssh目录生成几个文件:
id_rsa.pub
id_rsa
id_dsa.pub
id_dsa
known_hosts
我们需要:id_rsa,放入window或者其他linux/unix来作为私钥。

/etc/rc.d/sshd rcvar






#!/usr/local/bin/php -q
<?php

function read() {
    $fp=fopen("/dev/stdin", "r");
    $input=fgets($fp, 255);
    fclose($fp);

    return $input;
}

print("What is your first name? ");
$first_name = read();

print("What is your last name? ");
$last_name = read();

print("\nHello, $first_name $last_name!  Nice to meet you!\n");

?>

http://www.phpe.net/articles/370.shtml
http://www.thismail.org/bbs/redirect.php?tid=2854&goto=lastpost
原始来源老外的网站:http://www.phpbuilder.com/columns/darrell20000319.php3?page=2
https://www.cnblogs.com/wcwen1990/p/6917109.html



最后谈严格模式:Mysql尽可能采用严格模式,一定程序上防止一些编码问题和长度问题(https://blog.csdn.net/fdipzone/article/details/50616247)。
set global sql_mode=''; #这种方法修改,当前会话失效后,这个修改就没意义了,建议修改配置文件的方式修改,修改后,不需要重启mysql服务,立即生效,检查是否生效,执行sql ,select @@sql_mode;


show create table t;
CREATE TABLE `t` (
  `c` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8

show variables like "%char%";
set names gbk;

mysql> select c ,hex(c) from t;
+------+--------+
| c    | hex(c) |
+------+--------+
| 东     | E4B89C |
| 东     | E4B89C |
| 东     | E4B89C |
| 东     | E4B89C |
| 东     | E4B89C |
| 东     | E4B89C |
| 东     | E4B89C |
| 东     | E4B89C |
+------+--------+
8 rows in set (0.00 sec)


php igbk.php
string(4) "b6ab"
int(1)
string(4) "b6ab"
string(4) "b6ab"
Array
(
    [0] => Array
        (
            [c] => 东
            [0] => 东
            [hex] => E4B89C
            [1] => E4B89C
        )

说明三个问题:
1)咱们在显示一个字符时,在SecureCRT里配置的character encoding只是显示,并不像Mysql的set names utf8里的三个参数(character_set_client character_set_connection character_set_results )有由一个字符转向另一个字符集的功效,要想显示正常,则只需要对转出来的结果进行匹配即可显示正常。bin2hex("东")

三条:
一)如果character_set_client和character_set_results 一般情况下要一致,因为一个表示客户端发送的数据格式,另一个表示客户端接受的数据格式为了避免造成数据丢失,需让 character_set_connection的字符编码 大于 character_set_client的字符编码.(MySQL Server收到请求时将请求数据从character_set_client转换为character_set_connection;)
二)对于Mysql旧版本的默认latin情况,里面尽管传入了UTF8,也能正常的显示和插入(character_set_client| latin1(中文你utf8是3个字节,也就是来自前端网页的UTF8的你字,而latin1是按照单个字节解析的,虽然进行了转换,但不会导致二进制内容的变化,但实际上mysql客户端认为我输入了3个latin1字符;还好是UTF8前端,如果客户端是GBK,直接收到一个3字节的UTF8的编码会为是1个gbk字符和一个西欧字符) -> character_set_connection | latin1->),但本质上是以UTF8的方式存入磁盘时是6个字符( character_set_database   | utf8 ),而出来时又被Latin1转回为3个字符后被UTF8看成1个汉字也就是你字,而如果这个Lation1不这样6字节变3字节,也就是(character_set_results 的值由latin1变UTF8后)UTF8后,则6个字符以UTF8直接穿透到显示层了,会在SecureCRT(设置UTF8输出显示)看到UTF8是6个字符认为是两个汉字,也就成了我们认为的乱码!!!归结于:由于latin1 是一种非常宽松的编码方式,任何一种编码方式得到的文本,用 latin1 进行解码,都不会发生解码失败——当然,解码得到的结果自然也就是理所当然的“乱码”。
实践如下,实践证明输出与character_set_results的编码有关,当set character_set_results是latin1时会转为输入时的UTF8的三个字符,而set character_set_results="utf8"时,则它输出了存入Mysqld数据库的6个字节的UTF8直接输出,前端认为是两个字也就显示出来了东,也就是把C3A4C2B8C593以SecureCRT配置的前端输出经过UTF8解码显示,就是乱码了。

这个在Mysql里可通过设置set names latin1;并且secureCRT的Character encoding设置为utf8就能正常显示,本质上:
mysql> select c ,hex(c) from t;
+--------+--------------+
| c      | hex(c)       |
+--------+--------------+
| 东 (这里面的输出是将 hex(c)里的内容C3A4C2B8C593 经过character_set_results=latin1编码后显示,这个显示正常不正常是由SecureCRT的输出时是GB2312,还是UTF8,这儿输出本来是latin1,但是被SecureCRT按utf8显示后就是 三个字节的东字!!! )   | C3A4C2B8C593 |
+--------+--------------+


核心内容:输出的那个Lation1变UTF8(set  character_set_results=utf8)后,反而乱码的原因是如下:






From:https://edu.aliyun.com/a/15790


        基础学习:关于前面提到的字节和位的一个关系的一个基础知识:位:"位(bit)"是电子计算机中最小的数据单位。每一位的状态只能是0或1。字节:8个二进制位构成1个"字节(Byte)",它是存储空间的基本计量单位。1个字节可以储存1个英文字母或者半个汉字,换句话说,1个汉字占据2个字节的存储空间。即1个字节等于8个比特(1Byte=8bit)。八位二进制数最小为00000000,最大为11111111(0XFF,全是1,也就是两个F(十进制是255 ),C3的对应的十进制195,A4对应十进制是164);通常1个字节可以存入一个ASCII码,“c3a4 c2bd c2a0”(6个字节) ,ASCII码用十六进制表示的,C3、a4等等,http://ascii.911cha.com/。

三)对于2的这种情况是在升级时可全部改为UTF8的编码的,是可以根据 mysqldump 时加上 --default-character-set=latin1,导出正常的Utf8编码的中文且显示正常的字符,但是加了这 个后,记得修改里面的set names latin1,为set names utf8, 而在程序代码里连接时也加上set names utf8,黄冶是default-character-set=utf8就能正常显示。(mysqldump -h 127.0.0.1 -P 3306 -u username --default-character-set=latin1 -p databasename > dumpfile.txt)
=========================================================================================
[转]深入Mysql字符集设置,比阿里巴巴技术团队的更形像,有图:
https://blog.csdn.net/haiross/article/details/51273630  (请道因为UTF8插入时如果存的是比它小的,可能转时出现问题,而没法恢复,因为存入时就坏了:插入数据将经过utf8=>utf8=>latin1的字符集转换,若原始数据中含有/u0000~/u00ff范围以外的Unicode字符,会因为无法在latin1字符集中表示而被转换为“?”(0x3F)符号,以后查询时不管连接字符集设置如何都无法恢复其内容了。而以latin1入到Utf8后,会导致字符数变多,也就是存储空间会因为中文的UTF8是3个及以上(文章里提到的3个字节变成6个字节),占用了更多磁盘,插入操作的数据将经过latin1(character_set_client)=>latin1(character_set_connection)=>utf8(character_set_results)的字符集转换过程,这一过程中每个插入的汉字都会从原始的3个字节变成6个字节保存; )
阿里云大学谈到了其乱码的本质一样的用你的UTF8作描述的文字版:https://edu.aliyun.com/a/15790
MySQL的几个character_set变量的说明:https://www.linuxidc.com/Linux/2017-04/143263.htm
MySQL抓包工具:MySQL Sniffer【转】:
https://www.cnblogs.com/zhoujinyi/p/6497231.html
利用tcpdump对mysql进行抓包操作技巧_Mysql:
https://edu.aliyun.com/a/15214

特殊变量之character_set_system:character_set_system是个只读数据不能更改。也没多少改的意义,他是元数据的编码,相信不会有人用中文做数据库名和字段名之类的吧,这个字段和具体存储的数据无关。
mysql> show variables like '%char%';
+--------------------------+-----------------------------------------------------+
| Variable_name      | 说明                        |
+--------------------------+-----------------------------------------------------+
| character_set_client   | 客户端字符集                    |
| character_set_connection | 当前连接字符集                   |
| character_set_database  | 数据库字符集                    |
| character_set_filesystem | 文件系统字符集,不要修改,使用binary即可 |
| character_set_results  | 返回结果集字符集                                   |
| character_set_server   | 服务器默认字符集,当数据库、表、列没有设置时,如Show create table里的中文表字段批注   |
|             |   默认使用此字符集                |
| character_set_system   | 固定为utf8                                            |
+--------------------------+-----------------------------------------------------+
| Variable_name            | Value                                               |
+--------------------------+-----------------------------------------------------+
| character_set_client     | latin1                                              |
| character_set_connection | latin1                                              |
| character_set_database   | utf8                                                |
| character_set_filesystem | binary                                              |
| character_set_results    | latin1                                              |
| character_set_server     | utf8                                                |


------------------------而latin1是按照单个字节解析的,虽然进行了转换,但不会导致二进制内容的变化!-------------------------------------------
这里首先需要解释的是,我想应该就是连接通道的含义了。那什么是连接通道呢?
背景:这种理解其实是早期程序员以PHP为例通常觉得数据存为简体中文比教少占空间,utf8中文占用大于等于三,由unicode字符集决定的,其实现在看来用utf8都不是啥大事,磁盘很便宜。再就是早期mysql默认就是拉丁字符集合。
导致出现想转为utf8的,首先导出时候得指定字符集为拉丁,假如不加指定以拉丁导出其默认是utf8,往往那个建表结构的comment注释是utf8,出现评论正常,数据库内容中文乱码,用file xxx.sql检查的确是一个utf8的sql文件。
如果MySQL服务器上的字符集是 latin1 的,mysqldump 出来的中文都是乱码!一个简单的办法是加上默认字符集选项,如:
mysqldump -h 127.0.0.1 -P 3306 -u username --default-character-set=latin1 -p databasename > dumpfile.txt  #character_set_connection、character_set_client、character_set_results三个字符集一次性被设置为latin1了。character_set_client、character_set_connection、character_set_results这3个参数值是由客户端每次连接进来设置的,和服务器端没关系。我们登陆进mysql后,执行 set names utf8; 实际就是同时修改上面的这3个参数值的。From:MySQL的几个character_set变量的说明,https://www.linuxidc.com/Linux/2017-04/143263.htm。
有些网站在开发时,并没有正确指定编码,採用了预设的 latin1 ,并且将 big5 的中文资料直接储存。这种情况如果直接用 mysqldump 直接匯出,结果可能是一堆乱码,必须加上 --default-character-set=latin1 让匯出的资料保持正常的 big5 编码。
mysqldump -u USER -p DBNAME --default-character-set=latin1 > DBNAME.sql
如果在匯出备份资料时,忘记加上参数,產生的乱码资料,用 iconv 可以救回部分(以下指令示范假设匯出档為错误编码的utf8),参数 "-c" 表示忽略无法转码的字元。
iconv -c -f utf8 -t latin1 DBNAME.sql > DBNAME.big5.sql
对于 big5 编码的匯出档,也可以用 iconv 转换成 utf8 格式。
iconv -c -f big5 -t utf8 DBNAME.sql > DBNAME.utf8.sql
再进行编码格式设定的替换。
perl -pi -e 's/big5/utf8/g' DBNAME.utf8.sql
旧的Mysql默认选项:
mysql> show variables like "%set%";
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | latin1                     |
| character_set_connection | latin1                     |
| character_set_database   | latin1                     |
| character_set_results    | latin1                     |


从源码编译mysql的时候,通过编译参数进行设置
编译的时候如果指定了-DDEFAULT_CHARSET和-DDEFAULT_COLLATION,那么:
创建database、table时,会将其作为默认的字符集/字符序。
client连接server时,会将其作为默认的字符集/字符序。(不用单独SET NAMES)
shell> cmake . -DDEFAULT_CHARSET=utf8 \
           -DDEFAULT_COLLATION=utf8_general_ci
RPM打包:
cmake . \
...
-DDEFAULT_CHARSET=utf8 \                                                                                              
...
make %{?_smp_mflags}
=============================================================================

搞成utf8的编码,怎么办?分三步:
1)mysqldump default-character-set=latin databse table > /tmp/utf8format.sql #本质上是存在数据库里面的编码就是latin,指定以Latin字符编码给导出到一个utf8文件里面。
2)在导出文件里面因为1加入了指定导出编码了,于是文件里面sql语句有一个set names latin,把这个改成set names utf8。此时用less看无论建表结构的评论注释还是表里内容均显示正常,中文不乱码。
3)在导入数据的mysqlserver的my.cnf设置尽可能全utf8,如果不设置因为2在sql文件建立表和插入数据前加入设置编码了,直接mysql导入即可。保证全是utf8后,PHP的连接字符串编码也是UTF8即可。

所谓连接通道,就是客户端和服务器端保持连接的一个通道,它是逻辑上的一个概念。客户端通过连接通道发送sql语句到服务器端,服务端执行,将结果再通过连接通道返回至客户端。the connection is the pass when you connect to the server.

这个过程中,有几个临界点(逻辑上概念),是我们需要注意的,mysql也就在这几个临界点上做了文章。

1、当语句离开客户端的时候:
从客户端出来的,包括sql语句本身(这里里面就包含字符串和关键字等了),以及character_set_client系统变量。为什么要包含这个变量呢?这个变量的作用说明2点,也是它的作用:一是表示该语句中的字符集是使用character_set_client指定的字符集编码的,二是通过此系统变量来告诉服务器所发送来的语句中的字符集编码。
2、当服务器端接受到客户端的语句的时候:
mysql会使用character_set_connection/collation_connection指定的字符集以及校验规则,将客户端的字符串,做一个从character_set_client到character_set_connection的转换。
3、当服务器处理好结果以后,在把结果传给客户端前:
mysql会先将结果转换成character_set_results指定的字符集,然后传回给客户端。


当字符串在mysql服务器的时候,最终以什么格式存储到mysql数据库中,这个是受到具体的数据表级别、列级别字符集设置的控制了。
阅读全文
1. 安装Apahce, PHP, Mysql, 以及php连接mysql库组件。
  yum -y install httpd php mysql mysql-server php-mysql
  
  2. 配置开机启动服务
  /sbin/chkconfig httpd on [设置apache服务器httpd服务开机启动]
  /sbin/chkconfig --add mysqld [在服务清单中添加mysql服务]
  /sbin/chkconfig mysqld on [设置mysql服务开机启动]
  
  /sbin/service httpd start [启动httpd服务,与开机启动无关]
  /sbin/service mysqld start [启动mysql服务,与开机无关]
  
  3.设置mysql数据库root帐号密码。
  mysqladmin -u root password 'newpassword' [引号内填密码]
  
  4. 让mysql数据库更安全
  mysql -u root -p [此时会要求你输入刚刚设置的密码,输入后回车即可]
  
  mysql> DROP DATABASE test; [删除test数据库]
  mysql> DELETE FROM mysql.user WHERE user = ''; [删除匿名帐户]
  mysql> FLUSH PRIVILEGES; [重载权限]
  
  5. 按照以上的安装方式, 配置出来的默认站点目录为/var/www/html/新建一个php脚本:
   phpinfo();
  ?>
  
  6. 新建一个数据库,添加一个数据库用户,设置用户权限。写个php脚本测试一下数据库连接吧。
  mysql> CREATE DATABASE my_db;
  mysql> GRANT ALL PRIVILEGES ON my_db.* TO 'user'@'localhost' IDENTIFIED BY 'password';
  
  
  
  //安装apache扩展
  yum -y install httpd-manual mod_ssl mod_perl mod_auth_mysql
  //安装php的扩展
  yum install php-gd
  yum -y install php-gd php-xml php-mbstring php-ldap php-pear php-xmlrpc
  //安装mysql扩展
  yum -y install mysql-connector-odbc mysql-devel libdbi-dbd-mysql
MySQL 大企业级应用可行性分析
http://www.dbanotes.net/database/mysql_comment.html
http://www.dbanotes.net/database/mysql_comment_2.html
http://www.dbanotes.net/database/mysql_comment_3.html
http://syre.blogbus.com/logs/23587704.html



一个mysql命令行客户端的一个小技巧

在mysql命令行客户端操作的时候,有时候一个语句的结果一长~~~~串,然后就没得看了,还会把之前的东西全冲掉。

mysql的命令行客户端有这么一个功能,可以选择查询结果的page方式。比如用\P less,就会用less来显示查询结果,就可以上下滚动翻页了。同样的,也可以用more或者其他什么东西,甚至可以用自己的脚本来做一些处理。如果想换回标准的,直接\P就可以了。\P是page的简写,所以喜欢更清晰的也可以用page。

另一个技巧知道的人多一些

在语句最后用\G代替;就会让查询结果垂直输出,对于有很多列的结果比如explain,会清晰一些。

本程序提供了一个需要权限才能访问的地址:http://gf.kaixin.com/home.do,而登陆接口是:http://login.kaixin.com/Login.do,通过post传递参数,达到访问需要权限才能访问的功能,模拟了浏览器Netscape的标准头,程序代码如下:


<?php

  Error_reporting(E_ALL);
    function vlogin($url,$request)
    {
      $cookie_jar = tempnam('./tmp','cookie');//在当前目录下生成一个随机文件名的临时文件
      $ch = curl_init(); //初始化curl模块
      curl_setopt($ch,CURLOPT_URL,$url);//登录页地址
      curl_setopt($ch, CURLOPT_POST, 1);//post方式提交
      curl_setopt($ch, CURLOPT_POSTFIELDS, $request);//要提交的内容
      //把返回$cookie_jar来的cookie信息保存在$cookie_jar文件中
      curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_jar);
      //设定返回的数据是否自动显示
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
      //设定是否显示头信息
      curl_setopt($ch, CURLOPT_HEADER, false);
      //设定是否输出页面内容
      curl_setopt($ch, CURLOPT_NOBODY, false);
      curl_exec ($ch);
      curl_close($ch); //get data after login      
      return $cookie_jar;
   }
  
  //登录成功后通过cookies获取页面内容
    function get_content_by_cookie($url,$cookie_jar)
    {
        $ch2 = curl_init();      
        curl_setopt($ch2, CURLOPT_URL, $url);
        curl_setopt($ch2, CURLOPT_HEADER, false);
        curl_setopt($ch2, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch2, CURLOPT_COOKIEFILE, $cookie_jar);
        $orders=curl_exec($ch2);      
        curl_close($ch2);
        return $orders;
    }

function clear_cookie($cookie_tmp_name)
  {
        @unlink($cookie_tmp_name);
    }

  //使用的例子
    //$list_url='要抓取的帖子地址';
    $list_url='http://gf.kaixin.com/home.do';//教父的主键
    //$login_url='登录地址';
    $login_url='http://login.kaixin.com/Login.do';
    $post_data='email=xdy108@126.com&login_type=1000&origURL=http://www.kaixin.com/SysHome.do&password=001002';
    $cookie_file=vlogin($login_url,$post_data);    //模拟登陆
    var_dump($cookie_file);
    $tmp_curl=get_content_by_cookie($list_url,$cookie_file);//这里获得帖子内容
    var_dump($tmp_curl);
  clear_cookie($cookie_file);//删除cookies临时文件  
?>
1、复制进程
Mysql的复制(replication)是一个异步的复制,从一个Mysql instace(称之为Master)复制到另一个Mysql instance(称之Slave)。实现整个复制操作主要由三个进程完成的,其中两个进程在Slave(Sql进程和IO进程),另外一个进程在 Master(IO进程)上。

要实施复制,首先必须打开Master端的binary log(bin-log)功能,否则无法实现。因为整个复制过程实际上就是Slave从Master端获取该日志然后再在自己身上完全顺序的执行日志中所记录的各种操作。
复制的基本过程如下:
1)、Slave上面的IO进程连接上Master,并请求从指定日志文件的指定位置(或者从最开始的日志)之后的日志内容;
2)、Master接收到来自Slave的IO进程的请求后,通过负责复制的IO进程根据请求信息读取制定日志指定位置之后的日志信息,返回给Slave 的IO进程。返回信息中除了日志所包含的信息之外,还包括本次返回的信息已经到Master端的bin-log文件的名称以及bin-log的位置;
3)、Slave的IO进程接收到信息后,将接收到的日志内容依次添加到Slave端的relay-log文件的最末端,并将读取到的Master端的 bin-log的文件名和位置记录到master-info文件中,以便在下一次读取的时候能够清楚的高速Master“我需要从某个bin-log的哪 个位置开始往后的日志内容,请发给我”;
4)、Slave的Sql进程检测到relay-log中新增加了内容后,会马上解析relay-log的内容成为在Master端真实执行时候的那些可执行的内容,并在自身执行。
阅读全文
有一个表 tbl1 的结构如下:
CREATE TABLE `tbl1` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `name` char(20) NOT NULL default '',
  PRIMARY KEY  (`id`),
  KEY `name` (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

该表里已经存在了200万条记录.

现在, 需要把 tbl1 中的所有记录全部导到另一个完全相同的表 tbl2 中去.
1. 如果采用以下传统的方式, 则执行时间为: 98.01s


mysql>INSERT INTO tbl2 SELECT * FROM tbl1;

Query OK, 2000000 row affected (1 min 38.01 sec)
Records: 2000000  Duplicates: 0  Warnings: 0

2. 如果是用以下SQL语句, 则执行时间为: 80.85s (36.30 + 44.55)


mysql>ALTER TABLE tbl2 DISABLE KEYS;
Query OK, 0 rows affected (0.00 sec)



mysql>INSERT INTO tbl2 SELECT * FROM tbl1;
Query OK, 2000000 row affected (36.30 sec)
Records: 2000000  Duplicates: 0  Warnings: 0



mysql>ALTER TABLE tbl2 ENABLE KEYS;
Query OK, 0 rows affected (44.55 sec)
从上面的测试结果来看, 在大批量导入时先禁用索引, 在完全导入后, 再开启索引, 一次性完成重建索引的效率会相对高很多, 经过反复几次测试, 感觉后者基本能比前者快 1.2 倍左右. 这也就是 LOAD DATAL INFILE 相对较快的原因之一.

有些人以为搞嵌入式就是随便找本书看看,在电脑上编几个程序就完事。非也,其实嵌入式的门槛是比较高的。具体如下:  

  1、您得有一定数量的Money。

    (1)、开发板贵

    (2)、培训费更贵

    (3)、开发平台是贵得不能再贵。(除非您只是想玩玩而已)

  2、需要学习的东西多。(1)、window环境编程;(2)、Linux环境编程;(3)、单片机

  3、最后也是最重要的一点,你得有坚韧不拔之志和一颗平常之心。

   (1)、自信 坚强 积极 勤快 (注:好的自信是自觉的!)

   (2)、成功其实就是成为最好的您自己       

  嵌入式门槛虽然较高,但也跟其他事物一样,并不是牢不可破。只要我们用心去对待,东雪终将化去,春风定会吹来。具体步骤如下:

  1、《C语言》第二版 谭浩强 ; 《C程序设计语言》第二版 徐宝文译 机戒工业出版社

  你能区分开指针数组和数组指针吗?你知道函数指针吗?

  你能区分开定义一个变量时系统给它分配的空间与用malloc()函数给一个变量分配的空间有什么不一样吗?

  2、《数据结构》C语言版  黄国愉、叶乃青编  清华大学出版社

  你能合上书本,用C语言实现书中的单链表、双链表数据结构吗?

  3、《实用C++程序设计》第二板 中国电力出版社 Steve_Oualline著

  此阶段主要是学习其面向对象的编程思想,加深对C语言和数据结构的理解。

  4、学习单片机,最好能找个前辈带一带。

   你能用51单片机做出一样实际的东西吗?即使它再简单!

   要注意加深对中断的理解。

  5、学习ARM单片机。

   (1)、细读《ARM微控制器基础与实战》周立功编写 (注:即使你不用书中的开发板)

   (2)、细读相关芯片的原版英文文档。如:arm920TE.pdf  S3C2410_1.2.pdf

  6、学习uCOS!!操作系统。

   (1)、细读《嵌入式实时操作系统uC/OS-!!》第二版 召贝贝译

    你能把uCOS!!移植到自己的平台上吗?

   (2)、能编写在uCOS!!操作系统环境下运行的针对具体硬件的驱动程序

  7、熟悉Linux环境,学习Linux环境编程,学习交叉编程

   (1)、细读《linux命令大全.pdf》

   (2)、细读《GNU Make 使用手册(中译版).pdf》

   (3)、学习创建交叉编程环境.

  8、学习Linux操作系统。     

   (1)、《UNIX环境高级编程》

   (2)、细读“joyfire 笔记”,可在“www.qianrushi.com”网站的好书下载栏目获取

      (3)、细读《linux内核完全注释》

   (4)、细读《understanding the linux kernel 2》

   (5)、利用源代码阅读利器工具"Source Insight"进行真正的linux内核原码刨析

   (6)、最后进行内核移植,并能编写在linux操作系统环境下运行的针对具体硬件的驱动程序

  9、学习Linux设备驱动编写。可参考《Linux设备驱动程序》

 10、复习C++,学习用QT进行图形界面编程

   (1)、细读《QT编程宝典》

   (2)、学会通过查看QT电子文档进行QT GUI实地编程

   (3)、学习交叉编程.(其实就是把命令qmake变为tmake)

 11、当然,你也可学习一下PCB的制作和设计一个自己的CPU(即软壳)

  至此,你已学完嵌入式的整流程!但谨记:一个有思想的人才真是一个力量无边的人;有容乃大,能予方强!
      由于本人手机是s60的系统,喜欢没事的时候记几个英文单词,但是在记忆09年研究生入学单词发现读取一个9M的word文档时候出现死机等症状,于是本人将将其化为26个英文字母来排序,分开为26个word文件,方便大家放到手机上阅读记忆,希望大家能够学习劝学篇中:
积土成山,风雨兴焉;积水成渊,蛟龙生焉;积善成德,而神明自得,圣心备焉。故不积跬步,无以至千里;不积小流,无以成江海。骐骥一跃,不能十步;驽马十驾,功在不舍。锲而舍之,朽木不折;锲而不舍,金石可镂。蚓无爪牙之利,筋骨之强,上食埃土,下饮黄泉,用心一也。蟹六跪而二螯,非蛇鳝之穴无可寄托者,用心躁也。是故无冥冥之志者,无昭昭之明。无惛惛之事者,无赫赫之功。行衢道者不至,事两君者不容。目不能两视而明,耳 不能两听而聪。螣蛇无足而飞,梧鼠五技而穷。诗曰:“尸鸠在桑,其子七兮。淑人君子,其仪一兮。其仪一兮,心如结兮。”故君子 结于一也。
的精神,日积月累,慢慢学习,不断进取,当然也包括本人在内了,不用谢我,我只是为了自己,方便了大家罢了!

下载地址:http://www.xiangdong.org/english/words.zip


早就听说lighttpd加PHP的FAST-CGI方式性能不错,抽时间装了下.只是完成了环境的安装,还没具体看性能什么的!
以下是我装lighttpd+PHP(FAST-CGI)+mysql的,如有问题,请给我评论.


一、先安装mysql
安装mysql,你可以安装源码包,也可以用编译好的!直接解压拷贝也行.我用的是直接拷贝编译好的!
1.编译源码包
./configure  --prefix=/data2/ali --enable-assembler --enable-thread-safe-client --without-debug
make
make install
2.用编译好的压缩包!直接解压拷贝
tar zxf mysql-standard-5.0.27-linux-i686-glibc23.tar.gz
cd mysql-standard-5.0.27-linux-i686-glibc23
cp -rf mysql-standard-5.0.27-linux-i686-glibc23 /usr/local/mysql

//以下是为了启动多个端口
mkdir -p /data2/ali/mysql3308
mkdir -p /data2/ali/mysql3309
./scripts/mysql_install_db --ldata=/data2/ali/mysql3308
cp support-files/my-medium.cnf /data2/ali/mysql3308/my.cnf
vi /data2/ali/mysql3308/my.cnf
修改内容如下:
#
[mysqld]
datadir         = /data2/ali/mysql3308/
port            = 3308
socket          = /tmp/mysql-3308.sock
#

cp /data2/ali/mysql3308/ /data2/ali/mysql3309/
vi /data2/ali/mysql3309/my.cnf
修改内容如下:
#
[mysqld]
datadir         = /data2/ali/mysql3309/
port            = 3309
socket          = /tmp/mysql-3309.sock
#
启动mysql
/usr/local/mysql/bin/mysqld_safe --defaults-file=/data2/ali/mysql3308/my.cnf  --user=root &
/usr/local/mysql/bin/mysqld_safe --defaults-file=/data2/ali/mysql3309/my.cnf  --user=root &

检查mysql是否启动成功。
ps -ax|grep mysql
20835 pts/3    S      0:00 /bin/sh ./mysqld_safe --defaults-file=/data2/ali/mysql3308/my.cnf --user=root
20862 pts/3    Sl     0:00 /usr/local/mysql/bin/mysqld --defaults-file=/data2/ali/mysql3308/my.cnf --basedir=/usr/local/mysql --datadir=/data2/ali/mysql3308/ --user=root --pid-file=/data2/ali/mysql3308//XD_Blog_Web_132_42.pid --skip-external-locking --port=3308 --socket=/tmp/mysql-3308.sock
20872 pts/3    S      0:00 /bin/sh ./mysqld_safe --defaults-file=/data2/ali/mysql3309/my.cnf --user=root
20903 pts/3    Sl     0:00 /usr/local/mysql/bin/mysqld --defaults-file=/data2/ali/mysql3309/my.cnf --basedir=/usr/local/mysql --datadir=/data2/ali/mysql3309/ --user=root --pid-file=/data2/ali/mysql3309//XD_Blog_Web_132_42.pid --skip-external-locking --port=3309 --socket=/tmp/mysql-3309.sock

连接mysql
mysql -S /tmp/mysql-3108.sock



二、接着安装php
tar zxf php-5.2.4.tar.gz
cd php-5.2.4
./configure \
    --prefix=/usr/local/php-fcgi \
    --enable-fastcgi \
    --enable-force-cgi-redirect \
    --without-iconv \
    --enable-mbstring \
    --with-mysql=/usr/local/mysql
make
make install

复制参数文件到目标目录:
cp php.ini-dist /usr/local/php-fcgi/lib/php.ini

检查fast-cgi是否安装成功可以运行如下命令
/usr/local/php-fcgi/bin/php-cgi -v
显示如下信息,内容里包含“PHP 5.2.4 (cgi-fcgi)"表示支持fast-cgi了
PHP 5.2.4 (cgi-fcgi) (built: Oct 28 2007 20:08:41)
Copyright (c) 1997-2007 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies


三、最后安装lighttpd
1.安装配置lighttpd

1.1 首先创建运行lighttpd的用户和组

# groupadd lighttpd
# useradd -g lighttpd -s /sbin/nologin -d /dev/null lighttpd

1.2 开始安装lighttpd

# wget http://www.lighttpd.net/download/lighttpd-1.4.8.tar.gz
# tar -zxvf lighttpd-1.4.8.tar.gz
# cd lighttpd-1.4.8
# ./configure --prefix=/usr/local/lighttpd

# make
# make install

# mkdir /usr/local/lighttpd/conf
# mkdir /usr/local/lighttpd/log

# mv ./doc/lighttpd.conf /usr/local/lighttpd/conf/
# cp ./doc/rc.lighttpd.redhat /etc/init.d/lighttpd



vi conf/lighttpd.conf
将 #”mod_fastcgi”, 的#去掉
server.modules              = (
                               "mod_rewrite",
                               "mod_redirect",
#                               "mod_alias",
                                "mod_access",
#                               "mod_cml",
#                               "mod_trigger_b4_dl",
#                               "mod_auth",
#                               "mod_status",
#                               "mod_setenv",
                               "mod_fastcgi",

找到fastcgi的定义

#### fastcgi module
## read fastcgi.txt for more info
## for PHP don't forget to set cgi.fix_pathinfo = 1 in the php.ini
fastcgi.server             = ( ".php" =>
                               ( "localhost" =>
                                 (
                                   "socket" => "/var/run/lighttpd/php-fastcgi.socket",
                                   "bin-path" => "/usr/local/php-fcgi/bin/php-cgi"
                                 )
                               )
                            )

一开始我把配置写"bin-path" => "/usr/local/php-fcgi/bin/php"这样,发现报错,后来改了下以上的配置,发现OK了!
启动lighttpd命令是这样的:
/usr/local/lighttpd/sbin/lighttpd -f conf/lighttpd.conf



最后可以在程序目录下建个test.php,检查一下是否正常!
我在测试机上装了libevent和memcached,在启动memcached时会报找到不到libevent,建了个软链接"ln -s /usr/local/lib/libevent-1.2a.so.1 /usr/lib/"就OK了!


libevent-1.2a.tar.gz
memcached-1.1.13.tar.gz

ln -s /usr/local/lib/libevent-1.2a.so.1 /usr/lib/



装完后测试时命令行连接的方式是:

所有命令分为3种类型
存储命令(有3项:’set’、’add’、’repalce’)指示服务器储存一些由键值标识的数据。客户端发送一行命令,后面跟着数据区块;然后,客户端等待接收服务器回传的命令行,指示成功与否。
取回命令(只有一项:’get’)指示服务器返回与所给键值相符合的数据(一个请求中右一个或多个键值)。客户端发送一行命令,包括所有请求的键值;服务器每找到一项内容,都会发送回客户端一行关于这项内容的信息,紧跟着是对应的数据区块;直到服务器以一行“END”回应命令结束。
状态 命令"stats" 被用于查询服务器的运行状态和其他内部数据。有两种格式。不带参数的:

例子:
telnet 127.0.0.1 11211
Trying 127.0.0.1...
set kk 0 0 3
122
STORED



以下是我安装时看的文章


Linux下缓存服务器的应用

作者:tonyvicky
来自:LinuxSir.Org
摘要:由于数据库存储的数据量越来越大,查询速度也就变的越来越慢,因此就有了缓存服务器应用的必要,本文是介绍Memcached的安装以及简单的使用。

本文只介绍memcached的PHP的API,想查看其他关于Memcached的API文档案,请访问 http://www.danga.com/memcached/

目录
一、环境需求
二、下载相关软件
三、安装和配置
1、安装Memcached
2、安装memcache PHP模块
3、测试脚本

四、关于本文


++++++++++++++++++++++++++++++++++++++++
正文
++++++++++++++++++++++++++++++++++++++++

一、环境需求
安装Memcached需要libevent库的支持,所以请在安装Memcached之前检查有没有安装libevent。测试环境还需要PHP的支持,本文假设PHP已经安装到/usr/local/php目录下,也就是在编译PHP的时候使用perfix参数指定目录(--prefix=/usr /local/php)

二、下载相关软件

Memcached下载地址:http://www.danga.com/memcached/
memcache PHP模块下载地址: http://pecl.php.net/package/memcache 推荐使用1.5版
libevent 下载地址: http://www.monkey.org/~provos/libevent/

本文不再讲述如何安装libevent

三、安装和配置

1、安装Memcached
root@tonyvicky:# tar vxzf memcached-1.1.12.tar.gz
root@tonyvicky:# cd memcached-1.1.12
root@tonyvicky:# ./configure --prefix=/usr/local/memcached
root@tonyvicky:# make
root@tonyvicky:# make install

安装完之后要启动服务
root@tonyvicky:# cd /usr/local/memcached/bin
root@tonyvicky:# ./memcached -d -m 50 -p 11211 -u root

参数说明 -m 指定使用多少兆的缓存空间;-p 指定要监听的端口; -u 指定以哪个用户来运行

2、安装memcache PHP模块
root@tonyvicky:# tar vxzf memcache-1.5.tgz
root@tonyvicky:# cd memcache-1.5
root@tonyvicky:# /usr/local/php/bin/phpize
root@tonyvicky:# ./configure --enable-memcache --with-php-config=/usr/local/php/bin/php-config --with-zlib-dir
root@tonyvicky:# make
root@tonyvicky:# make install

安装完后会有类似这样的提示:
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20050922/

把这个记住,然后修改php.ini,把
extension_dir = "./"

修改为
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20050922/"

并添加一行
extension=memcache.so

3、测试脚本

自己写一个PHP程序测试一下吧
$memcache = new Memcache; //创建一个memcache对象
$memcache->connect('localhost', 11211) or die ("Could not connect"); //连接Memcached服务器
$memcache->set('key', 'test'); //设置一个变量到内存中,名称是key 值是test
$get_value = $memcache->get('key'); //从内存中取出key的值
echo $get_value;
?>
/usr/bin/mysqld_safe   --defaults-file=/etc/my.cnf   --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --skip-external-locking --socket=/var/lib/mysql/mysql.sock &

./bin/mysqld_safe --defaults-file=./my.cnf --default-character-set=utf8

load data from master


先是配置启动一个默认的3306,然后复制一个my.cnf到另外一个目录里面,比如:data2,然后再修改一下:

[mysqld]
port            = 3309
socket          = /tmp/mysql_3309.sock

[client]
#password       = your_password
port            = 3309      
socket          = /tmp/mysql_3309.sock


mysql -S /tmp/mysql_3309.sock  就登入了。。。



启动多个实例:

/usr/local/mysql/bin/mysqld_safe --defaults-file=/usr/local/mysql/data2/my.cnf --pid-file=/usr/local/mysql/data2/mysqld_3307.pid  --log-error=/usr/local/mysql/data2/mysqld_3307.log.erro
以上容易导致:Can't create/write to file '/usr/local/mysql/data2/mysqld_3307.pid' 是由于:/usr/local/mysql/data2/目录权限是root不是mysql用户导致!
为此:
/usr/local/mysql/bin/mysqld_safe --defaults-file=/usr/local/mysql/data2/my.cnf --pid-file=/tmp/mysqld_3307.pid --log-error=/usr/local/mysql/data2/mysqld_3307.log.erro --user=mysql                      
这句就ok了,为此,我们chown -R mysql /usr/local/mysql/data2/  后上面也就ok了。。。
如有不懂请参考:http://blog.csdn.net/cracker_love/archive/2007/04/23/1576586.aspx
                        http://www.cnblogs.com/adforce/archive/2012/03/15/2399468.html
我用的是VMware版本是 5.5.3,host机器运行的是windows Xp professional 。

1、安装VMware workstation

2、安装guest系统,这里我安装的Red Hat Linux9,安装过程中确保网络连接选择的是NAT方式,当然可以在安装完后进行修改。

3、到windows XP 中,查看所有的网络连接,你应该发现除了原有的网卡之外,又多了Vmnet1和Vmnet8。vmnet1是hostonly的接口,而Vmnet8是就是我们要使用的NAT的网络接口。

4、在win主机上用ipconfig查看VMnet8的IP地址,
一般是192.168.X.1/255.255.255.0,
此时VMnet8的设置应该是自动获取IP,现在改成静态IP,并把此IP直接填入VMnet8里,不设网关。

5、同时在VM网络设置里的NAT项中查看VMnet8,一般是192.168.X.2/255.255.255.0
这个地址就是VMnet8,NAT的网关

6、现在在LINUX下把网卡IP设置成和VMnet8一个网段的IP(192.168.X.Z/255.255.255.0)

7、网关设置成刚才查看的那个IP192.168.X.2即可

8、DNS和你host主机的一样就可以。

9、设置完成后,重新启动linux的网络服务。

10、测试一下,
ping 网关:ping 192.168.X.2
ping DNS:ping 你的DNS。

如果能ping通就ok了

<?php
$string = 'cup';
$name = 'coffee';
$str = 'This is a $string with my $name in it.';
echo $str. "\n";
eval("\$str = \"$str\";");
echo $str. "\n";
?>



<?php
class myclass {
   function say_hello()
   {
       echo "Hello!\n";
   }
}

$classname = "myclass";

call_user_func(array($classname, 'say_hello'));
?>
分页: 266/339 第一页 上页 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 下页 最后页 [ 显示模式: 摘要 | 列表 ]