原创 應用架構之RPC架構

RPC框架簡介 什麼叫RPC? RPC(Remote Procedure Call Protocol)——遠程過程調用協議,它是一種通過網絡從遠程計算機程序上請求服務,而不需要了解底層網絡技術的協議。RPC協議假定某些傳輸協議

原创 JAVA虛擬機簡介

Java虛擬機 注意:我們這裏說的虛擬機是所謂的高級語言虛擬機, 並不是像Vmware那樣, 完全虛擬一個硬件和操作系統出來。 此外java虛擬機上還可以運行clojure, scala , Jruby, Jptyon等語言

原创 Java併發編程之進程

引入 操作系統中最核心的概念是進程:這是對正在運行程序的一個抽象。一個進程就是一個正在執行程序的實例、包括程序計數器、寄存器和變量的當前值。在多道程序設計中,一個 CPU 能在多個進程之間來回快速切換,達到(僞)並行效果。一個進程

原创 面向對象設計(2)

面向對象設計原則 單一職責原則 (SRP) 開閉原則 (OCP) Liskov 替換原則 (LSP) 接口隔離原則 (ISP) 依賴倒置原則 (DIP) SOLID OCP: 開閉原則 軟件模塊對擴展是開放的 當需求發生改

原创 面向對象設計(1)

基石 OOD是用客觀現實(真實世界)的規律和方式去告訴計算機做什麼(編程)。 從需求開始談起 需求總是不完整的,錯誤的,容易讓人產生誤解 需求一直在變化 用戶對需求的看法,可能在與開發人員討論以及看到軟件新的可能性後發生變

原创 Java併發編程之線程(二)

多線程編程的特點 同一份代碼,可以有多個線程執行 既可以在一個CPU核上併發執行 也可以在多個CPU核上並行執行 線程的執行默認是亂序的 程序員不能假定執行次序 線程會共享數據(對象的變量) 需要互斥 線程之間也需要合作

原创 Java併發編程之線程(一)

概念 線程是一種輕量級的進程。 線程優點 多個線程擁有共享同一個地址空間和所有可用數據的能力。 線程比進程更容易創建和銷燬 在大量計算和大量 I/O 處理過程中,多個線程能夠加快程序執行速度。 進程是獨立的地址空間:通信比較麻

原创 面向對象設計的原則--單一職責原則(SRP)

概述 職責: 是引起變化的原因 如果有多於一個的動機去改變一個類,這個類就具有多於一個職責 把多個職責耦合在一起,一個的變化可能會削弱或者抑制這個類完成其他職責的能力 SRP : 對一個類而言, 應該僅有一個引起它變化的原因。

原创 I/O 模型

預備知識1: 用戶空間和內核空間 虛擬存儲器 以32位操作系統爲例, 能訪問的內存最大爲4G 0–3G 虛擬地址分配給各個用戶進程(用戶空間) 每個進程都有3G的虛擬地址空間 3–4G 虛擬地址分配給操作系統核心和驅

原创 JAVA設計模式初探之裝飾者模式

這個模式花費了挺長時間,開始有點難理解,其實就是 定義:動態給一個對象添加一些額外的職責,就象在牆上刷油漆.使用Decorator模式相比用生成子類方式達到功能的擴充顯得更爲靈活。設計初衷:通常可以使用繼承來實現功能的拓展,如果這些需要

原创 Spring 在靜態工具類中使用註解注入bean

問題 最近在項目中遇到這樣一個情況:有一個發送郵件的工具類。在這個工具類中提供了幾種靜態方法,靜態方法需要另外一個類的實例提供處理。在static方法裏調用注入進來的service,因爲是靜態方法,所以必須聲明該service也必

原创 什麼是垂直搜索引擎

垂直搜索是針對某一個行業的專業搜索引擎,是搜索引擎的細分和延伸,是對網頁庫中的某類專門的信息進行一次整合,定向分字段抽取出需要的數據進行處理後再以某種形式返回給用戶。 垂直搜索引擎和普通的網頁搜索引擎的最大區別是對網頁信息進行了結構化信息

原创 LRU算法–緩存淘汰算法

目錄 目錄 什麼是 LRU LRU 算法思想 爲什麼需要頁面置換算法 分頁原理圖 假設使用 FIFO 先進先出 實現頁面置換算法 LRU 算法原理圖 使用雙向鏈表實現LRU算法 Clock算法是公認的很好的近似LRU的算法

原创 使用Python模擬登錄知乎

小試牛刀:使用Python模擬登錄知乎 Posted on 2016-11-05   |   In Spider   |     |   views : 1610 最近突然對爬蟲興趣倍增,主要是自己想從網上爬點數據來玩玩。前陣

原创 【JavaSE】Java包裝類型的Cache機制

問題引入 先看下面這段代碼的輸出: public class Main { public static void main(String[] args){ Integer i1 = 127; Inte