常用演算法之三:貪心演算法

貪心演算法一、基本概念:      所謂貪心演算法是指,在對問題求解時,總是做出在當前看來是最好的選擇。也就是說,不從整體最優上加以考慮,他所做出的僅是在某種意義上的局部最優解。     貪心演算法沒有固定的演算法架構,演算法設計的關鍵是貪心策略的選擇。必須注意的是,貪心演算法不是對所有問題都能得到整體最優解,選擇的貪心策略必須具備無後效性,即某個狀態以後的過程不會影響以前的狀態,只與目前狀態有關。    所以對所採用的貪心策略一定要仔細分析其是否滿足無後效性。二、貪心演算法的基本思路:   

select和poll函數(二)

阻塞操作是指在執行裝置操作時若不能獲得資源則掛起進程,直到滿足可操作的條件後在進行操作。非阻塞操作的進程在不能進行裝置操作時並不掛起,它或者被放棄,或者不停的查詢,直到可以進行操作為止

KVM IO虛擬化

前言:本文針對intel VT-X技術,結合QEMU和KVM代碼以及自己寫的執行個體詳細分析了一個虛擬設備的IO虛擬化過程。雖然現在KVM虛擬化效能非常好,發展也非常迅速,但是資料相對比較少,理論知識不是很成熟,其中理解上可能會有些偏差,希望大家指出並與本人聯絡和討論. 連絡方式:EMAIL:cdutshawn@gmail.com  QQ:150197475  QQ群:33273092轉載的請加上此部分,以便技術的交流和本人進一步的研究。謝謝合作!  1.

進程地址空間與進程的記憶體地區

首先進程地址空間和進程記憶體地區是兩個概念:1.進程地址空間:系統中每個使用者空間進程所看到的記憶體(虛擬記憶體).核心採用mm_struct結構來描述進程地址空間。2.進程的記憶體地區:在進程地址空間中,我們更關心的是進程有權訪問的虛擬記憶體地址區間,這些可以被合法訪問的地址區間成為記憶體地區。如果進程訪問不再有效範圍之內的記憶體,核心會終止進程提示段錯誤v。用vm_area_struct結構表示。vm_area_struct包含在mm_struct之中,在核心中被組織成單鏈表和紅/黑樹狀結構

dm9000移植全紀錄

今天對DM9000進行了移植,大概情況如下;首先要移植我們應該瞭解LINUX管理驅動的架構,這個我們在前面已經知道了;在arch/arm/plat-s3c24xx/common-smdk.c加入以下代碼,登記資源和把網卡加入裝置表:/* DM9000 */#if defined(CONFIG_DM9000)|| defined(CONFIG_DM9000_MODULE)static struct resource s3c_dm9k_resource[] = {        [0] = {   

裁剪定製Qt庫

Qt特徵定義檔案(裁剪定製Qt庫)  Qt源碼目錄下src/tools/qfeatures.h檔案包含了src/tools/qconfig.h,因此修改qconfig.h,就可以編譯自己想要的特徵,即qt所有功能的一個子集。需要注意的是這樣的修改只有Qt/Embedded平台能支援,因為嵌入式環境中,減小qt庫的大小很重要,並且應用配置常常是固定的。config.h檔案定義的是需要去除的特徵。有些特徵依賴於其他的特徵,這些依賴關係在qfeatures.h可以看到。可選項如下:  Macro

U-BOOT在2440移植的過程

今天移植了下U-BOOT,具體細節不寫了,紀錄下大體過程:1.首先修改SDRAM的配置,SDRAM的初始化在U-BOOT的第一階段完成,在board/smdk2410/lowlevel_init.S中。參照具體硬體對晶片的7個片選進行配置。2.根據HCLK設定SDRAM的重新整理參數,主要是REFCNT寄存器。這裡需要根據所選用的SDRAM晶片手冊進行設定。3.進行時鐘設定。2440在系統時鐘設定、NANDFLASH控制器的操作上有些區別。2410的F:H:P=1:2:4,2440的F:H:P=

ZeroMQ 資料匯總

ZeroMQ 匯總所有分析,基於 2.1.0 的代碼。建立在 socket 之上的 light-weight message queue。不再需要自己管理 tcp 分包。簡單、實用。來自 iMatix 的一個庫,iMatix 主要面向金融行業。(商務邏輯決定設計)http://www.zeromq.org/最詳細的使用指南:http://zguide.zeromq.org/chapter:allZeroMQ 的使用:Hello 0MQ, Echo

Tcmalloc源碼分析-3

