自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 工具——Java文件传输框架

流的定义:在计算机编程中,流就是一个类的对象,很多文件的输入输出操作都以类的成员函数的方式来提供。计算机中的流其实是一种信息的转换。它是一种有序流,因此相对于某一对象,通常我们把对象接收外界的信息输入(Input)称为输入流,相应地从对象向外输出(Output)信息为输出流,合称为输入/输出流(I/OStreams)。对象间进行信息或者数据的交换时总是先将对象或数据转换为某种形式的流,再通过流的传输,到达目的对象后再将流转换为对象数据。所以,可以把流看作是一种数据的载体,通过它可以实现数据交换...

2020-09-21 18:04:02 985

原创 HashMap源码码解析(JDK1.8)

HashMap默认常量://默认的map容量,16static final int DEFAULT_INITIAL_CAPACITY = 1 << 4//默认的最大容量,2^30,1,073,741,824static final int MAXIMUM_CAPACITY = 1 << 30//默认扩容因子,存储元素数量与容量之比大于扩容因子会触发扩容机制static final float DEFAULT_LOAD_FACTOR = 0.75f;//默认链表

2020-09-21 05:07:43 317

原创 位运算的妙用

什么是位运算?位操作是程序设计中对位模式按位或二进制数的一元和二元操作。在许多古老的微处理器上,位运算比加减运算略快,通常位运算比乘除法运算要快很多。在现代架构中,情况并非如此:位运算的运算速度通常与加法运算相同(仍然快于乘法运算) ...

2020-09-12 03:03:23 1612

原创 LinkedList源码分析(JDK1.8)

简介: LinkedList底层数据结构为双向链表,与ArrayList相同的是,其是list接口的实现类,意味着其存储元素是连续且可重复的。 LinkedList继承于AbstractSequentialList类 LinkedList实现了Deque接口,代表其支持队列操作;实现了Cloneable,代表其可克隆;实现了public class LinkedList<E> extends AbstractSequentialList<E>...

2020-09-08 04:06:14 245

原创 ArrayList源码分析(JDK1.8)

简介: ArrayList是动态数组,是java集合框架collection中list接口的一个实现类,继承于AbstractList。底层数据结构为一个Object数组。如下,其实现了List、RandomAccess、Cloneable、Serializable接口。 ArrayList继承于AbstractList,实现了list接口,提供了增删改查,遍历等功能。 ArrayList实现了java.io.Serializable接口,表示其可序列化。 Array...

2020-09-07 04:14:56 179

原创 自主实现服务发现——实现过程与代码分析

上一篇博文中对服务发现作了简单的讲解。本篇会详细讲述代码的实现。资源的基本信息的类(ResourceInfo)的代码以及ip与port的集合类:(INetNode,DefaultNetNode):这里就不占用篇幅了,可以在上一篇中查看。代码及详解:搬运上一篇各个类的说明: 用作RMI调用的远程方法与实现类:(注:我的RMI框架采用的是XML配置) IResourceCenter 与ResourceCenterImpl,资源拥有者(服务提供者)与资源请求者(服务消费者),拥有I...

2020-08-18 19:17:17 289

原创 自主实现服务发现——基础分析

服务发现的定义:服务发现是指使用一个注册中心来记录分布式系统中的全部服务的信息,以便其他服务能够快速的找到这些已注册的服务。(百度百科定义) 在传统的系统部署中,服务运行在一个固定的已知的IP和端口上(固定的服务器)。但是在如今分布式的网络环境中,服务可能分布在多个机器上,服务的启动与销毁是很正常的操作。那么,在一个服务消费者想要调用一个服务的时候,如何去寻找这个服务。这就让我们萌生了一种想法,用一个服务器(注册中心)去记录所有的服务信息,对这些服务进行管理,对服务进行动态的注册、注...

2020-08-18 17:08:18 261

原创 小工具——磁盘容量转化

