演算法 - 分治法 (Divide and conquer)
簡介Divide and conquer 中文翻作分治法,概念如字面上的意義,將問題先切分成小問題後再解決,再將結果合併求出原始問題的答案。 優點Divide and conquer 有許多優點,舉出常見的幾點如下: 將困難的問題簡化為容易實作的方式,例如河內塔 (Tower of Hanoii) 問題。 提升程式效率,例如合併排序 (Merge Sort) 讓排序速度提升。 能夠平行處理,例如 MapReduce 也是 Divide and conquer 的一種。 步驟以下摘錄自 Wiki 分解:將原問題分解為若干個規模較小,相對獨立,與原問題形式相同的子問題。 解決:若子問題規模較小且易於解決時,則直接解。否則,遞歸地解決各子問題。 合併:將各子問題的解合併為原問題的解。 不適合的情況Divide and conquer 是利用遞迴的方式來實作,所以當不適合使用遞迴的時候也就不適合使用 Divide and conquer,例如費波那西數列 (fibonacci): 雖然費波那西數列使用 Divide and conquer 來思考很容易實作,但可以從圖中看到,單純使用遞 ...
解決 The script tried to execute a method or access a property of an incomplete object
問題程式執行出現以下錯誤 1Fatal error: main() [<a href='function.main'>function.main</a>]: The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "MyClass" of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide a __autoload() function to load the class definition in xxx.php on line 4 原因這是因為程式某些操作產生 Incomplete Object(__PHP_Incomplete_Class),並且呼叫了此物件的函式。產生 I ...
TopCoder Inv 2001 R1 - HowEasy
資訊 路徑:Tournament \ 1-16 \ 1 - Inv 2001 R1 \ HowEasy 分數:250 題目程式介面1234Class Name: HowEasyMethod Name: pointValParameters: StringReturns: int 說明TopCoder 的題目依難度有三種分數,現在想要撰寫一個程式,能夠依據題目的描述的平均字長 (Average Word Length) 來決定分數: 平均字長小於等於 3 為 250 分。 平均字長 4 或 5 為 500 分。 平均字長大於等於 6 為 1000 分。 定義 Token:句子中的字元集以空白切開為。 Word:Token 由 [a-zA-Z] 組成,可能會有點結尾 (.),且至少一個字元。 Word Length:一個 Word 的字元數。 Average Word Length:所有 Word 的 Word Length 總和除以 Word 數,其中點不算字數,當 Word 數為 0 時 Average Word Length 為 0。 系統保證輸入 1 - 50個字元,包含 ...
MySQL 修改密碼與忘記密碼重設
本篇文章說明 MySQL 如何修改密碼與忘記密碼時如何重設密碼。 設定 root 密碼一開始安裝好 mysql 時,root 可能尚未設定密碼,可以用以下指令設定 1mysqladmin -u root password '你的密碼' 或者 1mysqladmin -u root password 再輸入密碼 修改使用者密碼方法一使用有權限或要修改的使用者本身登入 mysql 1mysql -u 登入使用者 -p 輸入密碼後進入 mysql 控制台,輸入 12mysql> SET PASSWORD FOR '目標使用者'@'主機' = PASSWORD('密碼');mysql> flush privileges; 例如 1mysql> SET PASSWORD FOR 'emn178'@'localhost' = PASSWORD('password'); 方法二使用有權限的使用者登入 mysql 1mysql -u 登 ...
OpenSearch 格式說明
簡介OpenSearch 是一種以 XML 方式定義搜索的方法,網站依據此規範實作可與其他程式介接等用途。 完整的規範可以在此網站查到,本文以表格的方式整理說明。 命名空間OpenSearch 1.1 版命名空間為 http://a9.com/-/spec/opensearch/1.1/,目前為 Draft MIME TypeMIME Type(Content Type 或稱為 Media Type) 為 application/opensearchdescription+xml 結構與定義<OpenSearchDescription><OpenSearchDescription> 為 OpenSearch 的 XML 起始根節點,<OpenSearchDescription> 之中定義了以下 Element Element 必要 多筆 資料型態 說明 <ShortName> O X 純文字 簡短標題,不可超過 16 個字元 <Description> O X 純文字 描述,不可超過 1024 個字元 ...
OPDS Catalog 1.1 格式說明
簡介Open Publication Distribution System 中文翻譯作開放出版發行系統,是一種基於 Atom 用來對電子出版物 (主要用於電子書) 作格式化的規範。透過 OPDS 可以提供電子出版物整合、發布、查詢和取得的功能。完整的規範可以在此網站查看。OPDS 繼承自 Atom。 命名空間OPDS 目前發展到版本 1.1,1.2 為 Draft;OPDS 1.1 的規範使用到的命名空間與 Prefix 如下: 名稱 命名空間 Prefix OPDS 1.1 http://opds-spec.org/2010/catalog opds: Atom 1.0 http://www.w3.org/2005/Atom atom: DCTERMS http://purl.org/dc/terms/ dc: MIME TypeMIME Type 雖然基於 Atom,不過由於 OPDS 的文件依據不同類型內容共定義了四種,如下: 文件類型 MIME Type OPDS Catalog Entry Document application ...
Atom Feed 格式說明
簡介Atom Syndication Format 中文翻譯作 Atom 聯合格式,是一種基於 XML 用來對網站內容做格式化的規範,與 RSS 一樣可作為 Feed 讓閱讀器能更新資料等功能。完整的規範可以在 RFC 4287 查看,本文以表格的方式整理說明。 命名空間Atom 1.0 版命名空間為 http://www.w3.org/2005/Atom MIME TypeMIME Type(Content Type 或稱為 Media Type) 為 application/atom+xml 結構與定義基本資料型態atomTextConstruct資料型態為 atomTextConstruct 的 Element 定義以下屬性 Attribute 必要 說明 type X 類型 Element內容依據type不同變化,規則如下: text: 純文字,不可有子節點 html: HTML 格式的純文字,不可有子節點 xhtml: XHTML 之節點內容,以 <xhtml:div> 起始 atomDateConstructRFC3339 標準,也 ...
C# 在非 Web 專案模擬 HttpContext 進行單元測試
開發 Web 專案時常會使用到 HttpContext 物件,例如使用 HttpContext.Current 取得資料,而有時候我們可能會因為單元測試方便、分工或其他因素,將一些功能寫在別的類別庫專案再進行引用。但是非 Web 專案使用到 HttpContext.Current 就會發現他是 Null 而無法使用,所以我們必須自行模擬建立 HttpContext 物件: 首先加入參考,於 [.NET] 的頁籤加入 [System.Web];如果找不到的話,先調整專案屬性,於 [應用程式] => [目標Framework] 選擇非 Client Profile 的版本,例如 .NET Framework 4 接著加入以下程式碼即可 1234567891011121314151617using System.Web;using System.Web.SessionState;using System.Security.Principal;using System.IO;// ...HttpContext.Current = new HttpContext(new Http ...
MySQL EXPLAIN - 效能分析語句
有時候在開發程式會遇到一些效能上的瓶頸,可能是 SQL 語法下的不好或者是索引建立不當所造成,不過在初期開發資料量不大的時候,可能無法明顯的感覺到效能上的差異,我們可以透過 EXPLAIN 語句來分析查詢語句的效能,確保在開發初期就能使用有效率的 SQL 語句。EXPLAIN 用法如下 1EXPLAIN [EXTENDED] SELECT select_options 簡單的說,就是在你的查詢 SELECT 語法之前加上 EXPLAIN 就可以了 現在我們建立一個資料表 users 與一些測試資料如下 1234567891011121314151617CREATE TABLE `users` ( `id` int(11) NOT NULL auto_increment, `name` varchar(50) NOT NULL, `password` varchar(50) NOT NULL, `sex` tinyint(4) NOT NULL, `age` tinyint(4) NOT NULL, PRIMARY KEY (`id`)) ENGINE=MyISAM D ...
SQL SERVER 如何 Truncate 具有 Foreign Key 的資料表
當想要清空資料表時,我們可以用 TRUNCATE 語句來達到,但是當該資料表有使用外部索引鍵時,會出現如下錯誤: 12無法截斷資料表'Table',因為該資料表正由FOREIGN KEY 條件約束參考Cannot truncate table 'Table' because it is being referenced by a FOREIGN KEY constraint 因為外部索引鍵的關係造成無法執行 TRUNCATE 語句,當然我們可以直接用 DELETE 語句來清空資料,不過資料表中如果具有自動增值 (Auto increase) 的識別 (Identity) 欄位,編號並不會重新計算。這時候可以用兩種方法來達成目的: 第一種: 先刪除 FK 的限制後,使用 TRUNCATE 語句,最後再將 FK 重新建立回來。 第二種: 當資料表很多又可能有很多 FK 的時候,使用第一種方式顯然是相當麻煩,這時候可以使用下面的語句達到目的 12345USE [DbName]GODELETE [Table];DBCC CHECKIDENT(' ...