2018年5月31日 星期四

2018年5月21日 星期一

php教學

http://www.twhappy.com/index.php?action=blog&category=6

http://www.cg.com.tw/PHP/

https://www.youtube.com/watch?v=RpCKPQ5yDhg

http://www.csie.sju.edu.tw/cm/course/phpteach.htm

http://www.jollen.org/php/

XMAPP PHP.ini 設定

php.ini設定檔中文說明


Step4:設定php.ini 檔

short_open_tag=on | off
 是否允許使用<? ?>這種簡單的標識格式,當設定為Off時只有<?php ?>這種標識能被識別.

asp_tags=on | off
; 是否允許使用ASP風格的標識格式<% %>.

register_globals=on | off
; 是否將這些 EGPCS 變量註冊為全局變量.
; 若你不想讓會員資料不在全局範圍內混亂的話,你可以想關閉它.
; 這和 track_vars 連起來用更有意義 — 這樣你可以通過$HTTP_*_VARS[] 數組瀏覽所有的GPC變量.
; 建議儘量不使用全局變量,因為它有可能引起安全問題,所以這個指令是不被推薦的.


display_error=on | off
顯示錯誤(作為輸出的一部分).在WEB網站上,建議您關掉這個功能,並用錯誤日誌的方式來代替.
; 如果開啟此功能可能會給您帶來安全問題,例如檔案在伺服器上的路徑和您的資料庫或其它訊息.
; 不過在Debug過程中,開啟此項會給調試程式帶來極大的方便.

; 如果display_startup_errors設定為Off,即使display_errors被設定成On,
; 在PHP啟動過程中的錯誤也不會被顯示.如果不是在Debug過程中,建議您關閉此項.
display_startup_errors = On


date.timezone=Asia/Taipei


註:替代方案是安裝XAMPP, 優點是省去軟體間協同工作的「環境設定」

----

;;;;;;;;;;;;;;;;;;;
; PHP.INI中文說明 ;
;;;;;;;;;;;;;;;;;;;
; 這個檔案是PHP安裝的預設配置檔案.
; 預設設定下, PHP是以程式開發為目的,而不是為了其它目的!
; 由於PHP在應用在您的網站之前必須考慮一些安全問題,
; 所以請您參考php.ini-recommended(被推薦的)中相關參數的設定,
; 另外,您也可以在以下網站獲得幫助:http://php.net/manual/en/security.php.


;;;;;;;;;;;;;;;;
; 關於這個檔案 ;
;;;;;;;;;;;;;;;;
; 這個檔案控制著PHP的許多方面,為了能讓PHP正常讀取它,這個檔案必須被命名為"php.ini".
; PHP運行時依次在以下路徑中尋找這個檔案:目前工作目錄,環境變量PHPPRC指定路徑,編譯時
; 指定的路徑.
; 在Windows下,編譯時指定路徑就是Windows的安裝目錄,
; 在命令提示符下,可以用-c的參數來替代php.ini的查找路徑.
;
; 這個配置檔案的設定極其簡單. 以空白字元和分號開始的行被忽略(可能您已經想到了^_^),
; 雖然它們可能在將來有意義...
;
; 您在配置php.ini時,請使用以下的指定語法:
; 指示 = 值
; 注意:指示標識符是區分大小寫的,例如foo=bar和FOO=bar是不同的.
; 值可以是一個字元,一個數字,一個PHP常量(例如E_ALL和M_PI),
; 一個INI常量(例如On,Off,True,False,Yes,No和None),一個表達式(例如E_ALL & ~E_NOTICE),
; 或是用引號括起來的字元串(例如"foo").
;
; INI檔案中的表達式被限製為下面的運算符:
; | 代表 OR
; & 代表 AND
; ~ 代表 NOT(except)
; ! 代表 NOT
;
; 其中佈爾值可用1,On,True或Yes表示設為開的狀態,
; 可用0,Off,False或No表示設為關的狀態.
;
; 一個空字元串可以以在等號後不寫任何東西的方法表示,或者用None表示.例如:
;
; foo = ; 將foo值設定為空字元串
; foo = none ; 將foo值設定為空字元串
; foo = "none" ; 將foo值設定為字元串'none'
;
; 如果您在值設定中使用常量,並且這些常量屬於動態調入的擴展庫(PHP擴展或Zend擴展),
; 那麼,您只能在調入這些擴展庫之後再使用這些常量.
;
; 所有在 php.ini-dist 檔案裡設定的值與內建的預設值相同(就是說,如果 php.ini
; 沒被使用或者你刪掉了這些行,預設值與之相同).


;;;;;;;;;;;
; 語言選項;
;;;;;;;;;;;

; 是否使PHP腳本語言在Apache伺服器下有效.
engine = On

; 是否允許使用<? ?>這種簡單的標識格式,當設定為Off時只有<?php ?>這種標識能被識別.
short_open_tag = On

; 是否允許使用ASP風格的標識格式<% %>.
asp_tags = Off

; 浮點類型數顯示時的有效位數.
precision = 12

; 是否開啟2000年適應 (可能在非2000年適應的瀏覽器中導致問題).
y2k_compliance = Off

; 輸出緩存允許你甚至在輸出正文內容之後發送header標頭(包括cookies), 但這樣會使速度有些下降.
; 您可以在運行時使用輸出緩存功能,也可以把output_buffering的值設為On使所有檔案的輸出緩存打
; 開.您也可以使用一個數值(單位是byte)作為輸出緩存上限,例如: output_buffering=4096.
output_buffering = 4096

; 您可以把腳本輸出到一個函數,
; 字元編碼將會自動地轉換為您指定的編碼,這樣可能會對您處理以及記錄日誌有所幫助.
; 例如,如果您把 output_handler 設為 ob_iconv_handler,
; 輸出會為支援gzip或deflate編碼的瀏覽器設一個輸出處理器自動地開啟輸出緩衝.
;
; 說明: 您不必完全依照這個檔案中的設定去編寫腳本程式,相反地,您應該使用ob_start()函數
; 具體設定,如果您在不瞭解正在被執行的腳本的情況下使用這個INI檔案中的配置,就有
; 可能引起一些問題.
; 您不能同時使用"ob_gzhandler" 和 "zlib.output_compression".
;output_handler =

; 輸出會為支援壓縮使用了zlib庫
; 這個選項的有效值是'off','on',或者一個具體的值,預設值是4KB.
; 說明: 您可以增大數值來增加執行效率.
; 您必須使用zlib.output_handler來替代標準的output_handler否則輸出緩存會失效.
; .
zlib.output_compression = Off

; 如果zlib.output_compression被設為On,您就不能再額外地指定輸出的值.
; 在不同在設定下,結果是一樣的.
;zlib.output_handler =

; 強制更新使PHP輸出層在每個輸出塊之後自動更新自身資料.
; 這等效於在執行每個print()或echo()或每個HTML塊後調用flush()函數.
; 開啟這項設定可能會在運行時導致嚴重的衝突,建議僅在debug過程中開啟.
implicit_flush = Off

; 得到一個串行變量,並將其轉化為PHP值,可能為整型,雙精度,字元串,數組,或對像.
; 如果些函數發現了未定義的或類或參數,將會出現提示,如果您想使用這一函數,請設定
; 這個功能.
unserialize_callback_func=

; 是否強迫函數調用時按引用傳遞參數,在將來的PHP/Zend中,這一功能很可能不會再被支援,
; 建議您把此項設為Off,並在腳本中用函數聲明此變量,以便在將來的PHP下正常運行.
allow_call_time_pass_reference = Off

; 安全模式
; 是否啟用安全模式
safe_mode = Off

; 預設設定為Off,在開啟檔案時,安全模式會作一個UID對比檢查,如果設定為On,則作GID對比.
safe_mode_gid = Off

