自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 《高级数据结构》-leetcode刷题课

《高级数据结构》-leetcode刷题课刷题建议8:字符串转整型13:罗马数字转整数14:最长公共前缀28:strSTR()利用sunday算法实现单模匹配36:有效的数独58:最后一个单词的长度125:验证回文串165:比较版本号205:同构字符串242:有效的字母异构词290:单词规律344:反转字符串345:反转字符串的元音字母383:赎金信刷题建议《高级数据结构》课程结束了,leetcode才是算法人员的第二春(坚持刷题,坚持数据结构与算法思维》,至少坚持每天一个题目leetcode的简单题

2021-05-23 05:52:08 166

原创 《每日一练》-实现一个单例模式

《每日一练》-实现一个单例模式23中设计模式全局唯一性:线程安全延迟加载,使用前是否初始化?线程安全?(本身就是矛盾的?)没有延迟加载,有问题早发现?使用过程,创建过程;饿汉式,懒汉式?new操作很重要?getInstance效率太低,由于加了锁。不加锁又会不安全。 -》 改变锁的位置; -》 还是不安全。-> 双重检测(单例陷阱) vnew不是原子操作;alloc可能会下沉;指令重排,具有概率性;X86,与cpu是有关的。java,c++,c#有做相关的优化还有东西:静态内部变量;

2021-05-07 10:05:41 120

原创 《项目课》-高并发服务器开发

高并发服务器的学习路线

2021-04-24 21:36:10 512 1

原创 《面试笔试算法上》-二分专题

《面试笔试算法上》-二分专题大统领投票(排序):结构体(字符串、编号)排序(const node &a)吃瓜群众:结构体排序+朴素二分(1. while(l < r) 2. mid 3. 判等 4. 小于or大于);细节(int mid = ((long long)l + r))吃瓜群众升级:特殊二分(00001111情况,套路:1. while (l != r)2. mid = (l + r) / 23. if (t <= f[mid]) r = mid 4. l = mid

2021-04-15 06:26:00 123 1

原创 《面试笔试算法上》-编码能力提升

《面试笔试算法上》-编码能力提升3/5的倍数:等差数列 时间复杂度:o(n) -> o(1)偶斐波那契数列:用数组存储递推数组 -> 用两个变量来回倒,空间复杂度 o(1)最大回文乘积:反转后判等,特殊情况(奇数位,末尾含0),双层枚举(int i = 0; int j = i;)连续数字最大乘积:滑动窗口法(静态窗口,预先存储数组),进来0,计数器,数据类型上界方阵中最大乘积:方向数组,边界补零,debug经历(int num[30][30],而不是char num[30][30]

2021-04-13 08:25:59 183 1

原创 《c/c++求职》-c/c++后端开发

《c/c++求职》-c/c++后端开发经验之谈市场需求技术要求如何学习c++高性能高并发服务器开发技术栈经验性总结(高级阶段)c++后端转行参考文献经验之谈c++后端岗位(包括了c++语言和c++技术体系)是周期较长的领域,需要放到战略高度,可能第一份工作工资较低,技术累计和方向要想对。go职位,一般都是从c++或是java转过去的,一般校招很少直接招进。进入一家公司,关于做“核心技术”还是“螺丝钉”(浮躁的问题), 这个问题的核心是自己能力的提升,自己能力提升之后,公司就会让你做“核心技术”公

2021-04-02 10:17:01 462

原创 《高级数据结构》-哈夫曼树与哈夫曼编码

哈夫曼树基于哈夫曼编码,其中哈夫曼编码在变长编码中的平均编码长度最短。其中对于编码解码问题,需要注意解码过程中的前缀重叠问题。而且变长编码需要根据特定的场景进行设定规则,因为不同的环境(英语单词,e除出现的概率最高),不同字符出现的频率不同。通过推导哈夫曼编码最优,可以得出 熵的概念等价于 平均编码长度。从而引出交叉熵,走向机器学习。

2021-04-01 21:51:53 192

原创 《高级数据结构》-红黑树

红黑树(RBT)是一种平衡二叉排序树,本质上也是通过调整树高实现平衡。相较于AVL树,红黑树树高控制条件更加松散,对于动态的添加或者删除操作,可以只改变颜色,从而减少旋转的次数。其中学习红黑树时要注意:1. 牢记5个平衡条件;2. 如何通过确定性的节点得出统一的解决方案;插入调整(主要解决双红问题),从爷爷节点看,分为,叔叔节点是红色/黑色,又细分(LL,LR,RL,RR);删除调整(双重黑问题),从父节点看;兄弟【红色】-> 兄弟【黑色】(细分,侄子节点全黑/一个红(LL,LR,RL, RR)

2021-04-01 15:50:42 94

原创 《高级数据结构》-AVL树

AVL树基于二叉排序树,由于二叉排序树受插入序列顺序影响,可能退化成链表,AVL通过平衡条件和平衡调整,提高了下线(Nlog(N)级别)。其中插入或是删除,导致的失衡情况分别为LL,LR,RR,RL(注意判断不同子树的高度之间关系),通过左旋和右旋即可恢复平衡,其中要注意找到回溯过程中的第一个失衡节点进行调整。在结构定义方面,增加树高字段。在结构操作方面,需要在插入和删除时,进行平衡调整和树高更新。编程技巧方面注意采用虚拟头结点(Node __NIL; #define NIL (&__NIL))

2021-03-30 08:35:32 84

原创 《高级数据结构》-二叉排序树

二叉排序树指根节点的左子树的值小于根节点,右子树所有的值都大于根节点,常用于排名相关的问题,比如找第k位元素,或者前k为元素(用堆也可以);结构定义需要维护size字段,用于记录每棵子树的节点数量;结构操作核心为删除操作,度为0可直接删除;度为1时,父节点需要过继度为1的子节点;度为2时,需要通过前驱节点或者后驱结点变成度(0或1),再删除。但是插入顺序会影响二叉排序树的平均查找效率,为了实现平衡,课采用AVL树,或SB树。

2021-03-29 18:55:12 140

原创 网络编程-select、poll

对于类似于telnet程序,需要实现两输入两输出,对任意一个输入都不能用阻塞。处理方法有多进程,多线程,非阻塞IO的轮询、信号、I/O多路复用等。I/O多路复用包括select、poll;其中select和poll基于linux的内核poll实例,poll用revents字段返回就绪内容,而无需循环初始化;select需要检查o-nfds(最大文件描述符)之间每一个元素;而poll只需要指定感兴趣的文件描述符;同时,select(大量初始化)和poll(大量用户空间与内核空间转化),都不适合大量文件描述符;

2021-03-26 18:18:54 103

原创 系统编程-信号与时间

系统的信号是一种通知机制,但是通常是异步行为。默认情况进程对于信号的处理是忽视、终止进程或是调用信号处理函数,其中sigaction的可移植性好。信号常问的问题:信号从哪里产生?信号怎么传递?信号怎么处理?系统的时间

2021-03-24 19:56:06 358

原创 网络编程-epoll

epoll类似于信号驱动IO,可以检查多个文件描述符的I/O就绪状态,在处理大量文件描述符时,性能比select,poll好,同时既支持水平触发又支持边缘触发;epoll常用于处理大量客户端的服务器,即需要监听大量的文件描述符,但是大部分是空闲状态,只有小部分处于就绪态。

2021-03-22 22:40:28 190

原创 IPC-内存映射、信号量、消息队列

经典的IPC有:管道,FIFO,消息队列,信号量,共享内存; 信号量用来同步进程或线程的动作,常用于同步一块共享内存。 消息队列允许进程以消息的形式交换数据,由于管道基于字节流,管道一次性可以读取任意数量的字节数;而消息队列中读者接收由写者写入的整条消息。 消息队列可以指定不同的msgtyp值,解决多进程竞争读取,比如让各个进程选择与自己ID相匹配的消息。 内存映射中的共享文件映射是实现无关进程实现共享内存段,实现快速IPC,而共享匿名映射只能用于相关进程。

2021-03-21 20:36:59 414 3

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除