自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小牛肉的博客

颜值即生产力

  • 博客(147)
  • 资源 (2)
  • 收藏
  • 关注

原创 从零开始设计一个轻量级分布式 RPC 框架

本项目基于 Spring + Netty + Zookeeper + Protostuff 从零开始设计实现一个轻量级的分布式 RPC 框架,内含详细设计思路以及开发教程,通过造轮子的方式来学习,深入理解 RPC 框架的底层原理。相比简历上一律的 xxxx 系统,造轮子很显然更能赢得面试官的青睐

2020-12-19 22:36:52 1946 4

原创 阿里巴巴暑期实习Java面经,灵犀互娱一面

场景题 10万个用户数据 显示一个前100的排行榜可以怎么实现。高并发服务器内的主从reactor模型是如何实现的?delete和 private私有的区别?如果UDP想要实现安全通信,需要增添什么属性。如何保证线程安全?tcp 协议 和 UDP协议 了解吗。动态多态是如何实现的?cookie和session了解吗。哈希表熟悉吗,可以如何实现?开散列版本什么时候需要扩容。进程 线程 协程 的区别?http了解吗 有无状态。

2025-04-01 22:16:18 201

原创 26届暑期实习Java面经一面,淘天,03.28

分布式系统及事务的理解,包括CAP理论和两阶段提交的应用。多线程在Netty中的应用及线程数设置的判断依据。线程安全的解决方法及Atomic类的底层原理。部署时使用的服务器数量及其选择过程。Redis的使用及其消息队列的实现。RPC项目中使用的中间件及其作用。同步与异步、阻塞与非阻塞的理解。多路复用在RPC框架中的体现。客户端调用过程的详细描述。MySQL索引的优化经验。深度翻页问题的解决方案。RPC协议的主要内容。Netty的调优经验。

2025-03-31 22:26:15 153

原创 字节暑期实习一面,番茄小说,3.27

tcp一定能保证数据传输么,如果12345五个数据报3丢了怎么办。事务隔离级别,分别会有怎样的问题,举具体场景分析问题。输入url,到显示在网页上,经历了什么过程。读未提交和读已提交区别。tcp和udp的区别。

2025-03-30 21:29:10 393

原创 是谁的项目还在烂大街?一个基于 SpringBoot 的高性能短链系统

看了几百份简历,真的超过 90% 的小伙伴的项目是商城、RPC、秒杀、论坛、外卖、点评等等烂大街的项目,人人都知道这些项目烂大街了,但大部分同学还是得硬着头皮做,没办法,网络上能找到的、教程比较完善的就这些项目了,做的话好歹有个项目,不做那就真能写学校做的垃圾学生管理系统了。

2024-05-24 15:44:32 1364

原创 拿去面试!一个基于 DDD 的高性能短链系统

(注意,这个仓库目前是 private 的,需要邀请)高性能短链系统 EZLink!

2024-05-08 09:46:00 271

原创 病毒和战争齐飞,24 届秋招会更惨吗?

2022 壬寅年,病毒和战争齐飞,流言和混乱四起。2023 届秋招的残酷已不需要再多说,各大平台校招社招一片哀嚎,如果说往年的各种帖子是在贩卖焦虑,今年就是实打实的就业寒冬。

2022-11-24 10:14:35 1073

原创 面试官问我 “String 的不可变真的是因为 final 吗“,我回答 “是“ 然后就被挂了。。。。。。

面试官:`String` 的不可变真的是因为 `final` 吗?我:是.....是的吧面试官:OK,你这边还有什么问题吗?我:卒......

2022-06-02 10:36:45 556 1

原创 最左前缀有手就会,那索引下推呢?

联合索引的最左前缀原则属于面试高频题,想必大部分同学都知道一些,但是,那些不符合最左前缀的部分,会怎么样呢(索引下推)索引下推不算高频题,知道的同学应该不是很多(不过并不代表有啥难度哈,挺简单的),学起来装波杯老规矩,背诵版在文末。点击 大厂面试火箭计划 可以直达我收录整理的各大厂面试真题引子看下面这张用户表,包含主键 id、身份证号 id_card、姓名 name、年龄 age和性别 sex,并且在 id_card 上建立了辅助索引(普通索引/非聚集索引)如果现在有一个高频请求,要根据市民的

2021-12-17 10:03:29 297

原创 心态崩了,我怎么知道实际生产环境的 B+ 树索引有多少层?

心态崩了

2021-09-07 09:57:59 287 1

原创 携程二面:讲讲 MySQL 中的 WAL 策略和 CheckPoint 技术

面试官:讲讲 MySQL 中的 WAL 策略和 CheckPoint 技术

2021-07-01 09:58:20 417 1

原创 从头捋了一遍 Java 代理机制,收获颇丰

动态代理机制使用了反射,Spring 中的 AOP 由于使用了动态代理,所以也相当于使用了反射机制。那么,代理是什么?动态代理又是什么?动态代理中是如何使用反射的?

2021-06-06 12:11:26 249

原创 「重磅开篇」形成完善的多线程世界观

