java
云原生:DevOps+持续交付+微服务+容器
符合云原生架构的应用程序应该是:采用开源堆栈(K8S+Docker)进行容器化,基于微服务架构提高灵活性和可维护性,借助敏捷方法、DevOps支持持续迭代和运维自动化,利用云平台设施实现弹性伸缩、动态调度、优化资源利用率。
springboot
常用组件
- HTTP组件:RestTemplate
开源
RUOYI
java.lang.IllegalArgumentException: When allowCredentials is true, allowedOrigins cannot contain the special value "*" since that cannot be set on the "Access-Control-Allow-Origin" response header. To allow credentials to a set of origins, list them explicitly or consider using "allowedOriginPatterns" instead.
src\main\java\com\ruoyi\framework\config\WebMvcConfig.java
.allowedOrigins("allowedOriginPatterns")
jenkins部署
执行shell
run=$WORKSPACE/im-modules/im-admin-api/run
sudo mkdir -p $run
sudo chown -R jenkins:jenkins $run
cp -f $WORKSPACE/im-modules/im-admin-api/target/im-admin-api-1.0.0.jar $run
cp -f $WORKSPACE/im-modules/im-admin-api/im-admin-api.service $run
Source files im-modules/im-admin-api/run/*
Remove prefix im-modules/im-admin-api/run
Remote directory /im-manage/im-admin-api
Exec command
cp -f /var/www/im-manage/im-admin-api/im-admin-api.service /etc/systemd/system/im-admin-api.service
systemctl daemon-reload
systemctl enable im-admin-api
systemctl restart im-admin-api
问题收集
端口被占用
The Tomcat connector configured to listen on port 8080 failed to start. The port may already be in use or the connector may be misconfigured。
原因: 8080端口被占用了.... 一脸懵逼? 没启动怎么被占用了...
解决:
1.打开cmd命令窗口 输入如下指令查看所有端口和PID
netstat -ano
2.找到对应的端口对应的PID 输入指令找到对应的进程
tasklist | findstr "18692"
3.杀掉该进程 再次启动就OK啦
taskkill /f /t /im java.exe
停止服务wwbizsrv
tomcat默认的并发150
nginx默认并发1000,高配的5-10万
1万个非活跃链接2.5M
性能优化
* 操作系统命令获取ThreadDump
ps –ef | grep java
kill -3 <pid>
* JVM 自带的工具获取线程堆栈
jps 或 ps –ef | grep java (获取PID)
jstack [-l ] <pid> | tee -a jstack.log(获取ThreadDump)
spring mvc
主流程初始化:
GenericServlet->init()-》HttpServletBean->init()-》FrameworkServlet->initServletBean()servlet对象初始化-》initWebApplicationContext()创建Spring容器-》onRefresh()初始化一些默认组件;
initHandlerMapping-》getDefaultStrategies()加载默认策略;
主流程访问处理:
HttpServlet->service()->service()-》FrameworkServlet->doGet和doPost方法->processRequest()->doService()-》DispatcherServlet->doService()->doDispatch();
-
处理器映射器与DispatcherServlet交互的代码:getHandler方法
-
处理器适配器与DispatcherServlet交互的代码:getHandlerAdapter方法
-
这个resolveViewName方法就是视图解析器和DispatcherServlet交互的方法
mvn
在实际开发过程中,经常使用的命令有:
mvn clean:清理所有生成的class和jar;
mvn clean compile:先清理,再执行到compile;
mvn clean test:先清理,再执行到test,因为执行test前必须执行compile,所以这里不必指定compile;
mvn clean package:先清理,再执行到package。
maven 单独构建多模块项目中的单个模块
mvn install -pl dmp-admin
-pl, --projects Build specified reactor projects instead of all projects 构建指定的模块,模块间用逗号分隔;
-am, --also-make If project list is specified, also build projects required by the list 同时构建所列模块的依赖模块,比如A依赖B,B依赖C,构建B,同时构建C
-amd, --also-make-dependents If project list is specified, also build projects that depend on projects on the list 同时构建依赖于所列模块的模块,比如A依赖B,B依赖C,构建B,同时构建A
学习
深度靠源码,广度靠应用
业务
算法
编程方式
面向对象
设计模式(开闭原则 里氏替换原则)
创建型
工厂方法
抽象工厂
生成器
原型
单例
结构型
适配器
桥接
组合
装饰器
外观
享元
代理
行为型
责任链
命令
解释器
迭代器
中介
备忘录
观察者
状态
策略
模版方法
访问者
面向过程
面向函数
JavaEE企业级分布式高级架构师第一期目录:
阶段1:开班典礼(2018.7.10) [68.7M]
阶段2:MyBatis框架整体概况(2018.7.10) [875.9M]
阶段3:MyBatis框架(2018.7.15).rar [1.2G]
阶段4:MyBatis框架收尾(2018.7.17).rar [113.7M]
阶段5:Spring框架(2018.7.22).rar [327.4M]
阶段6:Spring框架各知识点(2018.7.24).rar [119M]
阶段7:Spring框架详解(2018.7.29~8.1).rar [2.2G]
阶段8:Spring 以及Spring mvc(2018.8.5).rar [355.3M]
阶段9:Spring mvc(2018.8.8~8.12~8.15) [1.8G]
阶段10:Springmvc源码和redis知识点(2018.8.22) [230.2M]-39分钟
阶段11:Redis各知识点(2018.8.26) [376.4M]
阶段12:Redis收尾(2018.8.29) [290.9M]
阶段13:Mysql第一天(2018.9.2) [155.5M]
阶段14:Mysql第二天(2018.9.5) [129.5M]
阶段15:Mysql第三天(2018.9.9) [315.8M]
阶段16:Mysql第四天(2018.9.12) [166.4M]
阶段17:Spring Boot(2018.9.15) [726.4M]
阶段18:Spring Boot收尾(2018.9.19) [221.1M]
阶段19:反应式Web开发框架WebFlux(2018.9.26) [184.6M]
阶段20:WebFlux(2018.10.10) [193.5M]
阶段21:Reactive Stream编程与WebFlux开发(2018.10.14) [625.7M]
阶段22:Router Function编程(2018.10.17) [202.5M]
阶段23:Webflux 收尾及分布式 协调服务器zookeeper(2018.10.21) [741.4M]
阶段24:zookeeper源码解析(2018.10.25) [385.6M]
阶段25:zookpeeper源码分析收尾及分布式PRC系统框架(2018.10.28) [635.2M]
阶段26:Dubbo监控平台搭建+反向代理服务器Nginx(2018.10.31) [274.1M]
阶段27:Nginx核心功能(2018.11.4) [756.4M]
阶段28:微服务框架spring cloud(2018.11.7) [203.6M]
阶段29:微服务框架(2018.11.11) [888.4M]
阶段30:Java内存模型(2018.11.13) [143.2M]
阶段31:NIOAIONetty(2018.11.18、21) [1G]
阶段32:分布式存储之分布式文件系统(2018.11.25、29、2) [1.9G]
阶段33:全文检索技术(2018.12.6~12.8) [708.8M]
阶段34:使用solr实现搜索案例(2018.12.11) [166.8M]
阶段35:ES(2018.12.15) [165.1M]
阶段36:ES结尾(2018.12.16) [150.8M]
阶段37:项目课第一节-项目搭建和架构介绍(2018.12.19) [125.7M]
阶段38:项目课第二节-需求分析和数据库设计(2018.12.20) [147.7M]
阶段39:项目课第三节-后台登录实现和CMS实现(2018.12.23) [168.5M]
阶段40:项目课第四节-实现首页静态化和动态化(2018.12.27) [162.6M]
阶段41:项目课第五节-详情页实现和SSO实现(2018.12.29) [131.1M]
阶段42:项目课第六节-购物车实现和下单实现(2019.1.2) [129.7M]
阶段43:项目课第七节-支付和秒杀实现(2019.1.5) [231.7M]
课件资料与软件:
整个课程体系-JavaEE 企业级分布式高级架构师-Final.xlsx [15.1K]
0-VMware& [1.7M]
mybatis-generator-gui代码生成工具.zip [37.8M]
redis-3.2.9.tar.gz [1.5M]
SecureCRTSecureFX_x86_6.7.0.153_PortableSoft.rar [10.7M]
spring-framework-5.0.7.RELEASE.rar [1M]
zookeeper-3.4.13.tar.gz [35.5M]
其他资料.rar [263.2M]