Skip to main content

12 posts tagged with "java"

View All Tags

· One min read

2023-03-06 grundfos java17-graalvm22

FROM debian:11-slim
LABEL maintainer="wolanx<82540776@qq.com>"

RUN sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list \
&& sed -i 's/security.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list

# https://github.com/graalvm/graalvm-ce-builds/releases
# https://github.com/graalvm/container/raw/master/community/gu-wrapper.sh /usr/local/bin/gu
# https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-22.3.1/graalvm-ce-java17-linux-amd64-22.3.1.tar.gz graalvm-ce-java17-linux-amd64-22.3.1.tar.gz
ADD graalvm-ce-java17-linux-amd64-22.3.1.tar.gz /opt/
ADD gu-wrapper.sh /opt/
RUN mv /opt/gu-wrapper.sh /usr/local/bin/gu && chmod +x /usr/local/bin/gu

ENV LANG=en_US.UTF-8
ENV JAVA_HOME=/opt/graalvm-ce-java17-22.3.1
ENV PATH="$PATH:$JAVA_HOME/bin"

RUN apt-get update -y && \
apt-get install -y procps net-tools iputils-ping htop gcc curl wget ca-certificates \
fontconfig

ADD https://gfdcc-production-profile.oss-cn-shanghai.aliyuncs.com/profile/fonts/SourceHanSansCN-Normal.ttf /usr/share/fonts/truetype/wolanx/
ADD https://gfdcc-production-profile.oss-cn-shanghai.aliyuncs.com/profile/fonts/SourceHanSansCN-Bold.ttf /usr/share/fonts/truetype/wolanx/

CMD java -version

# docker build -t wolanx/java .

2021-03-13 google jib plugin

plugins {
id 'com.google.cloud.tools.jib' version '3.3.0'
id 'java'
}
jib {
from {
image = 'openjdk:17-slim'
}
to {
image = 'xxxx'
// tags = [version.toString()]
}
container {
mainClass = 'com.wolanx.proxy.edierp.EdiApplication'
ports = ['22100']
format = 'OCI'
creationTime = 'USE_CURRENT_TIMESTAMP'
}
}

· One min read

Intro

Java 诊断工具 Arthas 入门教程 https://start.aliyun.com/course?id=qDlgqpBT 进阶 命令 https://arthas.aliyun.com/doc/advanced-use.html

Install

wget https://arthas.aliyun.com/arthas-boot.jar

use java > 8 when jre tool.java

Start

java -jar arthas-boot.jar

# input pid

help

dashboard

thread 1
thread 1 | grep 'main('

sc -d *MathGame # 查找JVM里已加载的类

jad demo.MathGame # 反编译代码

watch demo.MathGame primeFactors returnObj # 查看函数的参数/返回值/异常信息

· One min read
wget --no-check-certificate 'https://github.com.cnpmjs.org/graalvm/graalvm-ce-builds/releases/download/vm-21.3.0/graalvm-ce-java11-linux-amd64-21.3.0.tar.gz'
mkdir /etc/graalvm
tar -zxvf graalvm-ce-java11-linux-amd64-21.3.0.tar.gz -C /etc/graalvm
export PATH=$PATH:/etc/graalvm/graalvm-ce-java11-21.3.0/bin
# docker pull docker.io/springci/graalvm-ce:java11-0.11.x

# yum install gcc glibc-devel zlib-devel
gu install native-image
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
// javac HelloWorld.java
// native-image -jar HelloWorld
// ./HelloWorld

quarkus

./gradlew build -Dquarkus.package.type=native -Dquarkus.native.container-build=true -Dquarkus.native.native-image-xmx=8g

· 2 min read

gradle home: /usr/local/Cellar/gradle/5.4.1/libexec

wget https://services.gradle.org/distributions/gradle-5.4.1-bin.zip
mkdir /opt/gradle
unzip -d /opt/gradle gradle-5.4.1-bin.zip

# vi
export PATH=$PATH:/opt/gradle/gradle-5.4.1/bin

task run

GRADLE_OPTS: "-Dorg.gradle.daemon=false"
./gradlew
./gradlew :base:bundleDebug
./gradlew -p egids-webapp jibDockerBuild

gradle

task +参数

def versionName = project.hasProperty('vest') ? project.property('vest') : "123"

task myTask {
println "config myTask${versionName} hello"
}

./gradlew :myTask -Pvest=3333

demo

build.gradle

plugins {
id 'java'
}

group 'com.zx5435'
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8

jar {
from {
configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
}
manifest {
attributes 'Main-Class': 'Hello'
}
}

repositories {
mavenLocal()
maven { url "https://maven.aliyun.com/nexus/content/groups/public" }
mavenCentral()
}

dependencies {
implementation 'org.springframework.boot:spring-boot-starter-json:2.6.4'
implementation 'org.springframework.boot:spring-boot-starter-logging:2.6.4'

// lombok
compileOnly 'org.projectlombok:lombok:1.18.22'
annotationProcessor 'org.projectlombok:lombok:1.18.22'

compile "cn.hutool:hutool-all:$ver"
testCompile group: 'junit', name: 'junit', version: '4.12'
}

ext {
ver = '4.3.1'
}

settings.gradle

rootProject.name = 'gradle-test'

gradle springcloud

parent

plugins {
id 'org.springframework.boot' version '2.1.4.RELEASE' // 重点
id 'java'
}

