IT
文章平均质量分 78
图灵学院
Java工程化、高性能及分布式、高性能、高架构。性能调 优、Spring,MyBatis,Netty源码分析和大数据等多个知识点高级进阶干货分享
展开
-
链路追踪 SkyWalking 源码分析 —— Agent 初始化
本文主要基于 SkyWalking 3.2.6 正式版 1. 概述 2. SkyWalkingAgent 3. SnifferConfigInitializer 3.1 Config 3.2 RemoteDownstreamConfig 4. Plugin 4.1 PluginBootstrap 4.2 ...转载 2019-08-27 17:29:01 · 2904 阅读 · 0 评论 -
一分钟理解 Token、Cookie、Session 的基佬关系
Cookie Session Token 小结 在Web应用中,HTTP请求是无状态的。即:用户第一次发起请求,与服务器建立连接并登录成功后,为了避免每次打开一个页面都需要登录一下,就出现了cookie,Session。CookieCookie是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一种方式。Cookie存储的数...转载 2019-08-21 17:11:47 · 117 阅读 · 0 评论 -
Java 自定义 ClassLoader 实现 JVM 类加载
定义需要加载的类 定义类加载器 编译需要加载的类文件 编译自定义的类加载器并支行程序 总结 定义需要加载的类为了能够实现类加载,并展示效果,定义一个Hello类,再为其定义一个sayHello()方法,加载Hello类之后,调用它的sayHello()方法。publicclassHello{publicstaticvoi...转载 2019-08-21 17:12:57 · 111 阅读 · 0 评论 -
Kafka 压测:3 台廉价服务器竟支撑 200 万 TPS
Kafka in 30 seconds This Benchmark The Setup Producer Throughput Consumer Throughput 这篇文章是关于LinkedIn如何用kafka作为一个中央发布-订阅日志,在应用程序,流处理,hadoop数据提取之间集成数据。无论如何,kafka日志一个好处就是廉价。百万级别的T...转载 2019-08-21 17:20:18 · 683 阅读 · 0 评论 -
JVM 调优(学习篇)
-XX:AutoBoxCacheMax -XX:+AlwaysPreTouch CMSInitiatingOccupancyFraction MaxTenuringThreshold ExplicitGCInvokesConcurrent -Xmx, -Xms NewRatio 概述公司的江南白衣写了一篇关键业务系统的JV...转载 2019-08-21 17:21:21 · 126 阅读 · 0 评论 -
目前最好用的开源分布式事务解决方案之一
导读相比于数据分片方案的逐渐成熟,集性能、透明化、自动化、强一致、并能适用于各种应用场景于一体的分布式事务解决方案则显得凤毛麟角。基于两(三)阶段提交的分布式事务的性能瓶颈以及柔性事务的业务改造问题,使得分布式事务至今依然是令架构师们头疼的问题。Apache ShardingSphere(Incubating)不失时机的在2019年初,提供了一个刚柔并济的一体化分布式事务解决方案。如...转载 2019-08-21 17:24:07 · 1069 阅读 · 0 评论 -
消息中间件 RocketMQ 源码解析 —— 调试环境搭建
0. 友情提示 1. 依赖工具 2. 源码拉取 3. 启动 RocketMQ Namesrv 4. 启动 RocketMQ Broker 5. 启动 RocketMQ Producer 6. 启动 RocketMQ Consumer 0. 友情提示阅读源码之前,建议胖友对 RocketMQ 的文档已经熟读。目前 RocketM...转载 2019-08-21 17:26:14 · 243 阅读 · 0 评论 -
大型网站架构演进的五大阶段盘点
阶段一 从PHP 到Java 阶段二 分布式改造 阶段三 无线化改造 阶段四 中台改造 阶段五 国际化 一个创业公司起步时很可能就两台机器,一台Web 服务器、一台数据库服务器,在一个应用系统中集成了所有功能模块,但随着业务的发展、流量的增长,单应用远远不能满足业务需求。下面我们一同来聊聊网站架构发展所经历的几次主要演进,包括:从PHP 到Jav...转载 2019-08-21 17:28:41 · 144 阅读 · 0 评论 -
Java 中 long 和 double 的原子性?
JVM中对long的操作是不是原子操作? 为什么对long的操作不是原子的? 在硬件,操作系统,JVM都是64位的情况下呢? java中基本类型中,long和double的长度都是8个字节,32位(4字节)处理器对其读写操作无法一次完成,那么,JVM,long和double是原子性的吗?JVM中对long的操作是不是原子操作?首先,通过一段程序对long的原...转载 2019-08-12 21:07:31 · 140 阅读 · 0 评论 -
老大难的 Java ClassLoader 再不理解就老了
ClassLoader 做什么的? 延迟加载 各司其职 ClassLoader 传递性 双亲委派 Class.forName 自定义加载器 Class.forName vs ClassLoader.loadClass 钻石依赖 分工与合作 Thread.contextClassLoader ...转载 2019-08-16 14:54:15 · 130 阅读 · 0 评论 -
8 个不常见但很有用的 Git 命令
1. 拉取远程代码并且覆盖本地更改 2. 列出远程和本地所有分支 3. 强制更新远程分支 4. 回滚一个 merge 5. 修改之前的提交记录或者很久前提交的记录 6. 使用多个远程代码库,并且使用多个不同的 SSH Key 7. 和外部团队协作需要的维护多个远程库,合并其他库的更新的过程 8. 撤销 Git 的最后一次提交...转载 2019-08-16 14:44:59 · 86 阅读 · 0 评论 -
分布式作业系统 Elastic-Job-Cloud 源码分析 —— 作业调度(二)
本文基于 Elastic-Job V2.1.5 版本分享 1. 概述 2. 云作业操作 3. 云作业应用操作 1. 概述本文主要分享Elastic-Job-Cloud 云作业应用配置和云作业配置变更对作业调度的影响,作为《Elastic-Job-Cloud 源码分析 —— 作业调度(一)》的补充内容。所以需要你对作业调度已经有一定了解的基础上。2. 云作业操...转载 2019-08-15 16:35:17 · 174 阅读 · 0 评论 -
一起来学 SpringBoot 2.x | 第十七篇:轻松搞定文件上传
文件上传 导入依赖 配置文件 禁用 thymeleaf 缓存 具体代码 上传页面控制层主函数测试 总结 说点什么 SpringBoot是为了简化Spring应用的创建、运行、调试、部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身而不是外部的XML配置,我们只需遵循规范,引入相关的依赖就可...转载 2019-08-15 17:33:09 · 168 阅读 · 0 评论 -
什么影响了数据库查询速度?
1 影响数据库查询速度的四个因素 2 风险分析 3 网卡流量:如何避免无法连接数据库的情况 4 大表带来的问题(重要) 5 大事务带来的问题(重要) 1 影响数据库查询速度的四个因素2 风险分析QPS:Queries Per Second意思是“每秒查询率”,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内...转载 2019-08-15 19:21:47 · 202 阅读 · 0 评论 -
什么影响了 MySQL 性能?
1 影响性能的几个方面 2 MySQL体系结构 3 InnoDB存储引擎 4 InnoDB存储引擎的特性 5 什么是锁 6 如何选择正确的存储引擎 7 配置参数 8 性能优化顺序 1 影响性能的几个方面 服务器硬件。 服务器系统(系统参数优化)。 存储引擎。MyISAM: 不支持事务,表级锁。I...转载 2019-08-15 19:55:03 · 207 阅读 · 0 评论 -
有点优雅的处理你的 Java 异常
本文介绍 写在前面的话 什么情况需要自定义异常 什么情况需要手动处理异常 自定义业务异常 如何对异常进行分类 写在后面的注意 本文介绍本文仅按照业务系统开发角度描述异常的一些处理看法.不涉及java的异常基础知识,可以自行查阅《Java核心技术 卷I》和《java编程思想》可以得到更多的基础信息.写在前面的话笔...转载 2019-08-16 13:46:19 · 89 阅读 · 0 评论 -
记一次悲惨的 Excel 导出事件
背景 分析过程 看看XSSF和HSSF的区别 解决方案 总结 背景话说这个背景挺惨的,京东某系统使用了poi-ooxml-3.5-final做excel导出功能。起初使用该版本的poi的HSSF配合多线程生成excel,没有任何问题,后来改成了XSSF生成后上线,导出3w条数据时,cpu使用率达到了100%,内存达到了100%,打死了整个服务器!...转载 2019-08-16 14:23:20 · 271 阅读 · 0 评论 -
使用了 Eclipse 10 年之后,我终于投向了 IDEA
eclipse 的三足鼎立时期 eclipse 称霸 Intellij IDEA 横空出世 eclipse和idea,哪个更好? 开始使用的一些注意事项 三个很常用的设置按钮 常用的快捷键(mac) 我喜欢的特色功能 使用了eclipse10年之后,我终于投向了IDEA最近,改用了ide...转载 2019-08-16 14:31:23 · 117 阅读 · 0 评论 -
2018 中国开发者生态报告:Java 最流行
这样的现状在中国会有所不同吗? 目前在中国最流行的操作系统是什么? 目前在中国最流行的编程语言是什么? 存储 生活方式 结尾 2018年,JetBrains 发起了其标准的年度调查项目,开发人员生态系统调查 (The Developer Ecosystem 2018)。现在已将全部的原始数据公布在了官网,以便大家查阅。该项调查不仅揭示了...转载 2019-08-16 14:41:23 · 178 阅读 · 0 评论 -
Java 线程的 wait 和 notify 的神坑
问题一:通知丢失 问题分析 问题二:假唤醒 等待/通知的典型范式 等待方遵循原则 通知方遵循原则 也许我们只知道wait和notify是实现线程通信的,同时要使用synchronized包住,其实在开发中知道这个是远远不够的。接下来看看两个常见的问题。问题一:通知丢失创建2个线程,一个线程负责计算,一个线程负责获取...转载 2019-08-12 21:12:48 · 85 阅读 · 0 评论 -
经典面试:当你输入一个网址后回车,实际会发生什么?
1. 首先,在浏览器里输入要网址: 2. 浏览器查找域名的IP地址 3. 浏览器给web服务器发送一个HTTP请求 4. facebook服务的永久重定向响应 5. 浏览器跟踪重定向地址 6. 服务器“处理”请求 7. 服务器发回一个HTML响应 8. 浏览器开始显示HTML 9. 浏览器发送获取嵌入在HTML中的...转载 2019-08-12 21:26:36 · 196 阅读 · 0 评论 -
为什么 if else 不是好代码?
抛开剂量谈毒性都是耍流氓 如何重构掉这段代码 进一步优化 平时开发中if-else用的多吗?其实这是个再正常不过的coding习惯,当我们代码量小的时候用来做条件判断是再简单不过的了。但对于优秀程序员来说,这并不是好代码,为啥?抛开剂量谈毒性都是耍流氓在使用条件判断语句的地方,如果代码量小,需要判断的场景少的话,那么没有比 if-else 更合适...转载 2019-08-18 15:00:58 · 107 阅读 · 0 评论 -
Spring Boot 集成 Lombok 让代码更简洁
lombok的威力 IntelliJ IDEA安装lombok插件 Spring Boot项目中使用lombok 其它简化代码的特性介绍 推荐用法 lombok的威力简化代码IntelliJ IDEA安装lombok插件1.菜单栏 File > Settings > Plugins > Browse repos...转载 2019-08-23 13:33:31 · 131 阅读 · 0 评论 -
史上更全的 MySQL 高性能优化实战总结!
1 前言 2 优化的哲学 3 优化思路 3.1 优化什么 3.2 优化的范围有哪些 3.3 优化维度 4 优化工具有啥? 4.1 数据库层面 4.2 数据库层面问题解决思路 4.3 系统层面 4.4 系统层面问题解决办法 5 基础优化 ...转载 2019-08-23 13:40:20 · 154 阅读 · 0 评论 -
链路追踪 SkyWalking 源码分析 —— 调试环境搭建
本文主要基于 SkyWalking 3.2.6 正式版 1. 依赖工具 2. 源码拉取 3. 启动 SkyWalking Collector 4. 启动 SkyWalking Agent 5. 启动 SkyWalking Web UI 6. 彩蛋 1. 依赖工具 Maven Git JDK Intell...转载 2019-08-23 13:50:19 · 790 阅读 · 0 评论 -
微服务 2.0 技术栈选型手册
一、前言 二、选型准侧 三、微服务基础架构核心关注点 四、服务框架选型 五、运行时支撑服务选型 六、服务监控选型 七、服务容错选型 八、后台服务选型 九、服务安全选型 十、服务部署平台选型 十一、写在最后 一、前言2014年可以认为是微服务1.0的元年,当年有几个标志性事件,一是Mart...转载 2019-08-23 14:08:16 · 182 阅读 · 0 评论 -
一文读懂常用日志框架(Log4j、SLF4J、Logback)有啥区别
1、概述 2、Commons Logging 3、SLF4J 4、Log4j 5、Log4j2 6、Logback 总结 1、概述相信目前大多数情况下,不管是开源框架或是平时我们工作编码中都离不开一种框架,它就是日志框架。因此本节就简单了解一下我们常用日志框架的区别。2、Commons Loggingcommon-lo...转载 2019-08-23 14:11:17 · 208 阅读 · 0 评论 -
Redis 为何这么快?聊聊它的数据结构~
一、简介和应用 二、Redis的对象redisObject 三、String 四、List 4.1 linkedlist(双端链表) 4.2 ziplist(压缩列表) 五、Hash 六、Set 七、ZSet 本文内容思维导图如下:一、简介和应用Redis是一个由ANSI C语言编写,性...转载 2019-08-23 14:25:56 · 120 阅读 · 0 评论 -
图解从 URL 到网页通信原理
前言 一、文本对话--从请求到响应 二、TCP/IP 协议族介绍 三、基于TCP/IP通信过程 四、TCP建立连接及断开(重点补充) 小结 前言互联网的原始目的,就是为了传输文本(文本对话)。那我们使用浏览器发送请求后页面是如何呈现在我们面前的呢? 接下来由图片介绍下URL到呈现页面的过程。一、文本对话--从请求到响应客户端...转载 2019-08-27 16:53:31 · 462 阅读 · 1 评论 -
分布式作业系统 Elastic-Job-Cloud 源码分析 —— 本地运行模式
本文基于 Elastic-Job V2.1.5 版本分享 1. 概述 2. 配置 3. 运行 666. 彩蛋 1. 概述本文主要分享Elastic-Job-Cloud 本地运行模式,对应《官方文档 —— 本地运行模式》。有什么用呢?引用官方解答:在开发 Elastic-Job-Cloud 作业时,开发人员可以脱离 Mesos 环境,在本地运行...转载 2019-08-18 14:57:43 · 375 阅读 · 0 评论 -
什么是微服务?
一、微服务介绍 二、微服务实践先知 三、微服务重要部件 一、微服务介绍1. 什么是微服务在介绍微服务时,首先得先理解什么是微服务,顾名思义,微服务得从两个方面去理解,什么是"微"、什么是"服务", 微 狭义来讲就是体积小、著名的"2 pizza 团队"很好的诠释了这一解释(2 pizza 团队最早是亚马逊 CEO Bezos提出来的,意思是说单个服务的设计,所有...转载 2019-08-18 14:10:49 · 203 阅读 · 0 评论 -
让 CPU 告诉你硬盘和网络到底有多慢
简介 数据 参考资料 简介经常听到有人说磁盘很慢、网络很卡,这都是站在人类的感知维度去表述的,比如拷贝一个文件到硬盘需要几分钟到几十分钟,够我去吃个饭啦;而从网络下载一部电影,有时候需要几个小时,我都可以睡一觉了。最为我们熟知的关于计算机不同组件速度差异的图表,是下面这种金字塔形式:越往上速度越快,容量越小,而价格越高。这张图只是给了我们一个直观地感觉,并没有对...转载 2019-08-22 15:26:18 · 204 阅读 · 0 评论 -
OpenJDK 11 究竟比 8 快了多少?看看这个基准测试
开源规划调度引擎 OptaPlanner 官网发布了一个Java 11 GC 性能基准测试报告。当前使用量最大的 Java 版本是 8,所以测试者用 Java 8 与 Java 11 进行对比测试。GC 是影响 Java 性能的关键因素,所以测试自然也基于 GC,在 G1 GC 和并行 GC 下分别进行了测试,结果如下:Java 8 vs. Java 11使用 G1 GC...转载 2019-08-22 16:11:03 · 1305 阅读 · 0 评论 -
Java 各种锁的小结
一. synchronized 二. 对象锁、类锁、私有锁 三. ReentrantLock 四. ReentrantReadWriteLock 五. CAS 六. Condition 七. Semaphore 八. CountDownLatch 九. 锁的分类 十. 总结 一. synchroniz...转载 2019-08-22 16:20:02 · 93 阅读 · 0 评论 -
作业调度中间件 Elastic-Job-Cloud 源码分析 —— 高可用
本文基于 Elastic-Job V2.1.5 版本分享 1. 概述 2. Scheduler 集群 3. Scheduler 部署 4. Scheduler 故障转移 5. Scheduler 数据存储 5.1 RunningService 5.2 ProducerManager 5.3 TaskSchedu...转载 2019-08-22 16:41:17 · 403 阅读 · 0 评论 -
MySQL 每秒 570000 的写入,如何实现?
一、需求 二、实现再分析 三、XeLabs TokuDB 介绍 四、测试表 五、测试环境说明 一、需求一个朋友接到一个需求,从大数据平台收到一个数据写入在20亿+,需要快速地加载到MySQL中,供第二天业务展示使用。二、实现再分析对于单表20亿, 在MySQL运维,说真的这块目前涉及得比较少,也基本没什么经验,但对于InnoDB单表Ins...转载 2019-08-22 16:42:42 · 139 阅读 · 0 评论 -
教你用认知和人性来做最棒的程序员
例子1-技术选型 例子2-查线上问题 例子3-技术面试 例子4-最严重的线上故障 例子5-如何看待代码逻辑复用 例子6-开源的意义 关键点:如何提升认知 内心简单: 相信跨界的力量: 相信更高认知人的指引: 持之以恒地实践 不久前,在团队内部和大家做了一次分享,内容...转载 2019-08-22 16:43:59 · 256 阅读 · 0 评论 -
深入理解Java的三种工厂模式
一、简单工厂模式 二、工厂方法 三、抽象工厂 一、简单工厂模式简单工厂的定义:提供一个创建对象实例的功能,而无须关心其具体实现。被创建实例的类型可以是接口、抽象类,也可以是具体的类实现汽车接口publicinterfaceCar{StringgetName();}奔驰类publicclassBenzimplements...转载 2019-08-22 16:45:58 · 117 阅读 · 0 评论 -
分布式系统与消息的投递
网络请求 成功与失败 超时 消息投递语义 最多一次 最少一次 正好一次 投递顺序 序列号 状态机 协议 AMQP 协议 MQTT 协议 总结 消息是一个非常有趣的概念,它是由来源发出一个离散的通信单元,被发送...转载 2019-08-18 13:28:15 · 132 阅读 · 0 评论 -
谈谈架构:设计与原则
在此我向大家推荐一个架构学习交流群。交流学习群号:993070439 里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化、分布式架构等这些成为架构师必备的知识体系,还能领取免费的学习资源。...转载 2019-08-15 16:04:49 · 89 阅读 · 0 评论