Java EE

SpringBoot 中使用自定义的 Servlet, Filter, Listener

寵の児 提交于 2020-11-16 02:46:32
SpringBoot 中使用自定义的 Servlet, Filter, Listener 有两种方式 1. 使用 @ServletComponentScan 定义要扫描的包目录, Servlet, Filter, Listener 可以通过 @WebServlet, @WebListener, @WebFilter 进行自动注册. @Controller @SpringBootApplication @ComponentScan(basePackages={"com.codingos.demo","com.codingos.springbootlession1"}) @ServletComponentScan(basePackages="com.codingos.springbootlession1.demo") public class SpringBootLession1Application { public static void main(String[] args) { SpringApplication.run(SpringBootLession1Application.class, args); } } @WebServlet(name="servletDemo", urlPatterns="/servletDemo", initParams= {

java编码解码过程

∥☆過路亽.° 提交于 2020-11-15 17:47:14
最近做项目的时候,有时会遇到中文乱码的问题,网上查询了很多资料,发现大多都是只讲解决方案,并没有讲到为什么要使用这种方案,这种方案的原理是什么? 最典型的就是连接数据库的URL,我们一般把它放到classpath下的db.properties中,然后尽管我们的java代码设置了UTF-8,JSP也设置了UTF-8,数据库也设置了UTF-8,但是插入数据到数据库中仍然会出现中文乱码,最后我们的解决方案是在连接数据库的URL上加上连接使用的编码格式UTF-8,但是我们会纳闷为什么要这么做呢? 下面我们来聊下java编码的问题,为什么要编码,有哪些编码,怎么编码和解码,为什么会有中文乱码,怎么解决中文乱码。 1.为什么要编码 这个问题必须要回到计算机是如何表示我们人类能够理解的符号的,这些符号也就是我们人类使用的语言。由于人类的语言太多,因而表示这些语言的符号太多,无法使用计算机中一个基本的存储单元---byte来表示,因而必须要经过拆分或一些翻译工作,才能让计算机理解我们的语言。我们可以把计算机能够理解的语言假定为英语,其他语言要能够在计算机中使用必须经过一次翻译,把它翻译成英语。这个翻译的过程就是 编码。 所以总的来说,编码的原因可以总结为:计算机中存储信息的最小单元是一个字节,即8个bit,所以能表示的字符范围是0-255个;人类要表示的符号太多,无法用一个字节来完全表示。

spring--Springmvc中@Autowired注解与@Resource注解的区别

青春壹個敷衍的年華 提交于 2020-11-15 04:56:21
Spring不但支持自己定义的@Autowired注解,还支持几个由JSR-250规范定义的注解,它们分别是@Resource、@PostConstruct以及@PreDestroy。   @Resource的作用相当于@Autowired,只不过@Autowired按byType自动注入,而@Resource默认按 byName自动注入罢了。@Resource有两个属性是比较重要的,分是name和type,Spring将@Resource注解的name属性解析为bean的名字,而type属性则解析为bean的类型。所以如果使用name属性,则使用byName的自动注入策略,而使用type属性时则使用byType自动注入策略。如果既不指定name也不指定type属性,这时将通过反射机制使用byName自动注入策略。   @Resource装配顺序   1. 如果同时指定了name和type,则从Spring上下文中找到唯一匹配的bean进行装配,找不到则抛出异常   2. 如果指定了name,则从上下文中查找名称(id)匹配的bean进行装配,找不到则抛出异常   3. 如果指定了type,则从上下文中找到类型匹配的唯一bean进行装配,找不到或者找到多个,都会抛出异常   4. 如果既没有指定name,又没有指定type,则自动按照byName方式进行装配;如果没有匹配

Springboot 自动配置浅析

独自空忆成欢 提交于 2020-11-14 08:59:10
Introduction 我们知道,SpringBoot之所以强大,就是因为他提供了各种默认的配置,可以让我们在集成各个组件的时候从各种各样的配置文件中解放出来。 拿一个最普通的 web 项目举例。我们需要使用 servlet 容器,SpringBoot 就提供了嵌入式的 Tomcat 作为默认容器,不需要一行配置就能直接以最普通的 Java 程序的方式启动: java -jar ;接收请求需要一个网络端口,默认配置好 8080 ;处理请求需要 servlet 的多线程特性,默认配置好了最大线程数为 200 ;处理好的请求以 Restful 风格返回给调用方,SpringBoot 默认配置好了 jackson 进行 json 序列化,业务代码需要做的只是返回一个 POJO 对象;连接池直接就默认配置了性能最好的的 Hikari ,以及连接池的默认尺寸为10……在一个简单的web应用中,这些配置我们甚至都可能不了解或者没有意识到它们的存在,就可以让程序正常运行。 这就是自动配置的魔力——润物细无声。 那么自动配置是怎么实现的呢?本文就从 POM 文件和 @SpringBootApplication 注解来简单分析一下自动配置原理。 真的只是 简单地 ,分析一下。 POM文件 环境 SpringBoot 2.0.6 父项目 在每一个 SpringBoot 项目一开始的 POM 文件中

创业公司CTO的认知升级

六月ゝ 毕业季﹏ 提交于 2020-11-14 07:54:40
在不同的行业中,以及不同公司在不同阶段,对 CTO 的要求是非常不一样的。 同时任何一个时期,对 CTO 的能力要求其实都是综合的。 我所在的公司是一家创业公司,我是公司的联合创始人和 CTO。 我想结合我在公司不同阶段的经历,谈谈我对 CTO 这个岗位的认识。 公司初创期 大多数互联网创业公司,一开始都是从几个人开始干起,我们也不例外。 这个阶段最重要的是如何快速开发,快速试错,通过试错不断验证自己的 idea 是否靠谱。 而对于技术架构是否可扩展、研发流程是否规范、绩效考核等则不会过多考虑。 记得我们在开始第一个产品的时候,直接写 JSP 页面,不需要前后端分离(因为我们也没有专职的前端),数据库则用了 Schema free 的文档数据库 MongoDB,无它,就是追求最快迭代开发速度。 这个阶段的公司,应该建立怎样的认知呢? 首先是创业越早期风险越高,其次是低成本试错。 那么作为 CTO 或者技术负责人,你的决策也需要匹配公司当前的状态。 比如招人方面,从匹配性上看,如果候选人没有创业心态,过于追求安稳,就可以 pass 掉; 从技术画像上看,一个全栈工程师会比一个技术专家更能帮助到团队。 比如技术选型方面,不要犯杀鸡用牛刀的错误。 尽量选择轻量级的框架,考虑最大化团队的开发效率为核心。 在产品还未被被验证之前,过于超前的为大规模用户使用、超高并发和海量数据访问投入设计

消息中间件

陌路散爱 提交于 2020-11-14 07:31:46
消息中间件为我们带来了异步特性,为系统解耦,对于大型分布式系统具有非常重大的意义 这样系统变得非常复杂 引入可扩展配置算是比较优雅的解决方案 降低了开发部署成本 并没实质性降低复杂性 引入消息中间件 解耦服务调用 只需要向消息中间件发送消息 其他服务订阅该消息 成功解耦,不用关心多少系统需要知道登陆成功这个事件 各个系统互不影响 上面用数据库 记录中间状态,写入时数据库不可用,还是会有问题 对于需要感知的应用,需要定时轮询查看状态,完成操作也要修改 能解决问题,实现简单,但是也存在问题: 增加了业务库的负担 依赖的复杂和不安全(发短信的服务对数据库有操作权限,这样不安全) 扩展性不好 互联网时代的消息中间件 JMS(java message service)是JavaEE(企业版)关于消息的规范 ActiveMQ 等产品是对该规范的实现 企业内部或小型系统直接使用JMS产品是很经济的 大型系统有一些场景不适合 在大型互联网中,使用消息中间件,最基础俩特点 应用之间解耦 操作的异步 重点考虑: 消息的顺序保证 扩展性 可靠性 业务操作与消息发送的一致性 及多集群订阅者 消息发送一致性 产生消息的业务动作和消息发送的一致性 上述两种做法,第一种丢失消息的概率是很低的, 但是对于必须保证一致性的场景, 上面的两种方案都不可取 JMS 能保证消息发送的一致性吗? JMS 重要要素 JMS

java快速开发平台

╄→尐↘猪︶ㄣ 提交于 2020-11-14 06:48:28
   前言:    按目前IT行业发展,企业系项目,行业系项目,已经慢慢走向开源交付为主,根据小编这边数据调查,很多中小企业没有过多资深的技术人员,导致很多项目没有办法去    承包,当然包括想要开展其它不是专区的大企业,那么出现这种状态是因为IT发展太快了?人员设备跟不上?答案很明显。只是其中一个因素,例如:公司多了,技术分    散了,没办法去快速去支撑一个项目,尤其是系统的基层研发,或者是,跨领域扩展业务的开展,前期的项目切入,以及系统的兼容项目需求,没法使用原系统去兼容,    等等。种种因素,会导致企业失去一个机会,按实话说,就是能接下的,但是没办法去交付,这个就等于企业失去收益,如果按企业扩展业务角度来说,更会影响企业的    发展。    想要跟上社会的脚本,小编认为,必须寻找能支撑底层去做二次开发的工具,这样能快速去交付,考虑好工具的兼容性,以及是否能满足项目大部分的项目需求,现在    这种就是企业最新的一个动态方向,不会流失能握住的客户,不会失去一个机会。    我们怎么去选择快速开发平台呢?那么小编也不脸红的,推荐一下,自家的Java快速开发平台,当然只是一个分享,IT人员可以大家到网络上去考究,研究,分析,    选取,浏览,对比,等等,那么快速开发平台要求有那些呢?    可以通过自家的平台,大家进行对比一下。我们平台工具目标是:快速交付项目

spring boot开发笔记

只愿长相守 提交于 2020-11-13 14:01:54
单元测试 /** * 用户查询单测 * */ @Test public void whenQuerySuccess() throws Exception { String result = mockMvc .perform( get ( "/user" ) .param( "username" , "jojo" ) .param( "age" , "18" ) .param( "ageTo" , "60" ) .param( "xxx" , "yyy" ) // .param("size", "15") // .param("page", "3") // .param("sort", "age,desc") .contentType(MediaType. APPLICATION_JSON_UTF8 )) .andExpect( status ().isOk()) .andExpect( jsonPath ( "$.length()" ).value( 3 )) // 结果期望 .andReturn().getResponse().getContentAsString(); System. out .println(result); } @GetMapping @JsonView (User.UserSimpleView. class ) @ApiOperation (value =

校内闲鱼说明书

大城市里の小女人 提交于 2020-11-13 03:28:05
如今,双十一双十二等等购物节一个接着一个,某宝某猫上各种物美价廉的商品看得眼花缭乱,各种诱惑让你按下了手中的按钮,过后是不是很想剁手呢?收到实物后,你是否有时发现它并非你心中所属不再使用,却弃之可惜,置之无地呢?希望再购新物,却囊中羞涩,看着旧物直呼浪费而又因不买而心有不甘呢? 您好,尊贵的客户,我们是您的肚中蛟蚘,校内闲鱼网页欢迎您,您的闲鱼,是他人的梦想。 校内闲鱼是一个基于东师校友之间的以物易物、以物换钱的交易平台。我们将为您提供一个展示自己不用的物品的平台,您可以拍照上传图片,并填写你希望换的价格或物品以及联系方式,当有同学发现了您的物品合心意,便可在页面留言询问或者与您联系详谈。 我们这个平台将解决您的闲置物品的去处问题,并让您低价买到心仪的物品,更重要的是!在这里,只有东师的学子,近距离接触,无需担忧快递、诚信等问题!我们将是您最理智的决定,我们在这里等您! N (Need 需求): 我们经常会出现这样的情况,网上购物买到东西后发现不是自己喜欢的类型或者由于种种原因不太满意,于是会想要看看周边的人是否需要,或者为觉得还不错只是不适合自己的这类商品寻找一个新的主人,使其发挥更好的价值。由于网上购物无法看到实物的局限性,发生以上情况的可能性是十分大的,我们的软件正是用于为大家解决这类问题的。 需求除了要关注大家的需求情况,还要关心现在市面上是否已经有了类似的软件

Springboot整合Druid监控

老子叫甜甜 提交于 2020-11-13 03:24:39
一.添加依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version> 1.1 . 6 </version> </dependency> 使用下面这个 上面那个会使SQL监控没数据。。 我也不知道why..       <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.6</version> </dependency> 二.修改application.properties中Druid的配置 druid: filters: stat max -active: 20 initial -size: 1 max -wait: 30000 min -idle: 1 time -between-eviction-runs-millis: 60000 min -evictable-idle-time-millis: 300000 test - while -idle: true test -on-borrow: false test -on- return : false pool -prepared-statements