Java EE

1. 不吹不擂,第一篇就能提升你对Bean Validation数据校验的认知

不羁的心 提交于 2020-10-03 04:58:37
乔丹是我听过的篮球之神,科比是我亲眼见过的篮球之神。本文已被 https://www.yourbatman.cn 收录,里面一并有Spring技术栈、MyBatis、JVM、中间件等小而美的 专栏 供以免费学习。关注公众号【 BAT的乌托邦 】逐个击破,深入掌握,拒绝浅尝辄止。 ✍前言 你好,我是YourBatman。 作为一个开发者,聊起数据校验(Bean Validation),不管是前、中、后端都耳熟能详,并且心里暗爽:so easy。 的确,对数据做校验是一个程序员的基本素质,它不难但发生在我们程序的几乎每个角落,就像下面这幅图所示: 每一层都需要做校验 。 如果你真的这么去写代码的话(每一层都写一份),肯定是不太合适的,良好的状态应该如下图所示: 作为一个Java开发者,在Spring大行其道的今天,很多小伙伴了解数据校验来自于 Spring MVC 场景,甚至 止步于此 。殊不知,Java EE早已把它抽象成了JSR标准技术,并且Spring还是借助整合它完成了自我救赎呢。 在我看来,按 Spring的3C战略 标准来比,Bean Validation数据校验这块是没有能够完成对传统Java EE的超越,自身设计存在过重、过度设计等特点。 本专栏命名为Bean Validation(数据校验),将先从JSR标准开始,再逐渐深入到具体实现Hibernate

tomcat启动后,页面浏览时报错 Unable to compile class for JSP的解决方案【原创】

牧云@^-^@ 提交于 2020-10-03 03:21:02
tomcat启动后,页面浏览时报错 Unable to compile class for JSP的解决方案【原创】 参考文章: (1)tomcat启动后,页面浏览时报错 Unable to compile class for JSP的解决方案【原创】 (2)https://www.cnblogs.com/qiongmiaoer/p/3552708.html 备忘一下。 来源: oschina 链接: https://my.oschina.net/u/4406182/blog/4562721

Java内存故障?只是因为你不够帅!

六眼飞鱼酱① 提交于 2020-10-03 00:26:16
Python实战社群 Java实战社群 长按识别下方二维码, 按需求添加 扫码关注添加客服 进Python社群▲ 扫码关注添加客服 进Java社群 ▲ 作者丨小姐姐养的狗 来源丨小姐姐味道(小姐姐味道) 从小我就对Java有着深厚的感情,算下来有几十年的Java经验了。当年的Java还是Sun公司的,我有着多年的Servlet经验,CURD经验,在现在已经被自我革新,转而研究人生的哲学。罢了,不吹了。本文是关于Java故障排查的,属上篇。 为了保证文章的流畅性,我决定一口气把它写完。因为相关方面的培训做的多了,就不需要在写的时候参考资料、翻源代码。掐指一算,本文一个小时没花掉,但篇幅已经较长了。 长了,那就割断。本篇就定为内存排查的上篇,主要讲一些原理。为什么要讲原理?开车还需要了解汽车结构么? 这还真不能相比。 汽车很少坏,出了问题你会花钱给拖车公司、4S店。你还会每年给它买上保险。 反观Java,三天两头出问题,找人解决还找不到人,给钱都不一定能解决问题。能比么?盘点来盘点去,最后只能靠自己。 1.内存里都有啥 2.操作系统内存 3.JVM内存划分 4.一图解千愁,jvm内存从来没有这么简单过! 5.为什么会有内存问题 6.垃圾回收器 7.重要概念GC Roots 8.对象的提升 1.内存里都有啥 要想排查内存问题,我们就需要看一下内存里都有啥。我们先来看一下操作系统内存的划分

关于Spring、Springmvc、Springboot和SSM之间的区别,这篇文章告诉你怎么才是最简单的解释

