博客园  :: 首页  :: 新随笔  :: 管理

2023年3月8日

摘要: Linux C/C++服务器 Posix API接口原理与网络状态 整理网络相关的各个状态和相关接口的工作原理 tcp建立连接 tcp状态机 tcp断开连接 网络api接口 客户端接口:socket()、bind()、connect()、send()、recv()、close() 服务端接口:soc 阅读全文

posted @ 2023-03-08 04:22 wsg_blog 阅读(179) 评论(0) 推荐(0)

2023年3月7日

摘要: Linux C/C++服务器 http服务器的实现 http服务器说的是在reactor网络io框架基础上加上http协议,实现可与浏览器交互的后端服务,reactor在之前有介绍,下面我们先来看看http协议都有哪些东西 http协议 http消息分两部分,一个是客户端请求消息,一个是服务器响应消 阅读全文

posted @ 2023-03-07 04:25 wsg_blog 阅读(372) 评论(0) 推荐(0)

2023年3月4日

摘要: Linux C/C++服务器 reactor的原理与百万并发 五元组 五元组:sip,sport,dip,dport,proto 源IP,源端口,目的IP,目的端口,协议 tcp的端口最大支持65536个,客户端和服务端ip都是固定的,为了测试百万并发,我们使用65536个客户端的端口,使用100个 阅读全文

posted @ 2023-03-04 03:40 wsg_blog 阅读(116) 评论(0) 推荐(0)

2022年11月26日

摘要: index 数据结构与算法 十大经典排序 阅读全文

posted @ 2022-11-26 20:52 wsg_blog 阅读(16) 评论(0) 推荐(0)

2022年10月28日

摘要: Linux C/C++服务器 网络io与select、epoll 网络io是什么?是网络连接的input与output,也就是socket,更进一步说就是fd 阻塞与非阻塞 io多路复用,检测io是否有事件(可读、可写) 同步与异步 头文件与listenfd的监听模块 不管select还是epoll 阅读全文

posted @ 2022-10-28 21:32 wsg_blog 阅读(85) 评论(0) 推荐(0)

2022年10月21日

摘要: Linux c/c++ 高性能后端 设计模式 学好设计模式需要对业务的稳定点和变化点有深刻的认识:业务的哪部分为稳定点,哪部分为变化点,从而进行合理的抽象,慎用设计模式,除非有明确的思路设计模式更好的能解决此类问题; 单例模式、工厂模式、观察者模式和代理模式 学习设计模式的意义: 1.读公司代码或开 阅读全文

posted @ 2022-10-21 00:54 wsg_blog 阅读(48) 评论(0) 推荐(0)

2022年10月12日

