![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
程序员•进军SJF
DO WHAT YOU SAY. SAY WAHT YOU DO.
展开
-
记一次生产redis线程堵塞fullgc问题分析
背景目前线上运行推荐业务模块,因重构版本和老版本分别部署在不同的机器集群中,运行了几个版本后,老版本的流量已经少的可怜,日均50w左右,为了释放机器资源,然后把老版本代码复制到重构版本后的项目中继续为老版本用户提供服务。搞完后,测试通过,上线。当然我们也比较小心,首先切了一台网关然后观察了一段时间发现基本正常。等下一个上线日我们就把所有网关全部切到新项目的上边。首日基本正常,第二日后问题接踵而至。一、老版本接口耗时超长1.1 首次发现问题首次发现问题是只在其中的一台机器(A)发生的,下图是首次发现问原创 2020-11-13 15:00:41 · 1043 阅读 · 0 评论 -
美团点评Cat业务实践
项目背景CAT(Central Application Tracking),是基于 Java 开发的分布式实时监控系统。CAT在基础存储、高性能通信、大规模在线访问、服务治理、实时监控、容器化及集群智能调度等领域提供业界领先的、统一的解决方案。CAT 目前在美团的产品定位是应用层的统一监控组件,基本接入了美团所有核心应用,在中间件(RPC、数据库、缓存、MQ 等)框架中得到广泛应用,为各业务线提供系统的性能指标、健康状况、实时告警等。项目地址:https://github.com/dianping/ca原创 2020-09-08 17:04:49 · 1332 阅读 · 1 评论 -
Java线程池实现原理及其在多接口聚合业务中的实践
随着计算机行业的飞速发展,多核CPU成为主流。使用多线程并行计算逐渐成为开发人员提升服务器性能的基本武器。J.U.C提供的线程池:ThreadPoolExecutor类,帮助开发人员管理线程并方便地执行并行任务。了解并合理使用线程池,是一个开发人员必修的基本功。本文开篇简述线程池概念和用途,接着结合线程池的源码,帮助读者领略线程池的设计思路,最后回归实践,通过案例讲述使用线程池遇到的问题,并给出了一种动态化线程池解决方案。一、前言1.1 线程池是什么线程池(Thread Pool)是一种基于池化思想原创 2020-08-25 11:21:29 · 1216 阅读 · 2 评论 -
Spring源码解析之SpringMVC源码解析(二)
在Spring源码解析之SpringMVC源码解析(一)中,分析了SpringBoot中SpringMVC的自动配置原理以及DispatcherServlet的初始化流程。本篇文章就分析一次请求在SpringMVC中的处理流程在日常开发中,我们最常用的请求方式大概就是Get和Post了,当然也有put和delete,Tomcat或者Jetty等web服务器在接受到请求后会调用到Dispatche...原创 2020-04-29 10:21:02 · 316 阅读 · 0 评论 -
Spring源码解析之SpringMVC源码解析(一)
一、源码阅读环境用idea快速创建一个springboot 项目 ,在项目添加一个controller 方法,这里就不写创建过程了。主要需要以下启动类@SpringBootApplicationpublic class MVCApplication { public static void main (String args[]){ SpringApplicatio...原创 2020-04-29 09:47:01 · 279 阅读 · 0 评论 -
简说设计模式之适配器模式
一、什么是适配器模式适配器模式(Adapter)的定义如下:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。适配器模式分为类结构型模式和对象结构型模式两种1. 类适配器1.1 UML结构图1.2 模式实现代码package adapter;//目标接口interface Target{ public void reque...原创 2020-04-05 17:28:29 · 171 阅读 · 0 评论 -
简说设计模式之策略模式
一、什么是策略模式策略(Strategy)模式的定义:该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于对象行为模式,它通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理。 举个例子:我们出门的时候会选择不同的出行方式,比如骑自行车、坐公交、坐火车、坐飞机、坐火箭等等,这些...原创 2020-04-05 17:25:55 · 127 阅读 · 0 评论 -
简说设计模式之设计模式概述
一、软件设计模式的概念与意义1. 软件设计模式的概念软件设计模式(Software Design Pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。它描述了在软件设计过程中的一些不断重复发生的问题,以及该问题的解决方案。也就是说,它是解决特定问题的一系列套路,是前辈们的代码设计经验的总结,具有一定的普遍性,可以反复使用。其目的是为了提高代码的可...原创 2020-04-04 14:15:56 · 178 阅读 · 0 评论 -
Spring源码解析之Spring事务源码解析(二)
在上一篇文章Spring源码解析之Spring事务源码解析(一)@EnableTransactionManagement注解解析中,我们阅读了Spring事务功能的注解@EnableTransactionManagement的实现逻辑在进行接下来的源码解析之前首先来简单了解一下传统的jdbc应用事务操作开启事务save、update、delete等操作出现异常进行回滚正常情况提交事务...原创 2020-04-04 14:14:08 · 129 阅读 · 0 评论 -
Spring源码解析之Spring事务源码解析(一)
Spring事务**@EnableTransactionManagement**注解源码解析首先在配置类中添加开启事务的注解@EnableTransactionManagement,事务开始是通过@EnableTransactionManagement注解启用的,所以此次源码解析也从此注解开始@Target({ElementType.TYPE})@Retention(RetentionPo...原创 2020-04-02 13:55:38 · 138 阅读 · 0 评论 -
拒绝需求专用表情包,拿走不谢
眼看就要迎来3天大长假了你想不想安静休假?诺,有人给你排需求你就甩他表情包⬇⬇自从用上这套表情包妈妈再也不怕我被Brief砸晕了呢...原创 2020-04-02 10:31:09 · 2092 阅读 · 1 评论 -
Spring源码解析-@Import注解源码解析
Spring 3.0之前,创建Bean可以通过xml配置文件与扫描特定包下面的类来将类注入到Spring IOC容器内。而在Spring 3.0之后提供了JavaConfig的方式,也就是将IOC容器里Bean的元信息以java代码的方式进行描述。我们可以通过@Configuration与@Bean这两个注解配合使用来将原来配置在xml文件里的bean通过java代码的方式进行描述@Import...原创 2020-04-01 17:35:19 · 313 阅读 · 0 评论 -
spring源码解析-基于注解的SpringAOP源码解析(二)
在[Spring源码解析之基于注解的SpringAOP源码解析(一)]中,我们搭建了SpringAOP源码分析的环境,介绍了@EnableAspectJAutoProxy注解和postProcessBeforeInstantiation方法是如何加载所有增强的。本篇文章则将描述一下AOP中剩余的实现逻辑postProcessAfterInitialization这个方法是在bean实例化之后调...原创 2020-03-31 11:04:18 · 135 阅读 · 0 评论 -
spring源码解析-基于注解的SpringAOP源码解析(一)
本文分析Spring的AOP模块的整体流程,分析过程需要使用一个简单的demo工程来启动Spring。https://github.com/cjinjun/spring-framework-demo写一个简单的接口和实现类,跟IOC源码解析那几篇文章用的同一个工程,public interface IOCService { public String helloIoc();}...原创 2020-03-31 11:03:03 · 237 阅读 · 0 评论 -
揭秘 | 为什么程序猿996会猝死,而企业家007却不会?
来源:公众号程序员吴小胖程序猿企业家程序猿企业家程序猿企业家程序猿企业家程序猿企业家程序猿企业家程序猿企业家程序猿企业家程序猿深度解析...翻译 2020-01-19 15:48:35 · 235 阅读 · 0 评论 -
spring源码解析之SpringIOC源码解析(上)
SpringIOC源码解析(上)一、什么是SpringIOCspring ioc指的是控制反转,IOC容器负责实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。交由Spring容器统一进行管理,从而实现松耦合。二、SpringIOC源码解析在开始之前我们先通过一个简单的示意图来了解一下大概的一个流程从示意图可以看出,当web容器启动的时候,spring的全局bean...原创 2020-01-19 15:21:25 · 542 阅读 · 1 评论 -
Idea编译Spring源码总结
前言:最近准备分享Spring源码相关,看源码的时候感觉打断点会更清晰一些。所以首先整理关于Idea编译Spring步骤及问题解决。希望大家通过本篇小文顺利搭建编译环境,与我一起踏上Spring源码分析之旅!一、前期运行环境与工具准备JDK版本:1.8.0_131 (JDK需要1.8以上)http://www.oracle.com/technetwork/java/javase/dow...原创 2020-01-19 15:20:09 · 1076 阅读 · 0 评论 -
「读书分享」- 走进JVM,深入理解JVM
---云开方见日,潮尽炉峰出。揭开JVM的神秘面纱,探寻底层实现原理Java Vitural MachineJava 的源代码是怎么被机器识别并执行的呢?答案是Java虚拟机,即 Java Vitural Machine, 简称 JVM.字节码字节码是一种中间状态(中间码)的二进制代码(文件),Java中所有指令有200个左右,一个字节(8位)可以存储256种不同指令信息,一个这样...原创 2020-01-16 17:14:53 · 180 阅读 · 0 评论 -
掌握这些技术,你离BAT大厂不远了
每一个程序员都有一个梦想,梦想着能够进入阿里、腾讯、字节跳动、百度等一线互联网公司,由于身边的环境等原因,不知道 BAT 等一线互联网公司使用哪些技术?或者该如何去学习这些技术?或者我该去哪些获取这些技术资料?没关系,平头哥一站式服务,上面统统不是问题。平头哥整理了 BAT 等一线大厂的必备技能,并且帮你准备了对应的资料。对于整理出来的技术,如果你掌握的不牢固,那就赶快巩固,如果你还没有涉及,现在...转载 2019-10-18 18:54:39 · 369 阅读 · 0 评论 -
google jib容器打包工具
简介Jib 是 Google 开发的可以直接构建 Java 应用的 Docker 和 OCI 镜像的类库,以 Maven 和 Gradle 插件形式提供。通过 Jib,Java 开发者可以使用他们熟悉的 Java 工具来构建容器。Jib 是一个快速而简单的容器镜像构建工具,它负责处理将应用程序打包到容器镜像中所需的所有步骤。它不需要你编写 Dockerfile 或安装 Docker,而且可以直接集...原创 2018-07-12 10:55:37 · 2764 阅读 · 0 评论 -
JAVA中高级面试整理2018
一.基础知识:1)集合类:List和Set比较,各自的子类比较(ArrayList,Vector,LinkedList;HashSet,TreeSet); 1.list 有序可重复,set 无序不可重复 2.list 可以根据索引获得元素,set不可以 ArrayXxx:底层数据结构是数组,查询快,增删慢 LinkedXxx:底层数据结构是链表,查询慢,增删快 HashXxx:...原创 2018-04-03 16:00:03 · 518 阅读 · 0 评论