- 博客(30)
- 收藏
- 关注
原创 JDK11 使用URLClassLoader加载java.sql.Driver报错问题
根据下图,我们可以得知PlatformClassLoader是ClassLoader的子类,并且我们的URLClassLoader可以指定父类加载器,那么我们可以尝试在获取URLClassLoader时,指定PlatformClassLoader加载器为父类加载器,那么根据双亲委派机制,我们加载外部数据库驱动时,就能加载到类java.sql.Driver了,即可完美解决问题。我们调用时并没有指定父类加载器,那么根据下图我们可得知URLClassLoader的父类加载器为SecureClassLoader。
2023-02-22 16:12:02
829
原创 查看进程线程的方法
jconsole 来查看某个 Java 进程中线程的运行情况(图形界面)taskkill 杀死进程(task -f -pid ${pid})jstack 查看某个 Java 进程(PID)的所有线程状态。任务管理器可以直接查看进程和线程信息,也可以直接杀死进程。ps -fT -p 查看某个进程(PID)的所有线程。top -H -p 查看某个进程(PID)的所有线程。jps 命令查看所有 Java 进程。Linux系统中线程实现方式。tasklist 查看进程。ps -ef 查看所有进程。
2023-02-19 15:47:56
1209
原创 Mysql删除重复数据的Sql
此Sql语句的作用是查询出test1表中根据字段name来分组并且数量大于1的name数据,并且id保留最大的值。delete后面where条件里即为数量大于1并且id非最大的数据,如果满足条件则删除。where后的条件为查询出name数量大于1并且id非最大的数据。
2023-02-06 21:34:37
403
原创 RabbitMq - 第四部分
但某些时候由于特定的原因导致queue中的某些消息无法被消费,这样的消息如果没有后续的处理,就变成了死信,接收死信消息的队列就叫死信队列。一旦某个队列中有消息满足了成为死信的条件,如果该队列设置了死信交换机(Dead Letter Exchange)和死信路由键,那么满足死信条件的消息就会交由死信交换机,死信交换机会根据死信路由键将死信消息投递到对应的死信队列。1)消息的TTL到了,如果消息过期了还没有被消费,那么这条消息就不会被消费了,会进入到死信队列。这就是延时队列的实现。
2022-12-11 17:55:36
301
原创 RabbitMq - 第三部分
work queues与简单模式相比,是有多个消费者,多个消费者共同消费同一个队列中的消息,但是一个消息只能被一个消费者获取。Exchange(交换机)只负责转发消息,不具备存储消息的能力,因此如果没有任何队列与Exchange绑定,或者没有符合路由规则的队列,那么消息会丢失!所以我们可得知,多个消费者端是通过轮训的方式进行消息的消费,而我们的业务一般在这种情况会根据消费端消费能力进行设定,毕竟能者多劳嘛。经过改动之后,发现消费者1消费了其中9条消息,而消费者2只消费了其中一条,证明配置是生效的。
2022-12-10 20:50:40
324
原创 Docker安装及部署
2、yum安装Docker3、查看是否安装成功6、配置docker国内镜像二、安装Centos容器并安装Jdk1、拉取centos镜像2、查看镜像4、进入容器的/root/software/(注意,这里的jdk安装包是上传到宿主机/home/soft下的安装包)5、解压jdk-8u144-linux-x64.tar.gz6、配置profile文件在文件最后配置8、查看jdk信息1、查看redis镜像的版本信息 dockr仓库2
2022-12-06 20:30:18
1505
原创 RabbitMq - 第二部分
第一步:创建ConnectionFactory链接工厂。第一步:创建ConnectionFactory链接工厂。第二步:获取connection链接。第二步:获取connection链接。第三步:创建channel信道。第三步:创建channel信道。
2022-11-17 22:07:19
580
原创 RabbitMq - 第一部分
MQ(message queue),从字面意思上看,本质是个队列,FIFO先入先出,只不过队列中存放的内容是消息(message),还是一种跨进程的通信机制,用于上下游传递消息。在互联网架构中,MQ是一种非常常见的上下游“逻辑解耦+物理解耦”的消息通信服务。使用了MQ之后,消息发送上游只需要依赖MQ,不用依赖其他服务。
2022-11-16 20:47:15
681
原创 Linux上JDK8安装
7、如果系统设置了默认Jdk则需要将默认的jdk替换掉。4、将jdk解压之后的文件移动到usr/java里。2、tar -zxvf jdk.tar.gz解压。3、创建 mkdir /usr/java。1、下载jdk安装包。
2022-11-14 21:20:21
283
原创 Spring5 学习笔记6
1、webflux应用场景Spring WebFlux 是一个异步非阻塞式的 Web 框架,所以,它特别适合应用在 IO 密集型的服务中,比如微服务网关这样的应用中。2、优势和性能WebFlux 内部使用的是响应式编程(Reactive Programming),以 Reactor 库为基础, 基于异步和事件驱动,可以让我们在不扩充硬件资源的前提下,提升系统的吞吐量和伸缩性。注:WebFlux 并不能使接口的响应时间缩短,它仅仅能够提升吞吐量和伸缩性。
2022-10-13 21:21:10
1156
原创 Spring5 学习笔记5
1、整个Spring5基于JDK8,运行时兼容JDK9,许多不建议使用的类和方法在代码库中被删除。(1)已经移除了Log4jConfigListener,官方建议使用Log4j2。(1)@Nullable注解可以使用在方法上面表示方法,属性值上,参数值上。(2)@Nullable用在方法上,表示方法返回值可以为空。(3)@Nullable用在属性值上,表示属性值可以为空。(4)@Nullable用在参数值上,表示参数值可以为空。(2)Spring5框架整合Log4j2。(2)整合JUnit5。
2022-10-07 18:11:03
324
原创 Spring5 学习笔记4
1、什么是事务(1)事务是数据库操作的最基本的单元,逻辑上是一组操作,要么都成功,如果有一个失败则所有操作都失败2、事务四个特性(ACID)(1)原子性。
2022-10-07 16:41:32
212
原创 Spring5 学习笔记1
1、Spring是开源的轻量级的JavaEE框架2、Spring可以解决 其企业应用开发的复杂性3、Spring的两个核心部分:IOC和APO(1)IOC:控制反转,把创建对象的过程交给Spring容器(2)AOP:面相切面编程,不修改源码的情况下进行功能的增强4、Spring特点:(1)方便解耦,简化开发通过Spring提供的IOC容器,我们可以将对象之间的依赖关系交由Spring进行控制,避免硬编码所造成的过度程序耦合。
2022-09-27 22:32:18
177
原创 SpringBoot兼容人大金仓数据库
2、重写方言的getQuerySequencesString方法,直接返回null,因为通过对比发现mysql的方言并没有重写此方法,所以认为此处返回null,然后不进行元数据提取不会产生影响,经测试能成功建表。根据安装的数据库版本决定需要引入对应的驱动版本和数据库方言,我们安装的是kingbaseESV8版本,所以我们引入8.2.0的驱动,我们是将jar包推到私服上的,所以直接通过依赖引入。默认为null,而KingbaseDialect中有具体返回,所以会执行后续的元数据提取操作。
2022-09-27 10:16:43
3844
原创 Spring5 Bean生命周期源码学习
重点在 new ClassPathXmlApplicationContext(“bean_7.xml”); 这一段代码,进入ClassPathXmlApplicationContext构造方法进入refresh方法prepareRefresh方法解读obtainFreshBeanFactory创建工厂过程加载BeanDefinitions首先要清楚Bean从xml到BeanDefinitions的过程1、首先XML文件通过ResourceLoader加载器加载为Resource对象2、
2022-09-24 21:47:30
427
原创 Ambigous models equality when conditions is empty
通过debug定位到报错的位置,发现condition为DatabusMsgsubTopicPo是,modelTo为两个DatabusMsgsubTopicPo对象。找到DatabusMsgsubTopicPo实体代码,发现里面映射了一对多的DatabusMsgsubTopicSchemaPo实体。再找到DatabusMsgsubTopicSchemaPo实体,发现里面又映射了多对一的DatabusMsgsubTopicPo。怀疑是由于JAP升级后,该实体映射原因引起的,修改为。
2022-09-21 11:00:00
2105
原创 JAVA代理详记
代理模式是JAVA设计模式中的一种,作用是创建一个与委托类实现同样的接口代理类,为委托类提供预处理消息、过滤消息、转发消息至委托类、以及处理结尾等功能。代理类与委托类是一对一的,并且代理类并不真正实现服务,而是通过将消息转发给委托类的相关方法来实现服务的提供。通俗易懂一点就是我们是通过调用代理对象来访问的实际对象,而代理对象可以在调用实际对象的前后或途中进行功能的扩展。
2022-09-06 21:13:26
294
原创 NIO学记:四、选择器Selector
Selector 一般称为选择器, 也可以翻译为多路复用器它是 Java NIO 核心组件中的一个, 用于检查一个或多个 NIO Channel(通道)的状态是否处于可读、可写可以实现单线程管理多个 channels, 相比使用多个线程, 避免了线程上下文切换带来的开销。.........
2022-08-16 15:47:02
391
原创 HttpClent调用Https请求时报错
HttpClent调用https请求时报错:javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sum.security.provider.certpath.SunCertPathBuilderException: unable to find valid…创建SSL安全连接,并指定允许的协议类型。...
2022-08-16 10:08:58
420
原创 NIO学记:三、通道Channel
通道是连接IO服务(如:文件、套接字)的管道,并提供与该服务进行交互的方法。若需要使用 NIO 系统,需要获取用于连接 IO 设备的通道以及用于容纳数据的缓冲区。然后操作缓冲区,对数据进行处理。Channel相比IO中的Stream更加高效,可以异步双向传输,但是需要和buffer缓冲区一起使用。......
2022-08-09 20:36:59
512
原创 Activit自动建表失败
当我们部署项目并初始化数据库时,开启了自动建表,但是启动过程中还是会报错当前数据库其他Schema中存在Activit相关系统表,但是由于activit建表时排查表是否存在是在当前库里查找的,而不是当前schema中,nullCatalogMeansCurrent参数在mysql5中默认是true,但是在Mysql8的驱动包中默认是false,所以我们需要在数据库链接配置后面加上nullCatalogMeansCurrent=true...
2022-08-08 17:50:33
505
原创 NIO学记:二、缓冲区Buffer
缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存。这块内存被包装成NIO Buffer对象,并提供了一组方法,用来方便的访问该块内存。
2022-08-08 17:03:42
202
原创 NIO学记:一、了解NIO
1. Java NIO全称java non-blocking IO, 是指JDK提供的新API。从JDK1.4开始,Java提供了一系列改进的输入/输出的新特性,被统称为NIO(即New IO),是同步非阻塞的2. NIO有三大核心部分: Channel(通道), Buffer(缓冲区),Selector(选择器)3. NIO是面向缓冲区,或者面向块编程的。数据读取到一个它稍后处理的缓冲区,需要时可在缓冲区中前后移动,这就增加了处理过程中的灵活性,使用它可以提供非阻塞式的高伸缩性网络。......
2022-08-08 16:56:37
227
原创 Hadoop学记:五、单机部署
主要内容包括JobHistoryServer和应用程序参数两部分,如reduce任务的默认个数、任务所能够使用内存的默认上下限等。主要内容配置ResourceManager、NodeManager的通信端口,web监控端口等。主要内容用于定义系统级别的参数,如HDFS、URL、Hadoop的临时目录等。主要内容如名称节点和数据节点的存放位置、文件副本的个数、文件读取权限等。在start-yarn.sh与stop-yarn.sh顶部空白处加上。配置对象集群全局参数。检查是否能免密登录本机。...
2022-07-20 22:11:40
1358
原创 Hadoop学记:四、本地运行模式
在hadoop-3.1.3目录下创建文件夹datainput进入datainput文件夹,创建name.txt文件并在name.txt文件中输入以下内容我们可以利用hadoop命令执行hadoop给我们提供的例子jar包,不用手动去写mapReduce实现我们在此处就执行最简单的单词统计命令,统计txt文件里每个单词出现的次数注:输出文件必须不存在,如果存在会报错再进入dataoutput文件夹,可以发现里面生成了两个文件_SUCCESS是成功的标识,我们不用管,直接查看part-r-0
2022-07-12 22:36:14
662
原创 Hadoop学记:三、Hadoop安装
先从官往下载对应的安装包,此处是下载的hadoop-3.1.1版本官网下载地址将下载下来的安装包,放到我们服务器/opt/software路径下,执行命令 将文件解压到/opt/module/路径下在文件末尾追加配置完成之后执行命令更新环境变量执行命令,查看相关参数,如下所示即安装成功......
2022-07-12 22:20:49
609
原创 JVM:初识类加载器与双亲委派机制
实现通过类的全限定名获取代表类的二进制流,并生成java.lang.Class对象的这一动作的代码被称为类加载器。通过上图我们可清晰得知类加载器主要分为三种,三种类加载器之间实际是组合关系并不是继承关系:当我们加载一个Object.class文件时,首先会在ApplicationClassLoader中检查是否已经加载过,如果有则无需再加载,如果没有则会拿到父加载器,然后调用父类的loadClass()方法,父类加载器也会检查类是否已加载过,如果没有加载再继续往上。直到到达最顶层类加载器BootstrapC
2022-07-10 22:01:11
279
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人