原创 單例模式——線程同步與線程安全分析

說起單例模式,大家都不會陌生,就拿懶漢式單例模式做介紹,最簡單的寫法如下: public class Single { private static Single single; private Single(){

原创 HashMap底層源碼解析

  目錄 一、分析HashMap的數據結構 1.使用數組存儲,加快訪問速度 2.數組中的鏈表,解決hash衝突 3.使用紅黑樹優化鏈表,防止大量hash衝突 二、HashMap主要源碼解讀 三、總結   一、分析HashMap的數據結構

原创 記錄一次愉快的Java面試經過

1、HR:巴拉巴拉巴拉巴拉 2、技術A:說一下集合框架          我:直接背自己的博客就完事了。          技術A:說一下List的接口和HashMap的接口是什麼?有什麼區別。          我:Collection

原创 SQL高級查詢(一)

ORACLE語句中SQL語句的寫法如下:   2.1 查詢表結構 2.1.1 desc關鍵字 注意: 如果在PL\SQL執行,需要在COMMOND  WINDOW下執行,而不是SQL WINDOW       2.2 拼接查詢結果

原创 多線程(一) 線程池的原理和構造

一、線程池概述 線程經常用來同時處理一個程序的多個任務,但是在併發任務非常多並且處理時間短的情況下,使用線程就需要面臨一個問題,假設我們把線程創建的時間看做T1,線程執行任務的時間看做T2,線程銷燬的時間看做T3,學過小學數學的都知道,只

原创 如何實現分佈式搜索(二)簡單實現倒排索引表與數據導入

在上一節中,我們使用了HashMap來模擬trie字典樹,通過使用字典樹,我們就能夠將一段字符串中的關鍵詞給提取出來。 實現簡單分詞器 那麼現在我們要實現兩件事情即可: 一、數據導入 問題所在: 所謂巧婦難爲無米之炊,雖然我不是巧婦,也不

原创 SQL六大約束

一、六大約束條件   1.1 not null非空約束 該字段的值不能爲空。 1.2 default默認值約束 如果插入數據時,該字段沒有賦值,則爲默認值。   1.3 primary key主鍵約束 該字段不能重複,且不能爲空。 比如學

原创 通過反射實現Mybatis註解開發@Select

在mybatis中,可以通過註解@Select(sql語句)對接口進行註釋,並且實現開發,那麼,如何自己實現呢? 首先需要對註解和反射機制具有一定的瞭解。這些屬於基礎知識,這裏不贅述。 一、測試項目目錄結構 使用的測試數據庫是Oracl

原创 SQL高級查詢(二)——連接查詢

 連接查詢(join on關鍵字)     注意: 可以多個表連接   一、 連接條件(等值連接和非等值連接) 1.等值連接   2.非等值連接   二、 自連接 注意: 由於自連接兩張表的列名和表明都一模一樣,所以需要給表起別

原创 SQL高級查詢(三)——Oracle分頁查詢

分頁查詢(rownum關鍵字) Oracle在查詢數據的時候對每一條記錄進行編號並且命名爲rownum,我們可以對rownum進行篩選,選擇我們需要的部位,就達到了分頁查詢的效果。       更高效查詢: --效率更高       

原创 JDBC中Class.forName()的作用以及實現jdbc驅動

Class.forName()的作用僅僅是加載一個類,並且返回該類對應的一個class對象。 原本是用來做反射時使用的類和方法,但是在jdbc中爲什麼需要使用呢?   這個不得不提到jdbc的機制,jdbc本身僅僅是一套接口,接口中是沒有

原创 代理模式——用法與動態代理底層詳解

代理模式作爲框架中經常使用的設計模式,它對代碼的拓展性提升可以說是相當高,從aop的實現,到單元測試,再到Mybatis的Mapper接口實現類,都有代理模式的影子。 本篇主要講解代理模式的使用,動態代理的功能和JVM底層如何處理動態代理

原创 PL\SQL developer 連接Oracle數據庫配置

  大佬們在使用PLSQL developer連接Oracle的時候經常出現一些小問題導致數據庫連接失敗,小弟我給大佬們總結一下連接數據庫的配置流程 一、配置相關配置文件 1.數據文件的路徑 pl\sql developer主要有兩個文件

原创 如何實現分佈式搜索(一)實現簡單的分詞器

一、搜索功能分析 搜索可以說是咱們生活中非常常見的一個功能了,基本上只要是個互聯網公司都離不開搜索模塊,但是實現它的方案卻有點麻煩。 衆所周知,咱們的數據都是從數據庫來的,因此一講到搜索,我們就會想能不能用數據庫解決,然後只要是個正常人,

原创 多線程(二)源碼分析1,線程和任務的創建

在上一節線程池使用中總結了線程池的一些常用的構造和基本的使用,其中也有大部分知識點,比如Java提供的四個基本的線程池配置,線程的特性,volatile, synchronized等關鍵字並沒有提到。整個Java多線程的使用需要學習的東西