算法 链表相关 将一个链表的前k个节点反转, 返回反转后的头节点 12345678910111213141516ListNode* reverseKList(ListNode* head, int k) { k--; ListNode* prev = nullptr; ListNode* cur = head; ListNode* next = head->next; 2025-03-04 #算法
非暴力沟通 读书摘录 非暴力沟通帮助我们重新构建表达自己和聆听他人的方式, 使我们的言行不再只是出于自动化反应, 而是牢固地建立在觉察感受和需要的基础上, 做出有意识的回应, 我们既能诚实清晰地表达自己, 也能带着尊重与同理心关注他人, 从而在任何交流中听见自己和他内心深处的呼声. 由衷的给予和接受, 是人类天性所乐见的. 疏离生命的语言道德评判 作比较 推卸责任 要求 贴标签 疏离生命的语言让我们陷入充满评判的 2025-03-01 #阅读 #非暴力沟通
算法 不等式 | 同余 + 破换成链 给定 𝑛 个整数 ℎ𝑖,每次操作会使 ℎ𝑖←ℎ𝑖+𝑎𝑖,求能否在若干次操作后使得 ℎ𝑖 的排名(从大到小)为 𝑡𝑖+1(就是前面有ti个),如果可以,求最小操作次数,否则输出-1。 这个关键在维护一个区间集, 利用给出的目标排名确定不等式, 每个不等式成立都会给出一个区间, 然后加到这个区间集中 最后得到的区间集如果成立, 就是符合所有不等式的答案 设经过的天数为x 不等 2025-02-28 #算法
C++线程库使用详解 核心操作线程创建12345678// 需要传入回调函数, 如果有参数紧跟在后面std::thread t1(print_hello, 1); // 当然lambda也可以当作回调函数传进去std::thread t([]() { std::cout << "Hello from lambda thread!" << std::endl; 2025-02-27 #多线程
算法 前缀和|滑动窗口|合并区间 前缀和 给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数 。子数组是数组中元素的连续非空序列。O(nlogn) 这道题的关键在于如何以O(1)的复杂度发现和为k的子数组个数, 重点在于子数组一定连续, 连续的一段区间的和可以用前缀以O(1)求得, 问题在于如何知道这样的数的个数. 对于运算到第i处的前缀per[i], 前面可以和其相减得到k的pe 2025-02-25 #算法
Linux高性能服务器编程 读书笔记(8) 第14章 多线程编程 线程与进程线程是轻量级的进程, 想要理解线程的关键, 首先要理解线程和进程之间的区别. 一个进程在创建之初其实就可以看作是一个主线程, 其创建出的线程其实和其本质无很大差别, 其实就多了一个线程共享资源罢了, 我们要明晰的是一个进程创建的不同线程之间, 什么是共享的, 什么是独立的. 线程间共享的 : 进程地址空间中的代码段, 数据段, 堆 文件描述符 信号处理 环境 2025-02-23 #多线程 #Linux高性能服务器编程
被讨厌的勇气 读书摘录(2) 当人能够感觉到”与这个人在一切可以无拘无束”的时候, 才能体会到爱. 人究竟为什么要寻求别人的认可呢? 其实, 很多情况下都是因为赏罚教育的影响. 如果一味地寻求别人的认可, 在意别人的评价, 那最终就会活在别人的人生中. 我们必须从”这是谁的课题”这一观点出发, 把自己的课题和他人的课题分离开来. 基本上, 一切人际关系矛盾都起源于对别人的课题妄加干涉或自己的课题被别人妄加干涉. 可以把马带到 2025-02-22 #阅读
Linux高性能服务编程 读书笔记(7) 第13章 多进程编程 本章主要是讨论创建进程, 进程替换, 进程等待, 进程间通信, 最后一个占大头. 创建进程123#include<sys/types.h>#include<unistd.h>pid_t fork(void); 这个只需要记住返回值的判断 : < 0 : fork失败. == 0 : 属于子进程. > 0 : 属于父进程. 子进程继承父进程的文件 2025-02-22 #Linux高性能服务编程
Linux高性能服务器编程 读书笔记(6) 第10章 信号 第11章 定时器 第12章 libevent 网络服务器一般有三种事件需要处理 : IO事件, 信号事件, 定时器事件. 这三种事件都可以通过epoll函数来进行统一处理. 信号信号有什么作用?其实主要是为了处理一些特殊事件, 比如中断系统调用, 触发定时器信号, 管道读写失败发出的信号. 比如说中断进程, 在服务器上直接中断一般不是一个合理的做法, 一般会捕获中断信号, 在做 2025-02-19 #Linux高性能服务器编程
Linux高性能服务器编程 读书笔记(5) 第九章 I/O复用(1) 本节主要描述三个IO复用函数, select / poll / epoll. 这里对select / poll只做简要描述, 对epoll做详尽描述. 所谓I/O复用, 就是使程序可通过一些函数同时监听多个文件描述符(如socket), 可以即使并发对这些文件描述符上的事件进行处理. 要注意的一点是I/O复用 2025-02-16 #Linux高性能服务器编程