- 博客(149)
- 资源 (7)
- 收藏
- 关注
转载 realloc() 用法详解
原型:extern void *realloc(void *mem_address, unsigned int newsize);语法:指针名=(数据类型*)realloc(要改变内存大小的指针名,新的大小)。 //新的大小若小于原来的大小,原数据的末尾可能丢失(被其他使用内存的数据覆盖等)头文件:#include <stdlib.h> 有些编译器需要#include <malloc.h>,在TC2.0中可以使用alloc.h头文件功能:先判断当前的指针是否...
2020-08-27 17:02:11 28949 4
原创 144. 二叉树的前序遍历 145. 二叉树的后序遍历 94. 二叉树的中序遍历(多种解法的进阶)
144. 二叉树的前序遍历题目:给定一个二叉树,返回它的前序遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3]解法1:递归class Solution {private: void takeVal(TreeNode *root, vector<int>& res) { if (NULL == root) return;..
2020-07-03 18:39:50 3573
原创 151. 翻转字符串里的单词 ( 三种实现)
题目要点:1:字符串首尾都有可能存在多余的空格2:字符串中间单词之间又可能存在连续多个空格解法1:从字符串手择单词,放到一个缓存数组里class Solution {private: //传入字符串的左下标,确定单词的有效左右下标,右下标指向单词的下一位 bool getWord(const string& s, int len, int& left, int& right) { while (left < len &
2020-06-30 13:10:18 4296
原创 文件系统中元数据的隐患——字符串
业务需要聚焦自己的字符串信息圈定的是哪些字符集,字符集哪些字符的编码,以及业务链路中(直至持久化),字符编码的方式变化。其他字符集如 Unicode可以对等着考虑,需要更多字节,能表示更多字符还可扩展,编码规则复杂,引起的问题也更诡异。每个类型后面的存储原理、编码解码、字节转换,以及多类型相互转换和展示、编码转码、大小写转换,每个拎起来都能写一大篇,这里我们只说关键的点。和业务的直接关系很小,但是本质都血肉关联。很多对象存储的命名都只限于ASCII的可显示字符,是很明智的举动,减少了很多麻烦事。
2024-07-29 11:34:40 351
原创 文件系统中元数据的隐患——缓存
抽象出基本信息,多 key信息存储。直接影响是原来获取一次,现在需要获取多次,极端情况下,有长尾请求的 bad case,可以根据具体情况优化逻辑,全局考虑下一般可接受。理想的方式是对文件粒度的读访问限流,但是很少这么做,就像普通用户 Windows 系统装防火墙一样...代价大价值很难凸显。综上,正对业务使用的大 key缓存需求,本质要求设计者和编程者对缓存目标有一定的认知,了解缓存的利弊,使用时根据情况取舍粒度。前提是需要梳理业务逻辑,对目标对象的缓存本身进行分析,哪些情况QPS 达到多少就会有隐患。
2024-07-25 19:03:03 576
原创 GO—CPU占用高问题归类
使用pprof和trace等工具可以分析程序的CPU占用情况和对象分配情况等,帮助精确定位性能问题的原因。这种是铁打的静态定位工具,很多线上问题没有现场,靠有效日志能够溯源问题根因。使用sync.Pool或手动维护的内存池等机制来提高程序的性能和稳定性。程序实现存在性能问题,导致瓶颈点很低,如没有合理实现算法和语言特性等。应尽可能避免使用阻塞操作,例如网络I/O和文件I/O操作等。变量或者数据结构使用不当,引起频繁 GC。此类问题除了CPU 过高问题,还会骤降。2 频繁的内存分配和回收。
2024-07-16 17:03:16 466
原创 交替打印-GO
1 两个channel 版本无缓冲的通道(unbuffered channel)是指在接收前没有能力保存任何值的通道。这种类型的通道要求发送 goroutine 和接收 goroutine同时准备好,才能完成发送和接收操作。
2024-07-09 15:07:45 355
原创 视频知识整理
与首先下载整个媒体文件不同,内容以数据包的形式一次传输几秒钟,然后存储在用户的设备上以供远程播放。而是,视频数据包一次传输几个,因此视频会分部分加载,而不是一次性加载。:根据解封装模块处理过程中获取到的参数信息,同步解码出来的视频和音频数据,并将视频音频数据送至系统的显卡和声卡播放出来。任何形式的媒体消费,只要内容以小块数据包的形式传输给最终用户,而不是首先完全下载,都可以被视为构成流媒体。如果播放本地文件则不需要解协议,为以下几个步骤:解封装,解码视音频,视音频同步。HLS协议基于TS流实现的。
2024-04-11 15:51:26 898
原创 GO json-struct转换数值类型变化
现象:整数变成float64。原因:json 中是没有整型和浮点型之分,数字都是同一种类型,Unmarshal 方法转出的数字类型都是 float64。解决办法:使用 json.Decoder 来代替 json.Unmarshal 方法。首先创建一个 jsonDecoder,然后调用UseNumber 方法,从文档中可以知道,使用 UseNumber 方法后,json 包会将数字转换成一个内置的 Number 类型(而不是 float64),这个 Number 类型提供了转换为 int64、flo.
2021-12-16 10:54:05 581
原创 11. 盛最多水的容器
题目给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点(i,ai) 。在坐标内画 n 条垂直线,垂直线 i的两个端点分别为(i,ai) 和 (i, 0) 。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器。输入:[1,8,6,2,5,4,8,3,7]输出:49解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为49。示例 2:输入:heig...
2021-11-17 21:39:20 117
原创 整数反转 回文数 GO语言
题目给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围[−231,231− 1] ,就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。示例 1:输入:x = 123输出:321示例 2:输入:x = -123输出:-321示例 3:输入:x = 120输出:21示例 4:输入:x = 0输出:0提示:-231<= x <= 231- 1fun...
2021-11-12 22:24:29 302
原创 go 管道多线程demo
package mainimport "fmt"func write(data chan int){ for i := 0; i < 30; i++ { data<- i //fmt.Println("------------------") //fmt.Println(i) } close(data)}func read(data chan int, over *bool){ for { v, ok := <- data if !ok { .
2021-11-03 19:33:30 205
原创 nohup使用
执行语句:nohup sh myshell.sh>output.txt2>&1 &语义:后台执行shell文件(不受连接断开等影响),shell的输出和错误信息在文件output.txt中。分解: 蓝色:后台执行 绿色:执行shell 黄色:shell的输出文件重命名,没有的话默认文件是nohup.out 紫色:错误信息重定向在标准输出中。而不是2>output.txt,会导致文件outpu...
2021-10-13 14:48:29 119
原创 字符和字节 MYSQL和GO
SQL中区分SQL计算字段长度有两个方法:length()char_length()length()mysql> select length("abc");+---------------+| length("abc") |+---------------+| 3 |+---------------+mysql> select length("我是谁");+---------------------+| length("我是谁".
2021-08-18 19:07:23 131
原创 整体把握七大排序,就靠它了
目录notice:冒泡排序工作原理实现思想动图视频伪代码特点插入排序工作原理实现思想动图视频伪代码特点归并排序工作原理实现思想动图视频伪代码特点选择排序工作原理实现思想细节动图视频伪代码特点希尔排序工作原理实现思想细节特点堆排序工作原理实现思想C++代码特点快速排序工作原理实现思想细节动图视频伪代码特点总结noti...
2021-04-01 21:51:02 437 1
原创 go语言 类型的打印占位符
格式化打印占位符%v 原样输出%t bool类型%s 字符串%f 浮点%d 10进制的整数%b 2进制的整数%o 8进制%x,%X 16进制 %x:0-9,a-f %X:0-9,A-F%c 打印字符%p 打印地址%T 打印类型...
2021-03-12 17:18:13 506
原创 725. 分隔链表 借助非递归排序思路,拆分链表
题目给定一个头结点为 root 的链表, 编写一个函数以将链表分隔为 k 个连续的部分。每部分的长度应该尽可能的相等: 任意两部分的长度差距不能超过 1,也就是说可能有些部分为 null。这k个部分应该按照在链表中出现的顺序进行输出,并且排在前面的部分的长度应该大于或等于后面的长度。返回一个符合上述规则的链表的列表。举例: 1->2->3->4, k = 5 // 5 结果 [ [1], [2], [3], [4], null ]示例 1:输入:root .
2020-10-27 21:24:17 132
原创 445. 两数相加 II 两种解法(数组和栈)
题目给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。进阶:如果输入链表不能修改该如何处理?换句话说,你不能对列表中的节点进行翻转。示例:输入:(7 -> 2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 8 -> 0 -> 7解析该题目有一个困惑点,就是结..
2020-10-27 20:50:34 154
原创 287. 寻找重复数 两种实现
题目给定一个包含n + 1 个整数的数组nums,其数字都在 1 到 n之间(包括 1 和 n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。示例 1:输入: [1,3,4,2,2]输出: 2示例 2:输入: [3,1,3,4,2]输出: 3说明:不能更改原数组(假设数组是只读的)。只能使用额外的 O(1) 的空间。时间复杂度小于 O(n2) 。数组中只有一个重复的数字,但它可能不止重复出现一次。解法:二分法class Sol...
2020-10-23 19:07:16 99
原创 88. 合并两个有序数组 一遍遍历,减少临时变量
题目给你两个有序整数数组nums1 和 nums2,请你将 nums2 合并到nums1中,使 nums1 成为一个有序数组。说明:初始化nums1 和 nums2 的元素数量分别为m 和 n 。你可以假设nums1有足够的空间(空间大小大于或等于m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = 3nums2 = [2,5,6], n = 3输出:[1,2,2,3,5,6]解法:...
2020-10-22 21:28:26 133
原创 86. 分隔链表 哨兵节点,两种实现
题目给定一个链表和一个特定值x,对链表进行分隔,使得所有小于x的节点都在大于或等于x的节点之前。你应当保留两个分区中每个节点的初始相对位置。示例:输入: head = 1->4->3->2->5->2, x = 3输出: 1->2->2->4->3->5解法1:哨兵节点,在原链表挑小数节点到辅助链表里class Solution {public: ListNode* partition(ListN...
2020-10-21 19:56:44 111
原创 80. 删除排序数组中的重复项 II 双指针的两种解法
题目给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例1:给定 nums = [1,1,1,2,2,3],函数应返回新长度 length = 5, 并且原数组的前五个元素被修改为 1, 1, 2, 2, 3 。你不需要考虑数组中超出新长度后面的元素。示例2:给定 nums = [0,0,1,1,1,1,2,3,3],函数应返回..
2020-10-21 18:52:15 90
原创 75. 颜色分类 2+1指针和三指针两种方法,算法原理分析
75. 颜色分类给定一个包含红色、白色和蓝色,一共n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、1 和 2 分别表示红色、白色和蓝色。注意:不能使用代码库中的排序函数来解决这道题。示例:输入: [2,0,2,1,1,0]输出: [0,0,1,1,2,2]进阶:一个直观的解决方案是使用计数排序的两趟扫描算法。首先,迭代计算出0、1 和 2 元素的个数,然后按照0、1、2的排序,重写当前数组。你能想..
2020-10-16 20:44:42 213
原创 61. 旋转链表 详细思路和细节解析 双指针
61. 旋转链表给定一个链表,旋转链表,将链表每个节点向右移动k个位置,其中k是非负数。示例1:输入: 1->2->3->4->5->NULL, k = 2输出: 4->5->1->2->3->NULL解释:向右旋转 1 步: 5->1->2->3->4->NULL向右旋转 2 步: 4->5->1->2->3->NULL示例2:输入: 0->...
2020-10-16 18:56:38 140
原创 42. 接雨水 时间空间优化,双指针,用栈等五种方法
42. 接雨水[hard]给定n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。感谢 Marcos 贡献此图。示例:输入: [0,1,0,2,1,0,1,3,2,1,2,1]输出: 6思路 如果走到每一格,知道该格能达到最高的水位就好了。这确实是个好想法,所以该想想怎么去求每格最高水...
2020-10-15 20:35:16 166
原创 19. 删除链表的倒数第N个节点 一次遍历和两次遍历实现(有哨兵和无哨兵)三种解法
19. 删除链表的倒数第N个节点给定一个链表,删除链表的倒数第n个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n保证是有效的。进阶:你能尝试使用一趟扫描实现吗?解法1:两次遍历,单指针 第一遍遍历计算长度,第二遍删除节点,倒数第N个,就是正数第len-N+1个,即找第len-N个节点完成...
2020-10-14 20:49:47 207
原创 316. 去除重复字母 用hash表记录字母出现次数,贪心法一个个字符处理
题目给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次。需保证 返回结果的字典序最小(要求不能打乱其他字符的相对位置)。注意:该题与 1081 https://leetcode-cn.com/problems/smallest-subsequence-of-distinct-characters 相同示例 1:输入:s = "bcabc"输出:"abc"示例 2:输入:s = "cbacdcbc"输出:"acdb"提示:1 <= s.
2020-10-13 21:31:09 194
原创 16. 最接近的三数之和 无短路判断
题目给定一个包括n 个整数的数组nums和 一个目标值target。找出nums中的三个整数,使得它们的和与target最接近。返回这三个数的和。假定每组输入只存在唯一答案。示例:输入:nums = [-1,2,1,-4], target = 1输出:2解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。提示:3 <= nums.length <= 10^3 -10^3<= nums[i]<= 10^3 -1...
2020-10-13 21:24:05 83
原创 3. 无重复字符的最长子串 30. 串联所有单词的子串 滑动窗口 C/GO语言
题目给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例1:输入: "abcabcbb"输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pwwkew"输出: 3解释: 因为无重复字符的最长子串是"wke",所以其长度为 3。 请注意,你的答案必须是 子串 的长度,"pwke"是一个子序列...
2020-10-12 20:23:32 180
原创 128. 最长连续序列 找目标序列的最小数或者最大数
题目给定一个未排序的整数数组,找出最长连续序列的长度。要求算法的时间复杂度为O(n)。示例:输入:[100, 4, 200, 1, 3, 2]输出: 4解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。思路最长连续序列一定是从序列的最小数开始,到序列的最大数结束,或者最大数到最小数。无需重复计算,只需指定一种方向,这里找最小数到最大数的序列长度。 若一个数小1的数在集合里出现,则这个数不是最小数,则其增长序列一定不是最长的。解法:将所有数放到ha..
2020-10-12 20:08:21 169
原创 __attribute__ (( unused,__cleanup__)),FRR的互斥锁
今天看了下FRR中常见的一个锁实现,当然离开不了其中强大的宏frr_with_mutex。以一个示例慢慢揭开它的面纱吧。 frr_with_mutex(&m->mtx) { if (XXX) break; /* *对m的操作 */ AWAKEN(m); } 为了知道frr_with_mutex是什么,接下来是一层层扒开宏,接下来的宏可能比较枯燥,不愿细看推倒可以直接看后面宏结果/* mut...
2020-09-16 17:03:00 497
原创 面试题 17.14. 最小K个数 347. 前 K 个高频元素
面试题 17.14. 最小K个数题目设计一个算法,找出数组中最小的k个数。以任意顺序返回这k个数均可。示例:输入: arr = [1,3,5,7,2,4,6,8], k = 4输出: [1,2,3,4]提示:0 <= len(arr) <= 1000000 <= k <= min(100000, len(arr))class Solution {public: vector<int> smallestK(vector<i
2020-09-11 15:36:55 180 1
《统计建模与R软件》源程序及电子书
2017-08-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人