2019.1.7

  • Spring Boot中使用@Async实现异步调用
    java.lang.IllegalStateException: Failed to load ApplicationContext
    @Async Demo 报错

  • ThreadPoolTaskExecutor

    public Executor taskExecutor() {ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();executor.setCorePoolSize(10);executor.setMaxPoolSize(20);executor.setQueueCapacity(200);executor.setKeepAliveSeconds(60);executor.setThreadNamePrefix("taskExecutor-");executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());return executor;
    }

    核心线程数10:线程池创建时候初始化的线程数
    最大线程数20:线程池最大的线程数,只有在缓冲队列满了之后才会申请超过核心线程数的线程
    缓冲队列200:用来缓冲执行任务的队列
    允许线程的空闲时间60秒:当超过了核心线程出之外的线程在空闲时间到达之后会被销毁
    线程池名的前缀:设置好了之后可以方便我们定位处理任务所在的线程池
    线程池对拒绝任务的处理策略:这里采用了CallerRunsPolicy策略,当线程池没有处理能力的时候,该策略会直接在 execute 方法的调用线程中运行被拒绝的任务;如果执行程序已关闭,则会丢弃该任务
    setWaitForTasksToCompleteOnShutdown(true)该方法就是这里的关键,用来设置线程池关闭的时候等待所有任务都完成再继续销毁其他的Bean,这样这些异步任务的销毁就会先于Redis线程池的销毁。同时,这里还设置了setAwaitTerminationSeconds(60),该方法用来设置线程池中任务的等待时间,如果超过这个时候还没有销毁就强制销毁,以确保应用最后能够被关闭,而不是阻塞住。


  • 启动maven打的jar包 报错
    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.class]: Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException
    在idea环境下跑项目没有问题 不知道为什么命令启动方式就报错
    搜索资料后:
    翻译一段:JAXB api被认为是Java EE api,因此不再包含在Java SE 9默认的类路径。在Java中11他们完全从JDK中删除。
    加入下方依赖后解决问题 Java启动jar包成功

    <dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.3.0</version>
    </dependency>

    那么为什么idea下成功java执行jar包会失败呢? 猜测:idea配置的jdk版本为1.8 而本地默认jdk版本是11


  • 记录一下最简单的投产上线的方式
    如果你使用的是maven来管理项目,执行以下命令既可以

1.cd 项目跟目录(和pom.xml同级)
mvn clean package
或者执行下面的命令
排除测试代码后进行打包
mvn clean package -Dmaven.test.skip=true
2.把jar包放到服务器上
3.打包完成后jar包会生成到target目录下,命名一般是 项目名+版本号.jar
启动jar包命令
java -jar target/spring-boot-scheduler-1.0.0.jar
重启:
ps -ef|grep java
##拿到对于Java程序的pid
kill -9 pid
##再次重启
Java -jar xxxx.jar


  • 服务器安装java 环境
    jdk
    下载Linux环境下的jdk1.8,请去(官网)中下载jdk的安装文件;
    1 由于我的Linux是64位的,因此我下载jdk-8u131-linux-x64.tar.gz。http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz
    如果Linux本身连接到互联网,我们可以直接通过wget命令直接把JDK安装包下载下来
    要是没有外网的环境,还是安装上面的方法下载安装包,然后上传到服务器当中
    解压命令进行解压
    2 $ tar -zxvf jdk-8u131-linux-x64.tar.gz
    3 修改环境变量
    用vim编辑器来编辑profile文件,在文件末尾添加一下内容
    export JAVA_HOME=/usr/local/src/jdk1.8.0_131
    export JRE_HOME=${JAVA_HOME}/jre
    export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
    export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
    export PATH=$PATH:${JAVA_PATH}
    然后,保存并退出(按:esc+Q+wq!)
    保存完之后,我们还需要让这个环境变量配置信息里面生效,要不然只能重启电脑生效了。
    通过命令source /etc/profile让profile文件立即生效
    ①、使用javac命令,不会出现command not found错误
    ②、使用java -version,出现版本为java version "1.8.0_131"
    ③、echo $PATH,看看自己刚刚设置的的环境变量配置是否都正确
    maven
    1wget http://mirror.bit.edu.cn/apache/maven/maven-3/3.6.0/binaries/apache-maven-3.6.0-bin.tar.gz
    下载最新maven安装包
    2tar vxf apache-maven-3.6.0-bin.tar.gz
    解压缩
    3然后配置环境变量,执行 vim /etc/profile 打开环境变量配置文件,在PATH后追加: :$MAVEN_HOME/bin
    然后在最后添加两行代码,设置maven安装目录
    MAVEN_HOME=/usr/local/maven/apache-maven-3.3.9
    export MAVEN_HOME
    4mvn -v
    jekins
    http://www.ityouknow.com/springboot/2017/11/11/springboot-jenkins.html 参考纯洁的微笑文章
    在下载过程中SSH Slaves 一直下载失败 跳过了。

    2019.1.8

  • spring cloud 注册eureka注册服务消费者 报错
    Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'com.example.demo.Feign.SchedualServiceHi': FactoryBean threw exception on object creation; nested exception is java.lang.NullPointerException
    待解决。重新建项目没有此问题

  • 修改 varchar类型字段长度
    ALTER TABLE 表名 modify 字段名 类型(varchar(101))

    2019.1.9

  • docker部署springboot项目(最简易)
    在项目中增加依赖略过
    安装 Docker 环境
    安装JDK
    安装MAVEN
    https://www.cnblogs.com/ityouknow/p/8599093.html
    纯洁的微笑教程
    需要补充的是需要在pom文件目录下执行mvn package docker:build
    dockerfile在pom文件下目录要匹配
    遇到的问题
    The goal you specified requires a project to execute but there is no POM in 没有在pom文件目录下执行命令
    java.lang.Exception: No runnable methodsbr/>这是因为在单测方法前没有加@Test。。。
    启动成功

  • mac idea状态栏开启方式/切换jdk版本/以及开发环境跑不起来原因/
    1 选项栏view-toolbar
    2
    点击右边第三个按钮-project Settings-project 就可以切换版本了
    3 项目开发环境里有rabbitmq消息队列,报错连不上,可以手边有两台电脑,另一台跑项目无问题,一下就想到了跑不起来这台电脑是开着***。。。。

  • mysql连接问题
    Wed Jan 09 22:36:00 CST 2019 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
    Wed Jan 09 22:36:02 CST 2019 WARN: Caught while disconnecting...

