自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Coder Yang

Code Once ,Think Twice .

  • 博客(379)
  • 收藏
  • 关注

原创 从移动端测试开发实习到微信后台和字节基础架构开发实习(春招总结)

文章目录一、曾经1.1 回顾二、转变2.1 初次接触 SSM 框架2.2 尝试阅读 Spring 和 Zookeeper 的源码2.3 阅读 Raft 和 Zab 等 Paper2.4 实践分布式键值存储系统2.5 大量底层技术资料的阅读三、春招3.1 记述3.2 感受3.3 总结一、曾经1.1 回顾  今天是 2020年3月10日,在晚上五点多的时候我终于如愿以偿的收到了梦寐以求的腾讯 w...

2020-03-10 22:23:31 1045 7

原创 从实践 APT 到深入理解 Lombok

文章目录一、概述1.1 起因1.2 疑问二、前提2.1 Java 编译器的工作流程2.2 关于 Lombok2.3 关于 Javac 的源码三、求证3.1 Lombok 中的注解和 Spring 中的注解有什么区别?3.2 Lombok 到底是生成新的 Java 源文件还是修改已有的 Java 源文件?3.3 如果是修改已有的 Java 源文件那 Lombok 又是怎么实现的呢(源码解析)?3.3...

2019-12-13 19:05:05 1536 1

原创 通过字节码分析 Java 语言和 Java 虚拟机如何看待 boolean 类型

文章目录一、概述二、实例代码和指令2.1 示例代码和指令2.2 运行结果三、探究 boolean 类型3.1 指令解析3.2 JASM 文件3.3 .class 字节码文件3.4 操作解析和原理分析四、探究 boolean 的掩码处理4.1 概述4.2 求证4.3 解析五、内容总结5.1 总结一、概述  JAVA 中的 boolean 类型是我们经常使用的一个类型,但是我们对其了解可能是仅限于...

2019-12-08 23:20:56 684 1

原创 基于 RICS-V 架构的单周期处理器设计(含所有格式指令)—— 控制信号选取及代码结构分析

文章目录一、概述二、设计过程2.1 选取指令2.2 指令功能简述2.3 设计过程概述2.4 扩展码取值2.5 三种 ALU 操作信号2.5.1 操作信号取值2.5.1 操作信号编码2.6 控制信号取值三、代码实现3.1 扩展码取值3.2 控制信号取值3.3 逻辑代码结构分析3.4 仿真代码结构分析3.5 其余文件分析3.5.1 inst_rom.data 指令存储器3.5.2 data_rom.d...

2019-12-02 20:21:19 9770 7

原创 Zookeeper 源码解析——服务端与客户端网络通信

文章目录一、概述二、涉及的核心类2.1 核心类简介三、核心源码解析3.1 Standalone 模式下建立 Netty 网络连接3.2 配置 Netty3.3 接收并处理请求3.4 发送响应四、源码总结4.1 接收请求4.2 发送响应五、内容总结5.1 ByteBuffer.slice()5.2 Netty.CompositeByteBuf5.3 零拷贝队列六、思考5.1 为什么 Zookeepe...

2019-11-23 09:56:50 748

原创 Zookeeper 源码解析——客户端网络通信

