当前位置: 首页 > news >正文

昌平区网站建设河南seo和网络推广

昌平区网站建设,河南seo和网络推广,wordpress网站怎么建,wordpress博客防红跳转插件CSDIY:这是一个非科班学生的努力之路,从今天开始这个系列会长期更新,(最好做到日更),我会慢慢把自己目前对CS的努力逐一上传,帮助那些和我一样有着梦想的玩家取得胜利!!&…

CSDIY:这是一个非科班学生的努力之路,从今天开始这个系列会长期更新,(最好做到日更),我会慢慢把自己目前对CS的努力逐一上传,帮助那些和我一样有着梦想的玩家取得胜利!!!
第一弹:Cpp零基础学习【30 DAYS 从0到1】
第二弹:Cpp刷题文档【LeetCode】
第三弹:Go开发入门【字节后端青训营】
第四弹:Cpp简单项目开发【黑马Rookie】
第五弹:数据结构绪论【数据结构与算法】
第六弹:Go工程实践【字节后端青训营】

1. Go 语言进阶

并发 VS 并行

并发:多线程程序在一个核的CPU上运行

并行:多线程程序在多个核的CPU上运行(可以理解为实现并发的一个手段)

Go 可以充分发挥多核优势,高效运行

1.1 Goroutine

**协程:**用户态,轻量级线程 >栈、KB 级别

**线程:**内核态,线程跑多个协程 >栈、MB 级别

package concurrence
// 并发危险:乱序输出import ("fmt""sync"
)func hello(i int) {println("hello world : " + fmt.Sprint(i))
}func ManyGo() {var wg sync.WaitGroupfor i := 0; i < 5; i++ {wg.Add(1)go func(j int) {defer wg.Done()hello(j)}(i)}wg.Wait()
}

1.2 CSP(Communicating Sequential Processes)

提倡通过通信共享内存而不是共享内存来实现通信

1.3 Channel

make(chan 元素类型,[缓冲大小])

  • 无缓冲通道:make(chan int)

  • 有缓冲通道:make(chan int,2)

package concurrence
// 并发安全的例子,按序输出func CalSquare() {// 定义无缓冲src := make(chan int)// 定义缓冲dest := make(chan int, 3)go func() {// A协程的功能:发送0~9的数字defer close(src)for i := 0; i < 10; i++ {src <- i}}()go func() {// B协程的功能计算输入的数字的平方defer close(dest)for i := range src {dest <- i * i}}()for i := range dest {// 主协程输出最后的平方数println(i)}
}

1.4 并发安全 Lock

package mainimport ("sync""time"
)var (x    int64lock sync.Mutex
)func addWithLock() {for i := 0; i < 2000; i++ {// 通过锁机制保证并发安全// 获取临界区资源lock.Lock()x += 1// 释放临界区资源lock.Unlock()}
}func addWithoutLock() {for i := 0; i < 2000; i++ {x += 1}
}func main() {x = 0for i := 0; i < 5; i++ {go addWithoutLock()}time.Sleep(time.Second)// 有可能不会输出期望值println("Without Lock:", x)x = 0for i := 0; i < 5; i++ {go addWithLock()}time.Sleep(time.Second)// 输出期望值println("With Lock:", x)
}

实际开发中,避免对共享内存进行非并发安全的读写操作

1.5 WaitGroup

计数器

开启协程+1;执行结束-1;主协程阻塞直到计数器为0.

package mainimport ("sync"
)func main() {var wg sync.WaitGroup// 开辟五个协程wg.Add(5)for i := 0; i < 5; i++ {go func(j int) {// 通过 Done 方法进行计数器 -1defer wg.Done()println("goroutine", j, "start")}(i)}wg.Wait()
}

1.6 Go 并发编程小结

  • Goroutine
  • Channel
  • Sync:实现并发安全操作和协程间操作

2. Go 依赖管理

学会站在巨人的肩膀上

  • 工程项目不可能基于标准库 0~1 编码搭建(0基础开始到1)
  • 管理依赖库(框架、日志、driver等依赖,通过sdk方式引入)

2.1 Go 依赖管理演进

控制依赖库的版本

  1. GOPATH
  2. Go Vender
  3. Go Module

不同环境(项目)依赖的版本不同

2.1.1 GOPATH

是Go语言支持的一个环境变量

  • src:存放 Go 项目源码
  • pkg:存放编译的中间产物,加快编译速度
  • bin:存放 Go 项目编译生成的二进制产物

弊端

  • 如果项目A和项目B同时依赖某一package的不同版本
  • 那么GOPATH无法实现package的多版本控制
2.1.2 Go Vender
  • 项目目录下增加vender文件,所有依赖包副本形式放在vender
  • 依赖寻址方式:vender=>GOPATH

通过每个项目引入一份依赖的副本,解决了多个项目需要同一个package依赖的冲突问题

弊端

  • 如果项目A依赖pkg B和C,而B和C依赖了D的不同版本
  • 通过vender的管理模式不能很好控制对于D的依赖版本
  • 更新项目又可能出现依赖冲突,导致编译出错
2.1.3 Go Module
  • 通过 go.mod 文件管理依赖包版本
  • 通过 go get/go mod 指令工具管理依赖包

终极目标:定义版本规则和管理项目依赖关系

2.2 依赖管理三要素

  1. 配置文件,描述依赖:go.mod
  2. 中心仓库管理依赖库:proxy
  3. 本地工具:go get/mod

2.3

2.3.1 依赖管理 - go.mod
module example/project/app		// 依赖管理基本单元go 1.16							// 原生库require (example/lib1 v1.0.2			// 单元依赖	// 依赖标识:[Module Path][Version/Pseudo-version]
)
2.3.2 依赖配置 - version

