自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 资源 (1)
  • 收藏
  • 关注

原创 Netty中的三种Reactor(反应堆)( netty线程模型)

一、netty概述1、netty是什么? Netty是一个基于Java NIO的client-server网络服务框架,人们可以利用netty快速地开发网络应用,Netty是一个提供异步事件驱动的网络应用框架,用以快速开发高性能、高可靠的网络服务器和客户端程序。Netty简化了网络程序的开发,是很多框架和公司都在使用的技术。2、netty的特点?一个高性能、异步事件驱动的NIO框架,它提...

2019-08-31 14:50:51 1004

原创 Netty序章之BIO NIO AIO演变

一、BIO1、BIO是什么?BIO 全称Block-IO 是一种阻塞同步的通信模式。我们常说的Stock IO 一般指的是BIO。是一个比较传统的通信方式,模式简单,使用方便。但并发处理能力低,通信耗时,依赖网速。2、BIO 设计原理:服务器通过一个Acceptor线程负责监听客户端请求和为每个客户端创建一个新的线程进行链路处理,是一个典型的一请求一应答模式。若客户端数量增多,...

2019-08-30 16:15:17 155

原创 java实现zookeeper分布式锁

基本思路1 client调用create()方法创建“/locks/lock”临时顺序节点,注意节点类型是EPHEMERAL_SEQUENTIAL2 client调用getChildren("/locks",false)来获取所有已经创建的子节点,这里并不注册任何Watcher,只是为了看自己的是不是最小的节点如果是,便获得了锁。3 客户端获取到所有子节点Path后,如果发现自己在步骤1中...

2019-07-24 15:53:56 540

原创 Java实现一个简易版RPC

准备知识:1 java 网络编程(这里使用的bio)2 java动态代理3 反射=================================通俗来说rpc就是:1. 客户端持有的是接口(但是没有持有实现);2.服务端放的是接口的具体实现以及接口;3.客户端把方法和方法的参数 以及其他参数 通过socket发送给服务端;4.然后服务端执行相对应的方法,最后再把执行结果返...

2019-07-24 15:48:32 144

转载 java中关于String的知识整理

1、JVM相关知识JVM的体系结构图:Java栈(线程私有数据区): 每个Java虚拟机线程都有自己的Java虚拟机栈,Java虚拟机栈用来存放栈帧,每个方法被执行的时候都会同时创建一个栈帧(Stack Frame)用于存储局部变量表、操作栈、动态链接、方法出口等信息。每一个方法被调用直至执行完成的过程,就对应着一个栈帧在虚拟机栈中从入栈到出栈的过程。Java堆(线程共享数据区)...

2019-05-23 18:58:44 153

翻译 多线程(AQS)

