Spring Boot

springboot 自动装配

浪子不回头ぞ 提交于 2020-12-19 10:37:50
以下内容部分来自小马哥的 《springboot 编程思想》 基础 springboot 项目 maven 依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>2.1.5.RELEASE</version> </dependency> 启动 项目会使用默认的8080端口 @SpringBootApplication 注解 @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited @SpringBootConfiguration @EnableAutoConfiguration @ComponentScan( excludeFilters = {@Filter( type = FilterType.CUSTOM, classes = {TypeExcludeFilter.class} ), @Filter( type = FilterType.CUSTOM, classes = {AutoConfigurationExcludeFilter.class} )} ) public

spring Boot+spring Cloud实现微服务详细教程第一篇

妖精的绣舞 提交于 2020-12-19 08:01:50
前些天项目组的大佬跟我聊,说项目组想从之前的架构上剥离出来公用的模块做微服务的开发,恰好去年的5/6月份在上家公司学习了国内开源的dubbo+zookeeper实现的微服务的架构。自己平时对微服务的设计比较上心,第一:是自我感觉做多了垂直应用的项目就觉得味同嚼蜡,所有的模块,技术都冗余的堆积在一个项目里面。耦合度极高。项目的迭代,部署。后期的运营维护都是比较头疼,繁琐的事情。第二:适逢当下应用软件框架层出不穷,在java-web或者后台服务器的框架设计上,国内国外,都是如火如荼。新技术的迭代更是日新月异。今天就借此机会跟大家聊一聊spring Boot + spring Cloud实现分布式微服务框架的搭建流程。 第一章节: 搭建垂直应用的spring boot + mybatis 的web项目 首先打开Eclipse 1:File------> new-------->other (注意:如果有些小伙伴找不到像我这样的目录 就是有Spring Starter Project 的工程目录,那么是因为你的Eclipse没有安装下载 Eclipse中安装STS插件) 下载安装教程如下:http://blog.csdn.net/clementad/article/details/51334064 第二步: 填写项目信息 第三步: 创建完成后的对应目录结构,在此目录下的Controller

springboot-i18n国际化