EXCEPTION STACK TRACE:
BEGIN NESTED EXCEPTION

javax.net.ssl.SSLException
MESSAGE: closing inbound before receiving peer's close_notify

STACKTRACE:

javax.net.ssl.SSLException: closing inbound before receiving peer's close_notify
1.在数据库连接的url中添加useSSL=false;
2.url中添加useSSL=true,并且提供服务器的验证证书。
如果只是做一个测试的话,没必要搞证书那么麻烦啦,在连接后添加一个useSSL=false即可,例如:
spring.datasource.url=jdbc:mysql://localhost:3306/project?useSSL=false&useUnicode=true&characterEncoding=UTF-8


  • 实体类序列化问题
    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'controller': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userRepository': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Not a managed type: class com.example.demo.entity.User

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userRepository': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Not a managed type: class com.example.demo.entity.User

Caused by: java.lang.IllegalArgumentException: Not a managed type: class com.example.demo.entity.User
at org.hibernate.jpa.internal.metamodel.MetamodelImpl.managedType(MetamodelImpl.java:210) ~[hibernate-entitymanager-5.0.12.Final.jar:5.0.12.Final]

缺少实体类序列化 public class User implements Serializable

2019.1.10

2019.1.11

一上班项目跑不起来 eureka连接不上。。maven clean /install 好使了 下次一定先试这个方法 耽误了半小时。。哎

继续dockerDemo
jpa连接数据库报错:
org.hibernate.InstantiationException: No default constructor for entity: :com.example.demo.entity.User
没有实体的默认构造函数 居然犯了这种错误 。只写了一个有参构造函数

自定义filter
import javax.servlet.*;
public class MyFilter implements Filter {}

@ControllerAdvice
拦截异常 做处理

配置swagger

配置log

配置 Actuator

docker查看对应容器日志
ocker logs -f -t --since="2017-05-31" --tail=10 edu_web_1
--since : 此参数指定了输出日志开始日期,即只输出指定日期之后的日志。
-f : 查看实时日志
-t : 查看日志产生的日期
-tail=10 : 查看最后的10条日志。
edu_web_1 : 容器名称

转载于:https://blog.51cto.com/12005608/2340355

