• ARTS打卡第三周


    概述

            infoq的arts打卡学习,贯彻左耳朵耗子的学习理念,活到老学到老,每天都精进一点,上个星期没有写打卡文档,只能用工作太忙为借口为自己开脱了

    一、Algorithm 一道算法题

            最近工作使用算法场景较少,基本上是基于数据统计对系统进行优化,因此结合工作的算法暂时没有,最近在学习go,就用go来写一些经典算法吧,再配上单元测试,加深对go的理解

            二分查找法go的实现,接收两个参数:有序数组arr和待查找的值target。通过循环迭代的方式,在每次迭代中更新查找范围的起点和终点,直到找到待查找的值或者确认查找范围为空。若找到待查找的值,则返回它在数组中的索引位置;若未找到,则返回-1。  

    1. // 冒泡排序法
    2. func AscSort(arr []int) []int {
    3. maxInter := len(arr) - 1
    4. for i := 0; i < maxInter; i++ {
    5. for j := maxInter; j > i; j-- {
    6. if arr[j-1] > arr[j] {
    7. temp := arr[j]
    8. arr[j] = arr[j-1]
    9. arr[j-1] = temp
    10. }
    11. }
    12. }
    13. return arr
    14. }

    单元测试

    1. func TestAscSort(t *testing.T) {
    2. Convey("冒泡排序", t, func() {
    3. // 排好序的情况
    4. arr := []int{1,3,4,5,7,9,10}
    5. res := AscSort(arr)
    6. So(res, ShouldResemble, arr)
    7. // 乱序
    8. arr1 := []int{7,1,5,3,9,4,10}
    9. res = AscSort(arr1)
    10. So(res, ShouldResemble, arr)
    11. // 逆序
    12. arr2 := []int{10,9,7,5,4,3,1}
    13. res = AscSort(arr2)
    14. So(res, ShouldResemble, arr)
    15. })
    16. }

    二、Review 读一篇英文文章

            英语单词,推荐使用「摸鱼单词」,每天早到公司15分钟,开启「摸鱼单词」记忆单词熟悉发音

            英语每日一读, 微信公众号 - 「夏说英文晨读」或「友邻优课app」,最近时事,每天一遍,跟读录音review,感觉挺好

            

    三、Technique/Tips 分享一个小技术

            在高并发场景下,使用go取代php,在实现上有更多的思路(方案)提升性能。提升性能的本质之一是减少io

            场景: 寻址系统 - 在一堆服务器中为设备选出最优(连接数最少、负载最低)一台,让设备与服务器保持长连接。

            现状:初始时,已经将php代码优化到了极致,但一次寻址仍然存在20次io,主要是和redis的交互,而存储在redis中的信息配置数据几乎不怎么修改。

            优化:使用php已经无法再优化;
            1、go使用etcd做配置中心,将改动频率低的数据写入到etcd中,有变更时实时更新到程序内存中。 

            2、当前php限流依赖于redis中滞后的redis、mongo的操作数和连接数,存在redis io,改用go sentinal,没有io,并且限流及时,不会滞后,更好地保护下游服务。

    四、Share 分享一个观点

            知识不是一成不变的真理。

    知识不是对现实的客观纯粹反映,是人们对事物的解释、假说和假设,随着人们对事物的认识程度的深入而不断变革、深化,出现新的解释和假说。

    比如地心说和日心说,我们现在看知道这两种说法都是错误的。但地心说提出的时候,人们都认可地心说,随着人们对事物认识程度的深入,阿利斯塔克、哥白尼又提出了日心说,日心说经过300多年的发展,随着开普勒、伽利略和牛顿工作的进展,特别是恒星光行差和视差的发现,终于否定了地心说和日心说,提出了大爆炸说。天文学的发展表明,太阳仅仅是一个普通恒星,它并不在宇宙的中心。

            

      

  • 相关阅读:
    第九章《字符串》第4节:StringBuffer和StringBuilder
    从Series到DataFrame:Python数据操作的转换技巧
    [李宏毅老师深度学习视频]深度学习全连接层+反向传播机制【手写笔记】
    LabVIEW生产者消费者架构
    189基于matlab的Wigner-Ville时频分布图
    防火墙用户管理理论+实验
    通过修改metadata来修改一个图像中的label信息,进行扩充;obj_label: 一个数组,用于存储描述被检测对象类别的字符串
    Spring Boot 项目的常用注解与依赖
    理解CSS | 青训营笔记
    el-tabs切换按钮定位不准确,部分内容被遮挡(前端vue实战踩坑记录)
  • 原文地址:https://blog.csdn.net/sir051223/article/details/132885907