![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 61
Justdoforever
读书是为了更出色的人生!
展开
-
CyclicBarrier与CountDownLatch的区别
CyclicBarrier与CountDownLatch的区别至此我们难免会将CyclicBarrier与CountDownLatch进行一番比较。这两个类都可以实现一组线程在到达某个条件之前进行等待,它们内部都有一个计数器,当计数器的值不断的减为0的时候所有阻塞的线程将会被唤醒。有区别的是CyclicBarrier的计数器由自己控制,而CountDownLatch的计数器则由使用者来控制,在CyclicBarrier中线程调用await方法不仅会将自己阻塞还会将计数器减1,而在CountDownLat原创 2021-10-29 19:39:51 · 805 阅读 · 0 评论 -
BigInteger 用法
import java.math.BigInteger;import java.util.Scanner;public class test4 {public static void main(String[] args) {Scanner sc =new Scanner(System.in);int n=sc.nextInt();for (int j = 0; j < n; j++) {int n1=sc.nextInt();int n2=sc.nextInt();BigInteg原创 2021-09-12 17:03:27 · 352 阅读 · 0 评论 -
java 基础
任务队列的实现原理?这里面试官是想让我说任务队列的工作原理,阻塞唤醒这些。但是我理解错了。第一次面试问这么深,所以这里没答好。我答的是ArrayBlockingQueue:底层是数组,有界队列LinkedBlockingQueue:底层是链表,可以当做无界和有界队列。实际上应该回答阻塞队列,原理就是读操作和写操作都需要获取到 AQS 独占锁才能进行操作。如果队列为空,这个时候读操作的线程进入到读线程队列排队,等待写线程写入新的元素,然后唤醒读线程队列的第一个等待线程。如果队列已满,这个时候写操作的线转载 2021-09-03 10:11:03 · 159 阅读 · 0 评论 -
rpc0000
转载 2021-08-01 13:03:33 · 111 阅读 · 0 评论 -
java rpc实现
Socket 网络通信实战什么是 Socket(套接字)Socket是一个抽象概念,应用程序可以通过它发送或接收数据。在使用 Socket 进行网络通信的时候,通过 Socket 就可以让我们的数据在网络中传输。操作套接字的时候,和我们读写文件很像。套接字是IP地址与端口的组合,套接字 Socket=(IP地址:端口号)。要通过互联网进行通信,至少需要一对套接字:运行于服务器端的Server Socket。运行于客户机端的Client Socket在Java 开发中使用Socket 时会常用到两原创 2021-07-28 10:04:51 · 96 阅读 · 0 评论 -
阿里1面1
场景,比如限流答案:三种限流算法计数器法,漏桶和令牌桶算法,限流一般在网关进行。如何实现云班课? 每个学校有自己的数据库 不同学校用相同的云班课系统答案:多租户我答的,分库分表,那么如何分库分表?四种方式水平分库分表,垂直分库分表sharding-jdbc实例分库分表还有一个场景题是如何实现一个比价系统比价系统用CyclicBarrier比较好,适用于将一个大任务分解为多个任务,然后多个线程执行多个计算任务,然后将结果的合并,可重复使用CountDownLatch和CyclicBarri原创 2021-05-12 20:45:13 · 113 阅读 · 0 评论 -
每个公司有自己的数据库 公司用相同的系统 多租户
多租户1.1 多租户是什么1.2 需求分析1.3 多租户的数据库方案分析1.3.1 独立数据库1.3.2 共享数据库、独立 Schema1.3.3 共享数据库、共享数据表1.1 多租户是什么多租户技术(Multi-TenancyTechnology)又称多重租赁技术:是一种软件架构技术,是实现如何在多用户环境下 (此处的多用户一般是面向企业用户)共用相同的系统或程序组件,并且可确保各用户间数据的隔离性。简单讲: 在一台服务器上运行单个应用实例,它为多个租户(客户)提供服务。从定义中我们可以理解:多租户是原创 2021-05-12 19:29:03 · 501 阅读 · 0 评论 -
剖析常见的限流算法:计数器法、漏桶和令牌桶算法
常见的限流算法1. 计数器法2. 漏桶和令牌桶算法3.Spring Cloud Gateway限流对于业务系统来说高并发就是支撑「海量用户请求」,QPS 会是平时的几百倍甚至更高。如果不考虑高并发的情况,即使业务系统平时运行得好好的,并发量一旦增加就会频繁出现各种诡异的业务问题,比如,在电商业务中,可能会出现用户订单丢失、库存扣减异常、超卖等问题。限流是服务降级的一种手段,顾名思义,通过限制系统的流量,从而实现保护系统的目的。合理的限流配置,需要了解系统的吞吐量,所以,限流一般需要结合容量规划和原创 2021-05-12 13:11:22 · 936 阅读 · 4 评论 -
Java常用设计模式总结
Java常用设计模式总结1.策略模式(Strategy): 定义了算法家族, 分别封装起来, 让它们之间可以互相替换.比如Collections.sort(List list, Comparator c); 可以通过实现多个Comparator接口来达到多种排序的目的.2.装饰着模式(Decorator): 动态的给一个对象添加一些额外的职责.比如java.io包. BufferedInputStream封装了FileInputStream, 它们都实现了InputStream接口, 但前者实现了r原创 2021-04-03 09:54:46 · 530 阅读 · 0 评论 -
TCP网络编程
TCP网络编程服务器端客户端Socket流总结计算机网络的基本概念主要有:计算机网络:由两台或更多计算机组成的网络;互联网:连接网络的网络;IP地址:计算机的网络接口(通常是网卡)在网络中的唯一标识;网关:负责连接多个网络,并在多个网络之间转发数据的计算机,通常是路由器或交换机;网络协议:互联网使用TCP/IP协议,它泛指互联网协议簇;IP协议:一种分组交换传输协议;TCP协议:一种面向连接,可靠传输的协议;UDP协议:一种无连接,不可靠传输的协议。在开发网络应用程序的时候,我们又会遇到原创 2021-03-31 17:05:08 · 139 阅读 · 0 评论 -
HashMap 原理解释及其常见面试题
HashMap 原理解释及其常见面试题在多线程下在java HashMap的1948或2239行都会出现死循环情况,1948行treeify函数中将链表转为树的时候,2239在balanceInsertion函数中,让树变为平衡时,总之多线程下HashMap在链表转树或涉及树的操作时会出现死循环。测试代码:import java.util.*;public class MainTest { Map<String,String> map = new HashMap<>();原创 2021-03-25 19:32:16 · 552 阅读 · 0 评论 -
java 只存在值传递,不存在引用传递
java 只存在值传递,不存在引用传递Java的函数传参方式都是值传递,唯一区别是形参是基本数据类型,还是引用数据类型,而这两种数据类型造成在函数体中修改了参数的额值,在函数体外是否跟着发生改变,根本原因是,两种数据类型变量在内存中存储的方式不一样,基本类型的变量保存原始值,即它代表的值就是数值本身;而引用类型的变量保存的是引用值,"引用值"指向内存空间的地址,代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址的位置。即基本类型的变量直接保存在函数调用栈中,而对象的变量的值其实是原创 2021-01-13 20:45:44 · 188 阅读 · 0 评论