原创 深入理解Java虛擬機(二)垃圾回收

一、判斷對象存活、GC Roots、引用 引用計數算法 可達性分析算法(從GC Roots出發,搜索關聯結點,回收不可達對象) GC Roots包含的對象 虛擬機棧的局部變量表中refenrence引用的對象 本地方法棧中JNI

原创 深入理解Java虛擬機(一)內存區域劃分

Java虛擬機管理的內存包括以下幾個運行時數據區 一、程序計數器 線程私有 指示當前線程所執行到的字節碼的行號。 因爲Java會有多線程切換,從老線程切換到某個新線程時,需要知道新線程當前已經執行到哪裏了,也需要保存老線程已經執行到

原创 InnoDB存儲引擎(五)鎖

一、概述 鎖是數據庫系統區別於文件系統的一個重要特性,鎖機制可以用來管理對併發資源的訪問,因此有了鎖之後極大地提升了讀寫數據。InnoDB存儲引擎同時支持行鎖和表鎖。 二、InnoDB存儲引擎中的鎖 2.1 鎖的類型 S鎖和X鎖是

原创 Java併發編程的藝術(一)併發編程的挑戰

前言 今天是2019年03月19日,最近在找實習,所以讀了不少書,《Java併發編程的藝術》就是其中一本,這本書比較適合入門,講的非常簡單。這本書一共有11章,我已經看完第一遍了,有的章節看了兩三遍,所以通過博客的形式梳理一番閱讀過的

原创 InnoDB存儲引擎(四)

一、概述 在本篇博客中,我將介紹數據索引的原理、實現。 InnoDB支持三種索引 B+樹索引 哈希索引 全文索引 B+樹索引並不能直接找到給定鍵值的具體行,而是找到改行所在的數據頁,再把該頁加載到內存中,通過Page Directo

原创 InnoDB存儲引擎(三)

一、概述 在這篇博客中,我會介紹 InnoDB存儲引擎表的邏輯存儲及實現 重點分析表的物理存儲特徵(如行結構和頁結構)。 在InnoDB存儲引擎中,表都是根據主鍵順序組織存放的,這種存儲方式叫做索引組織結構(index organ

原创 InnoDB存儲引擎(二)

一、概述 在這篇博客中我要整理MySQL數據庫和InnoDB存儲引擎的各種類型文件。 參數文件:數據庫啓動時的數據文件位置、初始化參數、各種內存大小設置 日誌文件:錯誤日誌、二進制日誌、慢查詢日誌、查詢日誌 socket文件:套接字

原创 Java垃圾收集器與內存分配策略

1 概述 哪些內存需要回收? 什麼時候回收? 如何回收? Java垃圾回收主要關注的是堆和方法區。 2 Java如何判斷對象存活? 有種算法是引用計數算法,給每一個對象添加一個引用計數器,每當有一個地方引用他,計數器值+1,引用失效時,計

原创 Java內存模型

一、JVM運行時的數據區域 Java虛擬機在Java程序執行的過程中會把它所管理的內存分成若干個不同的數據區域。 包括: 1.程序計數器(Program Counter Register) 我們知道,Java是一次編譯,到處運行的一種語言

原创 Spring Cloud的微服務項目的學習過程

最近在做一個Spring Clound的微服務項目.記錄自己的學習過程.首先談談微服務的好處1.某個服務器節點出現故障,也只是停掉了那一個服務器上的服務,其他的功能的服務仍然可以供用戶使用.2.每一個服務都可以看做是一個獨立的項目,適合多

原创 PAT_1083. List Grades

#include <iostream> #include <vector> #include <algorithm> using namespace std; struct Student { char name[15],id[15];

原创 Leetcode_34. Search for a Range

最近在做Leetcode的題,專題訓練,每天做5道差不多,所以也在博客上記錄一下題解吧。 今天做了幾道二分查找的題,主要是二分查找的各種變形,都要掌握。 1.最原始的二分查找,返回key的下標,無則返回-1。 2.數組中有重複元素,返

原创 Leetcode_Combination Sum 回溯法

39. Combination Sum class Solution { public: vector<vector<int>> combinationSum(vector<int>& candidates, int targe

原创 PAT_1089. Insert or Merge

#include <iostream> #include <algorithm> using namespace std; int a[105],b[105],N; int firstDifferent=N-1; bool Insert

原创 PAT_1088. Rational Arithmetic

#include <iostream> using namespace std; long long int gcd(long long int m,long long int n) { if(n==0) return m; el