Java/线程的状态

Java/线程的状态

Java 里的线程有 6 个状态,这 6 个状态与操作系统的里线程的状态有部分差异,原因是 Java 对操作系统的线程做了封装,下面来说说 Java 线程的状态和对应的操作系统的线程的状态。 - 新建(New):创建后尚未启动的线程的状态,即使用 new 关键字创建了线程,但是还没有调用线程的 start() 方法。 - 运行(Runnable):Java线程的 Runnable 状态包括操作系统里的 Ready 和 Running 状态。在 Java 中处于 Runnable 状态的线程有可能在执行状态,对应于操作系统层面的 Running;也有可能在等待 CPU 为这个线程分配时间片,对应于操作系统层面的 Ready。

阅读更多
Java/进程与线程

Java/进程与线程

进程和线程的由来:

  • 串行:初期的计算机只能串行执行任务,并且需要长时间等待用户输入,计算机很多时候只能处于等待的状态
  • 批处理:预先将用户的指令集中成清单,批量串行处理用户指令,仍然无法并发执行。当一个任务在进行 IO 等耗时操作时,后面排队的任务不能执行,只能等待前一个任务完成,内存始终只有一个程序的运行数据,还没有进程的概念
阅读更多
PyTorch/[PyTorch 学习笔记] 4.1 权值初始化

PyTorch/[PyTorch 学习笔记] 4.1 权值初始化

本章代码:https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson4/grad_vanish_explod.py


在搭建好网络模型之后,一个重要的步骤就是对网络模型中的权值进行初始化。适当的权值初始化可以加快模型的收敛,而不恰当的权值初始化可能引发梯度消失或者梯度爆炸,最终导致模型无法收敛。下面分 3 部分介绍。第一部分介绍不恰当的权值初始化是如何引发梯度消失与梯度爆炸的,第二部分介绍常用的 Xavier 方法与 Kaiming 方法,第三部分介绍 PyTorch 中的 10 种初始化方法。

梯度消失与梯度爆炸

考虑一个 3 层的全连接网络。

\(H_{1}=X \times W_{1}\)\(H_{2}=H_{1} \times W_{2}\)\(Out=H_{2} \times W_{3}\)

阅读更多
Java/Java 内存模型 JMM 与 volatile

Java/Java 内存模型 JMM 与 volatile

Java 内存模型(Java Memory Model,简称 JMM)是一种抽象的概念,并不真实存在,它描述的是一组规范或者规则,通过这种规范定义了程序中各个变量(包括实例字段、静态字段和构成数组对象的元素)的访问方式。

阅读更多
PyTorch/[PyTorch 学习笔记] 3.3 池化层、线性层和激活函数层

PyTorch/[PyTorch 学习笔记] 3.3 池化层、线性层和激活函数层

本章代码:https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson3/nn_layers_others.py

这篇文章主要介绍了 PyTorch 中的池化层、线性层和激活函数层。

池化层

池化的作用则体现在降采样:保留显著特征、降低特征维度,增大kernel的感受野。 另外一点值得注意:pooling也可以提供一些旋转不变性。 池化层可对提取到的特征信息进行降维,一方面使特征图变小,简化网络计算复杂度并在一定程度上避免过拟合的出现;一方面进行特征压缩,提取主要特征。

有最大池化和平均池化两张方式。

阅读更多
Java/Java 集合框架

Java/Java 集合框架

数据结构常见考点

  • 数组和链表的区别
  • 链表的操作:如反转、链表环路检测、双向链表、循环链表以及相关操作
  • 队列、栈的应用
  • 二叉树的遍历以及其递归和非递归的实现
  • 红黑树的旋转
阅读更多
PyTorch/[PyTorch 学习笔记] 3.2 卷积层

PyTorch/[PyTorch 学习笔记] 3.2 卷积层

本章代码:https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson3/nn_layers_convolution.py

这篇文章主要介绍了 PyTorch 中常用的卷积层,包括 3 个部分。

1D/2D/3D 卷积

卷积有一维卷积、二维卷积、三维卷积。一般情况下,卷积核在几个维度上滑动,就是几维卷积。比如在图片上的卷积就是二维卷积。

一维卷积


阅读更多
Java/J.U.C(java.util.concurrent)包的梳理

Java/J.U.C(java.util.concurrent)包的梳理

java.util.concurrent提供了并发编程的解决方案,主要包括两大块: - CAS:是java.util.concurrent.atomic包的基础 - AQS:是java.util.concurrent.locks包以及一些常用类(比如 Semophore、ReentrantLock)的基础

J.U.C 包的分类: - 线程执行器:executor - 锁:locks

阅读更多
MySQL/数据库:关键语法

MySQL/数据库:关键语法

group by 里面出现某个表的字段。select 里面出现的列要么是该group by 里面出现的列,要么是带有函数的列,或者别的表的列。 where 是用来过滤行,group by 用来过滤组 如果省略 group by 子句, having 子句就可以替代 where 子句

阅读更多
PyTorch/[PyTorch 学习笔记] 3.1 模型创建步骤与 nn.Module