2019 第二周 开发笔记相关推荐

  1. JAVA 第二周学习笔记

    JAVA第二周学习笔记 一.变量 1.变量的本质 2.变量的三大要素 a.变量名: b.变量值: c.变量类型: 3.变量的定义和使用 4.课后小练习: 5.变量的定义和使用 二.运算符 1.赋值运算 ...

  2. Linux第二周学习笔记(7)

    Linux第二周学习笔记(7) 2.13 文档查看cat_more_less_head_tail (1). cat命令 cat命令:用于查看一个文件的内容并将其显示在屏幕上 cat-A命令:显示所有的 ...

  3. 机电传动控制第二周学习笔记

    机电传动控制第二周学习笔记 经过第二周的学习,我了解了电机的发展历史.从奥斯特发现电生磁的现象,到法拉第电磁回转实验,再到后来的电机一步步的发展至今.它充满了巧合,但是它又必然一步步向更完美走去.电机 ...

  4. Linux第二周学习笔记(11)

    Linux第二周学习笔记(11) 2.17 隐藏权限lsattr_chattr chattr命令:是设置吟唱隐藏权限的命令,更改Linux文件系统上的文件属性. 参数说明: A:表示文件或目录的ati ...

  5. Linux第二周学习笔记(5)

    Linux第二周学习笔记(5) 2.11.CP命令 cp(copy简写)命令:用来将一个或多个源文件或者目录复制到指定的目的文件或目录. cp –r:复制目录 -i:安全选项 cp命令:拷贝/etc/ ...

  6. Linux第二周学习笔记(1)

    Linux第二周学习笔记(1) 2.6,相对和绝对路径 (1).路径:就是某一个文件存放的地方,只要键入这个文件的路径系统就只能直接找到这文件所在位置,所以找一个文件需要输入这个文件的路径. (2). ...

  7. 大学生慕课第二周学习笔记

    Open Judge  第二周学习笔记 2.1 输入输出进阶 %f:读入输出float/输出double. %lf:读入double. %lld:读入输出long long. %s:读入输出字符串,不 ...

  8. Linux第二周学习笔记(12)

    Linux第二周学习笔记(12) 2.18 特殊权限set_uid set_uid:这个权限是针对二进制可执行文件,使文件在执行阶段具有文件所有者的的权限. --------------------- ...

  9. Linux第二周学习笔记(13)

    Linux第二周学习笔记(13) 2.19 特殊权限set_gid 特殊权限set_gid:这个权限可以作用在二进制可执行文件上,还可以作用在目录上.特殊权限set_gid权限位是作用在组权限位上,目 ...

最新文章

  1. 量子信息技术研究现状与未来——郭光灿
  2. python主要运用于-Python的8大主要应用领域,看看哪个是你的菜?
  3. Coursera台大机器学习技法课程笔记04-Soft-Margin Support Vector Machine
  4. java英语ppt_来了!思维导图一键转PPT来了!
  5. java ldap 连接池_使用Ldap连接池
  6. boost::mp11::integer_sequence相关用法的测试程序
  7. 【Java爬虫】我的第一个爬虫 -- 简单抓取网页源代码
  8. 一位嵌入式工程师,硬核单片机编程思想!
  9. noip2014到2017初赛普及组看程序写结果、完善程序
  10. 使用 jQuery Mobile 与 HTML5 开发 Web App (五) —— jQuery Mobile 表单下
  11. Div+CSS布局居中
  12. 2017-11-14【Python】爬虫练习
  13. Studio启动的时候报错 Could not install Gradle distribution from
  14. math ceil函数python_Python3 ceil() 函数
  15. 零基础快速自学SQL,1天足矣!
  16. EC风扇电机如何工作?
  17. Kjava林林工具箱源代码(jbuilder工程)
  18. 物联网蓝牙芯片的选型
  19. layui结合json viewer实现代码格式化
  20. OMAP3630_usb驱动

热门文章

  1. linux下如何用c语言调用shell命令-转
  2. Sqlite查询优化技巧——将LIKE语句转换为比较语句 -转
  3. 【C++】用sort函数产生的段错误问题
  4. 如何将Sublime Text中的代码以彩色高亮形式复制到博客或word文档里
  5. 壁挂炉洗澡怎么调水温_壁挂炉水温太高怎么维修【调节壁挂炉温度】
  6. 手机端主图在哪里设置_原来华为手机灭屏也能看时间,操作方法非常简单,1分钟学会...
  7. awk取文本列_Linux:使用awk命令获取文本的某一行,某一列;sed插入指定的内容到指定文件中...
  8. Perl 字符串截取函数substr
  9. Informix常用操作方法命令
  10. WEB-INF目录 与 META-INF目录的作用