Linux常用命令记录
进程、线程查看 1 2 3 4 5 6 top -H # 监控 Linux 系统状况,比如cpu、内存的使用 ps -T # ps命令用来列出系统中当前运行的那些进程 # -b 以批处理模式启动top命令。当你想要在文件中保存输出时是很有用的。 # -n 设置top退出前迭代的次数 # -p 监控特定进程 # -i 空闲进程/非空闲进程切换 ...
进程、线程查看 1 2 3 4 5 6 top -H # 监控 Linux 系统状况,比如cpu、内存的使用 ps -T # ps命令用来列出系统中当前运行的那些进程 # -b 以批处理模式启动top命令。当你想要在文件中保存输出时是很有用的。 # -n 设置top退出前迭代的次数 # -p 监控特定进程 # -i 空闲进程/非空闲进程切换 ...
问题提出 场景一 维持长链接,为每个长链接分配三个goroutine 一个负责读数据 一个负责写数据 一个负责维持心跳 高并发场景,goroutine的数量会是连接数的三倍! ...
缓存机制 受制于数据库操作速度(磁盘操作)和连接池数量限制,在一些高并发场景,通常会设计缓存(内存操作)来减轻DB压力,进行流量削峰。 本质上来说就是更多地延缓用户请求,将请求拦截在上游,以及层层过滤用户的访问需求,遵从“最后落地到数据库的请求数要尽量少”的原则。 ...
371. 两整数之和 题目 不使用运算符 + 和 - ,计算两整数 a 、b 之和。 示例 1: 1 2 输入: a = 1, b = 2 输出: 3 示例 2: 1 2 输入: a = -2, b = 3 输出: 1 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/sum-of-two-integers 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 ...
Reactor模式用于同步I/O,Proactor运用于异步I/O操作 阻塞模型 同步和异步 针对应用程序和内核交互而言 同步:用户进程触发I/O操作,等待或轮询去查看I/O操作是否就绪 异步:用户进程触发I/O操作后,去做自己的事情,I/O操作完成后给予通知 阻塞和非阻塞 进程在访问数据的时候,根据I/O操作的就绪状态采取不同的方式,即读取或写入操作函数的实现方式 ...
验证栈序列 题目 给定 pushed 和 popped 两个序列,每个序列中的 值都不重复,只有当它们可能是在最初空栈上进行的推入 push 和弹出 pop 操作序列的结果时,返回 true;否则,返回 false 。 ...
最大最小值常量 1 2 3 4 5 const UINT_MIN uint = 0 const UINT_MAX = ^uint(0) const INT_MAX = int(^uint(0) >> 1) const INT_MIN = ^INT_MAX time包:秒、毫秒、纳秒时间戳输出 https://www.junjie.in/article/34 1 2 3 4 fmt.Printf("时间戳(秒):%v;\n", time.Now().Unix()) fmt.Printf("时间戳(纳秒):%v;\n",time.Now().UnixNano()) fmt.Printf("时间戳(毫秒):%v;\n",time.Now().UnixNano() / 1e6) fmt.Printf("时间戳(纳秒转换为秒):%v;\n",time.Now().UnixNano() / 1e9) 类型断言 https://studygolang.com/articles/20041 1 2 3 4 5 i := "1" if v, ok := i.(int); ok { fmt.Println("to int", i) } // string的uid 转 10进制int 类型断言和类型转换 类型转换 语法:<结果类型> := <目标类型> ( <表达式> ) 类型转换是用来在不同但相互兼容的类型之间的相互转换的方式,所以,当类型不兼容的时候,是无法转换的。 例如 各种int类型,[]byte和string类型 类型断言 语法: <目标类型的值>,<布尔参数> := <表达式>.( 目标类型 ) // 安全类型断言 <目标类型的值> := <表达式>.( 目标类型 ) //非安全类型断言 类型断言的本质,跟类型转换类似,都是类型之间进行转换,不同之处在于,类型断言实在接口之间进行。 在switch中 <目标类型的值> := <表达式>.( type )后,case 目标类型 字符串和数组互转 1 2 strings.Split(uidStr, ",") strings.Join(strSlice, ",") 类型转换 int 之间互相转 ...
柠檬水找零 题目 在柠檬水摊上,每一杯柠檬水的售价为 5 美元。 顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。 每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5 美元。 ...
下一个更大元素 I 题目 给定两个没有重复元素的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集。找到 nums1 中每个元素在 nums2 中的下一个比其大的值。 nums1 中数字 x 的下一个更大元素是指 x 在 nums2 中对应位置的右边的第一个比 x 大的元素。如果不存在,对应位置输出-1。 ...
用 Rand7() 实现 Rand10() 题目 已有方法 rand7 可生成 1 到 7 范围内的均匀随机整数,试写一个方法 rand10 生成 1 到 10 范围内的均匀随机整数。 不要使用系统的 Math.random() 方法。 1 2 3 4 5 6 7 8 9 10 11 示例 1: 输入: 1 输出: [7] 示例 2: 输入: 2 输出: [8,4] 示例 3: 输入: 3 输出: [8,1,10] 提示: ...
奇偶链表 题目 给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。 请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。 ...
面试题47. 礼物的最大价值 题目 在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物? ...
动态规划一般出现在难度中上的题目中,一直以来都是比较束手无策的! 抽空看了一章“九章算法”的【动态规划专题班】动态规划入门 Introduction to Dynamic Programming,讲的挺好的。下面是笔记 消除恐惧的最好办法就是面对恐惧! ...
46. 全排列 46. 全排列 Difficulty: 中等 给定一个 没有重复 数字的序列,返回其所有可能的全排列。 示例: 1 2 3 4 5 6 7 8 9 10 输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ] Solution1 普通递归 Language: Go ...
112. 路径总和 题目 给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。 说明: 叶子节点是指没有子节点的节点。 ...
11. 盛最多水的容器 题目 给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 ...
Golang字符串注意点⚠️ 对字符串 range的时候,v并不是byte类型而是rune(底层为int32) 1 2 3 4 s := "hello world" for _, v := range s { fmt.Printf("%c, %T", v, v) } 字符串直接取某一位,比s[0],类型为byte(底层为uint8) ...
141. 环形链表 题目 给定一个链表,判断链表中是否有环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。 ...
26. 删除排序数组中的重复项 描述 给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 示例 1: 给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面的元素。 示例 2: 给定 nums = [0,0,1,1,1,2,2,3,3,4], 函数应该返回新的长度 5, 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4。 你不需要考虑数组中超出新长度后面的元素。 ...