java 项目相关 学习记录

一位资深程序员大牛给予Java初学者的学习路线建议  【任何时期都可以好好看看】

https://www.imooc.com/article/8993

https://www.jianshu.com/p/4f1c7badd6a9 【java书籍】

Java编程语言(第三版)---Java四大名著----James Gosling(Java之父)

Java编程思想(第4版)----Java四大名著----------------Bruce Eckel

JAVA 2核心技术 卷I:基础知识(原书第8版)---Java四大名著-----Cay Horstmann

JAVA 2核心技术 卷II:高级特性(原书第8版)----Java四大名著-----Cay Horstmann

Effective Java中文版------Java四大名著--------Joshua Bloch

<深入理解java虚拟机>  <java并发编程实践>  <重构、改善既有代码的设计>  <设计模式(大话设计模式)>

https://www.cnblogs.com/WangBoBlog/p/7622753.html

==============================================================================

一、项目过程中遇到的一些问题记录

0,新装的Java环境,遇到连不上dubbo 的时候(可以先ping一下dubbo服务的地址,此时应该ping不通),需要特别注意一个地方:VPN的配置文件,默认的VPN配置文件中没有到dubbo服务的路由,需要在配置文件中添加一个路由: route 100.100.0.0 255.255.0.0 vpn_gateway。然后再ping一下dubbo服务的地址,此时应该可以ping通了。

0, 有时候遇到一些很奇怪的问题,可能原因是代码没生效。这时候尝试 clean 代码,并且在 run 和 debug 之间多切换切换。

1,版本号依赖 pom.xml,dubbo-provider.xml(提供服务的项目中要暴露服务接口),dobbo-consumer(webapp中要声明应用到的服务接口), Impl类文件上面的注解@Service("markingTaskService"); maven clean重启

2,有时候会遇到无法启动,端口号被占用。解决方法如下:

  •   运行jps命令找到正在运行的服务和webapp的进程id,如下图,其中两个App分别是服务的进程ID, BootStrap对应的ID是webapp的进程ID.
  • java 项目相关 学习记录
  •   使用 taskkill /F /pid 12776 命令终结此进程, /f表示强制结束。

3, 前端angular端口有时候也报被占用, 可以使用 netstat -aon | findstr "4200" 命令查找占用4200端口的进程ID,然后使用taskkill /f /pid  xxx结束进程。

注释:在Linux和Windows下,查看端口号被谁占用的命令都是 netstat命令,但是这个命令在两个平台上的使用方法不一样,可以使用 netstat ?命令(两个平台都支持这个写法)查看一下具体的参数含义。

在Linux下,netstat -tunlp | grep 8080 ,其中p参数负责显示pid。 在Windows下,netstat -ano | grep 8080 ,其中o参数负责显示pid。

4,Idea Intellij中自动注入时@Autowired时,报红线提示。不影响启动,但是视觉效果不好。可以如下设置:Settings--->Editor---->Inspections---->Spring--->Spring Core--->Code--->Autowiring for Bean Class(将Error改为Warning就可以了)

java 项目相关 学习记录

5, 换新电脑之后,发布api的时候报错,错误信息是 root工程在 (默认的Apache的)*仓库  找不到,而我们的*仓库已经换成自己的了。idea中的配置使用的是repository中的setting.xml。而这个setting.xml中的*仓库已经是自己的。所以在找 root 工程的时候用的配置文件并不是repository中的setting,而是用的原来的conf文件中的setting.xml。 所以将conf文件夹中的setting.xml替换成自己的就可以了。 然后运行mvn clean install -U。

6, exam-webapp 启动时遇到启动一半不往下走了, 原因是在某个controller中的某个 方法名 处打了断点,所以走不动了。一个比较奇葩的问题,记录一下。

7, idea intellij 中关闭coverage的开关: alt+ctrl+F6 。 coverage意思是单元测试的覆盖率,即 单元测试 所覆盖的代码范围。

8,自定义模板设置:3中的变量 $END$的作用是将光标位置默认放置在此处

