Java
文章平均质量分 64
Java
shangjg3
这个作者很懒,什么都没留下…
展开
-
JSCH使用自定义连接池
4.2 使用springboot中bean的作用域prototype。2. 改造shellUtil。使用@Lookup注入方式。4. 线程安全问题解决。原创 2024-04-07 16:04:28 · 235 阅读 · 0 评论 -
Springboot中JSCH的使用
将目标服务器上文件名为src的文件下载到本地,本地文件名为dst。(注:src必须是文件,不能为目录)指定文件传输模式为mode(mode可选值为:ChannelSftp.OVERWRITE,ChannelSftp.RESUME,ChannelSftp.APPEND),并使用实现了SftpProgressMonitor接口的monitor对象来监控文件的传输进度。将本地文件名为src的文件上传到目标服务器,目标文件名为dst,若dst为目录,则目标文件名将与src文件名相同。指定文件传输模式为mode。原创 2024-04-07 15:56:43 · 785 阅读 · 0 评论 -
SpringCloud Feign-声明性Http请求以及Hystrix-Http请求的熔断配置
1.1 概述– Feign是一个声明性web服务客户机。它使编写web服务客户机变得更容易。– 它的使用方法是定义一个服务接口并在上面添加注解。– Feign支持可插拔编码器和解码器。– Spring Cloud对Feign进行了封装,使其支持SpringMVC标准注解和。Feign可以与Eureka和Ribbon组合使用以支持负载均衡。1.2 Feign的作用Feign旨在使编写Java Http客户端变得更容易。前面在使用时,利用。原创 2024-01-03 14:17:13 · 1001 阅读 · 0 评论 -
ReentrantLock可重入锁的实现原理
1概述本文首先介绍Lock接口、ReentrantLock的类层次结构以及锁功能模板类AbstractQueuedSynchronizer的简单原理,然后通过分析ReentrantLock的lock方法和unlock方法,来解释ReentrantLock的内部原理,最后做一个总结。本文不涉及ReentrantLock中的条件变量。Lock接口,是对控制并发的工具的抽象。它比使用synchronized关键词更灵活,并且能够支持条件变量。它是一种控制并发的工具,一般来说,它控制对某种共享资源的独占。原创 2023-12-18 11:24:06 · 146 阅读 · 0 评论 -
Java 多线程的返回对象和资源独享线程
使用 Callable 接口的限制是:其只能使用线程池提交,而不能使用单独的线程进行提交。此时通过 ExecutorService.submit() 进行提交,得到的是一个 Future 对象,它包含了线程的执行结果,当你调用其 get() 方法时,它会阻塞直至获取到线程的返回结果。ThreadLocal 是以增加资源的方式来避免竞态,它会为每一个线程创建一份私有的资源,从而避免对公共资源的竞争。1.3.4 组合多个 CompletableFuture。1. 多线程的返回对象-1.3.1 等待唤醒。原创 2023-11-05 13:45:51 · 134 阅读 · 0 评论 -
Java线程池
上面线程池分类中的 newSingleThreadScheduledExecutor() 和 newScheduledThreadPool() 都可以用于创建支持定时任务的线程池,它们返回的都是 ScheduledExecutorService 接口的实例。newSingleThreadExecutor(): 该方法返回一个只有一个线程的线程池。若多个任务被提交到该线程池,则多余的任务会被保存在一个任务队列中,待线程空闲,按照先入先出的顺序被执行。如果所有线程均处于工作状态,则会创建新的线程来进行处理。原创 2023-11-05 11:51:07 · 98 阅读 · 0 评论 -
Java 多线程的线程间的协作
为了支持多线程之间的协作,JDK 中提供了两个非常重要的方法:wait() 和 notify() ,这两个方法定义在 Object 类中,这意味着任何 Java 对象都可以调用者两个方法。当 object.notify() 方法被调用时,它就会从这个等待队列中随机唤醒一个线程。综上所述可以使用 wait() 和 notify() 配合内部锁 synchronized 可以实现线程间的等待与唤醒,如果你使用的是显示锁而不是内部锁,此时可以使用 Condition 来实现同样的效果。原创 2023-11-05 11:33:14 · 138 阅读 · 0 评论 -
Java多线程的锁机制和无锁并行
Java 虚拟机在实现 monitorenter 字节码(申请锁)和 monitorexit 字节码(释放锁)时需要借助一个原子操作(CAS操作),这个操作是比较昂贵的,因此内部锁在每次被线程获取时,它都会将对应的线程记录为偏好线程(Biased Thread),之后此线程无论是再次申请该锁还是获取该锁,都无须借助原先昂贵的原子操作,从而减少了锁的申请与释放的开销。通常我们把被修饰的方法体和代码块称为临界区,需要注意的是必须保证多线程锁住的是同一个临界区,否则依然是线程不安全的。原创 2023-11-05 11:21:03 · 132 阅读 · 0 评论 -
Java 多线程的三大特性
写缓冲器是处理器的私有部件,一个处理器的写缓冲器所存储的内容是不能被其他处理器所读取的,这就会导致一个更新即便已经发生并写入到写缓冲器,但是其他处理器上的线程读取到的还是旧值,从而导致可见性问题。同时为了保证单线下执行的正确性,处理器会将重排序指令的执行结果先写入到重排序缓冲器(ROB,Recorder Buffer)中,之后再按照这些指令被处理器读取的顺序提交到寄存器或者主内存中,因此虽然指令是乱序执行的,但结果却是顺序提交的,从而能够保证在单线程下的正确性。原创 2023-11-05 11:10:19 · 216 阅读 · 0 评论 -
Java线程的基本概念和五种状态
虽然 Thread 类提供了 `stop()` 方法,但其已经被标识为废弃,因为 `stop()` 只是暴力的停止线程, 但此时线程中的操作仍可能处于中间状态,此时暴力地停止就可能会产生非预期的结果。通常可以把一些不重要的线程设置为守护线程,比如监控其他线程状态的监控线程,当其他工作线程停止后,虚拟机就可以正常退出。在 Java 平台中,子线程的优先级默认与其父线程相同。线程中断与线程终止的区别在于:线程中断只是告诉目标线程,我希望你停止运行,即设置标志位,而线程是否真的停止则是由其自行决定。原创 2023-11-04 23:00:47 · 364 阅读 · 0 评论 -
Java 函数式编程
在 JDK 1.8 之前,我们只能通过匿名表达式来完成类似的功能,但是匿名表达式比较繁琐,存在大量的模板代码,不利于将行为参数化,而采用 Lamdba 则能很好的解决这个问题。super T,?Stream 中最强大一个终止操作是 collect() ,它接收一个收集器 Collector 作为参数,可以将流中的元素收集到集合中,或进行分组、分区等操作。可选的返回关键字:如果主体只有一个表达式,则该表达式的值就是整个 Lambda 表达式的返回值,此时不需要使用 return 关键字进行显式的返回。原创 2023-11-04 22:46:27 · 178 阅读 · 0 评论 -
Java 反射与注解
对于数组类型的getName返回值,使用前缀`[`表示数组,有几个`[`表示是几维数组,数组类型使用简写表示:`boolean(Z)`、`byte(B)`、`char(C)`、`double(D)`、`float(F)`、`int(I)`、`long(J)`、`short(S)`、`接口和类(L)`。在 Java 中,每个已加载的类在内存中都有一份类信息,类信息对应的类是 `java.lang.Class`,每个对象都持有指向它所属类信息的引用。原创 2023-11-03 22:57:14 · 196 阅读 · 1 评论 -
Java NIO 编程
而 NIO 是面向缓冲区的,所有的读写操作都需要通过 Buffer 来完成,数据会被先写入 Buffer 中,然后再进行处理,Buffer 提供了多种方法用于操纵其中的数据,因此其在操作上更加灵活,读取速度也更加快。- 复制缓冲区的 mark、position、limit、capcaity 属性的初始值与复制时原缓冲区的 mark、position、limit、capcaity 的值相同,但这些属性与原缓冲区的属性相互独立,创建后就不再受原有缓冲区的影响;close():关闭当前 Channel。原创 2023-11-03 22:44:54 · 172 阅读 · 0 评论 -
SpringBoot升级2.7之后spring.profiles.include配置失效
SpringBoot升级2.7之后spring.profiles.include配置失效。解决方法是用spring.config.import 以配置文件名称引入。原创 2023-08-17 16:40:15 · 973 阅读 · 0 评论 -
Java服务CPU占用率太高问题排查
pid是Java进程的进程号,interval是采样间隔时间(单位为毫秒),count是采样次数。使用jstack命令获取Java进程的线程信息。使用jstat命令查看Java进程的GC情况。pid是Java进程的进程号。原创 2023-08-16 17:14:19 · 35 阅读 · 0 评论 -
Mybatis的驼峰映射
1.Mysbatis2.0的配置方法。2.Mysbatis3.0的配置方法。原创 2023-08-16 12:55:08 · 56 阅读 · 0 评论 -
org.quartz.SchedulerConfigException: DataSource name not set
starter-quartz升级 2.5.7之后的问题。将quatz.propeties文件中。原创 2023-08-08 15:53:20 · 656 阅读 · 0 评论 -
Relying upon circular references is discouraged and they are prohibited by default
升级 Spring Boot 2.6后,因循环引用导致启动时报错的问题。原创 2023-08-08 11:32:32 · 40 阅读 · 0 评论