Java EE

【SpringBoot】SpringBoot 入门

半世苍凉 提交于 2020-08-14 18:51:32
SpringBoot 入门 SpringBoot来简化Spring应用开发,约定大于配置,去繁从简,just run就能创建一个独立的,产品级别的应用。 一、背景 J2EE笨重的开发,繁多的配置、地下的开发效率、复杂的部署流程、第三方技术集成难度大。 二、解决 Spring全家桶时代。 Spring Boot -> J2EE一站式解决方案 Spring Cloud ->分布式整体解决方案 https://spring.io/projects 可以访问spring的所有项目 三、优点 快速创建独立运行的Spring项目以及与主流框架集成 使用嵌入式的Servelt容器,应用无需打成war包 starters自动依赖与版本控制 大量的自动配置,简化开发,也可修改默认值 无需配置xml,无代码生成,开箱即用 准生产环境的运行时应用监控 与云计算的天然集成 四、环境准备 intellij/eclipse 修改idea中的maven设置 maven3.9 maven设置:在setting.xml配置文件的profilers标签添加 <profile> <id>jdk-1.8</id> <activation> <activeByDefault>true</activeByDefault> <jdk>1.8</jdk> </activation> <properties> <maven

看完这篇Bean的作用域与生命周期,问到面试官不敢问--乐字节java

左心房为你撑大大i 提交于 2020-08-14 18:03:41
Bean的作用域与生命周期 Bean的作用域 ​ 默认情况下,我们从Spring容器中拿到的对象均是 单例 的,对于bean的作用域类型如下: singleton 作用域 ​ 注意: lazy-init是懒加载, 如果等于true时作用是指Spring容器启动的时候不会去实例化这个bean, 而是在程序调用时才去实例化. 默认是false即Spring容器启动时实例化. ​ 默认情况下,被管理的bean只会IOC容器中存在一个实例,对于所有获取该Bean的操作Spring容器将只返回同一个Bean。 ​ 容器在启动的情况下就实例化所有singleton 的 bean对象,并缓存与容器中 lazy-init属性(懒加载) 如果为false,则在IOC容器启动时会实例化bean对象,默认false ​ 如果为true,则IOC容器启动时不会实例化Bean对象,在使用bean对象时才会实例化 lazy-init设置为false有什么好处? ​ 1)可以提前发现潜在的配置问题 ​ 2)Bean 对象存在于缓存中,使用时不用再去实例化bean,加快程序运行效率 什么对象适合作为单例对象? ​ 一般来说对于无状态或状态不可改变的对象适合使用单例模式。(不存在会改变对象状态的成员变量) ​ 比如:controller层、service层、dao层 什么是无状态或状态不可改变的对象? ​

apache2.4配置weblogic12c集群(linux环境)

╄→尐↘猪︶ㄣ 提交于 2020-08-14 16:28:31
首先确定环境已装apache2.4,没装的话可以看下这篇文章 apache2.4一键脚本安装(linux环境) 1.下载apache分发模块mod_wl_24.so 下载apache2.4的weblogic分发模块 mod_wl_24.so 链接: https://pan.baidu.com/s/1c2zxrAK (linux 64位版本,csdn都是要c币的,我也是花钱买的~~o(>_<)o ~~,都不容易,真的需要的话留邮箱我免费发你提取码) 将下载好的mod_wl_24.so上传至apache的安装目录 /usr/local/apache2/modules 2.apache中的weblogic集群配置 进入apache的配置文件(安装的时候我这里指定了配置文件的存放目录 sysconfdir=/etc/httpd24,后续补充我一键安装apache的脚本) # vi /etc/httpd24/httpd.conf 去掉下面5行语句之前的#号: #LoadModule proxy_module modules/mod_proxy.so #LoadModule proxy_connect_module modules/mod_proxy_connect.so #LoadModule proxy_http_module modules/mod_proxy_http.so

年薪30万的Java架构师必会的springboot面试题

