main函数

ANTLR 介绍

人盡茶涼 提交于 2020-02-08 02:47:30
ANTLR 介绍 作者: Terence Parr 译者:Nicholas @ NirvanaStudio 原文出处: http://www.cs.usfca.edu/~parrt/course/652/lectures/antlr.html 介绍 自1980年以来我手工编写了很多识别程序(recognizer)和翻译程序(translator)但最终我感到很恶心并且尝试将这个过程自动化:来源于我的座右铭: “ Why program by hand in five days what you can spend five years of your life automating. “ 手工编写过很多程序之后你就可以发现一些共性,并且这些共性可以合理地格式化并且自动生成。我当时对 yacc 不是很熟悉但是想要一些东西去代替我原本需要手工 编码的工作。ANTLR就是这个最终的结果(实际上原来它叫做PCCTS)。我现在已经为之工作了十年了。 ANTLR , ANother Tool for Language Recognition, 是一个可以接受含有语法描述的语言描述符并且生成程序能够识别这些语言所产生的句子。作为一个翻译程序的 一部分,你可以给你的语法附上简单的操作符和行为并且告诉ANTLR如何构造AST并且如何输出它们。ANTLR知道如何使用Java,C++,C

Python实战笔记(三) 多线程

陌路散爱 提交于 2020-02-08 00:06:10
Python 提供 threading 模块用于控制线程,使我们处理多线程更加方便 1、线程模块的常用属性和方法 active_count() :返回当前存活的线程对象的数量 enumerate() :返回当前存活的线程对象的列表 current_thread() :返回当前线程对象 main_thread() :返回主线程对象 get_ident() :返回当前线程的线程标识符 stack_size([size]) :返回创建线程时使用的堆栈大小 TIMEOUT_MAX :指定阻塞函数(如 acquire 、 wait 、 wait_for 等)timeout 参数的最大值 import threading thread_number = threading.active_count() print(thread_number) # 1 curr_thread = threading.main_thread() main_thread = threading.current_thread() print(curr_thread == main_thread) # True 2、创建线程对象 threading.Thread(group, target, name, args, kwargs, *, daemon) group:为拓展 ThreadGroup 而保留,无需设置

[C语言]指针与字符串

随声附和 提交于 2020-02-07 20:49:53
----------------------------------------------------------------------------- // main.c // Created by weichen on 15/2/1. // Copyright (c) 2015年 weichen. All rights reserved. #include <stdio.h> int main(int argc, const char * argv[]) { /*   取地址与获取大小:   1. 运算符sizeof可以给出某个类型或变量在内存中的字节数 2. scanf("%d", &a);里面的&为运算符;&用于获取变量的地址,其操作数必须是变量 3. &不能对没有的东西取地址,如:&(a++),&(++a);取地址符右边必须有一个变量   */ int a = 0; int b = (int)&a; //将a的地址强制类型转换为整型 printf("sizeof(a)=%ld\n", sizeof(a)); //4 printf("sizeof(int)=%ld\n", sizeof(int)); //4 //4. double变量在内存中占据的空间是int变量的两倍 //5. 地址的大小是否与int相同取决于编译器,取决于是32位还是64位架构,并不总是相同

2020牛客寒假算法基础集训营1 J题可以回顾回顾

老子叫甜甜 提交于 2020-02-07 15:01:58
2020牛客寒假算法基础集训营1 这套题整体来说还是很简单的。 A.honoka和格点三角形 这个题目不是很难,不过要考虑周全,面积是1,那么底边的长度可以是1也可以是2, 注意底边1和2会有重复的,所以要注意去除这个重复部分的。 #include<bits/stdc++.h> using namespace std; const int maxn=2e5+10; typedef long long ll; const int mod=1e9+7; int main(){ ll n,m,ans=0; scanf("%lld%lld",&n,&m); ans=2*(m-2)%mod*m%mod*(n-1)%mod; ans+=2*(n-2)%mod*n%mod*(m-1)%mod; ans+=2*(m-1)%mod*(m-2)%mod*(n-2)%mod; ans+=2*(n-1)%mod*(n-2)%mod*(m-2)%mod; ans%=mod; printf("%lld\n",ans); return 0; } A B.kotori和bangdream 这个题目也很简单,因为每一个音符的概率都是确定的。。 #include<bits/stdc++.h> using namespace std; const int maxn=2e5+10; typedef long long

16.Go语言标准库之文件操作

