Golang --- package

strings

import "strings"

strings包实现了用于操作字符的简单函数。

strings.Index("suoning", "n")        //3(子串第一次出现的位置,不存在则返回-1)
strings.LastIndex("suoning", "n")    //5(子串最后一次出现的位置,不存在则返回-1)strings.Replace("suoning", "ning", "nick", -1) //suonick(替换,n为替换次数,<0替换所有子串)
strings.HasPrefix("suoning", "suo")            //true(判断s是否有前缀字符串prefix)
strings.HasSuffix("suoning", "ning")           //true(判断s是否有后缀字符串suffix)
strings.Contains("suoning", "suoni")           //true(判断字符串s是否包含子串substr)strings.Count("nnnnnn", "n")         //6(字符串中有几个不重复的子串)
strings.Repeat("n", 6)               //nnnnnn(返回count个s串联的字符串)strings.ToLower("SuoNing")           //suoning(将所有字母都转为对应的小写版本的拷贝)
strings.ToUpper("suoning")           //SUONING(将所有字母都转为对应的大写版本的拷贝)strings.TrimSpace("  \nsuoning\n  ") //suoning(去掉前后端所有空白)
strings.Trim("!!suoning!!", "!")     //suoning(将s前后端所有cutset包含的utf-8码值都去掉的字符串)
strings.TrimLeft("!suoning!", "!")   //suoning!(将s前端所有cutset包含的utf-8码值都去掉的字符串)
strings.TrimRight("!suoning!", "!")  //!suoning(将s后端所有cutset包含的utf-8码值都去掉的字符串)strings.Fields(" suo ning ")                   //[suo ning](按照空白分割的多个字符串)
strings.Split(",suo,ning,", ",")               //[ suo ning ](去掉s中出现的sep的方式进行分割)
strings.Join([]string{"suo", "ning"}, " ")     //suo ning(用sep来拼接为一个字符串)

 

bytes

import "bytes"

bytes包实现了操作[]byte的常用函数。本包的函数和strings包的函数相当类似。

s1 := []byte("索宁")
s2 := []byte("索")
fmt.Println(bytes.Equal(s1, s2)) //false(切片的内容是否完全相同)//Runes函数返回和s等价的[]rune切片。(将utf-8编码的unicode码值分别写入单个rune)
r1 := bytes.Runes(s1)
r2 := bytes.Runes(s2)
fmt.Println(r1)             //[32034 23425]
fmt.Println(r2)             //[32034]
fmt.Println(r1[0] == r2[0]) //true(可以判断中文)

 

strconv

import "strconv"

strconv包实现了基本数据类型和其字符串表示的相互转换。

//返回字符串表示的整数值
fmt.Println(strconv.ParseInt("-999", 0, 0)) //-999 <nil>
fmt.Println(strconv.ParseUint("999", 0, 0)) //999 <nil>
fmt.Println(strconv.Atoi("999"))            //999 <nil>
//base指定进制(2到36),如果base为0,则会从字符串前置判断,"0x"是16进制,"0"是8进制,否则是10进制;
//bitSize指定结果必须能无溢出赋值的整数类型,0、8、16、32、64 分别代表 int、int8、int16、int32、int64;//返回i的base进制的字符串表示
fmt.Println(strconv.FormatInt(-520, 10)) //-520
fmt.Println(strconv.FormatUint(520, 10)) //520
fmt.Println(strconv.Itoa(520))           //520
//base 必须在2到36之间,结果中会使用小写字母'a'到'z'表示大于10的数字。//返回字符串表示的bool值
fmt.Println(strconv.ParseBool("false"))         //false <nil>
fmt.Println(strconv.FormatBool(true))           //true
fmt.Println(strconv.AppendBool([]byte{}, true)) //[116 114 117 101]
//它接受1、0、t、f、T、F、true、false、True、False、TRUE、FALSE;否则返回错误。//返回字符串表示的bool值
fmt.Println(strconv.ParseFloat("520.1314", 10))        //520.1314 <nil>
fmt.Println(strconv.FormatFloat(520.1314, 'f', 6, 32)) //520.131409
//fmt表示格式:'f'(-ddd.dddd)、'b'(-ddddp±ddd,指数为二进制)、'e'(-d.dddde±dd,十进制指数)、'E'(-d.ddddE±dd,十进制指数)、'g'(指数很大时用'e'格式,否则'f'格式)、'G'(指数很大时用'E'格式,否则'f'格式)。
//prec控制精度(排除指数部分):对'f'、'e'、'E',它表示小数点后的数字个数;对'g'、'G',它控制总的数字个数。如果prec 为-1,则代表使用最少数量的、但又必需的数字来表示f。
//bitSize表示f的来源类型(32:float32、64:float64),会据此进行舍入。

  

