Inode

Inode分为内存中的inode和文件系统中的inode,
inode两个功能:记录档案属性和指针, 权限与属性放到inode中,数据则放到block区块中。
基本上,inode 记录的文件数据至少有底下这些:
• 该文件的存取模式(read/write/excute);
• 该文件的拥有者与群组(owner/group);
• 该文件的容量;
• 该文件建立或状态改变的时间(ctime);
• 最近一次的读取时间(atime);
• 最近修改的时间(mtime);
• 定义文件特性的旗标(flag),如 SetUID…;
• 该文件真正内容的指向 (pointer);

inode 的数量与大小也是在格式化时就已经固定了,除此之外 inode 还有以下特色
• 每个 inode 大小均固定为 128 bytes;
• 每个文件都仅会占用一个 inode ;
• 文件系统能够建立的文件数量与 inode 的数量有关;
• 系统读取文件时需要先找到 inode,并分析 inode 所记录的权限与用户是否符合,若符合才能够开始实际读取 block 的内容。

Posted in linux by pangyt. No Comments

Linux文件时间( stat命令)

access time是文档最后一次被读取的时间。因此阅读一个文档会更新它的access时间,但它的modify时间和change时间并没有变化。cat、more 、less、grep、sed、tail、head这些命令都会修改文件的access时间。
change time是文档的索引节点(inode)发生了改变(比如位置、用户属性、组属性等);
modify time是文本本身的内容发生了变化。[文档的modify时间也叫时间戳(timestamp).]

chmod, chown,create,mv等动作会将Linux文件的change time修改为系统当前时间.
ls命令看到的是modify time
用wget等工具下载的文件,cahnge time不会被修改。
用vi等工具编辑一个文件保存后,modify time会被修改。
用ls -l命令不会修改文件的access time,但cat命令会修改access time。

Posted in linux by pangyt. No Comments

JavaScript

step1. 读入第一个代码段
step2. 做语法分析,有错则报语法错误(比如括号不匹配等),并跳转到step5
step3. 对var变量和function定义做“预解析”(永远不会报错的,因为只解析正确的声明)
step4. 执行代码段,有错则报错(比如变量未定义)
step5. 如果还有下一个代码段,则读入下一个代码段,重复step2
step6. 结束
JS采用的是“词法作用域”,亦即,一个函数的调用对象该挂在哪个作用域,是由它的定义语句决定,而不是由它的调用语句决定。
g1和g2这两个函数,并不是在写function() { return x; }的时候定义的哦!也就是说,虽然写了function语句,但不代表这个函数就马上被定义了。这点很关键!因为只有当f(x)被调用执行的时候,这个function语句才会被执行,这个函数才会被定义!其实这里的问题在于,“定义”的概念。在JS中,“定义一个函数”,意味着要“执行function语句”。

任何执行上下文时刻的作用域, 都是由作用域链(scope chain, 后面介绍)来实现.
在一个函数被定义的时候, 会将它定义时刻的scope chain链接到这个函数对象的[[scope]]属性.
在一个函数对象被调用的时候,会创建一个活动对象(也就是一个对象), 然后对于每一个函数的形参,都命名为该活动对象的命名属性, 然后将这个活动对象做为此时的作用域链(scope chain)最前端, 并将这个函数对象的[[scope]]加入到scope chain中.
XSL 指扩展样式表语言(EXtensible Stylesheet Language)。

Posted in linux by pangyt. No Comments

Mysql

/home/work/thirdparty/mysql5/bin/mysqladmin –root –p shutdown
/home/work/thirdparty/mysql5/bin/mysqld_safe &
查看超时配置:Show variables;
show variables like ‘%timeout%’;
查看数据库状态:show status;
show status where variable_name like ‘%abort%’;
show status like ‘%slow_queries%’;
在终端中记录操作日志:
mysql> \T /tmp/log

1.导出整个数据库
mysqldump -u 用户名 -p 数据库名 > 导出的文件名
mysqldump -u wcnc -p smgp_apps_wcnc > wcnc.sql
2.导出一个表
mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名
mysqldump -u wcnc -p smgp_apps_wcnc users> wcnc_users.sql
3.导出一个数据库结构
mysqldump -u wcnc -p -d –add-drop-table smgp_apps_wcnc >d:\wcnc_db.sql -d 没有数据 –add-drop-table 在每个create语句之前增加一个drop table

4.导入数据库 mysql>source d:\wcnc_db.sql

ALTER TABLE…DISABLE KEYS让MySQL停止更新MyISAM表中的非唯一索引(非唯一和唯一的关系类似人名和身份证的关系)。然后使用ALTER TABLE … ENABLE KEYS重新创建丢失的索引。进行此操作时,MySQL采用一种特殊的算法,比一个接一个地插入关键字要快很多。因此,在进行成批插入操作前先使关键字禁用可以大大地加快速度。使用ALTER TABLE … DISABLE KEYS除了需要获得以前提到的权限以外,还需要获得INDEX权限。

SET语法
@var_name,用户变量。用户变量与连接有关。
GLOBAL或@@global,全局变量。
SESSION, @@session,或@@,会话变量。
LOCAL和@@local是SESSION和@@session地同义词。如果没有修改符,则SET设置会话变量。
全局变量影响服务器整体操作。会话变量影响具体客户端连接的操作。
SET NAMES ‘x’语句与这三个语句等价:
mysql> SET character_set_client = x;
mysql> SET character_set_results = x;
mysql> SET character_set_connection = x;

查询缓存
show variables like “%query_cache%”;
show status like “%Qcache_hits%”
Data Buffer

设置变量的范围
Global
session

之前装mysql都是在/etc下创建my.cnf文件,运行一直正常。