下面我們具體分析一下malloc和free過程。tc_malloc的代碼如下所示:extern "C" PERFTOOLS_DLL_DECL void* tc_malloc(size_t size) __THROW {  void* result = do_malloc_or_cpp_alloc(size);  MallocHook::InvokeNewHook(result, size);  return

配置tftp服務

嵌入式linux的tftp開發 環境包括兩個方面:一是嵌入式linux宿主機的 tftp-server支援,二是嵌入式linux目標機的tftp-client支援。因為u-boot本身內建支援tftp-client,所以嵌入 式目標機就不用配置了。下面就詳細介紹一下linux宿主機tftp-server的安裝配置。(1)安裝        SuSE Linux使用自己帶的YaST進行軟體包的安裝,具體安裝方法不在介紹。(2)修改檔案       在linux

Tcmalloc源碼簡單分析(2)

Free過程1、             首先free根據提供的ptr指標,獲得此ptr所在的頁面,然後利用頁面號,擷取需要釋放的obj的size,這個size首先從pagemap_cache_中拿,如果不在pagemap_cache_中那麼直接通過頁面好擷取所在的span,如果span為NULL,那麼直接報錯返回,否則通過span擷取需要釋放的obj的size,並將size和page的關係放入pagemap_cache_。2、            

常用演算法之五:分支限界法

分支限界法一、基本描述    類似於回溯法,也是一種在問題的解空間樹T上搜尋問題解的演算法。但在一般情況下,分支限界法與回溯法的求解目標不同。回溯法的求解目標是找出T中滿足約束條件的所有解,而分支限界法的求解目標則是找出滿足約束條件的一個解,或是在滿足約束條件的解中找出使某一目標函數值達到極大或極小的解,即在某種意義下的最優解。   (1)分支搜尋演算法   

核心線程的退出

核心線程的退出要從建立開始,下面是kernel_thread的建立過程中regs.ip = kernel_thread_helper,也就是說建立的核心線程從kernel_thread_helper開始運行,kernel_thread_helper函數定義如下:其中的關鍵是,call *%rsi,調用的是kernel_thread中的fn參數(函數指標),調用結束後的語句是call

利用mdev機制 實現隨身碟、SD卡自動掛載

0)請先移植好SD卡和配置好核心對各類USB裝置的支援移植SD卡驅動 for mini2440 & Linux2.6.30.4配置USB for mini2440 & Linux2.6.30.4請先閱讀:busybox下mdev的使用以及mdev.conf的規則配置1)確保核心支援熱插拔# cd linux-2.6.30.4# vi .configCONFIG_KALLSYMS=y# CONFIG_KALLSYMS_ALL is not set# CONFIG_KALLSYMS_

nfs服務配置

這個算是基本的服務配置了,不過今天弄的時候報了些錯,這類總結下:1.注意配置核心,支援NFS服務。FILE SYSTEM->NET FILE SYSTEM->NFS相關的配上。2.配置主機的NFS服務並開啟。/etc/rc.d/nfs start3.今天遇到的錯誤:rpcbind: server localhost not responding, timed outRPC: failed to contact local rpcbind server (errno

Tcmalloc源碼分析-1

Tcmalloc源碼簡單分析(1) (2011-10-08 15:36)分類:

核心中Kconfig的配置方法

2.6核心的源碼樹目錄下一般都會有兩個檔案:Kconfig和Makefile。分布在各目錄下的Kconfig構成了一個分布式的核心設定資料庫,每個Kconfig分別描述了所屬目錄源檔案相關的核心配置菜單。在核心配置make

KVM虛擬化之SPICE

由於時間問題,只把http地址粘貼在這裡做個標記:http://spice-space.org/kvm---Linux Kernel Visualization Manager 高效的輕量級的核心虛擬化解決方案virtio---para-virtualization 的IO裝置虛擬化架構,定義了guest OS的裝置驅動(前端)和host OS

nginx搭配codeigniter的配置

最見看一個php的架構codeigniter,輕量級,高效,學習曲線平緩,很適合中小型項目使用。但是codeigniter和nginx組合無法直接正常工作。原因我就不詳細記載了,在網上找了好多方法都無效,後來查看了codeigniter的源碼和nginx的配置文檔說明,搞了將近一天時間,先將nginx的配置需要更改的地方說明如下:nginx版本:1.2.1 codeigniter:2.1.2nginx需要增加以下:location ~ \.php {           #root      

leveldb源碼分析1

1. leveldb簡介leveldb是一個key/value型的儲存引擎,由google開發,並宣布在BSD許可下開放原始碼。2. leveldb下載和安裝leveldb託管在google code上,可以使用git下載原始碼:Plain代碼 git clone https://code.google.com/p/leveldb/  下載完成之後,開始編譯leveldbPlain代碼

總頁數: 61357 1 .... 17216 17217 17218 17219 17220 .... 61357 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.