time

import "time"

time包提供了时间的显示和测量用的函数。日历的计算采用的是公历。

fmt.Println(time.Now())        //2017-08-03 22:35:36.45766459 +0800 CST
fmt.Println(time.Now().Unix()) //时间戳1501771053
fmt.Println(time.Sunday)       //Sunday
fmt.Println(time.Stamp)        //Jan _2 15:04:05
fmt.Println(time.Date(2008, time.November, 11, 23, 0, 0, 0, time.UTC))
//2008-11-11 23:00:00 +0000 UTC//格式化输出
now := time.Now()
fmt.Println(now.Format("02/1/2006 15:04:05")) //03/8/2017 22:37:58
fmt.Println(now.Format("2006/02/1 15:04"))    //2017/03/8 22:37
fmt.Println(now.Format("2006-1-02 15:04:05")) //2017-8-03 22:37:58m, _ := time.ParseDuration("-10m") //10分钟前
fmt.Println(now.Add(m))            //2017-08-03 22:34:55.810202385 +0800 CST
d, _ := time.ParseDuration("-24h") //1天前
fmt.Println(now.Add(d))            //2017-08-02 22:46:28.742383801 +0800 CST
hh, _ := time.ParseDuration("1h")  //1小时后
fmt.Println(now.Add(hh))           //2017-08-03 23:47:21.458974014 +0800 CSTtime.Sleep(time.Second) //睡一秒
//定时器
t := time.NewTicker(time.Second)
for v := range t.C { //每一秒执行一次, 这是个死循环fmt.Println(v) //2017-08-03 22:53:13.849203492 +0800 CST
}
t.Stop()

 

// 获取到明天凌晨秒数
t := time.Now()t2 := time.Date(t.Year(), t.Month(), t.Day(), 0, 0, 0, 0, t.Location()).AddDate(0, 0, 1)fmt.Println(time.Second*time.Duration(t2.Unix()-t.Unix()))

 

 

math/rand

import "math/rand"

rand包实现了伪随机数生成器。

随机数从资源生成。包水平的函数都使用的默认的公共资源。该资源会在程序每次运行时都产生确定的序列。如果需要每次运行产生不同的序列,应使用Seed函数进行初始化。默认资源可以安全的用于多go程并发。

func init() {rand.Seed(time.Now().UnixNano()) //使用给定的seed来初始化生成器到一个确定的状态。
}func main() {fmt.Println(rand.Int())     //9153536921449289609(返回一个非负的伪随机int值)fmt.Println(rand.Int31())   //2037735069(返回一个int32类型的非负的31位伪随机数)fmt.Println(rand.Int63())   //1132646811815532030(返回一个int64类型的非负的63位伪随机数)fmt.Println(rand.Intn(100)) //95(取值范围在[0,n)的伪随机int值,n<=0会panic)fmt.Println(rand.Float32()) //0.09178123(取值范围在[0.0, 1.0)的伪随机float32值)fmt.Println(rand.Perm(5))   //[0 4 1 2 3](有n个元素的,[0,n)范围内整数的伪随机排列的切片)
}

 

os

import "os"

os包提供了操作系统函数的不依赖平台的接口。设计为Unix风格的,虽然错误处理是go风格的;失败的调用会返回错误值而非错误码。通常错误值里包含更多信息。