青春壹個敷衍的年華 提交于 2020-10-02 20:23:28
分享分享自己收藏的学习资料,有需要的朋友可以找我获取 根据自身面试经历整理以及不断收集的(珍藏版) 【推荐】2020年最新Java电子书集合.pdf(吐血整理) >>> https://www.cnblogs.com/xiaogeng88/p/12692306.html 什么是Spring: Spring 框架的核心特性是可以用于开发任何 Java 应用程序,但是在 Java EE 平台上构建 web 应用程序是需要扩展的。 Spring 框架的目标是使 J2EE 开发变得更容易使用。 Spring框架体系结构长这样: 什么是Spring MVC: Spring MVC是Spring的一个模块,是一个web框架。通过Dispatcher Servlet, ModelAndView 和 View Resolver,开发web应用变得很容易。解决的问题领域是网站应用程序或者服务开发——URL路由、Session、模板引擎、静态Web资源等等。 什么是Spring Boot: Spring Boot实现了自动配置,降低了项目搭建的复杂度。 因为Spring框架需要进行大量的配置,Spring Boot可以自动配置,让项目设置变得很容易。实现了开箱即用的原则,开发者只需要引入自己需要的第三方库即可,有的库也许需要一些小的配置,但是大部分的库都不用配置。Spring

Java面试题——随机题(一),看看哪些你会哪些你不会

瘦欲@ 提交于 2020-10-02 19:57:53
Java面试题——随机题(一),看看哪些你会哪些你不会 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 请说明一下EJB的几种类型分别是什么? 会话(Session)Bean、实体(Entity)Bean 、消息驱动的(Message Driven)Bean 会话Bean又可分为有状态(Stateful)和无状态(Stateless)两种 实体Bean可分为Bean管理的持续性(BMP)和容器管理的持续性(CMP)两种。 请说明一下锁机制的作用是什么?并且简述一下Hibernate的悲观锁和乐观锁机制是什么? 锁机制的作用是保证共享资源可以进行排他性的访问 悲观锁 悲观的认为在数据处理过程中极有可能存在修改数据的并发事务(包括本系统的其他事务或来自外部系统的事务),于是将处理的数据设置为锁定状态。 数据库中主要是通过数据库底层的锁机制才能保证真正的数据访问排他性。 缺点:并发量不高,效率低; 乐观锁 对并发事务持乐观态度(认为对数据的并发操作不会经常性的发生),通过更加宽松的锁机制来解决由于悲观锁排他性的数据访问对系统性能造成的严重影响。最常见的乐观锁是通过数据版本标识来实现的 redis为什么是单线程? 多线程不一定比单线程效率高,多线程的本质就是CPU通过轮换时间片执行不同的线程,看似多个线程一起执行

如何成为Java软件工程师

ぃ、小莉子 提交于 2020-10-02 19:57:04
首先,学习Java能用来做什么?Java目前有哪些就业方向?我们先看一下下图 上图给出了两个最重要的方向Java Web和Ardroid方向,其实我们经常说的Java软件工程师,我觉得应该叫Java Web软件工程师或Java后端(服务端)工程师比较贴切一些。Java Web能做的事情非常多,我们在使用淘宝去查找商品时,打开浏览器输入网址,输入商品名称,点击搜索,这时候前端页面(浏览器)通过HTTP协议把商品名称传递到Java服务端,Java服务端利用JDBC技术从数据库里检索数据并返回,再组装成网页内容返回给浏览器,继而展现在用户面前。Java Web要学的东西很多,网络请求协议(HTTP等),Web前端技术,Java服务端技术,JDBC、数据库等都要学习。 Android要学的东西稍微少一点,Android一般是客户端软件,基本上不涉及到服务端,理论上来说可以不关注服务端技术(灰色框里的内容)和后台数据库,但我觉得要做一个合格的Android工程师,这些东西还是有必要去花时间了解的。同样的,Android工程师也需要学网络请求协议(HTTP等),毕竟也是要通过Web服务器去数据库里拿数据回来展示到APP上。目前混合开发(原生+HTML5)的APP越来越多了,因此还需要学习一些前端知识。 注意,Android方向图里的Web服务器可以用Java来写,也可以用其它语言来写,比如C

互联网的寒冬下各大一线互联网公司还在用SpringBoot这是为什么?

