自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

yuan_xw的专栏

宁静致远,淡泊明志!

原创 数据结构和算法(九)递归

1. 数据结构和算法(九)递归 1.1 什么是递归   在数学与计算机科学中,是指在函数的定义中使用函数自身的方法。也就是说,递归算法是一种直接或者间接调用自身函数或者方法的算法。通俗来说,递归算法的实质是把问题分解成规模缩小的同类问题的子问题,然后递归调用方法来表示问题的解。 1.2 递归的三...

2020-03-18 01:33:02 68 0

原创 数据结构和算法(八)中缀表达式转逆波兰表达式

1. 数据结构和算法(八)中缀表达式转逆波兰表达式 1.1 四则混合运算 加法、减法、乘法、除法,统称为四则混合运算。其中,加法和减法叫做第一级运算;乘法和除法叫做第二级运算。表达式(算式):如:1+((2+3)*4)-5=16 运算顺序: 同级运算时,从左到右依次计算; 两级运算时,先...

2020-02-21 22:14:58 139 0

原创 数据结构和算法(七)栈的设计与实现

1. 数据结构和算法(七)栈的设计与实现 1.1 什么是栈   栈是一种抽象数据结构,是对现实世界对象的模拟。比如,自助餐厅中的一叠盘子,新盘子放在这一叠盘子的最上面,取得时候也是从最上面取。将其抽象出来就是栈,这是最合适的抽象方式。 栈的特点: 栈是一个先入后出(FILO-First In...

2020-02-21 22:13:47 58 0

原创 数据结构和算法(六)Java实现跳表

1. 数据结构和算法(六)Java实现跳表 1.1 什么是跳表(Skip List)   跳表确实是一种性能比较优秀的动态数据结构,跳表(skip list) 对标的是平衡树(AVL Tree),是一种 插入/删除/搜索 都是 O(log n) 的数据结构。它最大的优势是原理简单、容易实现、方便扩...

2020-02-19 23:10:00 77 0

原创 数据结构和算法(五)Java实现双向链表

1. 数据结构和算法(五)Java实现双向链表 1.1 什么是双向链表   双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表。 value域–...

2020-02-17 17:23:10 260 0

原创 数据结构和算法(四)Java实现环形链表

1. 数据结构和算法(四)Java实现环形链表 1.1 约瑟夫问题 约瑟夫问题:公元66年,约瑟夫不情愿地参与领导了犹太同胞反抗罗马统治的起义,后来起义失败,他和一些宁死不降的起义者被困于一个山洞之中。罗马将军韦斯巴芗(Vespasian)派人来劝降,他主张投降,其余的人不答应,并以死相逼。最后,...

2020-02-17 17:21:46 118 0

原创 数据结构和算法(三)图解单向链表反转

1. 数据结构和算法(三)图解单向链表反转   所谓的单链表反转,就是把每个节点的指针域由原来的指向下一个节点变为指向其前一个节点。 一直觉得反转链表实现代码不是很好理解,今天用画图的方式去理解它。 1.1 需求分析 反转链表需求: 输入:[HBase,Redis,Kafka] 输出:[Ka...

2020-02-17 17:20:24 128 0

原创 数据结构和算法(二)Java实现单向链表

1. 数据结构和算法(二)Java实现单向链表 1.1 什么是单向链表   单向链表(单链表)是链表的一种,其特点是链表的链接方向是单向的,对链表的访问要通过顺序读取从头部开始;链表是使用指针进行构造的列表;又称为结点列表,因为链表是由一个个结点组装起来的;其中每个结点都有指针成员变量指向列表中的...

2020-02-17 17:19:25 232 0

原创 数据结构和算法(一)Java实现循环队列

1. 数据结构和算法(一)Java实现循环队列 1.1 什么是循环队列   循环队列:具有队头指针(front)和队尾指针(rear),指示队列元素所在的位置,避免删除元素时移动大量元素。队列也是一种线性表,只不过它是操作受限的线性表,只能在两端操作,先进先出(First In First Out...

2020-02-17 17:18:18 210 1

原创 JAVA多线程(二十八)Java多线程之SynchronousQueue容器

1.JAVA多线程(二十八)Java多线程之SynchronousQueue容器 1.1 什么是SynchronousQueue   Java 6的并发编程包中的SynchronousQueue是一个没有数据缓冲的BlockingQueue,生产者线程对其的插入操作put必须等待消费者的移除操作t...

2020-02-11 18:50:01 51 0

原创 JAVA多线程(二十七)Java多线程之LinkedBlockingQueue容器

1.JAVA多线程(二十七)Java多线程之LinkedBlockingQueue容器 1.1 什么是LinkedBlockingQueue   LinkedBlockingQueue 底层基于单向链表实现的阻塞队列,可以当做无界队列也可以当做有界队列来使用,同样满足 FIFO 的特性,与 Arr...

2020-02-11 18:48:46 49 0

原创 JAVA多线程(二十六)Java多线程之PriorityBlockingQueue容器

1.JAVA多线程(二十六)Java多线程之PriorityBlockingQueue容器 1.1 什么是PriorityBlockingQueue   PriorityBlockingQueue 是一个支持优先级的无界阻塞队列。默认情况下元素采用自然顺序进行排序,也可以通过自定义类实现 comp...

2020-02-11 18:47:55 52 0

原创 JAVA多线程(二十五)Java多线程之ArrayBlockingQueue容器

1.JAVA多线程(二十五)Java多线程之ArrayBlockingQueue容器 1.1 什么是BlockingQueue   阻塞队列(BlockingQueue)被广泛使用在“生产者-消费者”问题中,其原因是 BlockingQueue 提供了可阻塞的插入和移除的方法。当队列容器已满,生产...

2020-02-11 18:46:51 99 0

原创 JAVA多线程(二十四)Java多线程之CompletableFuture类

1.JAVA多线程(二十四)Java多线程之CompletableFuture类 1.1 什么是Future   Future是Java 5添加的类,用来描述一个异步计算的结果。你可以使用isDone方法检查计算是否完成,或者使用get阻塞住调用线程,直到计算完成返回结果,你也可以使用cancel...

2020-02-06 19:40:15 151 0

原创 JAVA多线程(二十三)Java多线程之ScheduledThreadPoolExecutor定时执行任务线程池

1.JAVA多线程(二十三)Java多线程之ScheduledThreadPoolExecutor定时执行任务线程池 1.1 定时执行任务线程池ScheduledThreadPoolExecutor    ScheduledThreadPoolExecutor是一个使用线程池执行定时任务的类,相较...

2020-02-03 21:39:05 137 0

原创 JAVA多线程(二十二)Java多线程之WorkStealingPool工作窃取线程池

1.JAVA多线程(二十二)Java多线程之WorkStealingPool工作窃取线程池 1.1 工作窃取线程池WorkStealingPool    在Java 8中,引入了一种新型的线程池,作为newWorkStealingPool()来补充现有的线程池。WorkStealingPool线程...

2020-02-03 21:37:30 473 0

原创 JAVA多线程(二十一)Java多线程之SingleThreadExecutor单线程化线程池

1.JAVA多线程(二十一)Java多线程之SingleThreadExecutor单线程化线程池 1.1 单线程化线程池SingleThreadExecutor    SingleThreadExecutor 是只有一个线程的线程池。通过源代码查看SingleThreadExecutor实现: ...

2020-02-01 18:56:59 78 0

原创 JAVA多线程(二十)Java多线程之FixedThreadPool可重用固定线程数的线程池

1.JAVA多线程(二十)Java多线程之FixedThreadPool可重用固定线程数的线程池 1.1 可重用固定线程数的线程池FixedThreadPool    可重用固定线程数的线程池FixedThreadPool特点是:只有核心线程,不会被回收、线程数量固定、任务队列无大小限制(超出的线...

2020-02-01 18:56:29 65 0

原创 JAVA多线程(十九)Java多线程之CachedThreadPool可缓存线程池

1.JAVA多线程(十九)Java多线程之CachedThreadPool可缓存线程池 1.1 可缓存线程池CachedThreadPool    可缓存线程池CachedThreadPool是一个根据需要创建新线程的线程池。 通过源代码查看CachedThreadPool实现: /** ...

2020-02-01 18:55:46 144 0

原创 JAVA多线程(十八)Java多线程之Executor框架&ThreadPoolExecutor类

1.JAVA多线程(十八)Java多线程之Executor框架&ThreadPoolExecutor类    Executor 框架是 Java5 之后引进的,在 Java 5 之后,通过 Executor 来启动线程比使用 Thread 的 start 方法更好,除了更易管理,效率更好(...

2020-01-31 18:31:14 159 0

原创 JAVA多线程(十七)Java多线程之ForkJoin框架

1.JAVA多线程(十七)Java多线程之ForkJoin框架 1.1 什么是ForkJoin框架?    Fork/Join 框架,可以将一个大的任务拆分成多个子任务进行并行处理,最后将子任务结果合并成最后的计算结果,并进行输出。通过这种方式,Fork/Join 能试着去使用所有可用的处理器,以...

2020-01-30 15:41:07 44 0

原创 JAVA多线程(十六)Java多线程之Condition对象

1.JAVA多线程(十六)Java多线程之Condition对象 1.1 什么是Condition?    Condition是在java 1.5中才出现的,它用来替代传统的Object的wait()、notify()实现线程间的协作,相比使用Object的wait()、notify(),使用Co...

2020-01-29 14:51:36 50 0

原创 JAVA多线程(十五)Java多线程之ReentrantLock重入锁

1.JAVA多线程(十五)Java多线程之ReentrantLock重入锁 1.1 什么是ReentrantLock重入锁?    重入锁:自己可以再次获取自己的内部锁。比如一个线程获得了某个对象的锁,此时这个对象锁还没有释放,当其再次想要获取这个对象的锁的时候还是可以获取的,如果不可锁重入的话,...

2020-01-27 18:51:52 60 0

原创 JAVA多线程(十四)Java多线程之Semaphore信号量

1.JAVA多线程(十四)Java多线程之Semaphore信号量    Semaphore(信号量)是用来控制同时访问特定资源的线程数量,它通过协调各个线程,以保证合理的使用公共资源。把它比作是控制流量的红绿灯,比如一条马路要限制流量,只允许同时有一百辆车在这条路上行使,其他的都必须在路口等待,...

2020-01-16 00:35:10 108 0

原创 JAVA多线程(十三)Java多线程之CyclicBarrier

1.JAVA多线程(十三)Java多线程之CyclicBarrier    CyclicBarrier 和 CountDownLatch 非常类似,它也可以实现线程间的技术等待,但是它的功能比 CountDownLatch 更加复杂和强大。主要应用场景和 CountDownLatch 类似。 1....

2020-01-15 18:37:37 70 0

原创 JAVA多线程(十二)Java多线程之CountDownLatch

1.JAVA多线程(十一)Java多线程之CountDownLatch 1.1 CountDownLatch是什么?    CountDownLatch 是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程的操作执行完后再执行。CountDownLatch是在java1.5被引入的,跟...

2020-01-15 17:09:28 81 0

原创 JAVA多线程(十一)Java多线程之自定义线程池

1.JAVA多线程(十一)Java多线程之自定义线程池 1.1 什么是用线程池    线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程。每个线程都使用默认的堆栈大小,以默认的优先级运行,并处于多线程单元中。如果某个线程在托管代码中空闲...

2020-01-15 12:03:18 85 0

原创 JAVA多线程(十)Java多线程之ThreadLocal

1.JAVA多线程(十)Java多线程之ThreadLocal 1.1 ThreadLocal类    ThreadLocal类主要解决的就是让每个线程绑定自己的值,可以将ThreadLocal类形象的比喻成存放数据的盒子,盒子中可以存储每个线程的私有数据。 如果你创建了一个ThreadLoca...

2020-01-15 11:51:00 66 0

原创 Linux网络配置与远程连接

Linux网络配置与远程连接 1 Linux网络配置 1.1 WMware网络适配置器 1、在虚拟机下安装完成Linux后,在Wmware设置网络配置,选择虚拟机,右击“设置” 2、在打开的弹出框中选择网络适配器: 3、网络连接: 1.桥接模式:VMWa...

2019-12-31 00:52:06 3492 1

原创 JAVA多线程(九)Java多线程之生产者与消费者

1.JAVA多线程(九)Java多线程之生产者与消费者 需求如下:自定义多线程生产者与消费者 1.如果生产者没有生产消息,就需要去生产消息,消费者就需要等待消费者生产完以后再去消费。 2.如果消费者没有消费消息,那么生产者就需要等待,消费都消费完成后,再去生产消息。 1.1 生产者与消费者【一...

2019-12-31 00:46:12 151 0

原创 JAVA多线程(八)Java多线程之死锁

1.JAVA多线程(八)Java多线程之死锁 1.1什么是线程死锁?如何避免死锁?   多个线程同时被阻塞,它们中的一个或者全部都在等待某个资源被释放。由于线程被无限期地阻塞,因此程序不可能正常终止。 如下图所示,线程 A 持有资源 2,线程 B 持有资源 1,他们同时都想申请对方的资源,所...

2019-12-31 00:41:46 84 0

原创 JAVA多线程(七)Java多线程之synchronized(同步锁)

1.JAVA多线程(七)Java多线程之synchronized(同步锁) 1.1 synchronized(同步锁)   synchronized关键字解决的是多个线程之间访问资源的同步性,synchronized关键字可以保证被它修饰的方法或者代码块在任意时刻只能有一个线程执行。 另外,在 J...

2019-12-31 00:37:01 56 0

原创 Nginx教程(二) Nginx虚拟主机配置

Nginx教程(二) Nginx虚拟主机配置 1 虚拟主机管理 1.1 Nginx管理虚拟主机 虚拟主机使用的是特殊的软硬件技术,它把一台运行在因特网上的服务器主机分成一台台“虚拟”的主机,每台虚拟主机都可以是一个独立的网站,可以具有独立的域名,具有完整的Intemet服务器功能...

2019-12-31 00:35:21 12135 0

原创 JAVA多线程(六)Java多线程之ThreadGroup

1.JAVA多线程(六)Java多线程之ThreadGroup 1.1 ThreadGroup   ThreadGroup是Java提供的一种对线程进行分组管理的手段,可以对所有线程以组为单位进行操作,如设置优先级、守护线程等。   在Java程序中,默认情况下,新的线程都会加入到 main 线程...

2019-12-30 23:49:14 46 0

原创 JAVA多线程(五)Java多线程之interrupted线程中断

1.JAVA多线程(五)Java多线程之interrupted线程中断 1.1 interrupted(线程中断)   一个线程执行完毕之后会自动结束,如果在运行过程中发生异常也会提前结束。 通过调用一个线程的 interrupt() 来中断该线程,如果该线程处于阻塞、限期等待或者无限期等待状态,...

2019-12-29 17:14:52 87 1

原创 JAVA多线程(四)Java多线程之join等待结束

1.JAVA多线程(四)Java多线程之join等待结束 1.1 join(等待结束)   join()方法的作用,是等待这个线程结束; 也就是说,thread.join()方法阻塞调用此方法的线程(calling thread)进入 TIMED_WAITING 状态,直到线程thread完成,此...

2019-12-29 17:11:39 48 0

原创 JAVA多线程(三)Java多线程之守护线程

1.JAVA多线程(三)Java多线程之守护线程 1.1 daemon(守护线程)   Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程)。用户线程即运行在前台的线程,而守护线程是运行在后台的线程。    用户线程:运行在前台,执行具体的任务,程序...

2019-12-29 17:07:52 61 0

原创 JAVA多线程(二)Java多线程之火车票

1. Java多线程实现简单的火车售票程序   需求如下:铁道部发布了一个售票任务,要求销售10张票,要求有4个窗口来进行销售,请编写多线程程序来模拟这个效果 第001窗口,正在售票,票号:1 第004窗口,正在售票,票号:2 第002窗口,正在售票,票号:3 第003窗口,正在售票...

2019-12-27 23:08:56 124 0

原创 JAVA多线程(一)认识JAVA多线程

@TOC JAVA多线程(一)认识JAVA多线程   在早期的计算机中不包含操作系统,它们从头到尾只执行一个程序,并肯这个程序能访问计算机中的所有的所有资源。在这种裸机环境中,不仅很难编写和运行程序,而且每次只能运行一个程序,这对于昂贵并且稀有的计算机资源来说也是一种浪费。   操作系统的出...

2019-12-27 15:30:10 109 0

转载 Kafka教程(三)Kafka-manager安装

Kafka-manager安装 想要查看和管理Kafka,完全使用命令并不方便,我们可以使用雅虎开源的Kafka-manager,GitHub地址如下: https://github.com/yahoo/kafka-manager 我们可以使用Git或者直接从Releases中下载,...

2018-01-28 19:01:45 14035 0

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