Go语言之进阶篇文件传输】的更多相关文章

一.文件传输 1.文件传输原理 2.文件传输 示例: 发送方: send_file.go package main import ( "fmt" "io" "net" "os" ) //发送文件内容 func SendFile(path string, conn net.Conn) { //以只读方式打开文件 f, err := os.Open(path) if err != nil { fmt.Println("o…
一.文件常用操作接口介绍 1.创建文件 法1: 推荐用法 func Create(name string) (file *File, err Error) 根据提供的文件名创建新的文件,返回一个文件对象,默认权限是0666的文件,返回的文件对象是可读写的. 法2: func NewFile(fd uintptr, name string) *File 根据文件描述符创建相应的文件,返回一个文件对象 2.打开文件 法1: func Open(name string) (file *File, er…
原文  http://www.cnblogs.com/LipeiNet/p/4653830.html   前言:文件的输出我们并不陌生,但是今天我写的是用wcf模式进行文件传输,我觉得一大好处就是能进行服务器的监听.ok,现在来看看文件传输需要什么:第一需要传输的信息(文件名,流等)第二需要传输状态(是否传输成功,传输失败返回的信息)下面用图详细的表示下 第一步:先定义两个类 1 [MessageContract] 2 public class ResultMessage 3 { 4 [Mess…
1.go语音之进阶篇 示例: package main import "fmt" type Humaner interface { //子集 sayhi() } type Personer interface { //超集 Humaner //匿名字段,继承了sayhi() sing(lrc string) } type Student struct { name string id int } //Student实现了sayhi() func (tmp *Student) sayhi…
1.文件案例:拷贝文件 示例: package main import ( "fmt" "io" "os" ) func main() { list := os.Args //获取命令行参数 if len(list) != 3 { fmt.Println("usage: xxx srcFile dstFile") return } srcFileName = list[1] drcFileName = list[1] if s…
一.JSON处理 JSON (JavaScript Object Notation)是一种比XML更轻量级的数据交换格式,在易于人们阅读和编写的同时,也易于程序解析和生成.尽管JSON是JavaScript的一个子集,但JSON采用完全独立于编程语言的文本格式,且表现为键/值对集合的文本描述形式(类似一些编程语言中的字典结构),这使它成为较为理想的.跨平台.跨语言的数据交换语言. 开发者可以用 JSON 传输简单的字符串.数字.布尔值,也可以传输一个数组,或者一个更复杂的复合结构.在 Web 开…
上一篇的博客对于Linux如何在不同目录下跳转和查看目录下内容做出了总结,主要靠cd和ls,很常见也很实用.但是你看到目录下面那么多不同花花绿绿的文件,心里是不是痒痒,是不是想进去一探究竟,有办法! 先介绍一下比较常见的两个命令:cat 和 more. cat -n  (在打印的每一行文件内容前显示行号) cat命令用于查看文件内容,后面可以接文件名作为参数,接多个文件名同样可以,如下: cat  test   test2 它会将指向文件的内容一起打印在屏幕上,有时候可能会很大一片,如果文件有几…
1.windows安装redis 软件包下载地址: https://github.com/MicrosoftArchive/redis/releases 1.1.安装--->下一步--->到完成. 1.2.设置redis密码. C:\Program Files\Redis #编辑这个文件: redis.windows-service.conf 找到含有requirepass字样的地方,追加一行,输入requirepass 123456 备注 :做实验我们就不设置密码. 点击“开始”>右击…
1.爬捧腹网 网页规律: https://www.pengfu.com/xiaohua_1.html   下一页 +1 https://www.pengfu.com/xiaohua_2.html 主页面规律: <h1 class="dp-b"><a href="  一个段子url连接   “ 段子url: <h1>    标题  </h1>  只取1个 <div class="content-txt pt10"…
1.爬百度贴吧并发版 示例: package main import ( "fmt" "net/http" "os" "strconv" ) //爬取网页内容 func HttpGet(url string) (result string, err error) { resp, err1 := http.Get(url) if err1 != nil { err = err1 return } defer resp.Body.…
1.服务器如何知道用户需要什么资源 示例: package main import ( "fmt" "net" ) func main() { //监听 listener, err := net.Listen("tcp", ":8000") if err != nil { fmt.Println("Listen err = ", err) return } defer listener.Close() //…
一.Socket编程 1.什么是Socket Socket起源于Unix,而Unix基本哲学之一就是“一切皆文件”,都可以用“打开open –> 读写write/read –> 关闭close”模式来操作.Socket就是该模式的一个实现,网络的Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符.Socket也具有一个类似于打开文件的函数调用:Socket(),该函数返回一个整型的Socket描述符,随后的连接建立.数据传输等操作都是通过该Socket实现的. 常用的Soc…
一.select作用 Go里面提供了一个关键字select,通过select可以监听channel上的数据流动. select的用法与switch语言非常类似,由select开始一个新的选择块,每个选择条件由case语句来描述. 与switch语句可以选择任何可使用相等比较的条件相比, select有比较多的限制,其中最大的一条限制就是每个case语句里必须是一个IO操作,大致的结构如下: select { case <-chan1: // 如果chan1成功读到数据,则进行该case处理语句…
1.goroutine是什么 goroutine是Go并行设计的核心.goroutine说到底其实就是协程,但是它比线程更小,十几个goroutine可能体现在底层就是五六个线程,Go语言内部帮你实现了这些goroutine之间的内存共享.执行goroutine只需极少的栈内存(大概是4~5KB),当然会根据相应的数据伸缩.也正因为如此,可同时运行成千上万个并发任务.goroutine比thread更易用.更高效.更轻便. 2.创建goroutine协程 只需在函数调⽤语句前添加 go 关键字,…
1.并行和并发的概念 并行(parallel):指在同一时刻,有多条指令在多个处理器上同时执行. 并发(concurrency):指在同一时刻只能有一条指令执行,但多个进程指令被快速的轮换执行,使得在宏观上具有多个进程同时执行的效果,但在微观上并不是同时执行的,只是把时间分成若干段,使多个进程快速交替的执行. 2.并行和并发的区别 并发是两个队列交替使用一台咖啡机 并行是两个队列同时使用两台咖啡机 3.并发和并行原理图 图1 4.go语言并发优势 有人把Go比作21世纪的C语言,第一是因为Go语…
1.借助bufio实现按行读取内容 示例: package main import ( "bufio" "fmt" "io" "os" ) func WriteFile(path string) { //打开文件,新建文件 f, err := os.Create(path) if err != nil { fmt.Println("err = ", err) return } //使用完毕,需要关闭文件 d…
1.read的使用(备注:读文件) 示例: package main import ( "fmt" "io" "os" ) func WriteFile(path string) { f, err := os.Create(path) if err != nil { fmt.Println("err = ", err) return } //使用完毕,需要关闭文件 defer f.Close() var buf string…
1.WriteString的使用 示例: package main import ( "fmt" "os" ) func WriteFile(path string) { f, err := os.Create(path) if err != nil { fmt.Println("err = ", err) return } //使用完毕,需要关闭文件 defer f.Close() var buf string for i := 0; i &l…
正则表达式是一种进行模式匹配和文本操纵的复杂而又强大的工具.虽然正则表达式比纯粹的文本匹配效率低,但是它却更灵活.按照它的语法规则,随需构造出的匹配模式就能够从原始文本中筛选出几乎任何你想要得到的字符组合. Go语言通过regexp标准包为正则表达式提供了官方支持,如果你已经使用过其他编程语言提供的正则相关功能,那么你应该对Go语言版本的不会太陌生,但是它们之间也有一些小的差异,因为Go实现的是RE2标准,除了\C,详细的语法描述参考:http://code.google.com/p/re2/w…
1.面向对象编程 对于面向对象编程的支持Go 语言设计得非常简洁而优雅.因为, Go语言并没有沿袭传统面向对象编程中的诸多概念,比如继承(不支持继承,尽管匿名字段的内存布局和行为类似继承,但它并不是继承).虚函数.构造函数和析构函数.隐藏的this指针等. 尽管Go语言中没有封装.继承.多态这些概念,但同样通过别的方式实现这些特性: 封装:通过方法实现 继承:通过匿名字段实现 多态:通过接口实现 2.匿名组合和匿名字段初始化 示例: package main import "fmt"…
一.mysql操作基本语法 1.创建名称nulige的数据库 CREATE DATABASE nulige DEFAULT CHARSET utf8 COLLATE utf8_general_ci; use nulige 2.建表,Id自增 create table user_info( nid int not null auto_increment primary key, username varchar(20), departname varchar(20), create_time ti…
一.Go连接mysql 1.mysql驱动 地址:https://github.com/Go-SQL-Driver/MySQL 说明: sql.Open()函数用来打开一个注册过的数据库驱动,Go-MySQL-Driver中注册了 mysql这个数据库驱动,第二个参数是DNS,它是Go-MySQL-Driver定义的一些数据库链接和配置信息. 2.下载mysql驱动包方法 在LiteIDE中,选中"github.com/go-sql-driver/mysql" 这行代码,再点编译---…
1.http客户端编程 示例: http_server.go package main import ( "fmt" "net/http" ) //w, 给客户端回复数据 //r, 读取客户端发送的数据 func HandConn(w http.ResponseWriter, r *http.Request) { fmt.Println("r.Method = ", r.Method) fmt.Println("r.URL = &quo…
1.http服务器获取客户端的一些信息 示例: package main import ( "fmt" "net/http" ) //w, 给客户端回复数据 //r, 读取客户端发送的数据 func HandConn(w http.ResponseWriter, r *http.Request) { fmt.Println("r.Method = ", r.Method) fmt.Println("r.URL = ", r.U…
1.响应报文测试方法 示例: package main import ( "fmt" "net/http" ) //服务端编写的业务逻辑处理程序 func myHandler(w http.ResponseWriter, r *http.Request) { fmt.Fprintln(w, "hello world") } func main() { http.HandleFunc("/go", myHandler) //在指…
1. 请求报文格式分析 示例: package main import ( "fmt" "net" ) func main() { //监听 listener, err := net.Listen("tcp", ":8000") if err != nil { fmt.Println("Listen err = ", err) return } defer listener.Close() //阻塞等待用户…
1.并发聊天服务器原理分析 2.并发聊天室 功能: 广播消息.广播上线. 查询在线用户.修改用户名.用户主动退出.超时处理 示例: package main import ( "fmt" "net" "strings" "time" ) type Client struct { C chan string //用户发送数据的管道 Name string //用户名 Addr string //网络地址 } //保存在线用户 c…
1.获取文件属性 示例: get_file_attribute.go package main import ( "fmt" "os" ) func main() { list := os.Args if len(list) != 2 { fmt.Println("useage: xxx file") return } fileName := list[1] info, err := os.Stat(fileName) if err != nil…
1.简单版并发服务器 示例1: package main import ( "fmt" "net" "strings" ) //处理用户请求 func HandleConn(conn net.Conn) { //函数调用完毕,自动关闭conn defer conn.Close() //获取客户端的网络地址信息 addr := conn.RemoteAddr().String() fmt.Println(addr, " conncet s…
1.TCP相互通信 服务端示例: tcp_server.go package main import ( "fmt" "net" ) func main() { //监听 listener, err := net.Listen("tcp", "127.0.0.1:8000") if err != nil { fmt.Println("err = ", err) return } defer listener…