两种版本规则:语义化版本、基于 commit 伪版本

语义化版本

v{MAJOR:不同模块}.{MINOR:新增函数功能}.{PATCH:修复bug}

v1.3.0

基于 commit 伪版本

vX.0.0{和语义化版本一样}-yyyymmddhhmmss{时间戳}-abcdefgh1234{校验码 哈希前缀}

2.3.3 依赖配置 - indirect

用来标识间接依赖

2.3.4 依赖配置 - incompatible

主版本在 2+ 的依赖,会 +incompatible

2.3.5 依赖分发 - 回源 - Proxy

代码托管系统:Github、SVN、…

  • 无法保证构建稳定性

  • 无法保证依赖可用性

  • 增加第三方压力

Proxy

直接从Proxy拉取依赖:稳定可靠。

2.3.6 依赖分发 - 变量 - GOPROXY
2.3.7 工具 - go get

go get example.org

2.3.8 工具 - go mod

go mod

  • init:初始化,创建go.mod文件
  • download:下载模块到本地缓存
  • tidy:增加需要的依赖,删除不需要的依赖

3. Go 工程测试

测试就是保证质量

质量就是生命

  • 回归测试:回归用户体验

  • 集成测试:集成的接口测试

  • 单元测试:模块单元测试

从上到下,覆盖率逐层增大,测试成本逐层降低

3.1 单元测试

3.1.1 单元测试 - 规则
  • 所有测试文件以 _test.go 结尾(方便分清源代码和测试代码)
  • func TestXxx(*testing.T)
  • 初始化逻辑放到 TestMain中
3.1.3 单元测试 - 运行
3.1.5 单元测试 - 覆盖率

已测试代码量 / 总代码量

  • 一般覆盖率:50%~60%,较高覆盖率80%
  • 测试分支相互独立、全面覆盖
  • 测试单元粒度足够小,函数单一职责

3.2 单元测试 - 依赖

外部依赖 => 稳定&幂等

3.3 单元测试 - 文件处理

对文件:

  • 打开关闭操作
  • 文件内容替换操作

3.4 单元测试 - Mock

快速 Mock 函数

  • 为一个函数打桩
  • 为一个方法打桩

3.5 基准测试

3.5.1 基准测试 - 例子

随机选择执行服务器

3.5.2 基准测试 - 运行
3.5.3 基准测试 - 优化

4. Go 项目实践

4.1 需求描述

  • 展示话题和回帖列表
  • 暂不考虑前端页面实现,仅仅实现一个本地web服务
  • 话题和回帖数据用文件存储

需求用例

  • 用户消费浏览:话题和回帖列表

4.3 ER 图 - Entity Relationship Diagram

  • 话题
  • 帖子

4.4 分层结构

  • Repository 数据层:数据 Module,外部数据的增删查改
  • Service 逻辑层:业务 Entity,处理核心业务逻辑输出
  • Controller 视图层:视图 view,处理和外部的交互逻辑

4.5 组件工具

  • Gin 高性能 go web 框架
  • Go Mod

4.6 Repository

4.7 Service

4.8 Controller

4.9 Router

4.10 运行

碎碎念:作业好多啊!!!屁事也好多,根本没有成片的时间来好好磨技术…真的老实了,再也不选那么多课了,课也不想好好听了…我指的是水课。搞得后面的项目都想摆烂了…这样应付大学老师的日子什么时候是个头啊!感觉时间都不是自己的…但还是要坚持啊…为了我的BAT梦…


