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

做网站注册哪类商标换服务器wordpress升级

做网站注册哪类商标,换服务器wordpress升级,wordpress qps,酒店营销策略案例 并发目录大小统计 业务逻辑 统计目录的文件数量和大小#xff08;或其他信息#xff09;。示例输出#xff1a; // 某个目录#xff1a;2637 files 1149.87 MB 实现思路 给定一个或多个目录#xff0c;并发的统计每个目录的size#xff0c;最后累加到一起。 当…案例 并发目录大小统计 业务逻辑 统计目录的文件数量和大小或其他信息。示例输出 // 某个目录2637 files 1149.87 MB 实现思路 给定一个或多个目录并发的统计每个目录的size最后累加到一起。 当目录中存在子目录时递归的统计。 每个目录的统计都由独立的Goroutine完成 累计总Size由独立的Goroutine完成 使用Channel传递获取的文件大小 使用WaitGroup调度 核心代码 // 读取目录内容// os.ReadDirfunc ReadDir(name string) ([]DirEntry, error)entries, err : os.ReadDir(dir)​// 取得文件信息info, err : entry.Info()​//判定是否为目录entry.IsDir() 编码实现 func WalkDir(dirs ...string) string {if len(dirs) 0 {dirs []string{.}}​filesizeCh : make(chan int64, 1)​wg : sync.WaitGroup{}for _, dir : range dirs {wg.Add(1)go walkDir(dir, filesizeCh, wg)}​go func(wg *sync.WaitGroup) {wg.Wait()close(filesizeCh)}(wg)​var fileNum, sizeTotal int64for filesize : range filesizeCh {fileNumsizeTotal filesize}​return fmt.Sprintf(%d files %.2f MB\n, fileNum, float64(sizeTotal)/1e6)}func walkDir(dir string, fileSizes chan- int64, wg *sync.WaitGroup) {defer wg.Done()for _, fileinfo : range fileInfos(dir) {if fileinfo.IsDir() {subDir : filepath.Join(dir, fileinfo.Name())wg.Add(1)go walkDir(subDir, fileSizes, wg)} else {fileSizes - fileinfo.Size()}}}func fileInfos(dir string) []fs.FileInfo {entries, err : os.ReadDir(dir)if err ! nil {fmt.Fprintf(os.Stderr, walkdir: %v\n, err)return []fs.FileInfo{}}infos : make([]fs.FileInfo, 0, len(entries))for _, entry : range entries {info, err : entry.Info()if err ! nil {continue}infos append(infos, info)}return infos} 测试执行 go test -runWalkDir70 files 0.09 MB​PASSok     goConcurrency   0.321s 快速排序的并发编程实现 典型的单线程快速排序实现 func QuickSortSingle(arr []int) []int {// 确保arr中至少存在2个或以上元素if arr nil || len(arr) 2 {return arr}// 执行排序quickSortSingle(arr, 0, len(arr)-1)return arr}​func quickSortSingle(arr []int, l, r int) {// 判定待排序范围是否合法if l r {// 获取参考元素位置索引mid : partition(arr, l, r)// 递归排序左边quickSortSingle(arr, l, mid-1)// 递归排序右边quickSortSingle(arr, mid1, r)}}​// 大小分区返回参考元素索引func partition(arr []int, l, r int) int {p : l - 1for i : l; i r; i {if arr[i] arr[r] {pswap(arr, p, i)}}return p}​// 交换arr中i和j元素func swap(arr []int, i, j int) {t : arr[i]arr[i] arr[j]arr[j] t} 并发编程实现思路 使用独立的Goroutine完成arr中某部分的排序 WaitGroup 完成等待阻塞同步 编码实现 // QuickSortConcurrency 快速排序调用函数func QuickSortConcurrency(arr []int) []int {// 一校验arr是否满足排序需要至少要有2个元素if arr nil || len(arr) 2 {return arr}​// 四同步的控制wg : sync.WaitGroup{}// 二执行排序// 初始排序整体[0, len(arr)-1]wg.Add(1)go quickSortConcurrency(arr, 0, len(arr)-1, wg)wg.Wait()​// 三返回结果return arr}​// 实现递归快排的核心函数// 接收arr和排序区间的索引位置[l, r]func quickSortConcurrency(arr []int, l, r int, wg *sync.WaitGroup) {// 一-1wg的计数器defer wg.Done()​// 二判定是否需要排序 l rif l r {// 三大小分区元素并获取参考元素索引mid : partition(arr, l, r)​// 四并发对左部分排序wg.Add(1)go quickSortConcurrency(arr, l, mid-1, wg)​// 五并发的对右部分排序wg.Add(1)go quickSortConcurrency(arr, mid1, r, wg)}} partition 和 swap 部分不变。 测试执行 func TestQuickSortConcurrency(t *testing.T) {randArr : GenerateRandArr(1000)sortArr : QuickSortConcurrency(randArr)fmt.Println(sortArr)}​​// 生成大的随机数组func GenerateRandArr(l int) []int {// 生产大量的随机数arr : make([]int, l)rand.Seed(time.Now().UnixMilli())for i : 0; i l; i {arr[i] int(rand.Int31n(int32(l * 5)))}​return arr} go test -runQuickSortConcurrency
http://www.ho-use.cn/article/10821958.html

相关文章:

  • 手表购买网站网站营销不同阶段的网站分析目标
  • 网站是公司域名是个人可以广东事业单位网站
  • 书画展示网站模板肯达建设网站
  • 网站子栏目设计网站建设有几种
  • 商城网站功能网站建设ppt演示文稿
  • 玉林网站建设flash网站整站源码免费下载
  • 在网站文字上做超链接苏州设计院
  • 北京做手机网站的公司名称数据可视化网站
  • 贵州网站建设kuhugz点击颜色更换网站主题
  • 网站必须要备案吗有哪些网站可以做电子邀请函
  • html5网站制作编辑源码哪里可以免费做网站
  • 微信里面如何做网站杭州门户网站建设
  • 义乌市建设银行分行网站商丘做网站推广
  • html网站建设源码wordpress 目录 模板
  • 郑州市做网站wordpress 亲子 主题
  • 重庆网站网络推广推广免费注册域名哪里有
  • 上海网站优化哪家好vue配合什么做网站比较好
  • 网站建设 今晟网络给你一个网站怎么做
  • 嘉兴英文网站建设seo的中文是什么意思
  • 专业建设网站哪个好哪个网站专门做高清壁纸
  • 网站如何做浮窗企业怎么做网站
  • 唐山网站建设方案咨询wordpress 音乐插件
  • 成都网站设计制作工作室网页报价
  • 成都网站建设外包公司社交网站建设流程
  • 网站建设教程小说切图做网站如何做
  • php商务网站开发移动4G网站建设
  • wordpress屏蔽广告宝应百度seo
  • 什么网站发布找做效果图的太原中小学网站建设
  • 桂林做网站的公司哪家最好做双语网站
  • 网站建设 图片压缩小说排行榜