; 如果PHP在安全模式下運行,UID/GID檢查將在這個命令指定的檔案夾及其子檔案夾中進行.
safe_mode_include_dir =

; 如果PHP在安全模式下運行,system()和其它執行系統程式的函數都只能執行這個指令所指定
; 的目錄
safe_mode_exec_dir =

; 改變某些環境變量可能是一個有效的安全措施.
; 這個指令包括了一個含有符號的前綴.在安全模式下,會員只能改變或設定以這裡指定的前綴
; 的名字的環境變量.
; 說明: 如果不指定前綴,PHP會允許會員任意修改環境變量.
safe_mode_allowed_env_vars = PHP_

; 這個指令包含了一個符號,使得會員不能使用putenv()函數修改環境變量.
; 即使safe_mode_allowed_env_vars設定為允許會員修改,這些環境變量也會受到保護.
safe_mode_protected_env_vars = LD_LIBRARY_PATH

; 如果設定了open_basedir,將會使所有被定義的目錄及其子目錄的操作受到限制,這一指令在
; 每一個目錄和每一個虛擬主機構造檔案中著很大的作用.不論safe_mode被設定為On或是Off,
; 這個指令都不會受到任何影響.
;open_basedir =

; 這個指令允許您基於安全原因限制某些函數的使用.
; 如果您想禁用多個函數,可以在函數間用逗號隔開. 同樣地,
;不論safe_mode被設定為On或是Off,這個指令都不會受到任何影響.
disable_functions =

; 語法以高亮度模式顯示的色彩.所有能被<font color="??????">接受的東西就可以運行.
;highlight.string = #DD0000
;highlight.comment = #FF9900
;highlight.keyword = #007700
;highlight.bg = #FFFFFF
;highlight.default = #0000BB
;highlight.html = #000000


;;;;;;;;;;;;
; 雜項設定 ;
;;;;;;;;;;;;
; 是否承認您的伺服器上安裝了PHP這一事實(例如通過附加簽名到WEB伺服器上)
; 這個指令不會引起安全問題,但它使檢查你的伺服器上是否安裝了PHP有了可能.
expose_php = On


;;;;;;;;;;;;
; 資源限制 ;
;;;;;;;;;;;;

max_execution_time = 15 ; 每個腳本的最大執行時間, 按秒計.
max_input_time = 60    ; 每個腳本的最大讀取資料時間, 按秒計.
memory_limit = 8M ; 一個腳本可使用記憶體的最大值 (這裡是8MB).

;;;;;;;;;;;;;;;;;;
; 錯誤控制和記錄 ;
;;;;;;;;;;;;;;;;;;

