ZERO

  写程序归根到底就是做两件事---算法实现和错误处理
私信 关注
zero__007
码龄7年
  • 984,278
    被访问量
  • 241
    原创文章
  • 3,647
    作者排名
  • 186
    粉丝数量
  • 于 2014-07-24 加入CSDN
获得成就
  • 获得188次点赞
  • 内容获得69次评论
  • 获得439次收藏
荣誉勋章
兴趣领域
  • #后端
    #MySQL#Redis#架构#Linux#Spring#分布式#Spring Boot#Java
TA的专栏
  • Java基础
    33篇
  • Java提高
    26篇
  • 【Disruptor】
    4篇
  • 【单测】
    2篇
  • 【HttpClient 4】
    7篇
  • 【Log】
    7篇
  • 【Guava】
    7篇
  • Java进阶
    15篇
  • 【集合】
    19篇
  • 【同步/锁/volatile】
    26篇
  • 【线程/线程池】
    13篇
  • 【ThreadLocal】
    6篇
  • 【Java8】
    12篇
  • 【Future】
    6篇
  • 【伪共享/零拷贝】
    4篇
  • JVM
    29篇
  • 【GC相关】
    11篇
  • 【Reference】
    3篇
  • Spring&SpringBoot
    38篇
  • 【Spring Cloud】
    9篇
  • -------【Spring Boot】
    35篇
  • 分布式服务
    18篇
  • 数据库&缓存
    17篇
  • 【MySQL】
    18篇
  • 【Redis】
    14篇
  • 【HBase】
    10篇
  • Kafka
    14篇
  • Dubbo
    6篇
  • 网络通信
    10篇
  • 【Netty4】
    27篇
  • 【NIO】
    7篇
  • 零碎笔记录
    9篇
  • Zookeeper
    12篇
  • docker
    6篇
  • BD
  • Flink
    3篇
  • Spark
    11篇
  • Strom
    15篇
  • Linux相关
    36篇
  • Scala
    13篇
  • gradle/maven/git
    13篇
  • 设计模式
    15篇
  • 命名待定
    38篇
  • 最近
  • 文章
  • 资源
  • 问答
  • 课程
  • 帖子
  • 收藏
  • 关注/订阅

RocketMQ

转载自:https://www.toutiao.com/i6887897387709563399/  https://www.toutiao.com/i6884967188927611396/  https://www.toutiao.com/i6865699785265906180/文章目录RocketMQ 整体架构设计NameServerProducerProducer 启动流程Producer 发消息流程自动创建主题的弊端发送消息故障延迟机制小结一下BrokerBroker 的存储CommitL
转载
5阅读
0评论
0点赞
发布博客于 16 小时前

深入分布式缓存:微博是如何应对日访问量百亿级的缓存架构设计

微博日活跃用户1.6亿+,每日访问量达百亿级,面对庞大用户群的海量访问,良好的架构且不断改进的缓存体系具有非常重要的支撑作用。本文将由新浪微博技术专家陈波老师,跟大家详细讲解那些庞大的数据都是如何呈现的。本文大纲微博在运行过程中的数据挑战Feed平台系统架构Cache架构及演进总结与展望数据挑战Feed平台系统架构Feed平台系统架构总共分为五层,最上面是端层,比如web端、客户端、大家用的IOS或安卓的一些客户端,还有一些开放平台、第三方接入的一些接口;下一层是平台接入层,不同的池
转载
25阅读
1评论
1点赞
发布博客于 3 天前

系统架构不可避开的五个核心指标

架构中五个重要的核心指标,分别是性能、可用性、伸缩性、扩展性和安全性这5个架构指标一、性能性能就是核心要素之一,不然我为什么架构设计?随随便便一个lowlow的系统上线就好了。所以性能优化是很多小公司卖不去过的坎。这么说吧,当然优化网站性能的手段也非常多:(1)web前端性能优化:\1. 浏览器访问优化(浏览器缓存、页面压缩传输、合理布局页面、减少Cookie传输)· 减少http请求。避免建立太多通讯链路。将js、css、图片文件尽可能合并。避免太多请求。同时,对于系统的后端请求也尽可能进行合理
转载
44阅读
0评论
0点赞
发布博客于 3 天前

九个问题考一考你对HTTPS的熟悉程度

Q1: 什么是 HTTPS?BS: HTTPS 是安全的 HTTPHTTP 协议中的内容都是明文传输,HTTPS 的目的是将这些内容加密,确保信息传输安全。最后一个字母 S 指的是 SSL/TLS 协议,它位于 HTTP 协议与 TCP/IP 协议中间。Q2: 你说的信息传输安全是什么意思BS: 信息传输的安全有三个方面:1、客户端和服务器直接的通信只2、有自己能看懂,即使第三方拿到数据也看不懂这些信息的真实含义。3、第三方虽然看不懂数据,但可以 XJB 改,因此客户端和服务器必须有能力判断数
转载
17阅读
0评论
0点赞
发布博客于 3 天前

Sentinel机制

1. Sentinel 是什么?随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。Sentinel 具有以下特征:丰富的应用场景:Sentinel 承接了阿里巴巴近10年的双十一大促流量的核心场景,例如秒杀、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。完备的实时监控:Sentinel 同时提供实时的监控功能。你可以在控制台中看到接入应用的单台机器秒级数据,甚至 500 台以下规模的集群的
转载
27阅读
0评论
0点赞
发布博客于 3 天前

你所不知道的 ChaosBlade 那些事

项目背景阿里巴巴内部从最早引入混沌工程解决微服务的依赖问题,到业务服务、云服务稳态验证,进一步升级到公共云、专有云的业务连续性保障,以及在验证云原生系统的稳定性等方面积累了比较丰富的场景和实践经验。并且当时混沌工程相关的开源工具存在场景能力分散、上手难度大、缺少实验模型标准,场景难以扩展和沉淀等问题。这些问题就会导致很难实现平台化,你很难通过一个平台去囊括这些工具。所以我们开源了 ChaosBlade 这个混沌工程实验执行工具,目的是服务于混沌工程社区,共同推进混沌工程领域的发展。项目介绍ChaosB
转载
11阅读
0评论
0点赞
发布博客于 3 天前

Sentinel限流内部原理

前言限流是保障服务高可用的方式之一,尤其是在微服务架构中,对接口或资源进行限流可以有效地保障服务的可用性和稳定性。之前的项目中使用的限流措施主要是Guava的RateLimiter。RateLimiter是基于令牌桶流控算法,使用非常简单,但是功能相对比较少。而现在,我们有了一种新的选择,阿里提供的 Sentinel。Sentinel 是阿里巴巴提供的一种限流、熔断中间件,与RateLimiter相比,Sentinel提供了丰富的限流、熔断功能。它支持控制台配置限流、熔断规则,支持集群限流,并可以将
转载
18阅读
0评论
0点赞
发布博客于 3 天前

