原创 基於原生Zookeeper的分佈式鎖(基於臨時順序節點)

原理很簡單,就是根據創建的順序節點的ID來對訪問進行排序,形成一個等待鏈表,後面的節點等待前面的節點完成(即監聽到delete事件) 直接貼代碼: package com.xycode.zkUtils.lock; import com

原创 log4j2指定不同包的輸出級別

首先引入這幾個包 <!-- 通用日誌接口 --> <dependency> <groupId>org.slf4j</groupId> <artifactId

原创 使用AQS實現一個簡單的可重入鎖

package com.xycode.aqsLock; import org.testng.Assert; import org.testng.annotations.Test; import java.util.concurren

原创 CountDownLatch與CyclicBarrier的區別(代碼說話,一目瞭然)

CountDownLatch相信很多人都比較瞭解,也都使用過,但CyclicBarrier可能就不太瞭解了,至於它們之間的區別我就曾迷惑會一段時間. 相比CountDownLatch,CyclicBarrier的本質區別是調用await(

原创 synchronized關鍵字的底層原理(鎖升級,對象頭)

synchronized根據競爭的激烈程度不同,實際上會經歷如下幾個過程: 無鎖 --> 偏向鎖(偏向鎖實際上需要先獲得輕量級鎖,然後在鎖重入時纔會執行偏向鎖優化) --> 輕量級鎖(CAS設置markword+自旋) --> 重量級鎖(

原创 YEN--K最短路算法(K-Shortest-Path) Java實現

前段時間要做一個Project,在建模過程中發現要求出一個網絡拓撲中的前K條最短路才能進行後續的運算,自己研究了一段時間,實現了java版本的YEN--ksp算法。 Yen's算法是Yen 在1971 年提出的以其名字命名 的Yen 算法

原创 鏈表的基本操作函數算法(C/C++實現)

鏈表的基本操作函數,一般的數據結構的書籍中涉及到的鏈表的基本操作算法都實現了 #include <cstdlib> #include <iostream> #include <cstdio> using namespace std;

原创 C/C++編程小練習 大數乘方(快速冪算法實現)

將我之前的大數乘方的算法做了些小優化,代碼改動很小 快速冪算法實現大數乘方,時間複雜度由O(n^3)降到O(n^2*logn) 快速冪算法原理其實蠻簡單的,類似於二分法的思想,掃描指數n的二進制形式,然後按照0或1做相應處理 #inclu

原创 PCA(主成分分析)的數學原理(之前一門課程寫的報告,現在發上來...)

1.背景介紹       一般情況下,在數據挖掘和機器學習等數據分析領域中,數據都被表示爲向量。衆所周知,很多機器學習算法的複雜度和數據的維數有着密切關係,甚至與數據維數呈指數級別關聯。然而實際機器學習中處理的數據可達成千上萬甚至幾十萬維

原创 C/C++編程小練習 計算10億之內的素數和(合數篩選算法實現)

計算10億之內的素數和(合數篩選算法實現) 代碼: #include <stdio.h> #include <stdbool.h> #include <math.h> #define MAX 1000000001 bool arr[M

原创 C/C++程序算法小練習--大整數加法

#include <iostream> #include <cstring> using namespace std; void reverse_str(char *a,int size){ for(int i=0;i<size/2;+

原创 C/C++程序算法小練習--大整數乘法

大整數乘法的原理很簡單,就是模擬經典的手算步驟   #include <iostream> #include <cstring> using namespace std; void reverse_str(char *a,int siz

原创 C/C++程序算法小練習--大整數減法

//大整數減法: #include <iostream> #include <cstring> using namespace std; void reverse_str(char *a,int size){ for(int i=0;i

原创 Java零拷貝探究

首先介紹普通拷貝,其流程圖如下:   當一個用戶線程發起要讀取磁盤上的某個文件的請求,其大致流程如上圖所示: 用戶線程發送系統調用read(),由於read()是系統調用,當前線程切換到內核空間。 然後,請求文件數據,文件數據從硬件磁

原创 CountDownLatch與CyclicBarrier的區別(代碼說話,絕對一目瞭然)

CountDownLatch相信很多人都比較瞭解,也都使用過,但CyclicBarrier可能就不太瞭解了,至於它們之間的區別我就曾迷惑會一段時間. 相比CountDownLatch,CyclicBarrier的本質區別是調用awai