fmt.Println(os.Hostname())             //bogon <nil>(返回内核提供的主机名)
fmt.Println(os.Getpagesize())          //4096(返回底层的系统内存页的尺寸)
fmt.Println(os.Environ())              //(环境变量的格式为"key=value"的字符串的切片拷贝)
fmt.Println(os.Getenv("GOPATH"))       //(名为key的环境变量的值,不存在返回空)
fmt.Println(os.Setenv("Name", "Nick")) //(设置名为key的环境变量)
os.Clearenv()    //(删除所有环境变量)
os.Exit(0)       //(以给出的状态码code退出,程序会立刻终止,defer的函数不会被执行)fmt.Println(os.Getuid())    //501(调用者的用户ID)
fmt.Println(os.Geteuid())   //501(调用者的有效用户ID)
fmt.Println(os.Getgid())    //20(调用者的组ID)
fmt.Println(os.Getegid())   //20(调用者的有效组ID)
fmt.Println(os.Getgroups()) //[20 701 12 61 79 80 81 ...](调用者所属的所有用户组的组ID)
fmt.Println(os.Getpid())    //62027(调用者所在进程的进程ID)
fmt.Println(os.Getppid())   //62020(调用者所在进程的父进程的进程ID)fmt.Println(os.Getwd())                      //返回一个对应当前工作目录的根路径
os.Chdir("/tmp/")                            //将当前工作目录修改为dir指定的目录
os.Mkdir("/tmp/test", 0666)                  //用指定的权限和名称创建一个目录
os.MkdirAll("/tmp/test1/test2/test3", 0666)  //使用指定的权限和名称创建一个目录,递归上级目录
os.Rename("/tmp/test", "/tmp/test1/testNew") //修改一个文件的名字,移动一个文件
os.Remove("/tmp/test1/test2/test3")          //删除name指定的文件或目录
os.RemoveAll("/tmp/test1/")                  //删除path指定的文件os.Create("/tmp/test")      //0666,创建文件,存在会清空
os.Open("/tmp/test")        //O_RDONLY,打开一个文件
os.OpenFile("/tmp/test", os.O_CREATE|os.O_WRONLY, 0666)Args保管了命令行参数,第一个是程序名。

 

fmt

import "fmt"

mt包实现了类似C语言printf和scanf的格式化I/O。格式化动作('verb')源自C语言但更简单。

通用:

%v    值的默认格式表示
%+v    类似%v,但输出结构体时会添加字段名
%#v    值的Go语法表示
%T    值的类型的Go语法表示
%%    百分号

布尔值:

%t    单词true或false

整数:

%b    表示为二进制
%c    该值对应的unicode码值
%d    表示为十进制
%o    表示为八进制
%q    该值对应的单引号括起来的go语法字符字面值,必要时会采用安全的转义表示
%x    表示为十六进制,使用a-f
%X    表示为十六进制,使用A-F
%U    表示为Unicode格式:U+1234,等价于"U+%04X"

浮点数与复数的两个组分:

%b    无小数部分、二进制指数的科学计数法,如-123456p-78;参见strconv.FormatFloat
%e    科学计数法,如-1234.456e+78
%E    科学计数法,如-1234.456E+78
%f    有小数部分但无指数部分,如123.456
%F    等价于%f
%g    根据实际情况采用%e或%f格式(以获得更简洁、准确的输出)
%G    根据实际情况采用%E或%F格式(以获得更简洁、准确的输出)
%f:    默认宽度,默认精度
%9f    宽度9,默认精度
%.2f   默认宽度,精度2
%9.2f  宽度9,精度2
%9.f   宽度9,精度0 

字符串和[]byte:

%s    直接输出字符串或者[]byte
%q    该值对应的双引号括起来的go语法字符串字面值,必要时会采用安全的转义表示
%x    每个字节用两字符十六进制数表示(使用a-f)
%X    每个字节用两字符十六进制数表示(使用A-F)

指针:

%p    表示为十六进制,并加上前导的0x   

 

    //前置补0fmt.Printf("%03d", 22)fmt.Println("")fmt.Printf("%0*d", 3, 2)

 

 

errors

import "errors"

errors包实现了创建错误值的函数。

使用字符串创建一个错误,请类比fmt包的Errorf方法,差不多可以认为是New(fmt.Sprintf(...))。

err := errors.New("emit macho dwarf: elf header corrupted")
if err != nil {fmt.Print(err)    //emit macho dwarf: elf header corrupted
}
const name, id = "bimmler", 17
err := fmt.Errorf("user %q (id %d) not found", name, id)
if err != nil {fmt.Print(err)    //user "bimmler" (id 17) not found
}

 

json

import "encoding/json"

json包实现了json对象的编解码。Marshal、Unmarshal函数。

 

Marshal函数返回v的json编码:

type ColorGroup struct {ID     intName   stringColors []string
}
group := ColorGroup{ID:     1,Name:   "Reds",Colors: []string{"Crimson", "Red", "Ruby", "Maroon"},
}
b, err := json.Marshal(group)
if err != nil {fmt.Println("error:", err)
}
os.Stdout.Write(b)
//{"ID":1,"Name":"Reds","Colors":["Crimson","Red","Ruby","Maroon"]}

 

Unmarshal函数解析json编码的数据并将结果存入v指向的值:

var jsonBlob = []byte(`[{"Name": "Platypus", "Order": "Monotremata"},{"Name": "Quoll",    "Order": "Dasyuromorphia"}]`)
type Animal struct {Name  stringOrder string
}
var animals []Animal
err := json.Unmarshal(jsonBlob, &animals)
if err != nil {fmt.Println("error:", err)
}
fmt.Printf("%+v", animals)
//[{Name:Platypus Order:Monotremata} {Name:Quoll Order:Dasyuromorphia}]

 

package mainimport ("encoding/json""fmt"
)type User struct {Name string `json:"userName"`Age  int
}func main() {u1 := &User{Name: "nick", Age: 18}u1Str, err := json.Marshal(u1)fmt.Println(err)fmt.Println(u1Str)var u Usererr = json.Unmarshal([]byte(u1Str), &u)fmt.Println(err)fmt.Println(u)}

 

struct tag 使用: 

// 字段被本包忽略
Field int `json:"-"`
// 字段在json里的键为"myName"
Field int `json:"myName"`
// 字段在json里的键为"myName"且如果字段为空值将在对象中省略掉
Field int `json:"myName,omitempty"`
// 字段在json里的键为"Field"(默认值),但如果字段为空值会跳过;注意前导的逗号
Field int `json:",omitempty"`

 

time时间处理

type TimeBirthday time.Timefunc (obj TimeBirthday) MarshalJSON() ([]byte, error) {seconds := time.Time(obj).Format("2006-01-02")return []byte(fmt.Sprintf(`"%s"`, seconds)), nil
}type Account struct {Birthday     TimeBirthday `json:"birthday"`LastLoginTime  time.Time `json:"-"`
}

 

reflect

 

 

flag

import "flag"

flag包实现了命令行参数的解析。

func main() {var confPath stringvar port intvar b boolflag.StringVar(&confPath, "conf", "", "input config path.")flag.IntVar(&port, "p", 8000, "input port.")flag.BoolVar(&b, "b", false, "input bool.")flag.Parse()    //注册fmt.Println("config path: ", confPath)fmt.Println("port: ", port)fmt.Println("bool: ", b)
}
$ go build -o bin/test go_dev/args/main
$ bin/test -conf "/tmp/config" -p 9006 -b true
config path:  /tmp/config
port:  9006
bool:  true

 

context

 一、传递全局变量

func process(ctx context.Context)  {ret, ok := ctx.Value("trace_id").(int)if !ok {ret = 123456}fmt.Println(ret)    //111111s, _ := ctx.Value("name").(string)fmt.Println(s)    //suoning
}func main()  {ctx := context.WithValue(context.Background(), "name", "suoning")ctx = context.WithValue(ctx, "trace_id", 111111)process(ctx)
}
func add(ctx context.Context, a, b int) int {traceId := ctx.Value("trace_id").(string)fmt.Printf("trace_id:%v\n", traceId)return a + b
}func calc(ctx context.Context, a, b int) int {traceId := ctx.Value("trace_id").(string)fmt.Printf("trace_id:%v\n", traceId)return add(ctx, a, b)
}func main() {ctx := context.WithValue(context.Background(), "trace_id", "123456")s := calc(ctx, 500, 20)fmt.Println(s)
}

 

二、Goroutine Timeout

package mainimport ("net/http""context""time""fmt""io/ioutil"
)type Result struct {r   *http.Responseerr error
}func process() {ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)defer cancel()tr := &http.Transport{}client := &http.Client{Transport: tr}c := make(chan Result, 1)req, err := http.NewRequest("GET", "http://www.google.com", nil)if err != nil {fmt.Println("http NewRequest failed, err:", err)return}go func() {resp, err := client.Do(req)pack := Result{r: resp, err: err}c <- pack}()select {case <-ctx.Done():tr.CancelRequest(req)res := <-cfmt.Println("Timeout, err:", res.err)case res := <-c:defer res.r.Body.Close()out, _ := ioutil.ReadAll(res.r.Body)fmt.Printf("Server Response: %s", out)}return
}func main() {process()
}

 

sync

等待一组Goroutine返回

package mainimport ("sync""fmt""time"
)func calc(w *sync.WaitGroup, i int)  {fmt.Println("calc: ", i)time.Sleep(time.Second)w.Done()
}func main()  {wg := sync.WaitGroup{}for i:=0; i<10; i++ {wg.Add(1)go calc(&wg, i)}wg.Wait()fmt.Println("all goroutine finish")
}

 

