Spring Boot

整天都在讨论使用SpringBoot,可你居然连缓存都不清楚

荒凉一梦 提交于 2020-12-03 14:34:56
缓存技术是一个让所有开发人员又爱又恨的技术,我们爱缓存是因为缓存能给我们带来数量级的响应和流量,但是最迷人的反而最危险,如果缓存用不好也是灾难级别的,特别是一些涉及到公司主要现金流的业务,如果因为我们使用缓存不当,而带给公司一定的损失,不亚于删库跑路的那个大兄弟,那今天我们就来看一下springboot的缓存都有那些东西,学习嘛,一点点的来,慢慢积累自己的经验,才能厚积薄发 文章首发公众号:Java架构师联盟,每日更新技术好文 一、JSR107缓存规范 为了缓存开发规范的统一,以及提升系统的扩展性,J2EE发布了JSR107缓存规范。 主要是Java Caching定义了5个接口,分别是 CachingProvider、CacheManager、Cache、Entry、Expiry。 下面我们分开详细的展开看一下 CachingProvider: 可以创建、配置、获取、管理和控制多个CacheManager,一个Application在运行期间可以访问多个CachingProvider。 CacheManager: 可以创建、配置、获取、管理和控制多个唯一命名的Cache,这些Cache存在于CacheManager的上下文中。一个CacheManager仅被一个CachingProvider所拥有。 Cache: 是一个类似于Map的数据结构并临时存储以Key为索引的值

面试字节跳动Java一面问题基本都答对了,邮件通知被刷了,hr回复原因竟然是...

拈花ヽ惹草 提交于 2020-12-03 13:10:49
简介 面试是上海的Java岗位,周日一轮面试,自我感觉答的都还不错。 结果收到邮件面试结束了,说什么"你优秀的学识和能力给我们留下了深刻的印象!经过对你综合情况的仔细评估,并经过与岗位需求进行谨慎匹配和权衡之后, 非常遗憾,我们这次没有和你达成合作。但你的信息已经被录入到公司人才库"。意思就是挂了呗。 后来打电话问hr,说是我擅长的技术不是他们所需要的,???(黑人问号)。然后面试过程中,有一点奇怪的地方,面试前面试官跟我说我面的而这个岗位有点奇怪,他也没跟我说哪奇怪。 本文分享给需要面试刷题的朋友,另外本人也整理了一份资料包含了Java基础,数据结构,jvm,Redis,并发多线程,分布式,数据库等等,由于篇幅有限,以下只展示小部分面试题,有需要的朋友可以点击进群 795983544 领取,暗号CSDN 面试官的问题: 1.自我介绍 2.介绍印象深刻的项目,我介绍的是最新在做的项目,用到的技术,自己做的哪些模块? 回答:讲了用到的设计模式——模版方法,然后讲了模式方法的实现 3.因为最新的项目用到了,问了Spring Boot,Spring的区别? 回答:去配置化话,然后其他的基本一样,顺便说了一下Spring MVC的原理 4.Spring 的 bean是什么?我说了IOC、DI、Bean之间的关系 5.Hibernate 和 Mybatis的区别? 6

ElasticSearch 23 种映射参数详解

故事扮演 提交于 2020-12-03 11:50:08
松哥原创的 Spring Boot 视频教程已经杀青,感兴趣的小伙伴戳这里--> Spring Boot+Vue+微人事视频教程 hello 各位小伙伴,Es 继续更新。从今天开始我们来看 Es 中常见的 23 种映射参数,由于这里涉及到的东西比较多,因此松哥也录制了多个视频来讲解,每次两集,估计可以分三次讲完,今天我们先来学习 analyzer、search_analyzer 以及 normalizer 三种映射参数。 本文是ElasticSearch 系列第十四篇,和大家聊一聊索引的基本操作,前十三篇传送门: 打算出一个 ElasticSearch 教程,谁赞成,谁反对? ElasticSearch 从安装开始 ElasticSearch 第三弹,核心概念介绍 ElasticSearch 中的中文分词器该怎么玩? ElasticSearch 索引基本操作 ElasticSearch 文档的添加、获取以及更新 ElasticSearch 文档的删除和批量操作 ElasticSearch 文档路由,你的数据到底存在哪一个分片上? ElasticSearch 并发的处理方式:锁和版本控制 ElasticSearch 中的倒排索引到底是什么? ElasticSearch 动态映射与静态映射 ElasticSearch 四种字段类型详解 ElasticSearch 中的地理类型和特殊类型

哇塞的Docker——vscode远程连接Docker容器进行项目开发(三)

