golang学习(用代码来学习)-第四篇

seancheer seancheer     2022-11-29     156

关键词:


/**
一个用来进行go routine的函数
 */
func print_something(msg string)
	for i:= 0;i < 5;i++
		time.Sleep(1 * time.Second)
		fmt.Println(msg)
	


/**
异步相加,并将结果放在通道中
 */
func add_async(a int, b int, ch *chan int)
	time.Sleep(2 * time.Second)
	sum := a+ b
	*ch <- sum


/**
sleep一会儿
 */
func sleep_sometime()
	fmt.Println("start sleeping.....")
	time.Sleep(2 * time.Second)
	fmt.Println("end sleeping.....")


/**
goroutine的学习
通过go来指定一个goroutime
*/
func goroutine_test() 
	print_start_seperator("goroutine_test")
	//启动一个go routine
	go print_something("hello")
	print_something("world")

	//执行一个异步加法
	var ch = make(chan int)
	go add_async(1,2,&ch)
	//从通道等待结果,如果不返回,就会一直阻塞着
	res := <- ch
	fmt.Printf("async add res:%d
", res)

	//通道也可以初始化缓冲区
	var ch2 = make(chan int, 2)
	ch2 <- 1
	ch2 <- 2
	fmt.Printf("ch2 first:%d
", <- ch2)
	fmt.Printf("ch2 second:%d
", <- ch2)

	var ch3 = make(chan int, 10)
	for i:= 0; i < 10;i++
		ch3 <- i
	
	close(ch3)

	//如果通道不关闭的话,那么range就会一直卡着,从这里的代码也可以看出来,close掉channel后数据并不会消失,只是会让range
	//这种迭代不会一直阻塞而等待新数据
	for item := range ch3
		fmt.Printf("%d	", item)
	
	fmt.Println("")

	//如果说我们不等待goroutine结束,那么当函数结束后,goroutine会直接被系统结束,不会在继续执行,这点和其他语言的线程不太一样 ,可以通过channel的方式
	//来完成同步
	go sleep_sometime()
	//为了确保我们的goroutine能执行到
	time.Sleep(10 * time.Millisecond)

	print_end_seperator()


func print_start_seperator(key_word string) 
	fmt.Printf("**********************************************%s***************************************************
", key_word)


func print_end_seperator() 
	fmt.Println("****************************************************************************************************")


r学习笔记第四篇:函数,分支和循环

变量用于临时存储数据,而函数用于操作数据,实现代码的重复使用。在R中,函数只是另一种数据类型的变量,可以被分配,操作,甚至把函数作为参数传递给其他函数。分支控制和循环控制,和通用编程语言的风格很相似,... 查看详情

pytorch学习笔记第四篇——神经网络(代码片段)

上一章已经了解了自动梯度Autograd,pytorch中可以使用torch.nn构建神经网络,nn依赖于autograd来定义模型并对其进行微分。nn.Module包含层,以及返回output的方法forward(input)。文章目录1.定义网络1.1自定义网络1.2使用自定义... 查看详情

21天学习挑战赛python学习第四篇:多线程threading模块(代码片段)

​【21天学习挑战赛】Python学习第四篇:多线程threading模块——活动地址:CSDN21天学习挑战赛——多线程的理解就是两件或两件以上的事情通过代码同时发生。而一般情况下我们写python代码的话是从上往下执行的,有... 查看详情

第四篇[机器学习]机器学习,线性回归的优化

当我们的数据存在多重共线性时,即其中的一个自变量可以用其他一个或几个自变量的线性表达式进行表示,你会发现,拟合之后的方差会特别大一般说来当解释变量的容忍度(TOLERANCE)小于0.10或者方差膨胀因子(VIF)大于10时,说... 查看详情

小白入门深度学习|第四篇:配置pytorch环境

查看详情

python学习第四篇用户输入及判断(代码片段)

用户输入:例1、写一个用户输入密码的小程序,流程如下:1.用户输入自己的用户名2.打印"Hello+用户名"1#!/usr/bin/envpython23#name=raw_input("Whatisyourname?")#onlyonpython2.x4name=input("Whatisyourname?")5print("Hello"+name) 例2、输入密码时,我们都... 查看详情

小白入门深度学习|第四篇:配置pytorch环境(代码片段)

文章目录简单的方法:快捷的方法检查是否安装成功简单的方法:进入【官网】,通过官方提供的方法进行安装。这个方法的好处是简单快捷的方法上面的方法属于pip在线安装,比较方便,但是安装速度会慢... 查看详情

#java学习之路——基础阶段二(第四篇)

我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容。前言:此随笔主要是J... 查看详情

小白学习windows第四篇

一、用户帐户管理1、用户帐户不同的用户身份拥有不同的权限每个用户包含一个名称和一个密码用户帐户拥有唯一的安全标识符(SID)2、用户管理创建用户、为用户重置密码、重命名用户、启用、禁用用户帐户删除用户帐户(... 查看详情

git教程学习--第四篇分支管理

1.创建与合并分支查看分支:gitbranch创建分支:gitbranch<name>切换分支:gitcheckout<name>创建+切换分支:gitcheckout-b<name>合并某分支到当前分支:gitmerge<name>删除分支:gitbranch-d<name>2.解决冲突1.准备新的分支feature... 查看详情

深入学习jquery选择器系列第四篇——过滤选择器之属性选择器

×目录[1]简单属性[2]具体属性[3]条件属性前面的话  属性过滤选择器的过滤规则是通过元素的属性来获取相应的元素,对应于CSS中的属性选择器。属性过滤选择器可分为简单属性选择器、具体属性选择器和条件属性选择器... 查看详情

初步学习django-第四篇:views.py文件详解

http请求中产生的两个核心对象:http请求:HttpRequesthttp响应:HttpResponse所在位置:fromdjango.httpimportHttpRequest,HttpResponse1、HttpRequest:HttpRequest对象的属性:Attribute        Description      path      请求页面的全... 查看详情

算法学习第四篇:栈和队列

栈栈(stack),有些地方称为堆栈,是一种容器,可存入数据元素、访问元素、删除元素,它的特点在于只能允许在容器的一端(称为栈顶端指标,英语:top)进行加入数据(英语:push)和输出数据(英语:pop)的运算。没有了位置... 查看详情

spacesyntax空间句法之depthmapx学习:第四篇凸多边形图分析[未完]

这一篇正式讲解分析类型中的第一个,凸多边形分析,流程图参照上一篇的。博客园/B站/知乎/CSDN@秋意正寒(我觉得这一篇肯定很多盗图的,那么我在版头加个本篇地址吧) https://www.cnblogs.com/onsummer/p/10793858.html目录:https://w... 查看详情

eclipse插件开发学习笔记pdf第一篇到第四篇免分下载开发基础核心技术高级进阶综合实例

<<Eclipse插件开发 学习笔记>>,本书由浅入深、有重点、有针对性地介绍了Eclipse插件开发技术,全书分为4篇共24章。第一篇介绍Eclipse平台界面开发的基础知识。包含SWT控件的使用、界面布局、事件处理等内容;第二... 查看详情

java学习第四篇--java环境java_home和classpath的理解

1.JAVA_HOME  环境变量JDK的目录用于定位JDK的bin目录 有利于版本的变更     eg: 在Path的值后加上;%JAVA_HOME%in              创 查看详情

第四篇:断路器(hystrix)(代码片段)

一、断路器简介。在微服务架构中,根据业务来拆分成一个个的服务,服务与服务之间可以相互调用(RPC),在SpringCloud可以用RestTemplate+Ribbon和Feign来调用。为了保证其高可用,单个服务通常会集群部署。由于网络原因或者自身... 查看详情

设计模式第四篇-工厂模式(代码片段)

...,不断的总结才能将知识消化成自己的。现在开始今天的学习。工厂模式是设计模式中很重要的一个模式,其中有简单工厂模式(并不能算一个模式),工厂模式,抽象工厂模式。工厂模式,从名字可以看出,这是一个创建型的... 查看详情