摘自:http://edu.codepub.com/2009/0929/15909.php
應用舉例
(1) 判斷int型變量a是奇數(shù)還是偶數(shù)
a&1 = 0 偶數(shù)
a&1 = 1 奇數(shù)
(2) 取int型變量a的第k位 (k=0,1,2……sizeof(int)),即a>>k&1
(3) 將int型變量a的第k位清0,即a=a&~(1 < <k)
(4) 將int型變量a的第k位置1, 即a=a ¦(1 < <k)
(5) int型變量循環(huán)左移k次,即a=a < <k ¦a>>16-k (設sizeof(int)=16)
(6) int型變量a循環(huán)右移k次,即a=a>>k ¦a < <16-k (設sizeof(int)=16)
(7)整數(shù)的平均值
對于兩個整數(shù)x,y,如果用 (x+y)/2 求平均值,會產(chǎn)生溢出,因為 x+y 可能會大于INT_MAX,但是我們知道它們的平均值是肯定不會溢出的,我們用如下算法:
int average(int x, int y) //返回X,Y 的平均值
{
return (x&y)+((x^y)>>1);
}
(8)判斷一個整數(shù)是不是2的冪,對于一個數(shù) x >= 0,判斷他是不是2的冪
boolean power2(int x)
{
return ((x&(x-1))==0)&&(x!=0);
}
(9)不用temp交換兩個整數(shù)
void swap(int x , int y)
{
x ^= y;
y ^= x;
x ^= y;
}
(10)計算絕對值
int abs( int x )
{
int y ;
y = x >> 31 ;
return (x^y)-y ; //or: (x+y)^y
}
(11)取模運算轉(zhuǎn)化成位運算 (在不產(chǎn)生溢出的情況下)
a % (2^n) 等價于 a & (2^n - 1)
(12)乘法運算轉(zhuǎn)化成位運算 (在不產(chǎn)生溢出的情況下)
a * (2^n) 等價于 a < < n
(13)除法運算轉(zhuǎn)化成位運算 (在不產(chǎn)生溢出的情況下)
a / (2^n) 等價于 a>> n
例: 12/8 == 12>>3
(14) a % 2 等價于 a & 1
(15) if (x == a) x= b;
else x= a;
等價于 x= a ^ b ^ x;
(16) x 的 相反數(shù) 表示為 (~x+1)
實例
功能 ¦ 示例 ¦ 位運算
----------------------+---------------------------+--------------------
去掉最后一位 ¦ (101101->10110) ¦ x >> 1
在最后加一個0 ¦ (101101->1011010) ¦ x < < 1
在最后加一個1 ¦ (101101->1011011) ¦ x < < 1+1
把最后一位變成1 ¦ (101100->101101) ¦ x ¦ 1
把最后一位變成0 ¦ (101101->101100) ¦ x ¦ 1-1
最后一位取反 ¦ (101101->101100) ¦ x ^ 1
把右數(shù)第k位變成1 ¦ (101001->101101,k=3) ¦ x ¦ (1 < < (k-1))
把右數(shù)第k位變成0 ¦ (101101->101001,k=3) ¦ x & ~ (1 < < (k-1))
右數(shù)第k位取反 ¦ (101001->101101,k=3) ¦ x ^ (1 < < (k-1))
取末三位 ¦ (1101101->101) ¦ x & 7
取末k位 ¦ (1101101->1101,k=5) ¦ x & ((1 < < k)-1)
取右數(shù)第k位 ¦ (1101101->1,k=4) ¦ x >> (k-1) & 1
把末k位變成1 ¦ (101001->101111,k=4) ¦ x ¦ (1 < < k-1)
末k位取反 ¦ (101001->100110,k=4) ¦ x ^ (1 < < k-1)
把右邊連續(xù)的1變成0 ¦ (100101111->100100000) ¦ x & (x+1)
把右起第一個0變成1 ¦ (100101111->100111111) ¦ x ¦ (x+1)
把右邊連續(xù)的0變成1 ¦ (11011000->11011111) ¦ x ¦ (x-1)
取右邊連續(xù)的1 ¦ (100101111->1111) ¦ (x ^ (x+1)) >> 1
去掉右起第一個1的左邊 ¦ (100101000->1000) ¦ x & (x ^ (x-1))
判斷奇數(shù) (x&1)==1
判斷偶數(shù) (x&1)==0
例如求從x位(高)到y(tǒng)位(低)間共有多少個1
public static int FindChessNum(int x, int y, ushort k)
{
int re = 0;
for (int i = y; i <= x; i++)
{
re += ((k >> (i - 1)) & 1);
}
return re;
}
目錄結(jié)構:com/test/JniTest.java
package : com.test
javac com/test/JniTest.java
javah -classpath ./ -jni com.test.JniTest
在當前目錄下生成:
com_test_JniTest.h
方法一:
進入MySQL安裝目錄 打開MySQL配置文件 my.ini 或 my.cnf查找 max_connections=100 修改為 max_connections=1000 ,服務里重起MySQL即可
注意:如果新增max_connections,必須放在mysqld下,如:
方法二:
登錄至數(shù)據(jù)庫,執(zhí)行以下命令:
摘自:http://hi.baidu.com/zhouqleilo/blog/item/f76297127ed0c9085aaf5330.html
經(jīng)常使用的正則表達式
^ 行首
$ 行尾
. 任意一個字符
* 任意多個字符
\ 轉(zhuǎn)義字符
^ [ t h e ] 以t h e開頭行
[ S s ] i g n a [ l L ] 匹配單詞s i g n a l、s i g n a L、S i g n a l、S i g n a L
[Ss]igna[lL]". 同上,但加一句點
[ m a y M A Y ] 包含m a y大寫或小寫字母的行
^ U S E R $ 只包含U S E R的行
[tty]$ 以t t y結(jié)尾的行
\ . 帶句點的行
^ d . . x . . x . . x 對用戶、用戶組及其他用戶組成員有可執(zhí)行權限的目錄
^ [ ^ l ] 排除關聯(lián)目錄的目錄列表
^[^d] ls –l | grep ^[^d] 只顯示非文件夾的文件
[ . * 0 ] 0之前或之后加任意字符
[ 0 0 0 * ] 0 0 0或更多個
[ iI] 大寫或小寫I
[ i I ] [ n N ] 大寫或小寫i或n
[ ^ $ ] 空行
[ ^ . * $ ] 匹配行中任意字符串
^ . . . . . . $ 包括6個字符的行
[a- zA-Z] 任意單字符
[ a - z ] [ a - z ] * 至少一個小寫字母
[ ^ 0 - 9 " $ ] 非數(shù)字或美元標識
[ ^ 0 - 0 A - Z a - z ] 非數(shù)字或字母
[ 1 2 3 ] 1到3中一個數(shù)字
[ D d ] e v i c e 單詞d e v i c e或D e v i c e
D e . . c e 前兩個字母為D e,后跟兩個任意字符, 最后為c e
" ^ q 以^ q開始行
^ . $ 僅有一個字符的行
^".[0-9][0-9] 以一個句點和兩個數(shù)字開始的行
' " D e v i c e " ' 單詞d e v i c e
D e [ V v ] i c e \ . 單詞D e v i c e或d e v i c e
([0-9]{2}/[a-zA-Z]{3}/[0-9]{4}) 對 日期格式08/Jun/2010
([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}) I P地址格式
[ ^ . * $ ] 匹配任意行
[A-Za-z]* 匹配所有單詞
功能說明:查找文件里符合條件的字符串。
語 法:grep
[-abcEFGhHilLnqrsvVwxy][-A<顯示列數(shù)>][-B<顯示列數(shù)>][-C<顯示列數(shù)>]
[-d<進行動作>][-e<范本樣式>][-f<范本文件>][--help][范本樣式][文件或目錄...]
補充說明:grep指令用于查找內(nèi)容包含指定的范本樣式的文件,如果發(fā)現(xiàn)某文件的內(nèi)容符合所指定的范本樣式,預設
grep指令會把含有范本樣式的那一列顯示出來。若不指定任何文件名稱,或是所給予的文件名為“-”,則grep指令會從標準輸入設備讀取數(shù)據(jù)。
參 數(shù):
-a或--text 不要忽略二進制的數(shù)據(jù)。
-A<顯示列數(shù)>或--after-context=<顯示列數(shù)>
除了顯示符合范本樣式的那一列之外,并顯示該列之后的內(nèi)容。
-b或--byte-offset 在顯示符合范本樣式的那一列之前,標示出該列第一個字符的位編號。
-B<顯示列數(shù)>或--before-context=<顯示列數(shù)>
除了顯示符合范本樣式的那一列之外,并顯示該列之前的內(nèi)容。
-c或--count 計算符合范本樣式的列數(shù)。
-C<顯示列數(shù)>或--context=<顯示列數(shù)>或-<顯示列數(shù)>
除了顯示符合范本樣式的那一列之外,并顯示該列之前后的內(nèi)容。
-d<進行動作>或--directories=<進行動作>
當指定要查找的是目錄而非文件時,必須使用這項參數(shù),否則grep指令將回報信息并停止動作。
-e<范本樣式>或--regexp=<范本樣式> 指定字符串做為查找文件內(nèi)容的范本樣式。
-E或--extended-regexp 將范本樣式為延伸的普通表示法來使用。
-f<范本文件>或--file=<范本文件>
指定范本文件,其內(nèi)容含有一個或多個范本樣式,讓grep查找符合范本條件的文件內(nèi)容,格式為每列一個范本樣式。
-F或--fixed-regexp 將范本樣式視為固定字符串的列表。
-G或--basic-regexp 將范本樣式視為普通的表示法來使用。
-h或--no-filename 在顯示符合范本樣式的那一列之前,不標示該列所屬的文件名稱。
-H或--with-filename 在顯示符合范本樣式的那一列之前,表示該列所屬的文件名稱。
-i或--ignore-case 忽略字符大小寫的差別。
-l或--file-with-matches 列出文件內(nèi)容符合指定的范本樣式的文件名稱。
-L或--files-without-match 列出文件內(nèi)容不符合指定的范本樣式的文件名稱。
-n或--line-number 在顯示符合范本樣式的那一列之前,標示出該列的列數(shù)編號。
-q或--quiet或--silent 不顯示任何信息。
-r或--recursive 此參數(shù)的效果和指定“-d recurse”參數(shù)相同。
-s或--no-messages 不顯示錯誤信息。
-v或--revert-match 反轉(zhuǎn)查找。
-V或--version 顯示版本信息。
-w或--word-regexp 只顯示全字符合的列。
-x或--line-regexp 只顯示全列符合的列。
-y 此參數(shù)的效果和指定“-i”參數(shù)相同。
--help 在線幫助。
Man Page是Linux開發(fā)最常用的參考手冊,由很多頁面組成,每個頁面描述一個主題,這些頁面被組織成若干個Section。FHS(Filesystem Hierarchy Standard)標準規(guī)定了Man Page各Section的含義如下:
表 3.1. Man Page的Section
Section | 描述 |
---|---|
1 | 用戶命令,例如ls(1) |
2 | 系統(tǒng)調(diào)用,例如_exit(2) |
3 | 庫函數(shù),例如printf(3) |
4 | 特殊文件,例如null(4) 描述了設備文件/dev/null 、/dev/zero 的作用 |
5 | 系統(tǒng)配置文件的格式,例如passwd(5) 描述了系統(tǒng)配置文件/etc/passwd 的格式 |
6 | 游戲 |
7 | 其它雜項,例如bash-builtins(7) 描述了bash 的各種內(nèi)建命令 |
8 | 系統(tǒng)管理命令,例如ifconfig(8) |
注意區(qū)分用戶命令和系統(tǒng)管理命令,用戶命令通常位于/bin
和/usr/bin
目錄,系統(tǒng)管理命令通常位于/sbin
和/usr/sbin
目錄,一般用戶可以執(zhí)行用戶命令,而執(zhí)行系統(tǒng)管理命令經(jīng)常需要root
權限。系統(tǒng)調(diào)用和庫函數(shù)的區(qū)別將在第 2 節(jié) “main
函數(shù)和啟動例程”說明。
Man Page中有些頁面有重名,比如敲man printf
命令看到的并不是C函數(shù)printf
,而是位于第1個Section的系統(tǒng)命令printf
,要查看位于第3個Section的printf
函數(shù)應該敲man 3 printf
,也可以敲man -k printf
命令搜索哪些頁面的主題包含printf
關鍵字。本書會經(jīng)常出現(xiàn)類似printf(3)
這樣的寫法,括號中的3表示Man Page的第3個Section,或者表示“我這里想說的是printf
庫函數(shù)而不是printf
命令”。