- 博客(26)
- 收藏
- 关注
原创 什么时候触发Full GC
如果老年代剩余空间不足以容纳这些对象,就需要进行Full GC。需要注意的是,Full GC通常比Minor GC和CMS GC的停顿时间长,同时对于大型应用程序,Full GC可能会影响性能,因此应该尽量避免Full GC的发生。老年代空间不足:当老年代中没有足够的空间来分配一个大对象时,会先尝试进行Minor GC,如果仍然无法获得足够的空间,则会触发Full GC。Perm区空间不足:Perm区是存放类信息和常量池等元数据的区域,如果Perm区没有足够的空间来存放这些信息,就会触发Full GC。
2023-06-30 10:51:12
4119
原创 Runtime::new()与#[tokio::main]执行同一个异步方法举例说明
上面调用了runtime的block_on()方法,block_on要求一个Future作为参数,可以像上面一样直接使用一个async {}来定义一个Future。每一个Future都是一个已经定义好但尚未执行的异步任务,每一个异步任务中可能会包含其它子任务。await可以将已经定义好的异步任务立即加入到runtime的任务队列中等待调度执行,于此同时,await会等待该异步任务完成才返回。
2023-06-28 13:23:09
314
原创 Rust异步编程之Tokio入门
一般来说,I/O受限(I/O Bound)的程序(程序执行的速度依赖于I/O子系统的速度)比起CPU受限(CPU Bound)的任务(程序执行的速度依赖于CPU的速度)可能更适合于异步任务的执行。异步编程,诀窍就是当CPU等待外部事件或动作时,异步运行时会安排其他可继续执行的任务在CPU上执行,而当从磁盘或者I/O子系统中断到达的时候,异步运行时会知道识别这事,并安排原来的任务继续执行。async,await关键字事rust标准库用于异步编程的内置核心原语集的代表,就是语法糖。
2023-06-21 10:56:00
2103
原创 tokio::select! 不是第一个就绪的异步任务如何处理
例如,在以下代码中,即使异步任务 task1 和 task2 同时就绪,tokio::select!当执行完一个任务后,tokio::select!在下一次迭代时会再次检查所有未完成任务的状态,然后选择另一个就绪的任务。宏会分别执行两个就绪的任务。当一个任务完成后,其相应的变量(例如 task1_done 或 task2_done)将被设置为 true,并且程序将在下一次迭代时继续检查其他任务。宏时,如果有多个异步任务同时就绪,它会选择其中一个任务进行处理。其他就绪的任务并不会被丢弃,而是留待下一次选择。
2023-06-12 15:34:07
276
1
原创 error: failed to run custom build command for `ring v0.16.20`问题解决
【代码】error: failed to run custom build command for `ring v0.16.20`问题解决。
2023-06-12 13:11:09
2891
原创 BIO,NIO,AIO,SELECT,POLL,EPOLL讲解
可以看到 *int bind(int sockfd, struct sockaddr *my_addr, socklen_t addrlen)*方法,该方法的作用是为ListenFd绑定一个本地的地址,以便于其它的socket(套接字),能够与其建立连接。可以看到 *int socket(int domain, int type, int protocol)*方法,该方法的作用是创建一个监听描述符ListenFd。,该方法接收具体的连接。
2023-05-18 11:26:23
343
1
原创 JVM(五):自定义类加载器
隔离加载类在某些框架内进行中间件与应用的模块隔离,把类加载到不同的环境。比如:阿里内某容器框架通过自定义类加载器确保应用中依赖的jar包不会影响到中间件运行时使用的jar包。再比如:Tomcat这类Web应用服务器,内部自定义了好几种类加载器,用于隔离同一个Web应用服务器上的不同应用程序。(类的仲裁–>类冲突)修改类加载的方式类的加载模型并非强制,除Bootstrap外,其他的加载并非一定要引入,或者根据实际情况在某个时间点进行按需进行动态加载扩展加载源。
2023-03-01 18:56:31
196
原创 JVM(四):双亲委派机制
如果一个类加载器在接到加载类的请求时,它首先不会自己尝试去加载这个类,而是把这个请求任务委托给父类加载器去完成,依次递归,如果父类加载器可以完成类加载任务,就成功返回。只有父类加载器无法完成此加载任务时,才自己去加载。单讲理论不行,直接看源码很直观,下面这段源码就是双亲委派机制的逻辑,总共就三句话概括,非常简单先检查这个类是否已经被加载过,直接走解析逻辑并返回。如果没被加载过则先由父加载器加载。如果父类加载器没加载成功,才由自己去加载。再简单一点讲就是父先上,父不行才轮到子上。
2023-02-02 13:22:06
106
原创 HSDB使用
HSDB(Hotspot Debugger),JDK自带的工具,用于查看JVM运行时的状态。位于JDK安装目录 …/jdk/lib/sa-jdi.jar 包中,是sa-jdi.jar包中的一个函数。
2022-09-05 11:45:09
1080
原创 JVM(一):Klass模型
学习类的加载能帮助我们了解我们写的java类如何加载到JVM内存中以及整个生命周期,是我们知其所以然,明明白白写代码。
2022-09-02 17:18:15
1034
原创 Myabtis-Plus自定义代码生成器与自定义代码生成模板
在编写代码时我们会编写大量与业务无关的代码,比如Contoller,Service,Entity以及一些增删改查接口的定义,这些代码基本都是固定的模板,手动编写浪费大量时间,今天介绍一下Mybatis-Plus代码生成器来简化代码的开发,减少重复代码的编写。 ......
2022-08-29 13:31:40
1497
原创 MySQL Binlog简介
binlog(binary log,二进制日志)是MySQL server维护的一组日志文件,用来记录对数据进行修改的信息。
2022-08-13 16:30:07
1089
原创 Canal原理
在开发过程中我们经常有MySQL增量同步数据到其他数据源,比如kafka,elasticsearch等,一种方法是我们在自己代码里实现同步的逻辑,但是这样会带来数据不一致,代码耦合等问题。今天就介绍一款阿里巴巴开源的组件canal,实现增量数据订阅和消费。..................
2022-08-13 09:03:18
826
原创 canal实现mysql数据同步
canal.adapter配置文件application.yml中es的访问地址填,要加上http://,否则会连接不上。有些版本不要加,如果出现连接报错,可以参考一下这个解决方案。es7下同步数据的配置文件xxx.yml,在确认配置没有问题的情况下启动adapter查看日志报错的情况,建议删除掉这个配置文件,重新建一个新的配置文件,再进行配置。另外配置文件要有被访问的权限。.........
2022-07-28 18:41:37
1686
原创 VMware16虚拟机安装教程
我的电脑是Windows电脑,所以选择Workstation16ProforWindows下载,如果你的电脑事Linux系统,选择Workstation16ProforLinux下载。注意双击打开时会遇到打开较慢的情况,不要着急,等一会儿就会加载出来。注意许可证自己搜索vmware16许可证,填入即可。.........
2022-07-28 11:43:21
15566
原创 mysql数据库插入表情
问题:在评论或者其他带表情插入数据库时会出现如下错误:Cause: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x8C\x9D' for column 'nick_name' at row 1原因:普通的字符串或者表情都是占位3个字节,所以utf8足够用了;但是移动端的表情符号占位是4个字节,普通的utf8就不够用了;避...
2019-04-23 11:44:35
1100
转载 jsr 303
https://blog.youkuaiyun.com/qq920447939/article/details/80198438https://blog.youkuaiyun.com/larger5/article/details/79744569
2019-03-27 16:30:03
101
原创 spring属性赋值@Value赋值与@PropertySource加载外部配置文件
1.实体类package com.hjj.bean;import org.springframework.beans.factory.annotation.Value;public class Person { //使用@Value赋值; //1、基本数值 //2、可以写SpEL; #{} //3、可以写${};取出配置文件【properties】中的值(在运行环境变量里面的...
2019-03-07 14:43:17
814
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人