夕口技術錄

專業上的小常識,備而用之~

Monthly Archives: 十一月 2008

MySQL – 詳細講解優化MySQL數據庫性能的十個參數

(1)、max_connections:
允許的同時客戶的數量。增加該值增加 mysqld 要求的文件描述符的數量。這個數字應該增加,否則,你將經常看到 too many connections 錯誤。 默認數值是100,我把它改為1024 。

(2)、record_buffer:
每個進行一個順序掃瞄的線程為其掃瞄的每張表分配這個大小的一個緩衝區。如果你做很多順序掃瞄,你可能想要增加該值。默認數值是131072(128k),我把它改為16773120 (16m)

[separator]
閱讀全文

MySQL – 詳細講解MySQL數據庫5.0的my.cnf配置選項

MySQL數據庫5.0的my.cnf配置選項概述:
mysqld程序–目錄和文件
basedir = path 使用給定目錄作為根目錄(安裝目錄)。
character-sets-dir = path 給出存放著字符集的目錄。
datadir = path 從給定目錄讀取數據庫文件。
pid-file = filename 為mysqld程序指定一個存放進程ID的文件(僅適用於UNIX/Linux系統); Init-V腳本需要使用這個文件裡的進程ID結束mysqld進程。
socket = filename 為MySQL客戶程序與服務器之間的本地通信指定一個套接字文件(僅適用於UNIX/Linux系統; 默認設置一般是/var/lib/mysql/mysql.sock文件)。
在Windows環境下,如果MySQL客戶與服務器是通過命名管道進行通信的,–sock選項給出的將是該命名管道的名字(默認設置是MySQL)。
lower_case_table_name = 1/0 新目錄和數據表的名字是否只允許使用小寫字母; 這個選項在Windows環境下的默認設置是1(只允許使用小寫字母)。


閱讀全文

MySQL 設定: my.cnf

Memory 在 1GB 以上

[client]
port = 3306
socket = /var/tmp/mysql.sock

[mysqld]
port = 3306
socket = /var/tmp/mysql.sock
skip-locking
set-variable = key_buffer=384M
set-variable = max_allowed_packet=1M
set-variable = table_cache=512
set-variable = sort_buffer=1M
set-variable = record_buffer=1M
set-variable = join_buffer_size=4M
set-variable = thread_cache=8
#thread_concurrency = 主機cpu數量*2
set-variable = thread_concurrency=2
set-variable = myisam_sort_buffer_size=64M
set-variable = max_connections=750
log-bin
server-id = 1
閱讀全文

JavaScript – 實現定時頁面跳轉

<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>
<SCRIPT LANGUAGE="JavaScript">
<!–
var time = 8; //秒

function Redirect(){
window.location = “http://tecblog.no-ip.org/";
}
var i = 0;
function dis(){
document.all.s.innerHTML = “系統忙錄中,剩" + (time – i) + “秒後,系統會自動幫您再試一次!!!";
i++;
}
timer=setInterval(‘dis()’, 1000);//顯示時間
timer=setTimeout(‘Redirect()’,time * 1000); //跳轉

//–>
</SCRIPT>
<BODY>
<span id="s"></span>
</BODY>
</HTML>

Apache、MPM、worker – 參數調整

每個進程可以擁有的線程數量是固定的。
服務器會根據負載情況增加或減少進程數量。
一個單獨的控制進程(父進程)負責子進程的建立。
每個子進程可以建立ThreadsPerChild數量的服務線程和一個監聽線程,
該監聽線程監聽接入請求並將其傳遞給服務線程處理和應答。

Apache總是試圖維持一個備用(spare)或是空閒的服務線程池。
這樣,客戶端無須等待新線程或新進程的建立即可得到處理。

初始化時建立的進程數量由StartServers指令決定。
隨後父進程檢測所有子進程中空閒線程的總數,
並新建或結束子進程使空閒線程的總數維持在MinSpareThreads和MaxSpareThreads所指定的範圍內。
由於這個過程是自動調整的,幾乎沒有必要修改這些指令的缺省值。
MinSpareThreads > 子進程 < MaxSpareThreads
ex.
MinSpareThreads 50 > ThreadsPerChild 50 < MaxSpareThreads 200
閱讀全文

