- 博客(31)
- 收藏
- 关注
原创 Java多线程编程之JDK自带的构建线程池方式
这个线程池特别的是线程数是固定的。构建时,需要给newFixedThreadPool方法提供一个nThreads的属性,而这个属性其实就是当前线程池中线程的个数。当前线程池的本质其实就是使用ThreadPoolExecutor。构建好当前线程池后,线程个数已经固定好**(线程是懒加载,在构建之初,线程并没有构建出来,而是随着人任务的提交才会将线程在线程池中国构建出来)**。如果线程没构建,线程会待着任务执行被创建和执行。
2024-08-01 19:32:41
286
原创 Redis高并发可用-主从复制,集群
默认情况下,Redis都是主节点。每个从节点只能有一个主节点,而主节点可以同时具有多个从节点。复制的数据流是单向的,只能由主节点复制到从节点。
2024-04-29 20:27:11
862
原创 Redis基本数据结构之Stream
基于List的LPUSH+BRPOP 的实现足够简单,消费消息的延迟几乎为0,但是需要处理空闲连接的问题如果线程一直阻塞在那里,Redis客户端的连接就成了闲置连接,闲置过久,服务器一般会主动断开连接,减少闲置资源占用,这个时候blpop和brpop或抛出异常,所以在编写客户端消费者的时候要小心,如果捕获到异常,还有重试。其他缺点包括:消费组确认ACK比较复杂,不能保证消费组消费消息后是否成功处理的问题。通常需要维护一个Pending列表,保证消息处理确认;不能做广播模式;
2024-04-22 20:28:16
757
原创 设计模式之建造者模式
将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。建造者模式可以将部件和其组装过程分开,一步一步创建一个复杂的对象。用户只需要指定复杂对象的类型就可以得到该对象,而无须知道其内部的具体构造细节。如MyBatis中SqlSession的创建。
2023-09-30 21:41:24
109
原创 设计模式之工厂模式
*优点:**封装了创建对象的过程,可以通过参数直接获取对象。把对象的创建和业务逻辑层分开,这样以后就避免了修改客户代码,如果要实现新产品直接修改工厂类,而不需要在原代码中修改,这样就降低了客户代码修改的可能性,更加容易扩展。缺点:增加新产品时还是需要修改工厂类的代码,违背了“开闭原则。优点用户只需要知道具体工厂的名称就可得到所要的产品,无须知道产品的具体创建过程;在系统增加新的产品时只需要添加具体产品类和对应的具体工厂类,无须对原工厂进行任何修改,满足开闭原则;
2023-09-27 15:48:45
89
原创 RabbitMQ从入门到入土
生产者:在绑定Exchange和Queue时,需要指定好routingKey,同时在发送消息时,也指定routingKey,只有routingKey一致时,才会把指定的消息路由到指定的Queue。消费者:让消费者关闭自动ack,并且设置消息的流控,最终实现消费者可以尽可能去多消费消息。生产者:和hello world 没什么区别,都是将消息发送到默认交换机。生产者:自行构建Exchange并绑定指定队列。
2023-08-30 22:20:38
166
1
原创 java网络编程之BIO编程
BIO即同步阻塞I/O模式。具体关于同步异步概念可以参考博客:https://blog.csdn.net/m0_38109046/article/details/89449305。此文章主要是以实战为主,为后续学习netty框架打好比较好的基础。
2023-07-31 23:36:00
93
1
原创 设计模式之单例
单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一,此模式保证某个类在运行期间,只有一个实例对外提供服务,而这个类被称为单例类。单例模式需要做如下两件事:1. 保证一个类只有一个实例。2. 为该实例提供一个全局访问节点。
2023-07-03 11:11:50
91
1
原创 线程常用方法
如果在main线程中调用了t1.join(2000),那么main线程会进入到等待状态,需要等待t1执行2s后,在恢复到就绪状态等待CPU调度。如果在等待期间,t1已经结束了,那么main线程自动变为就绪状态等待CPU调度。如果在main线程中调用了t1.join(),那么main线程会进入到等待状态,需要等待t1线程全部执行完毕,在恢复到就绪状态等待CPU调度。可以让获取synchronized锁资源的线程,通过notify或者notifyAll方法,将等待池中的线程唤醒,添加到。八:线程的等待和唤醒。
2023-06-27 20:36:00
75
1
原创 jdk动态代理和cglib动态代理
**jdk动态代理: jdk动态代理面向接口的动态代理,一定要有接口和实现类存在,代理对象增加的是实现类,在实现接口的方法重写的方法代理的对象只能转化成接口,不能转化成被代理的类。 只增强接口定义的方法。 只能读取到接口方法的注解。**package com.yxy;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;publ
2021-12-25 17:01:15
335
原创 利用springmvc文件上传
package com.msb.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestBody;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.Respons
2021-12-25 08:40:26
96
原创 BeanFactory和ApplicationContext有什么区别
BeanFactory和ApplicationContext是spring的两大核心接口,都可以作为spring的容器,其中ApplicationContext是BeanFactory的子接口。不同点分为一下几个方面:依赖关系:BeanFactory:是spring最底层的接口,包含了各种Bean的定义,读取bean的配置文档,管理bean的加载丶实例化,控制bean的生命周期,维护bean之间的依赖关系。ApplicationContext接口作为BeanFactory的派生,提供了BeanFact
2021-12-23 08:57:15
4049
原创 基于udp协议用java实现简易聊天功能
//小唐:package com.yxy.udp;import java.io.IOException;import java.net.*;import java.util.Scanner;public class TestClient { public static void main(String[] args) { System.out.println("A4 215集体上线。。。"); //1.准备套接字: 指定发送方的端口号
2021-12-21 16:34:40
616
4
原创 java脑筋急转弯(美团面试题的一个小分支)
`大家想想会输出什么结果?不要编译之后测试呦,那样结果不准,最后转成汇编。`import java.io.IOException;public class Test { private int num=8; public Test(){ new Thread(()-> System.out.println(num) ).start(); } public static void main(String[] args) th
2021-12-20 16:09:55
737
2
原创 java网络编程
一:基于tcp的网络通信`在这里插入代码片/*服务器*/package com.yxy;import java.io.*;import java.net.ServerSocket;import java.net.Socket;public class TestServer { /*服务器端*/ public static void main(String[] args) throws IOException { ServerSocket serverSo
2021-12-18 16:58:22
762
4
原创 解决前后端分离开发跨域请求问题
有两种方法:法一:package com.yxy.config;import org.jetbrains.annotations.NotNull;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.web.cors.CorsConfiguration;import or
2021-12-17 16:33:15
131
2
原创 java文本复制和键盘输入文字保存到文件
通过下面的案例了解Java的i/o流基本知识,为了方便看清代码的逻辑,所以异常均抛出去一:完成文本复制,有三种方法,大家可以测测他们的性能。````package com.yxy;import java.io.*;public class TestCopy { public static void main(String[] args) throws IOException { /*需要复制的文本*/ File file=new File("D:"+
2021-12-17 10:42:42
2233
5
原创 Java编写日历
```package com.msb;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.Scanner;import java.util.SimpleTimeZone;public class CalendarDemo { public static void main(S
2021-12-16 16:51:03
1537
6
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人