Controller层设置切面的三种方式

1.自定义PointcutAdvisor@Target({ElementType.METHOD, ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Documented@Inheritedpublic @interface AopAnnotation {}public class CustomizePointcutAdvisor extends DefaultPointcutAdvisor { private static
原创
53阅读
0评论
0点赞
发布博客于 16 天前

实用:优雅设计接口版本号

一般来说,系统上线以后,需求仍会发生变动,功能也会迭代更新。可能是接口参数发生变更,也有可能是业务逻辑需要调整,如果直接在原来的接口上进行修改,必然会影响原有服务的正常运行。常见的解决方案,是在接口路径中加入版本号用于区分,此外还可以在参数甚至 header 里带上版本号。这里以在请求路径中带上版本号为例,如:http://IP:PORT/api/v1/test ,v1 即代表的是版本号。当然了,可以像这样,直接写死在 @RequestMapping(“api/v1/test”)属性中,不过下面提供了更为
转载
12阅读
0评论
0点赞
发布博客于 25 天前

HashMap 1.7和1.8有哪些区别?

一、真实面试题之:Hashmap的结构,1.7和1.8有哪些区别不同点:(1)JDK1.7用的是头插法,而JDK1.8及之后使用的都是尾插法,那么他们为什么要这样做呢?因为JDK1.7是用单链表进行的纵向延伸,当采用头插法时会容易出现逆序且环形链表死循环问题。但是在JDK1.8之后是因为加入了红黑树使用尾插法,能够避免出现逆序且链表死循环的问题。(2)扩容后数据存储位置的计算方式也不一样:在JDK1.7的时候是直接用hash值和需要扩容的二进制数进行&(这里就是为什么扩容的时候为啥一定必须
转载
21阅读
0评论
0点赞
发布博客于 25 天前

聚簇索引与非聚族索引

InnoDB使用的是聚簇索引,将主键组织到一棵B+树中,而行数据就储存在叶子节点上,若使用"where id = 14"这样的条件查找主键,则按照B+树的检索算法即可查找到对应的叶节点,之后获得行数据。若对Name列进行条件搜索,则需要两个步骤:第一步在辅助索引B+树中检索Name,到达其叶子节点获取对应的主键。第二步使用主键在主索引B+树种再执行一次B+树检索操作,最终到达叶子节点即可获取整行数据。(重点在于通过其他键需要建立辅助索引)MyISM使用的是非聚簇索引,非聚簇索引的两棵B+树看上去没什么不
转载
20阅读
0评论
0点赞
发布博客于 25 天前

服务治理最佳实践:如何依据参数值进行服务路由、鉴权、限流?

导语:微服务网关作为后台架构的入口,提供路由转发、API 管理、访问过滤器等作用,是微服务架构中的重要组件。开源社区中存在多种方式实现微服务网关的功能,但同时也存在不灵活、运维难的问题。本文从实际业务场景出发,通过实际操作为大家演示腾讯云微服务平台TSF(Tencent Service Framework)是如何解决上述问题的。前言微服务网关通过服务路由、API管理、负载均衡、访问限制等功能,在一定程度上可以实现服务治理,帮助我们管理各个服务之间的调用及关联关系。我们来看这样一个场景:当有外部请求时,我
转载
16阅读
0评论
0点赞
发布博客于 25 天前

SpringBoot加埋点监控

JVM应用度量框架Micrometer实战前提spring-actuator做度量统计收集,使用Prometheus(普罗米修斯)进行数据收集,Grafana(增强ui)进行数据展示,用于监控生成环境机器的性能指标和业务数据指标。一般,我们叫这样的操作为”埋点”。SpringBoot中的依赖spring-actuator中集成的度量统计API使用的框架是Micrometer,官网是Micrometer.io。在实践中发现了业务开发者滥用了Micrometer的度量类型Counter,导致无论什么情况下
转载
56阅读
0评论
0点赞
发布博客于 25 天前

高性能短链之路

前言今天,我们来谈谈如何设计一个高性能短链系统,短链系统设计看起来很简单,但每个点都能展开很多知识点,也是在面试中非常适合考察侯选人的一道设计题,本文将会结合我们生产上稳定运行两年之久的高性能短链系统给大家简单介绍下设计这套系统所涉及的一些思路,希望对大家能有一些帮助。本文将会从以下几个方面来讲解,每个点包含的信息量都不少,相信大家看完肯定有收获短链有啥好处,为啥要设计它,用长链不香吗短链跳转的基本原理短链生成的几种方法短链的架构支撑注:里面涉及到不少布隆过滤器,snowflake 等技术
转载
40阅读
1评论
0点赞
发布博客于 25 天前

高并发秒杀系统架构解密,不是所有的秒杀都是秒杀!

前言很多小伙伴反馈说,高并发专题学了那么久,但是,在真正做项目时,仍然不知道如何下手处理高并发业务场景!甚至很多小伙伴仍然停留在只是简单的提供接口(CRUD)阶段,不知道学习的并发知识如何运用到实际项目中,就更别提如何构建高并发系统了!究竟什么样的系统算是高并发系统?今天,我们就一起解密高并发业务场景下典型的秒杀系统的架构,结合高并发专题下的其他文章,学以致用。电商系统架构在电商领域,存在着典型的秒杀业务场景,那何谓秒杀场景呢。简单的来说就是一件商品的购买人数远远大于这件商品的库存,而且这件商品
转载
93阅读
0评论
0点赞
发布博客于 25 天前

HttpServletResponse和HttpServletRequest

有时候,我们需要用拦截器对Request或者Response流里面的数据进行拦截,读取里面的一些信息,也许是作为日志检索,也许是做一些校验,但是当我们读取里请求或者回调的流数据后,会发现这些流数据在下游就无法再次被消费了,这里面是其实存在着两个潜在的坑。坑一Request的 getInputStream()、getReader()、getParameter()方法互斥,也就是使用了其中一个,再使用另外的两,是获取不到数据的。除了互斥外,getInputStream()和getReader()都只能使用
转载
13阅读
0评论
0点赞
发布博客于 25 天前

Springboot处理CORS跨域请求的三种方法

Springboot跨域问题,是当前主流web开发人员都绕不开的难题。但我们首先要明确以下几点跨域只存在于浏览器端,不存在于安卓/ios/Node.js/python/ java等其它环境跨域请求能发出去,服务端能收到请求并正常返回结果,只是结果被浏览器拦截了。之所以会跨域,是因为受到了同源策略的限制,同源策略要求源相同才能正常进行通信,即协议、域名、端口号都完全一致。浏览器出于安全的考虑,使用 XMLHttpRequest对象发起 HTTP请求时必须遵守同源策略,否则就是跨域的HTTP请求,默认情
转载
53阅读
0评论
0点赞
发布博客于 25 天前

压力测试工具wrk

wrk是一个一个简单的 http benchmark 工具, 能做很多基本的 http 性能测试。wrk 的一个很好的特性就是能用很少的线程压出很大的并发量。wrk支持大多数类UNIX系统,不支持windows。安装brew install wrk使用参数使用方法: wrk <选项> <被测HTTP服务的URL>Options:-c, --connections <N> 跟服务器建立并保持的TCP连接数量-d, --duration <
原创
16阅读
0评论
0点赞
发布博客于 1 月前

写了10年JAVA代码,为何还是给人一种乱糟糟的感觉?

一、为什么要写这篇文章在开篇之前先说明下为什么要写这篇文章?在Java的世界里MVC软件架构模式绝对是经典的存在(PS:MVC是一种软件架构方式并不只有Java有),如果你是在最近十年前后进入Java的编程世界,那么你会发现自己这些年似乎从来没有逃离MVC架构模式的牢笼,只不过换着使用了不同的MVC框架,如早期的Struts1、Struts2以及现在几乎一统江湖的Spring MVC(少数自行封装MVC框架的公司除外)。而随着互联网技术的发展,特别是Ajax等富客户端技术的发展,前端技术逐步形成了一套体
转载
52阅读
0评论
0点赞
发布博客于 1 月前

时间轮算法在Netty和Kafka中如何应用的?

为什么要用时间轮算法来实现延迟操作?延时操作 Java 不是提供了 Timer 么?还有 DelayQueue 配合线程池或者 ScheduledThreadPool 不香吗?我们先来简单看看 Timer、DelayQueue 和 ScheduledThreadPool 的相关实现,看看它们是如何实现延时任务的,源码之下无秘密。再来剖析下为何 Netty 和 Kafka 特意实现了时间轮来处理延迟任务。如果在手机上阅读其实纯看字也行,不用看代码,我都会先用文字描述清楚。不过电脑上看效果更佳。Tim
转载
30阅读
0评论
0点赞
发布博客于 1 月前

使用事务(@Transactional)可能出现的问题

前言在之前的文章中已经对Spring中的事务做了详细的分析了,这篇文章我们来聊一聊平常工作时使用事务可能出现的一些问题(本文主要针对使用@Transactional进行事务管理的方式进行讨论)以及对应的解决方案事务失效事务回答相关问题读写分离跟事务结合使用时的问题事务失效事务失效我们一般要从两个方面排查问题数据库层面数据库层面,数据库使用的存储引擎是否支持事务?默认情况下MySQL数据库使用的是Innodb存储引擎(5.5版本之后),它是支持事务的,但是如果你的表特地修改了存储引擎,例如
转载
240阅读
0评论
0点赞
发布博客于 1 月前

用Spring的事件监听机制实现了模块的解耦

背景这里我们有一个需求:“当用户支付成功时,需要修改订单状态;短信通知用户;通知仓库发货”原始解决方法你首先想到的肯定是这样public void paySuccess(String orderId) { if (StringUtils.isNotBlank(orderId)) { //1.修改订单状态 //2.发送短信通知用户 //3.通知仓库发货 }}在支付成功的方法里面调用修改订单的方法,调用短信通知用户的方法,调
转载
15阅读
0评论
0点赞
发布博客于 1 月前

一个架构师如何开展工作?业务架构全过程设计思路整理

一个公司中针对架构组的职责有很多,其中典型的分支有两种。一种技术架构,主要负责搭建技术框架,公共组件以及对产品技术难点的解决和处理。同时要在项目上线的过程中,对架构的运作效率,开发效率等进行优化和升级。一种是业务架构,主要跟随产品团队一起发展。这种业务架构师要理解具体的业务,要了解业务中具体的功能要求以及功能模块之间的关系。并且选择合适的公共组件和技术架构,用于产品发展的不同阶段。系统架构的概念很多,从不同角度有不同的理解,我们认为架构的分类主要有:之间的逻辑关系如下:划分架构的目的是什么?
转载
68阅读
0评论
0点赞
发布博客于 1 月前

IDEA SequenceDiagram插件

在平时的学习/工作中,我们会经常面临如下场景:阅读别人的代码阅读框架源码阅读自己很久之前写的代码。千万不要觉得工作就是单纯写代码,实际工作中,你会发现你的大部分时间实际都花在了阅读和理解已有代码上。为了能够更快更清晰地搞清对象之间的调用关系,我经常需要用到序列图。手动画序列图还是很麻烦费时的,不过 IDEA 提供了一个叫做SequenceDiagram 的插件帮助我们解决这个问题。通过 SequenceDiagram 这个插件,我们一键可以生成时序图。何为序列图?网上对于序列图的定义有很多
转载
171阅读
0评论
0点赞
发布博客于 1 月前

RocketMQ介绍

转载自:https://www.toutiao.com/i6890490696164508167/RocketMQ 整体架构设计整体的架构设计主要分为四大部分,分别是:Producer、Consumer、Broker、NameServer。Producer:就是消息生产者,可以集群部署。它会先和 NameServer 集群中的随机一台建立长连接,得知当前要发送的 Topic 存在哪台 Broker Master上,然后再与其建立长连接,支持多种负载平衡模式发送消息。Consumer:消息消费者,
转载
48阅读
0评论
0点赞
发布博客于 1 月前

后端程序员书写高质量SQL的建议

1、查询SQL尽量不要使用select *,而是select具体字段。理由:只取需要的字段,节省资源、减少网络开销;2、如果知道查询结果只有一条或者只要最大/最小一条记录,建议用limit 1。理由:加上limit 1后,只要找到了对应的一条记录,就不会继续向下扫描了,效率将会大大提高;当然,如果查询列是唯一索引的话,是不必要加上limit 1了,因为limit的存在主要就是为了防止全表扫描,从而提高性能,如果一个语句本身可以预知不用全表扫描,有没有limit ,性能的差别并不大。3、
转载
10阅读
0评论
0点赞
发布博客于 1 月前

Java日常开发会遇到的坑(转载)

转载自:https://mp.weixin.qq.com/s/FY5rlDjxcCNqnCJbnULwSA1. 六类典型空指针问题包装类型的空指针问题级联调用的空指针问题Equals方法左边的空指针问题ConcurrentHashMap 这样的容器不支持 Key 和 Value 为 null。集合,数组直接获取元素对象直接获取属性1.1包装类型的空指针问题public class NullPointTest { public static void main(String[]
转载
30阅读
0评论
0点赞
发布博客于 1 月前

Redis中的bitmap

Redis从2.2.0版本开始新增了setbit,getbit,bitcount等几个bitmap相关命令。虽然是新命令,但是并没有新增新的数据类型,因为setbit等命令只不过是在set上的扩展。相关指令:SETBIT key offset valuegetbit key offset valuebitcount key offset value# 对 key [key ...] 作位运算,并将结果存到 destkeyBITOP AND/OR/NOT/XOR destkey key [k
原创
27阅读
1评论
0点赞
发布博客于 2 月前

二进制使用の业务场景

场景一记录用户的登录情况(日期、次数)。以用户id为key,值为 bitmap,例如 zhangsan: 0110…0,可以表示用户 zhangsan 在这段时间 第2、第3 天有登录,统计 位值是1 的个数,即登录日期。场景二记录某一日期的登录用户。以日期为key,值为 bitmap,例如 20201128: 0110…0,可以表示 2020-11-28 这一天,用户id=1、id=2 有登录,统计 位值是1 的个数,即当天登录人数。场景三使用bitmap表示火车票乘坐区间。比如一张火车
原创
31阅读
0评论
0点赞
发布博客于 2 月前

业务量增长10倍、100倍时系统该如何设计?

围绕支撑高并发的业务场景怎么设计系统才合理?面对超高的并发,首先硬件层面机器要能扛得住,其次架构设计做好微服务的拆分,代码层面各种缓存、削峰、解耦等等问题要处理好,数据库层面做好读写分离、分库分表,稳定性方面要保证有监控,熔断限流降级该有的必须要有,发生问题能及时发现处理。这样从整个系统设计方面就会有一个初步的概念。微服务架构演化在互联网早期的时候,单体架构就足以支撑起日常的业务需求,大家的所有业务服务都在一个项目里,部署在一台物理机器上。所有的业务包括你的交易系统、会员信息、库存、商品等等都夹杂在一
转载
62阅读
0评论
0点赞
发布博客于 3 月前

编解码

Base64建议使用org.apache.commons.codec.binary.Base64类库。注意标准和url safe的base64。DES /** * DES 加密 * @param password * @param data * @return */ @SneakyThrows public static byte[] encrypt(String password, String data) {
原创
14阅读
0评论
0点赞
发布博客于 3 月前

@Async注解引发的Spring循环依赖分析

首先有一点可以确定,spring可以是解决某些循环依赖的,示例:@Servicepublic class AService { @Autowired private BService bService; public void testA() { }}@Servicepublic class BService { @Autowired private AService aService; public void testB() {
原创
172阅读
1评论
0点赞
发布博客于 3 月前

Mysql多列索引建立与优化

转载自:https://www.jianshu.com/p/c964a5e04adb文章目录索引的物理结构1. where 子句中的多列索引1.1 可以完全使用该索引的优化的情况1.2 可以部分使用该索引的优化的情况1.3 不能使用该索引的优化的情况    对于单列索引,没有太多的话题,但是对于多列索引的建立,一个好的多列索引能使用的场景应可以涵盖很多,减少其他不必要的索引空间,就有很多事情需要注意。索引的物理结构http://www.jianshu.com/p/1775b4ff123a1. w
转载
76阅读
0评论
0点赞
发布博客于 3 月前

mybatis-generator扩展插件

原生的mybatis-generator不能满足需求时,需要扩展plugin,有两种方式。第一种:import java.util.List;import org.mybatis.generator.api.IntrospectedTable;import org.mybatis.generator.api.PluginAdapter;import org.mybatis.generator.api.dom.java.Interface;import org.mybatis.generator
原创
11阅读
0评论
0点赞
发布博客于 3 月前

HTTPS原理详解

  文章目录概念协议加密算法详解问题概念协议1、HTTP 协议(HyperText Transfer Protocol,超文本传输协议):是客户端浏览器或其他程序与Web服务器之间的应用层通信协议 。2、HTTPS 协议(HyperText Transfer Protocol over Secure Socket Layer):可以理解为HTTP+SSL/TLS, 即 HTTP 下加入 SSL 层,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL,用于安全的 HTTP 数据传输。
原创
39阅读
0评论
0点赞
发布博客于 4 月前

springboot中spring.profiles.include、spring.profiles.include

在开发Spring Boot应用时,通常同一套程序会被应用和安装到几个不同的环境,比如:开发、测试、生产等。其中每个环境的数据库地址、服务器端口等等配置都会不同,如果在为不同环境打包时都要频繁修改配置文件的话,那必将是个非常繁琐且容易发生错误的事。spring boot允许你通过命名约定按照一定的格式(application-{profile}.properties)来定义多个配置文件,然后通过在application.properyies通过spring.profiles.active来具体激活一个或者
原创
177阅读
0评论
0点赞
发布博客于 4 月前

利用Lambda实现通过getter/setter方法引用拿到属性名

转载自:https://blog.csdn.net/cradle2006/article/details/95073133很多开发场景需要用到Java Bean的属性名,直接写死属性名字符串的形式容易产生bug(属性名一旦变化,IDE不会告诉你你的字符串需要同步修改)。JDK8的Lambda可以通过方法引用简化代码,同样也可以通过getter/setter的方法引用拿到属性名,避免潜在的bug。期望实现效果// 传统方式:hard code写死属性名// String ITEM_NAME = "or
转载
129阅读
0评论
0点赞
发布博客于 4 月前

线上故障排查套路

转载自:https://blog.csdn.net/zhousenshan/article/details/106868821线上故障主要会包括 CPU、磁盘、内存以及网络问题,而大多数故障可能会包含不止一个层面的问题,所以进行排查时候尽量四个方面依次排查一遍。同时例如 jstack、jmap 等工具也是不囿于一个方面的问题的,基本上出问题就是 df、free、top 三连,然后依次 jstack、jmap 伺候,具体问题具体分析即可。CPU一般来讲我们首先会排查 CPU 方面的问题。CPU 异常往往
转载
72阅读
0评论
0点赞
发布博客于 4 月前

内存使用量监控

一、服务内存使用量监控脚本内存监控脚本,监控服务如YourServer内存使用是否过量,当内存使用超过阈值,重启服务。新建./mointer_mem_kill.sh,并赋予可执行权限#!/bin/bashinterval=120 #设置采集间隔120smem_threshold=27648 # 大于27G内存时kill待进程,进程通过supervisor自动重启condition=truewhile $conditiondo pid=$(ps -ef |grep YourServ
转载
58阅读
0评论
0点赞
发布博客于 4 月前

maven多模块打包问题总结

转载自:https://www.jianshu.com/p/37c6688c4fcb在用IDEA构建maven多module项目时,碰到了一些问题,现在归纳总结如下。假如一个maven项目下分为几个module,分别是不同的服务,以及common模块,结构如下:shopping├── common├── mail-service├── order-service└── pay-service则shopping pom大概率是如下内容: <modelVersion>4.0.0
转载
223阅读
0评论
0点赞
发布博客于 4 月前

如何健壮你的后端服务

转载自:https://blog.csdn.net/wwd0501/article/details/100889320文章目录1 怀疑第三方1.1 有兜底,制定好业务降级方案1.2 遵循快速失败原则,一定要设置超时时间1.3 适当保护第三方,慎重选择重试机制2 防备使用方2.1 设计一个好的api(RPC、Restful),避免误用2.2 流量控制,按服务分配流量,避免滥用3 做好自己3.1 单一职责原则3.2 控制资源的使用3.2.1 CPU资源怎么限制?3.2.2 内存资源怎么限制?3.2.3 网络资
转载
39阅读
0评论
0点赞
发布博客于 4 月前

优秀架构师必须掌握的几种架构思维

转载自:https://blog.csdn.net/wwd0501/article/details/101031156介绍架构的本质是管理复杂性,抽象、分层、分治和演化思维是我们工程师/架构师应对和管理复杂性的四种最基本武器。最近团队来了一些新人,有些有一定工作经验,是以高级工程师/架构师身份进来的,但我发现他们大部分人思维偏应用和细节,抽象能力弱。所以作为团队技术培训的一部分,我整理了这篇文章,希望对他们树立正确的架构设计思维有帮助。我认为,对思维习惯和思考能力的培养,其重要性远远大于对实际技术
转载
156阅读
0评论
1点赞
发布博客于 4 月前

理解QPS、TPS、RT、吞吐量

转载自:https://blog.csdn.net/u012562943/article/details/103252375一、QPS,每秒查询QPS:Queries Per Second意思是“每秒查询率”,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。互联网中,作为域名系统服务器的机器的性能经常用每秒查询率来衡量。二、TPS,每秒事务TPS:是TransactionsPerSecond的缩写,也就是事务数/秒。它是软件测试结果的测量单位。一个事
转载
362阅读
0评论
0点赞
发布博客于 4 月前

抢票系统详解

转载自:https://blog.csdn.net/qq_37095882/article/details/102777226秒杀抢购系统选型:火车票秒杀系统如何在高并发情况下提供正常、稳定的服务呢?我们知道用户秒杀流量通过层层的负载均衡,均匀到了不同的服务器上,即使如此,集群中的单机所承受的 QPS 也是非常高的。如何将单机性能优化到极致呢?**要解决这个问题,我们就要想明白一件事:**通常订票系统要处理生成订单、减扣库存、用户支付这三个基本的阶段。我们系统要做的事情是要保证火车票订单不超卖、不
转载
268阅读
0评论
0点赞
发布博客于 4 月前

秒杀系统的详解

转载自:https://blog.csdn.net/qq_37095882/article/details/102752166一套秒杀系统在架构设计上需要有哪些考量:秒杀场景的特点系统隔离的设计思路客户端设计代理层设计应用层设计数据库设计压力测试总结秒杀场景的特点:秒杀场景是电商网站定期举办的活动,这个活动有明确的开始和结束时间,而且参与互动的商品是事先定义好了,参与秒杀商品的个数也是有限制的。同时会提供一个秒杀的入口,让用户通过这个入口进行抢购。总结一下秒杀场景的特点:**
转载
238阅读
0评论
0点赞
发布博客于 4 月前

mybatis中使用xml写sql小技巧

转载自:https://blog.csdn.net/tengxing007/article/details/548648971. if 语句处理<select id="dynamicIfTest" parameterType="Blog" resultType="Blog"> select * from t_blog where 1 = 1 <if test="title != null"> and title = #{ti
转载
147阅读
0评论
0点赞
发布博客于 5 月前

JDK9 GC参数

转载自:https://zhuanlan.zhihu.com/p/159265336今天我们讲讲JDK9中的JVM GC调优参数,JDK9中JVM的参数总共有2142个,其中正式的参数有659个。好像比JDK8中的参数要少一点。为了方便大家的参考,特意将JDK9中的GC参数总结成了一张PDF,这个PDF比之前总结的JDK8的PDF在排版,颜色和内容准确性上面又有了非常大的提升,欢迎大家下载。Oracle中的文档今天这篇文章的内容都是从Oracle JDK9的官方文档中提炼出来的。对于里面的内容的真实
转载
68阅读
0评论
0点赞
发布博客于 6 月前

好的提高代码质量的方法有哪些?

转载自:https://www.zhihu.com/question/20017545/answer/1364963057力扣君先给大家讲一个故事吧!01 从一个故事说起 —— 王国的工匠师 在一个古老的王国里,有两个建筑工匠——风师与土师。就实操经验而言,他们的技艺相差无几。差别在于,风师以“效率”闻名,若你要修一栋房子,找他仅需一月时间便可完成;土师以“稳定”闻名,他总是将东西归置整齐后,方才破土动工,风师只需一月完成的工程,土师需要三个月。 风师有一个大麻袋,这是他的百宝箱,他所有的工具都在里面。
转载
295阅读
0评论
0点赞
发布博客于 6 月前

深入理解了MySQL

转载自:https://zhuanlan.zhihu.com/p/66352669先抛出几个问题1.为什么不建议使用订单号作为主键?2.为什么要在需要排序的字段上加索引?3.for update 的记录不存在会导致锁住全表?4.redolog 和 binlog 有什么区别?5.MySQL 如何回滚一条 sql ?6.char(50) 和 varchar(50) 效果是一样的么?索引知识回顾对于 MySQL 数据库而言,数据是存储在文件里的,而为了能够快速定位到某张表里的某条记录进行查询
转载
48阅读
1评论
1点赞
发布博客于 6 月前

MySQL中varchar与char区别

转载自:https://www.cnblogs.com/ttxcs/p/11614473.html  一. varchar存储规则  4.0版本以下,varchar(20),指的是20字节,如果存放UTF-8汉字时,只能存6个(每个汉字3字节) ;  5.0版本以上,varchar(20),指的是20字符,无论存放的是数字、字母还是UTF-8汉字(每个汉字3字节),都可以存放20个字符 Mysql4中最大也不过是20个字节,但是Mysql5根据编码不同,存储大小也不同。  二. varchar和
转载
62阅读
0评论
0点赞
发布博客于 6 月前

Java虚拟机指令dup

转载自:https://blog.csdn.net/Gabriel576282253/article/details/98968241dup指令的作用:dup指令可以复制操作数栈栈顶的一个字,再将这个字压入栈。也就是对栈顶的内容做了个拷贝,此时操作数栈上有连续相同的两个对象地址。JAVA是基于栈的实现,任何操作都是入栈出栈,没有任何寄存器,所以如果要对某一操作数做两次连续操作,那就要复制两次栈顶操作数,比如: public void test() { int x;
转载
65阅读
0评论
0点赞
发布博客于 6 月前

BigDecimal 精确计算的坑

转载自:https://blog.csdn.net/chenssy/article/details/105760343https://juejin.im/post/5e86085ce51d4547153d0769前言通常商业计算涉及到小数的,我们都会使用 BigDecimal 来完成加减乘除运算。但是利用 BigDecimal 进行浮点数精确运算时,需要注意使用正确的方法。如果方法选择不当,依旧会发生错误。发现问题 public class Test { public static v
转载
99阅读
0评论
1点赞
发布博客于 7 月前

OutOfMemoryError: unable to create new native thread

java.lang.OutOfMemoryError共有8种类型,其中java.lang.OutOfMemoryError: unable to create new native thread是很常见的一种,这类错误通常发生在应用试图创建新线程时。可能原因系统内存耗尽,无法为新线程分配内存创建线程数超过了操作系统的限制解决方案1. 排查应用是否创建了过多的线程通过jstack确定应用创建了多少线程?超量创建的线程的堆栈信息是怎样的?谁创建了这些线程?一旦明确了这些问题,便很容易解决。
原创
49阅读
0评论
0点赞
发布博客于 7 月前

MethodHandle与invokedynamic指令

转载自:https://blog.csdn.net/yushuifirst/article/details/48028859?utm_source=blogxgwz7?utm_medium=distribute.pc_relevant.none-task-blog-baidujs-1  MethodHandle  MethodHandle即方法句柄,使用方法和效果上与Reflection都有众多相似之处。不过,它们也有以下这些区别:Reflection和MethodHandle机制本质上都是在
转载
105阅读
0评论
0点赞
发布博客于 7 月前

Orika 拷贝框架

Orika是一个简单、快速的JavaBean拷贝框架,Orika使用字节代码生成来创建具有最小开销的快速映射器。pom.xml 引入: <dependency> <groupId>ma.glasnost.orika</groupId> <artifactId>orika-core</artifactId> <version>1.5.1</ve
转载
86阅读
0评论
0点赞
发布博客于 7 月前

Java8通用Builder

参考:https://blog.csdn.net/cradle2006/article/details/95073133https://blog.csdn.net/xiaoxiaole0313/article/details/104890343?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_re
转载
326阅读
0评论
0点赞
发布博客于 7 月前

monitorenter、monitorexit与synchronized

monitorenterOperationEnter monitor for objectDescriptionThe objectref must be of type reference.Each object is associated with a monitor. A monitor is locked if and only if it has an owner. The thread that executes monitorenter attempts to gain owners
原创
180阅读
0评论
0点赞
发布博客于 7 月前

hikari添加metric

@Bean @ConfigurationProperties(prefix = "spring.datasource.hikari") HikariDataSource dataSource(DataSourceProperties properties) { HikariDataSource dataSource = properties.initializeDataSourceBuilder() .type(HikariDataSource...
原创
448阅读
0评论
0点赞
发布博客于 8 月前

Redis哨兵机制

转载自:https://zhuanlan.zhihu.com/p/95678924    https://mp.weixin.qq.com/s?__biz=MjM5ODI5Njc2MA==&mid=2655824267&idx=1&sn=dfe90cb364d884a6197a1621cf553786&chksm=bd74e45c8a036d4abc741237c65c80ca5a0f3bd976e6c5ebe077dc2e517fccba4d07b8a0b7bf&
转载
84阅读
0评论
0点赞
发布博客于 8 月前

Spring手动注册Bean

使用BeanDefinitionRegistryPostProcessor:@Componentpublic class DefinitionRegistryPostProcessor implements BeanDefinitionRegistryPostProcessor { @Override public void postProcessBeanFactory(ConfigurableListableBeanFactory arg0) throws BeansExceptio
原创
110阅读
0评论
0点赞
发布博客于 8 月前

云原生

转载自:https://blog.csdn.net/csdnnews/article/details/90093190    https://www.cnblogs.com/IT-Evan/p/CloudNative.html文章目录前言后端架构演化史集中式架构分布式系统架构容器技术新纪元 Docker微服务架构KubernetesService Mesh总结云原生 Cloud Native什么是云 Cloud什么是原生 NativeCloud Native 是道,Service Mesh 是术Serv
转载
124阅读
0评论
0点赞
发布博客于 8 月前

FileChannle#map引发的OOM

转载自:http://goo.gl/Xv5j3t  故障现象为:应用日志中发现了大量的OOM异常:Caused by: java.lang.OutOfMemoryError: Map failed。跟踪堆栈找到抛出异常的地方是在 FileChannle#map,这个方法是创建一个内存映射文件,应用为了降低堆内存的使用,同时提高写入的效率,将一个文件分成多段,内存映射多个MappedByteBuffer进行读写操作;跟踪fileChannle.map的方法发现最终调用的是FileChannelImpl
转载
117阅读
0评论
0点赞
发布博客于 8 月前

GC调优经验

YGC是最频繁发生的,发生的概率是OldGC和FullGC的的10倍,100倍,甚至1000倍。同时YoungGC的问题也是最难定位的。这里给出YGC定位三板斧:查看服务器SWAP&IO情况,如果服务器发生SWAP,会严重拖慢GC效率,导致STW时间异常长,拉长接口响应时间,从而影响用户体验(推荐sar工具);查看StringTable情况(请参考:探索StringTable提升YGC性能)排查每次YGC后幸存对象大小(JVM模型基于分配的对象朝生夕死的假设设计,如果每次YGC后幸存对象较
原创
102阅读
0评论
0点赞
发布博客于 8 月前

springboot 生产环境部署脚本

转载自:https://blog.csdn.net/qq_27384769/article/details/79058917#!/bin/shSERVICE_DIR=/tmp/SERVICE_NAME=blog-api-boot-jpa-data-0.0.1-SNAPSHOTSPRING_PROFILES_ACTIVE=dev## java envexport JAVA_HOME=/opt/jdk1.8export JRE_HOME=${JAVA_HOME}/jrecase "$1"
转载
125阅读
0评论
0点赞
发布博客于 9 月前

kafka顺序消息

转载自:https://blog.csdn.net/wwd0501/article/details/93505901消息重试对顺序消息的影响对于一个有着先后顺序的消息A、B,正常情况下应该是A先发送完成后再发送B,但是在异常情况下,在A发送失败的情况下,B发送成功,而A由于重试机制在B发送完成之后重试发送成功了。这时对于本身顺序为AB的消息顺序变成了BA。消息producer发送逻辑的控制消息producer在发送消息的时候,对于同一个broker连接是存在多个未确认的消息在同时发送的,也就是存在
转载
92阅读
0评论
0点赞
发布博客于 9 月前

自增序列生成

生成毫秒数+3位自增: private static AtomicLong sequence = new AtomicLong(); public static String generSeq() { for (; ; ) { long oldSeq = sequence.get(); long curMS = System.currentTimeMillis() * 1000; long newSe
原创
293阅读
0评论
0点赞
发布博客于 9 月前

gitignore文件中忽略项不起作用的解决方法

在使用git的时候会遇到这样的情况,我们生产的一些class或者target的目录,我不能提交,这个时候我们需要使用gitignore,但是有的时候虽然添加了,但是不起作用。情况:开发过程中,我们自己会在gitignore 文件中添加一些忽略项,然而,每次使用git status 的时候都未列在 untracked里面,比如 用IDEA 开发,.idea 文件夹添加到该文件,再提交还是会提示。原因:新建的文件在git中会有缓存,如果某些文件已经被纳入了版本管理中,就算是在.gitignore中已经声明了
转载
216阅读
0评论
0点赞
发布博客于 9 月前

Kafka生产者事务和幂等

转载自:http://www.heartthinkdo.com/?p=2040    https://blog.csdn.net/mlljava1111/article/details/81180351  在Kafka 0.11.0.0引入了EOS(exactly once semantics,精确一次处理语义)的特性,这个特性包括kafka幂等性和kafka事务两个属性。1 生产者幂等性  幂等性引入目的:生产者重复生产消息。生产者进行retry会产生重试时,会重复产生消息。有了幂等性之后,在进
转载
62阅读
0评论
0点赞
发布博客于 9 月前

kafka如何保证消息的可靠性与一致性

转载自:https://blog.csdn.net/CSDN___LYY/article/details/85696326?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecas
转载
497阅读
0评论
0点赞
发布博客于 9 月前

HTTP请求时connectionRequestTimeout 、connectionTimeout、socketTimeout三个超时时间的含义

转载自:https://blog.csdn.net/wangjin890620/article/details/54630219connectionRequestTimout:指从连接池获取连接的timeoutconnetionTimeout:指客户端和服务器建立连接的timeout,就是http请求的三个阶段,一:建立连接;二:数据传送;三,断开连接。超时后会ConnectionTimeOutExceptionsocketTimeout:指客户端从服务器读取数据的timeout,超出后会抛出So
转载
454阅读
0评论
0点赞
发布博客于 9 月前

MySQL 用 limit 为什么会影响性能?

转载自:https://blog.csdn.net/u013256816/article/details/103342250  数据库表结构:mysql> desc test;+--------+---------------------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra |+--------+-----
转载
496阅读
0评论
0点赞
发布博客于 9 月前

maven跳过单元测试-maven.test.skip和skipTests

-DskipTests 不执行测试用例,但编译测试用例类生成相应的class文件至target/test-classes下。-Dmaven.test.skip=true 不执行测试用例,也不编译测试用例类。1.maven.test.skip使用maven.test.skip,不但跳过单元测试的运行,也跳过测试代码的编译。mvn package -Dmaven.test.skip=true...
原创
130阅读
0评论
0点赞
发布博客于 10 月前

HashMap之resize

转载自:https://blog.csdn.net/weixin_39667787/article/details/86678215    HashMap是如何来判定何时该扩容的呢? final V putVal(int hash, K key, V value, boolean onlyIfAbsent, boolean evict) { if ((tab = tab...
转载
49阅读
0评论
0点赞
发布博客于 10 月前

线上问题排查

Linux命令类1、grepgrep xxx a.txt #文件查找 grep xxx a.txt b.txt #多文件查找 grep 'xxx' /home/admin -r -n #目录下查找所有符合关键字的文件 grep 'xxx' /home/admin -r -n --include *.{vm,java} #指定文件后缀 grep 'xxx' /home/admin...
原创
61阅读
0评论
0点赞
发布博客于 10 月前

Linux服务器性能(二)--内存

转载自:https://blog.csdn.net/hguisu/article/details/102620787  1、虚拟内存简介  虚拟内存是使用磁盘作为 RAM 的扩充使得可用内存的有效大小得到相应增加。 内核会将当前内存中未被使用的块的内容写入硬盘以此来腾出内存空间。 当上面的内容再次需要被用到时,它们将被重新读入内存。这些对用户完全透明;在 linux 下运行的程序只会看到有大...
转载
47阅读
0评论
0点赞
发布博客于 10 月前

Linux服务器性能(一)-CPU

转载自:https://blog.csdn.net/hguisu/article/details/39373311  1、前言简介Linux性能评估与优化:cpu,内存,IO, 网络1.1、系统性能分析工具1.常用系统命令vmstat、sar、iostat、netstat、free、ps、top等2.常用组合方式用vmstat、sar、iostat检测是否是CPU瓶颈用fre...
转载
240阅读
0评论
0点赞
发布博客于 10 月前

AppCDS

转载自:https://www.jianshu.com/p/faa64050da56    https://www.jianshu.com/p/890196bf529a  什么是 CDS  CDS 的全称是 Class-Data Sharing,CDS 的作用是可以让类可以被预处理放到一个归档文件中,后续 Java 程序启动的时候可以直接带上这个归档文件,这样 JVM 可以直接将这个归档...
转载
104阅读
0评论
0点赞
发布博客于 1 年前

HttpClient#evictExpiredConnections引发的问题

转载自:https://blog.csdn.net/chenssy/article/details/103607712案发现场昨天晚上突然短信收到 APM (即 Application Performance Management 的简称,我们内部自己搭建了这样一套系统来对应用的性能、可靠性进行线上的监控和预警的一种机制)大量告警 画外音: 监控是一种非常重要的发现问题的手段,没有的话一定要及...
转载
1006阅读
0评论
2点赞
发布博客于 1 年前

shell命令xargs用法

xargs命令是给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具。常用示例:find ./ -name "*.log" | xargs ls -l-r可以让xargs忽略一个空结果。xargs也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。xargs的默认命令是echo,空格是默认定界符。cat test.txta b c d e f gh i j ...
原创
82阅读
0评论
0点赞
发布博客于 1 年前

forEach无法跳出循环的解决思路

如果使用过forEach方法来遍历集合,会发现在lambda表达式中的return并不会终止循环,这是由于lambda的底层实现导致的,看下面的例子:public static void main(String[] args) { List<String> list = Lists.newArrayList(); list.add("a"); list.a...
原创
197阅读
0评论
0点赞
发布博客于 1 年前

ZGC垃圾收集器

转载自:https://blog.csdn.net/huaishu/article/details/103596531    https://houbb.github.io/2018/11/28/java-gc-optimize    https://www.jianshu.com/p/4e4fd0dd5d25    Java11已经推出最新垃圾收集器,ZGC主要为了减少JVM停顿时间。...
转载
1278阅读
0评论
0点赞
发布博客于 1 年前

synchronized实现原理

转载自:https://blog.csdn.net/chenssy/article/details/54883355    https://www.cnblogs.com/javaminer/p/3889023.html    https://zhuanlan.zhihu.com/p/74696997    https://zhuanlan.zhihu.com/p/92770620文章目录...
转载
41阅读
0评论
0点赞
发布博客于 1 年前

HttpClient连接池设置引发的一次雪崩

转载自:https://mp.weixin.qq.com/s/LTKKoE_QhxX8ov_IyiMJgA项目中使用HttpClient 调用其它服务,经常出现Address already in use (Bind failed)的问题。很明显是一个端口绑定冲突的问题,于是大概排查了一下当前系统的网络连接情况和端口使用情况,发现是有大量time_wait的连接一直占用着端口没释放,导致端口被占...
转载
226阅读
0评论
0点赞
发布博客于 2 年前

使用sofa-common-tools自定义日志

项目中我们可能需要重新定义一些 log 规则,也不想沿用已有的日志配置文件。此时就需要自定义日志配置文件,并加载,sofa-common-tools 提供了这样的工具。引入依赖: <dependency> <groupId>com.alipay.sofa.common</groupId> <...
原创
80阅读
0评论
0点赞
发布博客于 2 年前

重定向标准输出到Log

思路是 重定向PrintStream到Log,代码如下:package com.zero.log4j2;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import java.io.PrintStream;public class Log4jPrintStream { private static Logger ...
原创
110阅读
0评论
0点赞
发布博客于 2 年前

主流Java数据库连接池比较

转载自:https://www.jianshu.com/p/b9b98ac3e010文章目录一、主流数据库连接池二、HikariCP性能分析:三、前瞻,未来到底是HikariCP还是Druid的天下?四、从Sharding-jdbc架构演进看未来一、主流数据库连接池C3p0: 实现数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。Hibernate、Spring使用。单线程,性...
转载
436阅读
0评论
0点赞
发布博客于 2 年前

Spring中的设计模式

文章目录模板方法(Template Method)策略(Strategy)简单工厂工厂方法(Factory Method)单例模式(Singleton)适配器(Adapter)代理(Proxy)装饰模式(Decorator)观察者(Observer)模板方法(Template Method)模板方法(template method)就在spring中被大量使用,如:jdbcTemplate,h...
转载
34阅读
0评论
0点赞
发布博客于 2 年前

SpringBoot自定义Druid数据源

@Configurationpublic class Config{ @Primary @Bean(initMethod = "init", destroyMethod = "close") @ConfigurationProperties(prefix = "spring.datasource") public DruidDataSource druidDat...
原创
138阅读
0评论
0点赞
发布博客于 2 年前

Spring中使用mybatis

文章目录依赖引入配置文件Mapper层语法示例依赖引入 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> ...
原创
32阅读
0评论
0点赞
发布博客于 2 年前

Spring中使用mybatis

2
原创
46阅读
0评论
0点赞
发布博客于 2 年前

HttpServletRequest inputStream只能读取一次的问题

1
原创
478阅读
0评论
0点赞
发布博客于 2 年前

Ant Design Pro4.0入门到放弃(一)

0
原创
10410阅读
2评论
2点赞
发布博客于 2 年前

javaassist使用

之前使用到了Instrumentation来做字节码修改,用到了javaassist,顺便做个笔记,记录一下。对于动态扩展现有类或接口的二进制字节码,有比较成熟的开源项目提供支持,如CGLib、ASM、Javassist等。其中,CGLib的底层基于ASM实现,是一个高效高性能的生成库;而ASM是一个轻量级的类库,但需要涉及到JVM的操作和指令;相比而言,Javassist要简单的多,完全是基于...
原创
467阅读
0评论
0点赞
发布博客于 2 年前

减少该死的 if else 嵌套

转载自:https://www.jianshu.com/p/57c065b124c4  写在前面  不知大家有没遇到过像“横放着的金字塔”一样的if else嵌套:if (true) { if (true) { if (true) { if (true) { if (true) { ...
转载
91阅读
0评论
0点赞
发布博客于 2 年前

Log4j2笔记

文章目录PatternLayout格式异步日志打印%L %M等位置信息相关依赖各种日志相关jar包各类Bridgejar冲突log4j2依赖示例  PatternLayout格式%d{yyyy-MM-dd HH:mm:ss.SSS} 表示输出到毫秒的时间,如果不加大括号默认是到毫秒级别%r 程序启动时间毫秒数%t 输出日志线程名称%-5p 日志级别,-5表示左对齐并且固定输出5个字符,...
原创
76阅读
0评论
0点赞
发布博客于 2 年前

tar与zip

tartar [-cxtzjvfpPN] 文件与目录参数:-c :建立一个压缩文件-x :解开一个压缩文件-t :查看压缩文件里面的文件特别注意: c/x/t 同时只能存在一个。-z:是否需要用gzip压缩-j:是否需要用bzip2压缩-v:压缩的过程中显示文件-f:使用档名。在f之后要立即接文件名,不要再加参数,例如使用 [tar -zcvfP tfile sfile] 就是...
原创
168阅读
0评论
0点赞
发布博客于 2 年前

Arthas

文章目录安装使用基础命令jvm相关class/classloader相关monitor/watch/trace相关常用示例watchtrace安装使用arthas-boot(推荐)下载arthas-boot.jar,然后用java -jar的方式启动:wget https://alibaba.github.io/arthas/arthas-boot.jarjava -jar arth...
原创
114阅读
0评论
0点赞
发布博客于 2 年前

MySQL基础命令

文章目录库操作表操作表字段操作索引创建与删除实用操作show databases;use db_name;show tables;  库操作drop database db_name;create database db_name default character set utf8mb4;  表操作delete from table_name;truncate table...
原创
45阅读
0评论
0点赞
发布博客于 2 年前

Java虚拟机启动、加载类过程分析

转载自:https://blog.csdn.net/luanlouis/article/details/50529868    首先定义一个非常简单的java程序并运行它,来逐步分析java虚拟机启动的过程。package org.luanlouis.jvm.load;import sun.security.pkcs11.P11Util;/** * Created by louis ...
转载
326阅读
0评论
0点赞
发布博客于 2 年前

服务暴露

转载自:https://blog.csdn.net/u012410733/article/category/7159846    在服务提供者暴露的时候,首先从配置文件中获取到对外提供的实际类ref(如:HelloWorldImpl),然后通过ProxyFactory类(JavassistProxyFactory或JdkProxyFactory)把ref生成一个AbstractProxyInv...
转载
92阅读
0评论
0点赞
发布博客于 2 年前