自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【面经——Java内存模型(JMM)】讲故事一样讲述JMM

对于java内存模型,我们需要了解的无非是几个问题:什么是java内存模型?为什么要有java内存模型?该怎么使用这个java内存模型?使用的时候它又会产生什么问题?能否解决,该如何解决呢?下面,我将从它的出现的原因开始讲述上面几个问题。为什么要有java内存模型及java内存模型是什么?java内存模型,首先它是一个模型,并不是真是存在的。它从java的层面定义了主存,工作内存的抽象概念,而它的底层对应着cpu寄存器、缓存、硬件内存、cpu指令优化等;下图就是java内存模型,可以看到,里面有ja

2020-09-22 11:21:16 335 1

原创 【JavaEE】多文件云模式并发传输实现效果

本博客是为了展示《多文件云模式并发传输》框架的效果;实现效果框架介绍:传统的客户端和服务端来说,客户端面对的是单一的服务器,服务器及网络的带宽决定了网络的性能,每台服务器提供的信息数量,受到自身存储空间的限制,而任意时刻它所能支持的客户端的访问数量,则受到自身处理能力和网络带宽的限制,一旦服务器崩溃,整个网络也随之瘫痪。对于服务器来说,当拥有大量的客户端进行访问的时候,服务器将承受巨大的压力。对我们的多文件传输来说,我们的客户端想要请求某一数据资源的时候,我们只能访问单一的服务器,如果存在其他的

2020-06-28 22:20:44 370

原创 【JavaEE】自主设计实现服务(资源)发现框架

为什么要实现这个框架?对于服务发现,百度百科中给出了这样的定义:服务发现是指使用一个注册中心来记录分布式系统中的全部服务的信息,以便其他服务能够快速的找到这些已注册的服务。《服务发现》显而易见,服务发现起到了一个“管理者”的作用,它对于服务进行了系统的管理。这样一来,方便了其他服务去找已经注册的服务。现在我之所以要完成服务发现这一框架,是因为它会在我的《多文件自平衡云模式文件传输》项目中作为一个很重要的角色。简单介绍一个这个项目,这个项目其实也是一个很大的框架,我希望app开发者用这个框架,可以更容易

2020-06-15 17:06:49 386

原创 【JavaEE】自主设计实现负载均衡框架

首先来看看百度百科对于负载均衡的描述:负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。负载均衡(Load Balance)其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。(负载均衡)我对于负载均衡的理解是,因为网络的一些原因,会使得众多服务器种某个服务器压力过于大,导致传输缓慢,我们可以提供一种方法,去均衡一下各个

2020-06-15 15:02:09 608

原创 【JavaEE】自主实现Spring核心IOC和AOP之基于代理机制的拦截器的实现

 

2020-06-12 17:01:46 259

原创 【JavaEE】揭秘java的序列号的本质

