自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 多文件云传输简介

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

2020-07-31 12:56:45 385

原创 ReentrantLock源码解析

ReentrantLock源码解析ReentrantLock中使用了AbstractQueuedSynchronizer也就是AQS,完成了锁的获取和释放等操作。下面来通过介绍ReentrantLock源码来理解,实现原理。ReentrantLock的构造方法: /** * Creates an instance of {@code ReentrantLock}. * This is equivalent to using {@code ReentrantLock(false)

2020-07-24 14:58:27 130

原创 RMI技术基础讲解(代理机制)

RMI技术基础讲解(代理机制)RMI技术(Remote Methed Invoke):JAVA RMI技术就是典型的远程代理案例。RMI提供了客户辅助对象和服务辅助对象,也为客户辅助对象创建了和服务对象相同的方法。RMI的好处是可以不必写任何网络或I/O代码,就可以让客户程序跟在本地JVM正常调用方法一样调用远程方法(真正的服务所在的方法)。但是虽然调用远程方法跟本地一样,但是客户辅助对象还是需要通过网络发送方法调用的,所以网络和I/O还是存在的。RMI技术的核心:1、代理技术;2、反射机制;

2020-07-17 10:29:06 432

原创 threadpoolexecutor源码解析

threadpoolexecutor源码解析一、线程池的任务目标如果存在大量的创建线程、销毁线程操作,效率是很低的。因为创建线程是比较耗时、耗资源的。如果非常频繁地创建、销毁线程会极大地降低效率。为避免这种情况的发生,产生了threadpoolexecutor线程池。二、threadpoolexecutor源码重要成员: //AtomicInteger提供原子操作来进行Integer的使用。ctl是AtomicInteger的,所以是线程安全的。 //用ctl来记录线程的个数。 //ctl维护

2020-07-02 19:36:53 168

原创 理解synchronized的原理

synchronized的应用方式synchronized关键字最主要有以下3种应用方式:修饰代码块,指定加锁对象,给指定对象加锁,进入同步代码块前要获得给定对象的锁;修饰实例方法(非static修饰的方法),作用于当前实例,进入同步代码块前要获得给定对象的锁;修饰静态方法,作用于当前类对象加锁,进入同步代码块前要获得给定对象的锁;synchronized作用于代码块public class test1 implements Runnable{ static AccountingSy

2020-06-23 19:23:37 190 1

原创 HashMap在JDK1.7和JDK1.8中的区别

HashMapjdk1.7中底层是由数组(也有叫做“位桶”的)+链表实现;jdk1.8中底层是由数组+链表/红黑树实现可以存储null键和null值,线程不安全。在HashMap中,null可以作为键,这样的键只有一个,但可以有一个或多个键所对应的值为null。当get()方法返回null值时,即可以表示HashMap中没有该key,也可以表示该key所对应的value为null。因此,在HashMap中不能由get()方法来判断HashMap中是否存在某个key,应该用containsKey()方法

2020-06-22 16:32:26 975

原创 HashTable、HashMap、ConcurrentHashMap的区别

HashTable1.8、HashMap1.8、ConcurrentHashMap1.8的区别HashTable1.8底层数组+链表实现,无论key还是value都不能为null,线程安全,实现线程安全的方式是在修改数据时锁住整个HashTable,效率低,ConcurrentHashMap做相关优化;Hashtable是一种能提供快速插入和查询的数据结构,无论其包含多少Item(条目),执行查询和插入操作的平均时间复杂度总是接近O(1);初始size为11,扩容:newsize = olesiz

2020-06-22 16:01:42 331

原创 HashTable1.8源码解析

HashTable介绍:HashTable的底层实现是由“数组+链表”来实现的。和HashMap一样,Hashtable 也是一个散列表,它存储的内容是键值对(key-value)映射。无论key还是value都不能为null,且线程安全,实现线程安全的方式是在修改数据时锁住整个HashTable,效率低。但是Hashtable是一种能提供快速插入和查询的数据结构,无论其包含多少Item(条目),执行查询和插入操作的平均时间复杂度总是接近O(1)。HashTable源码解析:HashTable的继承关

2020-06-22 15:34:14 263

原创 ConcurrentHashMap1.8扩容实现详解

上一篇ConcurrentHashMap源码解析中只是初步分析了ConcurrentHashMap的实现,这篇将详细讲述ConcurrentHashMap的扩容实现过程。触发扩容的情况当往ConcurrentHashMap中插入一个Key/Value结点时,有可能触发扩容。1.第一种情况; 如果新增结点后,所在链表的元素大于等于阈值8,则会调用treeifyBin()方法,把链表转化为红黑树,但是再进行结构转换之前,还需要对数组长度进行判断。treeifyBin()方法:private final

2020-06-19 14:43:31 704

原创 ConcurrentHashMap源码解析

ConcurrentHashMap源码解析ConcurrentHashMap是conccurrent家族中的一个类,由于它可以高效地支持并发操作,以及被广泛使用,经典的开源框架Spring的底层数据结构就是使用ConcurrentHashMap实现的。与同是线程安全的老大哥HashTable相比,它已经更胜一筹,因此它的锁更加细化,而不是像HashTable一样为几乎每个方法都添加了synchronized锁,这样的锁无疑会影响到性能。本文的分析的源码是JDK8的版本,与JDK6的版本有很大的差异。实现

2020-06-18 17:00:16 246

原创 transient关键字

transient关键字其实这个关键字的作用很好理解,就是简单的一句话:将不需要序列化的属性前添加关键字transient,序列化对象的时候,这个属性就不会被序列化。transient底层实现原理:java的serialization提供了一个非常棒的存储对象状态的机制,说白了serialization就是把对象的状态存储到硬盘上 去,等需要的时候就可以再把它读出来使用。有些时候像银行卡号这些字段是不希望在网络上传输的,transient的作用就是把这个字段的生命周期仅存于调用者的内存中而不会写到磁盘

2020-06-17 18:19:48 182

原创 HashMap1.8源码解析

HashMap1.8源码解析首先看一下HashMap1.8的继承关系:public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable {}和1.7一样1.8不仅继承了AbstractMap,而且实现了Map、Cloneable和Serializable接口,所以HashMap也可以序列化。HashMap1.8的存储结构:在1.

2020-06-17 12:20:51 281

原创 HashMap1.7源码解析

HashMap1.7源码解析HashMap的继承关系:public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable { private static final long serialVersionUID = 362498820763181265L; }HashMap不仅继承了AbstractMap,而且实现了

2020-06-16 19:27:14 354

原创 JavaScript的面向对象

JavaScript的面向对象关于function下面先给一段代码就行讲解:function Fun () {};var fun1 = new Fun(); //这种写法在java中Fun一定是类名字,fun1是对象;console.log("fun1",fun1);console.log("fun1 instanceof Obj:",fun1 instanceof Fun);...

2020-05-07 21:04:31 172

原创 Java线程编程——生产者消费者问题分析

接上章Java线程编程(基础知识点)。进一步讲解线程编程。wait()方法和notify()方法。wait()方法的本质是让执行这个方法的线程进入阻塞态;notify()方法则相反,会唤醒处在阻塞态的相关线程。在前面讲述进程状态变迁时,讲述过进程/线程从运行态变迁到阻塞态,会进入阻塞态多个阻塞队列中的一个队列里。为了能够唤醒这些进程/线程,系统需要知道究竟唤醒哪个队列中的进程/线程。所以...

2020-02-29 18:35:46 237

原创 Java线程编程(基础知识点)

进程与线程概念进程:一个或多个程序,在一组数据上的一次执行过程,被称为进程。每一个进程有一套独立的数据。线程:线程是“轻量级”进程;线程是由进程创建的,但线程不再另外申请计算机资源,所以,线程要比进程“轻”。就是说,线程不需要像进程那样拥有庞大的资源表,也不需要像进程那样对资源进行严格的管理;线程所i使用的资源都是由进程申请的;多个线程的状态切换也比进程更简单、更省时;线程也可以再生成新的线程...

2020-02-29 13:37:39 600

原创 Java数据库编程(二)

接上一章——Java数据库编程(一),本章将讲解就Java程序对数据库的进一步访问。数据库编程——持久层工具本章一样是要用到前几章所提到的工具编程思想进行编程。...

2020-02-27 19:54:25 207 1

原创 简说Java数据库编程(建立数据库)

由于我们最终的目的是做出一个通过界面能够和数据库互动的成果,所以,这篇博文所讲解 内容就相对简单些。下面我将重新给出一个新的窗口编程的代码,可以参考前面博文——《浅谈窗口编程》,来理解。首先,先给后面的界面设计定义一个接口——IMecView.javapackage com.mec.util;import java.awt.Color;import java.awt.Font;pu...

2020-02-26 18:17:12 1197

原创 XML解析工具化

首先我以“学生信息”举例,给一个xml文件的代码:student.xml<?xml version="1.0" encoding="UTF-8"?><students> <student> <id>20191001</id> <name>小张</name> <sex>男</se...

2019-11-28 20:49:45 544

原创 数组(二)——ArrayList与LinkedList

在前面讲述的数组是编程中常见的数据结构,使用率非常高。但是,数组也是有缺陷的。比如,数组的大小必须事先定义,而且过程中不能改变。C语音中也有类似情况,那时的解决方案是“链表”。但链表也有其不便之处,比如,编程复杂、不支持“随机定位”等。Java为解决上述问题,提供了两个高度封装的类:ArrayList和LinkedList。这两个类都是数组,只是实现原理不同。ArrayList内部使用的是“...

2019-11-14 16:32:40 230

原创 JAVA基础讲解(二)

Java语言的基本使用方法众所周知C语言生成的文件有 .c和 .h文件。那么JAVA语言也有相对应的 .java和 .class文件。JAVA基础讲解(一)中有说道JAVA语言的体系结构治中立JAVA解释器生成与体系结构无关的字节码指令。 .class文件是编译器将 .java文件转换为机器能识别的“中间语言”,我们要运行JAVA语言所编译的代码,就要产生相应的.class文件。...

2019-11-07 16:44:27 152

原创 JAVA 基础讲解(一)

一、JAVA 语言的优点1.最为突出 以及 最为重要 的一点就是:JAVA是面向对象的语言。那么,面向对象是什么呢?面向对象是指:我们生活中的任何事物,都可以用JAVA语言进行描述,都可以通过JAVA语言来实现。(其实就是制作“工具方法”)2.JAVA语言提供了一个非常强大的库,这就保证了我们在编程过程中会极大程度上地 简化 以及 缩短 我们的代码;3.JAVA语言提供了“垃圾回收机制”...

2019-11-07 14:44:02 446

空空如也

空空如也

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

TA关注的人

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