放肆的年华 提交于 2020-08-14 16:01:41
【 Java架构师面试网 】收集整理了几乎整个架构师学习途中会遇到的面试题,希望大家都能早日圆自己的架构师梦~ 公众号: Java架构师面试网 ,关注回复“ 资料 ”即可领取精美整理的面试资料一份哦~ 1、什么是springboot 用来简化spring应用的初始搭建以及开发过程 使用特定的方式来进行配置(properties或yml文件) 创建独立的spring引用程序 main方法运行 嵌入的Tomcat 无需部署war文件 简化maven配置 2、什么是 JavaConfig? Spring JavaConfig 是 Spring 社区的产品,它提供了配置 Spring IoC 容器的纯 Java 方法。因此它有助于避免使用 XML 配置。 使用 JavaConfig 的优点在于: 面向对象的配置。由于配置被定义为 JavaConfig 中的类,因此用户可以充分利用 Java 中的面向对象功能。一个配置类可以继承另一个,重写它的 @Bean 方法等。 减少或消除 XML 配置。基于依赖注入原则的外化配置的好处已被证明。但是,许多开发人员不希望在 XML 和 Java 之间来回切换。 JavaConfig 为开发人员提供了一种纯 Java 方法来配置与 XML 配置概念相似的 Spring 容器。从技术角度来讲,只使用 JavaConfig 配置类来配置容器是可行的

SpringBoot错误处理机制以及自定义异常响应原理解析

99封情书 提交于 2020-08-14 14:05:40
一、SpringBoot默认的错误处理机制 首先看一下SpringBoot的默认处理结果 这是页面响应 这是非页面响应 看到不同的响应信息,大家可能有疑惑“访问同一个地址,为什么展示效果却不一样呢?”,其实这跟SpringBoot的处理机制有关系,下面就简单讲解一下它的错误处理机制。 首先,SpringBoot所有的错误处理配置类 ErrorMvcAutoConfiguration @Configuration ( proxyBeanMethods = false ) @ConditionalOnWebApplication ( type = Type . SERVLET ) @ConditionalOnClass ( { Servlet . class , DispatcherServlet . class } ) // Load before the main WebMvcAutoConfiguration so that the error View is available @AutoConfigureBefore ( WebMvcAutoConfiguration . class ) @EnableConfigurationProperties ( { ServerProperties . class , ResourceProperties . class ,

干货丨ICRA2020论文分享:一种基于层次强化学习的机械手鲁棒操作

笑着哭i 提交于 2020-08-14 13:18:05
  随着学会的队伍不断发展壮大,分支机构的发展愈发完善,丰富多彩的分支活动与学术分享也频频呈现。疫情期间,CAAI认知系统与信息处理专委会积极倡导学会“疫情防控不放松,学习充电不间断”的理念,与大家分享ICRA2020论文《一种基于层次强化学习的机械手鲁棒操作》。    1. 研究背景   机械手内操作(in-hand manipulation)是指使用单只机械手,通过移动手指、手掌等部位来改变物体在手中的相对位置和姿态。这种能力对于机器人实现人类水平的灵巧操作极为重要,因为在日常生活中有很多类似的任务,例如抓取一件工具并调整它在手中的位置和旋转角度。我们注意到,在实现复杂的操作目标时,人在操作物体时常常改变抓取物体的手指接触点位置,从而极大的提高物体在手中的位姿范围。      传统上,手内操作有两类解决方案,一类是基于模型的方法(model-based method),通过对抓取的动力学建模,来控制手指移动带动物体姿态。这种办法好处在于稳定性强,模型简单,但问题在于难以实现较长和复杂的手内操作流程,特别是目标位姿和起始位姿相距很远的情况,因为它们很难规划手指接触点的移动;另一类方法是无模型方法(model-free method),通常使用深度强化学习的方法。这类方法优点在于不需要系统模型,但缺点在于稳定性差,并且需要大量数据进行训练。而我们的方法结合了这两种方法

新手小白该怎么学习Java,附学习路线和学习资料

寵の児 提交于 2020-08-14 13:13:33
在知乎上经常碰到这种问题:“我刚毕业,怎么入门java?”;“我是初中生、高中生可不可以自学java?”作为一个已经工作八年多的老鸟,我想说: 如果你是一个遇到困难就望而却步的人,大可不必浪费时间接着把这篇文章看下去,真的不用因为java就业前景好,上升空间大,工资高就去学他。如果你热爱技术,耐得住寂寞,肯钻研,那么请接着往下看,这个行业也许适合你! 首先,学习java难吗?要说难,其实也不难,随便在网上找些入门的视频,从头开始看,大部分人都可以看得懂。基本的数据类型、判断语句、循环语句、面向对象以及Html入门,大家都可以看得懂。但是你如果想走的更远,请做好准备 不断学习,不断汲取知识;前期放弃王者、LOL不要吃鸡,多花点时间将学过的代码多敲几次,熟能生巧。 这里再说下,初中生、高中生可不可以学习java,答案当然是可以的,但是!注意了,初中生、高中生学习这行第一个是需要付出的更多;再者成功率更低。一方面是心智方面还没达到一定层次,再者社会对你的学历认可程度低,所以各位初中、高中童鞋还是努力学习,先考上大学再说吧! 确实,也不是说这行什么门槛都没有。至少英语单词得多认识几个不是~ 那么初学者该如何学习Java呢,前面有说到,在网上找一个java基础视频,大家都可以看懂。但是难就难在坚持和连贯。所谓坚持,就是你可能得花上2到3个月的时间去系统的学习Java基础、前端基础、主流框架

