从一份流调报告读出中国打工人的勤劳与坚韧

太原市警方,请回应一下网友对媒体人胡新成的关心

2021年推特网黄Top10排行榜

卫生部,现在是承认失败的时候了

约炮双胞胎!王力宏男女炮友名单,首次曝光!竟有大家熟悉的“他”

分享到微信朋友圈

点击图标下载本文截图到手机
即可分享到朋友圈。如何使用?

自由微信即将改版!花5分钟留下你宝贵的意见

SpringForAll社区

10w 行级别数据的 Excel 导入优化记录

this.getSqlSession().select(BaseUnitMapper.class.getName()+".getHouseMapByAreaId",
2021年5月14日

Spring Initializr中生成的mvnw是干吗的?

从命名、图标、扩展名来猜测,这两个文件的作用应该是一样的,只是cmd文件应该是用在windows下跑的,而另外一个则是用于linux环境下跑的。
2021年5月12日

“既生 ExecutorService, 何生 CompletionService?”

假设你有一组针对某个问题的solvers,每个都返回一个类型为Result的值,并且想要并发地运行它们,处理每个返回一个非空值的结果,在某些方法使用(Result
2021年5月11日

Spring Validation最佳实践及其实现原理,参数校验没那么简单!

}}@Delegate注解受lombok版本限制,1.18.6以上版本可支持。如果校验不通过,会抛出NotReadablePropertyException,同样可以使用统一异常进行处理。
2021年5月11日

想接私活时薪再翻一倍,建议根据这几个开源的SpringBoot项目(含小程序)

开发的后台管理系统,采用分模块的方式便于开发和维护,支持前后台模块分别部署,目前支持的功能有:权限管理、部门管理、字典管理、日志记录、文件上传、代码生成等,为快速开发后台系统而生的脚手架!
2021年5月10日

来看看Google的未来工作环境设计,有你喜欢的元素吗?

当然很多吃货还关心美食,毕竟谷歌的自助餐厅以其免费供应的美食而闻名,谷歌计划未来将自助餐转变为盒装、即食式。零食将单独包装,而不再是从大箱子里舀出来。减少任何病毒传播的风险。
2021年5月10日

Spring Boot操作ES进行各种高级查询(值得收藏)

19:11:35", "pic":"group1/M00/00/00/wKhlQFs6RCeAY0pHAAJx5ZjNDEM428.jpg"}DSL搜索DSL(Domain
2021年5月8日

Spring Boot 优雅停止服务的几种方法

spring-boot-starter-actuator然后将shutdown节点打开,也将/actuator/shutdown暴露web访问也设置上,除了shutdown之外还有health,
2021年5月7日

TCP/IP网络模型

TCP中有6个比特标志,URG=紧急指针有效;ACK=确认序号有效;PSH=接收方应该尽快将这个报文交给应用层;RST=重建连接;SYN=同步序号用来发起一个连接;FIN=发送端完成发送任务
2021年5月6日

一文看懂JUC之AQS机制

对象(wait,notify)同样的效果,来进行线程间基于共享变量的通信。但优势在于同一个锁可以由多个条件队列,当某个条件满足时,只需要唤醒对应的条件队列即可,避免无效的竞争。
2021年5月4日

一文看懂分布式事务

脏数据,如果这个时候发生非正常的DB服务重启,那么这些数据还没在内存,并没有同步到磁盘文件中(注意,同步到磁盘文件是个随机IO),也就是会发生数据丢失,如果这个时候,能够在有一个文件,当buffer
2021年5月1日

一文了解InnoDB事务锁

锁机制用于管理对共享资源的并发访问,而数据库本身作为共享资源的集合,内部需要提供一定的锁机制来保证事务的隔离性。本文探讨的是MySQL(5.7)InnoDB引擎下的锁机制。
2021年4月30日

Oracle发布了Java SE支持路线图,Java 8 支持到2030年

任何产品都有自己的支持策略,一个产品不可能无期限的给予最高优先级的支持。Oracle对自己产品的支持强度分为三个级别:最高优先级的支持,中等优先级的支持,最低优先级的支持。
2021年4月29日

一文看懂Java锁机制

变量值被一个线程修改后会立即同步回主内存、变量值被其他线程读取前立即从主内存刷新值到工作内存。即read、load、use三者连续顺序执行,assign、store、write连续顺序执行。
2021年4月28日

互联网理想架构

连接,如果存在则推送,客户端收到推送消息后,会给服务端回执,服务端即可更新消息状态。如果推送失败,或者回执丢失,用户在下一次建立连接时,会重新接受消息通知,同时客户端会进行逻辑去重。
2021年4月26日

太全面了!常见代码重构技巧

父类中凡是已经实现好的方法(相对于抽象方法而言),实际上是在设定一系列的规范和契约,虽然它不强制要求所有的子类必须遵从这些契约,但是如果子类对这些非抽象方法任意修改,就会对整个继承体系造成破坏。
2021年4月25日

【炸】Spring Security 实战干货:WebSecurity和HttpSecurity的关系