放肆的年华 提交于 2020-12-19 04:32:29
简介 In computing, internationalization and localization are means of adapting computer software to different languages, regional peculiarities and technical requirements of a target locale. 术语 i18n internationalization 英 [ˌɪntəˌnæʃnəlaɪ'zeɪʃn] ,国际化。 由于首字母"i"和末尾字母"n"间有18个字符,所以简称i18n。 internationalization指为了使应用程序能适应不同的语言和地区间的变化而不作系统性的变化所采取的设计措施。 l10n localization, 本地化。 由于首字母"l"和末尾字母"n"间有10个字母,所以简称l10n。 localization指为了使应用软件能够在某一特定语言环境或地区使用而加入本地特殊化部件和翻译后文本的过程。 locale: 指语言和区域进行特殊组合的一个标志 一般 语言_地区 可以确定一个特定类型的本地化信息。 基名_语言_地区.properties 语言由两个小写字母表示,具体代码是由 ISO-639 标准定义。 地区由两个大写字母表示,由 ISO-3166标准 定义的。 基名

互联网公司常用分库分表方案汇总

泄露秘密 提交于 2020-12-19 02:54:45
本文来源: cnblogs.com/littlecharacter/p/9342129.html 一、数据库瓶颈 不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载活跃连接数的阈值。在业务Service来看就是,可用数据库连接少甚至无连接可用。接下来就可以想象了吧(并发量、吞吐量、崩溃)。 1、IO瓶颈 第一种:磁盘读IO瓶颈,热点数据太多,数据库缓存放不下,每次查询时会产生大量的IO,降低查询速度 -> 分库和垂直分表。 第二种:网络IO瓶颈,请求的数据太多,网络带宽不够 -> 分库。 2、CPU瓶颈 第一种:SQL问题,如SQL中包含join,group by,order by,非索引字段条件查询等,增加CPU运算的操作 -> SQL优化,建立合适的索引,在业务Service层进行业务计算。 第二种:单表数据量太大,查询时扫描的行太多,SQL效率低,CPU率先出现瓶颈 -> 水平分表。 二、分库分表 1、水平分库 概念: 以字段为依据,按照一定策略(hash、range等),将一个库中的数据拆分到多个库中。 结果: 每个库的结构都一样; 每个库的数据都不一样,没有交集; 所有库的并集是全量数据; 场景: 系统绝对并发量上来了,分表难以根本上解决问题,并且还没有明显的业务归属来垂直分库。 分析: 库多了

这份程序员必备书籍《Spring实战4》,你确定不看看?

扶醉桌前 提交于 2020-12-19 01:25:34
Spring框架是以简化Java EE应用程序的开发为目标而创建的。同样, 本书是为了帮助读者更容易地使用Spring而编写的。我的目标不是为 读者详细地列出Spring API,而是希望通过现实中的实际示例代码来 为Java EE开发人员展现Spring框架。因为Spring是一个模块化的框 架,所以这本书也是按照这种方式编写的。我们知道并不是所有的开 发人员都有相同的需求,有些人想从头学习Spring,而有的可能只想 排出几个主题,然后按照自己的节奏来学习。 本书适用于所有的Java开发人员,企业级Java开发人员将会发现更有 帮助。我将会循序渐进地指导读者浏览本书中每章复杂的示例代码, 但Spring的真正强大之处在于它能够使企业级应用程序的开发更简 单。因此,企业级应用程序的开发人员会更加欣赏本书的示例代码。 因为Spring的绝大部分内容都是提供企业级服务的,所以这里包含了 许多Spring和EJB的比较。 第1部分 Spring的核心 第1章 Spring之旅 1.1简化Java开发 1.2容纳你的Bean 1.3俯瞰Spring风景线 1.4 Spring的新功能 1.5小结 第2章 装配Bean 2.1 Spring配置的可选方案 2.2自动化装配bean 2.3通过Java代码装配bean 2.4通过XML装配bean 2.5导入和混合配置 2.6小结 第3章

dubbo filter透传

纵然是瞬间 提交于 2020-12-18 17:35:53
参考: https://www.cnblogs.com/wangzhuxing/p/9738906.html#_label1_0 cunsumer provider2 provider1 代码 :springboot+dubbo 先启动dubbo-provider 后、再启动dubbo-provider2 后、再启动dubbo-consumer 访问: http://localhost:8080/sayHello?name=ddd 链接: https://pan.baidu.com/s/19Rd9nmY-GcvfBpF6pw2Q2g 密码:53bc 来源: oschina 链接: https://my.oschina.net/u/3730149/blog/4815813

从零入门 Serverless | 架构的演进

北慕城南 提交于 2020-12-18 17:33:49
作者 | 许晓斌 阿里云高级技术专家 传统单体应用架构 十多年前主流的应用架构都是单体应用,部署形式就是一台服务器加一个数据库,在这种架构下,运维人员会小心翼翼地维护这台服务器,以保证服务的可用性。 ▲ 单体架构 单体应用架构面临的问题 随着业务的增长,这种最简单的单体应用架构很快就面临两个问题。首先,这里只有一台服务器,如果这台服务器出现故障,例如硬件损坏,那么整个服务就会不可用;其次,业务量变大之后,一台服务器的资源很快会无法承载所有流量。 解决这两个问题最直接的方法就是在流量入口加一个负载均衡器,使单体应用同时部署到多台服务器上,这样服务器的单点问题就解决了,与此同时,这个单体应用也具备了水平伸缩的能力。 ▲ 单体架构(水平伸缩) 微服务架构 1. 微服务架构演进出通用服务 随着业务的进一步增长,更多的研发人员加入到团队中,共同在单体应用上开发特性。由于单体应用内的代码没有明确的物理边界,大家很快就会遇到各种冲突,需要人工协调,以及大量的 conflict merge 操作,研发效率直线下降。 因此大家开始把单体应用拆分成一个个可以独立开发、独立测试、独立部署的微服务应用,服务和服务之间通过 API 通讯,如 HTTP、GRPC 或者 DUBBO。基于领域驱动设计中 Bounded Context 拆分的微服务架构能够大幅提升中大型团队的研发效率。 2.

扩招1W人,字节跳动内部公开12月份Java岗71道面试题

拜拜、爱过 提交于 2020-12-18 17:31:54
前言 近日,字节跳动官宣扩招信息,在年底前再招满 10000 人!这其中技术岗的需求占比非常高。 不少人对字节跳动技术岗的 体系结构 和 技术要求 设置不太清楚,想去面试心里没底,下面简单介绍一下字节跳动技术岗要求体系,并给大家分享一份最新入职字节跳动的同事总结出的 完整面试题! 字节跳动的 职级 研发序列一共 10 级: 不同序列间月薪base差异较大,技术base整体偏高。比如2-1月薪会在20k+,2-2的package会在60w-100w左右(算上期权,大概会占30%左右)。T2-2级别的薪资约40k,500股票/每年。 字节技术岗平均薪资情况: 字节跳动对技术岗的要求 1、3年以上开发经验; 2、精通Java,理解io、泛型、多线程、集合等Java基础使用和实现原理; 3、熟悉Spring、SpringBoot等框架,理解JVM的实现机制及性能调优; 4、掌握MySQL使用,熟悉数据库性能优化; 5、熟悉主流Key-Value存储系统,能够进行系统性能调优; 6、掌握Linux 操作系统;熟练使用一种脚本语言,Shell或Python; 7、拥有高并发、分布式系统经验优先; 8、有业务系统中台化经验者优先。 有以下经验者优先: ① 熟练掌握Golang/Python并能灵活运用; ② 具有大规模分布式系统的调优经验,如JVM调优、SQL调优、缓存优化、RPC优化等; ③

阿里巴巴为什么要用Spring框架?Dubbo不香么?

◇◆丶佛笑我妖孽 提交于 2020-12-18 14:05:17
2000年,对于Java来说,那时正是EJB流行的时代,大部分Java程序员和公司都在使用EJB进行开发,很少有人会去思考EJB中存在的缺点。Rod Johnson觉得EJB太过臃肿,并不是所有项目都需要使用这种大型框架, 提出了一个基于普通Java类和以及利用“依赖注入”的更简单的解决方案。 如果说 Java 工程师,有什么一定要“死磕”拿下的东西,那一定是 Spring 无疑了。 众所周知,Spring 无论在 Java 生态系统,还是在就业市场, Spring Boot、Spring Framework、Spring Data、Spring Cloud、Spring Security、Spring Session等都是Spring Framework 的基石,面试出镜率之高,无出其右。 Spring Framework相当于一栋高楼大厦的地基,是整个Spring生态中的基础。不管是灵活便捷的Spring Boot、还是微服务中的王者Spring Cloud,它们都依赖并且需要Spring Framework。 所以,我也建议大家, 如果想把Spring Boot或Spring Cloud彻底的学会,那么请务必先学Spring Framework。 实际上,对于Java程序员日常开发中经常所使用的@Service,@Component,@Bean等等,包括@Autowired、

EasyExcel converter转换数据库映射关系

无人久伴 提交于 2020-12-18 13:47:18
项目中的需求:导出功能,且有些字段是需要通过数据库存储的数据字典来进行翻译转换。比如:企业类型,1=生产企业,2=配送企业,3=经营企业,等等。这些映射关系虽然变化频率很低,但也是动态存储在数据库中的。我们不希望将这些映射关系写死在Java代码中。 EasyExcel有个Converter功能,目前看来有两种实现方式: 一种是在@ExcelProperty注解中指定: @ExcelProperty(value = "创建时间",index = 5,converter = DateTimeConverter.class) private Date creTime; 一种是注册写处理器的方式,类似于: public static void export(HttpServletResponse response, List rowList,String fileName,Class clazz,String sheetName) throws IOException { response.setContentType("application/vnd.ms-excel"); response.setCharacterEncoding("utf-8"); response.setHeader("Content-disposition", "attachment;filename*=utf