main函数

Go 中包导入声明

生来就可爱ヽ(ⅴ<●) 提交于 2020-01-26 04:29:53
Go中的程序由软件包组成。通常,软件包依赖于其他软件包,或者内置于标准库或第三方的软件包。包需要先导入才能使用其导出的标识符。本文将翻译一篇国外的文章,用于介绍包导入的原理以及几种常用的导入方式。 <>>==========>><> Go 语言中的程序由软件包组成,一般来说,软件包会依赖于其他软件包,这些软件包可能是标准库或者是第三方的软件包。但是,无论是哪里的,包都需要先导入才能使用其导出的标识符,而这需要通过调用 import 语句: package main import ( "fmt" "math" ) func main() { fmt.Println(math.Exp2(10)) // 1024 } 上面我们有一个 导入声明 和两个 Import语句 。每个 Import 语句都定义了单个包的导入。 名为 main 的软件包用于创建可执行二进制文件。程序执行通过调用在 package main 中的 main 的函数开始。 但是......还有其他一些不太为人所知的选项在各种情况下都很有用: import ( "math" m "math" . "math" _ "math" ) 这四个导入规范中的每一个都有不同的表现,在本文中,我们将分析这些差异。 导入包只能引用导入包中的导出标识符。导出的标识符是以 Unicode 大写字母开头的 -  https://golang

Python学习笔记:协程初探

对着背影说爱祢 提交于 2020-01-26 03:43:57
(本文主要参照Python在线文档进行学习) 0.前言 进程有自己独立的堆和栈,由操作系统调度;线程有独立的栈,共享堆空间,标准的线程也是由操作系统调度;协程和线程一样共享堆不共享栈,但是是由程序员在协程的代码里显示调度。协程避免了无意义的调度,进而提升性能,但也增加了程序员的责任。 1.初探 asyncio是一个使用 async / await 语法编写并发代码的库,在Python 3.4 引入,直接内置了对异步IO的支持,并在后来的版本中不断完善。早期基于生成器来实现协程,但是在 Python 3.8 开始不推荐使用该方式,并将在 3.10 移除。目前标准的是使用 async / await 语法来实现协程。 要实际运行协程,asyncio 提供了三种主要机制: a.使用 asyncio.run() 函数来运行顶层入口点 (运行代码需要 Python3.7 ;要注意的是,直接调用 func() 并不能执行) import asyncio import time async def func(): print('func in'+time.strftime('%X')) await asyncio.sleep(3) print('func out'+time.strftime('%X')) print('begin'+time.strftime('%X')) asyncio

3.python元类编程

你说的曾经没有我的故事 提交于 2020-01-25 18:09:31
1.1.propety动态属性 在面向对象编程中,我们一般把名词性的东西映射成属性,动词性的东西映射成方法。在python中他们对应的分别是属性 self.xxx 和类方法。但有时我们需要的属性需要根据其他属性动态的计算,此时如果直接使用属性方法处理,会导致数据不同步。下面介绍 @property 方法来动态创建类属性。 from datetime import datetime,date class User: def __init__(self,name,birthday): self.name = name self.birthday = birthday self._age = 0 @property def age(self): return datetime.now().year - self.birthday.year @age.setter def age(self,value): self._age = value if __name__ == '__main__': user = User("derek",date(year=1994,month=11,day=11)) user.age = 23 print(user._age) # 23 print(user.age) # 24 ,动态计算出来的 1.2.__getattr__和__getattribute_

JavaSE学习总结第10天_面向对象5

人走茶凉 提交于 2020-01-25 09:33:01
10.01 运动员和教练案例分析 教练和运动员案例:运动员分乒乓球运动员和篮球运动员,教练分乒乓球教练和篮球教练。为了出国交流,跟乒乓球相关的人员都需要学习英语。 分析: 10.02 运动员和教练案例实现 1 //定义一个说英语的接口 2 interface SpeakEnglish 3 { 4 //说英语 5 public abstract void speak(); 6 } 7 8 //定义人的抽象类 9 abstract class Person 10 { 11 private String name; 12 private int age; 13 14 public Person() {} 15 16 public Person(String name,int age) 17 { 18 this.name = name; 19 this.age = age; 20 } 21 22 public String getName() 23 { 24 return name; 25 } 26 27 public void setName(String name) 28 { 29 this.name = name; 30 } 31 32 public int getAge() 33 { 34 return age; 35 } 36 37 public void setAge(int

Linux 平台多线程编程实例

落爺英雄遲暮 提交于 2020-01-25 09:28:53
转载请注明出去 http://blog.csdn.net/adong76/article/details/39828585 参考博客: http://www.cnblogs.com/armlinux/archive/2010/05/28/2396997.html http://blog.csdn.net/hitwengqi/article/details/8015646 http://www.vimer.cn/2009/11/linux%E4%B8%8B%E5%A4%9A%E7%BA%BF%E7%A8%8B%E7%9A%84%E5%88%9B%E5%BB%BA%E4%B8%8E%E7%AD%89%E5%BE%85%E8%AF%A6%E8%A7%A3.html http://www.cnblogs.com/skynet/archive/2010/10/30/1865267.html http://www.cnblogs.com/vamei/archive/2012/10/09/2715393.html 最近在优化一个图像处理算法,算法中要对于不同的图片做相同的图像处理算法,不同图片之间的处理数据时独立的,因而很自然的想到利用多线程优化算法。 下面是一些学习代码 一 Linux下面的多线编程需要包含明白以下几点: 1 pthread_t pthread_t在头文件/usr

Python 入门 16 —— 类的多态、 MRO列表、 super()函数

守給你的承諾、 提交于 2020-01-25 04:59:28
一、多态 当多个子类继承同一个父类时,在各个子类中都可以重载父类的成员。通过各自的重载,父类的某一成员在不同的子类中就会有不同的“表现”,这种现象就叫“多态”。例如: class b01 : x = 0 class cls01 ( b01 ) : x = 11 class cls02 ( b01 ) : x = 22 class cls03 ( b01 ) : x = 33 class cls04 ( b01 ) : x = 44 class cls05 ( b01 ) : x = 55 print ( cls01 . x , cls02 . x , cls03 . x , cls04 . x , cls05 . x ) # 11 22 33 44 55 以上例子中基类中定义的变量 x,当用不同的子类中,其值各不相同,这就是典型的“多态”现象。不过,以上例子展示的是最简单的多态形式。在实际的子类重载父类成员的过程上,通常都会引用父类的成员,即,父类已有的功能不再重复实现。 在派生类中引用基类成员可以有两种方法:一是用“基类名.成员名”的方法;二是用“super().成员名”的方法。用“基类名.成员名”的方法虽然简单明了,但潜在一个问题:当基类名发生改变时,子类就必须同时进行修改————逐一地在引用基类成员的地方将旧的基类名修改为新的基类名。而用“super().成员名

C#常用IO流及读写文件

眉间皱痕 提交于 2020-01-25 01:18:25
1.文件系统 (1)文件系统类的介绍 文件操作类大都在System.IO命名空间里。FileSystemInfo类是任何文件系统类的基类;FileInfo与File表示文件系统中的文件;DirectoryInfo与Directory表示文件系统中的文件夹;Path表示文件系统中的路径;DriveInfo提供对有关驱动器的信息的访问。注意,XXXInfo与XXX类的区别是:XXX是静态类,XXXInfo类可以实例化。 还有个较为特殊的类System.MarshalByRefObject允许在支持远程处理的应用程序中跨应用程序域边界访问对象。 (2)FileInfo与File类 class Program { static void Main(string[] args) { FileInfo file = new FileInfo(@"E:\学习笔记\C#平台\test.txt");//创建文件 Console.WriteLine("创建时间:" + file.CreationTime); Console.WriteLine("路径:" + file.DirectoryName); StreamWriter sw = file.AppendText();//打开追加流 sw.Write("李志伟");//追加数据 sw.Dispose();//释放资源,关闭文件 File.Move

mysql之数据初始化update操作

前提是你 提交于 2020-01-24 23:51:55
1.单表的:update user set name = (select name from user where id in (select id from user where name='小苏')); update goods set name = REPLACE(name ,' ','') ; //去空格 update goods set name = replace(name,'香蕉','苹果') ; //香蕉换苹果 update goods set name = price ; //将自己表中的数据赋值给另外一个属性 2..update sr_main_ww a set sys_tjzt = 4 where exists (select 1 from sr_main b where a.fk_pk_sr_main = b.pk_sr_main and b.sys_spzt = 1); exists 用法 3..新建表需要原表的数据(sr_main ,sr_detail ,护理人数计算) update sr_main a set a.main_xm_nam05 = ( select count(1) from sr_detail b where a.pk_sr_main = b.fk_sr_main and b.detail_bz_sad06 in ('1','2','3

java错题本

风格不统一 提交于 2020-01-24 23:01:09
1.判断题: Java程序一般应当含有main方法,因为它是所有JaVa程序执行的入口 (错) 解析:applet(java小程序)不用,application(java应用程序)需要。(见 java applet和java application的区别 ) 2.判断题: 当运行Java程序时, 类加载器 将字节码加载到内存中, 字节码检验器 确认所有的字节码是合法的并且不会破坏Java的安全限制,然后 解释器 读取这些字节码并将它们翻译成计算机可以理解的语言。在程序执行的时候还有可能需要在内存中存储一些必要的数据。 (对) 3.易错现象: 4.关于java中的堆区、栈区、方法区 参考: http://ydiandiandian.diandian.com/post/2012-06-18/40027997380 关于JVM,参考书《深入浅出JVM》,后面补张图,虽然对JVM还是不太了解,暂且先放放。 先了解具体的概念: JAVA的JVM的内存可分为3个区:堆(heap)、栈(stack)和方法区(method) (1)堆区: 1.存储的全部是对象,每个对象都包含一个与之对应的class的信息。(class的目的是得到操作指令) 2.jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身 (2)栈区: 1.每个线程包含一个栈区

线程本地存储及实现原理

末鹿安然 提交于 2020-01-24 21:10:54
本文是《go调度器源代码情景分析》系列 第一章 预备知识的第十小节,也是预备知识的最后一小节。 线程本地存储又叫线程局部存储,其英文为Thread Local Storage,简称TLS ,看似一个很高大上的东西,其实就是线程私有的全局变量而已。 有过多线程编程的读者一定知道,普通的全局变量在多线程中是共享的,一个线程对其进行了修改,所有线程都可以看到这个修改,而线程私有的全局变量与普通全局变量不同,线程私有全局变量是线程的私有财产,每个线程都有自己的一份副本,某个线程对其所做的修改只会修改到自己的副本,并不会修改到其它线程的副本。 下面用例子来说明一下多线程共享全局变量以及线程私有全局变量之间的差异,并对gcc的线程本地存储做一个简单的分析。 首先来看普通的全局变量 #include <stdio.h> #include <pthread.h> int g = 0; // 1,定义全局变量g并赋初值0 void* start(void* arg) {   printf("start, g[%p] : %d\n", &g, g); // 4,子线程中打印全局变量g的地址和值   g++; // 5,修改全局变量   return NULL; } int main(int argc, char* argv[]) {   pthread_t tid;   g = 100; // 2