文章目录一、概述二、 Zookeeper 中的 RPC 网络数据结构2.1 协议数据结构2.2 核心数据结构 Packet三、核心源码解析3.1 建立 Netty 网络连接3.2 SendThread 从 outgoingQueue 获取并发送 Packet3.3 同步版 RPC 调用流程(Create API)3.3.1 创建 Packet 并入队 outgoing (且 Packet.Wait...

2019-11-21 20:56:26 549

原创 6.824 Fault-tolerant key/value storage system v1.0(五)(System raft algorithm code structure)

一、概述二、结构概述2.1 整体结构示意图  2.2三、详述结构细节3.1 Raft Timer3.2 Raft Worker3.3 Raft RPC Sender And Handler四、

2019-11-13 15:03:23 368

原创 6.824 Fault-tolerant key/value storage system v1.0(四)( Brief description of code architecture)

文章目录一、概述二、系统介绍2.1 概述2.2 支持操作三、系统整体结构3.1 系统整体结构示意图3.2 系统结构划分3.3 系统各部分之间的关联3.4 系统各部分之间调用的细节四、系统源码五、内容总结一、概述  在这篇博文中将整理一下到 Lab 3B 为止的系统结构,并在后续的博文中开启对于整个系统关键技术点实现思路的记述。二、系统介绍2.1 概述  该服务为通过 Get/Put/A...

2019-11-11 16:10:19 398

原创 Zookeeper Zab 协议解析——Zookeeper 源码解析之 Fle算法与 Zab协议(五)

文章目录一、概述二、Zab 协议描述2.1 前文回顾三、Fle 算法描述3.1 前文回顾3.2 算法流程图——网络层3.3 算法流程图——应用层四、Zab 协议与 Fle 算法4.1 Zab 协议与 Fle 算法的关系4.2 Fle 算法所做的优化五、参考文献一、概述  在前面的博文中我们已经分别分析过了Zookeeper中的Zab协议和Fle算法,在这篇文章中我们将对两者的执行流程进行总结,...

2019-11-09 13:04:22 602

原创 Zookeeper Zab 协议解析——Zookeeper 源码解析之再探领导者选举算法实现(四)

文章目录一、概述二、初探 FLE 算法实现三、源码解析3.1 问题探究3.2 WorkerReceiver 中的选举逻辑3.3 FLE 算法代码实现中的消息传递四、内容总结一、概述  在上一篇博文中我们分析了FastLeaderElection中的lookForLeader方法中的选举逻辑,当时分析完后觉得逻辑还是比较合理的,但是今早刷牙的时候突然产生了一个疑问,如果lookForLeader...

2019-11-08 17:49:18 382

原创 Zookeeper Zab 协议解析——Zookeeper 源码解析之初探领导者选举算法实现(三)

文章目录一、概述二、核心类简介2.1 QuorumCnxManager三、源码解析3.1 选举入口分析3.2 选举初始化3.3 选举流程四、内容总结一、概述  本篇博文会从 Zookeeper 中 FLE(Fast Leader Election) 算法的代码实现入口着手,依次分析 FLE 算法的初始化流程和主要的选举流程的代码实现,并着重分析 FLE 算法中在 Zookeeper 启动时的选...

2019-11-07 22:03:01 1079 1

原创 Zookeeper Zab 协议解析——算法整体描述(一)

文章目录一、概述二、协议简介三、协议算法解析3.1 算法概述3.2 变量介绍3.3 Phase 1 发现 (Discovery)3.4 Phase 2 同步 (Synchronization)3.5 Phase 3 广播 (Broadcast)四、参考文献一、概述  这篇博文算是对 Zookeeper Zab 协议的一次整体概述,主要是根据论文描述对 Zab 协议三大主要阶段详细过程的分析,先...

2019-11-03 13:53:06 1379

原创 Spring 源码解析——SpringMVC 源码解析(初探 HandlerMapping、HandlerExecutionChain 和 HandlerAdapter)(三)

目录一、概述二、功能介绍和部分源码解析2.1 HandlerMapping2.2 HandlerExecutionChain2.3 HandlerAdapter三、内容总结写文章不易,转载请标明出处。同时,如果你喜欢我的文章,请关注我,让我们一起进步。一、概述通过上一篇博文中对SpringMVC 处理请求流程的源码分析,已经对 SpringMVC 中...

2019-10-12 20:11:55 719 1

原创 Spring 源码解析——SpringMVC 源码解析(SpringMVC 处理请求流程)(二)

目录一、概述二、流程图(第一版)三、源码分析3.1 DispatcherServlet 接收请求3.2 DispatcherServlet 处理请求3.3 DispatcherServlet 分发请求(核心处理逻辑)3.4 HandlerAdapter 调用流程(RequestMappingHandlerAdapter)—— 调用处理器方法3.5HandlerA...

2019-10-11 21:05:25 508

原创 Spring 源码解析——SpringMVC 源码解析(Spring 整合 Spring MVC )(一)

目录一、概述二、涉及技术2.1 SPI 机制2.2 Servlet 中的ServletContainerInitializer 接口2.3Spring MVC 中的层级容器(Context Hierarchy)及其配置三、源码解析(基于注解配置)3.1Spring Web 容器初始化器(示例代码仅提供思路引导)3.2调用 Spring Web 容器初始化器...

2019-10-09 15:13:51 905 1

原创 Spring 源码解析——IOC 源码解析(BeanPostProcessor 系列之体系概述)(六)

写文章不易,转载请标明出处。同时,如果你喜欢我的文章,请关注我,让我们一起进步。一、概述在前面的 BeanPostProcessor 系列博文中我们已经对几个常用的 BeanPostProcessor 实现类的源码进行了解析,但是在分析的过程中我慢慢的发现因为缺少对 BeanPostProcessor 整个体系的认知和了解,导致对每一个 BeanPostProcessor 实现类的...

2019-10-04 18:43:52 690

原创 Spring 源码解析——IOC 源码解析(BeanPostProcessor 系列之 AutowiredAnnotationBeanPostProcessor)(五)

写文章不易,转载请标明出处。同时,如果你喜欢我的文章,请关注我,让我们一起进步。一、概述在前面的一篇博文中我们已经分析了ApplicationContextAwareProcessor 这个 BeanPostProcessor实现类,在这篇博文中我们将继续前行来分析 Spring 当中另一个至关重要的AutowiredAnnotationBeanPostProcessor,这...

2019-09-30 19:50:56 1470 2

原创 Spring 源码解析——IOC 源码解析(单例 Bean 的循环依赖解决方案)(三)

写文章不易,转载请标明出处。同时,如果你喜欢我的文章,请关注我,让我们一起进步。一、概述在上一篇博文中我们已经重点分析了 Bean 的实例化和初始化的主体流程,在这篇博文中我们会在其基础上进一步探究 Bean 的初始化过程,并通过源码来分析在 Spring 中是怎样解决Bean 循环依赖问题的。但是在这里我们需要明确的一点是我们在这里所分析的是 Bean 的作用范围为单例(S...

2019-09-27 19:03:44 451

原创 Spring 源码解析——@Configuration 作用及其实现原理(一)

目录一、概述二、相关技术2.1 @Configuration 作用2.2 BeanDefinition 和BeanDefinitionMap2.3 CGLIB 简介三、源码解析3.1 概述3.2register(Bean 注册流程)3.3 refresh(BeanClass 的替换)四、内容总结写文章不易,转载请标明出处。同时,如果你喜欢我的文...

2019-09-21 20:29:49 3681

原创 Java J.U.C 中 AQS 子类 ReentrantLock 源码分析(一)

写文章不易,转载请标明出处。同时,如果你喜欢我的文章,请关注我,让我们一起进步。一、概述对于 Java 中的 JUC 包大家应该都是非常熟悉的,JUC 的全称是 Java.util.concurrent ,翻译过来也就是 Java 并发编程工具类包,在这个包中有许多在我们并发编程过程中经常使用到的线程安全的容器类和同步锁等一些组件,而在这个包中很多的线程安全都是基于基础底层的 AQ...

2019-09-16 18:36:17 468 1

原创 Java 秒杀系统性能优化(zookeeper 实时同步集群 JVM 缓存 )

一、概述在该系列的前面几篇博文中我们已经分析过了使用不同的技术对初始版的秒杀系统进行性能优化,同时在上一篇博文中我们使用了 JVM 缓存技术来对系统进行优化。在单机的情况下我们使用 JVM 缓存技术来对已售罄的商品进行缓存是没有问题的,可以在一定程度上优化系统的性能,并且在代码抛出异常时我们也只需进行简单的回滚(移除列表中的商品)即可。但是当我们的系统需要应对更多的流量时,我们可能会采用集...

2019-09-12 19:49:33 2176 2

原创 关于 Android 中 TabLayout 下划线适配文字长度解析(附清晰详细的源码解析)

温故而知新 坚持原创 请多多支持一、问题背景假期在做项目的时候,当时遇到了一个需求就是需要使用 TabLayout + ViewPager 来实现一个上部导航栏的动态效果,并且希望下划线的长度等于或者小于导航栏中文字的宽度,当时从网上查询资料的时候是发现目前大概是有这么三种思路来实现,第一种比较简单,就是直接通过自定义 CustomView 并在代码中动态设置给 Tab 即可,而另一种...

2019-04-08 20:46:04 4846

原创 浅析 Android 中 Binder 的上层原理

纸上得来终觉浅,绝知此事要躬行Binder 一直是我心里的一个坎儿,因为不管是 Android 中的哪个组件,都总是会或多或少的涉及 Binder。对于 Binder 是 Android 为了提升其自身的进程间通信效率而发明的一种进程间通信的方式,其底层就涉及到了操作系统方面的一些内容,比如用户态、内核态和内存映射等等一系列的底层知识。也因为它的底层体系太过复杂,所以一直不能很好的去理...

2019-04-05 21:25:46 378

原创 实习面试结束后的一些思考(已拿腾讯实习 offer)

机会只留给有准备的人先简单自我介绍一下吧,我是一名中末流 211大学的一名大二学生,也就是 21届毕业生,起初是在大一开始之前的暑假里在学姐的建议下提前进行了 C语言的学习,然后开学之后的话继续进行了一小段时间的 C语言学习后就进入到了数据结构的学习当中,学习的基本方式也就是通过看浙大的网课和做它配套的习题。在完成了数据结构的学习之后,我借着七天的国庆假期(因为自己的家离学校比较远所以...

2019-03-30 16:12:23 2590 2

原创 关于求解最长公共子序列的两种思路

一、题目描述求取两个给定序列的最长子序列,仅需要求取出其中一个最长子序列即可。比如序列 X 为 ABCBDAB ,序列 Y 为 BDCABA,则其公共最长子序列之一为 BCBA(可能不唯一)。关于求解所有最长公共子序列的思路可以移步我的另一篇博文:https://blog.csdn.net/qq_40697071/article/details/89059844二、解题思路...

2019-03-27 21:46:55 7033 2

原创 谈谈关于 AsyncTask 、HandlerThread 和 IntentService 的源码

一、开篇语因为最近在进行 Android 方面的一些知识点的整理,发现有一些比较细节的问题都是以前没有注意到的,而且之前对于 AsyncTask、HandlerThread 和 IntentService 的理解也不是很透彻,所以正好借着这次机会进行一下整理,捋清思路,增强自己对它们的更深一层的理解。这篇博文的话,我们会主要从这三个类的概念、使用的方式、源码和一些需要注意细节进行讲解,因为...

2019-03-21 17:32:09 649

原创 关于 curl: (52) Empty reply from server 问题的一种解决方案

一、问题描述  最近在 K8s 上面部署了一个应用,应用 Container 的 Command 中包含需要使用 curl -F file=@“filename” 来上传文件的命令,这条命令在本地环境中测试时没有出现问题,但是一到容器中就会报 curl: (52) Empty reply from server 的错误,并且此时服务器端其实已经接收到了数据。二、问题分析  因为该问题当 curl 运行在本地时并未出现,因此推断该错误是由 curl 所引发的,且通过添加 -v 参数来获取 curl 在

2021-02-26 13:22:15 126996 1

原创 【计算机操作系统】存储管理的 C++ 实现(附源码)

文章目录一、实验目的二、实验内容2.1 实现多种页面置换算法并比较算法优劣三、流程图3.1 算法流程四、设计思想4.1 设计思路五、代码实现六、运行结果6.1 单道批处理(FCFS)七、结尾一、实验目的  存储管理的主要功能之一是合理地分配空间。请求页式管理是一种常用的虚拟存储管理技术。本实验的目的是通过请求页式管理中页面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式存储管理的页面置换算法。因为源码中我对一些关键步骤的注释已经比较清晰了,所以在本文中不会再对每一个细节都进行分析,只分析整体的代码

2020-06-14 21:06:24 8358 2

原创 【计算机操作系统】银行家算法和安全性算法的 C++ 实现(附源码)

文章目录一、实验目的二、实验内容2.1 数据结构2.2 银行家算法2.3 安全性算法三、流程图3.1 单道批处理系统的作业调度四、代码实现五、运行结果5.1 初始化5.2 验证初始化状态的安全性5.3 进程1请求资源 1 0 2 并通过安全性检查,分配给它资源5.4 进程4请求资源 3 3 0 并因为其请求资源大于Available资源,因此让进程4等待5.5 进程0请求资源 0 2 0 并因为进行安全性检查时不存在安全序列,因此不分配资源5.6 进程0请求资源 0 1 0 并因为符合安全性检查,存在安全队

2020-06-13 17:53:55 2828 1

原创 【计算机操作系统】作业调度算法的 C++ 实现(附源码)

文章目录一、实验目的二、实验内容2.1 单道处理系统的作业调度2.2 多道程序系统的作业调度三、流程图3.1 单道批处理系统的作业调度四、设计思想4.1 设计思路4.2 代码解析六、代码实现七、结尾一、实验目的  用高级语言编写和调试一个或多个作业调度的模拟程序,以加深对作业调度算法的理解。因为源码中我对一些关键步骤的注释已经比较清晰了,所以在本文中不会再对每一个细节都进行分析,只分析整体的代码结构和所使用到的设计模式。  博客内所有文章均为 原创,所有示意图均为 原创,若转载请附原文链接。二、

2020-06-12 20:37:40 8511 1

原创 【计算机操作系统】进程调度算法的 C++ 实现(附源码)

文章目录一、实验目的二、实验内容2.1 优先权法和轮转法2.2 算法描述三、流程图3.1 优先权法3.2 轮转法四、实验要求五、设计思想5.1 总体思想5.2 数据结构5.3 关键代码解析六、代码实现七、源码地址一、实验目的  多道程序设计中,经常是若干个进程同时处于就绪状态,必须依照某种策略来决定那个进程优先占有处理机。因而引起进程调度。本实验模拟在单处理机情况下的处理机调度问题,加深对进程调度的理解。二、实验内容2.1 优先权法和轮转法简化假设1)进程为计算型的(无I/O)2)进程状态

2020-06-11 22:07:35 6457 2

原创 Shell 练习 —— 输出每行和的top10

文章目录一、要求二、脚本2.1 随机数生成脚本2.2 统计脚本三、运行结果一、要求  一个文本,每行两列,都是数字,输出每行和的top10。二、脚本2.1 随机数生成脚本#!/bin/bashfor i in {1..10000}do echo ""$RANDOM" "$RANDOM"" >> num.datdone2.2 统计脚本#!/bin/bash...

2020-03-25 16:37:06 779

原创 Shell 练习 —— 输出top10的数字

文章目录一、要求二、脚本2.1 随机数生成脚本2.2 统计脚本三、运行结果一、要求  一个文本,每行一个数字,输出top10的数字。二、脚本2.1 随机数生成脚本#!/bin/bashfor i in {1..10000}do echo $RANDOM >> num.datdone2.2 统计脚本#!/bin/bash# 将数据拷贝到新文件中操作c...

2020-03-25 10:54:32 877

原创 关于 pure virtual method called terminate called without an active exception 解决方案

文章目录一、问题描述二、解决思路三、解决方案一、问题描述  因为最近在学习 C++ 并实践导师给的项目,在实践的过程中基本每天都会踩坑,今晚遇到了一个困扰了我好几个小时的问题。具体问题是当程序运行时总会报 pure virtual method called terminate called without an active exception 这个错误。  对于这个问题我在网上查询了很...

2020-03-16 22:41:22 7811 1

原创 LeetCode 精选 TOP 面试题(Java 实现)—— 反转链表 II

文章目录一、题目描述1.1 题目1.2 知识点1.3 题目链接二、解题思路2.1 解题思路三、实现代码3.1 代码实现一、题目描述1.1 题目反转链表 II反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。说明:1 ≤ m ≤ n ≤ 链表长度。示例:输入: 1->2->3->4->5->NULL, m = 2, n = 4...

2020-02-22 08:23:07 361

原创 LeetCode 精选 TOP 面试题(Java 实现)—— 变异版二叉搜索树与双向链表

文章目录一、题目描述1.1 题目1.2 知识点二、解题思路2.1 解题思路三、实现代码3.1 代码实现一、题目描述1.1 题目变异版二叉搜索树与双向链表输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。为了让您更好地理解问题,以下面的二叉搜索树为例:我们希望将这个二叉搜索树转化为双向循环链表。链表...

2020-02-21 07:18:34 309

原创 LeetCode 精选 TOP 面试题(Java 实现)—— 变异版寻找重复数

文章目录一、题目描述1.1 题目1.2 知识点二、解题思路2.1 解题思路2.2 优化思路2.3 类似题型三、实现代码3.1 代码实现一、题目描述1.1 题目变异版寻找重复数给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数,找出所有重复数。示例 1:输入: = 4,5,7,1,4,6,5输出: = ...

2020-02-18 11:48:46 265

原创 LeetCode 精选 TOP 面试题(Java 实现)—— 最小路径和

文章目录一、题目描述1.1 题目1.2 知识点1.3 题目链接二、解题思路2.1 解题思路三、实现代码3.1 代码实现(动态规划)一、题目描述1.1 题目最小路径和给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[ [1,3,1], [1,5,1],...

2020-02-16 07:36:18 434

原创 LeetCode 精选 TOP 面试题(Java 实现)—— 完全平方数

文章目录一、题目描述1.1 题目1.2 知识点1.3 题目链接二、解题思路2.1 解题思路2.2 相似问题三、实现代码3.1 代码实现(动态规划)3.2 代码实现(四平方定理)一、题目描述1.1 题目完全平方数给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, …)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。示例 1:输入: n = 1...

2020-02-08 08:05:49 245

原创 LeetCode 精选 TOP 面试题(Java 实现)—— 奇偶链表

文章目录一、题目描述1.1 题目1.2 知识点1.3 题目链接二、解题思路2.1 解题思路三、实现代码3.1 代码实现一、题目描述1.1 题目奇偶链表给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes)...

2020-02-07 09:15:04 257 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除