Amp

ThreadPoolExecutor源码解析

我与影子孤独终老i 提交于 2020-10-02 11:46:49
ThreadPoolExecutor源码解析 1、常用变量的解释 // 1. `ctl`,可以看做一个int类型的数字,高3位表示线程池状态,低29位表示worker数量 private final AtomicInteger ctl = new AtomicInteger (ctlOf( RUNNING , 0 )); // 2. `COUNT_BITS`,`Integer.SIZE`为32,所以`COUNT_BITS`为29 private static final int COUNT_BITS = Integer . SIZE - 3 ; // 3. `CAPACITY`,线程池允许的最大线程数。1左移29位,然后减1,即为 2^29 - 1 private static final int CAPACITY = ( 1 << COUNT_BITS ) - 1 ; // runState is stored in the high-order bits // 4. 线程池有5种状态,按大小排序如下:RUNNING < SHUTDOWN < STOP < TIDYING < TERMINATED private static final int RUNNING = - 1 << COUNT_BITS ; private static final int SHUTDOWN = 0

我的jdk源码(二):String 一个特殊而强大的类!

随声附和 提交于 2020-10-02 11:26:06
一、概述 String类在java中是一个比较特殊的存在,它虽然不是基本类型,但是使用频率却非常高。这主要是因为String对象的值是一个常量,为什么是常量在下文源码中我们可以看到,正是因为它这一特性,所以它是线程安全的。接下来就让我们深入分析源码,揭开String类的神秘面纱! 二、源码 (1) 类的定义,源码如下 //String是final类型的,属于不可覆盖类型 public final class String implements java.io.Serializable, Comparable<String>, CharSequence { 我们可以看到,String类被关键字final修饰,上一篇将Object讲到, final修饰的类,为最终类,该类不能被继承 。同时它还实现了 serializable接口、comparable接口和charSequence接口。那么实现这三个接口有什么作用呢? * 实现 serializable接口:serializable接口也和 Cloneable接口一样,是JVM的标记接口, 如果要序列化某些类的对象,这些类就必须实现Serializable接口。 没有implements Serializable,你就不能通过rmi(包括ejb)提供远程调用 。 ava的RMI(remote method invocation)

Black reID : A New Problem for Person Re-ID

梦想与她 提交于 2020-10-02 05:15:06
Towards Black Re-Id: A New Challenge For Person Re-Identification, with Head-Shoulder Information Boqiang Xu Lingxiao He Xingyu Liao Wu Liu Zhenan Sun Tao Mei paper: http:// arxiv.org/abs/2008.0852 8 (Accepted By ACM MM 2020) code: https:// github.com/xbq1994/HAA 背景 行人重识别作为现在计算机视觉的一个主流任务,在实际场景中有许多应用,比如安防、智能超市等。行人重识别旨在给定一个监控行人图像 (query),跨设备检索多个摄像头下 (gallery) 该行人的所有图像。近几年,由于深度学习的发展,行人重识别取得了巨大进步,在三大公开数据库 Market-1501 [1], DukeMTMC-reID [2], CUHK03 [3] 中都已经取得了较高的分数。 但是现在大部分reID的方法主要都是针对光线充足、人们衣着亮丽区分度大的传统环境,reID模型也主要是依靠人物衣着来提取特征。在实际业务场景中我们发现,到了冬天,reID系统的性能会突然大大下降,而通过监控我们发现导致这个问题的原因是很多人(尤其是男士

抽象代数 01.02 半群与群

牧云@^-^@ 提交于 2020-10-01 10:31:43
http://www.icourses.cn 南开大学《抽象代数》 §1.2 半群与群 {\color{blue} \text{\S 1.2 半群与群}} §1.2 半群与群 抽象代数是从抽象的观点研究代数体系的。代数体系首先是一个集合,其次,这个集合中定义有运算(一种或多种运算),再次,运算满足某些规律。 定 义 1.2.1 设 非 空 集 合 S 中 有 一 个 二 元 运 算 “ ∘ ” , 且 该 运 算 满 足 结 合 律 , 则 称 代 数 体 系 { S ; ∘ } 是 一 个 半 群 , 也 简 称 S 是 一 个 半 群 。 {\color{blue}定义1.2.1 \quad} 设非空集合S中有一个二元运算“\circ”,且该运算满足结合律,则称代数体系\lbrace S; \circ \rbrace 是一个{\color{blue}半群},也简称S是一个半群。 定 义 1 . 2 . 1 设 非 空 集 合 S 中 有 一 个 二 元 运 算 “ ∘ ” , 且 该 运 算 满 足 结 合 律 , 则 称 代 数 体 系 { S ; ∘ } 是 一 个 半 群 , 也 简 称 S 是 一 个 半 群 。 若 半 群 { S ; ∘ } 中 存 在 一 个 元 素 e 1 ( e 2 ) , 使 若半群\lbrace S; \circ \rbrace

