Go的面向对象设计
简介Go是面向对象的语言吗?在Go的官网中谈到Go是否是面向对象是用的是 Yes and No明显Go是允许OO的编程风格的,但又缺乏一些Java和C++中的常见类型继承结构,Go的interface隐式实现也和Java中的显式用法大相径庭,
Is Go an object-oriented language?Yes and no. Although Go has types and metho ...
算法技巧-双指针
前言双指针技巧在算法题中算是常用技巧了,让我们省去for循环,降低复杂度,通常双指针技巧可以分为2大类
快慢指针
左右指针
前者主要解决链表中的问题,比如链表是否有环,删除倒数第N个节点等,后者主要解决数组、字符串中的问题,比如二分查找、翻转数组等,下面将详细介绍下
快慢指针下面结合实例来介绍快慢指针在实际中的用途
判断链表是否有环单链表的特点是每个节点只知道下一个节点,所以一个指针的话无法判 ...
算法技巧-DFS与BFS
前言深度优先遍历(Depth First Search, 简称 DFS) 与广度优先遍历(Breath First Search)是图论中两种非常重要的算法,生产上广泛用于拓扑排序,也频繁出现在 leetcode,高频面试题中。
DFS介绍深度优先遍历主要思路是从图中一个未访问的顶点V开始,沿着一条路走到底,然后从这条路的尽头的节点回退到上一个节点,再从另一条路开始走到底,以此往复,直到所有的顶点 ...
算法题的一些集合
数组704. 二分查找(easy)描述
排序数组、无重复
要点分析
主要是在开闭区间选择上决定处理边界的不同, [left,right],还是[left,right)闭区间 定义left,right = num.size-1,这样[left,right]两边都能取值,while循环比较时也是闭环开区间 定义left,right = num.siz, 这样[left,right) ...
Slice中的坑
slice 介绍像其他语言一样,都是有数组,数组是具备固定类型和固定长度的,因此使用起来不是很方便,因此go引入了silce,表示一个拥有相同元素类型的可变长度的序列。数组和slice是紧密关联的,slice是一种轻量级的数据结构,可以用来访问数组的部分或者全部元素。slice中有三个属性:指针、长度和容量
12345type SliceHeader struct { Data uint ...
shell编程实践
背景最近在搞一些CI/CD,搞了一些脚本,主要是shell,shell的开箱即用确实比较方便,至少无需在宿主上安装运行环境,本篇文章主要解释shell脚本实践过程中一些经验总结。
模块化刚开始看一些之前的shell脚本,一个脚本大几百行,很少有函数的情况,其实shell脚本也可以函数化,按照模块的拆分,这样就会带来良好的可读性和可维护性,通常我们会先定义main函数,将功能分解为一个个子 ...
shell学习笔记
字符串字符串替换
${变量名#匹配规则} 从变量开头进行规则匹配,将符合最短的数据删除。
${变量名##匹配规则} 从变量开头进行规则匹配,将符合最长的数据删除。
${变量名%匹配规则} 从变量尾部进行规则匹配,将符合最短的数据删除。
${变量名%%匹配规则} 从变量尾部进行规则匹配,将符合最长的数据删除。
${变量名/旧字符串/新字符串} 变量内容符合旧字符串,则第一个旧字 ...
MVI架构结合Flow、Channel
翻译自 https://proandroiddev.com/mvi-architecture-with-kotlin-flows-and-channels-d36820b2028d
MVVM是许多开发者推荐使用的架构,但是就像其他事情一样,架构的模式也在不停的进化中
MVI是MVx家族中最新的成员,它和MVVM具有很多共同点,但是在状态管理上有更加结构化的方式
MVI聚焦三个部分 Model- ...
Gradle学习之AGP构建及打包流程
Android Gradle Plugin 简称AGP 是Android编译链中的核心部分,它在Gradle插件的位置如下
本文主要介绍在打出一个APK时 AGP构建的流程以及打包核心流程
AGP的构建流程由于AGP版本更新变化较大,比如AGP8.0 Transform API将被移除,具体版本变化可以参考Android Gradle 插件版本说明
本文基于
implementation ‘ ...
Flow学习笔记2-SharedFlow与StateFlow
SharedFlow和StateFlow托RxJava的福事件流,Kotlin现在也提供了自己的反应式流的实现,称之为Flow,和RxJava一样,KotlinFlow可以创建流并且响应,事件流同样有冷流和热流(冷流只有在订阅的时候才会发出事件,而热流则没有这种限制),StateFlow和ShareFlow是属于热流,(他们主要用来取代channel)本文主要介绍一下SharedFlow和Stat ...