net/url

    redirect := "http://cm-wzry.cmcm.com/spread/jump?uri=http%3a%2f%2fa.app.qq.com%2fo%2fsimple.jsp%3fpkgname%3dcom.cmcm.gamemaster%26f%3d6"// 编码encodeurl := url.QueryEscape(redirect)fmt.Println(encodeurl)// 解码decodeurl, err := url.QueryUnescape(encodeurl)if err != nil {panic(err)}fmt.Println(decodeurl)

 

 

regexp

 // 检测中文字符

package mainimport ("fmt""regexp"
)func main() {str := "Nick要脱单"var hzRegexp = regexp.MustCompile("^[\u4e00-\u9fa5]$")fmt.Println(hzRegexp.MatchString(str))
}

 

 // 中文截取

string([]rune(Text)[:Max])

 

 

 

转载于:https://www.cnblogs.com/saryli/p/11136234.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/482959.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

操作系统学习笔记-02-操作系统的特征

操作系统学习笔记-2019 王道考研 操作系统-2-操作系统的特征 文章目录02-操作系统四个的特征2.1-知识概览2.2并发2.3共享2.3并发和共享的关系2.4虚拟2.5小结&#xff1a;虚拟技术2.6-异步2.7知识回顾02-操作系统四个的特征 2.1-知识概览 2.2并发 并发:指两个或多个事件在同-一…

java 合并流(SequenceInputStream)

需要两个源文件&#xff0c;还有输出的目标文件 SequenceInputStream&#xff1a; 将两个文件的内容合并成一个文件 该类提供的方法&#xff1a; SequenceInputStream(InputStream s1, InputStream s2) &#xff1a;根据两个字节输入流对象来创建合并流对象。 备注&#xff1a;…

从宇宙、互联网和脑的关系看元宇宙的终极形态

作者 刘锋 曾经在2012年写过一篇论文《THE EVOLUTION ROAD MAP FROM THE ORIGIN OF LIFE TO THE INTELLIGENT UNIVERSE》&#xff0c;探讨了关于宇宙、互联网和脑之间的内在联系&#xff0c;阐述面本世纪以来&#xff0c;互联网为核心的科技生态出现越来越多的类脑特征&#xf…

操作系统学习笔记-03-操作系统的发展和分类

操作系统学习笔记-2019 王道考研 操作系统-01-操作系统的概念&#xff08;定义&#xff09;&#xff0c;功能和目标 文章目录3-操作系统的发展和分类3.1知识总览3.2 手工操作&#xff0c;纸带机&#xff0c;串行式3.3批处理阶段-单道批处理系统-多道批处理系统3.4分时操作系统3…

马斯克炮轰元宇宙与Web3.0:“我不觉得有人会成天把屏幕绑在脑袋上”

来源&#xff1a;雷峰网元宇宙和 Web3.0据称将是彻底改变数字世界的两种趋势。但现实世界中的首富、硅谷钢铁侠埃隆马斯克对两者似乎都并不怎么看好。在最近的一次采访中&#xff0c;马斯克表示&#xff0c;他在市场上并没有看到任何值得注意的元宇宙VR应用&#xff0c;并表示他…

w'w

<!-- content 解决鼠标经过/触发图片切换 content: url(talkIcon_4.png); font-size: 0; 解决空白间隙 writing-mode: vertical-lr;设置文字竖向排列&#xff0c;若在表格中的需设置高度 居中&#xff1a;适合水平居中 position:absolute/fixed; left:0px; right:0px; margi…

操作系统学习笔记-04-操作系统的运行机制和体系结构

操作系统学习笔记-2019 王道考研 操作系统-04-操作系统的运行机制和体系结构 文章目录4-操作系统的运行机制和体系结构4.1知识总览4.2运行机制4.2.1预备知识&#xff1a;什么是指令&#xff1f;4.2.2两种指令&#xff0c;两种处理器状态&#xff0c;两种程序4.2.3运行机制小结4…

因果推断——现代统计的思想飞跃

来源&#xff1a;数学文化”公众号编辑&#xff1a;李达审核&#xff1a;范杰、李祺垣1 引言探求事物的原因&#xff0c;是人类永恒的精神活动之一。从古希腊的哲学到中国先秦的诗歌&#xff0c;都充满了对原因的追问和对因果关系的思考。比如&#xff0c;亚里士多德就在《物理…

竖线分割|

<a href"" class"link">登录</a><a href"" class"link">注册</a><a href"" class"link">注册</a><a href"" class"link">注册</a> aa:b…

操作系统学习笔记-05-中断和异常