Assert.state(!this.securityFilterChainBuilders.isEmpty(),
2021年4月24日

Swagger3就是比2简单粗暴

document.getElementById('js_content').addEventListener("selectstart",function(e){
2021年4月23日

爆料:Spring 2021年的一些发展方向

Native,借助于此技术,我们可以利用更少的资源来更快启动Spring本地运行时,目前处于Beta版本,胖哥在其它文章中已经用不少篇幅来介绍它,这里就不再赘述了。
2021年4月20日

(科普)-L2TP VPN基本原理

可在LAC和LNS两处同时计费,即ISP处(用于产生账单)及企业网关(用于付费及审计)。L2TP能够提供数据传输的出入包数、字节数以及连接的起始、结束时间等计费数据,可根据这些数据方便地进行网络计费
2021年4月19日

(科普)堡垒机的基本原理与部署方式

权限可控,比如某个工程师要离职或要转岗了。如果没有一个统一的权限管理入口,是一场梦魇。行为可控,比如我们需要集中禁用某个危险命令,如果没有一个统一入口,操作的难度可想而知。
2021年4月18日

Spring Boot 日志配置(LogBack,LockBack异步日志)

logging.file=E:\logs\spring-boot-studentlogging.level.org.springframework.web=debug日志
2021年4月17日

再见 for 循环编程,Spring 全家桶,真香!

Spring框架自2002年诞生以来一直备受开发者青睐,它包括SpringMVC、SpringBoot、SpringData、SpringCloud、Spring
2021年4月16日

MySQL查询的执行过程

ps.close();}在这里缓存不会被使用,因为每一次迭代都会发送一条包含不同SQL语句的statement给数据库。并且每一次迭代都会生成一个新的存取方案。现在让我们来看看下一段代码:
2021年4月16日

Spring Boot + Mybatis + Druid数据源【自己定制】

datasource.setMinEvictableIdleTimeMillis(druidDataSourceProperty.getMinEvictableIdleTimeMillis());
2021年4月15日

Spring Boot + Mybatis + Redis二级缓存实例

第二次请求时间:68ms源码https://github.com/wyh-spring-ecosystem-student/spring-boot-student/tree/releases
2021年4月14日

Spring 事务剖析

AOP注册AnnotationAwareAspectJAutoProxyCreator后置处理器一样,这里就不在重复说明了。InfrastructureAdvisorAutoProxyCreator
2021年4月13日

再次重温下Cglib 与 JDK动态代理

该设置用于输出jdk动态代理产生的类System.getProperties().put("sun.misc.ProxyGenerator.saveGeneratedFiles",
2021年4月12日

数据库审计系统基本原理与部署方式

反向代理适用于流量不能到审计设备,又不允许安装agent代理软件的情况。它的原理是直接把审计设备当作一个代理,客户端数据库连接直接连接到审计设备,通过审计设备再到达数据库,从而达到审计数据库的目的。
2021年4月10日

日志审计系统的基本原理与部署方式

document.getElementById('js_content').addEventListener("selectstart",function(e){
2021年4月9日

HDFS技术原理(下)-总结太全面了!!!

document.getElementById('js_content').addEventListener("selectstart",function(e){
2021年4月7日

HDFS技术原理(上)

关键数据根据实际业务需要保存在具有高度可靠性的节点中,此时DateNode组成了异构集群。通过修改DateNode的存储策略,系统可以将数据强制保存在指定的节点组中。
2021年4月6日

Storm(流计算)技术原理-下

在Streaming里面一个Tuple被完全处理的意思是:这个Tuple所派生的所有tuple都被成功处理。如果这个消息在Timeout所指定的时间内没有成功处理,这个tuple就被认为处理失败了。
2021年4月5日

Storm(流计算)技术原理-上

Nimbus节点首先将提交的Topology进行分片,分成一个个Task,分配给相应的Supervisor,并将Task和Supervisor相关 的信息提交到Zookeeper集群上。
2021年4月4日

Spark技术原理

使用DStream从Kafka和HDFS等源获取连续的数据流,DStreams由一系列连续的RDD组成,每个RDD包含确定时间间隔的数据,任何对DStreams的操作都转换成对RDD的操作。
2021年4月2日

NAS技术及应用

,一个新提出的协议,它使程序可以访问远程Internet计算机上的文件并要求此计算机的服务。CIFS可以看做是应用程序协议如文件传输协议和超文本传输协议的一个实现。
2021年4月1日

Loader技术原理

Loader除了提供图形化操作界面外,还体用了一套完整的shell脚本,通过这些脚本,可实现数据源的增删查改,作业的增删查改、启动作业、停止作业,查看作业状态,判断作业是否正在运行等功能。
2021年3月30日

ZooKeeper技术原理

新机器加入也是类似,所有机器收到通知:新兄弟目录加入,highcount又有了,对于第二点,我们稍微改变一下,所有机器创建临时顺序编号目录节点,每次选取编号最小的机器作为master就好。
2021年3月29日

大数据之Yarn技术原理

Manager)负责系统中所有应用程序的管理工作,主要包括应用程序提交、与调度器协商资源以启动ApplicationMaster、监控ApplicationMaster运行状态并在失败时重新启动等。
2021年3月28日

后端RAID技术及应用

缺点:在校验过程汇中,容易出现校验盘负载过大,使整个校验盘失效。在数据写入时,是写入最慢的,每次写入都要与校验盘校验,校验盘也成为这个存储的瓶颈。数据读取相对较快,采用多块硬盘同时读取。
2021年3月27日

你所不知道的备份容灾技术基础

备份数据保留周期:即在介质上存放的备份数据的有效期,在保留周期内的数据是不允许被覆盖,当数据存放时间超过保留周期后,该部分数据所使用的介质空间可以被覆盖,从而释放介质空间。
2021年3月26日

后端存储基础知识

document.getElementById('js_content').addEventListener("selectstart",function(e){
2021年3月25日

Hive技术原理

document.getElementById('js_content').addEventListener("selectstart",function(e){
2021年3月24日

Flume技术原理

Flume是开源日志系统。是一个分布式、可靠性和高可用的海量日志聚合系统,支持在系统中定制各类数据发送方,用于收集数据;同时,FLume提供对数据进行简单处理,并写到各种数据接收方(可定制)的能力。
2021年3月23日

Kafka深度剖析

同一个Topic下有不同的分区,每个分区会划分为多个文件,只有一个当前文件在写,其他文件是只读的。当写满一个文件(即达到某个设定的值)Kafka会新建一个空文件继续来写。而老文件切换为只读。
2021年3月22日

Apache Kafka 实践:重置 offset

document.getElementById('js_content').addEventListener("selectstart",function(e){
2021年3月21日

读写锁:使用场景和实现方案(ZooKeeper 实现)

document.getElementById('js_content').addEventListener("selectstart",function(e){
2021年3月20日

开发实践:代码重构的思考

多用模型,少用hashmap。hashmap当时它相当于一个自由模型,啥都可以塞,啥都可以取,使用上是方便,但是没有套上任何业务信息,业务越大,修改越多,就会越不可控。每次修改都会造成一些隐患。
2021年3月18日

状态机的通用设计和实现

document.getElementById('js_content').addEventListener("selectstart",function(e){
2021年3月17日

后台开发最佳实践

document.getElementById('js_content').addEventListener("selectstart",function(e){
2021年3月16日

Mybatis只写Mapper接口就可以操作数据库的背后解读

newInstance(mapperProxy);}先获取Mapper对应增强器(MapperProxy)根据增强器使用JDK动态代理产生代理对象代理类的反编译结果import
2021年3月15日

深度剖析Mybatis-Spring实现

}}在这个增强器中它实现了每次请求新创建Sqlsession,并且还做了统一的资源释放,事务处理等,这使得我们在和Spring集成后,不用关心资源释放等操作,将工作重心放到业务上。
2021年3月13日

ThreadPoolExecutor 深入解析

}阻塞队列可以参考JAVA并发容器-阻塞队列。ctl状态控制属性,高3位表示线程池的运行状态(runState),剩下的29位表示当前有效的线程数量(workerCount)线程池最大线程数是(1
2021年3月12日

深入MyBatis执行过程

STATEMENT]。  Executor和StatementHandler的实现采用装饰器模式。  为了聚焦于查询过程,也选择性忽略了一部分MyBatis的重要功能,如日志模块。
2021年3月11日

Spring Security 实战干货:微信小程序登录与Spring Security结合的思路分享

2.0,之所以写出来是让你明白开发中要善于发现一些相似的东西,通过差异对比来探讨他们结合的可能性,这也是一种自我提升的方法。方法远比结果重要,形成自己的方法论就能富有创造力。
2021年3月10日

深入理解JVM - Class类文件的结构

常量池中的第一个常量有特殊含义,所以常量池计数是从1开是的,其他计数是从0开始,如:接口索引集合。如上图,常量池计数是16,表示有22个常量,排除第一个,表示有21个常量,索引值范围为1~21。
2021年3月9日

深入剖析线上内存溢出的原因

StackOutOfMemoryErrorTest.main(StackOutOfMemoryErrorTest.java:17)需要重新上述异常,最好是在32位机器上,因为我在64位机器没有重现。
2021年3月8日

后端线上问题排查常用命令收藏

vmstat(VirtualMeomoryStatistics,虚拟内存统计)是Linux中监控内存的常用工具,可对操作系统的虚拟内存、进程、CPU等的整体情况进行监视,推荐使用。
2021年3月7日

深入理解JVM - 类加载机制

document.getElementById('js_content').addEventListener("selectstart",function(e){
2021年3月6日

深入理解JVM - 方法调用

分派(Dispatch)它可能是静态的也可能是动态的,按照分派依据的宗量数可分为单分派和多分派。这两类分派方式两两组合就构成了静态单分派、静态多分派、动态单分派、动态多分派4种分派组合情况。
2021年3月5日

深入理解JVM - ZGC垃圾收集器

以上无论是对引用关系记录的插入还是删除,虚拟机的记录操作都是通过写屏障实现的。CMS是基于增量更新来做并发标记的,G1、Shenandoah则是用原始快照来实现。
2021年3月4日

深入理解 Spring 事务原理

}在此处需要特别注意的是,此@Transactional注解来自org.springframework.transaction.annotation包,而不是javax.transaction。
2021年3月3日

Redis生产环境你还敢用keys?我劝你放下屠刀,回头是岸!!!

document.getElementById('js_content').addEventListener("selectstart",function(e){
2021年3月2日

基于SLF4J MDC机制实现日志的链路追踪

}}扩展ThreadPoolTaskExecutor线程池扩展ThreadPoolTaskExecutor线程池的主要目的是实现将父线程的MDC内容复制给子线程。
2021年3月1日

@Autowired注解实现原理(Spring Bean的自动装配)

Bean的自动装配过程。通过看@Autowired源码注释部分我们可以看到@Autowired的实现是通过AutowiredAnnotationBeanPostProcessor后置处理器中实现的。
2021年2月28日

Java 应用线上问题排查思路、工具小结

本文总结了一些Java应用线上常见问题的定位步骤,分享的主要目的是想让对线上问题接触少的同学有个预先认知,免得在遇到实际问题时手忙脚乱。毕竟作者自己也是从手忙脚乱时走过来的。
2021年2月27日

用字节码来看 try-catch-finally 和 return具体怎么执行?

document.getElementById('js_content').addEventListener("selectstart",function(e){
2021年2月26日

手把手教你基于Retrofit实现自己的轻量级http调用工具

为了更加灵活的构建Retrofit对象,我们可以通过配置项以及@RetrofitClient注解属性传递一些动态参数信息。@RetrofitClient包含的属性如下:
2021年2月25日

如何使用Redis实现页面UV统计-HyperLogLog实现详解

最终,2^14个桶都保存了出现1的最大值k_max,此时调用pfcount时,按照前面介绍的估算方式,便可以计算出key的设置了多少次valu,也就是统计值,即2^14*2^(k_max平均)。
2021年2月23日

Redis 6.0 客户端缓存特性及实践

有时候为了更好的观察redis的返回结果,我们使用telnet而不是redis-cli作为client连接redis,因为redis-cli对结果做了处理,尤其是失效消息,你可能无法观测到。
2021年2月22日

推荐一个适用于SpringBoot项目的轻量级HTTP客户端框架,快来试试它!

上面的@Intercept配置表示:拦截HttpApi接口下/api/**路径下(排除/api/test/savePerson)的请求,拦截处理器使用TimeStampInterceptor。
2021年2月20日

Java8中Stream之Spliterator深入分析

Iterator),JDK8发布后,对于并行处理的能力大大增强,Spliterator就是为了并行遍历&分割序列而设计的一个迭代器。本文对其进行分析。
2021年2月19日

谈谈缓存更新

如果将读操作和回填缓存分离开,将回填工作交给独立的模块去执行,将读写并发以及写写并发的结果「串行化」,则可以避免因为并发更新的时序问题带来的缓存数据库不一致的问题。
2021年2月18日

深入理解G1垃圾收集器

在并发标记阶段如何保证收集线程和用户线程互不干扰的运行?如果GC线程标记对象时,用户线程改变了对象之间的引用关系,必须保证不能打破原有的对象依赖图结构,G1采用原始快照(SATB,Snapshot
2021年2月17日

海量数据优化查询的套路有哪些?

document.getElementById('js_content').addEventListener("selectstart",function(e){
2021年2月15日

适配器模式在Mybatis中的妙用,真秒!

document.getElementById('js_content').addEventListener("selectstart",function(e){
2021年2月14日

Redis官方的高可用性解决方案

document.getElementById('js_content').addEventListener("selectstart",function(e){
2021年2月13日

压缩20M文件从30秒到1秒的优化过程

直接缓冲区:直接缓冲区不需要内核空间作为中转copy数据,而是直接在物理内存申请一块空间,这块空间映射到内核地址空间和用户地址空间,应用程序与磁盘之间数据的存取通过这块直接申请的物理内存进行交互。
2021年2月11日

两个案例,从根上理解JVM字节码执行

解惑指令iconst_0,iload_1的命名解读 第一个i代表这是对int数据类型进行的操作const,load是操作码0,1是隐含的操作数 上面的两个指令等价于iconst
2021年2月10日

春节放假前最全面的一篇并发编程读后感 & AQS 初探

章【性能与可伸缩性】,讨论了一个亘古不变的话题:运行正确以及运行更快。我们当然希望在同样服务器配置下,程序运行能够更快,但前提是程序要正确,所以要警戒自己:
2021年2月9日

使用 mvn archetype 快速创建模板工程

document.getElementById('js_content').addEventListener("selectstart",function(e){
2021年2月7日

SpringMVC项目迁移SpringBoot的问题我都梳理到这儿了

.xml,所以迁移到SpringBoot后因为有一些配置已经默认集成到其中,而不需要迁移,还有很多需要我们自己通过SpringBoot的方式重新将其配置到项目中,一般都是通过
2021年2月6日

Tomcat深入理解

6、构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JspServlet的doGet()或doPost().执行业务逻辑、数据存储等程序;
2021年2月5日

深度解析SpringAOP

在编程中,Service实例都是单例的无状态的,事务管理则需要加入事务控制的相关状态变量,使得Service实例不再是无状态线程安全的,解决这个问题的方式就是使用ThreadLocal。
2021年2月3日

Thread的join()是如何控制多线程同步的

LockSupport.park()/unpark()来实现阻塞/唤醒的,会让线程进入等待态。但话又说回来,虽然等锁时进入的状态不一样,但被唤醒后又都进入
2021年2月2日

ElasticSearch聚合实战+优化

https://www.elastic.co/guide/cn/elasticsearch/guide/current/_returning_empty_buckets.html
2021年2月1日

合格的后端Coder都应该写好UT和Mock测试

document.getElementById('js_content').addEventListener("selectstart",function(e){
2021年1月31日

Java8中Stream原理分析

也就是说这里的S是BaseStream的一个实现类,它同样是一个流,比如Stream、IntStream、LongStream等。
2021年1月30日

Rate Limiter深度剖析

令牌桶算法的一个实现方案是:启动一个Timer线程以固定频率往桶中放令牌,桶满时令牌溢出,业务线程在获取令牌时直接从桶中获取即可。该方案容易理解,但是需要一个Timer线程,资源占用较重。
2021年1月29日

Java泛型相关的深入总结

list.add(elem);}泛型无法使用instanceof关键字我们无法对泛型代码直接使用instanceof关键字,因为Java编译器在生成代码的时候会擦除所有相关泛型的类型信息,
2021年1月28日

在Spring Cloud中如何正确进行统一异常处理?

document.getElementById('js_content').addEventListener("selectstart",function(e){
2021年1月27日

Java中你以为的String其实并不完全正确

最近打算开始来读一下JDK的部分源码,这次先从我们平时用的最多的String类(JDK1.8)开始,本文主要会对以下几个方法的源码进行分析:
2021年1月26日

全网最完整之实战 Prometheus 搭建监控系统

promhttp_metric_handler_requests_total{code="200",instance="192.168.0.107:9090",job="prometheus"}
2021年1月25日

通过第一性原理重新学习G1 垃圾收集器

document.getElementById('js_content').addEventListener("selectstart",function(e){
2021年1月23日

RPC实现以及相关学习

(introspect,官方用语)的能力。通过反射我们可以直接操作类或者对象,比如获取某个对象的类定义,获取类声明的属性和方法,调用方法或者构造对象,甚至可以运行时修改类定义。
2021年1月22日

MySQL老大难事务和锁,一次性讲清楚!

由于每次变动都会先把undo日志记录下来,并用roll_pointer指向undo日志地址。因此可以认为,对该条记录的修改日志串联起来就形成了一个版本链,版本链的头节点就是当前记录最新的值。如下:
2021年1月21日

[解锁新姿势] 回想起被 `if-else` 支配的恐惧,我们要打倒 if - else

document.getElementById('js_content').addEventListener("selectstart",function(e){
2021年1月20日

十分钟让你轻松掌握 MySQL如何利用索引

索引的使用机制有进一步的了解,小编这里对应总结一份详细的MySQL500页的学习笔记,分享给到大家,编程的世界永远向所有热爱编程的人开放,这是一个自由,平等,共享的世界,我始终是这样坚信的。
2021年1月19日

什么?查询提升200倍,ClickHouse这么牛逼?

通过ClickHouse实践,完美的解决了Mysql查询瓶颈,20亿行以下数据量级查询,90%都可以在1s内给到结果,随着数据量增加,ClickHouse同样也支持集群,大家如果感兴趣,可以积极尝试
2021年1月18日

Spring Cloud:多环境配置、eureka 安全认证、容器宿主机IP注册

http://${spring.security.user.name}:${spring.security.user.password}@192.168.1.254:9010/eureka/
2021年1月17日

SpringCloud微服务架构中网络请求性能优化

3.除此以外,为了我们要尽量避免在View层对错误进行判断,处理,我们必须还要设置一个拦截器,拦截onError事件,然后使用ExceptionHandler,让其根据错误类型来分别处理。
2021年1月16日

SpringCloud微服务架构中分布式事务解决方案

微服务倡导将复杂的单体应用拆分为若干个功能简单、松耦合的服务,这样可以降低开发难度、增强扩展性、便于敏捷开发。当前被越来越多的开发者推崇,很多互联网行业巨头、开源社区等都开始了微服务的讨论和实践。
2021年1月15日

重读 JVM - javac & javap

document.getElementById('js_content').addEventListener("selectstart",function(e){
2021年1月14日

服务组织协调神器-ZooKeeper基础扫盲

主进程每次对transaction(v,z)函数的调用都包含了两个字段:事务内容v和事务标致z,而每一个事务标致z=也包含了两个组成部分,前者是主进程周期e,后者是当前主进程周期内的事务计数c。
2021年1月13日

漫谈服务端状态设计

风格2其背后的原则是分离关注点,使得客户端和服务器分别只关注各自领域的问题。通过此举可以简化服务器的实现(分离一部分逻辑到客户端),使得服务器可以独立部署维护,从而改善系统的可伸缩性。
2021年1月12日

全网最深入的RocketMQ Consumer 学习笔记

DefaultMQPushConsumerImpl.this.getConsumerStatsManager().incPullTPS(pullRequest.getConsumerGroup(),
2021年1月11日

复盘一次线上OOM和性能优化

于是拿到了该请求具体信息,包括用户的登录手机号码,因为这个时候,其它几台服务器也出现了CPU和内存负载升高,于是根据手机号查询了其它几台服务器的访问日志,发现同一个请求,该用户也调用了很多次…
2021年1月10日

2021年了,Redis复制原理你应该理解!

选项,让一个服务去复制(replicate)另一个服务器。被复制的服务器为主服务器(master),另一个对主服务器进行复制的服务器则被称为从服务器(slave)
2021年1月9日

Spring Cloud:Security OAuth2 自定义异常响应

document.getElementById('js_content').addEventListener("selectstart",function(e){
2021年1月8日

模版方法模式&策略模式让我的业务代码如诗一样

从执行效果可以看出,通过策略模式(类似switch操作),工厂判断出真正执行的对象,然后模板方法中,step1是公有的,step2和step3是子类中差异化实现的操作。
2021年1月7日

线上出现死锁怎么解决?不看别后悔!!!

free的,这是因为MyISAM总是一次获得所需的全部锁,要么全部满足,要么等待,因此不会出现死锁。但在InnoDB中,除单个SQL组成的事务外,锁是逐步或得的,所以InnoDB发生死锁是可能的。
2021年1月6日

《代码整洁之道》- 代码标准

本文来源:http://r6d.cn/XUUL
2021年1月5日

SpringBoot配置ELK环境

document.getElementById('js_content').addEventListener("selectstart",function(e){
2021年1月4日

全民抢茅台?抢茅台工具收藏一波!

目前我们为大家整理了京东、天猫等平台的抢购工具,扫码关注"SpringForAll社区"回复"茅台"关键字领取!
2021年1月3日

记一次服务器执行MySQL耗时问题

由于MySQL的行锁是针对索引加的锁,不是针对记录加的锁,所以虽然是访问不同行的记录,但是如果是使用相同的索引键(在我们的场景中,就是查询时用到的table_name),是会出现锁冲突的
2021年1月2日

SpringBoot源码分析之条件注解的底层实现

需要匹配的类名}它有2个属性,分别是类数组和字符串数组(作用一样,类型不一样),而且被@Conditional注解所修饰,这个@Conditional注解有个名为values的Class[]
2020年12月31日

【完美】SpringBoot中使用注解形式实现 Redis 分布式锁

BasicThreadFactory.Builder().namingPattern("redisLock-schedule-pool").daemon(true).build());{
2020年12月30日

多线程进阶——JUC并发编程之CyclicBarrier源码一探究竟

节点2执行signal()操作->(1)将firstWrite后移->(2)将节点4移出Condition队列->(3)将节点4加入到AQS的等待队列中去->(4)更新AQS等待队列的tail
2020年12月29日

基于SpringBoot的MySQL实现读写分离

PathMatchingResourcePatternResolver().getResources("classpath*:mapper/*Mapper.xml"));
2020年12月28日

浅析MyBatis的动态代理原理

HashMap();这样便于在后面调用MapperRegistry的getMapper()时,直接从Map中获取某个接口对应的动态代理工厂类,然后再利用工厂类针对其接口生成真正的动态代理类。
2020年12月27日

Javadoc 最佳实践

的时候,如果参数名后面只有一个空格,读起来会有点困难,两个空格就好很多。另外,避免把参数按列对齐,否则参数改名、增减参数的时候会很麻烦。
2020年12月25日

异步编程的几种方式

这篇文章会涉及到回调、Promise、反应式、async/await、用户态线程等异步编程的实现方案。如果你熟悉它们中的一两种,那应该也能很快理解其他几个。
2020年12月24日

一文终结SQL 子查询优化

关联子查询的特别之处在于,其本身是不完整的:它的闭包中包含一些外层查询提供的参数。显然,只有知道这些参数才能运行该查询,所以我们不能像对待非关联子查询那样。
2020年12月23日

Java常见bean mapper的性能及原理分析

@BenchmarkMode(Mode.AverageTime)@OutputTimeUnit(TimeUnit.MICROSECONDS)@Fork(1)@Warmup(iterations
2020年12月22日

Excel大批量导入导出解决方案

Java对Excel的操作一般都是用POI,但是数据量大的话可能会导致频繁的FGC或OOM,这篇文章跟大家说下如果避免踩POI的坑,以及分别对于xls和xlsx文件怎么优化大批量数据的导入和导出。
2020年12月21日

深入理解Java-Condition

reportInterruptAfterWait(interruptMode);}从await方法已经可以大概了解Condition的处理流程,下面对里面的每个方法一一分析一下
2020年12月19日

Java-TypeToken原理及泛型擦除

TypeToken(){}.getType();//调用fromJson方法时把type传过去,如果type的类型和json保持一致,则可以反序列化出来gson.fromJson(json,
2020年12月18日

Code Review方案

在每一次的提交,这个比较强制了,不够灵活;方案3要在合并到别的分支时;方案2则比较灵活。具体更详细的实践可以参考基于
2020年12月17日

深入理解RateLimiter

为了对系统资源的保护或者在网关限制流量,我们一般用到限流算法。Google开源工具包Guava提供了限流工具类RateLimiter,该类基于令牌桶算法实现流量限制,使用十分方便。
2020年12月16日

Swagger天天用,背后原理来一次深度解析

.withResourceGroupingStrategy(resourceGroupingStrategy(documentationType));}defaultsProviders
2020年12月15日

分布式缓存的选择

如今,缓存系统的应用非常广泛,能够用来提高并发数、数据吞吐量,提高快速响应能力。那么当数据量达到一定程序,单机环境可能就显得有些力不从心了,就需要一个分布式缓存系统。
2020年12月14日

后端接口如何提高性能?从MySQL、ES、HBASE等技术一起探讨下!

“我”、“可”,“真”….分词匹配到的所有信息,这明显会返回很多信息,也是不符合中文语义的。实际期望的分词效果大概是“我”、“可”、“真是”,“机灵鬼”,之后再按照这种分词结果去匹配查询。
2020年12月13日

微服务测试之Mockito的使用及实现原理

事例代码基于Mockito2.18.3版本。通常来说Mockito分为两大功能点,一是verify验证,一是stub打桩(我不知道怎么翻译好,跟立flag差不多意思) 先看看一个入门的例子
2020年12月12日

Slf4j适配日志原理

StaticLoggerBinder.getSingleton();这一句其实已经是调用适配包的代码,我们将会看看logback和log4j对应StaticLoggerBinder类的代码。
2020年12月11日

SpringBoot2.x 官方推荐缓存框架-Caffeine高性能设计剖析

(注:本文不会分析Caffeine全部源码,只会对核心设计的实现进行分析,但我建议读者把Caffeine的源码都涉猎一下,有个overview才能更好理解本文。如果你看过Guava
2020年12月10日

Eureka客户端和服务端的到底是如何通讯的?

client开始时处于STARTING状态,在此期间,实例能够处理一些程序特定的初始化操作,这处于实例能够对外提供服务之前。程序在之后将实例状态转为UP,表明实例可以对外提供服务。
2020年12月9日

Java插入式注解处理API科普

插入式注解处理API(JSR269)是用于处理注解(元数据,JSR175)的一套API。其API位于javax.annotation.processing和javax.lang.model包下。
2020年12月8日

你应该使用Java8 非阻塞异步API来优化你的系统了

document.getElementById('js_content').addEventListener("selectstart",function(e){
2020年12月7日

燃炸了的2021最新编程原则

每个程序员都可以从理解编程原理和模式中受益。这篇概述用于我个人参考,同时我也把它放在这。也许这在设计、讨论或复查中对你有所帮助。但请注意,这还远远不够,你常常需要在相互矛盾的原则之间做出权衡。
2020年12月6日

Java日志体系权威总结

slf4j支持各种适配,无论你现在是用哪种日志组件,你都可以通过slf4j的适配器来使用上slf4j。只要你切换到了slf4j,那么再通过slf4j用上实现组件,即上面说的。图来源于官方文档
2020年12月5日

史上最清晰线程池实现原理剖析

类,这是一个工具类,提供 newFixedThreadPool newCachedThreadPool newScheduledThreadPool 等静态方法方便我们创建线程池,最终还是调用
2020年12月4日

Spring-Retry重试实现原理

原理部分我想分开两部分来讲,一是重试机制的切入点,即它是如何使得你的代码实现重试功能的;二是重试机制的详细,包括重试的逻辑以及重试策略和退避策略的实现。
2020年12月3日

Java 集合处理/ 空值处理/ 异常处理

}}12345678910对于实现了AutoCloseable接口的资源,可以使用try-with-resources来释放资源,就是在try中带资源的声明
2020年12月2日

日常工作中如何进行业务设计?

是一个和业务无关的独立功能,我们可以将其开发成一个独立的框架或者库,集成到很多的业务系统当中。作为一个需要复用性的框架,除了功能上的需求以外,非功能性的需求也非常重要。
2020年12月1日

程序员修炼之道

原型不需要总是以代码为基础,要看需求。比如为工作流和应用逻辑这样的动态事物制作原型,便签就非常好。用户界面的原型可以使白板上的图形,或者是永辉图程序或者界面构建器绘制的无功能的模型。
2020年11月30日

Java Bean Copy性能对比

document.getElementById('js_content').addEventListener("selectstart",function(e){
2020年11月29日

Java后端开发实践-项目模板

注意保持README的持续更新,一些重要的架构决定可以通过示例代码的形式记录在代码块当中,新开发者可以通过直接阅读这些示例代码快速了解项目的通用实践方式以及架构选择
2020年11月28日

提高代码质量的Tips

持续重构的概念,即没事情的时候,看看项目中有哪些写得不够好,可以优化的代码,主动去重构一下。或者在修改添加某个功能代码的时候,也可以顺手把不符合编码规范,不好的设计重构一下。
2020年11月27日

基于SpringBoot为微服务架构编写端到端测试

在这种情况下,您什么也不做,因为服务本身知道正在使用哪个数据库服务器以及它需要的数据类型,您只需要启动数据库服务器,填充所需的数据(夹具)并执行测试。对于这种情况,我建议您使用Arquillian
2020年11月26日

理解分布式系统的8个谬误

我们有时会加载复杂的对象图,因为我们需要在屏幕上显示它的一部分。如果我们在很多地方这样做,我们最终会得到一个庞大而复杂的模型,对于写作和阅读来说都是次优的。另一种方法可以是使用命令和查询责任隔离
2020年11月25日

7 个高 Star 开源项目带你轻松玩转微服务

Discovery服务注册发现、Ribbon负载均衡、Feign和RestTemplate调用等组件全方位增强的企业级微服务开源解决方案,更贴近企业级需求,更具有企业级的插件引入、开箱即用等特征。
2020年11月24日

SpringBoot集成Swagger-Bootstrap-UI

com.github.xiaoymin.swaggerbootstrapui.annotations.EnableSwaggerBootstrapUI;import
2020年11月23日

JDBC查询各种姿势(普通、流式、游标)

}至此,我们已经知道如何使用流式查询解决大数据查询时的OOM问题,但流式查询的实现原理我们还不清楚,因此我们继续看源代码一探究竟,为了更方便展示方法调用层次,我画了一个调用序列图:
2020年11月22日

Spring事务的坑都给你总结好了!!!

}Spring的事务是通过AOP代理类中的一个Advice(TransactionInterceptor)进行生效的,而传播级别定义了事务与子事务获取连接、事务提交、回滚的具体方式。
2020年11月21日

API网关正在经历身份危机

API网关”也不同于我们管理现有API的API管理视角。此API网关将对后端的调用聚合在一起,这可能会公开API,但也可能是与API描述较少的东西,例如对旧系统的RPC调用,使用不符合“
2020年11月20日

后端生成Token架构与设计详解

Token主要是用于以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上密匙。
2020年11月19日

Hadoop 框架学习笔记之整体认知

实现的搜索引擎,它提供了我们运行自己的搜索引擎所需的全部工具。包括全文搜索和Web爬虫,但是随着抓取网页数量的增加,遇到了严重的可扩展性的问题--如何解决数十亿级别网页的存储和索引问题。
2020年11月17日

自从用了适配器模式,我的代码清爽多了!!!

document.getElementById('js_content').addEventListener("selectstart",function(e){
2020年11月15日

IntelliJ IDEA 2020.3 EAP 3 新特性

document.getElementById('js_content').addEventListener("selectstart",function(e){
2020年11月13日

真实业务订单拆单架构与实战

拆单的系统比较复杂,要做的完全彻底,对大部分电商公司有很大的困难,这需要打通从订单系统到WMS系统的许多环节,所以需要在产品设计上进行取舍,根据平台的具体需求来确定拆单需求的优先级。
2020年11月12日

双十一剁手了没?了解下电商系统订单配送模块的架构与设计

将优惠金额分摊到每个商品上,能核算统一订单下的每个商品分别分摊的优惠金额,比如:平台券,一个使用平台券的订单最终需要计算每个商品分摊的优惠金额,以确定每个商品的实际付款金额和享受平台优惠的金额。
2020年11月11日

架构师离职后,成为自由开发者的第 100 天

大家好,我是程序猿DD,到今天为止,差不多是我成为自由独立开发者的第100天。这100天经历了什么,我做了哪些事情,以及大家会问离职后的日子是不是很自由等等。今天和大家分享下我这段时间的一些感受。
2020年8月6日

ES数十亿数据量级的场景下如何优化查询性能?

另外还有注意的一点,就是在ES中真正存储的记录字段都应该是你需要查询的字段,不应该把整条记录中的所有字段都放在ES中,如果全部字段都放到ES中,则会导致你机器的filesystem
2020年3月25日

什么?知乎又挂了?我们来聊聊微服务的高可用如何保障

先来讲讲微服务中限流/熔断的目的是什么,微服务后,系统分布式部署,系统之间通过rpc框架通信,整个系统发生故障的概率随着系统规模的增长而增长,一个小的故障经过链路的传递放大,有可能会造成更大的故障。
2020年3月24日

Spring Cloud Gateway 原生的接口限流该怎么玩

Mono.just(exchange.getRequest().getRemoteAddress().getHostName());
2020年3月24日

一文带你玩转FastDFS

controller层用来接收前台发来的上传入驻公司logo图片,同时返回该logo在fastdfs文件服务器的资源路径给前台,前台可以处理将该路径保存到数据库,以便后用。
2020年3月23日

Zuul:构建高可用网关之多维度限流

spring-cloud-zuul-ratelimit是和zuul整合提供分布式限流策略的扩展,只需在yaml中配置几行配置,就可使应用支持限流
2020年3月22日

神操作自定义Annotation实现通用的接口自动幂等

2:token机制,每次接口请求前先获取一个token,然后再下次请求的时候在请求的header体中加上这个token,后台进行验证,如果验证通过删除token,下次请求再次判断token
2020年3月22日

解决Redis分布式锁业务代码超时导致锁失效问题

5.如果锁获取失败了,不管是因为获取成功的锁不超过一半(N/2+1)还是因为总消耗时间超过了锁释放时间,客户端都会到每个master节点上释放锁,即便是那些他认为没有获取成功的锁。
2020年3月20日

阿里云发布新脚手架真香

https://github.com/alibaba/spring-cloud-alibaba?spm=a2ck6.14145464.0.0.503c70a52vNhVo
2020年3月20日

Code Review最佳实践

一个开发团队中,水平有高有低,每个人侧重的领域也有不同。怎么让高水平的帮助新人成长?怎么让大家都对自己侧重领域之外的知识保持了解?怎么能有人离职后其他人能快速接手?这些都是团队管理者关心的问题。
2020年3月15日

jedis用过没?讲讲原理呗

本文来源:http://yeming.me/2017/04/16/springValueAnnotation/
2020年3月14日

Spring容器启动@Value属性无法注入?

}}拆分配置类把ZebraMapperScannerConfigurer这个bean的配置从上述DataSource中抽出来,单独放到另外一个独立的@Configuration类里面。
2020年3月13日

聊聊Spring Bean实例化

的注入里面会选择注入类型:AutowireByName,AutowireByType,接下来applyPropertyValues,把beanFactory中的字段属性值赋给步骤1中生成的对象。
2020年3月12日

Spring IOC流程清楚不?聊聊看

ConcurrentHashMap(256);每次基本都是putIfAbsent模式以放到beanDefinitionMap,这样就完成了bean的注册过程。
2020年3月11日

面试官:ScheduleThreadPoolExecutor了解不?

这个方法首先将任务添加到workQueue中,然后又会调用到上面的ensurePrestart方法。(4)getTask()方法
2020年3月10日

配置中心只有Apollo么?看看点评的Lion

为了提高性能,减少不必要的访问zk,应用会缓存所有使用的key值,当然也不必担心数据不一致的情况。每次zk节点变化通知到客户端,客户端都会更新本地缓存
2020年3月9日

面试官说从源码角度说说Java线程池

本篇文章我们先从左边这条线 Executor==>ExcutorService==>AbstractExecutorService==>ThreadPoolExecutor来分析一下。
2020年3月9日

JedisPool连接池相关配置

可以看到以上代码最后有一个jedis.ping().equals(“PONG”),这样能保证那些没有被客户端使用的连接每60s之内都能向redis服务端发送心跳,这个时间在我们配置的timeout
2020年3月8日

Hystrix初探

当在一个分布式系统中使用了Hystrix后,所有对于外部的依赖调用都被隔离在一个单独的线程池,单独的服务故障不会影响其他服务。并通过提供fallback机制应对某个服务出现异常情况。
2020年3月7日

别再关注删库跑路了,谈谈数据库架构

时间序列DBMS旨在有效地收集,存储和查询具有高交易量的各种时间序列。尽管可以使用其他类别的DBMS(从键值存储到关系系统)来管理时间序列数据,但是特定的挑战通常需要专门的系统。例如。像“
2020年3月6日

Java14带来了许多新功能

world”,因为您无法逃避它们。除了笑话,它们还导致挫败感,因为当代码在生产环境中运行时,它们经常出现在应用程序日志中,这可能使调试变得困难,因为原始代码不容易获得。例如,考虑以下代码:
2020年3月5日

那些年非常火的MyCAT是什么?

http://dl.mycat.io/1.6.7.3/20190927161129/Mycat-server-1.6.7.3-release-20190927161129-linux.tar.gz
2020年3月5日

关于整洁代码的那些事(中)

一个工程是否遵循了约定往往需要代码阅读者有一定经验,或者需要借助checkstyle这样的静态检查工具。如果感觉无处下手,那么大部分情况下跟着google做应该不会有什么大问题:可以参考google
2020年3月4日

关于整洁代码的那些事(下)

我当时正年轻气盛,看到有个两分钟才能生成的报表一下就来了兴趣,翻出了那段不知道谁写的代码,发现里面用了3层循环,每次都会去数据库查一次数据,再把一堆数据拼起来,一股脑塞进一个tableview里。
2020年3月4日

关于烂代码的那些事(上)

从考察点来看,首先是基本的树的遍历算法;其次有一定代码量,可以看出程序员对代码的组织能力、对问题的抽象能力;上机编码可以很简单的看出应聘者是不是很久没写程序了;还包括对于程序易用性和性能的理解。
2020年3月3日

面试官说Spring AOP 实现原理给我说说

Class.forName("com.crossoverjie.proxy.jdk.ISubject").getMethod("execute",
2020年3月2日

深入理解JVM - 方法调用

分派(Dispatch)它可能是静态的也可能是动态的,按照分派依据的宗量数可分为单分派和多分派。这两类分派方式两两组合就构成了静态单分派、静态多分派、动态单分派、动态多分派4种分派组合情况。
2020年3月2日

Spring Boot神操作-多个数据源Service层封装

通过几行代码即可实现对ElasticSearch的访问,同时支持动态的条件查询;适合数据类型比较固定,且index和type独立的,比如强类型映射的实体类;
2020年3月1日

内存寻址和变量

“处理器知道如何执行加载到内存中的命令。几乎所有的处理器命令都类似于‘从某些单元中获取数据,对其执行某些操作,然后将结果发送给其他单元’。我们将数百个简单的命令组合起来,得到一些复杂而有用的命令。”
2020年2月29日

Lombok经常用,但是你知道它的原理是什么吗?

Java中的注解分为运行时注解和编译时注解,运行时注解就是我们经常使用的在程序运行时通过反射得到我们注解的信息,然后再做一些操作。而编译时注解是什么呢?就是在程序在编译期间通过注解处理器进行处理。
2020年2月29日

几百万数据放入内存不会把系统撑爆吗?

计算机的存储单位常用的有bit、Byte、KB、MB、GB、TB后面还有但是我们基本上用不上就不说了,我们经常将bit称之为比特或者位、将Byte简称为B或者字节,将KB简称为K,将MB称之为
2020年2月28日

面试官:聊聊微信和淘宝扫码登录背后的实现原理?

同时,将这个key值和本公司的验证字符串合在一起,通过二维码生成接口,生成一个二维码的图片(二维码生成,网上有很多现成的接口和源码,这里不再介绍)。然后,将二维码图片和uuid一起返回给用户浏览器。
2020年2月27日

SpringBoot 项目构建 Docker 镜像深度调优

https://github.com/my-dlq/blog-example/tree/master/springboot/springboot-dockerfile
2020年2月26日

CentOS7 安装 Maven

下载地址为:http://mirrors.hust.edu.cn/apache/maven/maven-3/3.6.0/binaries/apache-maven-3.6.0-bin.tar.gz
2020年2月25日

Spring Cache 操作 Redis 实现数据缓存(上)

一定不存在(不保证一定存在,因为布隆过滤器结构原因,不能删除,但是旧值可能被新值替换,而将旧值删除后它可能依旧判断其可能存在),在缓存的基础上,构建布隆过滤器数据结构,在布隆过滤器中存储对应的
2020年2月24日

Spring Cache 操作 Redis 实现数据缓存(下)

org.springframework.data.redis.connection.RedisConnectionFactory;
2020年2月24日

手把手教你将 Java 项目推送到 Maven 中央仓库实践

http://central.sonatype.org/pages/choosing-your-coordinates.html
2020年2月23日

Java 通过 JavaMail 发送邮件原来这么简单?

messageBodyPart.setFileName(MimeUtility.encodeText(str.substring(str.lastIndexOf("/")+1)));
2020年2月22日

少年,Java 中的加密与签名知道否?

但是,由于输出的密文是提取原数据经过处理的定长值,所以它已经不能还原为原数据,即消息摘要算法是不可逆的,理论上无法通过反向运算取得原数据内容,因此它通常只能被用来做数据完整性验证。
2020年2月21日

SpringBoot 中优雅处理参数验证,到底发生了什么?

Github:https://github.com/my-dlq/blog-example/tree/master/springboot/springboot-filter-example
2020年2月20日

Java人应该知道的SpringBoot For Kafka (下)

创建ProducerRecord对象,在ProducerRecord中设置好topic、partion、key、value等信息,然后向kafka发送消息18ListenableFuture
2020年2月19日

Java人应该知道的SpringBoot For Kafka (上)

属性设置,自动提交是非常方便,但是自动提交会出现消息被重复消费的风险,可以通过修改提交时间间隔来更频繁地提交偏移量,减小可能出现重复悄息的时间窗,不过这种情况是无也完全避免的。
2020年2月19日

SpringBoot 多种读取配置文件中参数的方式

地址:https://github.com/my-dlq/blog-example/tree/master/springboot/springboot-read-config-example
2020年2月18日

SpringBoot 操作 ElasticSearch 详解

中,一个索引对象可以存储多个不同用途的对象,通过索引类型可以区分单个索引中的不同对象,可以理解为关系型数据库中的表。每个索引类型可以有不同的结构,但是不同的索引类型不能为相同的属性设置不同的类型。
2020年2月16日

SpringBoot 使用 Caffeine 本地缓存

地址:https://github.com/my-dlq/blog-example/tree/master/springboot/springboot-caffeine-cache-example
2020年2月15日

Github推出了GitHub CLI

CLI的经历,我们很乐意为您提供反馈。在我们的开放源代码存储库中创建问题或以Google表单提供反馈。什么样的命令行让您感到不可接受?或者你有那些比较好的建议?让我们知道,以便我们可以使GitHub
2020年2月14日

(很全面)SpringBoot 集成 Apollo 配置中心

随着程序功能的日益复杂,程序的配置日益增多,各种功能的开关、参数的配置、服务器的地址……对程序配置的期望值也越来越高,配置修改后实时生效,灰度发布,分环境、分集群管理配置,完善的权限、审核机制……
2020年2月14日

你知道如何成为一名靠谱的架构师不?

将你的想法呈现给小型或大型团体应该对您来说可行。如果对此感到不舒服,请开始向你最好的朋友介绍。慢慢扩大小组。这是你只能通过离开自己的舒适区来学习的东西。请耐心等待,此过程可能需要一些时间。
2020年2月13日

Tomcat 在 SpringBoot 中是如何启动的?

来判断创建哪种类型的Servlet,代码中分别对应着Web类型(SERVLET),响应式Web类型(REACTIVE),非Web类型(default),我们建立的是Web类型,所以肯定实例化
2020年2月12日

SpringBoot 深度调优,让你的项目飞起来!

https://docs.oracle.com/middleware/11119/wls/PERFM/jvm_tuning.htm#i1146060
2020年2月11日

8种经常被忽视的SQL错误用法,你有没有踩过坑?

本文来源:https://juejin.im/post/5dd15451e51d453b3d3d4329
2020年2月10日

Java面试应该知道之深入理解Java的接口和抽象类

抽象方法必须用abstract关键字进行修饰。如果一个类含有抽象方法,则称这个类为抽象类,抽象类必须在类前用abstract关键字修饰。因为抽象类中含有无具体实现的方法,所以不能用抽象类创建对象。
2020年2月9日

Spring系列之beanFactory与ApplicationContext

同时也继承了容器的高级功能,如:MessageSource(国际化资源接口)、ResourceLoader(资源加载接口)、ApplicationEventPublisher(应用事件发布接口)等。
2020年2月8日

多线程同步的五种方法

即有synchronized关键字修饰的方法。由于java的每个对象都有一个内置锁,当用此关键字修饰方法时,内置锁会保护整个方法。在调用该方法前,需要获得内置锁,否则就处于阻塞状态。
2020年2月7日

redis应用场景

value是一个Map,这个Map的key是成员的属性名,value是属性值,这样对数据的修改和存取都可以直接通过其内部Map的Key(Redis里称内部Map的key为field),
2020年2月6日

手把手带你剖析 Springboot 启动原理!

@EnableAutoConfiguration会根据类路径中的jar依赖为项目进行自动配置,如:添加了spring-boot-starter-web依赖,会自动添加Tomcat和Spring
2020年2月5日

Java多线程:synchronized关键字和Lock

在性能上来说,如果竞争资源不激烈,两者的性能是差不多的,而当竞争资源非常激烈时(即有大量线程同时竞争),此时Lock的性能要远远优于synchronized。所以说,在具体使用时要根据适当情况选择。
2020年2月4日

Java多线程:多线程基础知识

上面尤其要注意一点,一个线程被唤醒不代表立即获取了对象的锁,只有等调用完notify()或者notifyAll()并退出synchronized块,释放对象锁后,其余线程才可获得锁执行。
2020年2月3日

Kafka基本架构及原理

很多时候,用户不想也不需要立即处理消息。消息队列提供了异步处理机制,允许用户把一个消息放入队列,但并不立即处理它。想向队列中放入多少消息就放多少,然后在需要的时候再去处理它们。二、kafka
2020年2月2日

JVM:基础

本文来源:https://www.cnblogs.com/ITtangtang/p/4103144.html
2020年2月1日

数据仓库:Mysql大量数据快速导出

table1的生产者通过Jdbc获取源数据内容,放入table自带的固定大小的缓存队列,同时table1相应的消费者不断的从缓存读取数据,根据不同的数据类型分别读取出来,并逐条写入相应的txt文件。
2020年1月31日

深入理解Java:类加载机制及反射

这时候进行内存分配的仅包括类变量(被static修饰的变量),而不包括实例变量,实例变量将会在对象实例化时随着对象一起分配在Java堆中;这里所说的初始值“通常情况”是数据类型的零值,假如:
2020年1月30日

深入理解Java:注解

name();//注解的name属性8}Column注解的的RetentionPolicy的属性值是RUTIME,这样注解处理器可以通过反射,获取到该注解的属性值,从而去做一些运行时的逻辑处理
2020年1月30日

Java 如何设计 API 接口,实现统一格式返回?

针对URL路径的restful风格,以及传入参数的公共请求头的要求(如:app_version,api_version,device等),老顾这里就不介绍了,小伙伴们可以自行去了解,也比较简单。
2020年1月21日

记一次神奇的 sql 查询经历,group by 慢查询优化!

说一下app_account字段的分布情况,随机生成了5000个不同的随机数,然后分布到了这500万条数据里,平均来说,每个app_account都会有1000个是重复的值,种类共有5000个。
2020年1月20日

图文:你女朋友也能看懂的 Kubernetes !

容器一切都很好,软件开发人员的生活现在要好很多。那么,为什么我们需要另一项技术,如
2020年1月19日

打开黑盒:从 MySQL 架构设计出发,看它是如何执行一条 SQL 语句的?

这个SQL语句,我们用人脑是直接就可以处理一下,只要懂SQL语法的人,立马大家就知道他是什么意思,但是MySQL自己本身也是一个系统,是一个数据库管理系统,他没法直接理解这些SQL语句!
2020年1月19日

一次900万+数据量的 SQL 查询优化分析【上百倍性能优化】

pool,我们需要关闭innodbbufferpooldumpatshutdown和innodbbufferpoolloadatstartup,这两个选项能够控制数据库关闭时dump出buffer
2020年1月17日

缓存穿透、缓存并发、缓存失效之思路变迁

有时候如果网站并发访问高,一个缓存如果失效,可能出现多个进程同时查询DB,同时设置缓存的情况,如果并发确实很大,这也可能造成DB压力过大,还有缓存频繁更新的问题。
2020年1月16日

花了一个月时间梳理了一下公司的微服务核心架构,原来也不是太难.

以前,开发人员把配置文件放在开发文件里面,这样会有很多隐患。譬如,配置规范不同,无法追溯配置人员。一旦需要大规模改动配置,改动时间会很长,无法追溯配置人员,从而影响整个产品,后果是我们承担不起的。
2020年1月16日

API规范约定

JSON.parseObject(response.data.data,ColorResult.class);14}1516//2.post调用方法17var
2020年1月14日

一文详解微服务架构

Mesh相比于微服务框架的优点在于它不侵入代码,升级和维护更方便。它经常被诟病的则是性能问题。即使回环网络不会产生实际的网络请求,但仍然有内存拷贝的额外成本。另外有一些集中式的流量处理也会影响性能。
2020年1月14日

关于盘点和总结的那点事儿

本月的功能在踉跄中勉强上线了,这个月有实验的味道,有摸索的代价,有分工和衔接上的问题,有技术储备方面的不足,有业务梳理方面的欠缺,也有个人能力和意识上的不足,梳理整个开发流程,目前存在的几大问题:
2020年1月13日

高并发场景下锁的使用技巧

这里举一个非常常见的例子,在高并发情况下余额扣减,或者类似商品库存扣减,也可以是资金账户的余额扣减。扣减操作会发生什么问题呢?很容易可以看到,可能会发生的问题是扣减导致的超卖,也就是扣减成了负数。
2020年1月13日

线程同步手记

两个人要步调一致,并且配合默契,才能顺利的搬运东西。反过来,如果Reader执行了好几次,Writer才执行一次,或者Write执行了好几次,Reader才执行一次,最后都不能很好的保持步调的一致。
2020年1月10日

微服务的时间和成本去哪儿了

拆分的痛点是表关联查询,因为所有的聚合都是服务的聚合,也就是数据库的Join没有了,替换成的是服务间的关联了,所以刘佬干脆弃用MySQL,全部采用MongoDB,充分发挥MongoDB优势。
2020年1月9日

漫谈何时从单体架构迁移到微服务?

如果前期在业务不十分清晰,求的是验证想法,证明产品思路是否可行性,并且业务量不大,仅限于省级范围,建议只要对当前架构稍加改良升级就可以了,这样改动量相对较小,且至少能支撑一定时间段的业务增长。
2020年1月9日

微服务学习导航

学习是一个人的核心竞争力,终生持续学习是别人离不开你的秘诀,如果能分享和教会别人,你的收获可能是双边甚至更多。就技术领域的学习,我还是一个在海边玩耍的小孩,时不时因为捡到一块漂亮的石头就开心不已。
2020年1月8日

假如你是架构师,你要做些什么

在需求分析阶段,主要是通过用例图描述系统的功能与使用场景;对于关键的业务流程,可以通过活动图描述。如果在需求阶段,就提出要和现有的某些子系统整合,可以通过时序图,描述新系统和原来的子系统的调用关系。
2020年1月7日

为什么在做微服务设计的时候需要DDD?

微服务对第2个给出了很好的指导,对第3个也给出了一些建议。但是,对第1个功能纬度只给出来非常有限的指导,就是为什么随着微服务的流行,领域驱动设计(DDD)又被重新重视起来的原因。
2020年1月7日

Java IO模型之NIO模型

NIO可以做到用一个线程来处理多个操作。假设有10000个请求过来,根据实际情况,可以分配50或者100个线程来处理。不想之前的阻塞IO那样,非得10000个线程处理。
2020年1月6日

微服务划分的姿势

我们知道微服务是一种理念,没有确切的定义和边界,好比设计原则,是属于抽象的概念。在定义不明确的情况下谈划分也是一种各说各话,具体问题需要具体分析,所以这篇文章谈到的划分也不是绝对标准,仅供参考。
2020年1月6日

Fork-Join框架

在使用Fork/Join只能使用Fork和Join进行同步操作,如果在使用了其他机制时工作线程就不能进行其他操作了。比如在Fork/Join框架中使用了睡眠,那么在睡眠过程中就不能执行其他操作了。
2020年1月4日

MongoDB 集群构建:分片+副本+选举

'sh.addShard(\"shard1/mongors1n1:27017,mongors1n2:27017,mongors1n3:27017\")'
2020年1月4日

Spring Boot实现动态增删启停定时任务

cronTaskRegistrar.removeCronTask(task);7}添加实现了CommandLineRunner接口的SysJobRunner类,当spring
2020年1月3日

MongoDB - 用户与权限

所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
2020年1月2日

SpringForAll社区,2019年文章精选10篇

如有收获,请帮忙转发,您的鼓励是作者最大的动力,谢谢!
2020年1月1日

一张图帮你记忆,Spring Boot 应用在启动阶段执行代码的几种方式

我们会觉得它可以非常方便将启动逻辑按照指定顺序执行,但如果你这么写,说明多个代码片段是有相互依赖关系的,为了让我们的代码更好维护,我们应该减少这种依赖使用
2019年12月31日

经验:一个秒杀系统的设计思考!

人下单成功的情况,因为下单时不会减库存,所以也就可能出现下单成功数远远超过真正库存数的情况,这尤其会发生在大促的热门商品上。如此一来就会导致很多买家下单成功后却付不了款,购物体验自然是比较差的。
2019年12月30日

高并发系统中的限流应该如何做?

burst=5;上面设置定义了每个IP的请求处理只能限制在每秒1个。并且服务端可以为每个IP缓存5个请求,如果操作了5个请求,请求就会被丢弃。使用ab测试模拟客户端连续访问10次:ab
2019年12月30日

如何设计缓存系统:缓存穿透,缓存击穿,缓存雪崩解决方案分析

缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时被动写的,并且出于容错考虑,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义。
2019年12月27日

你需要的大厂在用的分库分表方案,都在这里!

注:按照orderid或buyerid查询时路由到dbobuyer库中,按照sellerid查询时路由到dbo_seller库中。感觉有点本末倒置!有其他好的办法吗?改变技术栈呢?
2019年12月27日

微服务 2.0 技术栈选型手册

Rocketmqhttps://github.com/apache/rocketmqRabbitmqhttps://github.com/rabbitmq/rabbitmq-serverSohutv
2019年12月27日

拜托,面试别再问我数据库的分库分表!

pt-online-schema-change,使用过程中会创建触发器和影子表,也需要很长的时间。在此操作过程中,都算为风险时间。将数据表拆分,总量减少,有助于降低这个风险。
2019年12月26日

Spring Boot的自动配置、Command-line Runner

首先我们要通过start.spring.io创建一个图书目录管理程序,它会记录出版图书的记录,包括作者、审阅人、出版社等等。我们将这个项目命名为BookPub,具体的操作步骤如下:
2019年12月25日

Spring Boot实战:逐行释义HelloWorld

是不是感觉很开心?一行配置都没有,就可以直接运行一个Web应用。不过开心完以后有没有想过这是怎么实现的呢?接下来我们一行一行解析上面的代码,虽然行数不多,但是还是有很多东西值得我们去学习和理解的。
2019年12月25日

高性能的零拷贝技术原理你真懂吗?

的上下文切换。(实际上这个过程是非常复杂的,为了解释我尽可能保持简单)为了更好的理解这个过程,请查看下图中的上下文切换,图片上部分展示上下文切换过程,下部分展示拷贝操作。
2019年12月24日

SpringRetry重试机制

@Recover注解:当重试达到指定次数时候该注解的方法将被回调发生的异常类型需要和@Recover注解的参数一致@Retryable注解的方法不能有返回值,不然@Recover注解的方法无效
2019年12月24日

Spring Boot 应用 - 静态视频资源实时播放新姿势

org.springframework.web.servlet.resource.ResourceHttpRequestHandler;
2019年12月23日

面试 Spring Boot 再也不怕了,答案都在这里了!

Kafka是一个分布式发布-订阅消息传递系统。它是一个可伸缩的、容错的、发布-订阅消息传递系统,使我们能够构建分布式应用程序。这是一个Apache顶级项目。Kafka适用于离线和在线的消息消费。
2019年12月23日

Java 文件处理 Paths & Files

Files.list(Paths.get(path)).map(Path::toFile).sorted(comparing).collect(Collectors.toList());11
2019年12月23日

技术人面对裁员的终极解决方案-反脆弱

在一个著名的思想实验中,有一只愚蠢的火鸡。火鸡每天享受着农场主提供的食物,安稳度日,并且以为这种好日子没有尽头。直到有一天,农场主像往常一样走来,却出乎意料地抓走了火鸡,要把它杀掉。因为感恩节到了。
2019年12月20日

Spring Boot 默认的指标数据从哪来的?

implementation("org.springframework.boot:spring-boot-starter-actuator")}并在执行器端点中显示指标名称,点击
2019年12月20日

Spring本质系列(2)-AOP

如有收获,请帮忙转发,您的鼓励是作者最大的动力,谢谢!
2019年12月18日

Java 中的类型传递问题解惑

中理解起来有点绕,通过上面的小示例分析了这些问题出现的原因,如果你还有些模糊也可以参考我下方给出的链接学习,有什么疑问可以留言告诉我。
2019年12月18日

Java阻塞队列的简单实现

wait),那么在唤醒的时候就可能出现唤醒丢失。举个例子,在两个方法上有不同的条件会导致阻塞,它们持有一把锁,唤醒时候如果用
2019年12月17日

Spring 的本质系列(1) -- 依赖注入

如有收获,请帮忙转发,您的鼓励是作者最大的动力,谢谢!
2019年12月17日

REST API 的安全基础

所以每次用户尝试访问任何一个服务的时候,系统都应该再次验证是否允许执行这个操作,这意味着需要对身份验证进行额外的调用。就我们的示例中有四个服务而言,在这种情况下,每个用户将有四个额外的调用。
2019年12月16日

java匠人手法-优雅的处理空值

userRepository.selectByPrimaryKey(id);//从数据库中通过id直接获取实体对象3}相信很多人也都会这样写。通过代码的时候得知它的返回值很有可能是null!
2019年12月16日

深入浅出 CAS

大哥就会把锁拿出来其他的线程来抢了(非公平)。锁的这种概念基于一种悲观机制,它总是认为数据会被修改,所以你在操作一部分代码块之前先加一把锁,操作完毕后再释放,这样就安全了。其实在
2019年12月13日

Spring Boot Devtools热部署

true5devtools会监听classpath下的文件变动,并且会立即重启应用(发生在保存时机),因为其采用的虚拟机机制,该项重启是很快的。
2019年12月12日

Spring Boot AOP记录用户操作日志

code:https://github.com/wuyouzhuguli/Spring-Boot-Demos/tree/master/07.Spring-Boot-AOP-Log
2019年12月11日

Spring Boot整合Mongo DB

postman测试样例及源码链接:https://github.com/wuyouzhuguli/SpringAll/tree/master/56.Spring-Boot-MongoDB-crud
2019年12月11日

【图文讲解】你一定能看懂的HTTPS原理剖析!

这里插一个我想了很久的但其实答案很简单的问题:既然证书是公开的,如果要发起中间人攻击,我在官网上下载一份证书作为我的服务器证书,那客户端肯定会认同这个证书是合法的,如何避免这种证书冒用的情况?
2019年12月10日

基础面试,为什么面试官总喜欢问String?

方法修改其属性在String类中包含很多学问,包括你对JVM模型的理解,这也就是为什么面试官为什么喜欢问String,主要考察你的基本功
2019年12月9日

Spring Boot Admin 2.2.0发布,支持最新Spring Boot/Cloud之外,新增中文展示!

如有收获,请帮忙转发,您的鼓励是作者最大的动力,谢谢!
2019年12月7日

你应该知道的 @ConfigurationProperties 注解的使用姿势,这一篇就够了

代码获取,回复公众号「demo」,打开链接查看对应的子文件夹即可参考链接:https://reflectoring.io/spring-boot-configuration-properties/
2019年12月6日

学并发编程,透彻理解这三个核心是关键

分工是设计,同步和互斥是实现,没有好的设计也就没有好的实现,所以在分工阶段,强烈建议大家勾划草图,了解瓶颈所在,这样才会有更好的实现,后续章节的内容,我也会带领大家画草图,分析问题,逐步养成这个习惯
2019年12月5日

什么是读写锁?微服务注册中心是如何进行读写锁优化的?

这个服务注册表中存放了各个微服务注册时发送过来的自己的地址信息,里面保存了每个服务有多少个服务实例,每个服务实例部署在哪台机器上监听哪个端口号,主要是这样的一些信息,如下图所示:
2019年12月4日

读取Excel还用POI?试试这款开源工具

@RestController@RequestMapping("/users")@Slf4jpublic
2019年12月4日

使用 Spring Framework 时常犯的十大错误

ElementType.PARAMETER})@Retention(RetentionPolicy.RUNTIME)@Documented@Constraint(validatedBy
2019年12月3日

用 Spring 的 BeanUtils 前,建议先了解这几个坑!

根据注释,对方的SDK中写好的Request类有一个无法序列化的bug,所以这边重新写了一个Request类,基本属性都是相同的,但是重点是有一个属性是静态内部类,还有两个是list属性
2019年12月2日

Lombok 使用详解,简化Java编程

函数式编程或者说流式的操作越来越流行,应用在大多数语言中,让程序更具更简介,可读性更高,编写更连贯,@Builder就带来了这个功能,生成一系列的builder
2019年12月2日

别在 Java 代码里乱打日志了,这才是打印日志的正确姿势!

userId=[{}],openId=[{}],mobile=[{}]",user.getId(),user.getOpenId(),mobile);
2019年11月29日

Mybatis:颠覆你心中对事务的理解!

可实际上,只有commit、rollback是实际存在的,剩下的create、begin、close、suspend都是虚幻的,是业务层或数据库底层应用语意,而非JDBC事务的真实命令。
2019年11月28日

面试官:你说 HashMap 线程不安全,它为啥不安全呢?

在jdk1.8中对HashMap做了很多优化,这里先分析在jdk1.7中的问题,相信大家都知道在jdk1.7多线程环境下HashMap容易出现死循环,这里我们先用代码来模拟出现死循环的情况:
2019年11月28日

ElasticSearch 亿级数据检索案例实战!

8、关于合并被标记删除的记录,我们设置为0表示在合并的时候一定删除被标记的记录,默认应该是大于10%才删除:"merge.policy.expunge_deletes_allowed":
2019年11月27日

Java 8 Stream Api 中的 peek 操作

函数提供的逻辑去消费流中的每一个元素,同时有可能改变元素内部的一些属性。这里我们要提一下这个
2019年11月26日

【12张手绘图】我搞懂了微服务架构!

但通常在其而言,微服务架构是一种架构模式或者说是一种架构风格,它提倡将单一应用程序划分成一组小的服务,每个服务运行独立的自己的进程中,服务之间互相协调、互相配合,为用户提供最终价值。
2019年11月25日

凌晨两点,IT人的朋友圈!

年薪百万BAT大佬带你剖析你们的系统架构中为什么要引入消息中间件?
2019年11月24日

Java 8 Stream Api 中的新操作

gradeList.stream().map(Grade::getStudents).collect(Collectors.toList());通过上面的一顿操作,我们只能得到每个班的学生集合的集合
2019年11月23日

SonarQube - 中文插件安装

SONARQUBE_JDBC_URL=jdbc:postgresql://db:5432/sonar
2019年11月22日

SonarQube 搭建好了,5分钟Docker搭建Maven私服

http://maven.aliyun.com/nexus/content/groups/public/7
2019年11月21日

无套路,3分钟带你轻松上手SonarQube - 代码质量检测平台

SONARQUBE_JDBC_URL=jdbc:postgresql://db:5432/sonar
2019年11月20日

MariaDB - Emoji 表情字符存储原来这样玩!

jdbc:mysql://localhost:3306/test_db4
2019年11月19日

年薪百万BAT大佬带你剖析你们的系统架构中为什么要引入消息中间件?

但是问题在于没法确认ActiveMQ可以支撑互联网公司的高并发、高负载以及高吞吐的复杂场景,在国内互联网公司落地较少。而且使用较多的是一些传统企业,用ActiveMQ做异步调用和系统解耦。
2019年11月18日

微软宣布加入 OpenJDK,打不过就改变 Java 未来!

的一二事:https://juejin.im/post/5dbaac8cf265da4d365f28a6
2019年11月16日

Macbook Pro 16寸悄然上架 你会不会买呢

我们最为关心的价格方面,九代i7处理器、512G的乞丐版,18999元,跟新款15寸MacBook
2019年11月15日

消息中间件 NATS 集群的构建与使用

1nats://managerIP:300002nats://managerIP:300013nats://managerIP:30002内部【限
2019年11月13日

Cloud Native 世界顶级开源项目

旨在直接集成到第三方软件产品和项目(例如Kubernetes)中,提供围绕容器生命周期的基础功能。它为许多基础容器生命周期流程提供原型,使开发人员可以在更高层次上自由地进行创新。
2019年11月13日

啥?双十一线上出故障了?日志动态级别赶紧修改排查一下

http://127.0.0.1:8080/actuator/loggers/com.anoyi动态修改日志级别
2019年11月11日

Spring Boot 配置 - Consul 配置中心

https://github.com/ChinaSilence/spring-boot-demos/tree/master/05%20-%20config%20with%20consul
2019年11月10日

双十一还在盖楼?少年你应该掌握Docker 部署 Consul了

https://learn.hashicorp.com/consul/security-networking/production-acls
2019年11月10日

SpringBoot正确打日志的姿势

org.springframework.web.filter.OncePerRequestFilter;
2019年11月8日

天天玩微信,Spring Boot 开发私有即时通信系统了解一下

messageBrokerRegistry.setApplicationDestinationPrefixes("/app");18
2019年11月8日

Spring Boot 容器化部署 - Docker

https://github.com/ChinaSilence/spring-boot-demos/tree/master/50%20-%20deploy%20by%20docker
2019年11月7日

Spring Boot 定制 parent 快速构建应用

验证actuator下的端点,访问http://localhost:8080/beans查看整个应用所有bean的依赖关系:
2019年11月7日

SpringBot中教你手把手配置 https

UndertowEmbeddedServletContainerFactory();
2019年11月5日

Spring Boot 日志处理你还在用Logback?

https://logging.apache.org/log4j/2.x/performance.html
2019年11月5日

【双11狂欢的背后】微服务注册中心如何承载大型系统的千万级访问?

首先说下InstanceInfo,其实啊,我们见名知义,这个InstanceInfo就代表了服务实例的具体信息,比如机器的ip地址、hostname以及端口号。
2019年11月4日

Spring Boot 新一代监控你该这么玩

https://github.com/ChinaSilence/spring-boot-demos/tree/master/04%20-%20prometheus%20metrics
2019年11月1日

Spring Boot 配置 - 配置信息加密

URLhttps://github.com/ChinaSilence/spring-boot-demos/tree/master/05%20-%20config%20encrypt
2019年10月31日

Spring Boot 异常处理

能处理异常吗?答:可以的!所以对于局部比较公用的异常可以定义一个父类,抛出异常时可以抛出具体的子类异常,处理时,处理父类异常即可(即只用写一个方法处理一系列类似的异常)
2019年10月31日

并发Bug之源有三,请睁大眼睛看清它们

你(CPU)在看两本书(两个线程),看第一本书很短时间后要去看第二本书,看第二本书很短时间后又回看第一本书,并要精确的记得看到第几行,当初看到了什么(CPU
2019年10月30日

拒绝黑盒应用-Spring Boot 应用可视化监控

@SpringBootApplication@EnablePrometheusEndpoint@EnableSpringBootMetricsCollectorpublic
2019年10月30日

史上最轻松入门之Spring Batch - 轻量级批处理框架实践

org.springframework.batch.item.ItemProcessor;@Log4j2public
2019年10月29日

Spring Cloud Gateway - 快速开始

org.springframework.context.annotation.Configuration;@Configuration@SpringBootApplicationpublic
2019年10月28日

APM工具寻找了一圈,发现SkyWalking才是我的真爱

\-DSW_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:11800
2019年10月25日

Spring Boot 注入外部配置到应用内部的静态变量

resources/META-INF/spring-configuration-metadata.json{
2019年10月24日

Java 使用 UnixSocket 调用 Docker API

"Id":"ae63e8b89a26f01f6b4b2c9a7817c31a1b6196acf560f66586fbc8809ffcd772",
2019年10月23日

将 HTML 转化为 PDF新姿势

org.springframework.stereotype.Component;import
2019年10月23日

使用 Thymeleaf 动态渲染 HTML

com.odianyun.util.sensi.HTMLTemplateUtils;import
2019年10月22日

Service Mesh - gRPC 本地联调远程服务

server-b-serviceDocumentshttp://nginx.org/en/docs/http/ngx_http_grpc_module.html
2019年10月22日

Fastjson致命缺陷

{"code":400,"message":"参数错误","data":{"username":"one","score":99}}JSON
2019年10月22日

spring-boot-starter-grpc 不同序列化方式性能测试及选型

测试代码地址:https://github.com/ChinaSilence/spring-boot-starter-grpc/tree/master/test
2019年10月21日

Spring Boot 2 集成log4j2日志框架

体系结构中的一些固有问题。而且日志处理中我们会用到kafka作为日志管道。而kafka客户端依赖与Logback的兼容不是很完美,你可以选择排除依赖冲突或者使用Log4j2
2019年10月18日

Java面试通关要点汇总集之核心篇参考答案

组件中下游应用监听消息,在满足幂等性的条件下,重新执行业务。下游应用通知可靠消息服务该消息已经成功消费。通过消息状态确认和消息重发两个功能,可以确保上游应用、可靠消息服务和下游应用数据的最终一致性。
2019年10月17日

Java面试通关要点汇总集之框架篇参考答案

Bean的生命周期简单易懂。在一个bean实例被初始化时,需要执行一系列的初始化操作以达到可用的状态。同样的,当一个bean不在被调用时需要进行相关的析构操作,并从bean容器中移除。Spring
2019年10月15日

可见性有序性,Happens-before来搞定

第一感觉这个原则是一个在理想状态下的"废话",并且和上面提到的会出现重排序的情况是矛盾的,注意这里是一个线程中的操作,其实隐含了「as-if-serial」语义:
2019年10月14日

Spring Boot RabbitMQ - 优先级队列

消息接收确认,可选模式:NONE(不确认)、AUTO(自动确认)、MANUAL(手动确认)spring.rabbitmq.listener.simple.acknowledge-mode=AUTO#
2019年10月14日

Spring Security 实战干货:如何保护用户密码

提供的org.springframework.security.crypto.password.PasswordEncoder一些实现,有的已经过时。其中我们注意到一个叫委托密码编码器的实现
2019年10月12日

学好Spring Security 和Apache Shiro你需要具备这些条件

Security被认为非常重,这是不对的。认真学习之后会发现其实也就是那么回事。两种框架都是非常优秀的安全框架,根据实际需要做技术选型。如果你要学习这两种安全框架就必须熟悉一下一些相对专业的概念。
2019年10月11日

java中的数字以及如何判断字符串是不是数字

从以上的第五行开始,数字的表示都是java支持的。从执行结果来看除了二进制,十六进制,分隔符其它都是符合预期的。虽然该方式不够完美,但是我们也能从中学到对应parse方法的一些规则。这才是重点。
2019年10月10日

RSocket——Http协议的替代者

RSocket是一种二进制的点对点通信协议,是一种新的网络通信第七层协议。旨在用于分布式应用程序中。从这个意义上讲,RSocket是HTTP等其他协议的替代方案。它是一种基于Reactive
2019年10月9日

微服务网关除了zuul、spring cloud gateway还有更出色的

网关。继承了OpenResty的高性能、易扩展性等特点。Kong通过简单的增加机器节点,可以很容易的水平扩展。同时功能插件化,可通过插件来扩展其能力。而且在任何基础架构上都可以运行。具有以下特性:
2019年9月30日

Micronaut 微服务中使用 Kafka

原文链接:https://piotrminkowski.wordpress.com/2019/08/06/kafka-in-microservices-with-micronaut/
2019年9月29日

Java Web 面试中关于Spring MVC的必问题,不收藏血亏!

从/user/123提取值123给/user/{id}控制器来获取一个id=123的数据映射关系。需要特别指出的是通过此注解获取的值不会被编码。具体可通过我的文章来获取原因。
2019年9月27日

责任链设计模式讲解

通过处理器集合来定义处理顺序。好处在于可以集中管理处理器,指责单一。非常容易理解,容易实现。缺点是如果新增处理器(Handler)势必影响已有的处理器,只能顺序执行。处理流程是这样的:
2019年9月26日

并发Bug之源有三,请睁大眼睛看清它们

你(CPU)在看两本书(两个线程),看第一本书很短时间后要去看第二本书,看第二本书很短时间后又回看第一本书,并要精确的记得看到第几行,当初看到了什么(CPU
2019年9月25日

简述设计模式原则

其实没有设计模式我们也能完成开发工作。但是为什么需要设计模式呢?让你看起来很牛,没错这个算一个。让你的代码层次感分明,可读性强而且容易维护。让你像我一样有更多的摸鱼划水时间。
2019年9月23日

缓存抽象层Spring cache实战操作

redisCacheConfigurationMap方法是一个以缓存名称为key,其对应的redis配置类为值得键值映射。这个需要在开发中自己进行配置。参考`CacheNameEnum`
2019年9月23日

Java单元测试之JUnit 5快速上手

https://junit.org/junit5/docs/current/user-guide/#overview-getting-started-junit-artifacts
2019年9月20日

高薪必备的一些Spring Boot高级面试题

Spring通过提供一个插件即spring-boot-maven-plugin来解决这个问题,将Web应用程序打包为可执行的JAR。要包含此插件,只需向pom.xml添加一个插件元素:
2019年9月17日

Spring Boot 2.x 中的 Actuator

我们可以使用`@EndpointExtension`或其更具体的`@EndpointWebExtension`、`@EndpointJmxExtension`轻松扩展预定义端点的行为:
2019年9月12日

下一代应用监控指标采集器Prometheus核心介绍

Prometheus的价值在于可靠性,甚至在很恶劣的环境下,你都可以随时访问它和查看系统服务各种指标的统计信息。如果你对统计数据需要百分之百的精确,那么Prometheus不是一个很好的选择。
2019年9月11日

Spring中@Async注解实现“方法”的异步调用

异步调用,通过开启新的线程来执行调用的方法,不影响主线程。异步方法实际的执行交给了Spring的TaskExecutor来完成。
2019年9月10日

学并发编程,透彻理解这三个核心是关键

分工是设计,同步和互斥是实现,没有好的设计也就没有好的实现,所以在分工阶段,强烈建议大家勾划草图,了解瓶颈所在,这样才会有更好的实现,后续章节的内容,我也会带领大家画草图,分析问题,逐步养成这个习惯
2019年9月9日

ArrayList 的全面突击

ensureExplicitCapacity(calculateCapacity(elementData,minCapacity));}其内部仍有两个方法调用,首先看下比较简单的
2019年9月6日

java必学核心知识总结——注解

被该注解修饰的注解有继承性。这里要注意一些要点首先这种继承性体现的类之间而不是接口之间,而且注解必须是对JVM可见。也就是@Retention为RetentionPolicy.RUNTIME
2019年9月5日

简述设计模式原则

其实没有设计模式我们也能完成开发工作。但是为什么需要设计模式呢?让你看起来很牛,没错这个算一个。让你的代码层次感分明,可读性强而且容易维护。让你像我一样有更多的摸鱼划水时间。
2019年9月4日

统一异常处理这样剖析,安否?

解剖这个过程是相当纠结的,为了更好的说(yin)明(wei)问(wo)题(lan),我要说重中之重了,真心希望看该文章的童鞋自己去案发现场发现线索还是在
2019年9月3日

掌握 Maven 私服

后台上手动上传,执行上传操作必须要对于的上传权限才可以,一般都是管理员账号进行操作,选择仓库后进去上传页面,指定本地需要上传的项目,然后自定义完坐标信息保存即可。
2019年8月30日

聊一聊Java字符串的不可变

document.getElementById('js_content').addEventListener("selectstart",function(e){
2019年8月29日

每天用SpringBoot,还不懂RESTful API返回统一数据格式是怎么实现的?

userVoList.add(UserVo.builder().id(1L).name("日拱一兵").age(18).build());
2019年8月28日

Java 8 Time Api 使用指南-珍藏限量版

LocalTime.parse("06:30").getHour();同LocalDate一样检查特定时间是否在另一特定时间之前或之后。下面的代码示例比较结果为true的两个LocalTime:
2019年8月26日

老司机教你通过Spring来读取文件的各种姿势

完美无暇!断言全部正确!不知道能不能读取图片。我想也是可以的,这个留给你自己发掘。但是就这么结束了吗?玩一个刺激点的。为什么不直接解析出来并注入对象呢?SpEL(Spring
2019年8月23日

Spring中的@Qualifier注解你会用吗

使用@Autowired注解是Spring依赖注入的绝好方法。但是有些场景下仅仅靠这个注解不足以让Spring知道到底要注入哪个bean。默认情况下,@Autowired按类型装配Spring
2019年8月22日

最详细的自定义Spring Boot Starter开发教程

来自动装配这些参数。自动装配的机制基于@ConfigurationProperties注解,请注意一定要显式声明你配置的前缀标识(prefix)。我们的sms-spring-boot会作如下配置:
2019年8月20日

干货 | Elasticsearch、Kibana数据导出实战

~/export.csv4、使用效果:官方最新更新支持5.X版本,实际验证6.X版本也可以使用,导出效率高。5、推荐指数:五星,Elasticsearch导出CSV首选方案。4.2
2019年8月19日

ELK 实时日志分析平台环境搭建

http://docs.oracle.com/javase/8/docs/technotes/guides/security/permissions.html
2019年8月16日

Apache Flink 是如何管理好内存的?

包含自己的自定义序列化框架,以便控制数据的二进制表示。这一点很重要,因为对二进制数据进行操作需要对序列化布局有准确的了解。此外,根据在二进制数据上执行的操作配置序列化布局可以显著提升性能。Flink
2019年8月15日

JVM面试问题系列:7种JVM垃圾收集器特点,优劣势、及使用场景!

收集器以多线程,采用复制算法进行垃圾收集工作,收集完之后,用户线程继续开始执行;在老年代,当用户线程都执行到安全点时,所有线程暂停执行,Parallel
2019年8月14日

JVM面试问题系列:JVM 配置常用参数和常用 GC 调优策略

gc。因此,对于大对象,可以设置直接进入老年代(当然短命的大对象对于垃圾回收老说简直就是噩梦)。-XX:PretenureSizeThreshold
2019年8月12日

干货 |《从Lucene到Elasticsearch全文检索实战》拆解实践

version_type=external的时候是外部值控制。在使用外部版本类型时,系统会检查传递给索引请求的版本号是否大于当前存储的文档的版本,如果为true,则文档将被索引并使用新的版本号。
2019年8月9日

Elasticsearch实战 | 必要的时候,还得空间换时间!

方案一优点:节省存储空间,只存储关联文章id,数据没有重复存储。方案一缺点:检索、聚合慢,性能不能达标。方案一后续的所有操作,都需要先遍历检索这一堆IDs,然后再进行检索、聚合分析操作。
2019年8月8日

Elasticsearch索引增量统计及定时邮件实现

Stack(Elasticsearch/Logstash/Kibana/Beats)!
2019年8月7日

使用Arthas 获取Spring ApplicationContext还原问题现场

org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter
2019年8月6日

如何优雅关闭 Spring Boot 应用

Applications:https://blog.marcosbarbero.com/graceful-shutdown-spring-boot-apps/
2019年8月5日

SpringBoot RabbitMQ 整合使用

Mac,如果没安装过的请看我上一篇文章:http://www.54tianzhisheng.cn/2018/01/25/Docker-install/
2019年8月1日

SpringBoot Kafka 整合使用

spring.kafka.consumer.value-deserializer=org.apache.kafka.common.serialization.StringDeserializer
2019年7月31日

SpringBoot Admin 使用指南

http://codecentric.github.io/spring-boot-admin/1.5.6/#spring-boot-admin-client
2019年7月30日

使用 Spring Framework 时常犯的十大错误

虽然理解特定库的内部结构及其实现,在很大程度上是好的并且很有必要的(也可以是一个很好的学习过程),但作为软件工程师,不断地处理相同的底层实现细节对个人的开发生涯是有害的。像
2019年7月29日

Spring Boot 面试的十个问题

提供了许多自动配置特性,帮助开发人员快速开发产品组件。但是,如果您考虑调试和如何调试,如果出了什么问题,我们总是需要分析日志并挖掘应用程序的数据流,以检查发生了什么。因此,Spring
2019年7月26日

为什么选择 Spring 作为 Java 框架?

Batch:提供轻量级框架,用于为数据归档等企业系统开发批处理应用程序。对调度、重启、跳过、收集指标和日志记录有直观的支持。此外,还支持通过优化和分区对大容量作业进行扩展。
2019年7月25日

SpringBoot RocketMQ 整合使用和监控

1.http://www.ymq.io/2018/02/02/spring-boot-rocketmq-example/#%E6%96%B0%E5%8A%A0%E9%A1%B9%E7%9B%AE
2019年7月23日

《深入理解 Java 内存模型》读书笔记

这里的关键是,由于写缓冲区仅对自己的处理器可见,它会导致处理器执行内存操作的顺序可能会与内存实际的操作执行顺序不一致。由于现代的处理器都会使用写缓冲区,因此现代的处理器都会允许对写-读操作重排序。
2019年7月22日

面试-基础篇

什么是线程池,你在项目中使用过哪些?线程池的几种方式要记清楚,底层使用的都是同一个构造方法,要清楚的知道每个参数的含义,线程池大小的优化,从io密集型和计算密集型方面去回答
2019年7月19日

看透 Spring MVC 源代码分析与实践 —— 网站基础知识

http://www.54tianzhisheng.cn/2017/03/28/Java%20NIO%20%E7%B3%BB%E5%88%97%E6%95%99%E7%A8%8B/
2019年7月18日

Spring Boot 2.0 迁移指南

spring-boot-properties-migrator4注意:完成迁移后,请确保从项目的依赖关系中删除此模块。
2019年7月17日

干货 | Debezium实现Mysql到Elasticsearch高效实时同步

1/home/confluent-5.1.0/etc/kafka-connect-elasticsearch/quickstart-elasticsearch.properties
2019年7月16日

回调“地狱”与反应模式

asyncHttpClient.prepareGet("http://localhost:$localServerPort/cities/$cityId")
2019年7月15日

MAT入门到精通(一)

MAT的官网在:https://www.eclipse.org/mat/,可以看下它的介绍——MAT是一款高性能、具备丰富功能的Java堆内存分析工具,可以用来排查内存泄漏和内存浪费的问题。
2019年7月12日

SpringBoot使用Docker快速部署项目

92a0da91ea19262b837ac75e3d83a4be2d7b0f6edee5ff70c69a98bac4ff74c7ed6d3e70282ee3root@izz30yg92yl9i3z
2019年7月12日

Spring Boot 最流行的 16 条实践解读!

https://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-auto-configuration.html。
2019年7月11日

你真的了解lambda吗?(纠错篇)

s->s+"efg"就是这个operator对象,那么最终list中的值就变成了["abcefg"],由此我们可以知道它的作用就是对输入的值再加工,并返回同类型的值,怎么用就需要你自己扩展发挥了。
2019年7月10日

[译] Kubernetes 儿童插图指南

容器提供了一个独立的环境,应用程序可以在这个环境中运行。但是这些孤立的容器常常需要被管理并与外面的世界连接。对于孤立的容器而言,共享文件系统、网络通信、调度、负载均衡和分发都是要面对的挑战。
2019年7月9日

JSON Web Token - 在Web应用间安全地传递信息

所以,如果有人对头部以及载荷的内容解码之后进行修改,再进行编码的话,那么新的头部和载荷的签名和之前的签名就将是不一样的。而且,如果不知道服务器加密的时候用的密钥的话,得出来的签名也一定会是不一样的。
2019年7月8日

一致性hash算法 - consistent hashing

单调性是指如果已经有一些内容通过哈希分派到了相应的缓冲中,又有新的缓冲加入到系统中。哈希的结果应能够保证原有已分配的内容可以被映射到新的缓冲中去,而不会被映射到旧的缓冲集合中的其他缓冲区。
2019年7月6日

Service Mesh:什么是Sidecar模式,少年你了解不?

Cloud或者微服务的童鞋应该知道,在云环境下,技术栈可以是多种多样的。那么如何能够将这些异构的服务组件串联起来,成为了服务治理的一个重大课题。而Sidecar模式为服务治理,提供了一种解决方案。
2019年7月5日

一次服务器CPU占用率高的定位分析

如上图所示我们可以看出id为8863的线程cpu占用率最高。好,我们现在只要能找到他偷走的cpu就好了,虽然这小子嘴巴严,但是我们有一套完善的审问流程,不怕他不招。首先出马的是strace
2019年7月4日

InnoDB一棵B+树可以存放多少行数据?

因为B树不管叶子节点还是非叶子节点,都会保存数据,这样导致在非叶子节点中能保存的指针数量变少(有些资料也称为扇出),指针少的情况下要保存大量数据,只能增加树的高度,导致IO操作变多,查询性能变低;
2019年7月3日

初探性能优化——2个月到4小时的性能提升

接收上一环的数据:属于Interactive接口的receive方法的实现,基于之前的设计,即是对象中有一个ConcurrentLinkedQueue类型的属性,用来接收上一环传来的数据。
2019年7月2日

10个你值得收藏的牛逼开源后台控制面板

开发中几乎的平台都需要一个后台管理,但是从零开发一套后台控制面板并不容易,幸运的是有很多开源免费的后台控制面板可以给开发者使用,那么有哪些优秀的开源免费的控制面板呢?我在
2019年6月28日

如何模拟超过 5 万的并发用户

为了完成诸如“添加到购物车”,“登录”还有其它这样的请求,你也许要使用正则表达式,JSON路径提取器,XPath提取器,来提取诸如Token字符串,表单构建ID还有其它要素
2019年6月27日

干货 | BAT等一线大厂 Elasticsearch面试题解读

面试官:想了解ES的底层原理,不再只关注业务层面了。解答:这里的索引文档应该理解为文档写入ES,创建索引的过程。文档写入包含:单文档写入和批量bulk写入,这里只解释一下:单文档写入流程。
2019年6月26日

一次诡异的线上数据库的死锁问题排查过程

在同一个事务中,避免出现多条update语句修改同一条记录。3复制代码总结与思考在死锁发生之后的一周内,我几乎每天都会抽空研究一会,问题早早的就定位到了,修改方案也有了,但是其中原理一直没搞清楚。
2019年6月25日

Spring Bean的加载深度解析

beanInstance;50}1、第一部分:确保该bean的class是真实存在的,也就是该bean是可以classload可以找到加载的,若不存在则放入beanDefination中
2019年6月24日

Scala语言概述

函数式在scala中,一切函数都是值,函数也可作为另一个函数的参数,因此scala是一门函数式语言。这一点又和python类似。因此我们说scala集成了java和python的特性
2019年6月21日

Spring源码(七)-IOC中的那些设计模式我们来一起捋捋

接上一篇讲下spring-ioc中的设计模式。Spring作为一款及其优秀的框架,其代码的编写非常优秀,里面采用了大量的设计模式。下面我们一点点分析。先简单说下常见的设计模式
2019年6月20日

给大家推荐8个SpringBoot精选项目

如今2018年已过大半,虽然没有大理想抱负,但是却有自己的小计划。下面是这一年来,自己利用闲暇周末时间搞得几个开源项目,可能群里的小伙伴很多都接触过,但是这里还是要分享给大家,与君共勉,一起学习。
2019年6月19日

自己动手扩展分布式调用链

对于分布式调用链来说,目前市面上有很多开源的工具,比如:pinpoint,Cat以及sky-walking等等,将这些工具与我们扩展的调用链日志结合起来将起到更好的效果。
2019年6月14日

面试官问Spring中Bean如何完成加载,你准备怎么回答之上集?

2.applyInitializers(context)该方法获取到了我们或spring通过SpringApplication.setInitializers(xxx)设置的应用上下文初始化器集合。
2019年6月10日

Spring源码(三)-Context的创建核心逻辑(下)

registry.registerBeanDefinition(beanName,definition)调用GenericApplicationContext中的方法
2019年6月7日

Springboot与Elasticsearch完美结合

此处id属性必须有,或者改为别的如userId属性,必须添加@Id注解,并且必须为String类型,这是因为后面UserRepository需要泛型为第一个参数为bean的类型,第二个参数为id
2019年6月6日

人人都是 API 设计者:我对 RESTful API、GraphQL、RPC API 的思考

设计最佳实践的思考》一文后受益良多,前两天并转载了这篇文章也引发了广大读者的兴趣,我觉得我应该把我自己的思考整理成文与大家一起分享与碰撞。其二,我觉得我针对这个话题,可以半个小时之内搞定,争取在
2019年6月5日

分布式系统中的CAP理论是什么?

C:要高可用并允许分区,则需放弃一致性。一旦分区发生,节点之间可能会失去联系,为了高可用,每个节点只能用本地数据提供服务,而这样会导致全局数据的不一致性。现在众多的NoSQL都属于此类。
2019年6月4日

Spring源码之Context的创建核心逻辑(上)

try代码块中是我们最核心的功能,代码中也添加了一部分的注释。我们先看context的创建过程即进入到createApplicationContext()方法。
2019年6月3日

程序员高效工具

墨家口袋:有小程序和微信公众号,也有pc端,可以将想收藏的内容发送给公众号即可在pc端和小程序同时看到,支持分类,pc端有地址错误的,请参考我发的地址。
2019年6月1日

Spring源码(一)-Spring整体架构和环境搭建

org.springframework.boot:spring-boot:1.5.4.RELEASE相关以及core,context,beans等相关的包
2019年5月27日

Kafka 安装及快速入门

Kafka是分布式发布-订阅消息系统。它最初由LinkedIn公司开发,之后成为Apache项目的一部分。Kafka是一种快速、可扩展的、设计内在就是分布式的,分区的和可复制的提交日志服务。
2019年5月24日

教你在SpringBoot项目中优雅的使用 Mybatis

Boot Springboot整合mybatis主要有两种方案,一种是使用注解解决,另一种是简化后的传统方式。当然两种方式首先都得添加pom依赖,这是必不可少的,下面正式进入
2019年5月23日

SpringBoot 中 mongo多数据源配置新姿势

注意此处@Qualifier(“basicMongoTemplate”)中即为相应的具体实现类。
2019年5月22日

SpringBoot集成Redis集群就这么Easy

上一篇写了springboot与mongo的整合,那么这次就写一下springboot与redis的结合,这里使用的是redis集群模式(主从),主从环境的搭建,请参考redis集群搭建
2019年5月21日

一起了解下Java多线程基础

http://blog.csdn.net/lemon_tree12138/article/details/51062421
2019年5月20日

Spring Cloud Gateway 核心组件构建原理

技术栈的热潮中,网关已经成了不可或缺的内容。开发者在选择用来解决特定领域内问题的框架时,多了解几款相关同类产品可加大选择余地。除了
2019年5月17日

Java 开发者需要了解的18个枚举要点

原文链接:https://dzone.com/articles/18-points-every-java-developer-should-know-about-e
2019年5月16日

spring之你所不知道的@Configuration

"com.owenxh.springadvancedexamples.configure.CarConfiguration$$EnhancerBySpringCGLIB$$7c72aec8",
2019年5月10日

Sentinel Dashboard中修改规则优雅同步到Apollo

第四步:创建Apollo的配置类,定义Apollo的portal访问地址以及第三方应用访问的授权Token(通过Apollo管理员账户登录,在“开放平台授权管理”功能中创建),具体代码如下:
2019年5月9日

Consul 配置中心实践

https://github.com/ChinaSilence/spring-boot-demos/tree/master/05%20-%20config%20with%20consul
2019年5月7日

项目中如何保证服务的幂等?

UNIQUE(user_id,sign_id,sign_time)。有个小问题,数据量大的时候,每条记录都会有对应的唯一索引,比较耗资源。那么这样就行了吗?
2019年5月6日

Sentinel使用Nacos存储规则还可以这样玩?

org.springframework.cloud.alibaba.sentinel.datasource.config.DataSourcePropertiesConfiguration和
2019年5月3日

你知道如何使用阿里Sentinel实现接口限流吗?

Sentinel的功能和细节比较多,一篇内容很难介绍完整。所以下面我会分多篇来一一介绍Sentinel的重要功能。本文就先从限流入手,说说如何把Sentinel整合到Spring
2019年5月2日

Spring Cloud Alibaba是大坑么?

第二点:作者建议“Nacos最好的方式还是独立发布,然后维护一个starter”。这确实是一个很好的建议,但是这点我就奇怪了,作者到底有没有看过Nacos?Nacos目前就是独立发布的,Spring
2019年4月30日

SpringBoot使用Graylog日志收集

这里仅以日志收集为例,简单说一下二者之间的选择,我个人的建议就是取决于现有技术栈,比如现在就有现成的Mongodb,那么选择Graylog可以节省不少成本,ELK类似,不要盲目的追求技术而选择。
2019年4月29日

Spring Data JPA存储库Populators

实体类名称应在每个JSON对象的_class字段中给出。其余的键映射到Fruit实体的列。现在,我们将在pom.xml中添加jackson-databind依赖项:
2019年4月26日

Spring 安全框架Kerberos 集成

所以,用户只需要一次登录就可以了。但也有一个安全好处:在这样的环境中,用户的密码永远不会通过网络发送。相反,Kerberos使用它作为生成另一个密钥的因素,该密钥将用于消息加密和解密。
2019年4月25日

Java中的变量隐藏和阴影

SubClass,在这篇文章中我已经讨论过为什么变量不遵循覆盖,为什么变量隐藏设计不同于方法覆盖以及为什么实例变量是从引用类型而不是对象中选择的?
2019年4月24日

JVM中的压缩OOP

这种可能性能下降的主要原因是64位对象引用。64位引用比32位引用的多占用两倍空间,因此这会导致更多的内存消耗和更频繁的GC周期。专用于GC周期的时间越多,应用程序线程的CPU执行切片就越少。
2019年4月23日

Spring Boot RabbitMQ 四种交换器

开头,参考官方文档:https://www.rabbitmq.com/tutorials/amqp-concepts.html#exchange-headers
2019年4月22日

Spring Cloud Kubernetes指南

Kubernetes功能区使用此功能在服务的不同端点之间进行负载平衡。我们可以通过在客户端应用程序中添加spring-cloud-starter-kubernetes依赖项来轻松使用Service
2019年4月19日

Spring Boot的EnvironmentPostProcessor

-Dstart-class=com.baeldung.environmentpostprocessor.PriceCalculationApplication
2019年4月18日

JDK10 之前仍有缺陷的Java Stream API

9中,上面的代码片段永远等待着内部无限流的计算。一个从无限序列中取出单个元素的简单操作,期望时间复杂度为O(1)——只要我们不处理内部的无限流,这就是它的工作方式。Stream#flatMap:
2019年4月17日

Netflix时代之后Spring Cloud微服务的未来

Config支持多个源存储库,包括Git,JDBC,Vault或简单文件。您可以在我之前的帖子中找到许多使用此项目为您的微服务提供分布式配置的示例。今天,我不打算谈论它。我们将讨论另一种解决方案
2019年4月16日

Java 中的中介模式(Mediator Pattern)

此外,通过使用中介对象,我们将通信逻辑提取到单个组件,这样,我们遵循了单一职责原则。此外,我们可以引入新的中介而不需要更改系统的其余部分。因此,我们遵循开闭原则(译者注:对扩展开放,对修改封闭)。
2019年4月15日

如何在同一台机器上安装多个版本的 Java

原文链接:https://dzone.com/articles/how-to-install-multiple-versions-of-java-on-the-sa
2019年4月12日

Spring Boot整合Elasticsearch

Elasticsearch是一个全文搜索引擎,专门用于处理大型数据集。根据描述,自然而然使用它来存储和搜索应用程序日志。与Logstash和Kibana一起,它是强大的解决方案Elastic
2019年4月11日

有关 Spring 异步的有效建议:第 1 部分

任何与业务逻辑没有直接关联的逻辑片段(横切关注点)或在调用者上下文中不需要响应来确定下一个流程的逻辑或任何业务计算都是异步化的理想候选者。另外,在集成到分布式系统时,异步技术正在被用于让他们解耦。
2019年4月9日

Spring Boot Reactor Netty如何快速配置?

Netty服务器时,这两种方法为我们提供了很大的灵活性。 此外,我们还可以从Netty框架访问ServerBootstrap类并在那里进行自定义:
2019年4月8日

Postgres、R2DBC、Spring Data JDBC和Spring WebFlux的响应式API简介

Data(通过CrudRepository接口)访问关系数据库,而不将JPA库包含到应用程序依赖项中。当然,JPA仍然是用于Java应用程序的主要持久性API。
2019年4月4日

新时代的开发姿势

油管:https://www.youtube.com/watch?v=3LdXgeymI-E&list=PLfQ4vem9sCASf5iePYCIOEqycobbWSVic&index=4
2019年4月3日

Spring Boot WebFlux + Server-sent事件示例

原文链接:https://www.mkyong.com/spring-boot/spring-boot-webflux-server-sent-events-example/
2019年3月29日

Spring Boot with Hibernate

我们可以使用H2控制台检查数据库是否已启动并运行,也可以使用用户友好的GUI进行数据输入。让我们继续并在application.properites中启用它:
2019年3月28日

Redis在微服务架构中的应用

TripPublisher使用RedisTemplate将消息发送到的话题。在发送之前,使用将每个消息从对象转换为JSON字符串Jackson2JsonRedisSerializer。
2019年3月27日

如何(不)在Java 9+中使用Reactive Streams

Subscriber:连接Publisher,通过onSubscribe接收确认,然后通过onNext接收数据,通过onError和onComplete回调和返回其他信号
2019年3月26日

Java中的控制(耦合)反转

真的,为什么我们有方法签名?这是因为线程堆栈。我们需要将内存加载到线程堆栈中,并且方法签名遵循计算机的行为。但是,在现实世界中,对象之间行为的建模不提供线程堆栈。对象都是通过很小的接触点松耦合
2019年3月25日

Spring Data Redis 简介

原文链接:https://piotrminkowski.wordpress.com/2019/03/05/introduction-to-spring-data-redis/
2019年3月22日

Nacos如何进行集群部署

注意:这里的例子仅用于本地学习测试使用,实际生产环境必须部署在不同的节点上,才能起到高可用的效果。另外,Nacos的集群需要3个或3个以上的节点,并且确保这三个节点之间是可以互相访问的。
2019年3月21日

一起学习Nacos的数据持久化

第三步:修改conf/application.properties文件,增加支持MySQL数据源配置,添加(目前只支持mysql)数据源的url、用户名和密码。配置样例如下:
2019年3月20日

JDBC ResultSet指南

在本节中,我们将了解如何检索关于ResultSet中的列属性和类型的信息。 首先,让我们在ResultSet上使用getMetaData()方法来获取ResultSetMetaData:
2019年3月19日

Nacos配置的多文件加载与共享配置怎么玩?

对于Nacos作为配置中心的使用,通过之前的几篇博文,我们已经介绍了如何在Nacos中创建配置内容、Nacos配置内容与Spring应用配置之间的对应关系以及实战中多环境下的配置管理方案。
2019年3月18日

泥瓦匠:秒杀架构设计实践思路(一)

一提到秒杀,都会想到高性能、高并发、高可用、大流量...。在电商体系中,交易系统占据了环节中的半壁江山。比如里面特别迷人的秒杀系统,那秒杀涉及到什么架构设计?会涉及到什么业务?
2019年3月14日

使用 Spring Data JPA 进行分页和排序

employeeRepository.findAll(Sort.by("fistName").ascending().and(Sort.by("lastName").descending());
2019年3月12日

Spring Boot:一件艺术品

原文链接:https://dzone.com/articles/spring-boot-a-work-of-art
2019年3月11日

SpringBoot使用prometheus监控

配置文件中加入配置,这里就只进行一些简单配置,management.metrics.tags.application属性是本文配合Grafana的Dashboard设置的,如下所示:
2019年3月8日

Nacos配置的多环境管理

alibaba-nacos-config-client应用,定义了DEV和TEST的两个独立的环境配置。我们可以在里面定义不同的内容值,以便后续验证是否真实加载到了正确的配置。
2019年3月7日

Java中的适配器模式

考虑一种情况,其中有一款在美国开发的应用程序,以每小时英里数(MPH)返回豪华车的最高速度。现在我们需要为英国的客户使用相同的应用程序,这些应用程序需要相同的结果,但以公里/小时(km
2019年3月3日

Spring Boot RabbitMQ 优先级队列

BindingBuilder.bind(queue).to(exchange).with(ROUTING_KEY);
2019年3月1日

在Spring Boot中格式化JSON日期

注释是格式化特定日期字段的绝佳方法。 但是,我们只应在需要字段的特定格式时使用它。如果我们想要在我们的应用程序中使用所有日期的通用格式,那么如何实现这一目标的方式更好,我们稍后会看到。
2019年2月28日

如何编写自己的Spring Boot Rest服务

classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
2019年2月27日

扩展Spring Cloud Feign 实现自动降级

PigxFeignFallbackFactory.INSTANCE.create(target.type(),
2019年2月25日

Nacos配置的加载规则详解

ID中的properties:对应客户端的配置spring.cloud.nacos.config.file-extension,默认值为properties
2019年2月21日

Spring Cloud Alibaba基础教程:使用Nacos作为配置中心

注意:这里必须使用bootstrap.properties。同时,spring.application.name值必须与上一阶段Nacos中创建的配置Data
2019年2月20日

Spring Cloud Alibaba基础教程:支持的几种服务消费方式

在之前的例子中,已经使用过RestTemplate来向服务的某个具体实例发起HTTP请求,但是具体的请求路径是通过拼接完成的,对于开发体验并不好。但是,实际上,在Spring
2019年2月19日

了解一下Spring中用了哪些设计模式?这样回答面试官才稳

spring中的BeanFactory就是简单工厂模式的体现,根据传入一个唯一的标识来获得bean对象,但是否是在传入参数后创建还是传入参数前创建这个要根据具体情况来定。如下配置,就是在
2019年2月18日

5种运行Spring Boot应用的方法

http://www.javaguides.net/2018/09/installing-spring-boot-with-maven-and-gradle.html
2019年2月15日

Oracle JDK和 OpenJDK 之间的区别

Kit)是Java平台编程中使用的软件开发环境。它包含一个完整的Java运行时环境,即所谓的私有运行时。该名称来自于它包含的工具多于独立的JRE以及开发Java应用程序所需的其他组件。
2019年2月14日

Spring Cloud生态的配置服务器最全对比贴

Consul也可以作为一个选择,但国内用Consul做配置管理的公司还没发现,并且Consul是Go语言编写的,如果选用,得有Hold住它的能力——尽管Consul很稳定。
2019年2月13日

Spring Cloud OAuth2 资源服务器CheckToken 源码解析

Cloud、oAuth2.0开发基于Vue前后分离的开发平台,支持账号、短信、SSO等多种登录,提供配套视频开发教程。https://gitee.com/log4j/pig
2019年2月12日

使用Oauth2实现微服务安全性

最后一步是使用访问令牌调用帐户端点。我们不得不将其作为承载令牌放入Authorization标头中。在示例应用程序中,安全操作的日志记录级别设置为TRACE,因此您可以轻松找出问题发生时的情况。
2019年2月11日

使用Spring Boot Actuator将指标导出到InfluxDB和Prometheus

SpringBoot1.5使用的版本相比,它实际上是一个很大的简化。您可以通过阅读我之前的一篇文章使用Grafana和InfluxDB自定义指标可视化来了解自己有多少。我在那里描述了如何使用
2019年1月24日

Spring Boot微服务中Chaos Monkey的应用

原文链接:https://piotrminkowski.wordpress.com/2018/05/23/chaos-monkey-for-spring-boot-microservices/
2019年1月23日

Spring Cloud Alibaba基础教程:使用Nacos实现服务注册与发现

LoadBalancerClient接口在获取服务实例的时候,已经实现了对服务提供方实例的负载均衡。但是很明显,这样的实现还是比较繁琐,预告下后面的几篇,关于服务消费的几种不同姿势。
2019年1月21日

HashMap和ConcurrentHashMap 相关理解

没有对它做任何的同步操作,所以并发会出问题,甚至出现死循环导致系统不可用。所以接下来就专门研究一下ConcurrentHashMapConcurrentHashMap
2019年1月18日

Small Spring系列一:BeanFactory(一)

github:https://github.com/longfeizheng/small-spring/tree/20190914_BeanFactory_v1
2019年1月16日

测试微服务:工具和框架

.willReturn(ResponseCreators.success(HttpBodyConverter.jsonWithSingleQuotes("{'id':1,'name':'David
2019年1月15日

何时(不)使用Java抽象类

虽然本文从Java的角度介绍了该主题,但它也与大多数其他面向对象的语言相关,即使那些没有抽象类概念的语言也是如此。为此,让我们快速定义抽象类。如果您已经知道抽象类是什么,请跳过以下部分。
2019年1月14日

使用Spring Cloud Netflix Eureka进行安全发现

好吧,Eureka仪表板有时是一个有用的工具,所以让我们将客户端的密钥库导入我们的Web浏览器以便能够访问它。我们必须将客户端的密钥库从JKS转换为PKCS12格式。这是执行上述操作的命令
2019年1月11日

如何使用 Spring Config Server

spring.cloud.config.server.git.uri=https://github.com/chuchip/servercloudconfig.git
2019年1月10日

使用Kubernetes和Spring Boot进行自我修复的应用程序

https://www.baeldung.com/spring-debugging-reactive-streams
2019年1月8日

微服务架构简介(单一架构VS微服务架构)

1.灵活性:微服务体系结构非常灵活。不同的微服务可以用不同的技术开发。由于微服务更小,代码基础就更少了,所以升级技术堆栈版本并不是那么困难。而且,我们可以毫无困难地逐步采用新技术。
2019年1月7日

Java局部变量类型推断(Var类型)的26条细则

添加进来。作为100%编译特征,它不会影响字节码,运行时或者性能。在编译时,编译器会检查赋值语句右侧代码,从而推断出具体类型。它查看声明的右侧,如果这是一个初始化语句,它会用那个类型取代
2019年1月3日

应用程序之Kubernetes和Spring Boot自我修复

考虑到Spring有许多HealthIndicators可以使用,应用程序依赖于Kubernetes的探测器的返回状态就像在我们的pom.xml中添加Actuator依赖一样简单:
2019年1月2日

在Spring 5中调试Reactive Streams

o.s.s.s.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54)
2018年12月29日

SpringBoot WebFlux 入门案例

System.out.println(exchangeResult.getResponseBody().getUsername());
2018年11月29日

在SpringBoot中优雅的使用Spring Security OAuth 2

secret?怎么给他们做区分做限制?难道继续硬编码的加?特别是在现在非常流行的微服务上,我一个服务很有可能对应着很多个应用。所以我在这里给大家推荐一个我个人认为比较优雅的解决方案
2018年11月26日

我最喜爱的 Cloud Studio 插件评选大赛

插件评选大赛】(https://studio.qcloud.coding.net/campaign/favorite-plugins/index?utm_source=zhaiyongchao
2018年11月23日

重温Java中的模板方法设计模式

原文链接:https://dzone.com/articles/revisiting-the-template-method-design-pattern-in-j
2018年11月22日

用Spring构建企业Java应用程序的方法

Microprofile来说,都是光明的。后者刚刚接近2.0版本,提供了大量新的规范,这些规范旨在满足微服务体系结构的需求。目睹这些转变真是太棒了。项目的完整源代码可以在GitHub上找到。
2018年11月21日

持久化DDD聚合

空构造函数要求强制value对象属性不再是final,这打破了我们最初设计的一个重要方面。说实话,Hibernate可以使用私有的no-args构造函数,这稍微减轻了一些问题,但它还远远不够完美。
2018年11月20日

抽象工厂设计模式

此模式提供了一个间接级别,它抽象相关或依赖对象族群的创建,而无需直接指定其具体类。“工厂”对象负责为整个平台族群提供创造服务。客户端使用工厂模式创建平台对象,但从不直接创建他们。
2018年11月19日

Spring Cloud Netflix Zuul中的速率限制

X-RateLimit-Remaining-rate-limit-application_serviceAdvanced_127.0.0.1:
2018年11月15日

SpringBoot全局异常与数据校验

工具,很容易的搭建一个SpringBoot项目,要引入的maven依赖如下:很简单,除了加入web功能还加入了我们需要用到的JSR-303校验框架。
2018年11月14日

15个Spring的核心注释示例

注释是一个方法级注释,并应用于bean的setter方法。此注释仅指示必须将setter方法配置为在配置时使用值依赖注入。例如,对setter方法的
2018年11月13日

线程池原理剖析

大部分任务执行时间比较短,而且频繁,使用该线程池即可复用线程又可在突增并发数时创建新的线程从而达到最大并发效率(并发数猛增的时候可能会出现意外,所以如果有这种场景扩展下线程池做个最大限制最为合理)
2018年11月12日

面试投行的20个Java问题

实际面试的时候并不保证一定会被问到这些问题,而且实际上,大概率问不到,但是通过这篇文章你能够知道大概会被问什么类型的问题。而且你准备的越充分,面试的时候表现的会越好。
2018年11月9日

了解Java中的内存泄漏

因此,我们需要非常关注static(静态)变量的使用。如果集合或大对象被声明为static,那么它们将在应用程序的整个生命周期中保留在内存中,从而阻止可能在其他地方使用的重要内存。
2018年11月8日

译:什么是Spring AOP?

使用AOP能让你解决这些问题。因此,AOP做的是获取所有事务代码然后将它们放到事务切面。然后,获取全部跟踪代码并将它放到一个切面。最后,异常处理放到一个切面。
2018年11月5日

Java后端技术栈,到底如何深入学习?

Java,是现阶段中国互联网公司中,覆盖度最广的研发语言。有不少朋友问,如何深入学习Java后端技术栈,今天分享一个,互联网牛人整理出来的Java深入学习路线图,以及免费学习资料。
2018年11月1日

【SFA官方译】:使用Spring Security保护REST API

在一个标准的web应用程序中,当客户端不经过身份认证就试图访问一个安全的资源时,身份认证过程可能会被自动触发——这通常是通过重定向到登录页面来实现的,这样用户就可以输入认证信息了。然而,对于REST
2018年9月27日

【SFA官方译】:基于Spring实现REST的ETag功能

API请求时,会使用If-None-Match头携带上一步保存的ETag值;如果服务器上的资源没有发生变化,那么响应将不会包含任何响应体,并且返回的HTTP状态码将会是304——Not
2018年9月26日

【SFA官方译】:Spring REST API实体和DTO之间的转换

原文链接:https://www.baeldung.com/entity-to-and-from-dto-for-a-java-spring-application
2018年9月25日

数据库中间件 MyCAT 源码分析 —— 跨库两表Join

MycatServer.getInstance().getCatletClassLoader().getInstanceofClass(cateletClass);
2018年9月19日

【SFA官方翻译】Spring Boot中配置Tomcat连接池

JDBC连接池而不使用默认的HikariCP,我们将从spring-boot-starter-data-jpa依赖项中排除HikariCP,并将tomcat-jdbc
2018年9月18日

【SFA官方翻译】:Micronaut Mastery:HTTP客户端的特定配置属性使用

原文链接:https://dzone.com/articles/micronaut-mastery-using-specific-configuration-pro
2018年9月17日

【SFA译】:让你的团队为微服务做准备——第2部分

拥抱微服务架构具有积极的副作用:开发和测试变得更容易,如果部署方案足够简单,产品开发的整个生命周期将会缩短。设计人员可以在不同的代码库上独立工作,而不是相互踩着对方的脚,这需要大量的协调工作。
2018年9月14日

译:从 JSON 文件加载 Spring Boot 属性

SpringApplicationBuilder(ConfigPropertiesDemoApplication.class).run();
2018年9月12日

SpringBoot使用Mybatis-Generator

在UserMapper上加入注解@Mapper表明是持久化映射层,启动类上加入注解@RestController进行测试,这里简单调用一个查询所有的方法selectAll,启动类代码如下:
2018年9月10日

【SFA官方翻译】:Spring中的组件扫描

beans。但是,除此之外,我们还可以告诉Spring到哪里去获取这些被注解的类。因为不是所有的使用注解的类,都需要在本次运行中成为Spring中的beans。
2018年9月5日

【SFA官方翻译】:Spring集成Java DSL

spring-integration-file依赖为我们提供了一个输入通道适配器,它非常适合我们的用例:FileReadingMessageSource:
2018年9月4日

【SFA官方翻译】:使用Spring 5引导Web应用程序

首先,使用AnnotationConfigWebApplicationContext来定义和配置应用程序的上下文,而不是默认的XmlWebApplicationContext。新的注解
2018年9月3日

分布式链路跟踪 Sleuth 与 Zipkin【Finchley 版】

${management.endpoints.web.base-path}${management.endpoints.web.path-mapping.health}
2018年8月31日

【SFA官方翻译】:如何使用Spring优雅地处理REST异常

3.0中引入,并且在DispatcherServlet中是默认启用的。它的主要职责是根据自定义异常上配置的注解@ResponseStatus,将这些自定义异常映射到设定的HTTP状态码。
2018年8月27日

【SFA官方翻译】:Java的静态和动态绑定

绑定是实现多态性的语言不可或缺的一部分,理解静态和动态绑定的含义很重要,这能确保我们的应用程序按照我们希望的方式运行。
2018年8月24日

【SFA官方翻译】:基于Zuul、Redis和REST API实现动态路由的持久化及容错能力

sb.append(dynamicRoute.getTargetURLHost()).append(":").append(dynamicRoute.getTargetURLPort());
2018年8月23日

【SFA官方翻译】:使用 Spring Boot 2.0、Eureka 和 Spring Cloud 的微服务快速指南

organization.setDepartments(departmentClient.findByOrganization(organization.getId()));
2018年8月22日

【SFA官方翻译】在Java中应用微服务开发RESTful APIs

https://5yv20hbz44.execute-api.eu-west-1.amazonaws.com/Dev/{proxy}?{setofparamsseparatedby_&}
2018年8月21日

【SFA官方翻译】使用 Kubernetes、Spring Boot 2.0 和 Docker 的微服务快速指南

原文链接:https://dzone.com/articles/quick-guide-to-microservices-with-kubernetes-sprin
2018年8月17日

【SFA官方翻译】通过 Zuul 进行动态路由

adomain.com/a/**/*。此外,代理网关应该一直处于运行状态,并且需要在网关中注册新的子域,而不需要任何停机时间。这是一个非常具体的问题,需要一些研究来达到同样的目的。
2018年8月16日

【SFA官方翻译】使用 Docker 进行 Spring Boot 开发

是一个能部署在不同操作系统,可以在你的企业开发和操作环境定制的示例店铺应用程序。在之前的文章,我讨论了应用程序的结构。在本文种,我将介绍如何设置开发环境以在容器中调试运行的
2018年8月15日

【SFA官方翻译】Spring WebFlux和Spring Cloud进行响应式微服务开发

Predicates用于将HTTP请求与路由进行匹配,而过滤器可用于在发送请求之前或之后修改请求和响应。这是网关的完整配置。它启用服务发现位置,并根据服务注册表中的条目定义两种路由。我们使用Path
2018年8月14日

数心,造化心数奇;用心等你...

杭州数心科技有限公司(简称:数心科技)成立于2016年9月,是一家数据智能技术服务公司,专注大数据和人工智能技术并将其应用于商业领域。
2018年7月11日

译:Spring Cloud Config (第二部分): Git 后端

应用程序第一次启动将会变慢,因为它需要检查完整的Git存储库。如果整个公司只有一个配置存储库,同时拥有数百或数千个服务,那么这变得很重要。出于这个原因,我可能建议在组织中为每个团队或区域配置存储库。
2018年7月10日

(译)Spring Cloud Config(第一部分)

都会按照属性值的顺序查询每个属性源。如果它在属性源中找到一个值,它将返回它。否则,它将转到下一个属性源。它将继续这样做,直到它在一个属性源中找到一个值,或者直到没有其他属性源为止。
2018年7月9日

分布式链路跟踪 Sleuth 与 Zipkin【Finchley 版】

${management.endpoints.web.base-path}${management.endpoints.web.path-mapping.health}
2018年7月6日

SpringCloudGateway【Finchley 版】上的监控

版】,这篇文章将继续按照我的计划进行小demo的开发,主要讲解SpringCloudGateway和健康监控,account服务的swagger2的简单使用。
2018年7月5日

利用OAuth2.0来构建一个基于Spring Boot的安全的端到端通信应用

2.0之前,开发人员是利用基于HTTP的认证方式解决端到端认证。本质上来说,就是把用户名密码作为请求的一部分发送给另一个API应用,这个API应用然后会校验每一次请求的用户名密码来判定是否授权
2018年7月4日

oAuth2 升级Spring Cloud Finchley.RELEASE踩坑分享

{bcrypt}$2a$10$p0JC.ofpM8RxVTSubkKLDOUloGrQAX.lx/67HwnnyumATT69mwYm2
2018年7月3日

译:微服务架构10条最佳实践

最近发表了一个观点,即微服务架构是无法解决所有的问题的。但是,使用微服务架构是构建现代软件架构的坚实基础。在过去的许多年里,我们都知道维护单体应用而带来的挑战,所以
2018年7月2日

Dubbo x Cloud Native 服务架构长文总结(很全)

时常会出现服务不可用的情况,主要的问题集中在更新(Update)机制、复制(Replication)机制以及内存型存储。由于时间的关系,此处我不加详细说明,部分答案在
2018年6月29日

服务网关 Spring Cloud Gateway 的应用

org.springframework.cloud.gateway.filter.factory.StripPrefixGatewayFilterFactory;
2018年6月28日

\b技术编程的成长道路上,哪些人对你帮助最大

JAVA葵花宝典,内含小程序自助免费领取各阶段资料,java知识和技术查漏补缺,空余时间学习碎片化知识,分享开发、运维、架构等综合性知识,助力职场最后一公里与职业进阶,每天看宝典,就选它。
2018年6月26日

Java经典面试题:一个线程两次调用start()方法会出现什么情况?

从操作系统的角度,可以简单认为,线程是系统调度的最小单元,一个进程可以包含多个线程,作为任务的真正运作者,有自己的栈(Stack)、寄存器(Register)、本地存储(Thread
2018年6月22日

Spring Guides 译文:使用 REST 访问 JPA 数据

hello包(package)中搜索其他的组件、配置(configurations)和服务(service),在本例中,spring会搜索到控制器(controllers)。
2017年10月17日

SpringCloud使用Feign经验总结(Dalston.SR1)

主要讲述SpringCloud在使用Feign经验总结(Dalston.SR1),如何优雅的使用GET/POST/PUT/DELETE等等,以及为什么别人使用的都是POST?
2017年7月25日