开发手册

软件安装

多版本管理(java、nodejs、go)

描述
SDKMAN jdk或常见sdk安装 https://sdkman.io/sdks
nvm Nodejs版本管理 https://github.com/nvm-sh/nvm

java&gradle&maven

  1. sdk list java
  2. sdk install java 11.0.11.j9-adpt
  3. sdk list gradle
  4. sdk install gradle 7.0
  5. sdk list maven
  6. sdk install maven 3.8.1

jdk

GraalVM

OpenJDK

MAC使用android投屏工具:AirDroid

通用工具

日志聚合系统

  1. Loki(替换ELK):https://grafana.com/oss/loki/

    代码分析统计比对

    https://github.com/AlDanial/cloc
    1. npm install -g cloc
    2. sudo apt install cloc
    3. sudo yum install cloc

    并发测试工具(替换ab)

    https://github.com/rakyll/hey

SQL 评分分析soar

https://github.com/XiaoMi/soar

SQL 评审与执行 yearning

https://guide.yearning.io/

Maven私服

Artifactory

Nexus

Java反向代理&负载均衡

Traefik

https://traefik.cn/

JAVA监控分析

Arthas

  1. sc 命令可以查找到所有JVM已经加载到的类。如果搜索的是接口,还会搜索所有的实现类,通过-d参数,可以打印出类加载的具体信息
  2. sc javax.servlet.Filter
  3. sm命令则是查找类的具体函数
  4. sm java.math.RoundingMode
  5. ognl命令可以动态执行代码

WEB IDE

对象复制mapstruct

https://github.com/mapstruct

数据库文档生成screw

  1. <dependency>
  2. <groupId>cn.smallbun.screw</groupId>
  3. <artifactId>screw-core</artifactId>
  4. <version>1.0.5</version>
  5. </dependency>

java

  1. package com.jnliok.sql.doc;
  2. import java.util.ArrayList;
  3. import javax.sql.DataSource;
  4. import org.junit.Test;
  5. import com.zaxxer.hikari.HikariConfig;
  6. import com.zaxxer.hikari.HikariDataSource;
  7. import cn.smallbun.screw.core.Configuration;
  8. import cn.smallbun.screw.core.engine.EngineConfig;
  9. import cn.smallbun.screw.core.engine.EngineFileType;
  10. import cn.smallbun.screw.core.engine.EngineTemplateType;
  11. import cn.smallbun.screw.core.execute.DocumentationExecute;
  12. import cn.smallbun.screw.core.process.ProcessConfig;
  13. public class GenDbDocTests {
  14. /**
  15. * 文档生成
  16. */
  17. @Test
  18. public void documentGeneration() {
  19. String fileOutputDir = "/Users/jnliok/Downloads";
  20. String fileName = "mysql_test_doc";
  21. // 数据源
  22. HikariConfig hikariConfig = new HikariConfig();
  23. hikariConfig.setDriverClassName("com.mysql.cj.jdbc.Driver");
  24. hikariConfig.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/test");
  25. hikariConfig.setUsername("qizai");
  26. hikariConfig.setPassword("Mysql2018");
  27. // 设置可以获取tables remarks信息
  28. hikariConfig.addDataSourceProperty("useInformationSchema", "true");
  29. hikariConfig.setMinimumIdle(2);
  30. hikariConfig.setMaximumPoolSize(5);
  31. DataSource dataSource = new HikariDataSource(hikariConfig);
  32. // 生成配置
  33. EngineConfig engineConfig = EngineConfig.builder()
  34. // 生成文件路径
  35. .fileOutputDir(fileOutputDir)
  36. // 打开目录
  37. .openOutputDir(true)
  38. // 文件类型
  39. .fileType(EngineFileType.HTML)
  40. // 生成模板实现
  41. .produceType(EngineTemplateType.freemarker)
  42. // 自定义文件名称
  43. .fileName(fileName).build();
  44. // 忽略表
  45. ArrayList<String> ignoreTableName = new ArrayList<>();
  46. ignoreTableName.add("test_user");
  47. ignoreTableName.add("test_group");
  48. // 忽略表前缀
  49. ArrayList<String> ignorePrefix = new ArrayList<>();
  50. ignorePrefix.add("test_");
  51. // 忽略表后缀
  52. ArrayList<String> ignoreSuffix = new ArrayList<>();
  53. ignoreSuffix.add("_test");
  54. ProcessConfig processConfig = ProcessConfig.builder()
  55. // 指定生成逻辑、当存在指定表、指定表前缀、指定表后缀时,将生成指定表,其余表不生成、并跳过忽略表配置
  56. // 根据名称指定表生成
  57. .designatedTableName(new ArrayList<>())
  58. // 根据表前缀生成
  59. .designatedTablePrefix(new ArrayList<>())
  60. // 根据表后缀生成
  61. .designatedTableSuffix(new ArrayList<>())
  62. // 忽略表名
  63. .ignoreTableName(ignoreTableName)
  64. // 忽略表前缀
  65. .ignoreTablePrefix(ignorePrefix)
  66. // 忽略表后缀
  67. .ignoreTableSuffix(ignoreSuffix).build();
  68. // 配置
  69. Configuration config = Configuration.builder()
  70. // 版本
  71. .version("1.0.0")
  72. // 描述
  73. .description("数据库设计文档生成")
  74. // 数据源
  75. .dataSource(dataSource)
  76. // 生成配置
  77. .engineConfig(engineConfig)
  78. // 生成配置
  79. .produceConfig(processConfig).build();
  80. // 执行生成
  81. new DocumentationExecute(config).execute();
  82. }
  83. }