.NET Core GC压缩(compact_phase)底层原理浅谈

thbcm阅读(312)

如果GC决定不压缩,它将仅执行清除操作。清除操作非常简单,把所有不可到达对象(gap),转换成Free。也就是转换成空闲内存空间。

由于所有的繁重计算任务在plan_phase阶段均已完成,所以步骤比较简单

AQS源码解析

thbcm阅读(311)

如果线程在资源不可用的情况下继续占用 CPU,而不是进入等待队列进行管理,其实是浪费了CPU资源,让CPU去执行其他线程的代码,可以提升整个系统的并发量嘛,上面是阻塞的流程,而阻塞归根到底到有资源的时候就需要接着唤醒,所以才以队列这样的数据结构来实现此功能

Winform-耗时操作导致界面渲染滞后

thbcm阅读(319)

理解上述原因,需先搞清楚Winform线程机制。主要有以下2点特性:1.单线程模型;2.依赖消息循环。

1.单线程模型

Winform 默认是单线程。通常,所有的UI操作,包括控件更新、事件处理,都由主线程管理(也就是UI线程)。

任何在事件处理程序中运行的代码都会占用主线程。如果某个事件中有耗时很多的操作,就会阻塞线程。比如有时PictureBox.Image的显示会滞后。

下面代码中,pictureBox1的显示会有滞后。背后的工作原理是:

“pictureBox1.Image = image0”运行完成后,系统只是将 pictureBox1 的 Image 属性更新,但不会立即触发控件绘制。(实际的绘制操作是由消息循环处理的,在 WM_PAINT 消息中完成)

pictureBox1的属性设置之后,如果紧接着有耗时操作占用UI线程,就会导致WM_PAINT无法及时处理,所以不能及时绘制。

最佳解决办法:

避免在 UI 线程执行耗时任务。将耗时任务移到后台线程,可以确保 UI 线程始终空闲以处理消息循环,比如使用 Task.Run 或 async/await。

TensorFlow2入门与实践–CNN

thbcm阅读(299)

卷积层是CNN的核心组件,通过可学习的卷积核在输入特征图上进行滑动窗口操作。每个位置上,卷积核与输入进行逐元素乘积并求和,得到输出特征图上的一个值。多个卷积核并行工作可以提取不同的特征模式。卷积层的特点是参数共享和局部连接,这大大减少了参数数量。随着网络深度增加,提取的特征从低级(边缘)到高级(物体)逐渐抽象化。

联系我们