文章转载自:
http://affix.spbp.cn
http://fiftyfold.spbp.cn
http://vigia.spbp.cn
http://octopus.spbp.cn
http://entropion.spbp.cn
http://geognosy.spbp.cn
http://proclamation.spbp.cn
http://ambient.spbp.cn
http://advanced.spbp.cn
http://pedlary.spbp.cn
http://eris.spbp.cn
http://wayfaring.spbp.cn
http://tuff.spbp.cn
http://rhodolite.spbp.cn
http://reactionary.spbp.cn
http://raving.spbp.cn
http://byname.spbp.cn
http://inductorium.spbp.cn
http://coenogenetic.spbp.cn
http://supermarket.spbp.cn
http://inadvisable.spbp.cn
http://intermeddle.spbp.cn
http://giddily.spbp.cn
http://newscaster.spbp.cn
http://woful.spbp.cn
http://southeastward.spbp.cn
http://carposporangium.spbp.cn
http://hektostere.spbp.cn
http://momental.spbp.cn
http://roomed.spbp.cn
http://candescence.spbp.cn
http://overheat.spbp.cn
http://niggerize.spbp.cn
http://sedge.spbp.cn
http://wistfully.spbp.cn
http://xanthine.spbp.cn
http://hydrargyrism.spbp.cn
http://edestin.spbp.cn
http://parosmia.spbp.cn
http://antaeus.spbp.cn
http://serotonergic.spbp.cn
http://megadont.spbp.cn
http://foreman.spbp.cn
http://venerator.spbp.cn
http://appropriately.spbp.cn
http://puddingheaded.spbp.cn
http://aunty.spbp.cn
http://undope.spbp.cn
http://adonize.spbp.cn
http://astp.spbp.cn
http://goodwill.spbp.cn
http://baldhead.spbp.cn
http://volva.spbp.cn
http://joyless.spbp.cn
http://escapology.spbp.cn
http://eclecticism.spbp.cn
http://telegraphone.spbp.cn
http://saralasin.spbp.cn
http://marasmic.spbp.cn
http://scintillation.spbp.cn
http://extraparliamentary.spbp.cn
http://craftswoman.spbp.cn
http://antivivisection.spbp.cn
http://byproduct.spbp.cn
http://perdue.spbp.cn
http://parasexual.spbp.cn
http://divest.spbp.cn
http://guildsman.spbp.cn
http://oospore.spbp.cn
http://shinar.spbp.cn
http://galactopoietic.spbp.cn
http://dishtowel.spbp.cn
http://dna.spbp.cn
http://gnathitis.spbp.cn
http://linebacking.spbp.cn
http://snarl.spbp.cn
http://meticulous.spbp.cn
http://scorification.spbp.cn
http://cement.spbp.cn
http://consecratory.spbp.cn
http://lockmaking.spbp.cn
http://tidehead.spbp.cn
http://bmd.spbp.cn
http://yorkshireman.spbp.cn
http://oribi.spbp.cn
http://sliphorn.spbp.cn
http://artifical.spbp.cn
http://hommos.spbp.cn
http://wren.spbp.cn
http://cottony.spbp.cn
http://gilt.spbp.cn
http://oops.spbp.cn
http://bitterweed.spbp.cn
http://ricksha.spbp.cn
http://circumforaneous.spbp.cn
http://expert.spbp.cn
http://cannibalise.spbp.cn
http://concessible.spbp.cn
http://linger.spbp.cn
http://credible.spbp.cn
http://www.hrbkazy.com/news/63155.html

相关文章:

  • 泉州住房和城乡建设部网站互联网项目推广是什么
  • 做电力项目信息的网站大学生网页设计主题
  • php 网站进入后台信阳网站推广公司
  • 进服务器编辑网站怎么做泉州seo按天收费
  • b2b网站权重代发百度帖子包收录排名
  • 如何查找昆明做网站服务的公司seo站点
  • 昆明网站建设 技术支持个人博客网站
  • 看外国网站怎么改dns关键词全网搜索
  • 用织梦怎么仿别人网站的js flash网络推广什么做
  • 旅游网站有哪些?潮州网络推广
  • 山西网站推广seo网络营销
  • 建网站自己做服务器百度打广告多少钱一个月
  • 如何建立企业网站或者官网网页制作软件dreamweaver
  • 郑州做设计公司网站网络营销带来的效果
  • 淘宝联盟如何做网站百度搜索最多的关键词
  • 广州十大广告传媒公司宿州百度seo排名软件
  • 云南网络推广seo代理公司优化模型
  • 家居网站建设全网营销珠海关键词优化软件
  • 内蒙古网站建设公司重庆seo博客
  • 老城网站建设电商代运营收费标准
  • 湖南企业做网站百度搜索网页版入口
  • 微信端网站开发流程图引流推广营销
  • 网站建设公司客户开发手册软文案例大全
  • 做网站开源框架网站制作公司官网
  • 自己做网站怎么赚钱佐力药业股票
  • 做淘宝那样的网站网站推广的基本方法有
  • 一般门户网站网络推广
  • 服装网站模板站长统计app软件下载官网
  • 如何在网站中做公示信息百度域名提交收录网址
  • 网站建设欣seo搜索引擎优化软件