自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 BIO、NIO、AIO的区别

BIO和NIO在数据拷贝的过程中,进程都会阻塞等待,而AIO是异步非阻塞IO,在数据拷贝到用户空间的过程中不会阻塞等待,它的过程就是,用户进程发起IO调用请求,操作系统会立即返回数据没有准备好的信息,但不会返回结果,这个时候进程可以去做其他事儿,等到操作系统准备好数据并拷贝到用户缓冲区中之后,会发信号通知用户进程,用户进程接收到通知之后,再去处理数据。BIO就是操作系统这边数据还没准备好,应用进程就一直阻塞等待,直到数据准备好拷贝到用户空间,等待才会结束。NIO(同步非阻塞IO)AIO(异步非阻塞IO)

2023-08-10 15:24:56 104 1

原创 zookeeper如何进行leader选举

然后每个节点都会投自己一票,所以第一次投票的时候携带的是自己节点的信息,每个节点收到其他节点的票据之后,会拿别人的票据和自己的票据进行比较,按epoch,zxid,myid的顺序依次对比,值最大的一方获胜,然后每个节点拿着获胜的票据再次投票,经过多轮投票之后,每个节点都会去统计达成一致的票据,如果一个节点获取的赞成票数超过一半,那它就是leader,其他节点自然而然就成了它的follower。具体实现是,每个节点都会给其他节点投一个票据Vote,这个Vote有三个属性。ZXID 事务id。

2023-08-06 15:44:08 155 1

原创 如何保证RabbitMQ的消息可靠传输

从生产者发送消息的角度来看,兔子提供了一个confirm消息确认机制,也就是说生产者把消息发送到服务端,服务端会返回一个ack消息,然后客户端会根据这个ack消息来判断是否重新发送,这样就可以确保消息不丢失。从消费端来看,把自动确认改为手动确认,消费端只有在手动调用消息确认方法的时候,消息才算被签收,这会出现重复消费的情况,这个就要考虑幂等性的设计了。但这还是会有消息丢失的问题,因为在刷盘之前,服务宕机了消息又丢失了,所以要结合confirm消息确认机制来使用。首先在生产者发送消息的时候会导致消息丢失。

2023-07-28 19:46:00 98 1

原创 谈谈我对redis事务的理解

redis事务有几个常用的命令,首先是multi命令,它作用于事务执行之前,意思是将命令入命令队列,但不会被执行,只有输入exec命令之后,才会依次执行命令队列中的命令,在组队的过程中,输入discard命令就会放弃组队,命令都不会被执行。还有watch和unwatch命令,在执行multi之前,先执行watch命令去监听key,如果在执行exec之前,key被其他命令修改了,那么事务就会失败。如果在执行的过程中,其中的一个命令失败了,那剩下的命令依然会执行,不会回滚。

2023-07-21 19:32:31 65 1

原创 Redis哨兵模式

哨兵进程在运行期间 , 监视所有的Redis 主节点和从节点。选主分为两步:过滤和打分,首先把不符合条件的从库过滤掉,主要针对已经下线的从库和网络不好老是超时的从库,过滤之后,对剩下的从库进行打分,打分有三个规则:从库优先级、复制进度和ID号,从库优先级越高,打分越高,复制进度越快,打分越高,ID号越小,打分就越高,如果优先级和复制进度一样,就比ID号,从而选出新的主库。哨兵模式 , 就是由一个或多个哨兵实例组成的哨兵系统,它可以监视所有的Redis 主节点和从节点 ,并且各个哨兵之间还会相互监控。

2023-07-16 08:54:39 263 1

原创 如何实现Redis的高可用

实现高可用分为两个层面,第一个层面就是要保证数据不丢失,这个可以通过rdb和aof来保证。第二个层面就是保证服务不中断,这个可以通过redis主从,哨兵和cluster集群模式来保证。这个rdb和aof就不说了,主要来说redis的主从哨兵和集群。

2023-07-15 23:58:48 52 1

原创 java面试题大全(每日更三题)

面试题内容包括:java基础 ,多线程,并发,jvm,mysql,ssm,springboot,redis,Nginx,dubbo,zookepper,rabbitmq,springcloud

2023-02-22 22:59:16 121

原创 数组(java)

什么是数组数组是一种效率最高的存储和随机访问对象引用序列的方式,数组就是一种简单的线性序列,这使得元素访问非常快。数组的特点1.在空间存储上,内存地址是连续的2.每个元素占用的空间大小相同3.知道首元素的内存地址,通过下标就可以计算出偏移量,通过数学表达式,就可以计算出某个下标位置上元素的内存地址,可以通过该内存地址快速定位,所以效率非常高。数组的优缺点优点:检索效率高,随机访问速度快缺点:随机增删效率低,因为要移动大量元素,数组无法存储大数据量要注意的一点就是,对最后一个元素进行增删操