现在发现mysql实际对my.cnf是有四个位置的优先级区别

/etc/my.cnf

/etc/mysql/my.cnf

PREFIX/etc/my.cnf  mysql安装路径下的etc目录

~/.my.cnf   当前用户的home目录中.my.cnf

优先级从高到底,这个可以通过运行 mysql安装目录下 bin/my_print_defaults 查看。

不过在实际的使用中,我会把my.cnf放到mysql的安装目录下,也就是 PREFIX/my.cnf ,这样mysq也是能找到cnf文件的。

Mysql 的 binlog

二进制日志的主要目的是在恢复时能够最大可能地更新数据库,因为二进制日志包含备份后进行的所有更新。

二进制日志还用于在主复制服务器上记录所有将发送给从服务器的语句。

可以用RESET MASTER语句删除所有二进制日志文件,或用PURGE MASTER LOGS只删除部分二进制文件。

Mysql的timeout设置

1、在db_mysql中的function Db中的return $this->connection;之前加上下面的语句即可解决这个问题:

mysql_query(“set wait_timeout 28800″, $this->connection);

2、show variables like “%timeout%”;显示的是经过当前的客户端初始化的值,并不一定是my.conf的值。

My.conf -> 全局变量->客户端继承后的值-> show variables like “%timeout%”;

其他

MySQL支持大量的列类型,它可分为3类:数字、日期和时间以及字符串(字符)。

% 通配符可以匹配空纪录,但是却不能匹配 NULL 纪录。

注意在搜索 NULL 时,必须用“ IS ”关键字,而 LIKE 时不会正常工作的。

就我的经验而言,任何字段都应该声明为 NOT NULL 。

Posted in linux by pangyt. No Comments

linux终端

①tty(终端设备的统称):teletypewriters
终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备
②pty(虚拟终端):pseudo-tty
远程telnet到主机或使用xterm时也需要一个终端交互.
是成对的逻辑终端设备(即master和slave设备, 对master的操作会反映到slave上)。
③pts/ptmx(pts/ptmx结合使用,进而实现pty):
pts(pseudo-terminal slave)是pty的实现方法,与ptmx(pseudo-terminal master)配合使用实现pty。

在Linux 系统中,计算机显示器通常被称为控制台终端 (Console)。它仿真了类型为Linux的一种终端(TERM=Linux),并且有一些设备特殊文件与之相关联:tty0、tty1、tty2 等。

Posted in linux by pangyt. No Comments

cookie设置之跨域总结

子域可以设置根域下的cookie,反之则不行
同级域名无法跨
可以设置父级域
无法设置子级域

Posted in linux by pangyt. No Comments

spawn-fcgi

Fastcgi php spawn-fcgi的-F –C问题。
-C (PHP only) numbers of childs to spawn (default 5)
-F numbers of childs to fork (default 1)

Posted in linux by pangyt. No Comments

常用端口号

21 ftp File Transfer[Control]    文件传输协议(控制)
22 ssh SSH Remote Login Protocol   SSH远程登录协议
23 telnet Telnet     终端仿真协议
53 domain Domain Name Server    域名服务器
80 http World Wide Web HTTP     全球信息网超文本传输协议

Posted in linux by pangyt. No Comments

前端技术基础

像素(px)根据显示器的分辨率来确定长度,在web应用中多采用该单位;

点数(pt)根据windows系统定义的字号大小来确定长度;

英寸(in)、厘米(cm)和毫米(mm)
根据显示的实际尺寸来确定长度。此类单位不随显示器分辨率的改变而改变;

12pt字(pc)
即windows系统定义的12字号大小为单位(1pc=12pt)。该单位前输入的数字表示字号大小的倍数。如{font-size: 2pc;}表示文字大小为24pt;

以上单位均为定值,改变浏览器中浏览文字大小不会对应用这些单位的文字产生变化。

字体高(em) 表示当前文本的尺寸。如{font-size:2em}是指文字大小为原来的2倍;

字体x的高(ex)表示当前字母“x”的高度;

% 是以当前文本的百分比定义尺寸。如{font-size:200%}是指文字大小为原来的2倍;

8b等于1B

Posted in linux by pangyt. No Comments

系统查找动态库的顺序

系统查找动态库的顺序:LD_LIBRARY_PATH,/lib ,/usr/lib等,/etc/ld.so.conf里指定的(如果ld.so.conf存在)
PATH:安装一个包后可能会在安装目录建立一个bin目录,里面都是些可执行程序,为了让系统能找到这些程序,就需要我们把该路径加入到PATH环境变量中。
LDFLAGS:gcc等编译器会用到的一些优化参数,也可以在里面指定库文件的位置。
LD_RUN_PATH:用来指定在编译时到哪些目录去寻找动态库,多个目录以冒号隔开
LD_LIBRARY_PATH:用来指定在运行时到哪些目录去寻找动态库,多个目录以冒号隔开
LD_RUN_PATH lets you do that at link time。
LD_LIBRARY_PATH lets you do the same thing at run time。
The directory assigned to LD_RUN_PATH is searched before the directory assigned to LD_LIBRARY_PATH.
PATH变量的分隔符是:号,其他的是空格,
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/work/lib/
使Linux启动之后就加载LD_LIBRARY_PATH的路径
/etc/rc.d/rc.local文件中加入export LD_LIBRARY_PATH=”xxxxx” 即可

ldconfig动态链接库管理命令
dconfig命令的用途,主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(格式如前介绍,lib*.so*),进而创建出动态装入程序(ld.so)所需的连接和缓存文件。缓存文件默认为/etc /ld.so.cache,此文件保存已排好序的动态链接库名字列表。

Posted in linux by pangyt. No Comments