原创 讀書筆記(九)-內核同步介紹

存在共享資源(共享一個文件,一塊內存等等)的時候,爲了防止併發訪問時共享資源的數據不一致,引入了同步機制. 主要內容: 同步的概念 同步的方法-加鎖 死鎖 鎖的粒度 1.同步的概念 瞭解同步之前,先了解另外2個概念: 臨界

原创 讀書筆記(四)-進程的調度

主要內容: 什麼是調度 調度實現原理 Linux上調度實現的方法 調度相關的系統調用 1.什麼是調度 現在的操作系統都是多任務的,爲了能讓更多的任務能同時在系統上更好地運行,需要一個管理程序來管理計算機上同時運行的各個任務(也

原创 網易社招面試(別人的面經,找了答案記錄下來)

1.struct和union的區別 1)在任何同一時刻, union存放一個被選中的成員, 而struct存放所有的成員變量。 2)對於union的不同成員賦值,將會對其他成員重寫, 原來成員的值就不存在了, 而對於struct的

原创 騰訊社招電面(別人的面經,找了答案記錄下來)

1.free()函數入參是一個void*指針,它是如何知道被指向的大小的? 舉個例子:假設你用malloc需要申請100字節,實際是申請了104個字節。把前4字節存成該塊內存的實際大小,並把前4字節後的地址返回給你。 free釋放

原创 Decorator模式

Decorator模式 在開發過程中,有時會遇到需要向已經定義好的類添加新功能的需求,這時候通常的做法就是定義一個新類,繼承這個類,在新類中添加新功能. 採用繼承的方式來實現,在使用時,我們經常使用父類的指針或引用通過多態技術來調

原创 Builder模式

Builder模式 Builder 模式 —— 建造者模式(又譯成生成器模式)的主要功能是構建複雜的產品,它是將一個複雜對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示。 舉個例子,打個生產電腦的比方,這裏簡單一點,

原创 Flyweight模式

Flyweight(享元)模式 在開發時,如果創建很多對象,就會造成很大的內存開銷,特別是大量輕量級(細粒度)的對象,還會造成內存碎片.Flyweight模式就是運用共享技術,有效支持大量細粒度對象的設計模式. 其類結構圖如下:

原创 Linux程序編譯鏈接動態庫版本的問題

不同版本的動態庫可能會不兼容,如果程序在編譯時指定動態庫是某個低版本,運行是用的一個高版本,可能會導致無法運行。Linux上對動態庫的命名採用libxxx.so.a.b.c的格式,其中a代表大版本號,b代表小版本號,c代表更小的版

原创 Adapter模式

1.Adapter模式 1.1.類模式 1.2.對象模式 Adapter模式 在軟件開發過程中,經常會使用第三方庫.如果使用第三方庫,那麼我們對客戶提供的接口和第三方庫接口不一致時,應該怎麼解決.這是Adapter模式要解決的

原创 Bridge模式

Bridge模式 在面向對象的開發過程中,要做到2點:1.高內聚 2.鬆耦合.但是在實際開發過程中難以把握,例如會遇到這樣的問題: 1)客戶給了一個需求,之後我們用一個類A來實現. 2)客戶的需求有了變化,要用到2個算法來實現.於

原创 單例模式常見應用場景

單例模式(Singleton)也叫單態模式,是設計模式中最爲簡單的一種模式,甚至有些模式大師都不稱其爲模式,稱其爲一種實現技巧,因爲設計模式講究對象之間的關係的抽象,而單例模式只有自己一個對象,也因此有些設計大師並把把其稱爲設計模

原创 Composite模式

在開發時,如果遇到使用遞歸構建樹狀的組合結構,那麼可以考慮使用Composite模式.Composite模式將對象組合成樹形結構,來表示部分,整體的層次結構. 解決整合與部分可以被一致對待問題。 其類結構如圖所示: 在Com

原创 Facade模式

Facade(外觀模式)模式 在開發時,有時已經實現了一些接口,這些接口分佈在不同的類或模塊中.客戶在使用時,需要使用幾個接口的組合,但是並不關心這些接口在哪,怎麼實現這些接口的.爲了便於客戶使用,給客戶提供一個一致的界面,可以使

原创 Singleton模式

Singleton模式 Singleton模式是解決怎麼創建唯一對象問題的.在面向過程的設計語言中,我們可以通過創建全局對象來實現;在面向對象的設計語言中,也可以這樣做,但是除此之外還有更好的解決方法:Singleton模式. S

原创 鏈接器-初探

一. 首先先回顧一下c文件裏面的內容 要理解的首先是聲明和定義(定義也是聲明) 一個例子: / *這是未初始化的全局變量的定義* / int x_global_uninit; / *這是初始化的全局變量的定義* / int