别来无恙 提交于 2020-12-02 16:39:58
哇塞的Docker——SpringBoot项目搭建, 开发, 测试 1. vscode先远程连接容器 2. vscode安装Java相应依赖 3. 利用Maven进行Spring Boot项目创建 4. SpringBoot项目启动 因为我本身不是做web开发的,学习SpringBoot开发实属无奈,可能是毕设需要,可能是比赛需要,也可能是兴趣爱好...,所以为了防止在开发的过程中在本地机器上产生很多‘垃圾’,也为了方便以后的再次开发利用,又为了大家在进行Spring Boot开发时更加的轻松方便(不需要再配置各种环境,而且开发工具的话也可使用万能的vscode),我决定探索利用vscode做IDE远程连接docker容器进行SpringBoot的项目开发,并在之后将容器封装成镜像上传到Docker Hub上,环境大家pull pull pull~~ 1. vscode先远程连接容器 哇塞的Docker——vscode远程连接Docker容器进行项目开发(一) 2. vscode安装Java相应依赖 在扩展商店搜索java进行安装,如图所示:Java Extension Pack 在扩展商店搜索Spring进行安装,如图所示:Spring Boot Extension Pack 在我们安装这些扩展时,它会提示我们已在相应的容器中启用此扩展! 3. 利用Maven进行Spring

Spring Boot 2.4发布了,但Spring Cloud用户不推荐着急升级

假装没事ソ 提交于 2020-12-02 16:37:54
前段时间Spring Boot发布了本年度最后一个重要更新版本:Spring Boot 2.4.0。 最近在社群里也开始有讨论关于Spring Boot 2.4的一些使用问题。我发现有很多Spring Cloud用户也急切着想要体验最新版本的Spring Boot,然后碰到了一些问题,其中被提出来最多的就是配置无法加载的问题。 我没有去深究这个问题如何去解决,因为之前,在 发布说明 中有提及过,在Spring Boot 2.4版本中对配置文件的处理做了较大的改动,如果你只是简单的使用application.properties或application.yaml,那么还能无缝衔接。但如果用了更为复杂的配置方式,很可能会失败。 所以,当你采用Spring Cloud Config来管理配置和加载的时候,就很容易出现这样的问题。同时,从Spring Boot和Spring Cloud的版本支持关系来看,Spring Boot 2.4.x版本本身还没有对应的Spring Cloud版本。 上图截取自: http://www.springcloud.com.cn/ 因此,对于Spring Cloud的用户的话,当前时间节点之下,并不太推荐马上去应用Spring Boot 2.4.x。如果你也在学习Spring Cloud,推荐关注这个 免费连载教程 。 欢迎关注我的公众号:程序猿DD

当spring cloud 遇上了Dubbo,它们谁更胜一筹?

好久不见. 提交于 2020-12-02 15:21:39
目录 前言 一、spring cloud 和 Dubbo 技术上选谁呢? 选择spring cloud 选择Dubbo 小结 二、spring cloud 和 Dubbo 社区的活跃度 小结 三、spring cloud 和 Dubbo 架构完整度 小结 四、Round 4:文档质量 小结 五、但如果我选,我会用springcloud。 从公司整体规划 从程序员招聘难度 从系统结构简易程序 从性能 从开发难易度 从后续改进 从配套措施 从技术实力层面 总结 前言 简而言之,Dubbo确实类似于Spring Cloud的一个子集,Dubbo功能和文档完善,在国内有很多的成熟用户,然而鉴于Dubbo的社区现状(曾经长期停止维护,2017年7月31日团队又宣布重点维护),使用起来还是有一定的门槛。 Dubbo具有调度、发现、监控、治理等功能, 支持相当丰富的服务治理能力 。Dubbo架构下,注册中心对等集群,并会缓存服务列表已被数据库失效时继续提供发现功能,本身的服务发现结构有很强的 可用性与健壮性 ,足够支持高访问量的网站。 一、spring cloud 和 Dubbo 技术上选谁呢? 选择spring cloud 一定要选Spring Cloud全家桶:社区支持强大,更新非常快,所以开发效率高。 速度慢不是缺点,扩展性不强也不是缺点。 大/中/小型公司总是担心

拼多多内推3面(Java):B-Tree索引+AQS+GC+分布式+集群+数据拆分

霸气de小男生 提交于 2020-12-02 15:16:54
一面 osi七层网络模型,五层网络模型,每次层分别有哪些协议 死锁产生的条件, 以及如何避免死锁,银行家算法,产生死锁后如何解决 如何判断链表有环 虚拟机类加载机制,双亲委派模型,以及为什么要实现双亲委派模型 虚拟机调优参数 拆箱装箱的原理 JVM垃圾回收算法 CMS G1 hashset和hashmap的区别,haspmap的底层实现put操作,扩容机制,currenthashmap如何解决线程安全,1.7版本以及1.8版本的不同 md5加密的原理 有多少种方法可以让线程阻塞,能说多少说多少 synchronized和reetrantlock锁 AQS同步器框架,countdowmlatch,cyclebarrier,semaphore,读写锁 二面 B-Tree索引,myisam和innodb中索引的区别 BIO和NIO的应用场景 讲讲threadlocal 数据库隔离级别,每层级别分别用什么方法实现,三级封锁协议,共享锁排它锁,mvcc多版本并发控制协议,间隙锁 数据库索引?B+树?为什么要建索引?什么样的字段需要建索引,建索引的时候一般考虑什么?索引会不会使插入、删除作效率变低,怎么解决? 数据库表怎么设计的?数据库范式?设计的过程中需要注意什么? 共享锁与非共享锁、一个事务锁住了一条数据,另一个事务能查吗? Spring bean的生命周期?默认创建的模式是什么