allprojects {
apply plugin: 'java'
apply plugin: 'io.spring.dependency-management'
apply plugin: 'org.springframework.boot'

group = 'com.zx5435'
version = '1.0'
sourceCompatibility = '1.8'

repositories {
mavenCentral()
mavenLocal()
}
}

subprojects {
dependencyManagement {
imports {
mavenBom 'org.springframework.cloud:spring-cloud-dependencies:Greenwich.RELEASE' // 重点
}
}

dependencies {
compile "cn.hutool:hutool-all:4.3.1"
testCompile 'junit:junit:4.11'
// testCompile 'org.springframework.boot:spring-boot-starter-test:2.1.4.RELEASE'
}
}

sub

dependencies {
// compile 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-server'
compile 'org.springframework.boot:spring-boot-starter-web'
}

· 24 min read

https://github.com/randian666/algorithm-study https://www.itcodemonkey.com/article/13260.html

JAVA基础

JVM知识

开源框架知识

操作系统

多线程与并发

TCP与HTTP

架构设计与分布式

数据结构与算法

数据库

消息队列

  • 消息队列的使用场景。 https://blog.csdn.net/seven__________7/article/details/70225830
  • 消息的重发,补充策略。
  • 如何保证消息的有序性。
  • 用过哪些MQ,和其他mq比较有什么优缺点,MQ的连接是线程安全的吗,你们公司的MQ服务
  • 架构怎样的。
  • MQ系统的数据如何保证不丢失。
  • rabbitmq如何实现集群高可用。
  • kafka吞吐量高的原因。 https://my.oschina.net/runningwork/blog/918613
  • kafka架构和原理 http://lxw1234.com/archives/2015/09/504.htm
  • 利用mq怎么实现最终一致性。
  • 使用kafka有没有遇到什么问题,怎么解决的。
  • MQ有可能发生重复消费,如何避免,如何做到幂等。
  • MQ的消息延迟了怎么处理,消息可以设置过期时间么,过期了你们一般怎么处理。

缓存

· One min read

cache

  • @Cacheable(key = "#id")
  • @CachePut(key = "#user.id")
  • @CacheEvict(key = "#id")

async

springcloud

  • eureka server 服务注册 http://localhost:8761/
  • eureka client 可以起多个
  • call service: Ribbon, Feign(主流,再封装)
  • zipkin 链路追踪
  • config 总线 amqp重载
  • hystrix 熔断器,监控
  • zuul 网关

· One min read

安装 https://blog.csdn.net/sun8112133/article/details/79944531

使用 apt-get 命令 安装后的 tomcat 7的目录结构说明
/etc/tomcat8 :全局配置
/usr/share/tomcat8/ :程序主目录
/usr/share/tomcat8/conf/Catalina/localhost/ :本机部署的 Catalina 配置
/var/lib/tomcat8/ :工作主目录
/var/lib/tomcat8/webapps :应用文件实际存放于此
/var/lib/tomcat8/work :动态工作目录(动态编译的 .jsp 存放于此)

docker

# 把war放当前目录,会自动解压缩
docker run -it --rm -p 8888:8080 -v $PWD:/usr/local/tomcat/webapps tomcat:8.5.39-jre8-alpine

tar.gz install https://www.jb51.net/article/143185.htm

wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.17/bin/apache-tomcat-9.0.17.tar.gz
tar -zxvf apache-tomcat-9.0.17.tar.gz

jetty

wget https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.4.16.v20190411/jetty-distribution-9.4.16.v20190411.tar.gz
tar -zxvf jetty-distribution-9.4.16.v20190411.tar.gz

· 2 min read

docker image

# https://github.com/graalvm/container/pkgs/container/graalvm-ce
# ghcr.io/graalvm/$IMAGE_NAME[:][$os_version][-$java_version][-$version][-$build_number]
docker pull ghcr.io/graalvm/jdk:ol8-java17-22

docker tag ghcr.io/graalvm/jdk:ol8-java17-22 wolanx/java:jdk17-graalvm22
docker push wolanx/java:jdk17-graalvm22

docker tag ghcr.io/graalvm/jdk:ol8-java17-22 wolanx/java:latest
docker push wolanx/java:latest

doc

面试题

优化 jvm

spring

db

jmap 分析

字段详细解释 https://www.cnblogs.com/kongzhongqijing/articles/3621163.html
jmap -heap 1
jmap -dump:file=jmap.dump 1
jmap -dump:format=b,file=jmap.hprof 1
tar -zcvf a.tar.gz jmap.hprof
k cp dep-monitor-center-577f76bb89-xjfwg:/a.tar.gz a.tar.gz
https://www.eclipse.org/mat/

java基础

常用命令

# .java => .class
javac HelloWorld.java

# 运行 .class
java HelloWorld
java -classpath /www/demo HelloWorld

# .class => .jar
jar -cvf hello.jar Hello.class
# 运行 jar
java -jar 1.jar

# .jar => .exe
javaFX

# .jar => folder
jar xvf etp-cs-i18n.jar

decode

.class => .java
java -jar ~/Desktop/app/fernflower/build/libs/fernflower.jar classes src/main/java-temp

· One min read
yum list installed | grep java
yum install -y java # jre
yum install -y java-1.8.0-openjdk # jre
yum install -y java-1.8.0-openjdk-devel # javac

apt install default-jdk

# 看那个java
which java
ls -lrt /usr/bin/java
ls -lrt /etc/alternatives/java

# vi /etc/profile
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.212.b04-0.el7_6.x86_64
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

# ln
ln -sf /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.242.b08-0.el7_7.x86_64/bin/java /etc/alternatives/java