原创 javax.crypto.Mac#doFinal 非線程安全 not thread-safe

javax.crypto.Mac#doFinal 是非線程安全,他會改變內部的狀態。多線程使用時有三種方式: 1、使用clone函數 官方文檔的示例代碼 private Mac getMac() { // Mac is not t

原创 java 靜態成員三種初始化方法

聲明的時候初始化 在 static block中初始化 class Demo { public static int z; static { z = 10; //初始化代碼 }

原创 log4j 線程安全 thread-safe

log4j是線程安全的。原因是AppenderSkeleton.doAppend()方法是同步的。 源碼: public synchronized void doAppend(LoggingEvent event) { if(cl

原创 visual studio 2017搭建linux c++開發環境

1 前言 1.1 背景介紹 安裝vs2017主要是想使用C++跨平臺功能,Visual C++ for Linux,在vs下可以完成linux平臺下的開發,調試,編譯所有工作,非常方便。 1.2 我的環境 Windows10 +