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

上海网站设计工作室网站进入沙盒后

上海网站设计工作室,网站进入沙盒后,网站会员后台管理系统,网站开发难易处以下是第五周复合类型#xff08;数组、切片与映射#xff09;的详细学习内容#xff0c;按照第四周的深度要求设计#xff1a; 第五周#xff1a;复合类型与词频统计 一、复合类型详解 1. 数组#xff08;Array#xff09; // 声明与初始化 var arr1 [3]int …以下是第五周复合类型数组、切片与映射的详细学习内容按照第四周的深度要求设计 第五周复合类型与词频统计 一、复合类型详解 1. 数组Array // 声明与初始化 var arr1 [3]int // 声明[0 0 0] arr2 : [3]string{A, B, C} // 显式初始化 arr3 : [...]int{1,2,3} // 编译器推断长度// 特性 // - 固定长度长度是类型的一部分 // - 值传递赋值/传参产生副本 // - 内存连续分配// 操作示例 arr : [5]int{10,20,30,40,50} fmt.Println(arr[1]) // 20 arr[2] 35 // 修改元素 fmt.Println(len(arr)) // 5长度 fmt.Println(cap(arr)) // 5容量2. 切片Slice // 创建方式 s1 : make([]int, 3, 5) // 类型,长度,容量 s2 : []float64{1.1, 2.2} // 字面量 s3 : arr[1:3] // 从数组切割// 特性 // - 动态大小自动扩容 // - 引用类型底层数组视图 // - 包含ptr/len/cap三元组// 操作示例 s : []int{10,20,30} s append(s, 40) // 扩容追加 copy(s[1:], s[2:]) // 删除元素20 s s[:len(s)-1] // 新长度[10 30 40]3. 映射Map // 初始化方式 m1 : make(map[string]int) m2 : map[string]float64{pi: 3.1415,e: 2.7182, }// 特性 // - 无序键值对集合 // - 引用类型 // - 线程不安全// 操作示例 ages : map[string]int{Alice: 25,Bob: 30, } ages[Charlie] 28 // 添加/修改 delete(ages, Bob) // 删除 if age, ok : ages[David]; !ok {fmt.Println(不存在) }二、词频统计任务 需求分析 输入一段英文文本输出单词出现频率不区分大小写过滤标点符号和数字支持并发处理可选优化 版本1基础实现 func wordFrequency(text string) map[string]int {// 清理文本cleaner : func(r rune) rune {if unicode.IsLetter(r) {return unicode.ToLower(r)}return // 非字母转为空格}cleaned : strings.Map(cleaner, text)// 分割单词words : strings.Fields(cleaned)// 统计频率freq : make(map[string]int)for _, word : range words {freq[word]}return freq }版本2并发优化 func concurrentWordFrequency(text string) map[string]int {// 文本预处理同上cleaner : func(r rune) rune {/* 同版本1 */}cleaned : strings.Map(cleaner, text)words : strings.Fields(cleaned)// 并发处理var mu sync.Mutexvar wg sync.WaitGroupfreq : make(map[string]int)chunkSize : 1000for i : 0; i len(words); i chunkSize {end : i chunkSizeif end len(words) {end len(words)}chunk : words[i:end]wg.Add(1)go func(words []string) {defer wg.Done()localFreq : make(map[string]int)for _, w : range words {localFreq[w]}mu.Lock()for k, v : range localFreq {freq[k] v}mu.Unlock()}(chunk)}wg.Wait()return freq }三、测试与性能 1. 表格驱动测试 func TestWordFrequency(t *testing.T) {tests : []struct {input stringwant map[string]int}{{Hello hello world,map[string]int{hello:2, world:1},},{Go! 100% Go...,map[string]int{go:2},},{A man a plan a canal: Panama,map[string]int{a:3, man:1, plan:1, canal:1, panama:1},},}for _, tt : range tests {got : wordFrequency(tt.input)if !reflect.DeepEqual(got, tt.want) {t.Errorf(输入 %q\n期望 %v\n实际 %v, tt.input, tt.want, got)}} }2. 性能基准测试 # 运行测试 go test -bench . -benchmem# 预期结果 BenchmarkWordFrequency-8 5000 324521 ns/op 138920 B/op 502 allocs/op BenchmarkConcurrent-8 8000 198745 ns/op 189654 B/op 1502 allocs/op四、进阶技巧 1. 内存优化预分配 // 预估容量减少扩容 words : make([]string, 0, len(text)/5) // 按平均单词长度5预估 freq : make(map[string]int, 1000) // 预分配哈希表槽位2. 正则表达式优化 // 使用正则分割更高效 re : regexp.MustCompile(\W) words : re.Split(strings.ToLower(text), -1)3. 自定义排序输出 func sortedFrequency(freq map[string]int) []string {type pair struct {word stringcount int}pairs : make([]pair, 0, len(freq))for k, v : range freq {pairs append(pairs, pair{k, v})}sort.Slice(pairs, func(i, j int) bool {return pairs[i].count pairs[j].count})result : make([]string, len(pairs))for i, p : range pairs {result[i] fmt.Sprintf(%s:%d, p.word, p.count)}return result }五、扩展练习 停用词过滤 func filterStopWords(freq map[string]int, stopWords map[string]struct{}) {for w : range freq {if _, exists : stopWords[w]; exists {delete(freq, w)}} }词云生成器 func generateWordCloud(freq map[string]int, size int) []string {// 根据频率生成不同字号标记// 示例[GO(12), 语言(8), 并发(20)] }六、学习检查清单 能正确定义数组、切片和映射 理解切片扩容机制容量翻倍策略 会使用sync.Mutex处理并发map访问 能解释数组与切片的底层关系 理解map的哈希表实现原理 会进行切片的内存预分配优化 能处理Unicode字符的文本清洗 会编写并发安全的统计程序 通过本学习内容您将掌握Go语言核心复合类型的特性和高效使用方法并能够根据实际场景选择最佳数据结构。建议 尝试处理1GB以上的大文本文件比较不同分块策略对并发版本的影响使用pprof分析内存分配热点实现扩展练习中的词云可视化功能
http://www.hkea.cn/news/14496751/