; 錯誤報告是按比特記的,或者將數字加起來得到想要的錯誤報告等級.
; E_ALL - 所有的錯誤和警告.
; E_ERROR - 運行時的嚴重錯誤.
; E_WARNING - 運行時的警告(並不是非常嚴重的).
; E_PARSE - 編譯時解析錯誤.
; E_NOTICE - 運行時提醒(這些經常是是你的代碼的bug引起的,
; 也可能是有意的行為造成的(如基於未初始化的變量自動初始化為一個
; 空字元串而使用一個未初始化的變量).
; E_CORE_ERROR - 發生於PHP啟動時初始化過程中的致命錯誤.
; E_CORE_WARNING - 發生於PHP啟動時初始化過程中的警告(非致命性錯).
; E_COMPILE_ERROR - 編譯時致命性錯誤.
; E_COMPILE_WARNING - 編譯時警告(非致命性錯).
; E_USER_ERROR - 會員產生的出錯消息.
; E_USER_WARNING - 會員產生的警告消息.
; E_USER_NOTICE - 會員產生的提醒消息.
;
; 例子:
;
; - error_reporting = E_ALL & ~E_NOTICE 顯示所有的錯誤,除了提醒.
;
; - error_reporting = E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR 僅顯示錯誤.
;
error_reporting = E_ALL & ~E_NOTICE

; 顯示錯誤(作為輸出的一部分).在WEB網站上,建議您關掉這個功能,並用錯誤日誌的方式來代替.
; 如果開啟此功能可能會給您帶來安全問題,例如檔案在伺服器上的路徑和您的資料庫或其它訊息.
; 不過在Debug過程中,開啟此項會給調試程式帶來極大的方便.
display_errors = On

; 如果display_startup_errors設定為Off,即使display_errors被設定成On,
; 在PHP啟動過程中的錯誤也不會被顯示.如果不是在Debug過程中,建議您關閉此項.
display_startup_errors = On

; 在日誌檔案中記錄錯誤(伺服器日誌,stderr標準錯誤輸出, 或者error_log (下面的)).
; 正如上面說明的那樣,強烈建議你在最終發表的web網站時以日誌方式記錄錯誤.
log_errors = Off

; 設定錯誤日誌檔案最大值.預設大小是1024M.
log_errors_max_len = 1024

; 不記錄重複的訊息.在ignore_repeated_source被設為On前,重複的訊息一定發生在同一文
; 件的同一行
ignore_repeated_errors = Off

; 忽略重複多次的訊息.如果ignore_repeated_source被設為On,您將不能記錄不同檔案或不同行
的相同訊息.
ignore_repeated_source = Off

; 如果此命令設為Off,記憶體溢出將不會被顯示.
; 而這只在Debug, 並且error reporting中包含E_WARNING時才有意義.
report_memleaks = On

; 是否在$php_errormsg中存儲錯誤/警告訊息(布爾).
track_errors = Off

; 是否在錯誤訊息中包含HTML語法錯誤.
html_errors = On

; 如果您已經讓PHP記錄HTML錯誤,並想通過在錯誤頁面上的按這裡來獲得詳細訊息,
; 您可以從http://www.php.net/docs.php下載一個文件,
; 並且修改docref_root來使用這個文件,這個值必須以'/'開頭,您也必須指定該文件的副檔名.
;docref_root = /phpmanual/
;docref_ext = .html

; 在錯誤訊息輸出前的字元.
;error_prepend_string = "<font color=ff0000>"

; 在錯誤訊息輸出後的字元.
;error_append_string = "</font>"

; 用於記錄錯誤日誌的指定檔案.
;error_log = filename

; 用系統日誌記錄錯誤(NT,XP,w2k下的事件觀看器,WIN95和WIN98下無效).
;error_log = syslog


;;;;;;;;;;;;
; 資料處理 ;
;;;;;;;;;;;;
;
; 說明 - track_vars 在PHP 4.0.3中是一直啟動的

; 在PHP中分隔URL的符號,預設是 "&".
;arg_separator.output = "&amp;"

; 在變量中插入URL的分隔符號,預設是 "&".
; 說明: 任何字元在這裡都是作為分隔符的!
;arg_separator.input = ";&"

; 這條指示描述了PHP記錄GET,POST,Cookie,Environment和Built-in這些變量的順序.
; 以G,P,C,E和S代表,通常以EGPCS或GPC的方式引用,按從左到右記錄,最新的記錄覆蓋較舊的.
variables_order = "EGPCS"

; 是否將這些 EGPCS 變量註冊為全局變量.
; 若你不想讓會員資料不在全局範圍內混亂的話,你可以想關閉它.
; 這和 track_vars 連起來用更有意義 — 這樣你可以通過$HTTP_*_VARS[] 數組瀏覽所有的GPC變量.
; 建議您儘量不使用全局變量,因為它有可能引起安全問題,所以這個指令是不被推薦的.
register_globals = On

; 是否啟用argv和argc變量(這裡argv為數組,argc為變量數).
; 如果您不使用這些變量,您可以設為Off來增加PHP的執行效率.
register_argc_argv = Off

; PHP能接收POST資料的最大值.
post_max_size = 4M

; 不推薦您使用此指令,推您使用variables_order來代替.
gpc_order = "GPC"

;;;;;;;;;;;;
; 魔術引用 ;
;;;;;;;;;;;;

; 是否對引入的GET/POST/Cookie資料啟用魔術引用.
magic_quotes_gpc = On

; 是否對運行時產生的資料啟用魔術引用,例如用SQL搜尋得到的資料,用exec()函數得到的資料等.
magic_quotes_runtime = Off

; 是否使用Sybase形式的魔術引用(即用'代替'').
magic_quotes_sybase = On

; 在PHP文件前的後自動填加檔案.
auto_prepend_file =
auto_append_file =

; 像4.0b4一樣,PHP總是預設地在"Content-type:"頭標輸出一個字元的編碼方式
; 只要設定為空,就會取消這個字元了.PHP的內建預設值是text/html.
default_mimetype = "text/html"
;default_charset = "iso-8859-1"

; 是否一直使用$HTTP_RAW_POST_DATA變量.
always_populate_raw_post_data = Off

; 是否允許處理PHP腳本以外的HTTP請求.
; 如果您想獲得這些請求的資料, 您必須同時設定always_populate_raw_post_data變量.
;allow_webdav_methods = On

;;;;;;;;;;;;
; 路徑設定 ;
;;;;;;;;;;;;

; UNIX伺服器使用如下路徑: "/path1:/path2"
;include_path = ".:/php/includes"
;
; Windows伺服器使用如下路徑: "path1;path2"
;include_path = ".;c:phpincludes"

; PHP檔案的根目錄, 僅在非空時有效,如果PHP被設定為安全模式,PHP不會處理此目錄以外檔案.
doc_root =

; 在使用/~username動工開啟腳本時,PHP尋找該腳本的路徑,同樣地僅在非空時有效.
user_dir =

; 存放可加載的擴展庫(模塊)目錄的路徑.
extension_dir = ./

; 是否啟用dl()函數.在多線程的服務上(如IIS和Zeus)dl()函數不能很好的工作,
; 在多線程服務上該指令預設被禁止.
enable_dl = On

; 在很多伺服器上,以CGI形式運行PHP來提高安全性能.預設設定下,PHP設其為On.
; 您可以在這裡關掉它,但關掉以後是有風險的.但在IIS下您則可以毫無風險的關掉它,
; 事實上,在IIS下您必須關掉它.
; cgi.force_redirect = 1

; 如果cgi.force_redirect功能開啟,並且您不是在Apache或Netscape(iPlanet)伺服器下運行,
您可能須要設定一個環境變量名,PHP將尋找此變量來確定可以繼續執行,設定此變量可能會引起
安全問題,避免的方法是先弄清楚您在作什麼~~~
; cgi.redirect_status_env = ;

; 此選項提供了在IIS伺服器下的智能化安全解決風格,如果在IIS下請設為On,目前不支援Apache
; 伺服器(2002年3月17日),預設值是0.
; fastcgi.impersonate = 1;

; 在發送HTTP響應時cgi.rfc2616_headers告訴PHP使用哪種headers.
; 如果設為0,PHP的發送情況是被Apache所支援的,如果設為1,PHP將發送自適應的RFC2616headers.
; 在IIS下,請設其值為1,預設值是0.
;cgi.rfc2616_headers = 0


;;;;;;;;;;;;
; 檔案上傳 ;
;;;;;;;;;;;;

; 是否允許以HTTP方式上傳檔案.
file_uploads = On

; 以HTTP方式上傳檔案的臨時目錄 (未指定時使用系統預設).
;upload_tmp_dir =

; 允許上傳檔案的最大值.
upload_max_filesize = 2M


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Fopen wrappers(這個俺不會譯5555~) ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; 是否允許把URLs(如http://和ftp://)當作檔案處理.
allow_url_fopen = On

; 指定一個匿名FTP瀏覽密碼(例如您的電子信箱)
;from="Neter@Neter.CN"

; 指定User-Agent字元串(User-Agent是啥呀?會員代理?55555555~)
; user_agent="PHP"

; 預設連接超時時間(以秒計).
default_socket_timeout = 60

; 如果您的腳本程式不是在蘋果機等作業系統下,而只是運行在unix或者win32系統下,
; 開啟這個變量將使PHP自動地檢查已結束的那些字元變量以便fgets()函數和file()函數
; 不受限制的表達.
; auto_detect_line_endings = Off


;;;;;;;;;;;;
; 動態擴展 ;
;;;;;;;;;;;;
;
; 如果您想讓動態擴展庫能夠自動的被加載,請使用下面的語法.
;
; extension=modulename.extension
;
; 例如在Windows下:
;
; extension=msql.dll
;
; 在UNIX下:
;
; extension=msql.so
;
; 注意後面的值只是模塊的名字,並不包含該模塊所在的目錄,您應該用上面的extension_dir
; 來指示指定擴展庫的路徑.



;Windows擴展
;注意:PHP已經內建了對MySQL和ODBC支援,所以不必再為其配置任何dll擴展.
;
;extension=php_bz2.dll
;extension=php_cpdf.dll
;extension=php_crack.dll
;extension=php_curl.dll
;extension=php_db.dll
;extension=php_dba.dll
;extension=php_dbase.dll
;extension=php_dbx.dll
;extension=php_domxml.dll
;extension=php_exif.dll
;extension=php_fbsql.dll
;extension=php_fdf.dll
;extension=php_filepro.dll
;extension=php_gd.dll
;extension=php_gd2.dll
;extension=php_gettext.dll
;extension=php_hyperwave.dll
;extension=php_iconv.dll
;extension=php_ifx.dll
;extension=php_iisfunc.dll
;extension=php_imap.dll
;extension=php_interbase.dll
;extension=php_java.dll
;extension=php_ldap.dll
;extension=php_mbstring.dll
;extension=php_mcrypt.dll
;extension=php_mhash.dll
;extension=php_mime_magic.dll
;extension=php_ming.dll
;extension=php_mssql.dll
;extension=php_msql.dll
;extension=php_oci8.dll
;extension=php_openssl.dll
;extension=php_oracle.dll
;extension=php_pdf.dll
;extension=php_pgsql.dll
;extension=php_printer.dll
;extension=php_shmop.dll
;extension=php_snmp.dll
;extension=php_sockets.dll
;extension=php_sybase_ct.dll
;extension=php_w32api.dll
;extension=php_xmlrpc.dll
;extension=php_xslt.dll
;extension=php_yaz.dll
;extension=php_zip.dll


;;;;;;;;;;;;
; 模塊設定 ;
;;;;;;;;;;;;

[系統日誌]
; 是否定義各種系統日誌變量(如$LOG_PID,$LOG_CRON等).關掉這個指令將會提高效率.
; 您可以在運行時使用define_syslog_variables()函數來定義這些變量.
define_syslog_variables = Off

[郵件功能]
; 僅在Windows下.
SMTP = localhost

; 僅在Windows下.
sendmail_from = Administrator@localhost.com

; 僅在Unix下.您也可以指定參數(預設值是: "sendmail -t -i").
;sendmail_path =

[Java]
;java.class.path = .php_java.jar
;java.home = c:jdk
;java.library = c:jdkjre inhotspotjvm.dll
;java.library.path = .

[SQL]
sql.safe_mode = Off

[ODBC]
;odbc.default_db = Not yet implemented
;odbc.default_user = Not yet implemented
;odbc.default_pw = Not yet implemented

; 是否允許持續連接.
odbc.allow_persistent = On

; 是否在重用前檢查連接可用性.
odbc.check_persistent = On

; 允許持續連接的最大值.-1代表無限制.
odbc.max_persistent = -1

; 允許連接的最大值(持續連接和非持續連接的和).-1代表無限制.
odbc.max_links = -1

; 控制LONG類型的字段.返回變量的大小(比特).0代表不控制.
odbc.defaultlrl = 4096

; 控制二進制資料.0不控制,1保持,2轉換成字元.
; 可參見有關odbc_binmode和odbc_longreadlen的文件
; 以得到uodbc.defaultlrl和uodbc.defaultbinmode的解釋.
odbc.defaultbinmode = 1

[MySQL]
; 是否允許持續連接.
mysql.allow_persistent = On

; 允許持續連接的最大值.-1代表無限制.
mysql.max_persistent = -1

; 允許連接的最大值(持續連接和非持續連接的和).-1代表無限制.
mysql.max_links = -1

; mysql_connect()函數的預設端口.如不設定,mysql_connect()將使用$MYSQL_TCP_PORT或者
; 在/etc/services下的mysql-tcp或者編譯定義的MYSQL_PORT(nuix)依次搜尋,而在Win32下,將
; 僅檢查MYSQL_PORT.
mysql.default_port = 3306

; 用於本地MySql連接的預設socket,為空時,使用內建值.
mysql.default_socket = MySql

; mysql_connect()連接的預設主機(安全模式下無效).
mysql.default_host = localhost

; mysql_connect()連接時的預設會員名稱(安全模式下無效).
mysql.default_user = root

; mysql_connect()連接時的預設密碼(安全模式下無效).
; 注意,在這裡使用密碼十分危險,因為任何有PHP權限的會員都可以通過運行'echo get_cfg_var("mysql.default_password")'
; 的方法來獲得該密碼,當然,任何有瀏覽權限的會員也可以得到此密碼.
mysql.default_password =

; 連接超時的最大值(以秒計).-1代表無限制.
mysql.connect_timeout = -1

; 鑑定報告模式.如果此模式被啟動(即設為On),關於table/index和MYSQL錯誤將會被列出.
mysql.trace_mode = Off

[mSQL]
; 是否允許持續連接.
msql.allow_persistent = On

; 允許持續連接的最大值.-1代表無限制.
msql.max_persistent = -1

; 允許連接最大值(持續連接與非持續連接的和).-1代表無限制.
msql.max_links = -1

[PostgresSQL]
; 是否允許持續連接.
pgsql.allow_persistent = On

; 是否使用pg_pconnect()函數檢查中斷的持續連接.Need a little overhead(55555俺又不懂了).
pgsql.auto_reset_persistent = Off

; 允許持續連接的最大值. -1代表無限制.
pgsql.max_persistent = -1

; 允許連接的最大值(持續連接與非持續連接的和).-1代表無限制.
pgsql.max_links = -1

; 是否忽略PostgreSQL的返回訊息.
pgsql.ignore_notice = 0

; 是否記錄PostgreSQL的返回訊息.
; 僅當pgsql.ignore_notice=0時,模塊才能記錄該訊息.
pgsql.log_notice = 0

[Sybase]
; 是否允許持續連接.
sybase.allow_persistent = On

; 允許持續連接的最大值.-1代表無限制.
sybase.max_persistent = -1

; 允許連接的最大值(持續連接與非持續連接的和).-1代表無限制.
sybase.max_links = -1

;sybase.interface_file = "/usr/sybase/interfaces"

; 顯示錯誤的最低嚴重性.
sybase.min_error_severity = 10

; 顯示訊息的最低嚴重性.
sybase.min_message_severity = 10

; 與舊的版本(PHP3.0)兼容.如果設為On,PHP將根據它們的Sybase類型自動地賦值到結果中,
; 而不是把它們全當作字元串處理,此模式在將來不再被支援,所以儘量對代碼進行修改,並
; 關掉這項.
sybase.compatability_mode = Off

[Sybase-CT]
; 是否允許持續的連接.
sybct.allow_persistent = On

; 允許持續連接的最大值.-1代表無限制.
sybct.max_persistent = -1

; 允許連接的最大值(持續連接與非持續連接的和).-1代表無限制.
sybct.max_links = -1

; 伺服器訊息最小顯示量.
sybct.min_server_severity = 10

; 客戶訊息最小顯示量.
sybct.min_client_severity = 10

[dbx]
; 通過對dbx.colnames_case的設定,返回的數組名能夠轉換成兼容的值.
; "unchanged" (在不設定時的預設值)
; "lowercase" (小寫)
; "uppercase" (大寫)
; 推薦不區分大小寫字母,但是由於兼容性的限制我們不得不把大小寫區分開.
dbx.colnames_case = "unchanged"

[bcmath]
; 用於所有bcmath函數的10十進制數小數的個數.
bcmath.scale = 0

[browscap]
;browscap = extra/browscap.ini

[Informix]
; ifx_connect()的預設主機(安全模式下無效).
ifx.default_host =

; ifx_connect()的預設會員(安全模式下無效).
ifx.default_user =

; ifx_connect()的預設密碼(安全模式下無效).
ifx.default_password =

; 是否允許持續連接.
ifx.allow_persistent = On

; 允許持續連接的最大值.-1代表無限制.
ifx.max_persistent = -1

; 允許連接的最大值(持續連接與非持續連接的和).-1代表無限制.
ifx.max_links = -1

; 若開啟,select狀態符將返回一個byte blobs而不是它的ID.
ifx.textasvarchar = 0

; 若開啟,select狀態符將返回一個text content而不是它的ID.
ifx.byteasvarchar = 0

; 從固定長度的字元列裡分離出空格.可能對Informix SE會員有效.
ifx.charasvarchar = 0

; 若開啟, text和byte blobs的內容被導出到一個檔案,而不是儲存在記憶體中.
ifx.blobinfile = 0

; NULL(空)被作為空字段返回,除非,這裡被設為1,這種情況下(為1)NULL作為字串NULL返回.
ifx.nullformat = 0

[Session]
; 用於儲存/取得取資料的控制方式.
session.save_handler = files

; session的儲存路徑.
; 說明1: PHP不會建立這個檔案夾,您必須自行建立.
;
; 說明2: 如果您使用子檔案夾進行存儲,請檢查下面的路徑.
session.save_path = /tmp

; 是否使用cookies.
session.use_cookies = 1

; 這個選項能夠使會員避免由於session名被作為URLs的一部分顯示而受到的攻擊.
; 預設值是0.
; session.use_only_cookies = 1

; session的名稱(同時作為cookie的名稱).
session.name = PHPSESSID

; 是否在請求開始時初始化session.
session.auto_start = 0

; cookie的儲存時間(以秒計),設為0時,瀏覽器關閉時不再儲存.
session.cookie_lifetime = 0

; cookie的有效路徑.
session.cookie_path = /

; cookie的有效域.
session.cookie_domain =

; 控制連續的資料.PHP是PHP資料的標準控制器.
session.serialize_handler = php

; 定義'garbage collection'(碎片整理)程序的初始化比率
; 這個比率是通過gc_probability/gc_dividend算出的.
; e.g. 1/100 means 1%.

session.gc_probability = 1
session.gc_dividend = 100

; 在指定的秒數後,存儲的資料將會被看作'碎片'並且被碎片整理程序清理掉.
; 警告: 您的檔案系統會定期的存儲資料,FAT系統除外.所以應該使用特別的方法來刪除sessions.
session.gc_maxlifetime = 1440

; 說明: 如果您使用檔案夾來存儲session檔案(觀看session.save_path中的設定),
; 碎片整理不會自動的運行,您必須通過其它方法整理這些碎片.
; 例如下面的方法和把session.gc_maxlifetime設成1440(1440秒=24分)是等效的.
; cd /path/to/sessions; find -cmin +24 | xargs rm

; 在PHP4.2及更早的版本中沒有正式的檔案允許您初始一個處於全局的session變量,即使是在
; register_globals被禁用的情況下.PHP4.3及以後版本中,如果此功能被使用,PHP提醒您.
; 您可以對此功能和警告訊息單獨禁用,此時,如果bug_compat_42是啟動的,僅會顯示警告訊息.

session.bug_compat_42 = 1
session.bug_compat_warn = 1

; 檢查HTTP引用使額外包含於URLs中的ids無效.
; HTTP_REFERER應該包含有效的session字段作為子鏈.
session.referer_check =

; 從檔案中讀取字元的大小.
session.entropy_length = 0

; 在這裡指定session id.
session.entropy_file =

;session.entropy_length = 16

;session.entropy_file = /dev/urandom

; 設定為{nocache,private,public,}來決定HTTP的緩存問題,
; 或者不進行設定來避免發送明顯的headers.
session.cache_limiter = nocache

; 文件在指定時間(以分計)後過期.
session.cache_expire = 180

; 預設情況下不支援過渡sid.使用此功能時您會收到警告訊息.
; 使用過渡sid是有風險的.因為:
;
; - 會員可以發送包含處於啟動狀態的session ID的URL給其它人.
;
; - 包含處於啟動狀態的session ID的URL會存在於容易接近的公共電腦裡.
;
; - 會員可以通過使用存儲於瀏覽器歷史記錄或書籤中相同的session ID來瀏覽您的網站.
;
session.use_trans_sid = 0

; 重寫URL時將從定義的HTML標籤中尋找form/fieldset是特殊的,如果您在這裡使用它們,
; 就會附;加一個隱藏的<input>,其訊息不同與其它的對URLs的附加.如果您想符合XHTML,
; 刪除form記錄.注意:所有有效的命令必須包含一個"="號,即使命令後面沒有具體值.
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=,fieldset="

[MSSQL]
; 是否允許持續連接.
mssql.allow_persistent = On

; 允許持續連接的最大值.-1表示無限制.
mssql.max_persistent = -1

; 允許連接的最大值(持續連接與非持續連接的和).-1表示無限制.
mssql.max_links = -1

; 顯示最小錯誤嚴重性.
mssql.min_error_severity = 10

; 顯示最小訊息重要性.
mssql.min_message_severity = 10

; 是否開啟與舊的PHP 3.0兼容的模式.
mssql.compatability_mode = Off

; 有效範圍0 - 2147483647.預設值是4096.
;mssql.textlimit = 4096

; 有效範圍0 - 2147483647.預設值是4096.
;mssql.textsize = 4096

; 限制每一批中的記錄數量.設為0時表示所有記錄記錄在一批中.
;mssql.batchsize = 0

; 當連接到伺服器時使用NT驗證.
mssql.secure_connection = Off

; 指定最大程序數.預設是25
;mssql.max_procs = 25

[Assertion]
; Assert(expr);預設值是啟動的.(俺不行了,這組指令譯不過來了55555)
;assert.active = On

; Issue a PHP warning for each failed assertion.
;assert.warning = On

; Don't bail out by default.
;assert.bail = Off

; User-function to be called if an assertion fails.
;assert.callback = 0

; Eval the expression with current error_reporting(). Set to true if you want
; error_reporting(0) around the eval().
;assert.quiet_eval = 0

[Ingres II]
; 是否允許持續連接.
ingres.allow_persistent = On

; 允許持續連接在最大值. -1代表無限制.
ingres.max_persistent = -1

; 允許連接的最大值.-1代表無限制.
ingres.max_links = -1

; 預設的database(格式是: [node_id::]dbname[/srv_class]).
ingres.default_database =

; 預設會員.
ingres.default_user =

; 預設密碼.
ingres.default_password =

[Verisign Payflow Pro]
; 預設的Payflow Pro伺服器.
pfpro.defaulthost = "test-payflow.verisign.com"

; 伺服器的預設端口.
pfpro.defaultport = 443

; 預設的超時時間(以秒計).
pfpro.defaulttimeout = 30

; 預設代理伺服器IP位址(如果須要).
;pfpro.proxyaddress =

; 預設代理伺服器端口.
;pfpro.proxyport =

; 預設的登入名.
;pfpro.proxylogon =

; 預設的登入密碼.
;pfpro.proxypassword =

[Sockets]
; 是否使用系統的read()功能來替代php_read().
sockets.use_system_read = On

[com]
; 指向包含GUIDs,IIDs或典型靜態庫檔案的檔案名稱的檔案的路徑.
;com.typelib_file =
; 是否允許調用分佈式的COM檔案
;com.allow_dcom = true
; 是否自動把組成典型靜態庫檔案的常量註冊到com_load()函數.
;com.autoregister_typelib = true
; 是否區分常量的大小寫
;com.autoregister_casesensitive = false
; 是否在有重複的常量出現時顯示錯誤
;com.autoregister_verbose = true

[Printer]
;printer.default_printer = ""

[mbstring]
; 語言選擇.
;mbstring.language = Chinese

; 語言/腳本的編碼.
; 某些編碼不能作為本地的語言編碼,例如SJIS, BIG5, ISO-2022-.
;mbstring.internal_encoding = GB2312

; http輸入編碼.
;mbstring.http_input = auto

; http輸出編碼.mb_output_handler必須註冊為函數的輸出緩存.
;mbstring.http_output = SJIS

; 是否根據mbstring.internal_encoding的設定自動翻譯編碼. 把這項設為On可以把輸入字元
; 轉換為設定的編碼語言.
; 說明: 一定不要使用這項功能編譯靜態庫檔案和某些軟體.
;
;mbstring.encoding_translation = Off

; 編碼檢查順序.
;mbstring.detect_order = auto

; 當字元不能夠被轉換時,是否使用substitute_character.
;mbstring.substitute_character = none;

; 是否用加密的字元覆蓋沒有加密的字元.例如用mb_send_mail(), mb_ereg()覆蓋
; mail(), ereg()等.有效的值是0,1,2,4或者它們的組合.例如,7代表覆蓋全部.
; 0: 不覆蓋
; 1: 覆蓋mail()函數
; 2: 覆蓋str*()函數
; 4: 覆蓋ereg*()函數
;mbstring.func_overload = 0

[FrontBase]
;fbsql.allow_persistent = On
;fbsql.autocommit = On
;fbsql.default_database =
;fbsql.default_database_password =
;fbsql.default_host =
;fbsql.default_password =
;fbsql.default_user = "_SYSTEM"
;fbsql.generate_warnings = Off
;fbsql.max_connections = 128
;fbsql.max_links = 128
;fbsql.max_persistent = -1
;fbsql.max_results = 128
;fbsql.batchSize = 1000

[Crack]
; 修改下面的設定,使這與cracklib檔案夾的本地路徑相符合,只可以使用基本的檔案名稱,
; 不包含副檔名.
; crack.default_dictionary = "c:phplibcracklib_dict"

[exif]
; 這組就不用譯了吧
; Exif UNICODE user comments are handled as UCS-2BE/UCS-2LE and JIS as JIS.
; With mbstring support this will automatically be converted into the encoding
; given by corresponding encode setting. When empty mbstring.internal_encoding
; is used. For the decode settings you can distinguish between motorola and
; intel byte order. A decode setting cannot be empty.
;exif.encode_unicode = ISO-8859-15
;exif.decode_unicode_motorola = UCS-2BE
;exif.decode_unicode_intel = UCS-2LE
;exif.encode_jis =
;exif.decode_jis_motorola = JIS
;exif.decode_jis_intel = JIS

; Local Variables:
; tab-width: 4
; End:


2018年5月18日 星期五

css template 樣板網站

 css template 樣板網站

除此之外,這裡下載的網頁版型還有附上 PSD 原始檔,真是佛心來的~

「Free Website Templates」網址 http://www.freewebsitetemplates.com/

Open Source Web Design
http://www.oswd.org

templatemo.com
http://www.templatemo.com

freecsstemplates.org
http://www.freecsstemplates.org

MyFreeCSSTemplates.com
http://www.myfreecsstemplates.com

https://templated.co/


現今的網頁設計主流該是HTML+CSS+JavaScript,
過去使用表格加上巢狀表格的呈現方式,會阻礙搜尋引擎到你的網站拜訪!
如果你的網站已稍具知名度,當然不用擔心。

但是,新建立的網站最迫切希望的就是被網友是用關鍵字找到,
在這方面,CSS的版面呈現因為都是使用文字,占了先天優勢。
所以,以下提供幾個CSS的網頁版型下載網站,

http://www.freecsstemplates.org/

http://ramblingsoul.com/

http://www.oswd.org/

http://www.free-css-templates.com/

當然,如果各位可以持續強化自己的CSS控制能力,
這些版型到了你手上,可以有更多變化,加油!

2018年5月17日 星期四

java 的加強版 for 迴圈 (for each迴圈)

java 的加強版 for 迴圈 (for each迴圈)
java 的 for 迴圈出現一種以前從沒有看過的格式。它是JAVA 5.0 後多的一種 for 迴圈寫法,目的是簡化陣列與集合物件的元素存取方式.
在JDK 5.0版新增加強型的for迴圈,其功能類似其他程式語言的foreach迴圈,可以輕鬆走訪陣列或集合物件的元素。

for-each 迴圈語法

for (型別 變數 : 集合或陣列物件參考或函式呼叫) {迴圈內程序}

冒號前面稱為宣告式, 後面稱為運算式. 宣告式的變數型別必須與陣列或集合的元素相容, 此變數將用在迴圈內部以便存取元素. 運算式可以是集合或陣列物件參考, 也可以是函式呼叫 (傳回陣列或集合).


舉例:

* for迴圈新舊寫法的對照
public class NewFor {
public static void main(String[] args) {

String [] a = {"1","3","5","7","9","11"};

//5.0前的for迴圈寫法
for(int i = 0 ; i < a.length ; i++){
String temp = a[i];
System.out.print(temp + ", ");
}

System.out.println();

//5.0後for迴圈也可以用這種新的寫法(for-each)
for(String temp : a){
System.out.print(temp + ", ");
}


* 用字串變數name配合加強型的for迴圈(for-each)來走訪names[]陣列

String[] names;
for ( String name: names )
{

System.out.print('\"'+name+"\"(字串長度:");
System.out.println(name.length() + ")");

}

可以看到程式碼比傳統用法更簡潔



* 用for 迴圈印出二維陣列之元素
int[][] a={{1,2},{3,4,5}, {6,7,8,9}};
for (int[] i : a) {
System.out.print(i.length);} //印出二維陣列的元素個數 2 3 4 (a[0]有二個元素{1,2}, a[1]有三個元素{3,4,5}, a[2]有四個元素{6,7,8,9})

for (int i : a[2]) {System.out.print(i);} //印出二維陣列第三個元素的內容6 7 8 9



* 以上範例均以陣列為例,如果用在集合物件的寫法
for (ScoreDoc scoreDoc : hits.scoreDocs) {
Document doc = searcher.doc(scoreDoc.doc);
System.out.println(doc.get("fullpath"));
}

這是我練習java時所寫的一個例中,hit.scoreDocs 為一集合物件,內含不定個數的物件,scoreDoc每次迴圈執行時,均會取得其中一個物件,for 迴圈遍歷結束後,便會把hit.scoreDocs內所有物件,指定給Document 型別的物件 doc , 並印出該文件的路徑。

如果用傳統寫法,應該是以下的樣子:
ScoreDoc scoreDoc;
for (int i=0;i<hits.scoreDocs.length;i++){
scoreDoc=hits.scoreDocs[i];
Document doc = searcher.doc(scoreDoc.doc);
System.out.println(doc.get("fullpath"));
}

參考:
http://tony1966.myweb.hinet.net/java/core/flow_control.htm

http://www.ibm.com/developerworks/library/j-forin/index.html


補充:
很多程式語言都有支援for-each這類的語法,簡單的說for-each語法就是當我們想要存取一個 Array 或 Collection 裡面所有的元時可以更方便、更有效率的語法。for-each 也有人稱為 enhanced for 或 for-in。

使用上要注意的事項有:

只適用於 Java 5.0 以後的版本
只適用於有 implement Iterable 的類別基本上 Array 與 Collection 類別都沒問題。
只能存取裡面元素而不能置換掉它,記住,for-each 裡面的變數是 local 變數離開 for-each 之後就會消失。
只能同時針對一個 Array 或 Collection 進行操作。
只能同時針對一個元素操作。
只能從頭開始訪問每個元素。

2018年5月16日 星期三

取得使用者輸入 Scanner


Scanner(讀取)

5801Scanner(讀取)

Scanner 取得使用者輸入的數字或字串 會根據空白鍵 tab鍵 跳下一個輸入 enter鍵表示輸入完成

        

Scanner是一種類別 要new一個物件出來

Scanner sc=new Scanner (System.in);

記得要import進來

import java.util.Scanner



nextInt()     取得使用者輸入或檔案內容中的整數

nextFloat() 取得使用者輸入或檔案內容中的浮點數

NextLine()     取得使用者輸入或檔案內容中的字串 包含空白鍵 tab等按鍵  enter表示輸入完成

next()         取得使用者輸入或檔案內容中的字串 不包含空白鍵 tab等按鍵



範例1 讀取鍵盤輸入

import java.util.Scanner;

public class ScannerTest {

    public static void main(String[] args){

        Scanner sc = new Scanner(System.in);

        String s1 = sc.next();

        System.out.println(s1);

    }

}



範例2 讀取鍵盤輸入

int num1, num2, num3;

public class ScannerTest {

    public static void main(String[] args){

        Scanner scanner = new Scanner(System.in);

        System.out.println("請輸入三個數字(以空白鍵分開):");

        num1 = scanner.nextInt();

        num2 = scanner.nextInt();

        num3 = scanner.nextInt();

        System.out.println("您輸入第一個數字為:" + num1 );

        System.out.println("您輸入第二個數字為:" + num2 );

        System.out.println("您輸入第三個數字為:" + num3 );


    }

}



範例3 讀取檔案內容

import java.io.File;

import java.util.Scanner

public class read{

    public static void main(String[] args){

        try()

        catch(Exception e){        

        }

    }


取得使用者輸入 Scanner


Scanner取得輸入會依據空白字元、空白鍵、Tab,傳回下一個輸入。
 第一種 nextInt():取得使用者輸入的整數

import java.util.Scanner;

public class Scanner_test {
    public static void main(String[] args) {
        int num1, num2, num3;
        Scanner scanner = new Scanner(System.in);
        
        System.out.println("請輸入三個數字(以空白鍵分開):");
        num1 = scanner.nextInt();
        num2 = scanner.nextInt();
        num3 = scanner.nextInt();
        System.out.println("您輸入第一個數字為:" + num1 );
        System.out.println("您輸入第二個數字為:" + num2 );
        System.out.println("您輸入第三個數字為:" + num3 );

    }
}

結果:
1
第二種 nextFloat():取得使用者輸入的浮點數

import java.util.Scanner;

public class Scanner_test {
    public static void main(String[] args) {
        float float1, float2, float3;
        Scanner scanner = new Scanner(System.in);
        
        System.out.println("請輸入三個浮點數(以Tab鍵分開):");
        float1 = scanner.nextFloat();
        float2 = scanner.nextFloat();
        float3 = scanner.nextFloat();
        System.out.println("您輸入第一個浮點數為:" + float1 );
        System.out.println("您輸入第二個浮點數為:" + float2 );
        System.out.println("您輸入第三個浮點數為:" + float3 );

    }
}

結果:

2

第三種 nextLine():取得使用者輸入的字串(包含空白字元、空白鍵、Tab)

import java.util.Scanner;

public class Scanner_test {
    public static void main(String[] args) {
        String str1, str2, str3;
        Scanner scanner = new Scanner(System.in);
        
        System.out.println("請輸入一字串:");
        str1 = scanner.nextLine();
        System.out.println("您輸入的字串一為:\n" + str1 );

    }
}

結果:

3

第四種 next():取得使用者輸入的字串(不包含空白字元、空白鍵、Tab)

import java.util.Scanner;

public class Scanner_test {
    public static void main(String[] args) {
        String str1, str2, str3;
        Scanner scanner = new Scanner(System.in);
        
        System.out.println("請輸入一字串:(不包含空白字元、空白鍵、Tab)");
        str2 = scanner.next();
        System.out.println("您輸入的字串一為:\n" + str2 );
    }
}
結果:
4

2018年5月14日 星期一

java中的compareto方法以及LIst列表排序的詳細介紹


java中的compareto方法,返回參與比較的前後兩個字符串的asc碼的差值,看下面一組代碼
String a="a",b="b";
System.out.println(a.compareto.b);
則輸出-1;
若a="a",b="a"則輸出0;
若a="b",b="a"則輸出1;

單個字符這樣比較,若字符串比較長呢??
若a="ab",b="b",則輸出-1;
若a="abcdef",b="b"則輸出-1;
也就是説,如果兩個字符串首字母不同,則該方法返回首字母的asc碼的差值;

如果首字母相同呢??
若a="ab",b="a",輸出1;
若a="abcdef",b="a"輸出5;
若a="abcdef",b="abc"輸出3;
若a="abcdef",b="ace"輸出-1;
即參與比較的兩個字符串如果首字符相同,則比較下一個字符,直到有不同的為止,返回該不同的字符的asc碼差值,如果兩個字符串不一樣長,可以參與比較的字符又完全一樣,則返回兩個字符串的長度差值
java中的list 中sort排序結合compareTo方法的詳細介紹
 1 /*測試類*/
 2 package test;
 3 import java.util.ArrayList;
 4 import java.util.Collections;
 5 import java.util.Comparator;
 6 import java.util.GregorianCalendar;
 7 import java.util.Iterator;
 8 import java.util.List;
 9
10 public class UseComparator {
11     public static void main(String args[]) { 
12         List<Book> list = new ArrayList<Book>(); // 數組串行 
13         Book b1 = new Book(10000, "紅樓夢", 150.86, new GregorianCalendar(2009, 
14                 01, 25), "曹雪芹、高鄂"); 
15         Book b2 = new Book(10001, "三國演義", 99.68, new GregorianCalendar(2008, 7, 
16                 8), "羅貫中 "); 
17         Book b3 = new Book(10002, "水滸傳", 100.8, new GregorianCalendar(2009, 6, 
18                 28), "施耐庵 "); 
19         Book b4 = new Book(10003, "西遊記", 120.8, new GregorianCalendar(2011, 6, 
20                 8), "吳承恩"); 
21         Book b5 = new Book(10004, "天龍八部", 10.4, new GregorianCalendar(2011, 9, 
22                 23), "搜狐"); 
23         list.add(b1); 
24         list.add(b2); 
25         list.add(b3); 
26         list.add(b4); 
27         list.add(b5); 
28         // Collections.sort(list); //沒有默認比較器,不能排序 
29         System.out.println("數組串行中的元素:"); 
30         myprint(list); 
31         Collections.sort(list, new PriceComparator()); // 根據價格排序 
32         System.out.println("按書的價格排序:"); 
33         myprint(list); 
34         Collections.sort(list, new CalendarComparator()); // 根據時間排序 
35         System.out.println("按書的出版時間排序:"); 
36         myprint(list); 
37     } 
38 
39     // 自定義方法:分行打印輸出list中的元素 
40     public static void myprint(List<Book> list) { 
41         Iterator<Book> it = list.iterator(); // 得到迭代器,用於遍歷list中的所有元素 
42         while (it.hasNext()) {// 如果迭代器中有元素,則返回true 
43             System.out.println("\t" + it.next());// 顯示該元素 
44         } 
45     } 
46 
47     // 自定義比較器:按書的價格排序 
48     static class PriceComparator implements Comparator<Object> { 
49         public int compare(Object object1, Object object2) {// 實現接口中的方法 
50             Book p1 = (Book) object1; // 強制轉換 
51             Book p2 = (Book) object2; 
52             return new Double(p1.price).compareTo(new Double(p2.price)); 
53         } 
54     } 
55 
56     // 自定義比較器:按書出版時間來排序 
57     static class CalendarComparator implements Comparator<Object> { 
58         public int compare(Object object1, Object object2) {// 實現接口中的方法 
59             Book p1 = (Book) object1; // 強制轉換 
60             Book p2 = (Book) object2; 
61             return p2.calendar.compareTo(p1.calendar); 
62         } 
63     } 
64 } 
結果如下:
數組串行中的元素:
10000 紅樓夢 150.86 曹雪芹、高鄂 2009年02月25日
10001 三國演義 99.68 羅貫中 2008年08月08日
10002 水滸傳 100.80 施耐庵 2009年07月28日
10003 西遊記 120.80 吳承恩 2011年07月08日
10004 天龍八部 10.40 搜狐 2011年10月23日


按書的價格排序:
10004 天龍八部 10.40 搜狐 2011年10月23日
10001 三國演義 99.68 羅貫中 2008年08月08日
10002 水滸傳 100.80 施耐庵 2009年07月28日
10003 西遊記 120.80 吳承恩 2011年07月08日
10000 紅樓夢 150.86 曹雪芹、高鄂 2009年02月25日


按書的出版時間排序:
10004 天龍八部 10.40 搜狐 2011年10月23日
10003 西遊記 120.80 吳承恩 2011年07月08日
10002 水滸傳 100.80 施耐庵 2009年07月28日
10000 紅樓夢 150.86 曹雪芹、高鄂 2009年02月25日
10001 三國演義 99.68 羅貫中 2008年08月08日

 1 package test;
 2 import java.text.DecimalFormat; 
 3 import java.text.SimpleDateFormat; 
 4 import java.util.GregorianCalendar; 
 5 import java.util.Iterator; 
 6 import java.util.TreeMap; 
 7     
 8     /**
 9      * 書實體類
10      * 
11      * @author yjd
12      * 
13      */ 
14     public class Book implements Comparable<Object> { // 定義名為Book的類,默認繼承自Object類 
15         public int id;// 編號 
16         public String name;// 名稱 
17         public double price; // 價格 
18         private String author;// 作者 
19         public GregorianCalendar calendar;// 出版日期 
20     
21         public Book() { 
22             this(0, "X", 0.0, new GregorianCalendar(), ""); 
23         } 
24     
25         public Book(int id, String name, double price, GregorianCalendar calender, 
26                 String author) { 
27             this.id = id; 
28             this.name = name; 
29             this.price = price; 
30             this.calendar = calender; 
31             this.author = author; 
32         } 
33     
34         // 重寫繼承自父類Object的方法,滿足Book類信息描述的要求 
35         public String toString() { 
36             String showStr = id + "\t" + name; // 定義顯示類信息的字符串 
37             DecimalFormat formatPrice = new DecimalFormat("0.00");// 格式化價格到小數點後兩位 
38             showStr += "\t" + formatPrice.format(price);// 格式化價格 
39             showStr += "\t" + author; 
40             SimpleDateFormat formatDate = new SimpleDateFormat("yyyy年MM月dd日"); 
41             showStr += "\t" + formatDate.format(calendar.getTime()); // 格式化時間 
42             return showStr; // 返回類信息字符串 
43         } 
44     
45         public int compareTo(Object obj) {// Comparable接口中的方法 
46             Book b = (Book) obj; 
47             return this.id - b.id; // 按書的id比較大小,用於默認排序 
48         } 
49     
50         public static void main(String[] args) { 
51             Book b1 = new Book(10000, "紅樓夢", 150.86, new GregorianCalendar(2009, 
52                     01, 25), "曹雪芹、高鄂"); 
53             Book b2 = new Book(10001, "三國演義", 99.68, new GregorianCalendar(2008, 7, 
54                     8), "羅貫中 "); 
55             Book b3 = new Book(10002, "水滸傳", 100.8, new GregorianCalendar(2009, 6, 
56                     28), "施耐庵 "); 
57             Book b4 = new Book(10003, "西遊記", 120.8, new GregorianCalendar(2011, 6, 
58                     8), "吳承恩"); 
59             Book b5 = new Book(10004, "天龍八部", 10.4, new GregorianCalendar(2011, 9, 
60                     23), "搜狐"); 
61             TreeMap tm = new TreeMap(); 
62             tm.put(b1, new Integer(255)); 
63             tm.put(b2, new Integer(122)); 
64             tm.put(b3, new Integer(688)); 
65             tm.put(b4, new Integer(453)); 
66             tm.put(b5, new Integer(40)); 
67             Iterator it = tm.keySet().iterator(); 
68             Object key = null, value = null; 
69             Book bb = null; 
70             while (it.hasNext()) { 
71                 key = it.next(); 
72                 bb = (Book) key; 
73                 value = tm.get(key); 
74                 System.out.println(bb.toString() + "\t庫存:" + tm.get(key)); 
75             } 
76         } 
77     } 

2018年5月12日 星期六

中高齡工作者在職場上面臨到的障礙


中高齡工作者在職場上面臨到的障礙,主要有以下四個層面:
(1)年齡歧視。
(2)失業及心理壓力:高齡=失業=無社會認同;失業產生極大的情緒壓力。
(3)工作的誘因。
(4)適應變革的能力:缺乏冒險精神、未將「腦袋」升級。

成功創業的條件,須盤點四個面向:
(1)專業:包括核心專長與輔助專長。最好依據自己的專業領域去創業,做自己懂的東西。
(2)人脈:包括創業夥伴、潛在客戶、策略夥伴等。有了活絡豐沛的人際網絡,不但能避免孤軍奮戰的窘境,還能確保源源不斷的業務機會。
(3)資金:創業需要一筆創業金,對於一開始收入不固定的創業族,最好另外預備一筆週轉金以備不時之需。
(4)性格:想要成功創業,自律與自發精神絕對不可或缺。

要做到成功的退休與職涯轉換須由以下四點來建構:
(1)抱持健康的心態,做好退休與職涯轉換的心理建設與調適。
(2)找出最專長的項目,懂得包裝個人優勢。
(3)職涯發展與生涯規劃,提早為退休做好準備。
(4)支持、輔導與保險等社會機制的建構。


中高年齡失業者的SWOT及五力分析

 最佳解答:  優勢: 
1.有工作經驗,可將過去職場經驗運用在未來工作上 
2.因年齡較高,多希望可穩定的為公司工作,相較於稍有不滿就換工作的年輕人,流動率較低 
3.因為有工作經驗,年齡也高,懂人情世故,也懂職場倫理,比較不會因情緒問題影響工作 
4.相較於年輕人,中高齡失業者人脈關係較廣,也比較跨領域,有利於他們工作 

劣勢: 
1.體力集中力明顯下降,可能會影響他們從事勞力性或高精密度的技術工作 
2.身體健康多少都有些狀況,若有組家庭,各種俗務雜事也可能干擾他們專心工作 
3.對於學習新事物反抗性高,尤其是電腦網路相關知識,排斥力強,吸收力與學習抗壓性較年輕人差,難以融入工作(現代多數工作多少都會扯到電腦網路) 
4.雖然懂人情事故及職場狀況,但也正因為如此,他們若打算混水摸魚,招數會比年輕人更多更巧妙,容易有老油條或自負的狀況,管理不易 

機會: 
1.若能積極強化電腦網路相關技能,結合過去實務經驗,將是富有即戰力的實用人材 
2.雖然年紀大,若仍保有謙虛向上的態度,更能融入新工作,容易與人合作 
3.中高齡者社會歷練豐富,較成熟穩定,對外談判溝通較易取得客戶信賴 

威脅: 
1.少子化影響,年輕人越來越少,物以稀為貴,同樣與年輕人找工作,企業會更願意培養優秀的年輕人材 
2.網路科技日新月異,推陳出新速度極快,中高齡失業者吸收速度較難跟上年輕人 
3.數位產業崛起,傳統產業人力需求傾向海外尋找,中高齡失業者能做的工作項目變得比以前更少 

致於五力分析,可以的話請列出是哪五力,因為我找到的五力分析是下面五項,這用來衡量中高齡失業者狀況有點奇怪,就算分析出來,原因也差不多就是swot那些分析了 

1.產業既有廠商競爭現況 
2.潛在進入者的威脅 
3.替代品的威脅 
4.上游廠商的議價能力 

5.下游顧客的議價能力 

中高齡勞工求職時,常遇到企業年齡歧視
至於中高齡族求職面對的問題,

根據該調查結果顯示,

有 71.2% 的人覺得,

企業在聘雇人才時「有年齡的顧慮」;

因此求職時遭遇到最大的困難,

過半中高齡勞工認為年齡受到歧視

1. 年齡歧視的問題:57.2%

2. 薪資令人滿意的工作難尋:44.6%

3. 職位令人滿意的工作難尋:39.4%

4. 被質疑學習能力差:39%


5. 不太願意接受夜班工作:26.4%

熟齡勞工朋友們自認有五大優勢:

1. 實務經驗豐富:32.9%

2. 有責任感:32.6%

3. 穩定性高:30.5%

4. 有敬業精神:30.3%

5. 配合度高:29.5%



另一方面,企業則認為

中高齡族的優勢在於:

1. 穩定性高:73.3%

2. 實務經驗豐富:71.4%

3. 有責任感:53.4%

4. 具抗壓性:50.9%


5. 配合度高:39.8%


更多在職進修機會、


學習新技能的機會。

2018年5月11日 星期五

SQL] Create Function應用

工作上需要,將Table中相同的父ID【Parent_Id 欄位】,找出其最新一筆子ID【id 欄位】內容。
原始資料內容如下:
方法一(create function):
create function Concat (@Col1 int)
returns varchar(1000)
as
begin
declare @resultStr varchar(1000)
select top 1  @resultStr =[id] + ''  from  dbo.CheckList_Change where Parent_Id = @Col1 order by Create_Date desc
return @resultstr
end
Select Parent_Id,dbo.Concat(Parent_Id) as id  from dbo.CheckList_Change
group by Parent_Id
order by Parent_Id
註:For SQL Server 2000以上,下面有產生create function位置畫面
===================================================================================================
方法二(FOR XML PATH):
SELECT  T1.Parent_Id,(  
SELECT top 1 [id] + ''  FROM    dbo.CheckList_Change T2  WHERE  T2.Parent_Id = T1.Parent_Id order by Create_Date desc FOR XML PATH('')) AS [id]
FROM  dbo.CheckList_Change T1 
GROUP BY  Parent_Id 
order by Parent_Id
註:For SQL Server 2005以上,語法可參考 My blog
====================================================================================================
方法三(最簡單也最有效率,但往往忽略這方式):
select Parent_Id,MAX(Id) as id
from   dbo.CheckList_Change
group by Parent_Id
order by Parent_Id
執行畫面:

產生create function畫面:
 

Regular Expression 正則表示式做字串比對

Regular Expression 中文翻成正則表示式 英文簡寫為 Regex 或 RegExp RegExp 是用來比對字串是不是有符合正確的格式 語法很簡單而且大部分語言都有支援它 使用時機 譬如說你需要在程式內請使用者輸入生日 你規定的格式 1996-08...