main函数

C#图解教程 第十三章 委托

左心房为你撑大大i 提交于 2020-02-02 00:56:40
委托 什么是委托 可以认为委托是持有一个或多个方法的对象。当然,正常情况下你不想“执行”一个对象,但委托与典型对象不同。可以执行委托,这时委托会执行它所“持有”的方法。 我们从下面的示例代码开始。具体细节将在本章剩余内容介绍。 代码开始部分声明了一个委托类型MyDel(没错,是委托类型不是委托对象) Program类声明了3个方法:PrintLow、PrintHigh和Main。接下来要创建的委托对象将持有PrintLow或PrintHigh方法,但具体使用哪个运行时确定 Main声明了局部变量del,持有一个MyDel类型的委托对象的引用。这不会创建对象。只是创建持有委托对象引用的变量,在几行后便会创建委托对象,并将值赋给这个变量 Main创建了Random类的对象,这是个随机数生成器类。接着调用该对象Next方法,将99作为参数。这会返回介于0到99间的随机整数,并将这个值保存在局部变量randomValue中 下面一行检查这个随机值是否小于50 小于50,就创建一个MyDel委托对象并初始化,让它持有PrintLow方法的引用 否则,就创建一个持有PrintHigh方法引用的MyDel委托对象 最后,Main执行委托对象del,这将执行它持有的方法(PrintLow或PrintHigh) 如果你有C++背景,理解委托最快的方法是把它看成一个类型安全的、面向对象的C++函数指针

C++实现从数组到链表,从前序遍历到中序遍历