抽象代数 01.06 变换群与置换群

佐手、 提交于 2020-10-01 08:46:43
http://www.icourses.cn 南开大学《抽象代数》 §1.6 变换群与置换群 \color{blue} \text{\S 1.6 变换群与置换群} §1.6 变换群与置换群 变换群在历史上和理论上都有重要意义。人们研究群,最早是从研究变换群中的置换群开始的。本节将证明,任一个群与某一个变换群同构。 §1.2 \text{\S 1.2} §1.2 例6中曾提到全变换群的概念。 定 义 1.6.1 设 A 是 非 空 集 合 , A 的 所 有 可 逆 变 换 关 于 映 射 的 乘 法 构 成 的 群 , {\color{blue}定义1.6.1\quad}设A是非空集合,A的所有可逆变换关于映射的乘法构成的群, 定 义 1 . 6 . 1 设 A 是 非 空 集 合 , A 的 所 有 可 逆 变 换 关 于 映 射 的 乘 法 构 成 的 群 , 称 为 A 的 全 变 换 群 , 记 为 { S A ; ⋅ } , 简 记 为 S A . S A 的 一 个 子 群 称 为 A 的 一 个 变 换 群 . 称为A的{\color{blue}全变换群},记为\lbrace S_A;\cdot \rbrace,简记为S_A.S_A的一个子群称为A的一个{\color{blue}变换群}. 称 为 A 的 全 变 换 群 , 记 为 { S A ​ ; ⋅ } , 简

Linux nohup命令详解

冷暖自知 提交于 2020-08-20 07:47:10
在工作中,我们很经常跑一个很重要的程序,有时候这个程序需要跑好几个小时,甚至需要几天,这个时候如果我们退出终端,或者网络不好连接中断,那么程序就会被中止。而这个情况肯定不是我们想看到的,我们希望即使终端关闭,程序依然可以在跑。 nohup 命令 是英语词组 no hangup 的缩写,意思是不挂断,也就是指程序不退出。这个 命令 会使程序忽略 HUP 信号,保证程序能够正常进行。HUP 信号有些人可能比较陌生,它是在终端被中止的时候向它所关联的进程所发出的信号,进程收到这个信号后就会中止运行。所以如果你不希望进程被这个信号干掉的话,就可以忽略这个信号。而 nohup 命令做的就是这个事情。 本文我们将详细介绍 nohup 命令的具体用法。 nohup命令基本语法 nohup 命令的基本语法如下: $ nohup command arguments 或 $ nohup options 如果你想要得到更多关于 nohup 的用法介绍,可以查看它的帮助页面: $ nohup --help 使用nohup命令启动一个程序 如果你需要运行一个程序,即使对应的 Shell 被退出后依然保持运行,可以这样使用 nohup 运行这个程序: $ nohup command 当这个程序进行起来之后,这个程序对应的 log 输出及其错误日志都将被记录在 nohup.out 文件里

在Python中创建单例

有些话、适合烂在心里 提交于 2020-08-20 07:46:38
问题: This question is not for the discussion of whether or not the singleton design pattern is desirable, is an anti-pattern, or for any religious wars, but to discuss how this pattern is best implemented in Python in such a way that is most pythonic. 这个问题不是为了讨论是否需要 单例设计模式 ,是否是反模式,还是针对任何宗教战争,而是要讨论如何以最pythonic的方式在Python中最好地实现此模式。 In this instance I define 'most pythonic' to mean that it follows the 'principle of least astonishment' . 在这种情况下,我定义“最pythonic”来表示它遵循“最少惊讶的原理” 。 I have multiple classes which would become singletons (my use-case is for a logger, but this is not important). 我有多个将成为单例的类

Linux命令行与shell脚本编程入门经验

