自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 收藏
  • 关注

原创 TCP为什么需要三次握手

前面两次握手是客户端给服务端的一问一答+服务端的一问,此时只有客户端知道我可以发给服务端消息,并且能确定服务端能收到我的消息(因为服务端回答了我),此时服务端做到了事事有回应;服务端在反馈客户端一问的同时也给客户端发起了一问,如果没有第三次握手(回答服务端的一问),服务端是不知道客户端能不能收到自己的消息,客户端没有做到事事有回应,对于服务端来说这个连接就是不可靠的。我看了很多关于为什么需要三次握手的文章,都是从原理入手,最终还是在说三次握手的过程,我个人理解之所以需要三次最重要的一点是因为TCP是。

2023-04-03 14:22:54 77 1

原创 代码重构思路

背景 项目中我们经常能看到一些上千行的方法,甚至几千行的方法,本人见过最恶心的一个方法3500多行,这些代码逻辑结构复杂,各种if else错综复杂,就算心里万马奔腾最后也得硬着头皮去看、去改,就算上线了也得慌好几天,一听到线上报警心率瞬间飙升。 这些代码很多是因为业务迭代过快,加上一开始没有好好设计,只考虑了完成需求,没有考虑扩展问题。 作为一个有追求的程序员,这种代码正是体现能力的时候,如果能够重构一下,满满的成就感。 难点 不知道如何下手,是从头写一遍还是在原来的代码上改 重构风险过高,没

2021-10-19 17:43:39 218

转载 2021-05-25

Java类加载过程 原文链接 1、什么是类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问方法区内的数据结构的接口。 wps5F9E.tmp 类加载器并不需要等到某个类被“首次主动使用”时再加载它,JVM规范允许类加载器在预料某个类将要被使用时就预

2021-05-25 17:38:40 104

原创 JVM之不同垃圾收集器比较

JVM垃圾收集器优缺点比较Serial收集器 涉及这一部分的东西都是晦涩难懂的,加上平时开发中很少有这方面技能要求,在很长的一段时间我都是懵逼的,但是面试时又是一个重点,所以抽出时间来专门整理一篇这样的文章帮助本人理解学习。 Serial收集器 ...

2020-05-23 13:19:56 458

原创 Java运行时数据区域

Java运行时数据区域程序计数器Java虚拟机栈本地方法栈堆方法区-元空间运行时常量池 程序计数器 程序计数器是一块较小的内存空间,依赖于用户线程,随着用户线程的启动和结束而存在和销毁,它可以看作是当前线程所执行的字节码的行号指示器。多线程对于处理器来说属于串行执行,在任意时刻一个处理器只会执行一条线程中的指令,因为处理器的处理速度是超级快的,我们用多线程是可以充分的利用处理器资源,让它尽可能的满负荷运行。而Java虚拟机就是通过多个线程轮流切换,分配处理器执行时间的方式实现的。但是有一个问题,线程来回切换

2020-05-17 17:40:27 126

原创 用反射实现两个对象相同属性值赋值

用反射实现两个对象相同属性值赋值使用场景用到的技术代码实现 使用场景 开发中一个对象可能是有多处使用,一处改变了某些属性值其他地方 也会发生改变,造成一些意想之外的效果,但是复制一个对象挨个 属性去set值又感觉有点蠢,毕竟我们技术人员装逼要到位,看了很 多别人写的方法都不尽如意,总感觉很别扭,自己花了几分钟写一 个。 用到的技术 反射 代码实现 public class Student implements Serializable { private Int

2020-05-14 11:58:30 392

原创 kafka+flume+kudu

今天动手实践了一下kafka数据经过flume处理,最后保存进kudu的操作。 总的来说有几点需要注意 第一:必须要手动下载kudu-flume的依赖包放到flume的lib目录下,具体目录在flume-ng/lib 如果是clouderaManager安装的,目录在 opt/cloudera/parcels/CDH-5.16.1-1.cdh5.16.1.p0.3/lib/flume-ng/lib...

2019-11-25 17:15:53 485 1

原创 手写ORM

ORM原理 对象-关系映射(Object/Relation Mapping,简称ORM),日常开发中我们都在用的比如Hibernate,Mybatis。 废话不多说,直接上代码 1、建表 2、建实体对应上表 public class TsRole { private String id ; private String code ; private String createTime ; ...

2019-11-07 16:26:30 121

原创 JVM编译过程理解

JVM编译过程理解前言正文 前言 不知道大家有没有注意,jdk分为linux版和windows版,java 之所以能够跨平台也是因为这个,不同的运行环境(linux,windows)我们需要安装对应的jdk。我们知道javac是编译命令,会把.java文件编译成.class文件,这时我们用命令java 即可运行编译后的.class文件。我们删掉.java文件也是可以运行的,说明java程序的运行不...

2019-10-30 22:50:50 225

空空如也

空空如也

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

TA关注的人

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