2022-06-23 10:58:38 269

原创 IO流(java)

I/O是Input/Output的缩写, I/O技术是非常实用的技术,用于处理设备之间的数据传输。如读/写文件,网络通讯等。Java程序中,对于数据的输入/输出操作以”流(stream)” 的方式进行。java.io包下提供了各种类和接口,用以获取不同类型的数据,并通过标准的方法输入或输出数据。按操作数据单位不同分为:字节流(8 bit),字符流(16 bit)按数据流的流向不同分为:输入流,输出流按流的角色的不同分为:节点流,处理流字节流继承inputStream和OutputStream字符流继承自In

2022-06-23 10:42:53 91

原创 关于cookie(个人理解)

cookie和session一样,都是一种会话机制,只不过,cookie是将会话状态保存在浏览器中,而session是将会话状态保存在服务器上。其实,sessionid就是用cookie的形式保存在浏览器缓存中的,说白了就是键值对存取数据。 cookie可以保存在运行内存中,也可以保存在浏览器硬盘文件中,只要设置cookie的时间>0,就能将cookie保存的数据保存在浏览器硬盘文件中,十天内免登录就是通过这个方式实现的,以下是cookie的相关代码: ...

2022-05-11 22:25:41 106

原创 Java异常大全

1.SQL异常:java.sql.SQLException: No value specified for parameter 1运行Spark程序写入Mysql表时报java.sql.SQLException: No value specified for parameter 1异常原因:没有设置SQL语句中占位符的值,如下: //占位符传值 ps.setString(1,username); ps.setString(2,password);...

2022-05-11 22:10:38 336

原创 关于session(会话域)

什么是session?据我个人理解,session就是一次会话,浏览器打开到关闭就是一次会话。浏览器向服务器发送第一次请求的时候,服务器会获取一个session对象,并把sessionid以 cookie的形式发送给浏览器,浏览器将sessionid保存在缓存中, 接下来的每一次请求,浏览器都会从缓存中取sessionid发送到服务器中去找对应的session对象,所以每次请求用的都是同一个session对象。只要浏览器不关闭,不管发送多少次请求,获取的都是同一个session对象。关于sessio

2022-05-06 23:51:55 1124

原创 jdbc编程六步

1.加载驱动2.获取连接3.创建预编译对象4.执行sql5.处理结果集6.释放资源

2022-04-17 22:39:50 879

原创 JDBC工具类封装,让你在main方法中少写几行代码(代码如下)

创建JDBC工具类:public class JDUtil { /** * 创建资源绑定器 */ static ResourceBundle rb = ResourceBundle.getBundle("jdbc01"); static String driver = rb.getString("driver"); static String url = rb.getString("url"); static String user = rb

2022-04-17 22:01:20 251

原创 关于ServletContext(Servlet上下文对象)

ServletContext又称作用域对象。它是一个缓存(cache)所谓缓存,就是把常用的,数据量小的,极少修改的共享数据都存放到缓存中,以便下次使用,可减少io操作,大大提高系统性能,提高效率。1.每一个web应用程序都对应一个servletcontext, servletcontext对应整个web.xml文件,所以,多个servlet对象共享一个servletcontext。2.servletcontext对象在web服务器启动的时候创建,在服务器关闭的时候销毁。3.什么样的数据

2022-04-14 23:38:54 543

原创 二维数组模拟酒店

需求:使用二维数组 构造一个酒店 功能如下:键盘输入1,2,3,01.查房 print()2.订房 getRoom()3.退房 exit()0.退出系统要求这个酒店 三层楼 每层有十个房间 每个房间都有房间号,类型,状态(空闲/预定)代码如下:酒店类:public class Hotel { //1.定义二维数组 三层楼 每楼十间房 每个房间有房间号 类型 状态 // 2.查房 订房 退房 Object[][] obj; pub

2022-04-14 14:02:50 167

原创 关于随机数 输出6个不同的数

代码如下: public static void main(String[] args) { //创建随机数对象 Random random =new Random(); //创建一个数组 int [] arr =new int[6]; /** * 初始化数组 因为int数组中的元素默认是0 * 当随机数生成0的时候 因为默认元素为0 就不会让0存进数组中 * 也就

2022-04-13 15:51:55 349

Mybatis-03.md

Mybatis-03.md

2022-11-18

空空如也

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

TA关注的人

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