在编程中,我们经常需要查看磁盘的容量来做相应的操作。Java的File类为我们提供了获取的方法,getTotalSpace(),getFreeSpace(),getUsableSpace()等方法。但是获取的空间大小都是以字节为单位的long类型的量。非常不直观,假如我们编写的在一些界面中需要显示与此数值相关的量,转化成B,KB,MB,GB这样的单位显然比较合适。 这里我给出这个工具,代码的思路在注释里都有详细的说明。public class CapacityTransform {...

2020-08-17 19:20:14 522

原创 自主实现软负载均衡

定义: 负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。负载均衡(Load Balance)其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。 以上是百度百科对负载均衡的定义。通俗地说就是将连接和任务"均匀"地分配到多个服务器上,避免出现部分服务器负载过高而部分服务器又没有得到使用而浪费服务器资...

2020-08-12 16:06:58 526

原创 工具——手写实现定时器

使用场景: 需要定时或周期性地执行某些任务(如:服务器定时像检查中心发送心跳信息)。 思路1:定时器在一个循环中,每wait一定时间就执行任务(执行对应的方法)。 @Override public void run() { while (goon) { synchronized (lock) { try { lock.wait(delay); //TODO执行任务 } catch (InterruptedException e) {...

2020-08-08 13:58:00 553

原创 模拟实现RMI

概念: 什么是RMI? RMI(Remote Method Invocation,远程方法调用)是用Java在JDK1.2中实现的,它大大增强了Java开发分布式应用的能力。Java作为一种风靡一时的网络开发语言,其巨大的威力就体现在它强大的开发分布式网络应用的能力上,而RMI就是开发百分之百纯Java的网络分布式应用系统的核心解决方案之一。其实它可以被看作是RPC的Java版本。但是传统RPC并不能很好地应用于分布式对象系统。而Java RMI 则支持存储于不同地址空间的程序级对象之...

2020-08-01 20:28:51 217

原创 java线程池源码分析

Java线程池适用于高并发场景下需要多线程处理业务的时候适用,线程池并不能直接提高线程执行任务的速度。但可以通过减少线程频繁地创建与销毁来提高间接整个系统的性能。 《阿里巴巴Java开发手册》规定:线程资源必须通过线程池提供,不允许在应用中自行显式创建线程。说明:使用线程池的好处是减少在创建和销毁线程上所消耗的时间以及系统资源的开销,解决资源不足的问题。如果不使用线程池有可能造成系统创建大量同类线程而导致消耗完内存或者“过度切换”的问题。 首先我们看一下类的关系:我们...

2020-07-30 20:08:22 185

原创 PackageScanner——包扫描工具

背景: 平时我们在编程当中,经常需要去在某个包下寻找对应的资源(资源是一些数据(图像、音频、文本等),可以被类代码以一种独立于代码位置的方式访问。),java提供了通过上下文加载器获得指定名称(资源的名称是表示资源的/分隔路径名。)下的资源的方法。那么我们用这种方法来编写一个包扫描的工具来处理来扫描指定的包,提供处理的抽象方法,等待使用工具的人去编写。 这里仅仅扫描包并提取出Class类,也可扫描Jar包。 下面是代码:public abstract class Pa...

2020-07-25 16:06:21 1039

原创 CGLIb代理介绍与两种代理的工具化

前言: 上一篇博客中详细剖析了JDK动态代理。代理为控制要访问的目标对象提供了一种途径。当访问对象时,它引入了一个间接的层。JDK自从1.3版本开始,就引入了动态代理,并且经常被用来动态地创建代理。JDK的动态代理用起来非常简单,但它有一个限制,就是使用动态代理的对象必须实现一个或多个接口。如果想代理没有实现接口的继承的类,该怎么办?现在我们可以使用CGLIB包(这段资料来自百度百科。)CGLIB代理特点:1、被代理的类,不必须实现接口;2、由于CGLib代理的原理是,创建一个被代理..

2020-07-25 14:55:35 308

原创 java代理机制详解

何为代理? 生活中,当我们想去做一件事的时候,有时候会自己去做,在不方便的时候,也可能委托给他人去处理。这种事件可以说是被委托人代理我去做我想做的事情。 顾名思义,在程序中,代理机制就是给目标对象提供一个代理对象,由代理对象去控制目标对象的引用,即代目标去执行某些方法。使用场景: 当我们想要通过某个对象实现某些功能时,可能不一定合适去直接访问,或者说根本无法访问对象。例如:在RMI技术中,客户端需要实现某些接口的方法时,这个的实现类根本不在客户端存在,必须通过远端交予服务器...

2020-07-24 18:26:43 266

原创 工具——XML文件解析器

编程中经常用到XML文件作配置方式,但是常用的解析方法过于繁锁,XML的解析过程是有非常固定的套路的。 也就是说,对XML文件的解析程序,存在很多“制式代码”能否做一个java工具去解析XML文件,只将其中数据的处理交予更高层。概念:(此部分为查阅资料) XML(eXtensibleMarkupLanguage),种可扩展标记语言,应用于web开发的很多方面,常用于简化数据的存储和共享。XML仅仅是纯文本,不同于HTML,XML中的标签都需要用户自己定义。XML...

2020-07-18 11:59:53 3728

原创 工具——GSON实现参数的转化

前言: Json是一种轻量级的数据交换格式,易于机器解析与生成,并且可以有效提升网络传输的效率。 不论是服务器客户机模式中利用Socket传输参数。还是RMI的执行过程中,我们都会遇到参数的传输与转化的问题。当然,这里的参数可能是基本类型变量,也可能是某个类的对象。这里我们统一用参数来表达。 Socket支持各种方式的传输(字符串,字节流,对象等),当然本质上还是传输字节流。 在服务器/客户机收发参数时,我们可以将参数(一个或多个)转化为特定格式的、序列化的J...

2020-07-17 16:24:17 421

空空如也

空空如也

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

TA关注的人

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