ARTS打卡第二周

概述

        infoq的arts打卡学习,贯彻左耳朵耗子的学习理念,活到老学到老,每天都精进一点,日拱一卒无有悔,功不唐捐终如海

一、Algorithm 一道算法题

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

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

// 二分查找法
func BinarySearch(arr []int, target int) int {
	start := 0
	end := len(arr) - 1
	for start <= end {
		mid := (start + end) / 2
		if arr[mid] == target {
			return mid
		}
		if arr[mid] > target {
			end = mid - 1
		} else {
			start = mid + 1
		}
	}
	return -1
}

单元测试

func TestBinarySearch(t *testing.T) {
	Convey("二分查找法", t, func() {
		// 找到的情况
		arr := []int{1,3,4,5,7,9,10}
		res := BinarySearch(arr, 10)
		So(res, ShouldEqual, 6)
		// 找不到的情况
		res = BinarySearch(arr, 11)
		So(res, ShouldEqual, -1)
		// 数组不是有序数组
		arr = []int{1,3,4,20,7,9,10}
		res = BinarySearch(arr, 10)
		So(res, ShouldEqual, -1)
	})
}

 

二、Review 读一篇英文文章

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

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

        在高并发场景下,使用提前计算代替实时计算,带来非常大的性能提升

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

        现状:初始时,只有几台服务器,每一个请求来的时候都会实时计算几台服务器的得分,然后取最优。随着时间的推移,服务器数量增加至几百台,几千台,每一次实时计算都会取数据,存在大量io操作,消耗非常多资源

        优化:每10秒钟计算一次服务器的负载得分,并将其写入排行榜中,在寻址取出时,则取前三然后在3个中取最优,这样只需要3次网络io就取得了最优解,大大地减少了服务器资源的占用

四、Share 分享一个观点

        家庭沟通有时候是情绪沟通。最近因小孩入学的事,与老婆在观点上有碰撞冲突,与其说她在问我意见,不如说是走一个过场,让我遵循她的意愿。然而我没有读懂这层意思。

        小儿子准备3岁,要去读幼儿园了,幼儿园有小、中、大班,今年新增了托班,托班比小班人数少5个,学费贵500一个学期,课程差不多。我的想法是让他读小班,而爱人呢却想让他读托班。理由是托班人数少,老师更重视能得到更好的教育,有启智课程更好开发大脑发育。我则说选小班:小班学费低,里面的小孩都是普通家庭小孩,没有那么娇气;启智课程是个噱头,没有什么实质性的教学;小班的小孩年龄相对偏大些,相比托班更优秀;看起来托班更好,实则是幸存者偏差,未必没有虚荣心在其中作怪。

        观点分歧一度陷入僵局,气氛充满单方面的火药味,我一直用平静的语气,然而内心却一直感受着他生气的情绪,无法平静心里焦灼,我想如果我们能坐下来,理性地做个竞品分析,结果可能就一目了然了。搞得大家都不开心,我感觉内心也愧疚,感觉应该让步但是好像让步了就是小孩的损失。

        最后还是她想通了:托班升到中班之后就要被拆散,到时候又得换老师了,对小孩不好。于是选择了小班。其实换一个角度思考,想要说服一个人,得要站在他所关注的重点出发,才能更好的让对方认可接受

        

  

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 内容概要 《计算机网络》文档包含了70个关于计算机网络基础知识的单项选择题,内容涉及互联网起源、网络协议、IP地址、DNS服务、电子邮件、网络拓扑结构、网络设备、网络连接方式、网络速度等多个方面。每个问题后面都提供了正确答案,适合作为学习和测试材料。 ### 适用人群 本文档适合以下人群: - 计算机科学与技术、信息技术、网络工程等专业的在校学生。 - 准备计算机网络相关考试或认证的专业人士。 - 对计算机网络基础知识感兴趣的自学者。 - 信息技术教师,作为教学资源或测试材料。 ### 使用场景及目标 1. **学习测试**:作为学生学习计算机网络理论知识后的测试工具,检验学习效果。 2. **教学辅助**:教师可以用于课堂教学,作为课后作业或课堂小测验,增强学生的理解和记忆。 3. **自学检验**:个人自学者可以通过这些题目检验自己对计算机网络基础知识的掌握程度。 4. **职业发展**:职场人士可以通过学习和测试,提升自己在计算机网络领域的专业能力。 5. **竞赛准备**:适合准备计算机网络相关竞赛的学生,作为强化训练材料。 文档的目标是通过这些精心设计的题目,帮助读者全面了解和掌握计算机网络的基本概念、原理和应用,提高解决实际问题的能力。通过学习和练习,读者将能够更加深入地理解计算机网络的工作原理,为进一步的专业学习或职业发展打下坚实的基础。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值