1、JUC简介在 Java 5.0 提供了 java.util.concurrent(简称JUC)包,在此包中增加了在并发编程中很常用的工具类,用于定义类似于线程的自定义子系统,包括线程池,异步 IO 和轻量级任务框架;还提供了设计用于多线程上下文中的 Collection 实现等,大大的提高了java的并发性能。2、JUC之AQSAQS(AbstractQueuedSynchronize...

2019-04-29 18:48:00 941

原创 多线程的安全性

1、线程的安全性定义:当多个线程访问某个类时,不管运行环境采用何种调度方式或者这些进程将如何交替执行,并且在主调代码中不需要任何额外的同步或协同,这个类都能表现出正确的行为,那么这个类就是线程安全的2、线程安全性的体现(1)原子性:提供了互斥访问,同一时刻只能有一个线程对他进行操作。(2)可见性:一个线程对主内存的修改可以及时的被其他线程观察到。(3)有序性:一个线程观察其他线程中的指令...

2019-04-27 16:45:22 643

原创 HashMap源码解析

1、HashMap的数据结构在1.7版本 数组+链表在1.8版本 数组+链表+红黑树先看看hashMap在jdk 1.8的结构,如下图,用的是数组+链表+红黑树的结构,也叫哈希桶,在jdk 1.8之前都是数组+链表的结构,因为在链表的查询操作都是O(N)的时间复杂度,而且hashMap中查询操作也是占了很大比例的,如果当节点数量多,转换为红黑树结构,那么将会提高很大的效率,因为红黑树结构中...

2019-04-24 14:51:11 123

原创 红黑树(java)

1、红黑树的定义

2019-04-23 18:32:42 91

转载 Java多线程学习(一)

1、线程相关概念1.1线程的定义线程与进程相似,但线程是一个比进程更小的执行单位。一个进程在其执行的过程中可以产生多个线程。与进程不同的是,同类的多个线程共享同一块内存空间和一组系统资源,所以系统在产生一个线程,或是在各个线程之间作切换工作时,负担要比进程小得多,也正因为如此,线程也被称为轻量级进程。1.2进程的定义进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统...

2019-04-23 17:34:54 97

原创 AVL树(java)

1、AVL树的定义AVL树又称平衡二叉搜索树,它能保证二叉树高度相对平衡,尽量降低二叉树的高度,提高搜索效率2、AVL树的特点(1)AVL的左右子树高度之差的绝对值不超过1(2)树中的每个左子树和右子树都是AVL树(3)每个节点都有一个平衡因子,任一节点的平衡因子只能是(-1、0、1)。(每个节点的平衡因子等于右子树的高度减去左子 树的高度 )(4)平衡二叉树的高度和结点数量之间的关系...

2019-04-22 19:01:49 577

原创 java之二叉树搜索树(BST)

1、二叉搜索树需满足以下四个条件:1.若任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值;2.若任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值;3.任意节点的左、右子树也分别为二叉查找树;4.没有键值相等的节点。如下图所示:2、查找二叉树的构建代码:package com.wd.digui;public class Wd_30 { publ...

2019-04-12 17:07:58 650 1

原创 树的遍历

1、树的遍历方式二叉树的定义是递归的,一棵非空的二叉树是由根节点、左子树、右子树3个基本部分组成的,因此遍历一棵非空的二叉树的问题可分解为3个子问题:访问根节点、遍历左子树和遍历右子树。遍历分为3种:遍历结果:(1)前序遍历二叉树: A B D E H J K M C F G(2)中序遍历二叉树: D B H E K J M A F C G(3)后续遍历二叉树: D H K M...

2019-04-08 19:41:56 247

原创 笔试题:大整数相乘

1、问题:有两个用字符串表示的非常大的大整数,算出他们的乘积,也是用字符串表示。不能用系统自带的大整数类型。例子:输入72106547548473106236 982161082972751393输出70820244829634538040848656466105986748思路:参考代码:import java.util.Scanner;public class Test...

2019-04-08 13:06:50 320

原创 笔试题: 获取一个数组的所有子串 数组里面元素不重复

1、问题:获取一个数组的所有子串数组里面元素不重复比如Input: nums = [1,2,3]Output: [ [3], [1], [2],[1,2,3], [1,3],[2,3],[1,2],[]]2、解题思路2.1递归的解法,相当于一种深度优先搜索,由于原集合每一个数字只有两种状态,要么存在,要么不存在,那么在构造子集时就有选择和不选择两种情况,所以可以构造一棵二叉树,左子树...

2019-04-08 13:01:27 794

原创 java代码之归并排序

1、归并排序的基本思想归并排序的核心是采用分治法,即将一个长度为n的待排序列,分成n个长度为1的序列,(这n个长度为1的序列可以看成n个有序序列),然后两两归并,得到n/2个新的有序序列,在两两归并,如此重复,直到得到一个长度为n的有序序列位置(两两归并的过程也可以叫做二路归并)2、归并排序图解分而治之,先分后治:分的过程:将一个长度为n的待排序列,分成n个长度为1的序列,这n个长度为1的...

2019-03-16 15:47:34 276

原创 java代码之堆排序

1、堆排序的基本思想堆排序是对直接选择排序算法的一种改进,其思想为:对一组待排序记录的关键字,首先把它们建成一个大根堆或小根堆,从而输出堆顶的最小关键字(假设利用小根堆来排序)。然后对剩余的关键字在建堆,便得到次小的关键字,如此反复进行,直到全部关键字排成有序序列为止。2、堆排序图解堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(n...

2019-03-15 20:47:22 277

原创

1、树的基本概念树结构是一类重要的非线性数据结构,树中结点之间具有明确的层次关系,并且结点之间具有分支,类似于正真的树。在图形表示的树型结构中,对两个用线段(树枝)连接的相关联的结点,称上端结点为下端结点的父节点,称下端结点为上端结点的子结点。对同一个父结点的多个子结点互称兄弟结点,对从根结点到某个子结点所经过的所有结点称为这个子结点的祖先,对以某个结点为根的子树中的任一结点都是该结点的子孙。...

2019-03-10 14:04:40 266

原创 java代码之排序算法知识概括

1、排序定义排序就是就是把一组无序的记录按照其关键字的某种次序排列起来,使其具有一定的顺序,便于进行数据的查找。2、排序分类:2.1如果按照排序过程中依照的不同原则对内部排序方法进行分类:插入排序、交换排序、选择排序、归并排序、分配排序2.2 如果按照其工作量来分类:简单的排序方法:其时间复杂度为O(n^2);先进的排序方法:其时间复杂度为O(nlog2为底n)基数排序:其时间复...

2019-03-10 13:03:01 252

原创 java代码之冒泡排序及其优化

1、交换排序的基本思想两两比较待排序记录的关键字,如果发现两个记录的次序相反则进行交换,知道所有记录都没有反序为止。2、常见的交换排序冒泡排序、快速排序3、冒泡排序的基本思想冒泡排序属于比较简单的排序,以非递减为例,依次遍历数组,发现a[i]>a[i+1}的情况,swap(a[i],a[i+1]),直到没有逆序的数据,完成排序,可以用两个for循环嵌套实现,外层控制遍历次数,内层用...

2019-03-06 12:40:14 1827

原创 java代码之希尔排序

1、插入排序的基本思想每一趟将一个待排序的记录,按照其关键字值得大小插入到已排序的部分文件中的适当位置上,直到全部插入完成。2、插入排序的主要方法有直接插入排序、希尔排序、折半插入排序3、希尔排序的基本思想希尔排序(shell sort)这个排序方法又称为缩小增量排序,是1959年D·L·Shell提出来的。该方法的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的...

2019-03-05 20:52:40 4180 2

原创 java代码之直接插入排序

1、插入排序的基本思想每一趟将一个待排序的记录,按照其关键字值得大小插入到已排序的部分文件中的适当位置上,直到全部插入完成。2、插入排序的主要方法有直接插入排序、希尔排序、折半插入排序3、直接插入排序每次将一个新数据插入到有序队列中的合适位置里假设有一组无序序列 R0, R1, … , RN-1。(1) 我们先将这个序列中下标为 0 的元素视为元素个数为 1 的有序序列。(2) 然...

2019-03-05 20:47:52 305

原创 java代码之快速排序算法的三种方式及其优化

快速排序算法的三种方式及其优化java实现1、快速排序算法的简绍2、快速排序的基本思想3、快速排序左右指针法图解4、快速排序左右指针法核心代码5、快速排序挖坑法图解6、快速排序挖坑法核心代码7、快速排序前后指针法图解8、快速排序前后指针法核心代码9、快速排序基准点优化及其核心代码10、快速排序算法的时间复杂度11、快速排序的稳定性11、快速排序与其他排序的比较1、快速排序算法的简绍快速排序算法...

2019-01-24 14:53:09 5960 1

loginxzf.rar

新版正方教务管理系统模拟登录,课表查询,成绩查询,学籍获取完整代码

2020-02-08

空空如也

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

TA关注的人

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