goroutinepackage main import "fmt" import "time" func printn(id int){ for i := 0;i<10;i++ { fmt.Println(id,":",i) } } func main(){ for&nbs
原创 2017-03-06 17:14:39
1016阅读
golang 管道
原创 2022-11-22 11:35:01
103阅读
前言select 是操作系统中的系统调用,我们经常会使用 select、poll epoll 等函数构建 I/O 多路复用模型提升程序的性能。Go 语言的 select 与操作系统中的 select 比较相似,但也有不同点,它只支持channel收发的多路复用。这里已go1.19版本为例,编译器在中间代码生成期间会根据 select 中 case 的不同对控制语句进行优化,这一过程都发生在 c
转载 2024-05-15 08:58:54
88阅读
384 收藏 13 2017-05-18 链接:blog.sodroid. 转载请注明本文地址,
转载 2019-07-27 00:12:00
81阅读
2评论
chan管道是多个goroutine进行通信的一种方式,跟linux中管道一样,linux中进程之间的通讯使用管道,管道遵循"先进后出"原则1. channel的使用场景消息传递、消息过滤信号广播消息传递、消息过滤事件订阅与广播请求、响应转发任务分发结果汇总并发控制同步与异步2. channel存在3种状态nil,未初始化的状态,只进行了声明,或者手动赋值为nilactive,正常的channel
转载 2024-06-05 07:30:21
39阅读
并发并行并发:逻辑上具有处理多个任务的能力。一般并发的数量要小于CPU的数量,这些并发的任务通过间隔执行的方式来执行,这里一般是在单核CPU上面。并行:物理上具备处理多个任务的能力。物理CPU的核数并行的任务数相同,是并发的理想目标,理论上同一时刻内一个CPU执行一个任务。 计算机是如何实现并发的?计算机的分时调用是并发的根本,CPU通过快速的切换作业来执行不同的作业,基本的调度单位在执行的时
原创 精选 2021-12-01 17:43:27
1665阅读
1点赞
【代码】Kotlin select 多路复用 by Channel
原创 2023-03-15 09:56:07
75阅读
语句,我们可以同时等待多个通道的操作,并根据不同的操作结果执行相应的逻辑,实现了多路发送接收通道的处理。然后,我们启动了两个goroutine,每个goroutine在不同的时间段向通道发送数据。通道的数据,并打印"Received from ch1"。通道的数据,并打印"Received from ch2"。如果在4秒内没有任何通道的发
原创 2023-11-14 17:35:16
175阅读
goroutine:Go语言是原生支持语言级并发的,这个并发的最小逻辑单元就是goroutine
转载 2022-09-18 09:08:16
76阅读
goroutine 我们现在有一个需求需求:要求统计 1-9000000000 的数字中,哪些是素数? 分析思路: 1、传统的方法,就是使用一个循环,循环的判断各个数是不是素数。[很慢] 2、使用并发或者并行的方式,将统计素数的任务分配给多个 goroutine 去完成,这时就会使用到gorouti ...
转载 2021-08-03 14:31:55
349阅读
2评论
JSch笔记第 1 章 JSch简介1.1 简述1)jsch是ssh2的一个纯Java实现。它允许你连接到一个sshd服务器,使用端口转发、X11转发、文件传输等。2)SSH 是较可靠,专为远程登录会话其他网络服务提供安全性的协议。3)ftp协议通常是用来在两个服务器之间传输文件的,但是它本质上是不安全的。4)SFTP可以理解为SSH + FTP,也就是安全的网络文件传输协议。1.2 实现原理J
goroutine 我们现在有一个需求需求:要求统计 1-9000000000 的数字中,哪些是素数? 分析思路: 1、传统的方法,就是使用一个循环,循环的判断各个数是不是素数。[很慢] 2、使用并发或者并行的方式,将统计素数的任务分配给多个 goroutine 去完成,这时就会使用到gorouti ...
转载 2021-04-09 07:47:00
170阅读
2评论
一、goroutine 1、并发并行: 多线程程序在单核上运行就是并发。 多线程程序在多核上运行就是并行。 2、Go协程Go主线程 Go主线程(有人直接称为线程/也可以理解成进程):一个Go线程上,可以起多个协程,协程是轻量级的线程[编译器做优化]。 Go协程的特点:有独立的栈空间;共享程序堆空
转载 2019-04-09 20:26:00
145阅读
2评论
感觉channel在理解起来还有点费劲的, 尤其是select的使用, 既要可以读数据, 又要可以写数据. 复习一下都学了哪些?然后在重点查一下select的资料 一. channel的定义. channel的读数据--两种方式 package main import ( "fmt" "time"
原创 2022-07-21 20:20:15
118阅读
go channel select如何屏蔽已关闭通道(如果不屏蔽的话,select 一直会处于选择状态) func main() { channel := make(chan int ,20) selectChannel(channel) getChannel(channel) time.Sleep
转载 2020-04-02 18:29:00
512阅读
2评论
GoLang之协程 目前,WebServer几种主流的并发模型:多线程,每个线程一次处理一个请求,在当前请求处理完成之前不会接收其它请求;但在高并发环境下,多线程的开销比较大;基于回调的异步IO,如Nginx服务器使用的epoll模型,这种模式通过事件驱动的方式使用异步IO,使服务器持续运转,但人的思维模式是串行的,大量回调函数会把流程分割,对于问题本身的反应不够自然;协程
转载 2023-08-25 10:04:21
305阅读
我们经常会遇到需要表复制的情况,如将一个table1的数据的部分字段复制到table2中,或者将整个table1复制到table2中,这时候我们就要使用SELECT INTO INSERT INTO SELECT 表复制语句了。1、INSERT INTO SELECT语句语句形式为:Insert into Table2(field1,field2,…) select value1,value2
原创 2013-08-21 17:03:28
915阅读
做数据库开发的过程中难免会遇到有表数据备份的,而SELECT INTO……INSERT INTO SELECT…… 这两种语句就是用来进行表数据复制,下面简单的介绍下: 1、INSERT INTO SELECT 语句格式:Insert Into Table2(column1,column2……)
转载 2016-06-29 18:00:00
319阅读
2评论
select *select 全部字段 在查询上效果是一样的,速度也是一样的。 不过理论上来说select *反而会快点。 因为 1.select 全部字段在数据传输上消耗会更多,如果几百个字段这个速度还真不一定能忽略。 2.数据库查询会在执行前分析查询字段,如果是select *那么就不需要这步了(其实select *会转化成select 全部字段)。 注:对于做ORM结构的话,通用代码实例化
转载 2015-11-25 11:53:00
218阅读
2评论
a: Insert into Table2 values('AAA','90') b: INSERT Table2 select Table1.a,Table1.b from Table1C: Insert into Table2(field1,field2,...) select value1,value2,... from Table1d: SELECT vale1, value2 into
转载 2013-06-13 13:46:00
213阅读
2评论
  • 1
  • 2
  • 3
  • 4
  • 5