- 博客(190)
- 问答 (1)
- 收藏
- 关注
原创 代码马拉松,继续奔跑
这次将再爬上,西西弗斯的再次攀登,采用一个不一样的路径。这一年,要毕业了,找到了工作,还是程序员,留在了北京。刷题:leetcode目前500题,希望到1000题。基础复习:牛客hot100、acwing基础。基础学习:acwing进阶,acwing高级。距离上次的“代码马拉松”,已经有1年时间了。越来越感觉到,leetcode对我的魔力。所以继续leetcode马拉松!
2024-05-19 18:11:17
213
转载 转载:春哥的程序人生
春哥的编程之旅起于抄书,就算如今已是罕见的编程高手,春哥依然逢人大力推荐他的抄书学编程之法。春哥先后在中国雅虎、淘宝、Cloudflare 就职,但开源世界是他如一的眷念。如今,春哥已全身心投入 OpenResty 的崭新蓝图,期待 OpenResty 未来能在工业界、互联网行业引领“机器编程”革命。很荣幸这次图灵访谈可以对话春哥,让我们来一起了解一下春哥的快意程序人生。春哥,本名章亦春,开源项目 OpenResty 创建者和推动者春哥的时间线(毕业之后)
2023-05-22 15:34:31
593
原创 一文总结c++中的lambda
一般情况下,编译器可以自动推断出lambda表达式的返回类型,所以我们可以不指定返回类型。参数中可以用auto, 实现泛型的效果。可以捕捉lambda函数所在函数 的局部变量。[&] 自动捕获所有局部变量的引用。[=] 自动捕获所有局部变量的值。可以发现已经改变局部变量的值。
2023-05-19 17:46:38
264
原创 vscode 标签的使用
设置一个你喜欢的快捷键 ,这代表 在光标所在的行上添加一个标签。再来 需要看method_descriptor 的定义 , 跳转到后, 标上标签。再来 需要看service_descriptor的定义,跳转到后,标上标签。我通常喜欢左边放置写的代码 , 右边放源码, 如下所示。比如我在写某行 ,需要看service的定义,标上标签。shift+command+p. 调出命令行。总共三个 , 用跳转到上一个/下一个十分方便。这时候,我就可以 在源码中, 打上标签,写代码的时候,时常需要看源码。
2023-05-14 19:23:03
1751
原创 proto库的基本使用
编写 xxx.proto文件protoc test.proto --cpp_out=“./” // 生成相应的代码,包含数据类型的编码// main.cpp 为调用proto的代码, 链接动态库进行编译-lpthreadtest.protostring 定义成byte会更好// 定义登陆请求消息类型// 表明第一个字段// 定义第二个字段// 定义登陆响应消息类型一个对象中包含另一个对象即为组合test.proto// 定义登陆响应消息类型bytes name;
2023-05-08 14:24:01
1037
原创 protobuf的安装 linux 亲测可用
3. 安装所需工具: sudo apt-get install autoconf automake libtool curl make g++ unzip。链接: https://pan.baidu.com/s/17A2_A6b1AgjZCcZ5k6YfSg 提取码: avqd。1. 解压压缩包: unzip protobuf-master.zip。2. 进入解压后的文件夹: cd protobuf-master。5. 配置环境: ./configure。--来自百度网盘超级会员v5的分享。
2023-05-04 22:09:41
293
原创 单源最短路问题
queue 代表刚被更新的点 它有可能更新其他路径 所以检查它的出边。dis[0 ]=0 dis[i]=+OO 只有起点被确定到了。dij实现的时候是通过 将距离设置成无穷大 来表达 不可达。dij 由于边很多, 稠密图 所以用邻接矩阵存即可。dij 需要找n个点 所以外层是一个for循环x。dis[] 代表第k到某一点的最短距离。 t《- 不在s中的距离最近的点。isin代表该点是否在queue中。 用t更新其他点的距离(看下)s:当前已经确定最短路径距离的点。欢迎大家star与fork。
2023-05-02 13:18:36
686
原创 树与图的存储-邻接表与邻接矩阵-深度广度遍历
graph 设置成long long 以防 INT_MAX+l 变成负数。邻接矩阵 采用矩阵存储,graph[i][j] 代表i到j边的权重。邻接表 每个点 用一个单链表 存储它的出边。全部代码在github acwing 上。用一个vis 数组 表示该点是否被访问过。有向图可以采用邻接矩阵与邻接表进行存储。使用一个队列 依次把一个点的队列加入。个人喜欢使用vector实现邻接表。若之间没有边,则为INT_MAX。欢迎star与fork。无论是树 还是无向图。边的序号统一从1开始。
2023-05-02 13:07:53
582
原创 深度遍历模版与广度遍历模版
因为斜线的斜率是1,所以 y=x+b. y=-x+b 即可 算出两个方向的截距,通过截距可以唯一确定一条直线。有 “最短路” 的概念, 当图的权重都是为1的时候, 图先找到的都是bfs,最短的。需要额外的数据存储 vis表示是否访问过 dis表示距离。可信性剪枝是判断 走的过程提前判断 ,非法的就没必要走了。但是费空间 o(2^N). 深搜只用o(n)key是列,value是行。从第一行看皇后 能看到放在哪一列。第二个map 存储x+y的截距。第三个map 存储x-y的解决。走的过程中 判断是否在。
2023-05-02 12:55:27
932
原创 网络io与select,poll,epoll
水龙头等水水龙头就是内核进程 等水复制到内核区学生就是进行io的进程或线程阻塞io 学生在那里 等水来非阻塞io 学生看数据没准备好,先回寝室,一会儿再过来检查下,看水准备好没多路复用io 阿姨帮忙看着水龙头,等来水的时候通知学生前面三个都是同步io,因为水还要学生自己来接异步io 阿姨帮忙看着水龙头,当水来了 ,阿姨帮忙接水,等接好水 通知同学 已经接好并放在宿舍门口信号驱动io 某个水龙头数据准备好,会给同学手机发个信息。
2023-04-16 21:30:32
438
原创 基础算法-双指针,滑动窗口,位运算,区间离散化
lowbit(x) 返回x的最后一位1后面的数 比如10100 返回100。但我们仅用到了其中的n个数,因此我们可以将它的区间进行映射。就可以通过lowbit 求出 一个数中的1的个数。n的二进制 表示中 第k位数是几 从0开始。输入一个字符串 把每个单词输出出来。需要提前知道要有哪些值 查询和用到。双指针最核心的性质 可以优化。负数即为补码 即为取反+1。不断求它的lowbit即可。具体代码如下 使用二分搜索。比如一个区间 它的大小在。i,j指针最多走2n步。先把第k位移到最后一位。
2023-04-13 16:03:00
454
原创 clion如何连接github
点击 项目 从 get from vcs (version control) 中创建。commit 变化打包。push 把变化推过去。new 创建新的项目。
2023-04-10 20:20:28
1070
原创 结构型方法-观察者模式
这其实是依赖倒置思想的一个典型应用,发布者与订阅者并不相互依赖,而二者都依赖于一个抽象的标准,发布者只知道每个订阅者有统一的接口可以调用通知。订阅者只要实现通知接口,并把自己注册即可。发布者类中会有一个数组,存储每个加入的订阅者,当有变化时,会依次调用订阅者的函数,以达到通知的目的。又叫发布者订阅者模式,定义对象间的一对多的依赖关系,其中有一个发布者,很多订阅者。当发布者改变时,每个订阅者会得到通知。
2023-04-02 11:10:35
96
原创 创建型模式-单例模式
隐藏构造方法,析构函数,拷贝构造方法,拷贝赋值方法,静态的实例指针。一个类仅能够被实例化一次,并且提供全局的实例化访问点。饿汉式,指的是程序一开始的时候,就进行初始化。懒汉式,指的是用到该实例的时候,才初始化。初始化后,就不会重新进行初始化。线程安全,底层会自动进行阻塞。
2023-04-01 21:57:41
78
原创 设计模式-设计原则
自动驾驶系统公司是高层,汽车生产商是底层,自动驾驶系统不应该依赖于各种车型系统底层进行实现,因为这是耦合度高,车型多样。而应该依赖于抽象的自动驾驶行业标准,汽车厂商也应该依赖于自动驾驶标准,可以配置各种自动驾驶系统。不应该强迫客户依赖于它们不用的方法,比如一个类需要实现A B方法,这时候继承一个接口里面有ABC方法,就不满足接口隔离原则。客户程序面对一个未知的系统,不应该知道里面的数据流动,而应该面向该系统的接口即可。抽象不应该依赖具体实现,具体应该依赖于抽象。高层不应该依赖低层,两者应该都依赖于抽象。
2023-04-01 21:20:20
986
空空如也
它是c++编写cmake转成python包cmake报错
2021-07-26
TA创建的收藏夹 TA关注的收藏夹
TA关注的人