主宰稳场 提交于 2020-10-02 12:50:22
引言 现在各大技术社区 Spring Boot 的文章越来越多,Spring Boot 相关的图文、视频教程越来越多,使用 Spring Boot 的互联网公司也越来越多; Java 程序员现在出去面试, Spring Boot 已经成了必问的内容。 一切都在证明,Spring Boot 已经成为了 Java 程序员必备的技能。并且可以预见的是未来 Spring Boot 的发展还会更好。 所以对Java程序员来说其中不乏说对 Spring Boot 非常熟悉的,然后当问到一些 Spring Boot 核心功能和原理的时候,没人能说得上来,或者说不到点上,可以说一个问题就问趴下了!(问题:你能讲下为什么我们要用 Spring Boot 吗?) 相信我,上面这些类似的问题,90%有经验的Java程序员超都曾遇见过!但很少有系统化的回答。 因此,总结了这份Spring Boot核心知识点实战教程,通过这份教程,带你梳理Spring Boot 技术体系。 文末有彩蛋~ Spring Boot2教程 在Spring Boot项目中,正常来说是不存在XML配置,这是因为Spring Boot不推荐使用 XML ,注意,并非不支持,Spring Boot 推荐开发者使用 Java 配置来搭建框架,Spring Boot 中,大量的自动化配置都是通过 Java 配置来实现的,这一套实现方案

Java--Filter(过滤器)

假装没事ソ 提交于 2020-10-02 12:35:44
Java--Filter(过滤器) 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 简介 Filter也称之为过滤器,它是Servlet技术中最实用的技术,Web开发人员通过Filter技术,对web服务器管理的所有web资源,例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。 实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。 配置 注解方式 @WebFilter("/*")//访问所有资源之前,都会执行该过滤器 public class Filter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { System.out.println("filter被执行了....")

第四篇:JMeter 性能测试基本过程及示例

前提是你 提交于 2020-10-02 10:43:53
jmeter 为性能测试提供了一下特色: jmeter 可以对测试静态资源(例如 js、html 等)以及动态资源(例如 php、jsp、ajax 等等)进行性能测试 jmeter 可以挖掘出系统最大能处理的并发用户数 jmeter 提供了一系列各种形式的性能分析报告 使用 jmeter 一般用于以下两种类型的性能测试 负载测试:通过测试系统在资源超负荷情况下的表现,以发现设计上的错误或验证系统的负载能力。 压力测试:测试系统能承受的最大负载能力。目的在于发挖掘出目标服务系统可以处理的最大负载。 基本过程 下面我们看下使用 jmeter 进行性能测试的基本过程 对上图进行简要的说明 新增线程组 创建测试线程组,并设置线程数量及线程初始化启动方式。 新增 JMeter 元组 创建各种默认元组及测试元组,填入目标测试静态资源请求和动态资源请求参数及数据。 新增监听器 创建各种形式的结果搜集元组,以便在运行过程及运行结束后搜集监控指标数据。 运行&查看结果 调试运行,分析指标数据,挖掘性能瓶颈、评估系统性能状态; 示例 下面我们以打开百度演示上述过程。 新增线程组 在 jmeter 的 bin 目录下双击 jmeter.bat或ApacheJMeter.jar 启动 jmeter,如下图: 在左边操作栏中选择“测试计划”,右击新增一个线程组,如图所示: 初始化线程组相关信息 新增

Java批量修改文件名

送分小仙女□ 提交于 2020-10-02 09:46:26
package com.javaee.demo; import java.util.*; import java.io.*; public class FileDemo { public static void main(String[] args) { String path = "E:\\学习\\尚硅谷-全栈在线教育项目-谷粒学院【Vue.js+Spring Cloud Alibaba】\\课件\\谷粒学院笔记"; File file = new File(path); ForFile(file); } // 批量修改文件 public static void batchUpdate(String pathname) { File file = new File(pathname); String[] flist = file.list(); Arrays.asList(flist).stream().forEach(x -> { if (x.contains("ziw")) { String cc = x.replace("ziw", "zip"); File old = new File(pathname + File.separatorChar + x); File nfile = new File(pathname + File.separatorChar + cc);