java 项目相关 学习记录

9,一些对象中的对象,返回前端之后会变成引用。解决这个问题的方法是将 整个对象先变成json字符串(有个参数开关),然后再从json字符串转换为json对象。如下:

  java 项目相关 学习记录

10,新建文件时自动填充作者时间等信息

java 项目相关 学习记录

11,idea里有个前进后退的功能,即在鼠标停留的位置随意切换。默认快捷键如下图是ctrl+alt+左右箭头。

java 项目相关 学习记录

 还可以将其设置到工具条中,方法如下图:,Navigation Bar ToolBar里的内容就是快捷工具条上的图标。选中ToolBar Run Actions,然后点击右上角的add after,从main menu中找到需要添加到工具条上的功能,按Ctrl选中前后箭头,然后应用就可以了。还可以move up / move down调整位置。java 项目相关 学习记录

java 项目相关 学习记录

12,int updatedCnt = namedJdbcTemplate.update(sql, paramMap); 返回值是此条SQL语句成功更新的记录数量。(更新前的原值和更新后的新值相等也算成功更新,  { 由于条件不符合没找到 } 或 { 找到没更新成功(这种一般是sql执行出错了) }  算没成功更新)。

13,IDEA Intellij如何折叠代码块。 将鼠标放在if 或for代码块内, 然后选择  Code | Folding | Fold Code Block,或者快捷键 [ctrl+shift+.]。

14,经常遇到 在Navicat中可以查出结果的SQL但是在代码中却无法查询到结果的情况。这种情况一般都是 执行顺序、执行时机问题。比如在查询这一步时,之前的代码已经把数据清除了,所以代码这里查不到了,但是如果有事务控制,Navicat中的数据还没有删除,所以此时将SQL在Navicat中执行可以查询到结果。

15,

16,

17,

===============================================================================

===============================================================================

 二、知识点记录:

0, Intellij IDEA 破解下载  https://www.jetbrains.com/idea/download/#section=windows

  • Version: 2018.2.3
  • Build: 182.4323.46
  • Released: September 4, 2018

破解前 先将“     0.0.0.0 account.jetbrains.com    ”添加到hosts文件中

1, 简单破解 http://idea.lanyus.com/

