原创 多線程中基礎Thread和實現Runnable的區別

在程序開發中只要是多線程肯定永遠以實現Runnable接口爲主,因爲實現Runnable接口相比繼承Thread類有如下好處: 避免點繼承的侷限,一個類可以繼承多個接口。 適合於資源的共享 因爲Java本來就是面向接口的,所以

原创 netty入門小程序

Netty的特性 設計統一的API,適用於不同的協議(阻塞和非阻塞)基於靈活、可擴展的事件驅動模型高度可定製的線程模型可靠的無連接數據Socket支持(UDP) 性能更好的吞吐量,低延遲更省資源儘量減少不必要的內存拷貝 安全完整

原创 Java單鏈表實現快速排序

普通快排的思路 選擇1個結點爲中心點,保證中心點左邊比中心點小,中心點右邊比中心點大即可。這就是一次快排,確定一個數的正確位置,然後進行遞歸。 單鏈表的實現爲 使第一個節點爲中心點 創建2個指針(p,q),p指向頭結點,q指向p

原创 劍指offer 面試題2—實現單例模式

終於把簡直offer看完了一遍 所以第二遍我決定要美一個題自己去實現一遍,會加入自己的理解(但是不一定對哈) 題目:設計一個類,我們只能生成該類的一個實例。 餓漢試 package T2Singleton; /** * 餓漢式

原创 《HTTP詳解》三部曲

1. HTTP簡介 HTTP協議(HyperText Transfer Protocol,超文本傳輸協議)是用於從WWW服務器傳輸超文本到本地瀏覽器的傳送協議。它可以使瀏覽器更加高效,使網絡傳輸減少。它不僅保證計算機正確快速地傳輸

原创 Java單鏈表歸併排序

概念 歸併排序是建立在歸併操作上的一種有效的排序算法。該算法是採用分治法(Divide and Conquer)的一個非常典型的應用,歸併排序將兩個已排序的表合併成一個表。 歸併排序基本原理 通過對若干個有序結點序列的歸併來實現排

原创 劍指offer 面試題4—替換字符串中空格

題目: 實現一個函數,把字符串中的每個空格替換成“%20”。加入輸入“we are happy.”,則輸出“we%20are%20happy.”。 它想說的思想: 如果是字符數組來存儲的話,每次掃描遇到空格都會導致後面的字符向後

原创 自用Markdown顏色字體代碼

字體顏色 <font face="黑體">我是黑體字</font> <font face="微軟雅黑">我是微軟雅黑</font> <font face="STCAIYUN">我是華文彩雲</font> <font color=#

原创 Java線程池和阻塞隊列

Java提供了自己的線程池。每次只執行指定數量的線程,java.util.concurrent.ThreadPoolExecutor 就是這樣的線程池。 ThreadPoolExecutor 參數介紹: corePoolSiz

原创 Java多線程生產者消費者說明等待喚醒機制問題和虛假喚醒問題

不用等待喚醒機制實現的生產者與消費者 代碼 package com.hust.juc; /* * 生產者和消費者案例 */ public class TestProductorAndConsumer { publi

原创 IntelliJ IDEA 中 右鍵運行時沒有run;新建時,選項沒有Java class的解決方法和具體解釋

問題我就不贅述了,就是運行不了java程序,而且也不能建java文件 這個時候我們要理解這幾個東西的意思,這個知識點非常非常重要,必須會。 Sources 一般用於標註類似 src 這種可編譯目錄。有時候我們不單單項目的 s

原创 劍指offer 面試題3—二維數組中找數

題目: 在一個二維數組中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組中是否含有該整數。 基本思想: 首先選取數組中右上角的數字。如果等於要

原创 windows MySql 5.7.9,啓動不了。缺少data

官網MySQL百度雲鏈接 鏈接:http://pan.baidu.com/s/1i4XoTdr 密碼:t5ic 上邊是官網的MySQL,下載之後目錄是這樣的 這個時候我們不能盲目啓動,我習慣複製my-default.ini文件,

原创 劍指offer 面試題6—重建二叉樹

題目描述: 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列{1,2,4,7,3,5,6,8}和中序遍歷序列{4,7,2,1,5,3,8,6},

原创 劍指offer 面試題5—從尾到頭打印鏈表

題目: 輸入一個鏈表的頭結點,從尾到頭反過來打印出每個結點的值。 考慮用棧 public void invertedList1(ListNode head) { if (head == null) {