相关文章:

  • 免费设计软件网站哪个网站的财经做的好知乎
  • 视频网站开发需求分析东莞公司注册流程
  • 做毛绒玩具在什么网站上找客户大数据营销系统
  • 顺德 网站开发 招聘湖南常德石门县
  • 假怀孕单子在线制作图片seo主要做什么
  • 打开网站要密码旅游网站建设规范
  • 网站建设 事业单位 安全插画培训班学费多少
  • 西安俄语网站建设网站开发入帐分录
  • 通讯录管理网站建设在线咨询网站开发价格
  • 长宁网站设计广州专业的网站建设公司
  • 网站开发后是不是下挂到域名wordpress不能更新
  • 骏域网站建设专家电话企业网站建设公司网络服务
  • 诸城网站建设的文章墟沟企业建站价格表
  • 做网站的公司倒闭了完整的网站开发流程
  • 网站域名服务器一年多少钱成都有哪些设计公司
  • 万网账号跟网站有关系吗淮南建设公司网站
  • 网站源码大全制作照片的软件app
  • 网站代码开发文档模板金堂县城乡建设局网站
  • 做网站代码难么做网站需要准备资料
  • 佛山做企业网站的公司wordpress媒体库2m
  • 网站备案类型及条件网页在线代理翻墙
  • 肇庆中小企业网站制作购物网站怎么创建
  • 建设摩托车官网官方网站seo诊断工具网站
  • 长沙品质网站建设优点黄山旅游攻略
  • 用网站做自我介绍自己软件工程师考试
  • 哪个网站可以做微信引导图做网站的业务员
  • 建德网站优化公司站长统计app软件下载
  • 家用电脑搭建网站组织建设求是网
  • 低价格网站建设查询个人公司注册公司
  • 专业营销网站带客建筑设计装修