- 博客(46)
- 收藏
- 关注
原创 【Mysql分享】之索引篇
mysql知识图谱mysql架构逻辑架构图(1)MySQL向外提供的交互接口(Connectors)(2)管理服务组件和工具组件(Management Service & Utilities)(3)连接池组件(Connection Pool)(4)SQL接口组件(SQL Interface)(5)查询分析器组件(Parser)(6)优化器组件(Optimizer)(7)缓存主件(Caches & Buffers)mysql8.0不再使用(8)插件式存储引擎(Plugg
2021-12-09 20:49:41
920
原创 记一次生产redis线程堵塞fullgc问题分析
背景目前线上运行推荐业务模块,因重构版本和老版本分别部署在不同的机器集群中,运行了几个版本后,老版本的流量已经少的可怜,日均50w左右,为了释放机器资源,然后把老版本代码复制到重构版本后的项目中继续为老版本用户提供服务。搞完后,测试通过,上线。当然我们也比较小心,首先切了一台网关然后观察了一段时间发现基本正常。等下一个上线日我们就把所有网关全部切到新项目的上边。首日基本正常,第二日后问题接踵而至。一、老版本接口耗时超长1.1 首次发现问题首次发现问题是只在其中的一台机器(A)发生的,下图是首次发现问
2020-11-13 15:00:41
1250
原创 美团点评Cat业务实践
项目背景CAT(Central Application Tracking),是基于 Java 开发的分布式实时监控系统。CAT在基础存储、高性能通信、大规模在线访问、服务治理、实时监控、容器化及集群智能调度等领域提供业界领先的、统一的解决方案。CAT 目前在美团的产品定位是应用层的统一监控组件,基本接入了美团所有核心应用,在中间件(RPC、数据库、缓存、MQ 等)框架中得到广泛应用,为各业务线提供系统的性能指标、健康状况、实时告警等。项目地址:https://github.com/dianping/ca
2020-09-08 17:04:49
1501
1
原创 Java线程池实现原理及其在多接口聚合业务中的实践
随着计算机行业的飞速发展,多核CPU成为主流。使用多线程并行计算逐渐成为开发人员提升服务器性能的基本武器。J.U.C提供的线程池:ThreadPoolExecutor类,帮助开发人员管理线程并方便地执行并行任务。了解并合理使用线程池,是一个开发人员必修的基本功。本文开篇简述线程池概念和用途,接着结合线程池的源码,帮助读者领略线程池的设计思路,最后回归实践,通过案例讲述使用线程池遇到的问题,并给出了一种动态化线程池解决方案。一、前言1.1 线程池是什么线程池(Thread Pool)是一种基于池化思想
2020-08-25 11:21:29
1285
3
原创 记调整SpringCloudGateway负载策略BestAvailableRule引发的事故
前言因老信息流项目维护性太差及各种线程池乱用泛滥,原研发人员离职等等历史原因。导致信息流新研发人员中不断吐槽。当然吐槽老代码是程序员特点,看到别人写的不经意就想来一句 “我艹”,最后一看注释发现自己写的,默默修改中…。在不断的吐槽中,大家决定 “重构“,说干就干,don’t say too much。建项目、熟悉老业务逻辑、重构。历程经过一个星期小伙伴们的辛苦奋战,信息流核心接口完成提测,看样子一切都是如此的顺利。在测试环境中在测试周测一周期间修改一些细节问题,回归等等。在第二周部署上生产,在生产经过
2020-08-19 18:00:25
1748
5
原创 Springboot+caffeine 实现两级缓存
目录:缓存、两级缓存spring cache:主要包含spring cache定义的接口方法说明和注解中的属性说明spring boot + spring cachecaffeine简介spring boot + spring cache 实现两级缓存(redis + caffeine)缓存、两级缓存简单的理解,缓存就是将数据从读取较慢的介质上读取出来放到读取较快的介质上,如磁盘–>内存。平时我们会将数据存储到磁盘上,如:数据库。如果每次都从数据库里去读取,会因为磁盘本身的IO影响
2020-08-18 14:23:05
3053
1
原创 亿级用户流量网站如何统计活跃用户?妙用redis中bitMap
BitMap是什么就是通过一个bit位来表示某个元素对应的值或者状态,其中的key就是对应元素本身。我们知道8个bit可以组成一个Byte,所以bitmap本身会极大的节省储存空间。你可以把它理解为一个特殊处理过的 字符串,key代表业务属性、标签。一个 bit 位来表示某个元素对应的值或者状态Redis中的BitMapRedis从2.2.0版本开始新增了setbit,getbit,bit...
2020-04-30 20:14:19
831
原创 Spring源码解析之SpringMVC源码解析(二)
在Spring源码解析之SpringMVC源码解析(一)中,分析了SpringBoot中SpringMVC的自动配置原理以及DispatcherServlet的初始化流程。本篇文章就分析一次请求在SpringMVC中的处理流程在日常开发中,我们最常用的请求方式大概就是Get和Post了,当然也有put和delete,Tomcat或者Jetty等web服务器在接受到请求后会调用到Dispatche...
2020-04-29 10:21:02
346
原创 Spring源码解析之SpringMVC源码解析(一)
一、源码阅读环境用idea快速创建一个springboot 项目 ,在项目添加一个controller 方法,这里就不写创建过程了。主要需要以下启动类@SpringBootApplicationpublic class MVCApplication { public static void main (String args[]){ SpringApplicatio...
2020-04-29 09:47:01
312
原创 简说设计模式之适配器模式
一、什么是适配器模式适配器模式(Adapter)的定义如下:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。适配器模式分为类结构型模式和对象结构型模式两种1. 类适配器1.1 UML结构图1.2 模式实现代码package adapter;//目标接口interface Target{ public void reque...
2020-04-05 17:28:29
204
原创 简说设计模式之策略模式
一、什么是策略模式策略(Strategy)模式的定义:该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于对象行为模式,它通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理。 举个例子:我们出门的时候会选择不同的出行方式,比如骑自行车、坐公交、坐火车、坐飞机、坐火箭等等,这些...
2020-04-05 17:25:55
165
原创 简说设计模式之设计模式概述
一、软件设计模式的概念与意义1. 软件设计模式的概念软件设计模式(Software Design Pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。它描述了在软件设计过程中的一些不断重复发生的问题,以及该问题的解决方案。也就是说,它是解决特定问题的一系列套路,是前辈们的代码设计经验的总结,具有一定的普遍性,可以反复使用。其目的是为了提高代码的可...
2020-04-04 14:15:56
207
原创 Spring源码解析之Spring事务源码解析(二)
在上一篇文章Spring源码解析之Spring事务源码解析(一)@EnableTransactionManagement注解解析中,我们阅读了Spring事务功能的注解@EnableTransactionManagement的实现逻辑在进行接下来的源码解析之前首先来简单了解一下传统的jdbc应用事务操作开启事务save、update、delete等操作出现异常进行回滚正常情况提交事务...
2020-04-04 14:14:08
156
原创 Spring源码解析之Spring事务源码解析(一)
Spring事务**@EnableTransactionManagement**注解源码解析首先在配置类中添加开启事务的注解@EnableTransactionManagement,事务开始是通过@EnableTransactionManagement注解启用的,所以此次源码解析也从此注解开始@Target({ElementType.TYPE})@Retention(RetentionPo...
2020-04-02 13:55:38
161
原创 拒绝需求专用表情包,拿走不谢
眼看就要迎来3天大长假了你想不想安静休假?诺,有人给你排需求你就甩他表情包⬇⬇自从用上这套表情包妈妈再也不怕我被Brief砸晕了呢...
2020-04-02 10:31:09
2578
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
349
原创 spring源码解析-基于注解的SpringAOP源码解析(二)
在[Spring源码解析之基于注解的SpringAOP源码解析(一)]中,我们搭建了SpringAOP源码分析的环境,介绍了@EnableAspectJAutoProxy注解和postProcessBeforeInstantiation方法是如何加载所有增强的。本篇文章则将描述一下AOP中剩余的实现逻辑postProcessAfterInitialization这个方法是在bean实例化之后调...
2020-03-31 11:04:18
164
原创 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
273
翻译 揭秘 | 为什么程序猿996会猝死,而企业家007却不会?
来源:公众号程序员吴小胖程序猿企业家程序猿企业家程序猿企业家程序猿企业家程序猿企业家程序猿企业家程序猿企业家程序猿企业家程序猿深度解析...
2020-01-19 15:48:35
274
原创 spring源码解析之SpringIOC源码解析(上)
SpringIOC源码解析(上)一、什么是SpringIOCspring ioc指的是控制反转,IOC容器负责实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。交由Spring容器统一进行管理,从而实现松耦合。二、SpringIOC源码解析在开始之前我们先通过一个简单的示意图来了解一下大概的一个流程从示意图可以看出,当web容器启动的时候,spring的全局bean...
2020-01-19 15:21:25
580
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
1312
原创 如何让你的观点,让人愿意听?
话不在多,达意则灵表达的逻辑性不在语言的长度而在于语言的质量,主动明确话题范畴,克制自己无关观点的表达欲,用简练的语言表达精准的观点,更容易被听者接受。俗话说:“牵牛要牵牛鼻子。”要想让牛前进或转弯,只要牵住牛鼻子,手无缚鸡之力的小孩子也可以轻松驾驭健壮的牛;可是如果牵的是牛尾巴,那么十个壮汉也未必能让牛挪动一步。同样的道理,与人说话时要想说服他人,关键是要说到点子上,要说得恰到好处,...
2020-01-17 22:16:21
416
原创 「读书分享」- 走进JVM,深入理解JVM
---云开方见日,潮尽炉峰出。揭开JVM的神秘面纱,探寻底层实现原理Java Vitural MachineJava 的源代码是怎么被机器识别并执行的呢?答案是Java虚拟机,即 Java Vitural Machine, 简称 JVM.字节码字节码是一种中间状态(中间码)的二进制代码(文件),Java中所有指令有200个左右,一个字节(8位)可以存储256种不同指令信息,一个这样...
2020-01-16 17:14:53
209
转载 掌握这些技术,你离BAT大厂不远了
每一个程序员都有一个梦想,梦想着能够进入阿里、腾讯、字节跳动、百度等一线互联网公司,由于身边的环境等原因,不知道 BAT 等一线互联网公司使用哪些技术?或者该如何去学习这些技术?或者我该去哪些获取这些技术资料?没关系,平头哥一站式服务,上面统统不是问题。平头哥整理了 BAT 等一线大厂的必备技能,并且帮你准备了对应的资料。对于整理出来的技术,如果你掌握的不牢固,那就赶快巩固,如果你还没有涉及,现在...
2019-10-18 18:54:39
393
转载 海量数据处理常见问题
前言一般而言,标题含有“秒杀”,“99%”,“史上最全/最强”等词汇的往往都脱不了哗众取宠之嫌,但进一步来讲,如果读者读罢此文,却无任何收获,那么,我也甘愿背负这样的罪名 :-),同时,此文可以看做是对这篇文章:十道海量数据处理面试题与十个方法大总结的一般抽象性总结。毕竟受文章和理论之限,本文将摒弃绝大部分的细节,只谈方法/模式论,且注重用最通俗最直白的语言阐述相关问题。最后...
2019-04-25 10:16:33
364
原创 TensorFlow 1.12.0 更新总结
TensorFlow 1.12.0 更新总结Keras 更新Keras 模型现在可以直接输出为 SavedModel 格式(tf.contrib.saved_model.save_keras_model()),输出的模型可以使用 TensorFlow Serving 来部署。Keras 模型现在支持使用 tf.data.Dataset 作为数据源来进行模型评估。tf.data 更新...
2018-12-01 12:33:27
884
原创 支付名词总结
支付机构:是指取得《支付业务许可证》,获准办理“预付卡发行与受理”业务的发卡机构和获准办理“预付卡受理”业务的受理机构。(支付机构预付卡业务管理办法)支付机构特定自有资金账户:是支付机构在备付金存管银行开立的自有资金账户,用于现金形式为客户办理备付金赎回、结转支付业务手续费收入等业务。支付机构只能确定一个特定自有资金账户,并按照规定向我营业管理部备案(支付机构客户备付金存管办法)支付账户:...
2018-10-09 10:49:51
1202
原创 支付对账系统怎么设计?
支付对账系统是整个支付清结算体系中具体基础性意义的一个环节,是确保支付平台与各类第三方支付渠道数据一致性的关键系统,是商户资金结算、资金划拨、资金报表等逻辑准确运行的重要前提。支付对账涉及账单下载处理、核心对账、差错处理等诸多细节逻辑,同时根据交易量大小的不同,需要处理的数据量规模也不尽相同,需要在数据处理时进行一些比较细致地思考。在本文中,作者以单渠道日成功交易订单量300W左右规模为背景...
2018-09-29 11:29:06
3946
翻译 Docker中使用TensorFlow
下载TensorFlow images使用hub.docker.com的镜像docker pull tensorflow/tensorflow:latest使用daocloud 的镜像,在国内用速度还是挺快的,如果docker.io的镜像慢,可以用daocloud的。docker pull daocloud.io/daocloud/tensorflow:latest启动镜像启动...
2018-08-23 18:09:29
1027
原创 Docker 学习系列(二)-安装
MacOS Docker 安装 使用 Homebrew 安装macOS 我们可以使用 Homebrew 来安装 Docker。Homebrew 的 Cask 已经支持 Docker for Mac,因此可以很方便的使用 Homebrew Cask 来进行安装:$ brew cask install docker==> Creating Caskroom at /usr/...
2018-08-15 12:24:21
220
原创 Docker 学习系列(一)-简介及相关技术
一,Docker简介1,什么是容器(1)一种虚拟化的方案(2)操作系统级别的虚拟化(3)只能运行相同或相似内核的操作系统(4)依赖于Linux内核特性:Namespace和CGroups(Control Group)2,虚拟机与容器对比 与虚拟相比,容器占用的磁盘空间更少,如下图,使用虚拟机部署应用需要包含应用,依赖的类库和完整的操作系统,但是容器只需要应...
2018-08-15 12:16:42
497
原创 google jib容器打包工具
简介Jib 是 Google 开发的可以直接构建 Java 应用的 Docker 和 OCI 镜像的类库,以 Maven 和 Gradle 插件形式提供。通过 Jib,Java 开发者可以使用他们熟悉的 Java 工具来构建容器。Jib 是一个快速而简单的容器镜像构建工具,它负责处理将应用程序打包到容器镜像中所需的所有步骤。它不需要你编写 Dockerfile 或安装 Docker,而且可以直接集...
2018-07-12 10:55:37
2898
原创 kafka 安装
1、下载下载地址:http://kafka.apache.org/downloads.htmlhttp://mirrors.hust.edu.cn/apache/2、安装前提(zookeeper安装)参考http:https://blog.youkuaiyun.com/qq_41851454/article/details/796430933、安装此处使用版本为kafka_2.11-0.8.2.0.tgz2....
2018-05-10 14:42:43
177
转载 如何基于MYSQL做实时计算
有时候我们会有这样的场景,在某个接口中,数据已经很规范地存入到一张的MYSQL表中,现在想对这样的数据做一些实时或准实时处理,比如数据多模式存储、异步准实时业务流程、业务实时监控等。接口中处理流程如下:最原始的方法,是改动业务代码,将这些额外的处理流程作为同步流程,在更新MYSQL数据之后同步执行。如下图:但是这样的处理流程可能会越来越多,如果一直作为同步流程,整个接口会变得越来越庞大、并且耗时越...
2018-05-08 14:33:40
414
转载 Hadoop HA 架构详解
Hadoop HA 是什么?hadoop2版本中可以有多个namenode结点,一个是活跃(active)状态,一个是准备(standby)状态。(haoop 1不存在此特性)Hadoop HA架构详解1.1 HDFS HA背景HDFS集群中NameNode 存在单点故障(SPOF)。对于只有一个NameNode的集群,如果NameNode机器出现意外情况,将导致整个集群无法使用,直到NameNo...
2018-05-08 14:16:19
1703
原创 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
545
转载 基于阿里云HBase构建车联网平台实践
摘要: 1. 业务介绍 车纷享是国内首家进行汽车共享开发和运营的公司。旗下共享汽车平台采用新能源汽车作为运营工具以B2C+C2C汽车共享作为商业运营模式采用车联网技术作为运营管理技术目前已与国内多个城市建立合作。1. 业务介绍车纷享是国内首家进行汽车共享开发和运营的公司。旗下共享汽车平台采用新能源汽车作为运营工具,以B2C+C2C汽车共享作为商业运营模式,采用车联网技术作为运营管理技术,目前已与国...
2018-03-28 19:20:50
2336
翻译 阿里开源框架-JarsLink-【JAVA的模块化开发框架】
JarsLink (原名Titan) 是一个基于JAVA的模块化开发框架,它提供在运行时动态加载模块(一个JAR包)、卸载模块和模块间调用的API。需求背景 应用拆分的多或少都有问题。多则维护成本高,每次发布一堆应用。少则拆分成本高,无用功能很难下线。 故障不隔离。当一个系统由多人同时参与开发时,修改A功能,可能会影响B功能,引发故障。 多分支开发引发冲突。多分支开发完之后合并会产生冲突...
2018-03-23 09:58:17
2009
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人