![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 72
困知勉行1985
学而时习之,不亦说乎
展开
-
Java8 对象List 排序
java List排序原创 2023-11-24 17:10:26 · 1671 阅读 · 0 评论 -
Lambda表达式的性能分析与使用限制
Lambda表达式的优缺点原创 2023-11-17 10:24:21 · 420 阅读 · 0 评论 -
Redis cache-aside模型-分布式锁等问题研究
缓存穿透,缓存击穿,雪崩,预热等情况,都是Redis缓存里没有对应数据的情况,这种时候如果发生大并发怎么办?这就需要并发排他原创 2022-09-02 17:45:31 · 832 阅读 · 1 评论 -
上传本地jar包到nexus远程仓库
将本地maven仓库中的jar包上传到远程maven仓库,例如nexus,而且实现批量上传原创 2022-08-24 13:53:12 · 1947 阅读 · 0 评论 -
精辟--为什么NIO被称为同步非阻塞
按照《Unix网络编程》的划分,IO模型可以分为:阻塞IO、非阻塞IO、IO复用、信号驱动IO和异步IO。按照POSIX标准来划分只分为两类:同步IO和异步IO。如何区分呢?首先一个IO操作(read/write系统调用)其实分成了两个步骤:1、发起IO请求;2、实际的IO读写(内核态与用户态的数据拷贝)阻塞IO和非阻塞IO的区别在于第一步,发起IO请求的进程是否会被阻塞,如果阻塞直到IO操作完成才返回那么就是传统的阻塞IO,如果不阻塞,那么就是非阻塞IO。同步IO和异步IO的区别就在于转载 2022-05-27 13:13:30 · 1105 阅读 · 8 评论 -
Maven清理本地仓库
1.清理targetmvn clean -U2.清理该项目依赖的本地仓库中的maven包mvn dependency:purge-local-repository这个命令会清理pom.xml中的包,并重新下载,但是并不清理不在pom.xml中的依赖包。下面的扩展:mvn dependency:purge-local-repository -DreResolve=falsereResolve是否重新解析依赖关系mvn dependency:purge-local.转载 2022-02-09 17:19:11 · 12746 阅读 · 1 评论 -
Maven编译失败汇总
1.windows 配置java环境变量千万别忘了配置CLASSPATHWindows 10 Java环境变量配置 - Tyhoo_Wu - 博客园 (cnblogs.com)原创 2022-02-09 13:37:24 · 2233 阅读 · 0 评论 -
Netty 模拟 dubbo PRC过程
RPC介绍:基本介绍:RPC常见的框架:RPC调用流程图:实现简单RPC:代码实现:1.通用接口客户端使用该接口实现一个动态代理,服务端实现该接口,做为被RPC调用的APIpackage com.bruce.dubboLearn.publicInterface;/** * 这个是接口,是服务提供方和服务消费方都需要的 * @author bwang018 * */public interface HelloService ...原创 2021-11-05 09:17:19 · 139 阅读 · 0 评论 -
Java Netty线程模型分析--多Reactor多线程
Netty主要基于主从Reactors多线程模型做了一定的改进,其中主从Reactor多线程模型各有多个Reactor。Netty线程模型的简单原理图:一个BOSS GROUP里面有多个主Reactor,而Worker Group中有多个从Reactor。一个NIOEventLoop就等于一个Reactor,表示用一个线程(对应一个线程,一个ServerSockerChannel, 一个Selector)去处理客户端连接事件,用Selector,监听绑定在其上的socker网络连接。BOSS G原创 2021-10-31 11:02:52 · 786 阅读 · 0 评论 -
Java NIO线程模型分析--主从Reactor多线程
线程模型分析:永远要记住, Reactor(监听和分发)是通过多路复用器(Selector,poll,epoll)进行工作的,并且处理的事件中,就是客户端连接(Selection.OP_ACCEPT)和读(Selection.OP_READ)这两种事件。Acceptor(应该就是ServerSocketChannel)负责处理客户端连接事件,Handler其实就是把处理READ事件的操作封装一下。主从Reactor中的主Reactor(主线程)只处理客户端连接事件,从Reactor(子线程们)只处理原创 2021-10-31 09:48:14 · 617 阅读 · 2 评论 -
Java NIO线程模型分析--单Reactor多线程
线程模型分析:永远要记住, Reactor(监听和分发)是通过多路复用器(Selector,poll,epoll)进行工作的,并且处理的事件中,主要就是客户端连接(Selection.OP_ACCEPT)和读(Selection.OP_READ)这两种事件。Handler其实就是把处理上面两种事件的操作封装一下三种:单Reactor单线程 单Reactor多线程 多Reactor多线程(Netty)单Reactor多线程工作原理:跟单Reactor单线程相比,多加了一个线程池去处理原创 2021-10-31 09:16:29 · 265 阅读 · 0 评论 -
Java NIO线程模型分析--单Reactor单线程
涉及到Buffer, ServerSocketChannel, SocketChannel, Selector,SelectionKey等类的使用。ServerSocketChannel API:SocketChannel API:Client端代码:package com.bruce.javanio;import java.io.IOException;import java.net.InetSocketAddress;import java.nio.ByteB...原创 2021-10-28 22:15:58 · 556 阅读 · 1 评论 -
Java NIO 之Buffer数组
前面我们讲的读写操作,都是通过一个buffer完成的,NIO还支持通过多个Buffer(即Buffer数组)完成读写操作,即Scattering和Gathering。看NIO服务端代码(这里还没有使用到selector,所以是单线程,只考察Buffer数组的使用):package com.bruce.nio;import java.net.InetSocketAddress;import java.nio.ByteBuffer;import java.nio.channels.Server.原创 2021-10-26 21:35:49 · 529 阅读 · 0 评论 -
java IO模型之 NIO
NIO是指同步非阻塞,是对BIO(同步阻塞)的改进,它的代码在java.nio及其子包下。NIO关键的三要素是:Buffer(缓冲区)、Channel(通道)、Selector(选择器)客户端和服务端的线程都不会被阻塞:客户端(通过Buffer):Client不直接通过通道进行通信,而是在client与通道之间加了Buffer缓冲区(IntBufer、ByteBuffer......,除了boolean类型,别的都提供了对应的buffer,便于根据需要选择对应的Buffer),由Buff原创 2021-10-24 21:41:49 · 432 阅读 · 1 评论 -
java IO模型之BIO
java BIO模型是同步阻塞的,每当客户端发起一个请求,服务器端都要开启一个线程进行处理。问题如下:高并发场景下,会建立大量TCP链接,并且服务端需要创建大量线程进行处理,系统资源占用较大,造成服务器资源耗尽,从而崩溃。 连接建立后,如果当前线程暂时没有数据可读,则线程就阻塞在read()操作上,造成线程资源浪费BIO适用于并发量小,并且连接时间段的场景下。下面给出一个BIO的例子服务器端代码:服务器端监听6666端口。import java.io.IOException;.原创 2021-10-24 18:45:20 · 107 阅读 · 0 评论 -
java面试知识点总结
记录一下可能被问到的知识点1.spring源码,用到了哪些设计模式2.JVM优化: 预优化、卡顿、出问题怎么办,还有就是做过什么优化,举例说明3.写到简历里的东西,最好都做好相关知识点的准备,如果被问到,却答不上来,会很尴尬4...................................................原创 2021-10-21 21:43:40 · 1179 阅读 · 0 评论 -
java异常简单总结
java异常指在程序运行时出现的一些错误,中断了正在执行的程序的正常流程,也就是说只要发生异常,程序都会被打断。常见的异常例如IO异常(文件找不到FileNotFoundException、网络连接失败)、空指针异常、数组越界、NoClassDefFoundError等。Java通过API中Throwable类的众多子类描述各种不同的异常,因而,Java异常都是对象,是Throwable子类的实例,描述了出现在一段编码中的错误信息。Java所有异常类都是 Throwable的子类,它包括了Ja.原创 2021-09-26 14:38:38 · 128 阅读 · 0 评论 -
LockSupport 研究总结
在没有LockSupport以前,线程的等待与唤醒是要靠Synchronized的wait/notify,和Lock(例如基于AQS的ReentrantLock)的await/signal,但是这两种锁的等待与唤醒有两种限制:等待与唤醒操作 必须在锁的代码块内 唤醒操作必须在等待操作之前,否则线程将永远等待下去,无法被唤醒LockSupport的park、unpark的作用类似于wait/notify的作用,但是功能更加强大,突破了wait/notify以及await/signal的两个限制。L原创 2021-09-15 17:26:52 · 124 阅读 · 0 评论 -
JAVA直接内存
上述对直接内存的描述来自《深入理解Java虚拟机》,写明了直接内存不在java堆内,并且java堆内存往外写需要拷贝到native堆。然后咱们先写个代码看看直接内存分配在哪个区域import java.nio.ByteBuffer;import java.util.ArrayList;import java.util.List;/** * @author congzhou * @description: * @date: Created in 2019/2/19 21:57 *..转载 2021-08-03 16:30:53 · 693 阅读 · 0 评论 -
CAS的ABA问题 -- 研究心得
JAVA的多线程并发有两种解决方案,一种是加锁,一种是无锁,这个概念不再啰嗦,感兴趣的可以参考:https://blog.csdn.net/wdquan19851029/article/details/116145957而无锁的解决方案就是CAS,具体是有Unsafe类l...原创 2021-06-02 14:48:38 · 256 阅读 · 1 评论 -
算法面试 -- 排序算法之插入排序
排序算法一共有8种,这里介绍插入排序算法。package com.bruce.sorting;import java.text.SimpleDateFormat;import java.util.Arrays;import java.util.Date;public class InsertSort { public static void main(String[] args) { // TODO Auto-generated method stub //int [] arr原创 2021-05-23 11:11:44 · 256 阅读 · 0 评论 -
Java多线程-概要总结
多线程访问共享资源的时候,需要做线程同步。共享资源有哪些? 比如静态变量,多个线程访问同一个对象中的成员变量等等。注意对象中的方法不是共享的,因为线程在执行方法的时候,是在虚拟机栈的栈帧中执行的,而虚拟机栈是线程独享的,不是共享的,所以是线程安全的。只有在方法中访问了共享变量,才会有线程安全问题,需要做线程同步。怎样实现线程同步呢?有两种方式:锁 -- synchronized(C++实现),ReetrantLock等(java实现,基于AQS--AbstractQueuedSynchro.原创 2021-04-26 11:14:47 · 760 阅读 · 1 评论 -
JAVA设计模式-单例模式
在java面试过程中(当然了,不能只是出于面试的目的去学设计模式,要做一个有理想的程序员),设计模式是一定会问到的一环,而其中的单例模式因为比较简单,而且设计到的面比较广,线程安全、内存模型、类加载机制、反射等基础知识,比较好拿出来考察面试者。...原创 2021-02-07 14:07:23 · 1087 阅读 · 3 评论 -
Java 内存模型JMM 多线程问题总结
JMM(Java内存模型)中, 多线程下访问共享资源(例如共享变量)时,会遇到的三个问题的解决:1.原子性(线程安全):(1).对于基本数据类型的读写操作,本身就是原子性的,不存在线程安全的问题(2).除了JVM自身提供的对基本数据类型读写操作的原子性外,对于方法级别或者代码块级别的原子性操作,可以使用synchronized关键字或者重入锁(ReentrantLock),以及其它各种锁,保证程序执行的原子性2.可见性:JMM把内存工作内存与主内存同步延迟现象导致的可见性问题,可以使用synch原创 2021-04-01 17:09:51 · 871 阅读 · 1 评论