最后都变了- 提交于 2020-02-07 13:19:18
1.打开和关闭文件 os.Open()函数能够打开一个文件,返回一个*File和一个err。 对得到的文件实例调用close()方法能关闭文件。 package main import ( "fmt" "os" ) func main() { file,err := os.Open("main.go") if err != nil{ fmt.Println("open file failed!err:",err) return } //为了防止文件忘记关闭,我们通常使用defer注册文件关闭语句 file.Close() } 结果: open file failed!err: open main.go: no such file or directory Process finished with exit code 0 2.读取文件 2.1file.Read() main.go文件中的内容 main wenjain 少时诵诗书所所所所所所所所所 sssssss 少时诵诗书所所所所所所所所所 少时诵诗书所所所所所所所所所 main wenjain 少时诵诗书所所所所所所所所所 sssssss 少时诵诗书所所所所所所所所所 少时诵诗书所所所所所所所所所 main wenjain 少时诵诗书所所所所所所所所所 sssssss 少时诵诗书所所所所所所所所所 少时诵诗书所所所所所所所所所

C语言 第五章 循环结构

跟風遠走 提交于 2020-02-07 07:19:23
目录 一、for 二、while 三、do while 四、continue 五、break 一、for 请在屏幕上输出1000个*号 printf("*************************...."); #include "stdio.h" void main() { int i; for(i=1;i<=1000;i++){ printf("*"); } } for(表达式A;表达式B;表达式C) { 要重复执行的代码块D; } 1、表达式A先执行,且只执行一次 2、表达式B再执行,如果为真则执行代码块D 3、再执行表达式C,再选择表达式B,回到第2步 4、ABCD都可以省去 for(;i>=100;); 5、表达式1通常用来给循环变量赋初值,一般是赋值表达式i=1 i=-1,j=100 6、表达式2通常是循环条件,一般为关系表达式或逻辑表达式i>=5 i>5&&j<=8 7、表达式3通常可用来修改循环变量的值,一般是复合赋值语句i++,i--, i+=5,j++ 8、这三个表达式都可以是逗号表达式,即每个表达式都可由多个表达式组成。三个表达式都是任选项,都可以省略。 #include "stdio.h" void main() { int i,j; for(i=1;i<=10;i++) { printf("%d \n",i); } } #include "stdio

java多线程

微笑、不失礼 提交于 2020-02-07 04:06:50
文章目录 多线程简介 创建多线程方法 构造方法 成员方法 多线程实现案例 1 多线程实现案例 2 线程调度 线程优先级 线程控制 休眠线程 加入线程 礼让线程 守护线程 中断线程 线程安全 判断线程安全问题存在可能性的标准 线程安全问题的解决方案:同步机制 同步方法的格式及锁对象问题 Lock 实现类 成员方法 死锁问题 部分线程安全与不安全类 线程通信 未通信导致错误案例 等待唤醒机制 等待唤醒机制实现案例 ThreadGroup 线程组 构造方法 成员方法 线程池 Executors 成员方法 ExecutorService 成员方法 线程池实现案例一:Runnable 线程池实现案例二:Callable 线程池实现案例三:Callable 带泛型 匿名内部类方式实现多线程案例 Timer 定时器 构造方法 成员方法 定时器的简单实现案例 多线程简介 进程 进程是系统进行资源分配和调用的独立单位 线程 在同一个进程中又可以同时执行多个任务,每一个任务可以看做是一个线程 线程是程序执行的单元、执行路径,也是程序使用 CPU 的基本单元 多线程及其意义 多线程不能提高程序的执行速度,但是可以使应用程序在抢占 CPU 资源时占得上风,但无法保证,线程的执行具有随机性 并行和并发 并行:逻辑上同时发生,指在某一个时间内同时运行多个程序 并发:物理上同时发生

13.Go语言标准库之time包

烈酒焚心 提交于 2020-02-07 03:47:26
1.time包 time包提供了时间的系那是和测量用的函数。日历的计算采用的是公历。 1.1时间类型 time.Time类型表示时间。我们可以通过time.Now()函数获取当前的事件对象,然后获取时间对象的年月日时分秒等信息。 package main import ( "fmt" "time" ) func main() { now := time.Now() //获取当前时间 fmt.Printf("current time:%v\n", now) year := now.Year() //年 month := now.Month() //月 day := now.Day() //日 hour := now.Hour() //小时 minute := now.Minute() //分钟 second := now.Second() //秒 fmt.Printf("%d-%02d-%02d %02d:%02d:%02d\n", year, month, day, hour, minute, second) } 结果: current time:2020-02-06 18:59:27.940916 +0800 CST m=+0.000227262 2020-02-06 18:59:27 Process finished with exit code 0 1.2时间戳

Golang 接口简介 1

蓝咒 提交于 2020-02-07 00:57:39
这篇教程是我们关于接口的两篇教程中的第一篇。 什么是接口? 在面向对象的世界中,接口的一般定义是“接口定义了一个对象的行为”。它仅指出这个对象应该做什么,而实现这个行为的方法(实现细节)则取决于具体的对象。 在Go语言中,接口是一组方法签名。当一个类型实现了接口中所有的方法时,我们就说这个类型实现了这个接口。这和面向对象世界中的概念是非常相似的。接口指定类型应该具有什么方法,类型决定如何实现这些方法。 例如:WashingMachine 是一个具有Cleaning()和Drying()方法签名的接口。任何实现了Cleaning()和Drying()方法的类型,都可以被认为实现了WashingMachine接口。 声明和实现一个接口 接下来,让我们直接用一个创建并实现了接口的程序来体验一下。 package main import ( "fmt" ) //interface definition type VowelsFinder interface { FindVowels ( ) [ ] rune } type MyString string //MyString implements VowelsFinder func ( ms MyString ) FindVowels ( ) [ ] rune { var vowels [ ] rune for _ , rune :=

14.Go语言标准库flag基本使用

会有一股神秘感。 提交于 2020-02-07 00:52:30
Go语言内置的flag包实现了命令行参数的解析,flag包使得开发命令行工具更为简单。 1.os.Args 如果你只是简单的想要获取命令行参数,可以像下面的代码示例一样使用os.Args来获取命令行参数。 os.Args十一个存储命令行参数的字符串切片,它的第一个元素是执行文件的名称。 package main import ( "fmt" "os" ) func main() { //os.Args是一个[]string if len(os.Args)>0{ for index,arg := range os.Args{ fmt.Printf("args[%d]=%v\n",index,arg) } } } 结果: ➜ test go build -o "args_demo" ➜ test ./args_demo a b c d args[0]=./args_demo args[1]=a args[2]=b args[3]=c args[4]=d 2.flag包基本使用 2.1flag参数类型 flag包支持的命令行参数类型有bool、int、int64、uint、uint64、float float64、string、duration。 2.2定义命令行flag参数 有以下两种定义命令行flag参数的方法。 2.2.1flag.Type() 基本格式如下: flag.Type