2, 永久破解:

  ①,下载破解补丁 http://idea.lanyus.com/jar/JetbrainsCrack-3.1-release-enc.jar

  ②,将补丁放在安装包的/bin路径下,如图中放置在最后的jar文件,并且对本文件夹(bin)下的idea.vmoptions配置文件进行修改[注意:(可能是版本还是不同操作系统的原因,有人可能没有idea.vmoptions,但是有idea.exe.vmoptions和idea64.exe.vmoptions这两个文件,在这里面进行配置应该也是一样),打开后在最后一行添加如下一条配置指令:

windows版:-javaagent:[这里放置对应补丁包的路径](比如:D:/indea/bin/JetbrainsCrack-2.7-release-str.jar  , 注意后缀也要加上!!!

Mac版:-javaagent:../bin/JetbrainsCrack-2.7-release-str.jar

  ③保存编辑后的文件,然后打开idea,进入激活窗口此时需要选择 激活码 的激活方式,并输入如下激活码进行激活:

  ④ 激活码从  http://idea.lanyus.com/  此网站获取,填写后即可到2100年。!!!!

3,检查java代码的插件:alibaba  Java 开发规约插件,该插件是由阿里巴巴p3c项目组研发(P3C是世界知名的反潜机,专门对付水下潜水艇,寓意是扫描出所有潜在的代码隐患。)在IDEA的插件仓库中搜索alibaba即可,如下图。

java 项目相关 学习记录

1 JVM JRE JDK

JVM:英文全称Java Virtual Machine,字面意思“Java虚拟机”,简单来说就是一个软件。一个什么软件呢?一个可以运行Java的软件。我们在将.java编译后,会生成相应的.class文件,那么,问题来了,什么问题呢?就是这个.class文件怎么运行?运行在哪里?答案就是JVM。JVM就是加载并运行.class文件的软件。

JRE:英文全称Java  Runtime  Enviromental,字面意思“Java运行时的环境”,简单来说就是一个平台。一个什么平台呢?一个专门运行Java程序的平台。它包括了JVM和Java的一些常用的类库,JVM就是上面所说的Java虚拟机,而类库就是我们在编写好Java程序后所依赖的核心类和支持文件,没有这些类库,我们编写好Java程序就没法正常执行,可以说JRE是运行Java程序的最小环境。

JDK:英文全称Java Development ToolKit,即Java开发工具包,它除了包括JRE和JVM外,还包括java(用于执行.class文件)、javac(用于将.java文件编译成.class文件)等工具,这些工具能够很好地帮助我们进行Java开发。理论上讲,有了JDK就不需要JRE了。

2 JDK SE? EE? ME?

Java SE(Java Platform,Standard Edition), java的标准版本,一般就是指JDK(Java SE Development Kit)
Java EE (Java Platform,Enterprise Edition),java 的企业版本
Java ME(Java Platform,Micro Edition),java的微型版本。

JavaEE是开发企业级应用的一套API(或者叫标准),是建立在JavaSE之上的。

比如JDBC是JavaSE里面的内容,而JPA却是JavaEE里面的内容,但是JPA实际上是对JDBC的一种封装。

JavaEE SDK就是Oracle提供的调试运行环境(GlassFish)。

企业级开发一般分为两大阵营(或者有其他?请评论补充),

一种是官方推的JavaEE,一种是Spring这种所谓的轻量级企业应用框架。

如果你要开发前者,你就可以使用JavaEE SDK,然而也不是必须的,你可以使用其他JavaEE环境,比如JBoss Weblogic之类的。如果是后者,就没必要下载JavaEE SDK,就一个Tomcat就搞定了。


注:两大阵营并非完全不容对方,而是在互相推动着彼此的发展,比如JPA的标准制定就是参照Hibernate,而Spring现在的很多东西也在和官方的标准靠拢,比如现在的4.x版本里面的Spring Cache就在兼容JCache(JSR-107)

3  JDK安装(Linux 和 Windows下)以及JDK环境变量配置教程 [很简单,几乎就是配置个环境变量就可以了]

    https://blog.csdn.net/itxiaolong3/article/details/77691245

1, JAVA jdk的 版本8u171与8u172的区别

这是官方对于奇数版本与偶数版本区别的解释:

从JDK版本7u71以后,JAVA将会在同一时间发布两个版本的JDK,其中:

奇数版本为BUG修正并全部通过检验的版本,官方强烈推荐使用这个版本。

偶数版本包含了奇数版本所有的内容,以及未被验证的BUG修复,Oracle官方表示:除非你深受BUG困扰,否则不推荐您使用这个版本。

2, 基本步骤:

  • 将下载包[点我] 解压到一个目录
  • 配置环境变量,如下
Linux下:
1, 编辑 /etc/environment
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:$JAVA_HOME/bin" export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib export JAVA_HOME=/path/to/ jdk1..0_171 , source /etc/environment //使配置文件立即生效 , 编辑 /etc/profile [全局用户,每次重启电脑都会自动添加环境变量]
export JAVA_HOME=/path/to/jdk1..0_171
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH , source /etc/profile , 编辑~/.bashrc,同样添加profile下面的环境变量,否则新打开的shell窗口没有java环境变量,不会识别java命令。
, DONE! windows下:
下载JDK的exe安装包,然后配置环境变量如下,
系统变量->新建 JAVA_HOME,值为jdk的安装路径,精确到jdk文件夹(D:\workware\jdk).然后在系统变量的Path变量中添加 "%JAVA_HOME%/bin;"即可。 java -version测试安装是否成功!

※ Idea IDE第一次打开时要配置JDK,找到文件夹xx/xx/java/jdk1.8.0_171  即可,不需要到更下层的bin/之类的文件夹。

4 安装maven3.5.4(Linux 和 Windows)

  官方下载地址: https://maven.apache.org/download.cgi

  注意Linux下载的是第一个  apache-maven-3.5.4-bin.tar.gz 而不是 apache-maven-3.5.4-src.tar.gz

  window下载 apache-maven-3.5.4-bin

环境变量配置:

Linux下配置

然后解压到某个文件夹,然后在/etc/profile下配置环境变量如下。同时也在/root/.bashrc下也配置下面的变量

export M2_HOME=/e/0Ubuntu/software/maven/apache-maven-3.5.4
export CLASSPATH=$CLASSPATH:$M2_HOME/lib
export PATH=$PATH:$M2_HOME/bin

然后 source /etc/profile 使配置文件立即生效。然后mvn -v 检验是否安装成功。

Windows下配置:

M2_HOME    %M2_HOME%\bin


maven配置

在当前用户的目录下(/root下)创建一个 .m2目录(或者使用mvn clean命令,将会自动在当前用户的用户目录下产生一个.m2目录).将maven安装目录下的conf/settings.xml maven配置文件复制到.m2目录下,这样以后每次maven升级时都无需再次配置此文件了。 【创建一个仓库目录,然后将conf/setting.xml文件复制到此文件夹下,然后在idea中配仓库地址即可。】

基本上就两个地方需要配置:

  • localRepository节点:此节点配置本地仓库路径。如果不配值默认路径就是.m2/repository文件夹
  • mirror 节点:maven中心仓库的镜像,可以设置为阿里云的镜像,如下
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>

6 Tomcat9.0的下载与安装(Linux 和 Windows)   官网下载

1, 下载core中的 tar.gz (pgpsha1sha512) 【windows下载 core中的64-bit Windows zip (pgpsha512)】

2,  将压缩包解压到某个文件夹xxx,然后进入xxx/bin 执行命令 ./startup.sh 开启tomcat, 执行./shutdown.sh关闭tomcat。 一般到这里边成功了。如果不成功,则需要进一步的配置,如下(以Linux为例):

  • 编辑/etc/profile文件,加入如下内容
  • export CATALINA_HOME=你的tomcat路径
    export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:${CATALINA_HOME}/lib
    export PATH=${CATALINA_HOME}/bin:$PATH
  • 编辑xxx/bin/startup.sh, 在最后一行【exec "$PRGDIR"/"$EXECUTABLE" start "$@" 】前添加以下代码
    JAVA_HOME=你的JAVA路径
    JRE_HOME=${JAVA_HOME}/jre
    PATH=${JAVA_HOME}/bin:${JRE_HOME}:$PATH
    CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
    TOMCAT_HOME=你的tomcat路径
    /注意,路径都是精确到版本的那个文件夹(比较外层的那个文件夹,bin外面的那个文件夹)

7  Idea建立maven工程

最快的方法就是找一个多年开发经验的人问一下,自己摸索确实挺费劲。熟悉之后也不需要记录什么了

File-->new project,然后在 file->project structure-->project或快捷方式中配置JDK, 然后import module。

然后IDEA的settings--->Build, Exection,Deployment-->Maven-->配置settings.xml和repository(仓库).

[这样配置之后每次新建project后还需要每次都配置一下,所以在File->other settings-->settings for new projects中配置一下maven配置文件和仓库地址,以后新建project都会使用这个maven配置]

可以装个插件 Maven Helper

8  maven引入SpringMVC相关依赖

官方网站:http://search.maven.org ,然后在 advanced search中的By Coordinate--->groupid 搜索 org.springframework。在结果中找到5.0.7版本。基本用到4个jar包:

9  zookeeper的安装[分为单机和集群两种安装]

1, 原理

2, 下载地址:http://mirror.bit.edu.cn/apache/zookeeper/

3,  单机和集群安装方法:

  https://blog.csdn.net/ron03129596/article/details/68962448

     https://www.cnblogs.com/crazylqy/p/7119030.html

4,

10,  dubbo相关,不用安装

官网: http://dubbo.apache.org/#/docs/user/quick-start.md?lang=zh-cn

11, openVPN安装指南

注意:

  1,公司项目中 vpn的配置文件中新增了一些网关配置,新建环境时注意加进去,否则项目启动不起来

  2,同一个账号如果在两个电脑上登录,则会不断的重连,导致两个电脑都不能连接成功。

Ubuntu:

https://blog.csdn.net/u011138447/article/details/51216455   【安装指南】

https://openvpn.net/index.php/open-source/downloads.html    【官网下载原码】

查看版本: openvpn --version

启动命令: sudo openvpn --daemon --cd /etc/openvpn --config client.ovpn --log-append /var/log/openvpn.log

获取更简单的 openvpn --config path/to/ths.ovpn

Windows:

注意将配置文件放到OpenVPN安装目录下的config文件夹下,否则会报配置文件找不到.

有时候openvpn会莫名其妙的挂掉,卸载掉重新装就可以了。

12,  etcd集中配置

https://github.com/coreos/etcd/releases/  【下载包地址】

https://www.cnblogs.com/nima/p/8028551.html【安装及启动等说明】

环境变量配置:

ETCD_ENDPOINT   http://192.168.195.98:2379  [使用Telnet 192.168.195.98 2379 测试本地是否可以访问此地址和端口!每次配这个都错,注意注意。还会影响到openVPN]

ETCD_REVERSION 0

ETCDTL_API 3[没用到]

13, 项目总结

  本机配置完如下即可运行项目。

  1, maven配置,用户名/密码 镜像地址(本地仓库)  2, etcd环境变量配置(远程etcd地址),本机无需装 ;    3, vpn启动

14, 自动化部署

1,

  http://gs.mizss.com/hanfeng/demo/wiki/%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E9%83%A8%E7%BD%B2%E7%AE%80%E8%BF%B0

2,  api工程

测试版发布步骤:

  • mvn clean deploy 发布快照版本 直接打包jar,并发布到maven私服(阿里的一个服务器)中

发布正式版步骤:

  • 运行maven release插件命令:mvn clean release:clean release:prepare release:perform 。这个命令做的事情:将本地pom.xml文件中的版本号去除snapshot,然后打个tag发布到git仓库中,然后将本地的pom.xml文件版本号加1(同时加上snapshot)。
  • 然后去git仓库 点击版本发布,点击时将通知jenkins服务器拉取git仓库中的tag代码,将其打成jar包,并传送到maven私服上(脚本命令)。

3, service工程

测试版发布步骤:  

  • 运行maven release插件命令: mvn clean release:clean release:prepare release:perform。这个命令做的事情: 同api修改版本号,然后打个tag发布到git仓库中,通知jenkins拉取git仓库中的tag代码,将其打包成zip包,并通过脚本命令将其传送到dubbo服务器上(亦是阿里的一个服务器)并将此服务运行起来。[Jenkins服务器和duboo服务器互相无密码互连]

正式版发布步骤:

  • 开始和service的测试版发布步骤一样,然后到git仓库中点击 发布新版。

4, webapp工程

测试版发布步骤:

  • 运行maven release插件命令: mvn clean release:clean release:prepare release:perform。 这个命令做的是: 同上修改版本号,然后打个tag发布到git仓库中。通知jenkins拉取git仓库中的tag代码,将其打成war包,并通过脚本命令将其传到tomcat服务器上。同时前端zip包传到nginx服务器上。
      

15,  Swagger入门教程 [编写接口文档]

17,redis 在idea中的插件 Iedis, 需要破解,网上可以破解

18,jacob--Java Com Bridge 使用指南

jacob包已上传至百度云 另可通过此下载 https://sourceforge.net/projects/jacob-project/files/jacob-project/ 。经自己实验,将jacob-1.18-x64.dll放入 ..../jdk/jre/bin目录下有效。

19,

20,

21,

22,

上一篇:launch failed.Binary not found in Linux/Ubuntu解决方案


下一篇:MySQL 5.1完全卸载