垃圾回收器 在java程序的运行过程中会产生大量的垃圾,而这些垃圾需要相应的垃圾收集器在一定的条件下对其进行回收来保证程序的正常运行,垃圾回收器是十分重要的,关系着程序正常运行与否。收集器发展历程可以分为四个阶段:Serial收集器->Parallel收集器->CMS收集器(Concurrent Mark Sweep)->G1收集器(Garbage First)。 在进行垃圾回收时,会暂停所有的工作线程,直到垃圾回收完成,垃圾回收器的不断迭代是为了优化减少停顿时间 使用垃圾回收器,通过设置垃圾
2024-11-29在C/S编程中Task和Thread是异步操作必不可少的类,作用:为了提高用户操作程序的体验,防止UI线程的卡顿,其实多线程就相当于2个人同时干活。 例如:我们在访问局域网内WebService服务时,如果网络通讯不通或不顺畅时,在不使用线程或异步方法更新就会造成主线程卡顿,在网络操作超时之前就无法对界面上按钮和文本框操作。 一、Task类介绍 1、Task创建 Task的使用非常方便,定义一个对象,实例化时绑定一个Run方法进行多线程的操作即可。 实例化之后需要调用Start方法来进行异步线程
2024-11-29验证服务器在上一篇文章中. 验证服务器是做权限验证,有没有登录,有没有权限访问某些内容等。资源服务器指提供业务功能的服务器,他们会向验证服务器进行验证是否有权限访问,有则处理请求,无则直接返回401无授权。 一、验证服务器本身就是资源服务器 这样就简单了,在上一篇文章的基础上,直接添加一个ResourceServerConfig的配置就行了 代码如下 @Configuration @EnableResourceServer public class ResourceServerConfig ex
2024-11-29一、int<->long 1. long -> int (1)类型强制转换 long numberLong = 123L;// "L"理论上不分大小写,但是若写成"l"容易与数字"1"混淆,不容易分辩。所以最好大写。 int numberInt = (int) numberLong; 注意: int有4个字节,取值范围为[-231,231 - 1] long有8个字节,[-263 ,263 -1] 如果long的值超过了int区值范围,会出现值溢出的问题 (2)利用BigDecimal转换
2024-11-291.拉取mysql镜像 docker pull mysql:5.7.22 2.启动mysql容器 docker run --name ?mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.22 3.拉取discuz镜像 docker pull skyzhou/docker-discuz 4.启动discuz容器 docker run --name ?discuz --privileged=true -v /data:/var/www/html --
2024-11-29文章目录 Go语言中 defer 的用法 defer是Go语言中的延迟执行语句,用来添加函数结束时执行的代码,常用于释放资源和连接、关闭文件、释放锁、捕获panic等。defer后面一般跟函数或方法,Go语言机制担保一定会执行defer语句中的代码。 一、defer触发时机 Go官方文档中对defer的执行时机做了阐述,分别是: 包裹defer的函数返回时包裹defer的函数执行到末尾时所在的goroutine发生panic时 二、defer执行逻辑 1、 多个
2024-11-29对话框函数描述CheckDlgButton此内联函数设置指定对话框中的单选按钮或复选框的复选状态。CreateDialog此函数从对话框模板资源创建非模态对话框。CreateDialogIndirect这个函数从内存中的对话框模板创建一个非模态对话框。CreateDialogIndirectParam这个函数从内存中的对话框模板创建一个非模态对话框。CreateDialogParam此函数从对话框模板资源创建非模态对话框。DefDlgProc此函数为属于应用程序定义的对话框类的窗口过程执行默认消
2024-11-29前言 在 一文中,我们提到过Iterator时惰性的,也就是当我们将容器转换成迭代器时不会产生任何的迭代行为,所以在使用时开发者还需要将迭代器与消费者适配器共同使用。 map 比较常见的例子是map方法,map在使用时如果开发者不使用消费者适配器,则run时不会发生任何的事情并且在编译期间会收到报错。 代码示例: fn usemapmethod() { let mut v = vec![1, 2, 3, 5]; let vv = v.iter().map(|x| *x + 1)
2024-11-29前言 经常看到一些源码或者代码项目中继承一个Serializable 接口,但是究其原因有时候却很难讲清楚 这篇文章涉及一些IO流可看我之前的文章 1. 定义 序列化(Serialize):内存当中的java对象放到硬盘文件中,java对象存储到文件中,将java对象的状态保存下来的过程,需要使用ObjectOutputStream类 反序列化(DeSerialize):将硬盘上的数据重新恢复到内存中,恢复成java对象。需要使用ObjectInputStream类 通俗的说,序列化就是通过网
2024-11-291.本地事务和分布式事务概念 事务四大特性 原子性:事务不可再分一致性:数据改变前后,总量必须一致隔离性:事务之间相互隔离,互不干扰持久性:事务一旦提交,数据就会持久化到磁盘,不能回滚 本地事务:所有的事务都是基于数据库的,那么我们在代码中加@Transactional其实是使用的数据库的Begin/Commit/Rollback,底层使用的是动态代理。本地事务只能管理到当前服务连接的那个数据库的事务,如果一个事务中操作了多个数据库在回顾的时候只能回滚当前服务连接的那个数据库,没办法回滚其它数据
2024-11-29