我们都知道,在我们自定义一个类的时候,如果该类实现了Serializable接口, 那么,他会给出一个警告,要求产生一个serialVersionUID,也就是我们所说的序列号。那么,这个序列号是什么,有什么用呢?我们先来做一个测试。首先给出一个FileSectionInfo类,目的是让该类实现Serializable接口,然后产生一个序列号。(类里面其余的代码不用管)public class FileSectionInfo implements Serializable { private sta

2020-05-31 10:19:57 979 1

原创 【JavaEE】自主实现Spring核心IOC和AOP之简介篇

SpringSpring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。控制反转——Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。面向切面——...

2020-05-07 14:11:22 352

原创 【JavaEE】自主实现Spring核心IOC和AOP之实现循环注入、单例、发现循环依赖关系

首先,准备一个循环注入的例子:

2020-04-21 11:44:15 160

原创 【JavaEE】自主实现Spring核心IOC和AOP之实现类的注入

给一个复杂的类,

2020-04-14 09:54:36 200

原创 【面经——JVM和类加载机制】讲故事一样讲述java的类加载机制和JVM

JVM是怎么分配内存的?Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。按照线程和线程共享来分,线程私有包括:程序计数器、虚拟机栈、本地方法栈。线程共享包括:java堆和方法区。说的直白一些,只要我们创建了一个线程,那就有一套与之对应的程序计数器、虚拟机栈和本地方法栈。但是,一个进程中,只有一个java堆和方法区。一个进程中可以有多个线程,所以就会有多套与之对应的线程私有部分。可见,线程私有的部分和线程共享的部分是多对一的关系。下图是对上面文字的概括:...

2020-09-25 11:25:36 214

原创 【JavaEE】线程池(ThreadPoolExecutor)源码解析

对于线程池

2020-06-04 17:39:57 182

原创 【JavaEE】ThreadLocal源码解析

在之前的博文【JavaEE】关于ThreadLocal和模态框的关闭中,我们曾经用到过ThreadLocal,当时对于ThreadLocal的理解是我们可以将两个彼此毫无关系的线程之间建立关系。但是这到底是怎么实现的?现在让我们来对它的源码进行一下探究。首先,可以看到,ThreadLocal类是一个泛型类:public class ThreadLocal<T> { ……}所以,我们在使用它的时候,必须要给<>里面增加一个类型。我们之前使用它的时候,是在某一个线程中通过无

2020-06-03 21:03:59 152

原创 【Javascript】利用原型和原型链来实现类(函数)之间的继承

我们都知道,在java中,有些类与类之间会存在继承关系,

2020-06-03 10:07:08 202

原创 【JavaEE】JDK1.8的HashMap源码解析

HashMap作为我们平常使用很频繁的一个存储工具,我们都知道它的存储效率很高。现在我来对他的源码进行一下分析。HashMap数据结构其中,table是一个数组,类型是Node类型(TreeNode类型最终也是Node类型的子类),约定,每一个数组元素称为桶,每个桶中装的及桶之后的元素称为bin。比如,上图中,0号桶中只有一个bin,而1号桶中有5个bin。还有一些比较难区分的名词,例如:size,capacity,loadFactor,threshold。size指的是:HashMap中存放KV

2020-06-01 13:40:01 144

原创 【JavaEE】关于ThreadLocal和模态框的关闭

java的模态框的关闭和我们想像的不一样,他的关闭是不会去单独跑一个线程的,也就是说,在它关闭之前,与这条语句在同一个线程中的且在这条语句之后的语句是不会执行的,那么,这时,想要执行这条语句之后的语句,若不关闭它是没法做到的。那么该如何关闭并且还要执行之后的语句呢?我这里有三种方法:1.初始化模态框时,可以定义一个抽象方法。在外面调用初始化模态框的方法时,必须实现这个抽象方法。通过给模态框获得焦点,然后焦点里面定义自己想要做的操作(这里的实现就是在模态框执行的时候,你仍然想要进行的操作),做完之后再进行

2020-05-24 22:05:07 331

原创 【JavaEE】Set集合详解

首先说,Set是一个接口,在看其原码的时候,看到Set接口继承了Collection接口。然而,Set接口和Collection接口中定义的方法几乎完全一样和,除了有default修饰的方法不一样之外。可以看出,Set接口具有与Collection接口几乎完全一样的性质。事实上,Set就是Collection,只是行为不同。Set集合不保存重复的元素。如果你想把相同对象的多个实例添加到Set中,...

2020-05-16 09:09:16 285

原创 【JavaEE】自主实现java线程池的核心部分

java的线程池是一个很凶悍的容器

2020-05-11 12:30:23 147

原创 【Javascript】原型和原型链的深层解析

原型和原型链的概念先来看一下这两个属性在网页的控制台显示出的内容:其中,prototype表示的是原型,而相当于我们之后写的__proto__(这里一共是四个下划线),表示的是原型链。原型:用prototype表示,表示 类与类之间的父子关系。一个函数或者类,都含有一个prototype属性,这个属性是一个指针,会指向一个原型对象,比如上面的图片,Point类指向了Object对象。事实上...

2020-05-08 21:58:25 148

原创 【JavaEE】基于代理机制的RMI的实现

RMI技术:Remote Methed Invoke 远程方法调用在CSFramework中,大量存在客户端向服务器端发出的请求;而这个请求到了服务器端,实质上是要执行一些服务器端的方法,并得到一个“响应”。那么,如果把请求当成一个“本地方法”,在客户端执行,而实质上,该方法只在服务器端存在真正的本体。现在,我们使用RMI和代理机制来实现,不需要再像CSFramework那样通过action分...

2020-05-05 18:13:35 164

原创 【JavaEE】代理机制(工具思想)

    在学习JavaSE的时候,我们学过一个非常厉害的技术,叫做反射机制。在我看来,一切框架都是基于反射技术的。而代理机制,则是又一个很厉害的技术。先来介绍一下代理机制:    主要作用是为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不想或者不能直接引用另一个对象,而代理对象可以在客户端和目...

2020-05-05 10:30:27 218

原创 【JavaEE】NetFrameWork——多线程的应用

NetFrameWork是CsFrameWork的进阶,两者之间最大的区别是原来的csFrameWork比较low,用的是长连接,运行的效率比较低,整体线程安全性低等。其中,安全性低是因为CsFrameWork编写时没有考虑过多线程的情况,当出现多个客户端同时连接等高并发现象时,就会崩溃!先来看一下之前的会话过程。public abstract class Communication imp...

2020-05-03 21:03:39 161

原创 【JavaEE】定时器(定时到毫秒级别)

需求:实现一个定时器,用户可以自行确定定时的时间间隔,并且当到达规定时间的时候,可以自动执行用户提供的方法。需求分析:由于要实现一个定时器,还要执行用户的方法,理所应当应该专门用一个线程来进行定时,并放到一个循环里面,但是是否需要再来一个线程专门进行方法的执行,需要进行斟酌。如果不再单独调用一个线程话,那么代码将会是如下形式:@Override public void run() { ...

2020-04-10 11:40:14 1654

原创 【JavaEE】文件的二进制操作

对于文件的读写操作,有很多种不同的方法。下面我们进行一一介绍。首先,我们先准备好一个3.5M左右大小的文件。如图所示:方法一:逐字节读写执行如下代码: try { long startTime = System.currentTimeMillis(); File file = new File("./bin/res/leftHand.mp3"); FileInputSt...

2020-04-07 11:30:08 118

原创 【JavaSE】csFrameWork——将Gson化的Map解析成对应的Map

在csFramWork里面,由于需要通过 read()和write() 方法来收发信息。在传递参数时,我们可以传递一个Map,将它转换成gson字符串,作为一个NetMessage类的mess成员,再将NetMessage类转换成字符串进行传递。而在另一端,我们就需要进行解析,那么解析成Map时,就会出现问题。...

2020-04-07 10:19:40 145

原创 【JavaSE】普通包、jar包扫描(工具思想)

包扫描这一技术,应用非常广泛。在spring中,通过给自己的类加注解的方式,利用spring的包扫描,完成依赖注入。因为这一技术应用广泛,所以把它写成一个工具。下面直接列出包扫描工具的源代码。public abstract class PackageScanner { //无参构造方法 public PackageScanner() { } //抽象方法,对于已选中的包的具体操作,由用...

2020-04-01 21:27:56 182

原创 【JavaSE】csFrameWork——Gson的巧妙使用

Gson类是由谷歌公司提供的一个强大的类。它可以将任意对象转换成字符串,还可以将任意字符串,通过给定的类型,转换成对应该类型的对象。来举个例子:public class Test { public static void main(String[] args) { Gson gson = new GsonBuilder().create(); Complex complex ...

2020-04-01 21:27:45 102

原创 【JavaSE】csFrameWork——分发器

分发器的应用场合在csFrameWork中,最主要的就是彼此的交互问题。客户端与客户端之间的“交流”,事实上,是通过服务器这个中间媒介,也就是,客户端会向服务器发出各种请求,而服务器就要根据请求做出对应的响应。其中用到的就是分发器。分发器的实现下面,将实现上述讲的csFrameWork里面的分发器。在csFrameWork里面,我们实现的是 request 和 response 分发器。客...

2020-04-01 21:27:32 181

原创 【JavaSE】简单实现两个单例工厂模式——饿汉vs懒汉

先看代码:public class MecOrm { private static Connection connection; private MecOrm() { //这里是重点,构造方法是修饰权限是:private PropertiesParser property = new PropertiesParser(); //这里还是直接用到了前面博文写的工具——...

2019-11-28 21:37:20 167

原创 【JavaSE】Hibernate框架的简单实现(工具思想)

//TODO

2019-11-28 21:05:58 151

原创 【JavaSE】多线程volatile关键字

编译优化我们都知道,所有的高级程序设计语言所编写的源代码,都要经过编译系统或解释系统的翻译,转换为计算机硬件系统能够识别的机器语言代码,才能最终在计算机上执行。而现代的编译或解释软件都很强大,很智能,它们会尽可能选择能让我们的程序以最高效率的形式工作,即,它们会尽可能地“优化”我们的代码,使得最终编译或解释出的机器语言代码与我们的源代码有所差异!...

2019-11-27 00:48:12 97

原创 【JavaSE】进程与线程扫盲

防御基于开发以及两个

2019-11-27 00:48:01 151

原创 【JavaSE】java虚拟机——JVM

2而

2019-11-27 00:47:46 118

原创 【操作系统】操作系统的自我认识及原码、反码和补码

操作系统是一个系统软件,但是它具有呈上启下的作用,它是计算机硬件之上的第一层软件。对于我们所编写的程序,它们以文件的形式存放在磁盘上。在运行之前,操作系统会把它们调入到内存,然后在CPU上运行,产生的结果在屏幕上显示出来。CPU的运行模式又分为核心态和用户态,所以,当CPU执行到用户程序的系统调用(如使用c语言中的fread()从文件中读取数据这条语句时,它会进行系统调用)时,CPU的状态就从...

2019-11-27 00:47:33 147

原创 【JavaSE】反射机制(工具思想)

话不多说,先上代码。先来一个接口public interface IDoSomething { //简单定义一个方法 void doSomething(String message);}然后,实现两个有关于这个接口的实现类:public class Teddy implements IDoSomething { //实现该接口,必然要实现该接口所定义的方法; public T...

2019-11-20 15:14:22 113

原创 【JavaSE】properties文件的解析(工具思想)

先建立一个properties文件。通过做工具对properties文件进行解析:import java.io.IOException;import java.io.InputStream;import java.util.Enumeration;import java.util.HashMap;import java.util.Map;import java.util.Proper...

2019-11-17 19:11:51 125

原创 【操作系统】OS对文件的管理——面向程序员的文件管理

OS在管理文件时,使用“文件控制块”这样数据:控制块实质上就是(关于一个文件的)一堆数据,数据越详细,OS越能对文件进行详尽的管控;文件控制块又称:FBC。FBC是OS的有限资源。OS对文件进行操作是使用一种机制:电视机机制。电视机并没有360万平方公里,但是小小的电视机却能看到无限广阔的世界(只要有人去拍)。OS对文件的操作也是类似,OS并不能把一个(例如仙剑奇侠这个游戏中的一个场景文件)高...

2019-11-16 20:11:59 312

原创 【JavaSE】XML文件的解析(工具思想)

       先建立一个XML文件。<?xml version="1.0" encoding="UTF-8"?><students> <student id = "00001" name = "张三" sex = "男" birth = "2001-5-13"> <hobby>打篮球</hobb...

2019-11-15 19:45:43 236

原创 【数据结构与算法】哈夫曼树与哈夫曼压缩与解压缩

哈夫曼树:

2019-10-31 14:47:04 955

原创 【数据结构与算法】内存对齐模式

变量的定义中,变量的首地址的取值会满足“内存对齐模式”。

2019-10-31 14:34:30 155

原创 【数据结构与算法】几种常用的存储结构

常用的逻辑线性结构和逻辑非线性结构:堆栈、队列、线性表、数组、链表、普通的树、二叉树、哈夫曼树。下面分别介绍这些数据结构的初始化。堆栈堆栈又称为“栈”,是一种线性结构;其最大的特点是:记忆性、先进后出控制堆栈存取数据需要一个“栈顶指针”,通常堆栈还涉及”栈底指针“。int top; //栈顶指针,下标int bottom; //栈底指针,下标top和bottom的初始值都是0,这...

2019-10-29 21:25:34 2542

空空如也

空空如也

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

TA关注的人

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