Nginx系列之3:反向代理和负载均衡

北战南征 提交于 2020-08-14 12:47:25
反向代理 最简单的配置 location /some/path/ { proxy_pass http: //www.example.com/link/ ; } 完整的 upstream apachephp { server ip: 8080; # Apache } server { listen 80 ; server_name www.redis.com.cn; access_log logs / redis.access.log main; error_log logs / redis.error.log; root html; index index.html index.htm index.php; # # send request back to apache ## location / { proxy_pass http: // apachephp; # Proxy Settings proxy_redirect off; proxy_set_header Host $host ; proxy_set_header X -Real-IP $remote_addr ; proxy_set_header X -Forwarded- For $proxy_add_x_forwarded_for ; proxy_next_upstream error timeout

MVC架构的职责划分原则,对我很有启发,分享一下

北城以北 提交于 2020-08-14 11:49:47
博主 负责一个项目,用了 Yii Framework 的 MVC 框架,刚开始自以为结构很稳健。 但是随着对业务逻辑理解的深入,才开始意识到问题的严重。 我错误地理解了 MVC 中的 Controller ,想当然地根据以往的经验,把所有的业务逻辑都放在 Controller 的 action 中去实现。 于是,每一个 Controller 的 代码都上千行,越来越臃肿 。 最后,我下定决心重构代码,起源是一个对外开放 API 接口的需求。 按照现在的架构,代码基本无法复用,我需要把很多功能再重复写一遍,这实在是无法接受。 面向对象编程不仅仅是课本上的名词啊! 真正开始实践才发现,要有面向对象意识,有全局观,是多么难得的一件事情。 1 、到底什么是 MVC 模型-视图-控制器(MVC)是一种 设计框架(设计模式) 。 MVC 的 目标 是 将业务逻辑从用户界面的考虑中分离 。 这样,开发者就可以更容易地改变每一部分而不会影响其他。 在 MVC 中, Model 代表 数据和业务规则 ; View 包含了 用户界面元素,例如文本,表单 等; Controller 则管理模型和视图中的 通信 。 MVC 在各种编程语言中均有实现,例如 J2EE 应用开发中, View 可能由 jsp 实现;Controller 是一个 servlet,现在一般用 Struts 实现;Model

Tomcat的作用思考及NIO的应用(要区分Java NIO和操作系统的NIO模型)

岁酱吖の 提交于 2020-08-14 11:38:04
Tomcat的作用   平时写完web程序都是直接点击启动,就可以在本机浏览器访问了。但是仔细想想,我们似乎都没有写过浏览器与servlet通信的代码,也没有写过创建request、reponse的代码。实际上,这些都是由Tomcat完成的,它的主要作用如下:   1. 完成服务的与客户端的数据收发,即通信功能。   2. 完成请求的映射功能。   3. 管理servlet的生命周期。 Tomcat的工作模型(图片来源于网络): connector用于处理连接相关的事情,并提供Socket与Request和Response相关的转化; Container用于封装和管理Servlet,以及具体处理Request请求; 一个Tomcat中只有一个Server,一个Server可以包含多个Service,一个Service只有一个Container,但是可以有多个Connectors,这是因为一个服务可以有多个连接,如同时提供Http和Https链接,也可以提供向相同协议不同端口的连接。为了方便,Engine可以直接看成我们编写的服务器程序,即servlet。 Tomcat的BIO工作模型   客户端与服务端建立的TCP连接, 线程在等待其对应的客户端连接发送数据时是不能做其它事的,一直在阻塞中 。也因此有N个客户端与服务端建立了连接,就必须要N条线程去处理。工作模型如下: