Skip to content

Latest commit

 

History

History
129 lines (94 loc) · 3.75 KB

File metadata and controls

129 lines (94 loc) · 3.75 KB

[toc]

JAVA

Environments

brew update
brew upgrade
brew install openjdk@17
brew install openjdk@11
brew install openjdk@8

java -version
  • OpenJDK
    • Homebrew默认会将OpenJDK的包解压在 /usr/local/Cellar/下,并且在/usr/local/opt/创建软链接。
    • /usr/local/opt/openjdk 默认指向最新版本
    • JAVA_HOME vs. PATH Environment Variables
      • 最好都设,比如maven依赖JAVA_HOME
# 指定jdk版本,for maven
export JAVA_HOME=/usr/local/opt/openjdk@8
export PATH="/usr/local/opt/openjdk@8/bin:$PATH"
# /usr/bin/java 默认读取 /Library/Java/JavaVirtualMachines 中最高版本的 JDK

For the system Java wrappers to find this JDK, symlink it with
  sudo ln -sfn /usr/local/opt/openjdk@17/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-17.jdk


openjdk@17 is keg-only, which means it was not symlinked into /usr/local,
because this is an alternate version of another formula.

# 通过环境变量设置
If you need to have openjdk@17 first in your PATH, run:
  echo 'export PATH="/usr/local/opt/openjdk@17/bin:$PATH"' >> ~/.zshrc

For compilers to find openjdk@17 you may need to set:
  export CPPFLAGS="-I/usr/local/opt/openjdk@17/include"
  • IDE: IntelliJ IDEA Ultimate https://www.jetbrains.com/idea/
  • IDE Plugin
    • 代码质量:SonarLint
    • Maven Helper
      • Right click in Editor | Run Maven Right click in Project View Toolbar | (Run|Debug) Maven CTRL + ALT + R - "Run Maven Goal" popup (you can use Delete key in the popup) CTRL + SHIFT + ALT + R - "Run Maven Goal on Root Module" popup (you can use Delete key in the popup)
        Customize goals: Settings | Other Settings | Maven Helper Define shortcuts: Settings | Keymap | Plug-ins | Maven Helper
        Open pom file, click on 'Dependency Analyzer' tab, right click in the tree for context actions.
  • maven
brew install maven
# edit ~/.m2/settings.xml 全局配置maven
export MAVEN_OPTS="-Xms256m -Xmx512m -Xss10m"
# 堆内存初始值为256MB,最大值512MB
# xss: thread stack size
# https://stackoverflow.com/questions/4967885/jvm-option-xss-what-does-it-do-exactly

mvn package -DskipTests -pl my_target -am
# -am: If project list is specified, also build projects required by the list
# -e: 显示errors
brew install gradle

Basics

java -classpath

Data Structures

Data Types

convert string to long

String num = xxx;
long val = Long.parseLong(num);

String num1 = Long.toString(val);
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;

private final ReadWriteLock readWriteLock
            = new ReentrantReadWriteLock();
private final Lock writeLock
  					= readWriteLock.writeLock();
private final Lock readLock = readWriteLock.readLock();

Profiling

  • jstack
    • apt-get install openjdk-12-jdk-headless
    • jstack -f ,-f必须写在jstack后面、待执行的进程前面