上下文

java: 无法从静态上下文中引用非静态 方法

醉酒当歌 提交于 2020-03-09 16:38:15
遇到的问题是这样的 public static void main ( String [ ] args ) { // TextArrays a=new TextArrays(); int n = 0 ; Scanner scanner = new Scanner ( System . in ) ; n = scanner . nextInt ( ) ; System . out . println ( f ( n ) ) ; } public int f ( int n ) { if ( n == 1 || n == 2 ) { return 1 ; } else { return f ( n - 1 ) + f ( n - 2 ) ; } } 报错是这样的:Error:(14, 28) java: 无法从静态上下文中引用非静态 方法 f(int) 具体的解决: new 一个对象调用非静态方法f 或者 将f()改成静态方法 在一个静态类里面 如果不通过对象调用一个非静态方法,这是不被允许的 要么把方法变成静态方法,要么通过对象来调用它 来源: CSDN 作者: _凌晨两点半_ 链接: https://blog.csdn.net/WA_MC/article/details/104751127

线程的上下文切换

て烟熏妆下的殇ゞ 提交于 2020-03-09 15:34:30
CPU利用时间片轮询来为每个任务都服务一定的时间,然后把当前任务的状态保存下来,继续服务下一个任务。任务的状态保存及再加载就叫做线程的上下文切换。 在一个进程内部可以有多个线程在同时运行,并与创建它的进程共享同一地址空间和其它资源。 上下文:批线程切换时CPU寄存器和程序计数器所保存的当前线程的信息。 寄存器:指CPU内部容量较小但速度很快的内存区域(与之相对应的是CPU外相对较慢的RAM主内存)。寄存器通过对常用值(常为运算的中间值)的快速访问来加快计算机程序的速度。 程序计数器:是一个专用的寄存器,用于表明指令序列中CPU正在执行的位置,存储的值为正在执行的指令的位置或下一个将被执行的指令的位置,这依赖于特定的系统。 上下文切换 上下文切换指的是内核(OS的核心)在CPU上对进程或线程进行切换。上下文切换过程中的信息被保存在 进程控制块 (PCB ,Process Control Block)中。PCB又被称作切换帧(SwitchFrame)。上下文切换的信息会一直被保存在CPU的内存中。直到被再次使用。上下文切换流程如下: (1)挂起一个进程,将这个进程在CPU中的状态(上下文信息)存储于内存的PCB中。 (2)在PCB中检索下一个进程的上下文并将其在CPU的寄存器中恢复。 (3)跳转到程序计数器所指向的位置(即跳转到进程被中断时的代码),并恢复该进程。

干货 | 速速收藏:五分钟带你了解Spring IOC原理!

岁酱吖の 提交于 2020-03-08 22:34:10
spring容器高层视图 Spring 启动时读取应用程序提供的Bean配置信息,并在Spring容器中生成一份相应的Bean配置注册表,然后根据这张注册表实例化Bean,装配好Bean之间的依赖关系,为上层应用提供准备就绪的运行环境。 Bean缓存池:HashMap实现 IOC容器介绍 Spring 通过一个配置文件描述 Bean 及 Bean 之间的依赖关系,利用 Java 语言的反射功能实例化 Bean 并建立 Bean 之间的依赖关系。 Spring 的 IoC 容器在完成这些底层工作的基础上,还提供了 Bean 实例缓存、生命周期管理、 Bean 实例代理、事件发布、资源装载等高级服务。 BeanFactory 是 Spring 框架的基础设施,面向 Spring 本身; ApplicationContext 面向使用 Spring 框架的开发者,几乎所有的应用场合我们都直接使用 ApplicationContext 而非底层的 BeanFactory。 BeanFactory BeanFactory体系架构: BeanDefinitionRegistry : Spring 配置文件中每一个节点元素在 Spring 容器里都通过一个 BeanDefinition 对象表示,它描述了 Bean 的配置信息。而 BeanDefinitionRegistry

BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding

核能气质少年 提交于 2020-03-08 17:54:07
BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding 摘要 我们引入了一个新的叫做bert的语言表示模型,它用transformer的双向编码器表示。与最近的语言表示模型不同,BERT通过在所有层的上下文联合调节来预训练深层双向表示。因此,预训练的bert可以添加一个额外的输出层进行微调,可以在广泛的任务上产生目前最好的效果。例如问答和语言推理,不需要大量特定任务的结构的修改。 BERT在概念上简单且经验丰富。它在11项自然语言处理任务中获得了最新的最新成果,包括GLUE分数,MultiNLI精度,问答。 1 简介 语言模型预训练已被证明对改进许多自然语言处理任务是有效的。包括句子级任务,如自然语言推理和释义,旨在通过对整体的分析预测句子之间的关系。令牌级别任务,例如命名实体识别和问答,模型需要在令牌级别上产生细粒度的输出。 在预训练的语言表示应用到下游任务上有两种策略:基于特征和微调。基于特征的方式,例如ELMO包括特定于任务的体系结构,包括预训练的表示作为一个附加特征。微调的方法,例如Generative Pre-trained Transformer (OpenAI GPT),引入了最小的特定任务参数,并通过简单地微调所有预训练参数来训练下游任务

Perl基础总结

﹥>﹥吖頭↗ 提交于 2020-03-07 21:30:57
一、数据类型(Data Type) 学习一门编程语言,首先需要了解的就是这门编程语言有那几种数据类型。Perl的数据类型大致可以分为四类:Scalar(标量)、Array(数组)、Hash(哈稀)以及Reference(引用)。看起来,四种数据类型似乎显得先天不足,但用起来却已绰绰有余。 1、Scalar(标量) 标量是Perl中最简单的一种数据类型,也是构成其它三个数据类型的基石。标量变量可以代表一个字符、字符串以及数字(整数或浮点数)。变量变量以$开头。如下: 1 my $x = "abcd"; 2 my $y = 999999; 3 my $z = 1.0001; 在Perl中,字符串型标量和数值型标量并没有显著的差别。实际上,在特定情况下,Perl会根据需要在字符串和数值之间进行转换。是否发生转化由操作符决定,若操作符需要的是一个字符串而提供的操作数却是一个数值,或者反过来,操作符需要的是数值而提供的操作数却是字符串,那么转化将发生。 对数值进行运算的操作符(比如加减乘除运算)如果遇到字符串类型的操作数,Perl会自动将字符串转化成等效的十进制浮点数进行运算。比如,12 * "f10d"会得到0,而12 * "10fd"却会得到120。 同样的,对字符串进行操作的操作符遇到数值型的操作数时,给数值就被转换成相同的字符串。比如"xyz" . 99会得到"xyz99"。 2

列表与数组 Perl入门第三章

╄→尐↘猪︶ㄣ 提交于 2020-03-07 20:22:42
列表List 是标量的有序集合。数组array则是存储列表的变量。数组/列表的每个元素element都是单独的标量变量,拥有独立的标量值。 1. 数组: 访问数组中的元素: $fred[0]="yaya";$fred[1]="yaya1";$fred[2]="yaya" ... $fred[99]=“last" 特殊的数组索引: $#fred fred数组最后一个索引值; fred[$#fred] ="last" $fred[-1] ="last" 2. 列表: 列表直接量: (1..5) #(1 ,2. 3, 4, 5) ($m..$n) #m n 之间的部分 (0, $#fred) #0 ~ 99 qw简写 # quoted word 加上单引号的单词,当作 单引号 内的字符串来处理。不能像双引号一样使用\n 和 $fred 替换。空白符(空格,制表符,换行符)会被抛弃。 qw( a b c) qw# a b c# qw! a b c ! 列表的赋值: 列表值赋给变量 ($a , $b , $c)=("m" , "n" , "t") 变量值交换 ($a ,$b)=($b ,$a) (fred[0] , fred[1], fred[2], fred[3]) = qw/a b c d/ @fred=qw/a b c d/ @stuff =(@fred , undef , @fred

Dialogue System Survey——Non-task-oriented 翻译

匆匆过客 提交于 2020-03-07 18:40:08
论文地址 参考文献请查看论文。 无任务导向对话系统 与旨在为用户完成特定任务的任务导向对话系统不同,无任务导向对话系统(也称为聊天机器人)集中于在多领域中与人类交谈[64]。总体上,聊天机器人有生成方法generative method或者基于检索的方法retrieval-based method。生成模型可以生成在语料库corpus中从未出现过的、更为合理的回复,而检索方法更注重流畅、信息丰富的回复[30],因为它们可以使用回复选择算法response selection algorithm从语料库中选择合适于当前对话的回复。在之后的部分中,我们首先探索近年来的最热门的话题之一——神经生成模型,讨论了他们的缺点和提升可能性。之后,我们介绍了在检索模型中深度学习取得的成就。 1. 神经生成模型 近年来,诸如推特、reddit等社交媒体网站存在大量的对话式交换,从而发展了数据驱动模型data-driven model。[64]给出了一种生成概率模型,建立在基于短语基础上的统计机器翻译statistical machine translation[118],去模拟微博上的对话。它视生成回复问题为翻译问题,将一条微博翻译成一个回复。但是,生成回复比不同语言之间的翻译更难。很大程度上是由于可行的回复范围过广,以及发布微博和回复之间缺乏短语校准phrase alignment

上下文执行栈

徘徊边缘 提交于 2020-03-07 17:10:52
知识点: * 执行上下文 * 每次函数执行的时候,会产生一个执行上下文,执行上下文是一个对象 * 执行上下文里面会创建一个变量对象 ,里面存放着当前函数内的变量 * 基本数据类型保存在变量对象里的,引用数据数据类型要单独在单堆内存里开辟空间保存。 * 变量对象里保存的就是堆里的内存地址 1 function task(m, n) { 2 var a = 1; 3 var b = { 4 name: '张三' 5 } 6 var c = [1, 2, 3]; 7 } 8 task(10, 20); 我们可以知道task的执行上下文 1 let taskExecutionContext = { 2 this: window, 3 [[Scope]]: [函数的活动对象,全局的变量对象], 4 //Variable Object 变量对象 里面存的是当前函数执行要使用到的变量 5 VO: { 6 m: 10, 7 n: 20, 8 a: 1, 9 b: '内存地址指向对象{name: 张三}', 10 c: '内存地址指向数组[1,2,3]' 11 } 12 } 某个函数第一次被调用时,会创建一个执行环境(execution context)及相应的作用域链,并把作用域链赋值给一个特殊的内部属性(即 [[Scope]] ) 当代码在一个环境中执行时,会创建变量对象的一个作用域链

CoreData 使用

末鹿安然 提交于 2020-03-06 13:37:05
一、CoreData的简单使用 准备工作 创建数据库 新建文件,选择 CoreData -> DataModel 添加实体(表), Add Entity 给表中添加属性,点击 Attributes 下方的 ‘+’ 号 创建模型文件 新建文件,选择 CoreData -> NSManaged Object subclass 根据提示,选择实体 通过代码,关联数据库和实体 - (void)viewDidLoad { [super viewDidLoad]; /* * 关联的时候,如果本地没有数据库文件,Coreadata自己会创建 */ // 1. 上下文 NSManagedObjectContext *context = [[NSManagedObjectContext alloc] init]; // 2. 上下文关连数据库 // 2.1 model模型文件 NSManagedObjectModel *model = [NSManagedObjectModel mergedModelFromBundles:nil]; // 2.2 持久化存储调度器 // 持久化,把数据保存到一个文件,而不是内存 NSPersistentStoreCoordinator *store = [[NSPersistentStoreCoordinator alloc]

C# AsyncLocal 和CallContext

℡╲_俬逩灬. 提交于 2020-03-05 18:08:42
AsyncLocal<string> data = new AsyncLocal<string>(); data.Value = "lcc"; for (int i = 0; i < 20; i++) { var current = i; Thread.Sleep(500 * current); Task.Run(() => { Console.WriteLine($"-----[{current}]-----Begin:{data.Value}"); data.Value = current + "lcc"; Console.WriteLine($"-----[{current}]-----End:{data.Value}"); }); Console.WriteLine($"-----[{current}]-----Current:{data.Value}"); } Console.ReadLine(); 运行结果: Begin 都是 初始值,即使在其他线程中 更改了data.value 其他线程也不会同步,并且主线程中 仍为 lcc CallContext (线程上下文) LogicalCallContext ExecutionContext(执行上下文) AsyncLocal (多线程共享变量) ThreadLocal (线程内变量) 来源: https://www