ARTS挑战第六周

本文深入探讨了数组加一算法的实现细节,通过递归求解展示算法设计思路。同时,文章详细讲解了TCP三次握手和四次挥手的过程,分析了其背后的原理与常见问题,如死锁避免、资源浪费防止等,为读者提供了丰富的信息技术知识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.Algorithm

1.1 加一

给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
示例 1:
输入: [1,2,3]
输出: [1,2,4]
解释: 输入数组表示数字 123。
示例 2:
输入: [4,3,2,1]
输出: [4,3,2,2]
解释: 输入数组表示数字 4321。

1.1.1 递归求解

  • 1.对数组的末尾+1
    • 1.1如果是9,该位置为0,剩余元素进入步骤1
    • 1.2如果不是9,该元素+1退出
  • 2.输出
    • 2.1如果首位为0,加一位元素,并且置为1
    • 2.2如果首位不为0,直接输出

找到有规律的点,也就是重复的步骤

class Solution {
    public int[] plusOne(int[] digits) {
        for(int i = digits.length - 1; i >= 0; i--) {
            if (digits[i] == 9) {
                digits[i] = 0;
            } else {
                digits[i] += 1;
                break;
            }
        }
        if (digits[0] == 0) {
            digits = new int[digits.length + 1];
            digits[0] = 1;
        }
        return digits;
    }
}

2.Review

3.Tip

3.1 C# Linq之GroupBy()

使用GroupBy后,返回IGrouping<Tey,Source>接口的枚举对象

foreach(var item in igrouping)
{
	item.key //输出分组依赖的内容
	item["HRID"]	//遍历该组中的每条数据
}

4.Share

4.1 三次握手,四次挥手

4.1.1 三次握手

当客户端和服务端都可以接受发送信息时,TCP连接才可以建立。
就像两个人打电话:

客户端 服务端 A B SYC ACK/SYC ACK 你能听见吗?SYC 我能听见(ACK)/你呢?(SYC) 我也能(ACK) 客户端 服务端 A B

【问题1】为什么不是两次握手:

  • 情况一:第二次握手时ACK/和SYC丢失,此时服务端认为连接已经建立,开始发送客户端请求的响应内容,但是客户端还在等待服务端的ACK/SYC,此时就产生了死锁。
  • 情况二:客户端发送的SYC在经过很久以后到达服务端,此时客户端已经停止等待响应了,这个SYC其实已经无效,但是服务端收到后就进入链接状态造成资源浪费

4.1.2 四次挥手

客户端 服务端 C S FIN ACK FIN/ACK ACK FIN 请求关闭 ACK 你关闭吧,但是我还要给你发点东西,你得接收啊 FIN/ACK 我也要关了 ACK 我知道了 客户端 服务端 C S

【问题2】为什么客户端最后还要等待2MSL?
【问题3】为什么建立连接是三次握手,关闭连接确是四次挥手呢?
【问题4】如果已经建立了连接,但是客户端突然出现故障了怎么办?
【问题5】什么是TIME_WAIT状态?

对三次握手通俗的一个解释
面试必备:三次握手与四次挥手
以下两个讲的差不多
TCP的三次握手与四次挥手理解及面试题(很全面)
TCP的三次握手与四次挥手(详解+动图)

内容概要:本文深入探讨了Kotlin语言在函数式编程和跨平台开发方面的特性和优势,结合详细的代码案例,展示了Kotlin的核心技巧和应用场景。文章首先介绍了高阶函数和Lambda表达式的使用,解释了它们如何简化集合操作和回调函数处理。接着,详细讲解了Kotlin Multiplatform(KMP)的实现方式,包括共享模块的创建和平台特定模块的配置,展示了如何通过共享业务逻辑代码提高开发效率。最后,文章总结了Kotlin在Android开发、跨平台移动开发、后端开发和Web开发中的应用场景,并展望了其未来发展趋势,指出Kotlin将继续在函数式编程和跨平台开发领域不断完善和发展。; 适合人群:对函数式编程和跨平台开发感兴趣的开发者,尤其是有一定编程基础的Kotlin初学者和中级开发者。; 使用场景及目标:①理解Kotlin中高阶函数和Lambda表达式的使用方法及其在实际开发中的应用场景;②掌握Kotlin Multiplatform的实现方式,能够在多个平台上共享业务逻辑代码,提高开发效率;③了解Kotlin在不同开发领域的应用场景,为选择合适的技术栈提供参考。; 其他说明:本文不仅提供了理论知识,还结合了大量代码案例,帮助读者更好地理解和实践Kotlin的函数式编程特性和跨平台开发能力。建议读者在学习过程中动手实践代码案例,以加深理解和掌握。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值