操作系统学习笔记-2019 王道考研 操作系统-05-中断和异常 文章目录5-中断和异常5.1知识概览5.2 中断机制的诞生5.3中断概念和作用5.4中断的分类5.5 外中断的处理过程5.6思维导图5-中断和异常 5.1知识概览 5.2 中断机制的诞生 之前说的多道批处理系统&#xff0c;cpu给每个进程…

量化集体行为特刊:信息论为量化集体性提供形式化框架

来源&#xff1a;Theory in Biosciences译者&#xff1a;郭瑞东 审校&#xff1a;张澳 编辑&#xff1a;邓一雪 导语集体行为作为复杂系统的典型特征&#xff0c;存在大量有关同步、自组织的定量研究。然而&#xff0c;多数研究仅止步于以单一的视角或方法孤立量化集体性的某一…

abp radio表单元素 消失了

框架将原本的元素都隐藏掉了&#xff0c;取而代之的是根据label定义了自己的样式&#xff0c;如下&#xff1a; [type"radio"]:not(:checked)label { padding-left: 26px; height: 25px; line-height: 25px; font-size: 13px; font-weight: normal;}[…

操作系统学习笔记-06-系统调用

操作系统学习笔记-2019 王道考研 操作系统-06-系统调用 文章目录6-系统调用6.1 知识概览6.2什么是系统调用&#xff1f;有什么作用&#xff1f;6.3系统调用与库函数的区别6.4系统调用背后的过程6.5思维导图6-系统调用 6.1 知识概览 6.2什么是系统调用&#xff1f;有什么作用&a…

《Engineering》评选2021年全球十大工程成就

来源&#xff1a;中国工程院院刊“2021全球十大工程成就”发布工程是现实的、直接的生产力&#xff0c;是人类改变世界的重要活动。古往今来&#xff0c;人类创造了众多令人惊叹的工程成就&#xff0c;持续带动着经济发展和社会的深刻变革&#xff0c;推动人类文明迈上更高的台…

【Qt Tips】QLineEdit内容过滤之setValidator和setInputMask浅析

1、QValidator分析 2、InputMask格式 3、测试代码和用例 项目路径&#xff1a; GitHub&#xff1a; https://github.com/Qunero/NeoQtTestDemo/tree/master/TQLineEdit_ContentControl 直接跑一下代码吧&#xff0c;发现这个文章放在草稿箱都快烂掉了。转载于:https://www.cnbl…

操作系统学习笔记目录(暂时不全223)

操作系统学习笔记目录章节汇总 &#xff08;暂时不全&#xff0c;目前只有第一章第二章-浅谈线程&#xff0c;进程-2020.3.6&#xff09; 文章目录操作系统学习笔记目录章节汇总1.打开钢琴的盖子(序章)1.1-操作系统的概念&#xff08;定义&#xff09;&#xff0c;功能和目标1…

Gartner 2022年新兴技术和趋势影响力雷达图中五项具有影响力的技术

来源&#xff1a;Gartner公司编辑&#xff1a;蒲蒲如果一幢建筑能够告诉您暖通空调系统中的过滤器导致系统运行效率低下并需要更换&#xff0c;是不是会对您很有帮助&#xff1f;如果该系统还可以根据使用情况来调整暖风或通风呢&#xff1f;您目前的系统是否能够主动追踪建筑内…

计算机网络学习笔记-1.1.3-速率相关的性能指标

计算机网络-2019 王道考研 计算机网络-1.1.3-速率相关的性能指标 文章目录3-速率相关的性能指标性能指标之速率&#xff0c;带宽&#xff0c;吞吐量思维导图3.1速率--》传输单位你到底是咋转换的&#xff1f;3.2带宽--》网络水龙头你到底有多快&#xff1f;3.3吞吐量--》奸商&a…

吴恩达:回顾2021,这些大事件影响了AI这一年

来源&#xff1a;AI前线作者&#xff1a;Andrew Ng译者&#xff1a;核子可乐&#xff0c;刘燕12 月 23 日&#xff0c;机器学习大牛吴恩达&#xff08;Andrew Ng&#xff09;在其主编的人工智能周讯《The Batch》上发表了最新文章。文章中&#xff0c;吴恩达回顾了 2021 年全球…

sharepoint timer job 读取config文件内容

需要写一个自定义的sharepoint timer job, 目的是要定时到Site Collection Images这个List里检查图片的过期日期&#xff0c;如果即将过期的话&#xff0c;需要发送email到相关的人员。 GOOGLE了一下&#xff0c;发现资料很少。不过幸运的是我发现了 Andrew Connell的博客&…