Video Analysis 相关领域
Action Recognition(行为识别)也可以叫 Action Classification
任务目的给一个视频片段进行分类,类别通常是各类人的动作
任务特点简化了问题,一般使用的数据库都先将动作分割好了,一个视频片断中包含一段明确的动作,时间较短(几秒钟)且有唯一确定的label。所以也可以看作是输入为视频,输出为动作标签的多分类问题。此外,动作识别数据库中的动作一般都比较明确,周围的干扰也相对较少(不那么real-world)。有点像图像分析中的Image Classification任务。
难点/关键点
强有力的特征:即如何在视频中提取出能更好的描述视频判断的特征。特征越强,模型的效果通常较好。
特征的编码(encode)/融合(fusion):这一部分包括两个方面,第一个方面是非时序的,在使用多种特征的时候如何编码/融合这些特征以获得更好的效果;另外一个方面是时序上的,由于视频很重要的一个特性就是其时序信息,一些动作看单帧的图像是无法判断的,只能通过时序上的变化判断,所以需要将时序上的特征进行编码或者融合,获得对于视频整体的描述。
算法速度:虽然在发论文刷数据库的时 ...
1.操作系统-操作系统概述
操作系统操作系统举例
操作系统的层次结构
操作系统的概念
是系统最基本最核心的软件,属于系统软件
控制和管理整个计算机的硬件和软件资源
合理的组织、调度计算机的工作与资源分配
为用户和其他软件提供方便的接口和环境
操作系统的功能和目标
计算机系统资源的管理者
处理机管理(进程管理)
存储器管理(内存)
文件管理(文件系统)
设备管理(I/O)
处理机管理(进程管理)在多道程序环境下,处理机的分配和运行都以进程(或线程)为基本单位,因而对处理机的管理可归纳为进程的管理。并发是指在计算机内同时运行多个进程,因此进程何时创建、何时撤销、如何避免冲突、合理共享就是进程管理的最主要的任务。进程管理的主要功能包括进程控制、进程同步、进程通信、死锁通信、处理机调度等。
存储器管理为多道程序的运行提供良好的环境,方便用户使用及提高内存的利用率,主要包括内存的分配与回收、地址映射、内存保护与共享和内存扩充等功能。
文件管理计算机中所有的信息都是以文件的形式存在的,操作票系统中负责文件管理的部分称为文件系统,文件管理包括文件存储空间的管理、目录管理及文件读写管理和保护等。
设备管理设备 ...
ElasticSearch7.6.1 入门到实战
概述ElasticSearch ,简称为es,是一个开源的、高拓展的分布式全文检索引擎,它可以近乎实时的存储、检索数据。本身拓展性很好,可以拓展到上百台服务器,处理PB级别的数据。ElasticSearch使用java开发并且使用Lucene作为其核心来实现所有索引和搜索的功能,但是他的目的是通过简单的RestFul API来隐藏Lucene的复杂性,从而让全文检索变得简单。
ElasticSearch和Solr的比较
es基本上是开箱即用,非常简单,Solr安装略麻烦;
Solr利用Zookeeper进行分布式管理,而elasticsearch自身就带有分布式协调管理功能;
Solr支持更多格式的数据,例如:json,xml,csv,而ElasticSearch仅仅支持json文件格式;
Solr官方提供的功能更多,而ElasticSearch本身更注重核心功能,高级功能多由第三方插件提供,例如图形化界面需要kibana友好支持;
Solr查询快,但更新索引时慢(即插入删除慢),用于电商的查询多的应用;
ElasticSearch建立索引快(即查询慢),即实时性查询快,用于新浪的搜索 ...
100的阶乘是0?
100的阶乘的0?有趣的疑问
超出数据类型取值范围 会输出什么数字:
数据类型:int
取值范围:-2^31–2^31-1
测试1:
1234567891011121314151617181920212223242526272829303132333435363738394041424344public class test { public static void main(String[] args) { int i3 = 1; for (int i=1;i<34;i++){ i3=i3*2; System.out.println(i3); } }}输出结果:248163264128256512102420484096819216384327686553613107226214452428810485762097152419430483886081677721633554432671088641342177282684354565368709121073741824-214748364800
...
3.JVM —— 类文件结构
概述在 Java 中,JVM 可以理解的代码就叫做字节码(即扩展名为 .class 的文件),它不面向任何特定的处理器,只面向虚拟机。Java 语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点。所以 Java 程序运行时比较高效,而且,由于字节码并不针对一种特定的机器,因此,Java 程序无须重新编译便可在多种不同操作系统的计算机上运行。
Clojure(Lisp 语言的一种方言)、Groovy、Scala 等语言都是运行在 Java 虚拟机之上。下图展示了不同的语言被不同的编译器编译成.class文件最终运行在 Java 虚拟机之上。.class文件的二进制格式可以使用 WinHex 查看。
可以说.class文件是不同的语言在 Java 虚拟机之间的重要桥梁,同时也是支持 Java 跨平台很重要的一个原因。
Class 文件结构总结根据 Java 虚拟机规范,类文件由单个 ClassFile 结构组成:
123456789101112131415161718ClassFile { u4 ...
2.JVM —— 垃圾回收
本文导火索
当需要排查各种内存溢出问题、当垃圾收集成为系统达到更高并发的瓶颈时,我们就需要对这些“自动化”的技术实施必要的监控和调节。
JVM内存分配与回收Java的自动内存管理主要是针对对象内存的回收和对象内存的分配。同时,Java自动内存管理最核心的功能是堆内存中对象的分配与回收。
Java堆是垃圾收集器管理的主要区域,因此也被称作为GC堆(Garbage Collected Heap). 从垃圾回收的角度,由于现在收集器基本都采用分代垃圾收集算法,所以Java堆还可以细分为:新生代和老年代:
新生代: Eden空间、From Survivor、To Survivor空间
老年代:Old Memory
进一步划分的目的是更好地回收内存,或者更快地分配内存。
堆空间的基本结构:
大部分情况,对象都会首先在 Eden 区域分配,在一次新生代垃圾回收后,如果对象还存活,则会进入 s0 或者 s1,并且对象的年龄还会加 1(Eden 区->Survivor 区后对象的初始年龄变为 1),当它的年龄增加到一定程度(默认为 15 岁),就会被晋升到老年代中。对象晋升到老年代的年龄阈 ...
1.线程、进程、协程
进程进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。每个进程都有自己的独立内存空间,不同进程通过进程间通信来通信。由于进程比较重量,占据独立的内存,所以上下文进程间的切换开销(栈、寄存器、虚拟内存、文件句柄等)比较大,但相对比较稳定安全。
直白地讲,进程就是应用程序的启动实例。比如我们运行一个游戏,打开一个软件,就是开启了一个进程。
进程拥有代码和打开的文件资源、数据资源、独立的内存空间。
线程线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。线程间通信主要通过共享内存,上下文切换很快,资源开销较少,但相比进程不够稳定容易丢失数据。
线程从属于进程,是程序的实际执行者。一个进程至少包含一个主线程,也可以有更多的子线程。线程拥有自己的栈空间。
有人给出了很好的归纳:
对操作系统来说,线程是最小的执行单元,进程是最小的资源管理单元。无论进 ...
1.JVM —— 内存区域简介
概述对于Java程序员来说,在虚拟机自动内存管理机制的帮助下,不再需要为每一个new操作去写配对的delete/free代码,不容易出现内存泄漏和内存溢出问题,看起来由虚拟机管理内存一切都很美好。不过,也正是因为Java程序员把控制内存的权力交给了Java虚拟机,一旦出现内存泄漏和溢出方面的问题,如果不了解虚拟机是怎样使用内存的,那排查错误、修正问题将会成为一项异常艰难的工作。
运行时数据区域Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而一直存在,有些区域则是依赖用户线程的启动和结束而建立和销毁。根据《Java虚拟机规范》的规定,Java虚拟机所管理的内存将会包括以下几个运行时数据区域
JDK 1.8 之前:
JDK 1.8 :
线程私有:
程序计时器
虚拟机栈
本地方法栈
线程共享:
堆
方法区
直接内存
程序计数器程序计数器是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器。字节码解释器工作时通过改变这个计数器的值来选取下一条需要执行的字节码 ...
0.JVM —— JVM与Java体系结构
JVM与Java体系结构前言作为Java工程师的你曾被伤害过吗?你是否也遇到过这些问题?
运行着的线上系统突然卡死,系统无法访问,甚至直接OOMM!
想解决线上JVM GC问题,但却无从下手。
新项目上线,对各种JVM参数设置一脸茫然,直接默认吧然后就JJ了
每次面试之前都要重新背一遍JVM的一些原理概念性的东西,然而面试官却经常问你在实际项目中如何调优VM参数,如何解决GC、OOM等问题,一脸懵逼。
大部分Java开发人员,除会在项目中使用到与Java平台相关的各种高精尖技术,对于Java技术的核心Java虚拟机了解甚少。
一些有一定工作经验的开发人员,打心眼儿里觉得SSM、微服务等上层技术才是重点,基础技术并不重要,这其实是一种本末倒置的“病态”。如果我们把核心类库的API比做数学公式的话,那么Java虚拟机的知识就好比公式的推导过程。
计算机系统体系对我们来说越来越远,在不了解底层实现方式的前提下,通过高级语言很容易编写程序代码。但事实上计算机并不认识高级语言
架构师每天都在思考什么?
应该如何让我的系统更快?
如何避免系统出现瓶颈?
知乎上有条帖子:应该如何看招聘信息 ...
数据结构简介
数据结构简介数据结构是为实现对计算机数据有效使用的各种数据组织形式,服务于各类计算机操作。不同的数据结构具有各自对应的适用场景,旨在降低各种算法计算的时间与空间复杂度,达到最佳的任务执行效率。
如下图所示,常见的数据结构可分为「线性数据结构」与「非线性数据结构」,具体为:「数组」、「链表」、「栈」、「队列」、「树」、「图」、「散列表」、「堆」。
数组数组(array)是一种最简单的复合数据类型,它是有序数据的集合,数组中的每个元素具有相同的数据类型,可以用一个统一的数组名和不同的下标来确定数组中唯一的元素。根据数组的维度,可以将其分为一维数组、二维数组和多维数组等。
创建一维数组声明数组为了在程序中使用一个数组,必须声明一个引用该数组的变量,并指明整个变量可以引用的数组类型。声明一维数组的语法格式为:
123type[] arrayName; //数据类型[] 数组名;//或者type arrayName[]; //数据类型 数组名[];
数组的声明有两种形式:一种是中括号”[]“跟在元素数据类型之后,另一种是中括号”[]“跟在变量名之后。
对于以上两种语法格式而言,Ja ...