Spring Boot 日志框架集成 - 知乎

Spring Boot日志框架Spring Boot支持Java Util Logging,Log4j2,Lockback作为日志框架,如果你使用starters启动器,Spring Boot将使用Logback作为默认日志框架。无论使用哪种日志框架,Spring Boot都支持配置将日志输出到控制台或者文件中。springbootstarter启动器包含springbootstarte...
阅读全文

Spring Boot 怎么实现热部署 - 知乎

在Spring Boot实现代码热部署是一件很简单的事情,代码的修改可以自动部署并重新热启动项目。引用devtools依赖```text<dependency <groupIdorg.springframework.boot</groupId <artifactIdspringbootdevtools</artifactId <optionaltrue</opt...
阅读全文

关于缓存,redis缓存你需要知道的细节 - 知乎

一、缓存在系统中用来做什么1\. 少量数据存储,高速读写访问。通过数据全部inmomery 的方式来保证高速访问,同时提供数据落地的功能,实际这正是Redis最主要的适用场景。2\. 海量数据存储,分布式系统支持,数据一致性保证,方便的集群节点添加/删除。Redis3.0以后开始支持集群,实现了半自动化的数据分片,不过需要smartcl...
阅读全文

Spring开启方法异步执行 - 知乎

@EnableAsync```text@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Import(AsyncConfigurationSelector.class)public @interface EnableAsync { Class<? extends Annotati...
阅读全文

SpringCloud Eureka 自我保护机制 - 知乎

自我保护背景首先对Eureka注册中心需要了解的是Eureka各个节点都是平等的,没有ZK中角色的概念, 即使N1个节点挂掉也不会影响其他节点的正常运行。默认情况下,如果Eureka Server在一定时间内(默认90秒)没有接收到某个微服务实例的心跳,Eureka Server将会移除该实例。但是当网络分区故障发生时,微服务与Eureka Server之间无法正常通信,而微服务本身是正...
阅读全文

Spring MVC 表单防重复提交实战 - 知乎

利用Spring MVC的过滤器及token传递验证来实现表单防重复提交。创建注解```text@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface Token { boolean create() default false; bo...
阅读全文

Spring Enable 高级应用及原理 - 知乎

Enable之前的文章用到了一些Enable开头的注解,比如EnableAsync、EnableScheduling、EnableAspectJAutoProxy、EnableCaching等,Enable表示开启/允许一项功能。Enable工作原理我们只需要几个很简单的注解就能开启一个复杂的功能,这是多么简易的用法,这是怎么办到的?首先来看看计划任务@EnableSchedu...
阅读全文

Redis缓存和MySQL数据一致性方案详解 - 知乎

一、需求起因在高并发的业务场景下,数据库大多数情况都是用户并发访问最薄弱的环节。所以,就需要使用redis做一个缓冲操作,让请求先访问到redis,而不是直接访问MySQL等数据库。这个业务场景,主要是解决读数据从Redis缓存,一般都是按照下图的流程来进行业务操作。读取缓存步骤一般没有什么问题,但是一旦涉及到数据更新:数据库和缓存更新,就容易出现缓存(Redis)和数据库(M...
阅读全文

Spring Aware 容器感知技术 - 知乎

Spring Aware是什么Spring提供Aware接口能让Bean感知Spring容器的存在,即让Bean可以使用Spring容器所提供的资源。Spring Aware的分类几种常用的Aware接口如下。更多的可以看它的继承图。Spring Aware的使用如要获取容器中的某个Bean,可以继承ApplicationContextAware,让这个Bean拥...
阅读全文

研发团队资源成本优化实践 - 美团技术团队

背景工程师主要面对的是技术挑战,更关注技术层面的目标。研发团队的管理者则会把实现项目成果和业务需求作为核心目标。实际项目中,研发团队所需资源(比如物理机器、内存、硬盘、网络带宽等)的成本,很容易被忽略,或者在很晚才考虑。在一般情况下,如果要满足更多的技术指标如并发量和复杂度等,或者满足峰值业务的压力,最直接有效的方法就是投入更多的资源。然而,从全局来看,如果资源成本缺乏优化,最终会出现如...
阅读全文