linux(centos)下安装supervisor进程管理工具

别说谁变了你拦得住时间么 提交于 2020-12-02 08:14:10
在接触supervisor进程管理工具之前,使用springboot打包部署到linux服务器的流程是这样子的,如下图所示: 上图展示的就是最一般的流程,如果项目是小项目或者demo可以这样子去部署,但是实际生产中会有各种各样的问题存在,比如: 项目发布之后,由于各种可能的原因,服务器宕机或者服务进程挂掉,不能自动重启; 如果项目是频繁更新,频繁发布,这样子简直会把人累死; ... ok,今天先来解决第一个问题,服务重启的问题。 supervisor介绍 Supervisor,是一个进程控制系统,是一个客户端/服务器端系统允许用户在UNIX-LIKE 操作系统中去监控,控制一些进程。Supervisor作为主进程,Supervisor下管理的时一些子进程,当某一个子进程异常退出时,Supervisor会立马对此做处理,通常会守护进程,重启该进程,保证进程可用。 supervisor安装 一般服务器都部署在ecs上面,推荐使用yum命令安装,简单省心。 首先,使用命令 yum -y install supervisor supervisor配置 系统会自动安装,等待安装完毕之后,输入命令: vim /etc/supervisor.d/test.ini 使用vim命令新建一个test.ini文件,该文件是管控进程的配置文件,内容大致如下,可根据个人需要增删配置: #启动程序的名称

SpringBoot:如何优雅地处理全局异常?

你离开我真会死。 提交于 2020-12-02 00:55:08
之前用springboot的时候,只知道捕获异常使用try{}catch,一个接口一个try{}catch,这也是大多数开发人员异常处理的常用方式,虽然屡试不爽,但会造成一个问题,就是一个Controller下面,满屏幕的try{}catch,看着一点都不优雅,一点都不符合小明的气质,憋了这么久,小明今天终于决定对所有异常实施统一处理的方案。 开发准备 JDK8、正常的springboot项目 代码编写 通用异常处理 其实Spring系列的项目全局异常处理方式早已存在,只不过我们一直忙于搬砖,很少停下脚步去审视这个日夜与我们相伴的朋友。为了贴合主题,本次主要针对SpringBoot全局异常处理进行举例说明。 SpringBoot中有一个 @ControllerAdvice 的注解,使用该注解即表示开启全局异常捕获,接下来我们只需在自定义的方法上使用 @ExceptionHandler 注解,并定义捕获异常的类型,对这种类型的异常进行统一的处理。 举个例子: 假如我们需要针对NullException(空指针异常,是Java程序员最痛恨的异常,没有之一)进行全局处理(如下所示)。 @RestControllerAdvice public class GlobalExceptionHandler { /** * 处理空指针的异常 * @param req * @param e *

推荐一款 API 敏捷开发工具

自古美人都是妖i 提交于 2020-12-01 21:32:48
作者:棒锤 xie.infoq.cn/article/b5c3a339267e1351c6151b42a 初衷 用尽可能简单的方式,完成尽可能多的需求。通过约定的方式 实现统一的标准。告别加班,拒绝重复劳动,远离搬砖 特性 用于快速开发API接口。不再定义 Controller , Service , Dao , Mybatis , xml , Entity , VO 等对象和方法. 可视化界面,将入参自动封装到可执行的脚本上,支持所有关系性数据库SQL执行语句,非关系型 MONGODB 查询语句.欢迎扩展 完全基于springboot2.x 作为springboot项目的stater方式集成,无侵入性,新老项目都能快速集成 只需编写一行代码即可完成大部分的业务需求开发,使用难度级别(测试 or 运维)也可参与开发 在线动态编译,无需重启,即时生效,多数据源操作 版本控制,历史记录比对,回滚等功能 远程一键发布到线上环境 线上POSTMAN调试,保存POSTMAN信息或三方文档的自动生成,历史调用记录存储,回塑 代码提示,SQL提示,语法提示 用户管理控制,安全性控制,以及历史行为记录 经过多次项目验证,传统业务型开发,服务端效率能够提升3-5倍,前后端联调提升效率1倍,测试效率2倍提升 传统开发步骤: 增加一张表 创建实体对象,映射这张表 创建API入参VO 创建API出参VO