- 博客(144)
- 资源 (2)
- 收藏
- 关注
原创 从零开始设计一个轻量级分布式 RPC 框架
本项目基于 Spring + Netty + Zookeeper + Protostuff 从零开始设计实现一个轻量级的分布式 RPC 框架,内含详细设计思路以及开发教程,通过造轮子的方式来学习,深入理解 RPC 框架的底层原理。相比简历上一律的 xxxx 系统,造轮子很显然更能赢得面试官的青睐
2020-12-19 22:36:52 1852 3
原创 是谁的项目还在烂大街?一个基于 SpringBoot 的高性能短链系统
看了几百份简历,真的超过 90% 的小伙伴的项目是商城、RPC、秒杀、论坛、外卖、点评等等烂大街的项目,人人都知道这些项目烂大街了,但大部分同学还是得硬着头皮做,没办法,网络上能找到的、教程比较完善的就这些项目了,做的话好歹有个项目,不做那就真能写学校做的垃圾学生管理系统了。
2024-05-24 15:44:32 1033
原创 病毒和战争齐飞,24 届秋招会更惨吗?
2022 壬寅年,病毒和战争齐飞,流言和混乱四起。2023 届秋招的残酷已不需要再多说,各大平台校招社招一片哀嚎,如果说往年的各种帖子是在贩卖焦虑,今年就是实打实的就业寒冬。
2022-11-24 10:14:35 1038 1
原创 面试官问我 “String 的不可变真的是因为 final 吗“,我回答 “是“ 然后就被挂了。。。。。。
面试官:`String` 的不可变真的是因为 `final` 吗?我:是.....是的吧面试官:OK,你这边还有什么问题吗?我:卒......
2022-06-02 10:36:45 530 1
原创 最左前缀有手就会,那索引下推呢?
联合索引的最左前缀原则属于面试高频题,想必大部分同学都知道一些,但是,那些不符合最左前缀的部分,会怎么样呢(索引下推)索引下推不算高频题,知道的同学应该不是很多(不过并不代表有啥难度哈,挺简单的),学起来装波杯老规矩,背诵版在文末。点击 大厂面试火箭计划 可以直达我收录整理的各大厂面试真题引子看下面这张用户表,包含主键 id、身份证号 id_card、姓名 name、年龄 age和性别 sex,并且在 id_card 上建立了辅助索引(普通索引/非聚集索引)如果现在有一个高频请求,要根据市民的
2021-12-17 10:03:29 286
原创 携程二面:讲讲 MySQL 中的 WAL 策略和 CheckPoint 技术
面试官:讲讲 MySQL 中的 WAL 策略和 CheckPoint 技术
2021-07-01 09:58:20 391 1
原创 从头捋了一遍 Java 代理机制,收获颇丰
动态代理机制使用了反射,Spring 中的 AOP 由于使用了动态代理,所以也相当于使用了反射机制。那么,代理是什么?动态代理又是什么?动态代理中是如何使用反射的?
2021-06-06 12:11:26 235
原创 「重磅开篇」形成完善的多线程世界观
今天我斗胆造一根线,站在小白的角度,讲讲多线程这部分我们到底要学啥,按照什么样的顺序去学,帮助各位建立一个比较完善的知识体系,形成正确的多线程世界观。后续的文章我也基本上会按照这根线写下来。
2021-04-27 17:41:11 338
原创 从崩溃的选课系统,论为什么更安全的 HTTPS 协议没有被全面采用
0. 前言上一篇文章详细讲解了 HTTP 的相关原理,我们已经了解到了 HTTP 具有非常优秀和方便的一面,然而,HTTP 并非一个安全的协议。大家平常浏览网页的时候应该也能注意到,使用 HTTP 协议的网站,浏览器都会认定这是一个不安全的网站,提醒用户注意防范(即便这是我们学校的选课系统)。当然,这个不安全的含义指的是你在该网页输入的信息可能会被外界攻击者以非正常手段窃取,而不是说会被这个网页的开发者获取,毕竟浏览器咋能判断这个网页开发者是否存有异心,这个需要用户自行判断(手动滑稽 ????)那么
2021-02-01 17:20:35 469
原创 Java 小白成长记 · 第 6 篇「为什么说要慎用继承,优先使用组合」
在代码的编写过程中,避免冗余代码的出现是非常重要的,大段大段的重复代码必然不能够称之为优雅。所谓减少冗余代码,通俗来说就是实现一段代码多处使用,**在不污染源代码的前提下使用现存代码**,也就是代码**复用**,避免重复编写。然而,对于像 C 语言等面向过程的语言来说,复用通常指的仅仅只是**复制代码**,任何语言都可通过简单的复制来达到代码复用的目的,显然这样做的效果并不好。
2021-01-29 22:29:29 285
原创 超详细 DNS 协议解析
为了保证网址的正常访问,域名解析协议(DNS)其实在背后做出了很多努力,本文将透彻讲解 DNS 协议的原理,了解我们每天都在接触的网址到底是怎么工作的。
2021-01-20 16:51:40 1342 3
原创 别再恐惧 IP 协议(万字长文 | 多图预警)
IP 协议是整个 TCP/IP 协议族的核心,也是构成互联网的基础,位于 TCP/IP 模型的网络层
2021-01-15 17:26:21 381 1
原创 网络基础扫盲 | 数据传输方式和交换方式
若按数据传输的顺序可分为:并行传输和串行传输;- 若按数据传输的同步方式可分为:同步传输和异步传输;- 若按数据传输的流向和时间关系可分为:单工、半双工和全双工数据传输(通信)
2021-01-12 18:18:53 6355 1
原创 关于 TCP 三次握手和四次挥手,满分回答在此
在面试中,计算机网络的 TCP 三次握手和四次挥手是很常见的问题,但是在实际面试中,面试官会更愿意听到怎样的回答呢?详细程度是怎样的?
2021-01-07 22:24:38 514
原创 Java小白成长记 · 第 2 篇《HelloWorld》
这是一个技术疯狂迭代的时代,各种框架层出不穷,然而底层基础才是核心竞争力。博主(小牛肉)在现有的知识基础上,以上帝视角对 Java 语言基础进行复盘,汇总《Java 小白成长记》系列,力争从 0 到 1,全文无坑。
2021-01-06 19:33:06 276 2
原创 Java小白成长记 · 第 1 篇《万物皆对象》
这是一个技术疯狂迭代的时代,各种框架层出不穷,然而底层基础才是核心竞争力。博主(小牛肉)在现有的知识基础上,以上帝视角对 Java 语言基础进行复盘,汇总《Java 小白成长记》系列,力争从 0 到 1,全文无坑。
2021-01-06 19:30:04 275
原创 使用 PageHelper 前先学会手写一个分页查询吧
分页是日常开发中很常见的需求,本文带大家基于 MyBatis 和 Spring Boot 一步一步写一个分页查询,了解分页查询的基本逻辑。当然,大家熟悉之后,日常开发中还是推荐利用插件/框架来提高编码效率(比如非常优秀的 MyBatis 分页插件 PageHelper)
2021-01-05 17:26:00 549
原创 一文读懂两台计算机之间是如何通信的
本文将从小白的角度,讲解两台计算机之间是如何精确的找到对方的位置并发送和接收消息的,以帮助读者从宏观角度把握计算机网络的体系结构。
2021-01-02 16:39:56 7074
原创 图解数据结构:线性表
1. 数据结构三要素1)逻辑结构 指的是数据间的逻辑关系,与数据的存储无关,独立于计算机之外。它又分为线性结构和非线性结构线性结构:线性表,栈,队列,串,数组和广义表非线性结构:树,图,集合2)存储结构 是逻辑结构的存储映像,就是数据间的关系在计算机中的表现形式。也成为物理结构。它又分为 4 类:顺序存储 ,链式存储,索引存储和散列存储顺序存储:把逻辑上相邻的元素存储在物理位置也相邻的存储单元里链式存储:不要求物理位置的相邻,借助指示元素存储地址的指针表示元素之间的逻辑关系索引存储:在
2020-12-29 15:43:43 1128 1
原创 编写 Netty / RPC 客户端【框架代码分析】
RPC 客户端做的事情很简单:建立连接并向服务端发送请求 `send`(该方法的真正调用是在代理中)接收服务端的响应消息 `channelRead0`
2020-12-22 11:48:34 387 1
原创 一文读懂 Java 静态代理和动态代理【前置知识点】
代理模式简单来说就是我们使用代理对象来代替对真实对象(real object)的访问,这样就可以在不修改原目标对象的前提下,提供额外的功能操作,扩展目标对象的功能。
2020-12-21 21:50:25 408
原创 编写 Netty / RPC 服务端【框架代码分析】
RPC 服务端要做的事有以下几点:第一点:接收(反序列化 / 解码)客户端的请求消息并获取客户端请求的方法名、参数类型、具体参数,然后通过反射调用客户端请求的方法第二点:将方法的执行结果封装进 RpcResponse 发送给客户端第三点:定义一个注解,用户可使用该注解暴露服务(仿 Dubbo)
2020-12-21 21:47:23 248
原创 Java 注解【前置知识】
Java 注解 Annotation 是从 Java5 开始添加到 Java 的。注解也是一种类的类型,他是用的修饰符为 @interface
2020-12-21 21:46:23 194
原创 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 203
原创 Netty 是如何实现 TCP 心跳机制与断线重连的【前置知识点】
所谓心跳机制 / 心跳检测, 即在 TCP长连接中 , 客户端每隔一小段时间向服务器发送一个数据包,通知服务器自己仍然在线, 以确保 TCP连接的有效性.
2020-12-21 11:48:01 657
原创 Java 网络编程 — Socket 编程【前置知识点】
网络编程是指编写运行在多个设备(计算机)的程序,这些设备都通过网络连接起来。学习 Socket 网络编程有助于我们了解 Netty
2020-12-21 11:45:02 285
原创 网络传输实体类与序列化【框架代码分析】
RpcRequest 封装 RPC 请求,RpcResponse 封装 RPC 响应,要在网络传输数据就必然涉及到序列化和反序列化,本框架使用 Ptotostuff 实现
2020-12-20 20:45:49 281
原创 序列化协议 Protostuff 基本使用【前置知识点】
protostuff 是针对 Java 的序列化框架,基于 Google protobuf,但是提供了更多的功能和更简易的用法。虽然更加易用,但是不代表 ProtoStuff 性能更差。
2020-12-20 20:37:33 328
原创 序列化介绍以及序列化协议对比【前置知识点】
序列化: 将数据结构或对象转换成二进制串的过程反序列化:将在序列化过程中所生成的二进制串转换成数据结构或者对象的过程
2020-12-20 20:35:41 849
原创 彻底读懂 Java 反射【前置知识点】
在 Java 运行时环境中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为 Java 语言的反射机制
2020-12-20 20:34:30 324
原创 Zookeeper 安装与基本使用【前置知识点】
Zookeeper 安装与 Zookeeper 客户端的开源框架 Curator / ZkClient 的基本使用
2020-12-20 16:01:50 260
原创 Zookeeper 重要概念详解【前置知识点】
ZooKeeper 是一个开源的分布式协调服务,它的设计目标是将那些复杂且容易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集,并以一系列简单易用的接口提供给用户使用。
2020-12-20 16:00:14 288
原创 使用 Zookeeper 实现服务注册与发现【框架代码分析】
注册中心负责服务地址的注册与查找,相当于目录服务。服务端启动的时候将服务名称及其对应的地址(ip+port)注册到注册中心,服务消费端根据服务名称找到对应的服务地址。有了服务地址之后,服务消费端就可以通过网络请求服务端了。
2020-12-20 15:16:08 555
原创 SpringBoot + Dubbo + Zookeeper 搭建一个简单的分布式服务【前置知识点】
把这章放在本教程中,也是因为本框架开发完成后,使用的步骤基本和 Dubbo 差不多,了解 Dubb 的使用有助于我们在自己动手实现 RPC 框架的时候有更清晰的思路
2020-12-20 15:14:57 311
ButterKnife-jar包.rar
2020-02-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人