今天我斗胆造一根线,站在小白的角度,讲讲多线程这部分我们到底要学啥,按照什么样的顺序去学,帮助各位建立一个比较完善的知识体系,形成正确的多线程世界观。后续的文章我也基本上会按照这根线写下来。

2021-04-27 17:41:11 372

原创 从崩溃的选课系统,论为什么更安全的 HTTPS 协议没有被全面采用

0. 前言上一篇文章详细讲解了 HTTP 的相关原理,我们已经了解到了 HTTP 具有非常优秀和方便的一面,然而,HTTP 并非一个安全的协议。大家平常浏览网页的时候应该也能注意到,使用 HTTP 协议的网站,浏览器都会认定这是一个不安全的网站,提醒用户注意防范(即便这是我们学校的选课系统)。当然,这个不安全的含义指的是你在该网页输入的信息可能会被外界攻击者以非正常手段窃取,而不是说会被这个网页的开发者获取,毕竟浏览器咋能判断这个网页开发者是否存有异心,这个需要用户自行判断(手动滑稽 ????)那么

2021-02-01 17:20:35 485

原创 Java 小白成长记 · 第 6 篇「为什么说要慎用继承,优先使用组合」

在代码的编写过程中,避免冗余代码的出现是非常重要的,大段大段的重复代码必然不能够称之为优雅。所谓减少冗余代码,通俗来说就是实现一段代码多处使用,**在不污染源代码的前提下使用现存代码**,也就是代码**复用**,避免重复编写。然而,对于像 C 语言等面向过程的语言来说,复用通常指的仅仅只是**复制代码**,任何语言都可通过简单的复制来达到代码复用的目的,显然这样做的效果并不好。

2021-01-29 22:29:29 323

原创 超详细 DNS 协议解析

为了保证网址的正常访问,域名解析协议(DNS)其实在背后做出了很多努力,本文将透彻讲解 DNS 协议的原理,了解我们每天都在接触的网址到底是怎么工作的。

2021-01-20 16:51:40 1377 3

原创 Java 小白成长记 · 第 4 篇《对象的初始化和清理》

"不安全"的编程是造成编程代价昂贵的罪魁祸首之一。有两个安全性问题:初始化和清理。

2021-01-17 22:02:58 228

原创 别再恐惧 IP 协议(万字长文 | 多图预警)

IP 协议是整个 TCP/IP 协议族的核心,也是构成互联网的基础,位于 TCP/IP 模型的网络层

2021-01-15 17:26:21 394 1

原创 网络基础扫盲 | 数据传输方式和交换方式

若按数据传输的顺序可分为:并行传输和串行传输;- 若按数据传输的同步方式可分为:同步传输和异步传输;- 若按数据传输的流向和时间关系可分为:单工、半双工和全双工数据传输(通信)

2021-01-12 18:18:53 6775 1

原创 原来 TCP 为了保证可靠传输做了这么多

关于 TCP 的话,除了三四次握手就是可靠传输了,高频重点知识点,大家还是搞清楚比较好

2021-01-10 18:20:40 261

原创 关于 TCP 三次握手和四次挥手,满分回答在此

在面试中,计算机网络的 TCP 三次握手和四次挥手是很常见的问题,但是在实际面试中,面试官会更愿意听到怎样的回答呢?详细程度是怎样的?

2021-01-07 22:24:38 533

原创 Java小白成长记 · 第 2 篇《HelloWorld》

这是一个技术疯狂迭代的时代,各种框架层出不穷,然而底层基础才是核心竞争力。博主(小牛肉)在现有的知识基础上,以上帝视角对 Java 语言基础进行复盘,汇总《Java 小白成长记》系列,力争从 0 到 1,全文无坑。

2021-01-06 19:33:06 291 2

原创 Java小白成长记 · 第 1 篇《万物皆对象》

这是一个技术疯狂迭代的时代,各种框架层出不穷,然而底层基础才是核心竞争力。博主(小牛肉)在现有的知识基础上,以上帝视角对 Java 语言基础进行复盘,汇总《Java 小白成长记》系列,力争从 0 到 1,全文无坑。

2021-01-06 19:30:04 297

原创 使用 PageHelper 前先学会手写一个分页查询吧

分页是日常开发中很常见的需求,本文带大家基于 MyBatis 和 Spring Boot 一步一步写一个分页查询,了解分页查询的基本逻辑。当然,大家熟悉之后,日常开发中还是推荐利用插件/框架来提高编码效率(比如非常优秀的 MyBatis 分页插件 PageHelper)

2021-01-05 17:26:00 568

原创 一文读懂两台计算机之间是如何通信的

本文将从小白的角度,讲解两台计算机之间是如何精确的找到对方的位置并发送和接收消息的,以帮助读者从宏观角度把握计算机网络的体系结构。

2021-01-02 16:39:56 7236

原创 图解数据结构:线性表