摘要: Linux C/C++服务器 海量数据去重的Hash与BloomFilter 散列表 根据 key 计算 key 在表中的位置的数据结构;是 key 和其所在存储地址的映射关系; 注意:散列表的节点中 kv 是存储在一起的; struct node { void *key; void *val; s 阅读全文

posted @ 2022-10-12 21:39 wsg_blog 阅读(131) 评论(0) 推荐(0)

2022年10月9日

摘要: Linux C/C++服务器 多路查找树(B树、B+树) 我们前面讨论的红黑树,处理数据都是在内存中,因此考虑的都是内存中的运算时间复杂度。但若我们要操作的数据集非常大,大到内存已经没办法处理了怎么办呢? 这种情况下,对数据的处理需要不断从硬盘等存储设备中调入或调出内存页面,一旦涉及到这样的外部存储 阅读全文

posted @ 2022-10-09 13:41 wsg_blog 阅读(341) 评论(0) 推荐(0)

摘要: Linux c/c++ 高性能后端 红黑树(rbTree) 一种特殊的平衡 二叉排序树,一般用于key,value查找,插入删除查找\(O(log_{2}n)\),应用广泛; 定义 具有二叉排序树性质 每个结点是红的或者黑的,根结点是黑的,每个叶子结点是黑的(一般叶子结点都是隐藏的空结点) 如果一个 阅读全文

posted @ 2022-10-09 13:33 wsg_blog 阅读(66) 评论(0) 推荐(0)

2022年7月4日

摘要: index 数据结构与算法 二叉排序树 一颗二叉树,中序遍历有序,{35,37,47,51,58,62,73,88,93,99},我们通常称它为二叉排序树,又称为二叉查找树。 定义 若它的左子树不空,则左子树上所有节点的值均小于它的根结构的值; 若它的右子树不空,则右子树上所有节点的值均大于它的根结 阅读全文

posted @ 2022-07-04 00:10 wsg_blog 阅读(110) 评论(0) 推荐(0)

2022年6月17日

摘要: index 数据结构与算法 #图 图数据结构是比较重要、常用、复杂的结构,经常用于解决最优路径的问题。许多机器学习的算法如马尔可夫链、Apriori关联分析结构及算法与图有很多相似之处。 在线性表中,数据元素之间是被串起来的,仅有线性关系,每个数据元素只有一个直接前驱和一个直接后继。在树形结构中,数 阅读全文

posted @ 2022-06-17 16:25 wsg_blog 阅读(103) 评论(0) 推荐(0)

2022年5月26日

摘要: index 数据结构与算法 数据结构(Data Structure) 数据结构在某种程度上和设计模式类似,都是前辈的武功套路。不同的是,设计模式是近几十年的卓越程序员的智慧结晶,而数据结构是几百上千年的无数科学家、数学家的智慧沉淀,更加具有深厚的背景。 逻辑结构 逻辑结构是指我们通常说的软件层面,有 阅读全文

posted @ 2022-05-26 16:47 wsg_blog 阅读(64) 评论(0) 推荐(0)

2021年3月29日

摘要: Index LeetCode 树作为单链表的升级版,我们通常接触的树都是二叉树(binary tree),即每个节点最多有两个子节点;可以看出,其与链表的主要差别就是多了一个子节点的指针。 struct TreeNode{ int val; TreeNode *left; TreeNode *rig 阅读全文

posted @ 2021-03-29 21:46 wsg_blog 阅读(122) 评论(0) 推荐(0)

摘要: Index LeetCode (单)链表是由节点和指针构成的数据结构,每个节点存有一个值,和一个指向下一节点的指针,因此很多链表问题可以用递归来处理,不同于数组,链表不能直接获取任意节点的值,必须要通过指针找到该节点后才能获取其值。在未遍历到链表结尾时,我们也无法知道链表的长度,除非依赖其他数据存储 阅读全文

posted @ 2021-03-29 21:45 wsg_blog 阅读(141) 评论(0) 推荐(0)

摘要: Index LeetCode 字符串可以看成是字符组成的数组。一般将把字符的ASII码作为标示来使用。 string s; 长度判断为s.length(); BM83.字符串变形[easy] 输入:"This is a sample",16 输出:"SAMPLE A IS tHIS" 字符大小写转换 阅读全文

posted @ 2021-03-29 21:44 wsg_blog 阅读(187) 评论(0) 推荐(0)

摘要: Index LeetCode 简单罗列下c++ stl里数据结构:vector,hash(unordered_set\map),queue,deque,priority_queue,stack,list 主要会用以上数据结构的成员函数有:empty(),count(),insert(),push() 阅读全文

posted @ 2021-03-29 21:43 wsg_blog 阅读(140) 评论(0) 推荐(0)

摘要: Index LeetCode 动态规划和其它遍历算法(如深/广度优先搜索)都是将原问题拆成多个子问题然后求解,他们之间的最本质区别是,动态规划保存子问题的解,避免重复计算。 解决动态规划问题的关键是找到状态转移方程,这样我们可以通过计算和存储子问题的解来求解最终问题。 状态转移矩阵及dp数组初始化 阅读全文

posted @ 2021-03-29 21:41 wsg_blog 阅读(133) 评论(0) 推荐(0)

摘要: Index LeetCode 递归应该已经不陌生了,在前面的二叉树中,我们大量使用了递归,回溯是递归的“副产品”,只要有递归的过程就会有对应的回溯过程,递归和回溯的本质都为穷举,我们通常称为“暴搜”,回溯会有撤回之前操作的功能。 回溯可以解决的问题: 组合问题:如何按照一定规则在N个数中找出k个数的 阅读全文

posted @ 2021-03-29 21:39 wsg_blog 阅读(264) 评论(0) 推荐(0)

摘要: Index LeetCode 堆,大顶堆priority_queue min、小顶堆,priority_queue<int, vector, greater> max; 栈,先进后出结构,在c++中用stack来表示; 队列,先进先出结构,在c++中用queue来表示 BM42.用两个栈实现队列(2 阅读全文

posted @ 2021-03-29 21:37 wsg_blog 阅读(105) 评论(0) 推荐(0)

摘要: Index LeetCode 二分查找也被称为二分法或者折半查找,一般来说都是针对有序区间的查找,每次查找时通过将待查找区间分成两部分并只取一部分继续查找,将查找的复杂度大大减少,对于一个长度为O(n)的数组,二分查找的时间复杂度为O(log n),二分查找要求数组是有序的。 具体到代码上,二分查找 阅读全文

posted @ 2021-03-29 21:36 wsg_blog 阅读(122) 评论(0) 推荐(0)

摘要: Index LeetCode 双指针主要用于遍历数组,两个指针指向不同的元素,从而协同完成任务。也可以延伸到多个数组的多个指针 若两个指针指向同一数组,遍历方向相同且不会相交,则也称为滑动窗口(两个指针包围的区域即为当前的窗口),经常用于区间搜索; 若两个指针指向同一数组,但是遍历方向相反,则可以用 阅读全文

posted @ 2021-03-29 21:34 wsg_blog 阅读(162) 评论(0) 推荐(0)

摘要: Index LeetCode 贪心 贪心算法或贪心思想采用贪心的策略,保证每次操作都是局部最优的,从而使最后得到的结果是全局最优的。 455.分发饼干[easy] 每个孩子都有自己的饥饿度,一堆饼干大小不同,且每个孩子只能分一个饼干,多少孩子可以吃饱 思路是先对vector数组排序,while循环遍 阅读全文

posted @ 2021-03-29 21:33 wsg_blog 阅读(126) 评论(0) 推荐(0)

摘要: 笔试刷题 本次刷题主要以牛客网的面试必刷TOP101为主,题型难度循序渐进,分类比较合理;从之前的《剑指Offer》到现在的面试必刷top101、配套讲解,以及carl的代码随想录; 我的刷题记录:我的牛客、我的力扣 使用什么数据结构比较合适?数组还是vector还是list还是deque,stac 阅读全文

posted @ 2021-03-29 20:50 wsg_blog 阅读(398) 评论(0) 推荐(1)

2021年2月2日

摘要: 《神经网络与深度学习-邱锡鹏》读书笔记 在前馈神经网络中,信息的传递是单向的,这种限制虽然使得网络变得更容易学习,但在一定程度上也减弱了神经网络模型的能力,在生物神经网络中,神经元之间的连接关系要复杂得多。前馈神经网络可以看作一个复杂的函数,每次输入都是独立的,即网络的输出只依赖于当前的输入,但是在 阅读全文

posted @ 2021-02-02 16:43 wsg_blog 阅读(727) 评论(0) 推荐(0)

2020年12月24日

摘要: 本篇主要用于收集各种最优化的理论方法,目前就知道这么多,之后有更多的方法会写在这里 动态规划 、编辑距离、最小生成树(prim、kruskal)、最短路径(Dijkstra、Floyd)、拓扑排序、关键路径 逼近算法(二分查找、均方根、牛顿迭代、 微积分 等,全局最优与局部最优)、强化学习 triz 阅读全文

posted @ 2020-12-24 18:12 wsg_blog 阅读(353) 评论(0) 推荐(0)

2020年12月16日

摘要: python函数的参数传递 值为列表的构造方法 dic = {} dic.setdefault(key,[]).append(value) dic.setdefault('a',[]).append(1) dic.setdefault('a',[]).append(2) >>dic >>{'a': 阅读全文

posted @ 2020-12-16 10:55 wsg_blog 阅读(85) 评论(0) 推荐(0)

2020年11月24日

摘要: svd 奇异值分解(singular value decomposition,SVD) 不明觉厉 ^d^ SVD矩阵分解:利用SVD算法,我们能够用小得多的数据集来表示原始数据集。这样做,实际上是去除了噪声和冗余信息。从生物信息学到金融学等在内的很多应用中,SVD都是提取信息的强大工具。 阅读全文

posted @ 2020-11-24 20:07 wsg_blog 阅读(142) 评论(0) 推荐(0)

2020年11月7日

摘要: 关于数学的一些理论可以来下边查找 3Blue1Brown 马同学的个人网站 宋老师线代、微积分、概率论、高数 阅读全文

posted @ 2020-11-07 22:37 wsg_blog 阅读(120) 评论(0) 推荐(0)

2020年11月4日

摘要: PCA是用来给多维数据降维,分析提取主成分的一种算法; 优点:降低数据的复杂性,识别最重要的多个特征。缺点:不一定需要,且可能损失有用信息。适用数据类型:数值型数据。 如何理解主元分析(PCA) 怎么实现的呢?首先说明,在已标注和未标注的数据上都有降维技术,PCA是一种在对未标注数据的降维技术。 在 阅读全文

posted @ 2020-11-04 16:07 wsg_blog 阅读(466) 评论(0) 推荐(0)

2020年11月3日

摘要: Apriori算法可以实现什么: 关联分析中最有名的例子是“尿布与啤酒”。据报道,美国中西部的一家连锁店发现,男人们会在周四购买尿布和啤酒。这样商店实际上可以将尿布与啤酒放在一块,并确保在周四全价销售从而获利,更多详细应用百度百科apriori 原理: Apriori关联分析算法实现起来可能会复杂一 阅读全文

posted @ 2020-11-03 17:08 wsg_blog 阅读(1013) 评论(0) 推荐(0)