ARTS 第6周

栏目: 编程工具 · 发布时间: 6年前

内容简介:[TOC][思路]

[TOC]

Algorithm

717. 1-bit and 2-bit Characters

难度:[easy]

[思路]

  1. 可以抽象为:以1开头,向后移两部;以0开口,向后移一步
  2. 判断最后一次是移一步还是两步:一步True,两步False

[参考代码]

func isOneBitCharacter(bits []int) bool {

    i := 0 
    lens := len(bits)-1
    for {
        if i >= lens {
            break
        }
        if bits[i] == 0 {
            i++
        } else if bits[i] == 1 {
            i+=2
        }
    }
    if i == lens {
        return true
    }
    return false
    
}

Review

https://medium.freecodecamp.org/the-junior-developers-guide-to-writing-super-clean-and-readable-code-cd2568e08aae

一篇关于如何保持代码整洁的文章

中文版:经验之谈:代码该怎样写才能干净整洁: https://mp.weixin.qq.com/s/-UGXzDwKcS1lo6VmSJC5Rg

本文主要分享了四个方法:

  • 使用一致的缩进和格式:
  • 使用清晰的变量名和方法名
    • 其实就是做到:见名知意
    • 命名方法:
      • 单一功能:动词+名词 , 比如:getStudentName()
      • 多个功能:动词+名词+And+动词+[名词] , 比如:updateCarAndSave()
        • 一个函数承载的任务太多了,可以将其分解为更小的函数:updateCarAndSave() = updateCar() + saveCar()
    • 统一命名方式,(golang中只能是camelCase)
    • 实在不知道用什么命名可以去这个网站查一下:: https://unbug.github.io/codelf/
  • 在必要时使用注释
    • 代码应该文档化,这就意味着,你的代码足够易读,不需要文档来做过多的解释
    • 但是现实情况很复杂,使用一些注释还是很有必要的,需要注意一下问题:
      • 不做多余的注释
      • 防止误导性注释,即注释说明的功能和实际的功能不一致
  • DRY原则:Don't repeat yourself
    • 在一个系统中,每一小段知识必须拥有一个单一,清晰,权威的呈现
    • 每一个函数应该功能清晰且确定;如果该函数执行多个任务,应该将该函数分解为由多个功能单一的子函数实现
    • 减少重复代码的数量:如果同一功能的代码重复出现三次,就因该考虑抽取为一个函数

Tips

分享一篇关于 sql 优化的文章:

https://mp.weixin.qq.com/s/dCO8a__dWM_YA_3X6BoXxA

我认为这篇文章最有价值的地方的是优化sql的思路,这就是授人以鱼不如授人以渔,这篇文章从一次具体的优化历程,阐释了对于优化sql的具体思路:

优化思路:

  • 先查看查询计划,了解该条sql具体的查询方案
    • 如果是索引问题:通过新建对应的索引
    • 增加索引后重新执行,验证结果是否优化
  • 再查看执行计划:
    • 分析是否与自己预想的执行顺序一致
    • 如果不一致,修改sql,向自己所希望的方案优化
    • 再次调用,查看修改后效率是否有所提高
      • 如果没有,再次查看执行计划,分析问题,
    • 不断重复这个过程,直到解决问题。

Share

Go 基准测试: https://www.flysnow.org/2017/05/21/go-in-action-go-benchmark-test.html

  • 基准测试:用于找出多个方案中的最优方案,测试目标的代码的执行性能
  • 主要测试对象:cpu的速度,内存的使用量
  • go基准测试规则:
    _test.go
    
  • 常用参数:
    • b.ResetTime 重置计时器,为了避免之前代码的干扰
    • for i:=0;i<b.N;i++{ 测试代码 } 标准套路,测试代码必须放for循环里
      • b.N 表示循环的次数,由基准测试的框架提供
    • 通过 go test 运行
    • -bench= 表示:可以接受一个表达式作为参数,eg: . 就是匹配所有基准测试
    • -run= 表示:运行指定的单元测试;基准测试中,为了防止单元测试的输出造成影响,可以将单元测试指定为一个不存在的单元测试,比如 -run=none , 这样单元测试就不会执行
    • -benchtime= 用于指定基准测试运行的时间,单位为秒;如果不指定,默认测试运行时间为1秒
    • -benchmem 显示每次操作分配的 内存次数 以及分配的 内存大小 (大小用字节数表示)

本周阅读

第一周:1, 2, 3, 4, 6, 7
GCTT 出品 | Go 程序到机器码的编译之旅:https://mp.weixin.qq.com/s/mYKGvWxVJ1WGtlAP0bKbng
什么是IO中的阻塞、非阻塞、同步、异步?https://mp.weixin.qq.com/s/Ed_pziW8Ls-4c4TqZIYjrg
一次非常有意思的SQL优化经历:从30248.271s到0.001s:https://mp.weixin.qq.com/s/dCO8a__dWM_YA_3X6BoXxA

go的Example介绍:https://blog.golang.org/examples
Go channel实现原理剖析: https://my.oschina.net/renhc/blog/2246871
什么是RSA算法: https://mp.weixin.qq.com/s/NTGgbIfDO6WPhMTwH0uTNQ
非对称加密传输对称加密的密钥。然后使用这把对称加密的密钥进行数据传输。

高效 MacBook 工作环境配置,超实用!:https://mp.weixin.qq.com/s/LIej4O5FPI-KwlRmAUwK_g

什么是RSA算法:https://mp.weixin.qq.com/s/NTGgbIfDO6WPhMTwH0uTNQ

-

漫画:互联网黑话大全: https://mp.weixin.qq.com/s/4g1eTOuRL3pxsY64p5hTEQ
一次心惊肉跳的服务器误删文件的恢复过程: https://mp.weixin.qq.com/s/ywmCLFT_JmyY02kLSyodeA
这10款Windows工具帮你提高效率: https://juejin.im/entry/59f844d86fb9a0452b488851
Go语言实战笔记(二十二)| Go 基准测试: https://www.flysnow.org/2017/05/21/go-in-action-go-benchmark-test.html

经验之谈:代码该怎样写才能干净整洁: https://mp.weixin.qq.com/s/-UGXzDwKcS1lo6VmSJC5Rg
英文链接:https://medium.freecodecamp.org/the-junior-developers-guide-to-writing-super-clean-and-readable-code-cd2568e08aae
什么是计数排序?: https://mp.weixin.qq.com/s/CLRW1a9nxTcOuTAtyflT0A

以上所述就是小编给大家介绍的《ARTS 第6周》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Remote

Remote

Jason Fried、David Heinemeier Hansson / Crown Business / 2013-10-29 / CAD 26.95

The “work from home” phenomenon is thoroughly explored in this illuminating new book from bestselling 37signals founders Fried and Hansson, who point to the surging trend of employees working from hom......一起来看看 《Remote》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

随机密码生成器
随机密码生成器

多种字符组合密码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试