- 博客(60)
- 收藏
- 关注
原创 Java中interrupt的理解(个人)
虽然 “interrupt” 的字面意思是中断,但在编程中,它并不一定意味着强制线程立即停止或退出。它更是一个。线程可以根据具体情况来决定如何处理中断请求,可能是继续执行、执行清理操作、释放资源,或者选择退出。因此,“interrupt” 在编程中通常表示中断线程的操作或请求,但不一定意味着线程必须立即停止。
2023-09-16 19:31:57
387
原创 Java内部类(自用)
它就是生成了一个对象然后作为参数传给构造方法用而已,你看着只有name一个参数其实事实上有两个。这段代码就使用了匿名内部类生成了一个实现了作为Thread子类的匿名类的对象。情况1:对于一个接口,那就是创建一个实现了这个接口的类的对象并赋给变量引用。情况3:类没有接收匿名内部类的构造方法,同情况1。匿名内部类其实是创建了一个没有名字的内部类的。情况2:类有接收匿名内部类的构造方法。它和下面这段代码是等价的,甚至调用的。,注意虽然叫内部类但其实是对象。首先明确匿名内部类的两种情况。虽然看起来一个调用的是。
2023-09-14 19:59:03
200
原创 keySet、entrySet、values是真的维护了一个集合来存放数据吗?
调用keySet、entrySet、values的时候,其实是返回了一个空的内部类集合(如keySet)的对象。该内部类实现了iterator方法,返回一个KeyIterator对象(继承了HashMapIterator),其中KeyIterator只不过重写了HashMapIterator的nextNode方法为。说白了,就是用一个空集合去调用HashMapIterator,所以看起来像真的把数据放到了集合里,这也意味着这个集合你是不能改的!
2023-08-18 21:43:30
227
原创 网络编程socket.close/output.close/socket.shutdownOutput区别与流程分析
找了半个小时没一个说明白的帖子,真的折磨。
2023-08-16 20:56:43
1014
原创 Java分布式微服务4——异步服务通讯(RabbitMQ)中间件
MQ(MessageQueue)消息队列,就是上文事件驱动架构中的Broker。
2023-08-09 20:49:07
890
原创 Java分布式微服务3——Docker
文章目录Docker介绍安装DockerDocker基础操作Docker服务的启动镜像命令容器命令1. 从docker hub去查看Nginx容器的运行命令2. 查看所有容器状态3. 查看容器日志4. 进入Nginx容器执行命令,修改Html内容,添加“Hello World”5. 停止与开始容器6. 删除容器数据卷1. 为什么需要数据卷2. 数据卷的操作3. 数据卷的挂载4. 目录与文件挂载Dockerfile自定义镜像DockerCompose集群部署镜像仓库1.简化版镜像仓库2.带有图形化界面版本3.
2023-08-08 15:08:30
1734
原创 Docker安装和配置
Docker 分为 CE 和 EE 两大版本。CE 即社区版(免费,支持周期 7 个月),EE 即企业版,强调安全,付费使用,支持周期 24 个月。Docker CE 分为stabletest和nightly三个更新频道。官方网站上有各种环境下的,这里主要介绍 Docker CE 在 CentOS上的安装。
2023-08-07 02:49:51
259
原创 Java分布式微服务2——声明式Http客户端(Feign)与网关(Gateway)
RestTemplate方式进行远程调用存在的问题可读性差对复杂url不方便操作Feign是一个声明式的Http客户端它把远程调用的方式与Spring MVC的Controller相似化了它接入了Ribbon自动实现负载均衡引入依赖在启动类添加@EnableFeignClients开启Feign的自动装配功能,@Enable开头的注解什么意思编写Feign客户端,创建一个接口加上@FeignClient,其利用了SpringMVC的映射注解声明远程调用的信息。
2023-08-07 00:52:23
658
原创 Java分布式微服务1——注册中心(Eureka/Nacos)
Nacos的服务存储和数据存储的最外层都是一个namespace,用来做最外层隔离,不同namespace的不能互相访问。在Nacos控制台配置管理新增配置,配置内容里应该是可能有变化的配置,不是所有配置 yml就是yaml。上面的url是硬编码写死的,很不方便切换,所以使用Eurake注册中心来管理服务提供者的地址。一个服务的配置文件可能和几十个服务实例有关系,在更新配置后这些服务都需要重启。先启动两个实例,再把集群名字改了启动另一个实例,就可以模拟两个集群的情况了。
2023-08-05 22:31:38
1654
1
原创 Mybatis中Mapper.xml动态SQL where和set要注意的两个问题
这样才是对的,千万不要以为能自动给你加上and。逗号你自己不能省去!
2023-07-06 18:15:40
984
原创 Maven引入pagehelper后找不到类的问题
把Idea关掉,以管理员权限重启Idea,然后在pom里重新引入pagehelper,刷新Maven就行了。这个问题实在是匪夷所思。
2023-06-26 10:51:18
600
原创 Mybatis用Autowired找不到Mapper接口的报错
2、自己定的Mapper接口没扫到,在启动类里加上@MapperScan(“…/mapper”)去扫描。3、写在Properties里的数据库连接信息有错,它连不上数据库就没有东西能放到bean里。1、IDEA警告问题,可以继续运行,把@Autowired改成@Resource就能消掉。
2023-06-23 18:21:15
1177
转载 Java易错点 Integer与Integer比较 Integer与int比较
从上面我们可以知道给Interger 赋予的int数值在-128 - 127的时候,直接从cache中获取,这些cache引用对Integer对象地址是不变的,C: i03获取的是cache中缓存好的的Integer地址,而i04是重新在堆中创建一个地址,所以两个地址是不一样的。但是不在这个范围内的数字,则new Integer(i) 这个地址是新的地址,不可能一样的。基本类型通过 == 比较的是他们的值大小,而引用类型比较的是他们的引用地址。所以 a == b 返回的是。这里创建了一个新的对象。
2023-05-24 10:59:48
224
原创 java记录-注解
用@interface声明@MyAnnotation(name = "哆啦A梦" , id = 110 , schools = [ "二中" , "武大" ]) public void test() {//注解的参数: 参数类型 参数名() [default 默认值];//默认值为-1代表不存在 String [ ] schools();
2023-04-24 15:50:36
71
原创 java记录-函数式接口
有且仅有一个抽象方法的接口叫函数式接口,仅有一个抽象方法lambda表达式才能顺利推导,不然会报错函数式接口的判断的注解(如果非函数式接口会报错)
2023-04-24 12:40:27
671
原创 java记录-lambda表达式、接口应用、方法引用
时,可以使用lamda表达式来重写这个方法,JAVA会自动生成一个对应的匿名实现类。也可以直接用lambda表达式直接造一个匿名的接口实现类的实例。参数类型可以省略,JVM会自己去接口里根据方法声明确定类型。1、用一个类实现接口,然后使用该类实例调用方法。3、在 接口(不能是抽象类) *
2023-04-21 18:41:33
911
原创 java记录-网络编程 TCP/UDP
ps.套接字(socket)是IP和端口号的组合,通过套接字能够找到某主机上的某程序,实现点对点通信ipconfig 本机地址ping 127.0.0.1 测试是否连通。
2023-04-20 15:06:20
374
原创 java记录-多线程与锁
Thread线程类,实现了Runable接口JAVA是抢占式调度,就是优先级高的先获取CPU资源,但并不意味它每一时刻都最快。
2023-04-19 18:04:28
317
原创 java记录-对象序列化
Serializable是个空接口,它就是个标识对象的序列化就是把对象信息转成字节,这样就可以通过传输到网络上、磁盘中对字节进行反序列化,就能把字节数据恢复成原来的对象。
2023-04-13 18:14:56
83
原创 java记录-IO流
字节流可以传任何东西字符流只能传文本功能上分为输入流和输出流IO的东西在java.io包内GBK一个汉字2个字节,UTF-8一个汉字占3个字节,汉字在存储的时候第一个字节都是负数String s = "江月何年初照人";就可以把字符串编码成指定字符集形式 new String(b1 , "UTF-8");就可以按特定编码格式解码。
2023-04-13 17:39:58
103
原创 java记录-Collections工具类
建议写类的时候,如果未来要对它的集合排序求最大最小等,还是实现Comparable接口并重写compare方法。里面都是集合相关的静态方法。
2023-04-01 18:40:59
80
原创 java记录-可变参数
注意:可变参数只能是最后一个参数,要不然无法分辨是可变参数的一部分还是别的参数。就是可变参数,在方法体内表现为一个数组,和argv一样。
2023-04-01 17:43:57
52
原创 java记录-单列集合Collection(List、Set)
Collection实现了Iterable接口,它的对象可以使用foreach方法单列集合的顶层接口,其对象通过多态创建。
2023-03-31 17:56:05
108
原创 动态规划——完全背包
因为外层遍历容量内层遍历物体,就会出现物体倒序进入的情况,比如在dp[3]的时候有放入过重量为3的2号物体,在dp[4]的时候就会出现在放入过重量为3的2号物体之后又放入重量为1的1号物体的情况。学过0-1背包的滚动数组版本,就知道外层正序遍历物体,内层逆序遍历容量。组合数求解是外层遍历物体内层遍历容量,目的是保证物体放入的顺序不存在倒序情况,这样只会出现(物体1,物体2)而不会出现(物体2,物体1)的情况。完全背包的算法就是把0-1背包的逆序改回正序,让他能够重复装入同一物体。
2023-03-29 10:58:37
62
原创 java记录-异常
如果你不喜欢7这个数,定义一个“我不喜欢7的异常”,继承RuntimeException自己定义的异常要自己判断异常出现条件并且手动去抛出 throw//让Throwable去构造 };} try {//生成0~10的随机整数 if(a == 7) throw new IdontLikeSevenException("我不喜欢7,我觉得不行。");//抛出自己的异常 } catch(IdontLikeSevenException e) {
2023-03-27 17:07:00
138
原创 java记录-日期类(Date、Calendar)
java.util.Date最基本的日期类,个人感觉并不是很好用(苟都不用),大部分方法都被标记为过时了,习惯用CalendarSimpleDateFormat格式化和解析Date用的类,让时间看起来更清晰: y年 M月 d天。
2023-03-27 16:20:02
137
原创 java记录-包装类
以int的包装类Interger为例。简单说就是包装类和基本类型可以换着用。Integer有自己的方法和属性。int装箱为Integer。
2023-03-27 15:28:14
40
原创 java记录-System类
返回一个long,是当前时间与1970.1.1的毫秒差异,和机器有关系,不能当世界标准时间用,但是可以拿来算程序执行时间。
2023-03-24 10:54:13
40
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人