ARTS打卡第三周

概述

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

一、Algorithm 一道算法题

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

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

// 冒泡排序法
func AscSort(arr []int) []int {
	maxInter := len(arr) - 1
	for i := 0; i < maxInter; i++ {
		for j := maxInter; j > i; j-- {
			if arr[j-1] > arr[j] {
				temp := arr[j]
				arr[j] = arr[j-1]
				arr[j-1] = temp
			}
		}
	}
	return arr
}

单元测试

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

二、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多年的发展,随着开普勒、伽利略和牛顿工作的进展,特别是恒星光行差和视差的发现,终于否定了地心说和日心说,提出了大爆炸说。天文学的发展表明,太阳仅仅是一个普通恒星,它并不在宇宙的中心。

        

  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值