大憨熊 提交于 2020-08-20 06:35:54
如今的社会,随着时代的发展,出现了很多职业,像电子类,计算机类的专业,出现了各种各样的工程师,有算法工程师, java 工程师,前端工程师,后台工程师, Linux 工程师,运维工程师等等,不同的职业要求的个人能力有所不同,想要成为一名优秀的工程师是需要我们往相应的方向努力的。那么,如何成为一名优秀的 Linux 工程师呢?我们聊一聊如何成为一名优秀的 Linux 工程师。 Linux 命令大全: https://www.linuxcool.com/ 当时选则 Linux 也有很多原因,起初是因为对 Linux 开源的向往,还有就是感觉学习 Linux 是很有前途的,红帽认真比思科强一点。称为一名优秀的工程师,不仅要学好 Linux ,还要学好 Windows server 。另外必须要懂得写一些简单的程序,这样才能让你在这个遍布精英的行业中有一定的竞争力。好了,我说一下我是怎么开始接触 Linux 的。记得那是大学的时候,有一个小伙伴报了个 Linux 的培训班,上课回来说感觉不错,学习 Linux 很有钱途的,于是,啥都不懂的我就开始了解 Linux ,上网一搜,有关 Linux 相关的东西很多,文章,视频,应有尽有,于是我找了一些,开始学习,偶尔还去逛一下论坛,学了一段时间,总是感觉学的不系统,东一点,西一点,并没有真正的深入。于是我感觉这种学习方法不对,我需要系统的学习

Freemarker详解(二)

跟風遠走 提交于 2020-08-20 05:39:51
这一篇续上篇, 让我们继续来学习一下,Freemarker,话不多说,煌sir带你上干货~~ 一. 其他指令 1.运算符 算数运算符:FreeMarker表达式中完全支持算术运算 算数运算符 + - * / % 逻辑运算符 逻辑 运算符 描述 && 逻辑与 || 逻辑或 ! 逻辑非 比较运算符 比较 运算符 描述 == 判断两个值是否相等 != 判断两个值是否不等 >或者gt 判断左边值是否大于右边值 >=或者gte 判断左边值是否大于等于右边值 <或者lt 判断左边值是否小于右边值 <=或者lte 判断左边值是否小于等于右边值 注意:>、>=、<、<= 可能出现与预期结果不一致的情况,建议使用等效的字母 实例 <#if num > 60 > num大于60 </#if> 如果num为100,num表示条件成立,输出结果: 60 > num 大于 60 建议编写方式 <#if num gt 60 > num大于60 </#if> 2. 空值处理 判断某变量是否存在使用 “??” 变量?? ,如果不为空返回true,如果为空返回false Controller: @GetMapping ( "/if" ) public String _if(Model model) { //设置数据 model.addAttribute( "token" , 1234 ); model

谐云x腾讯云大学 | DevOps 系列课程重磅来袭!

旧城冷巷雨未停 提交于 2020-08-20 05:08:09
在云时代的大背景下,市场环境瞬息万变,企业发展迅速,各项业务全面展开,产品线越来越多,团队也不断壮大。如何组建一支高效的研发团队,减少系统间的摩擦和浪费,让研发部门快速响应市场需求,持续交付高质量的产品,已成为企业弯道超车的关键所在。 DevOps 的本质是打破各个部门之间的隔阂,打通企业的前中后台,让研发(Development)和运维(Operations)一体化,推进跨部门协作。企业可以利用 DevOps 打破各个研发小组甚至企业部门之间的边界,让信息流通更加顺畅,让跨部门协作更加紧密,提高研发效能,让团队从业务需求出发,向着同一个目标前进。 为了更好地助力企业进行 DevOps 转型,谐云携手腾讯云大学、优普丰敏捷学院、网新恒天和CODING重磅推出六节 DevOps 系列线上直播课程!本次系列课程将 DevOps 的理论、实战与工具相结合,帮助学员系统地了解 DevOps 知识与技能体系。同时,通过真实案例深入剖析 DevOps 的转型路径,加强学员对 DevOps 的理解并提升实际应用能力,从而能够持续快速地交付一流的软件产品,实现个人价值与企业价值的双赢。 开课时间 6 月 2 日- 4 日 / 6 月 9 日- 11 日 每天 19:00 - 20:00 课程/讲师简介 扫描海报二维码,立即报名六节免费线上直播课 别走开,文末还有福利赠送! 福利环节 成功 报名课程