主宰稳场 提交于 2020-02-01 23:22:24
从数组构造链表的资料比较少,大多数都是直接从控制台输入,故写下此文。重点在preOrder函数。 插入一个preOrder函数里面的一个 疑问 :直接用结构体的构造函数写的root往往只剩下头节点,而用New的方式却能够构造完整的链表,这是为什么呢? 如果你知道的话,欢迎你在评论区留言 :) int main(void) { vector<int> nums1 = { 1,NULL, 2, 5 }; vector<int> inorder_result; TreeNode *T; T = preOrder(nums1, 0); //构造代码 cout << "前序列遍历输出: \n"; preOderread(T); //前序列遍历输出 cout << "\n 中序列遍历输出: \n"; inorder_result = inorderTraversal(T); //数组改为中序列遍历的数组 inOderread(inorder_result);//中序列遍历输出 destroy(T); system("pause"); } 接下来是用到的主要函数文件,头函数在最后的部分 #include<iostream> #include <vector> #include "inorderTraversal.h" using namespace std; //中序遍历迭代函数 void

JAVA匿名内部类(Anonymous Classes)

霸气de小男生 提交于 2020-02-01 22:30:01
1.前言 匿名内部类在我们JAVA程序员的日常工作中经常要用到,但是很多时候也只是照本宣科地用,虽然也在用,但往往忽略了以下几点:为什么能这么用?匿名内部类的语法是怎样的?有哪些限制?因此,最近,我在完成了手头的开发任务后,查阅了一下JAVA官方文档,将匿名内部类的使用进行了一下总结,案例也摘自官方文档。感兴趣的可以查阅官方文档( https://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html )。 2.匿名内部类 匿名内部类可以使你的代码更加简洁,你可以在定义一个类的同时对其进行实例化。它与局部类很相似,不同的是它没有类名,如果某个局部类你只需要用一次,那么你就可以使用匿名内部类(Anonymous classes enable you to make your code more concise. They enable you to declare and instantiate a class at the same time. They are like local classes except that they do not have a name. Use them if you need to use a local class only once.) 本节包括以下几个方面:

疯狂Python讲义第十章练习

守給你的承諾、 提交于 2020-02-01 20:16:12
# -*- coding: utf-8 -*- ''' Created on 2020年1月31日 @author: guzl86 1. 提示用户输入自己的名字、年龄、身高,并将该用户信息以 JSON 格式保存在文件中。再 写一个程序读取刚刚保存的 JSON 文件,恢复用户输入的信息 。 ''' import json if __name__ == '__main__': info = {} info['name'] = input('请输入您的姓名:') info['age'] = input('请输入您的年龄:') info['height'] = input('请输入您的身高:') fp = open("10-1.dat",'w') json.dump(info, fp) fp.close() info1 = {} fp1 = open("10-1.dat",'r') info1 = json.load(fp1) fp1.close() print(info1) pass # -*- coding: utf-8 -*- ''' Created on 2020年1月31日 @author: guzl86 2. 给定一个字符串,该宇符串只包含数字 O~9 、英文逗号、英文点号,请使用英文逗号、英 文点号将它们分割成多个子串 。 知识点: 1.re.fullmatch

理解Go协程与并发

瘦欲@ 提交于 2020-02-01 20:15:58
协程 Go语言里创建一个协程很简单,使用 go 关键字就可以让一个普通方法协程化: package main import ( "fmt" "time" ) func main(){ fmt.Println("run in main coroutine.") for i:=0; i<10; i++ { go func(i int) { fmt.Printf("run in child coroutine %d.\n", i) }(i) } //防止子协程还没有结束主协程就退出了 time.Sleep(time.Second * 1) } 下面这些概念可能不太好理解,需要慢慢理解。可以先跳过,回头再来看。 概念: 协程 可以理解为纯用户态的线程,其通过协作而不是抢占来进行切换。相对于进程或者线程,协程所有的操作都可以在用户态完成,创建和切换的消耗更低。 一个进程内部可以运行多个线程,而每个线程又可以运行很多协程。线程要负责对协程进行调度,保证每个协程都有机会得到执行。当一个协程睡眠时,它要将线程的运行权让给其它的协程来运行,而不能持续霸占这个线程。同一个线程内部最多只会有一个协程正在运行。 协程可以简化为三个状态: 运行态 、 就绪态 和 休眠态 。同一个线程中最多只会存在一个处于运行态的协程。 就绪态协程 是指那些具备了运行能力但是还没有得到运行机会的协程,它们随时会被调度到运行态

Go语言 一维数组的使用

偶尔善良 提交于 2020-02-01 15:24:25
程序源码    package main import ( "fmt" // 导入 fmt 包,打印字符串是需要用到 ) func main() { // 声明 main 主函数 var a [3]int // 定义三个整数的数组 fmt.Println(a[0]) // 打印第一个元素 fmt.Println(a[len(a)-1]) //打印索引和元素 for i, v := range a { fmt.Printf("%d %d \n", i, v) } //仅打印元素 for _, v := range a { fmt.Printf("%d \n", v) } //在数组的定义中,如果在数组长度的位置出现“...”省略号,则表示数组的长度是根据初始化值的个数来计算 q := [...]int{2, 3, 5} fmt.Printf("%T \n", q) } 输出结果 来源: https://www.cnblogs.com/personblog/p/12248366.html

Go语言基础之17--Redis基本操作

懵懂的女人 提交于 2020-02-01 09:19:16
一、介绍与连接 1.1 介绍 使用第三方的redis库, github.com/garyburd/redigo/redis github地址: https://github.com/gomodule/redigo 下载: go get github.com/garyburd/redigo 1.2 连接redis package main import ( "fmt" "github.com/garyburd/redigo/redis" ) func initRedis() (conn redis.Conn, err error) { //连接redis函数 conn, err = redis.Dial("tcp", "127.0.0.1:6379") //传递协议、ip、端口 if err != nil { fmt.Printf("conn redis failed, err:%v\n", err) return } fmt.Printf("connect redis successful!!!\n") return } func main() { conn, err := initRedis() if err != nil { return } defer conn.Close() //关闭连接 } 执行结果: 二、redis开发 2.1 set操作 package main

golang开始

 ̄綄美尐妖づ 提交于 2020-02-01 05:42:57
公司大量的产品都是建立在云的基础上,像云服务器,docker容器,有必要了解一下21世纪语言golang // Main file has non-main package or doesn't contain main function // Go的错误信息提示的很直接了当,main方法只能放在package main中,go run 是执行命令,必须要一个main用来调用,install可以直接编译成包文件,也可以编译出exe(如果有main函数的话) package main import "fmt" // go是一门强类型的语言 // go的变量必须要有明确的类型,有明确的类型之后,可以做一个静态编译,在解析的时候不需要判断相应的类型 // 编译器会自动在每一行增加分号 // go追求简洁,减少冗余变量,变量在定义之后,需要使用之后才能编译通过 func add ( a int , b int ) int { // 定义一个变量 var 变量名字 变量类型 var sum int sum = a + b return sum } func main ( ) { var c int c = add ( 5 , 6 ) fmt . Println ( "add(5,6)=" , c ) } 来源: CSDN 作者: Cocktail_py 链接: https://blog

记录自己的Java小白入门之路1--注释习惯

落花浮王杯 提交于 2020-01-31 22:52:26
package com.lvshuo.test; /* 需求:我要写一个注释的例子,养成代码注释的习惯,例子中我要在控制台输出"Hello World" 分析: a.写java程序必须定义类 b.要把数据输出到控制台需要程序能独立运行,也就是必须定义一个main函数; c.要输出数据需要使用输出语句 ` 实现: */ //定义一个类 ZhuShiDemo public class ZhuShiDemo { // 定义main方法,使程序能独立运行,main方法是程序入口,能被JVM自动调用 public static void main(String[] args) { // 为了把数据显示在控制台,使用输出语句 System.out.println(“Hello World”); } } 来源: CSDN 作者: bigduang 链接: https://blog.csdn.net/bigduang/article/details/104122825

栈迁移/栈劫持

不想你离开。 提交于 2020-01-31 06:29:40
例子 https://github.com/scwuaptx/HITCON-Training/tree/master/LAB/lab6 #include <stdio.h> #include <stdlib.h> #include <unistd.h> int count = 1337 ; int main(){ if(count != 1337) exit(1); count++; char buf[40]; setvbuf(stdout,0,2,0); puts("Try your best :"); read(0,buf,64); return 0; } gcc -m32 -z relro -z now -fno-stack-protector -mpreferred-stack-boundary=2 -no-pie a.c -o a 之前方法的问题 buf只有40B,但是却read了64B,这里发生了栈溢出 实际测试得到offset=44,所以只有20B可以写exp ret2text没有对应的函数 ret2shellcode有read函数,bss有写权限,可以read在bss中写入shellcode,然后write返回到bss,但是长度超过了24B ret2libc:泄露地址什么的可以使用puts泄露地址,count限制了执行次数