原创 編譯原理“小”作業

(1)將正規式變成NFA 這裏沒有給出單個空轉移的自動機,和第一個是一樣的,因爲我自己在代碼裏也沒考慮正則表達式裏含ε這種情況,所以這裏就不放了。。。 我的基本思路 · 1、指定整個過程的初始和結束狀態,不管中間構造成什

原创 PAT甲級刷題記錄

以下內容均參考自柳神——努力,自信,熱愛生活的小姐姐。 1001 A+B Format (20分) Calculate a+b and output the sum in standard format – that is, th

原创 彙編語言學習:基本語言元素

整數常量 由一個可選前置符號、一個或多個數字以及一個指明基數的可選基數字符組成: [{+ | -}] digits [radix] h 十六進制 r 編碼實數 q/o 八進制 t 十進制(備用) d 十進制 y

原创 1.4部分題解

14 4-sum。爲4-sum設計一個算法。 public int fourSum(int[] a) { int len = a.length; int cnt = 0; for (int l = 0; l

原创 數學歸納法證明從N個數中取三個數的不同組合的總數爲N(N-1)(N-2)/6

設P(n)爲命題:從n個數中取三個數的不同組合的總數爲n(n−1)(n−2)6\frac{n(n-1)(n-2)}{6}6n(n−1)(n−2)​。 基礎步驟: P(3)爲真,因爲只有1種組合,而 3∗(3−1)∗(3−2)6=1

原创 線程併發協作(生產者/消費者模式)

\quad多線程環境下,我們經常需要多個線程的併發和協作。這個時候,就需要了解一個重要的多線程併發協作模型“生產者/消費者模式”。 \quad生產者指的是負責生產數據的模塊(這裏模塊可能是:方法、對象、線程、進程)。 \quad消

原创 DCL單例模式

單例模式:對外只能有一個對象(如任務管理器) /** * 單例模式:懶漢式套路基礎上加入併發控制,保證在多線程環境下,對外存在一個對象 * 1、構造器私有化-->避免外部new對象 * 2、提供私有的靜態屬性-->存儲對象的

原创 HashMap底層實現

\quad HashMap底層實現採用了哈希表,這是一種非常重要的數據結構。對於我們以後理解很多技術都非常有幫助(比如:redis數據庫的核心技術和HashMap一樣)。 \quad 數據結構中由數組和鏈表來實現對數據的存儲,他們

原创 可重入鎖

\quad鎖作爲併發共享數據保證一致性的工具,大多數內置鎖是可重入的,也就是說,如果某個線程試圖獲取一個已經由它持有的對象的鎖時,這個請求會立刻成功,並且會將這個鎖的計數器加1,而當線程退出同步塊時,計數器會減1,當計數器的值爲0

原创 遞推法求樣本方差和標準差

問題來源:《算法(第4版)》習題1.2.18 #include <cmath> class Accumulator { public: Accumulator() { m = 0.0;

原创 使用對接字節數組流進行文件複製

·InputStream \quad此抽象類是表示字節輸入流的所有類的父類。InputSteam是一個抽象類,它不可以實例化。 數據的讀取需要由它的子類來實現。根據節點的不同,它派生了不同的節點流子類,常用的如FileInputS

原创 初涉裝飾器模式

\quad裝飾器模式是GOF23種設計模式中較爲常用的一種模式。它可以實現對原有類的包裝和裝飾,使新的類具有更強的功能。 \quad我這裏有飲料咖啡, 我們可以通過加入牛奶或蔗糖,實現原有飲料口味的擴展和價格的變化。這就是一種“裝

原创 IO流對接的封裝

import java.io.*; /** * 1、封裝拷貝 * 2、封裝釋放資源 */ public class FileUtils { public static void main(String[] args

原创 多線程_插隊join

·join合併線程,待此線程執行完成後,再執行其它線程,其它線程阻塞\color{red}{其它線程阻塞}其它線程阻塞 應理解爲插隊,後面的車要等插進來的車走才能走。 public class BlockedJoin {

原创 Hello,Rust

Rust是一門內存安全同時有着不輸於C++性能的系統編程語言。粗略地總結一下今天學習的內容。 環境安裝 在Rust官方網站下載rustup後根據提示完成安裝即可。 Hello, wold 我們在記事本中寫入如下代碼: fn mai