1. 数据结构三要素1)逻辑结构 指的是数据间的逻辑关系,与数据的存储无关,独立于计算机之外。它又分为线性结构和非线性结构线性结构:线性表,栈,队列,串,数组和广义表非线性结构:树,图,集合2)存储结构 是逻辑结构的存储映像,就是数据间的关系在计算机中的表现形式。也成为物理结构。它又分为 4 类:顺序存储 ,链式存储,索引存储和散列存储顺序存储:把逻辑上相邻的元素存储在物理位置也相邻的存储单元里链式存储:不要求物理位置的相邻,借助指示元素存储地址的指针表示元素之间的逻辑关系索引存储:在

2020-12-29 15:43:43 1175 1

原创 编写 Netty / RPC 客户端【框架代码分析】

RPC 客户端做的事情很简单:建立连接并向服务端发送请求 `send`(该方法的真正调用是在代理中)接收服务端的响应消息 `channelRead0`

2020-12-22 11:48:34 399 1

原创 一文读懂 Java 静态代理和动态代理【前置知识点】

代理模式简单来说就是我们使用代理对象来代替对真实对象(real object)的访问,这样就可以在不修改原目标对象的前提下,提供额外的功能操作,扩展目标对象的功能。

2020-12-21 21:50:25 452

原创 编写 Netty / RPC 服务端【框架代码分析】

RPC 服务端要做的事有以下几点:第一点:接收(反序列化 / 解码)客户端的请求消息并获取客户端请求的方法名、参数类型、具体参数,然后通过反射调用客户端请求的方法第二点:将方法的执行结果封装进 RpcResponse 发送给客户端第三点:定义一个注解,用户可使用该注解暴露服务(仿 Dubbo)

2020-12-21 21:47:23 264

原创 Java 注解【前置知识】

Java 注解 Annotation 是从 Java5 开始添加到 Java 的。注解也是一种类的类型,他是用的修饰符为 @interface

2020-12-21 21:46:23 213

原创 Spring 之 IoC 详解【前置知识点】

Spring 是分层的 Java SE/EE应用 full-stack 轻量级开源框架,以 IoC(Inverse Of Control: 控制反转)和 AOP(Aspect Oriented Programming:面向切面编程)为内核,提供了展现层 Spring MVC 和持久层 Spring JDBC 以及业务层事务管理等众多的企业级应用技术,还能整合开源世界众多著名的第三方框架和类库,逐渐成为使用最多的Java EE 企业应用开源框架。

2020-12-21 11:49:01 230

原创 Netty 是如何实现 TCP 心跳机制与断线重连的【前置知识点】

所谓心跳机制 / 心跳检测, 即在 TCP长连接中 , 客户端每隔一小段时间向服务器发送一个数据包,通知服务器自己仍然在线, 以确保 TCP连接的有效性.

2020-12-21 11:48:01 692

原创 Netty 实战:实现聊天功能【前置知识点】

通过本实例掌握 Netty 的基本使用

2020-12-21 11:47:25 275

原创 从 BIO、NIO 到 Netty【前置知识点】

详细讲解从 BIO、NIO 到 Netty 的发展史

2020-12-21 11:46:15 439

原创 Java 网络编程 — Socket 编程【前置知识点】

网络编程是指编写运行在多个设备(计算机)的程序,这些设备都通过网络连接起来。学习 Socket 网络编程有助于我们了解 Netty

2020-12-21 11:45:02 301

原创 网络传输实体类与序列化【框架代码分析】

RpcRequest 封装 RPC 请求,RpcResponse 封装 RPC 响应,要在网络传输数据就必然涉及到序列化和反序列化,本框架使用 Ptotostuff 实现

2020-12-20 20:45:49 295

原创 序列化协议 Protostuff 基本使用【前置知识点】

protostuff 是针对 Java 的序列化框架,基于 Google protobuf,但是提供了更多的功能和更简易的用法。虽然更加易用,但是不代表 ProtoStuff 性能更差。

2020-12-20 20:37:33 365

原创 序列化介绍以及序列化协议对比【前置知识点】

序列化: 将数据结构或对象转换成二进制串的过程反序列化:将在序列化过程中所生成的二进制串转换成数据结构或者对象的过程

2020-12-20 20:35:41 898

原创 彻底读懂 Java 反射【前置知识点】

在 Java 运行时环境中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为 Java 语言的反射机制

2020-12-20 20:34:30 337

原创 Zookeeper 安装与基本使用【前置知识点】

Zookeeper 安装与 Zookeeper 客户端的开源框架 Curator / ZkClient 的基本使用

2020-12-20 16:01:50 277

ButterKnife-jar包.rar

ButterKnife是一个专注于Android系统的View注入框架,以前总是要写很多findViewById来找到View对象,有了ButterKnife可以很轻松的省去这些步骤。是大神JakeWharton的力作,目前使用很广。最重要的一点,使用ButterKnife对性能基本没有损失,因为ButterKnife用到的注解并不是在运行时反射的,而是在编译的时候生成新的class。项目集成起来也是特别方便,使用起来也是特别简单。

2020-02-12

Zxing-jar包.rar

精简google zxing库中的必要功能,包括二维码/条形码的生成和扫描. 解压资源后找到文件夹里面的zxing.jar即可使用

2020-02-12

空空如也

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

TA关注的人

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