[MySQL] – SUBSTRING 函數

SQL 中的 substring 函數是用來抓出一個欄位資料中的其中一部分。這個函數的名稱在不同的資料庫中不完全一樣:

  • MySQL: SUBSTR(), SUBSTRING()
  • Oracle: SUBSTR()
  • SQL Server: SUBSTRING()

最常用到的方式如下 (在這裡我們用SUBSTR()為例):

SUBSTR(str,pos): 由<str>中,選出所有從第<pos>位置開始的字元。請注意,這個語法不適用於SQL Server上。

SUBSTR(str,pos,len): 由<str>中的第<pos>位置開始,選出接下去的<len>個字元。

假設我們有以下的表格:

Geography 表格

region_name store_name
East Boston
East New York
West Los Angeles
West San Diego

例1:

SELECT SUBSTR(store_name, 3)
FROM Geography
WHERE store_name = ‘Los Angeles’;

結果:

‘s Angeles’

例2:

SELECT SUBSTR(store_name,2,4)
FROM Geography
WHERE store_name = ‘San Diego’;

結果:

‘an D’

[Linux][VIM] – 自動化程式排版

剛才發現在 vim 編輯器發現 一個超酷的功能,

就可它可以幫你自動排版程式碥,

它是用 Tab 為排版間距,

自動會判示是否要進行排版,

而到底要如何開始呢 ?

^^

請看以下說明…

1、當您現在是在編輯狀態時( o 、i …等都可進到此狀態),請先回到瀏覽狀態( Esc 鍵 )

2、先打 gg 回到最上方

3、shift + v 進行整行反白

4、shift + gg 讓反白由第一行圈選到最後一行

5、重頭戲來了,如何自動化排版呢 ?

請按 = 它就是自動化開始排版了

超酷的啦 ^^

[Linux][vim] – 讓vim同時能讀寫utf8和big5的檔案

# vi ~/.vimrc

set enc=utf-8
set fileencodings=utf-8,cp950,ucs-bom,default,latin1
set termencoding=cp950

重點是termencoding,

vim會把utf8格式的檔案讀出來轉成termencoding (for terminal),

也就是big5,於是putty / screen可以直接用big5(cp950)接收,

不用為了讀寫utf8對putty / screen做一堆設定

[Linux][vi][vim] – 刪除空白行

常遇到由他處把程式碼貼上 vi(vim) 時,

在行與行之間總會自動的被多出一行空白,

這是因為分列字元 $ 的關係,

因此解決的方式…

刪除沒有內容的空行
:1,g/^$/d

刪除包含有空格組成的空行
:1,g/^\s*$/d

除以空格或tab開頭到結尾的空行
:1,g/^[ |\t]*$/d

[Linux][wc]- 通過管道使用wc命令

wc命令可以用來計算 『 行、單詞、字符(字數+符號) 』的數量

[root@NetSecure include]# vi test
1
2adfsfdccc
2a
3a
a d dcc
sa d

[root@NetSecure include]# wc test
6  9 32 test

test file 裡有 6行、9個單詞、32個字符。

9個單詞 =>
1
2adfsfdccc
2a
3a
a
d
dcc
sa
d

用 -l、-w、c 參數分別只打印行,單詞或者字符數,比如:

[root@NetSecure include]# wc -l test
6 test

要得到當前目錄底下的文件和子目錄數,用wc來計算ls命令輸出的單詞數量。

[root@NetSecure include]# ls | wc -w
23


[root@NetSecure include]# sort addrbook | uniq | wc -l
計算文件addrbook裡面的所有不重複的行數。

[root@NetSecure include]# find ~ -name ‘*.Z’ -print | wc -l
計算當前目錄以及所有子目錄底下的以.Z結尾的文件數。

[root@NetSecure include]# grep ‘urgent’ TODO | wc -l
計算文件TODO裡面的所有含有字符串「urgent」的行數。

[root@NetSecure include]# ps aux | grep ‘liz’ | wc -l
計算當前進程中的所有屬於用戶liz的進程數。

[root@NetSecure include]# who | wc -l
計算當前登錄的用戶數。