自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 typecho+handsome美化

typecho个人美化方案:handsome主题:https://www.nekoyume.xyz/archives/21/后备网站:防丢

2022-04-30 00:16:31 703

原创 handsome 404页面

前往本站食用更加: www.nekoyume.xyz1. 预览firefox浏览器全景预览2. 资源来源图片来源:potg(ぴおてぐ)老师: 色彩笔触风格独树一帜,超好看! 项目引用:https://github.com/kaygb/kaygb/tree/master/v3逛git偶然发现3.使用方法下载文件打开index.html修改 blog github bilibili 三个 <a></a>内部的链接及描述[font color=“re

2022-04-28 20:17:17 319

原创 typecho:鼠标右键改造

预览如上图最近这两天在建造自己的blog,美化一下使用方法~声明: 本人没有任何前端基础,都是从往上找来在修修改改,所以,可能会有问题我甚至只能说是学了2小时我使用的 是阿里巴巴矢量库,里面的图标都是我自己找到的,由于后面可能需要继续修改,所以可能那一天就失效了下面是我使用的图标(编辑器不是好用,排版先这样吧)[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-akaQ0O4d-1651075727998)(https://www.nekoyume.xyz/usr/.

2022-04-28 00:09:26 1216

转载 C++协程库demo2 -day3

代码部分指路:main.cppxsocket.cppxsocket.hxfiber.cppxfiber.h指路:B站:毛毛and西西 视频 : c++携程库,第2部分协程框架已开源到github和gitee上gitee地址:https://gitee.com/meiqizhang/xfibergithub地址:https://github.com/meiqizhang/xfiber.gitmain.cpp#include "xfiber.h"#include <iostream&gt

2022-04-20 15:59:02 308

转载 c++协程库实现-day2

代码部分指路:xfiber.cppxfiber.h指路:B站:毛毛and西西 视频 : c++携程库,第2部分协程框架已开源到github和gitee上gitee地址:https://gitee.com/meiqizhang/xfibergithub地址:https://github.com/meiqizhang/xfiber.gitxfiber.cpp#include "xfiber.h" //先扫描当前路径下寻找,然后再到系统库下面#include <iostream>XF

2022-04-19 18:14:32 323

原创 c++实现 排序

#include <list>#include <iostream>#include <vector>#include <stdio.h>#include <climits>using namespace std;#include <math.h>//最好: nlogn// 最坏 是 : n 2// 解释: 每次选择的 轴节点,都是 极值// 导致,递归的一遍只有一个,另一边 却又 n-1个//

2022-04-08 15:19:13 1034

原创 [C++函数重载匹配机制]重载函数匹配机制及 最佳匹配细节

回顾:在这篇文章中,具体的讲述了,C++函数重载的实现,是因为编译器底层使用了命名倾轧的技术,来使的相同作用域下,同名函数,依靠参数列表的不同,来进行特化区分.也就是 c++函数名linux 下编译器命名规则为: 命名空间+函数名长度+函数名+参数类型现在 ,我们知道了,重载的实现机制,但是仅仅依靠参数列表的不同,就能够完美的实现精准的调用吗?你在使用的过程中难道就没有遇见过函数二义性调用吗?如果没有请思考下列代码#include<iostream>#include<s

2021-09-03 21:25:41 1420 1

原创 [C++]重载重写重定义

1 重载特征:相同的范围相同作用域:编译器底层命名规范作用域+函数名+参数类型函数名字相同只有同名才构成重载参数不同在相同作用域下,相同函数名的函数,以参数列表作为重载区分条件virtual关键字可有可无返回值类型无关紧要重载和返回值类型无关2 重写大前提:必须发生继承,父类函数必须是虚函数基类函数必须有virtual关键字必须是虚函数不同的范围,分别位于基类和派生类中继承关系是大前提函数的名字相同

2021-09-01 21:51:55 104

原创 [c++函数重载]编译器命名规则

重载1.什么是函数重载1.2、为什么需要函数重载1.2.1**如果没有函数重载机制**1.2.2 对于类的实例化来说1.2.3 对于各种操作符来说1.2.4 总结2 如何解决函数重载时,函数同名的问题2.1 编译器底层命名风格2.2 编译器底层命名规范3.拓展1.什么是函数重载函数重载是指在同一作用域内,可以有一组具有相同函数名,不同参数列表的函数,这组函数被称为重载函数。函数重载4大要点1. 发生在同一作用域(一个命名空间就是一个大的作用域)2. 拥有相同函数名3. 参数列表不同4. 和返回

2021-09-01 21:00:56 737

原创 线程控制完成

施工未完成;9月1号继续施工

2021-08-31 22:30:09 145

翻译 为什么TCP需要握手三次?为什么不是两次?为什么不是四次?

<图解网络> 总结

2021-08-30 21:50:16 1831

原创 gdb调试程序

调试已运行程序1.调试已运行程序第一步:获取对应进程的PID大前提: 要保证你的一运行程序,是包含了debug信息的.否则,attach后 gdb l无法查看到源代码第二步:gdb attch将已运行进程挂载到gdb之后进行调试命令即可,完成后需要detach,进行分离2.调试已崩溃程序参考文章:gdb调试coredump(使用篇)程序崩溃后会产生核心转储文件(coredump)什么是coredump文件?如何产生?有什么用?gdb + 可执行文件名 + coredump文件 即

2021-08-30 21:07:52 445

原创 gdb调试

基础命令雪中飞:调试器GDBg++ -g a.cpp生成带有debug信息的可执行文件默认a.outgdb a.out将含有debug信息的文件加载到jdb中gdb中运行程序相关1、程序运行参数。set args 可指定运行时参数。show args 命令可以查看设置好的运行参数。2、运行环境。path可设定程序的运行路径。show paths 查看程序的运行路径。set environment varname =[value] 设置

2021-08-30 19:38:47 306

原创 2021-08-29 两数相加

2. 两数相加最大难点: 读不懂题“大爷你去哪儿” “到二仙桥”“不是我问你走哪条道”“走成华大道”这道题主要要看一下示例三:通过示例三可以知道,是两个链表,头结点对齐,并不是尾节点对齐思路:依次拿到两条链表的每个节点的valval相加 ,将得数的个位保存到新链表的 val将产生的进位,另外保存,等到下一个节点计算时,将进位的1,一起计算注意判断条件,如果两条链表都走完了,但是进位的1 还在,则该进位就是最高位,则需要new一个节点保存该进位1,这样才算正式结束class So

2021-08-29 20:34:41 92

原创 1588. 所有奇数长度子数组的和

1588所有奇数长度子数组的和方法一: 前缀和思路:计算出前n-1项的总和 再加上第n项本身,就是第n项的总和不会为空,所以长度>=1,所以从1开始奇数长度,所以每次最大长度+2,就可以保证一直是奇数长度第n个数=前n项和-前n-1项和 推导第n项到第n+x项之和=前x项之和-前n项之和关键: 我们只需要知道,以每一个数为队头的,所有满足奇数长度的情况.==> 暨: 遍历数组,以每一个数为队头,寻找所有情况,并将其累加==>暨:求每一种情况下 长度区间内的累

2021-08-29 20:20:36 176

原创 构造函数相关小知识

走成华大道~

2021-08-29 19:35:56 147

原创 STL迭代器---萃取

1.知识回顾一级空间配置器中使用了类型萃取空间配置器的内存基本工具uninitialized_copy等当中都会进行一步POD性判断本章重点讲解 类型萃取技术,同时讲述一下迭代器类型萃取1.iterator_traitsiterator_traits如它的名字一样,是对迭代器进行萃取//迭代器内部包含5个型别struct iterator{typedef Category iterator_category;typedef T value_type;typedef Distance

2020-12-18 19:30:27 1834

原创 STL空间配置器导航

STL空间配置器—构造和析构STL空间配置器—两级空间配置器简介STL空间配置器—1级空间配置器实现(详细注释)STL空间配置器—2级空间配置器的实现(代码详细注解)STL空间配置器收尾—内存处理基本工具...

2020-12-17 22:42:24 2130

原创 STL空间配置器收尾---内存处理基本工具

整体框架在前几期,将前两个部分都讲完了,现在简单地介绍一下内存基本处理工具uninitialized_copy()uninitialized_fill()uninitialized_fill_n()这三个函数对应STL的高层次函数 copy(),fill(),fill_n()这些都是STL算法什么是POD类型?优秀博客:https://www.cnblogs.com/DswCnblog/p/6371071.htmlPOD,全称plain old data,plain代表它是一个普

2020-12-17 22:36:06 135

原创 STL空间配置器---2级空间配置器的实现(代码详细注解)

二级空间配置器基本准则:维护16个自由链表,负责16中小型区块的次配置能力 —次层配置内存池通过malloc配置而得,如果内存池不够,就转调一级配置器如果需求的块大于128字节,就转调一级空间配置器二级空间配置器的 次层配置次层配置:每次配置一大块内存,并维护与之对应的自由链 如果下次有相同大小的内存需求,则直接从自由一链表拔出.如果客户释放小额块区,则将内存块插入到自由链表中free_list[16]: 负责管理16个自由链表.每个节点都是union obj类型 小额块区

2020-12-17 18:32:09 1479

原创 STL空间配置器---一级空间配置器实现(详细注释)

一级空间配置器要点allocate() 直接使用 malloc(),deallocate()直接使用free()一级空间配置器内部模拟实现了set_new_handler机制为什么要模拟实现new_handler机制呢根本原因是因为没有使用operator new这可能也是一个历史因素//一级空间配置器要求//1. 基本上就是对4个转调函数使用malloc 和free 封装//2. 最为重要的就是处理内存不足的情况暨 set_new_handler////======//1

2020-12-17 16:34:00 109

原创 effective c++ new_handler

new_handler行为了解:effective c++ 49什么是new_handler当 operator new无法分配到足够的内存时,他默认会抛出一个异常在抛出异常之前,无法分配到足够的内存之后,operator new会先调用 new_handlernew_handler一班是由客户指定的:所以客户必须调用set_new_handler: ---->参考 set_malloc_handler和my_alloc_handlerset_new_handler的实现

2020-12-15 22:57:14 209 1

原创 STL空间配置器---两级空间配置器简介

整体框架上一篇STL空间配置器—构造和析构讲述了第一个部分由于第二部分比较庞大,所以我决定拆成三次来写完本篇主要是简单介绍一下两级空间配置器的思路,以及提前说一下new_handler机制简单介绍SGI 设计了双层级配置器,第一级配置器直接使用 malloc() 和 free(),第二级则视情况采用不同策略,并采用了复杂的内存池(memory pool) 整理方式。一级空间配置器当配置区块超过128bytes时,将使用一级空间配置器一级空间配置器要点allocate() 直接使用 ma

2020-12-15 22:05:34 916 2

原创 STL空间配置器---构造和析构

文章目录整体框架constructdestory第一个版本第二个版本整体流程其他问题整体框架本文主要针对construct和destoryconstruct#include <new.h>template <class T1,class T2>inline void destory(T1 *p,const T2& value){ new(p)T1(value);//这里使用的是placementnew}构造函数主要是使用placement ne

2020-12-15 15:06:26 188

原创 github简单使用

文章目录基本命令行创建版本仓库版本创建git 三个区域加入工作区 git add提交到版本库 git commit查看相关状况撤销修改撤销工作区的修改撤销暂存区的修改版本切换第一步 git reflog第二步 git reset/revert --heard "版本号"对比相同文件对比工作区和版本库的文件对比两个版本库的文件删除文件小总结分支查看分支创建分支切换分支合并分支删除分支分支冲突简单使用基本命令行首先创建一个空的目录,后续操作都在这个目录里面创建版本仓库git init在git i

2020-12-10 19:07:26 806

原创 <<apue>> 可重入和线程安全

回顾什么是可重入?线程安全函数如果一个函数,对于多个线程来说是可重入的,那么这个函数就是线程安全的异步信号安全如果函数对于异步信号处理成序的重入是安全的,那么该函数就是异步信号安全的包含关系可重入与线程安全两个概念都关系到函数处理资源的方式。但是,他们有重大区别:可重入函数要解决的问题是,不在函数内部使用静态或全局数据,不返回静态或全局数据,也不调用不可重入函数。线程安全函数要解决的问题是,多个线程调用函数时访问资源冲突。① : 函数如果使用静态变量,通过加锁后可以转成线程安

2020-12-03 14:14:07 603

原创 <<APUE>> 可重入函数 和不可重入

要熄灯断电了,明天考试,明天再修改可重入函数可重入函数(reentrant):在任意时刻可以被中断,稍后再继续运行,不会丢失数据,即不用担心数据被其他线程篡改。可重入函数必须满足以下三个条件:可以在执行的过程中可以被打断;被打断之后,在该函数一次调用执行完之前,可以再次被调用(或进入,reentered)。再次调用执行完之后,被打断的上次调用可以继续恢复执行,并正确执行。不可重入函数多任务调用某一不可重入函数时,可能修改其他任务调用该函数的数据,从而导致不可预料的后果。即不可重入函数

2020-12-02 22:32:13 789 1

原创 <<APUE>> 第十章信号(1)

#第十章 信号1.不存在编号为0的信号 , kill函数对编号为0的信号有特殊用途2.0号信号是空信号3.errno到底是什么?4.为什么longtmp 和siglongtmp是不可重入的信号?这个还需要再度的探究5.在会话哪里 是将信号发送给前台进程整个进程组的 kill(pid < 0,signo) 而kill函数也可以发信号给某个具体的进程 ------>所以 信号的接受者的基本单位是进程 而不是进程组####信号处理的相关动作忽略信号2个信号不可以忽略1.sigk

2020-11-30 20:55:17 606

原创 进程组和会话

进程组:进程组是一个或是多个进程的集合:同一个进程组的各个进程 接受来自于同一个终端的信号每一个进程组,有一个唯一的 pgid (进程组id)pid_t getpgid(pid_t pid);//获取某个进程所在进程组的pgid进程组组长相关:每个进程组,都有一个组长. 组长のpid=pgid;进程组组长 可以 创建一个新的进程组,创建改组中的进程,终止改组中的进程进程组的生命周期生命周期:只要该进程组中还有进程存在,这个进程组就还存在:---->进程组的生死

2020-11-28 12:55:24 817

原创 ELF文件浅析

文章目录知识回顾gcc过程gcc相关命令:gcc相关文件虚拟地址空间分布知识预览ELF文件有哪些知识回顾gcc过程上一篇博客讲述过c程序的启动和终止:gcc -v 查看完整的gcc过程ld 为链接器as 为汇编器gcc相关命令:转载优秀博客选项功能文件后缀-o指定输出文件的文件名称-E生成预处理之后的文件xxxx.i-S生成编译之后的文件(汇编代码)xxxx.s-c将汇编代码转换成机器语言,暨生成目标文件xxxx.o-g

2020-11-26 20:23:57 1035

原创 进程调度相关,浅析cfs

写在前面前两天写了一篇关于进程调度的博客.准确来说是读书笔记.参考的是<<深入理解linux内核>>本来还是蛮顺畅的.当我去尝试了解CFS的时候 ,发现事情有点不对劲. 后来在网上查啊查,找啊找,最后还是想不通. 最后迫于无奈,又去看了各种各样的书. 昨天我买的<<linux内核深度解析>>邮过来了.画了一天时间,对进程调度又做了一点了解.本篇博客也是一篇读书笔记., << linux内核深度解析>>第二章相对于上一篇博客:

2020-11-25 22:50:52 1110

原创 僵尸进程 孤儿进程 进程时间

退出状态和终止状态:退出状态:exit _eixt函数会产生退出状态终止状态:wait和waitpid函数将取得终止状态父进程在子进程之前终止:会产生孤儿进程孤儿进程:父亲死了,我还活着,我成孤儿了对于父进程已经终止的所有进程,他们的父进程都会改变成init进程.称之为收养收养的大致过程: 书上原话: 当一个进程终止之后,内核逐个检查所有的活动进程,以判断他 是否是要终止的进程的子进程,如果是,则该进程的父进程的id就更该为1 ---->这种处理方法保证了每一个进程都会

2020-11-25 13:37:52 1142

原创 system和popen函数

SYSTEM函数对操作系统的依赖性极强int system(const char * cmdstring);system在实现中 调用了 fork exec 和waitpid1.fork失败或者 waitpid返回出eintr之外的出错 system 返回-12.如果exec失败(表示shell命令不能执行), 择期返回值如同shell执行了exit3.斗则 这三个函数都成功的话, 返回值是这个shell命令的终止状态使用system而不直接使用fork和exec的优点是: 人家都给你

2020-11-22 22:11:06 3084

原创 <<深入理解linux内核>> --进程调度读书笔记

1. 常见调度算法优秀博客: https://www.cnblogs.com/alantu2018/p/8460451.html先来先服务短作业优先最高响应比时间片轮转多级反馈队列2. 进程分类2.1 第一种cpu密集型进程如果进程的绝大多数都在使用 CPU 做运算的话,那么这种进程称之为 CPU 消耗型,比如开启 Matlab 做一个大型的运算。没有太多的 I/O 需求,从系统响应的角度上来讲,调度器不应该经常让他们运行。对于处理器消耗型的进程,调度策略往往是降低他们的执行频

2020-11-21 17:26:31 1424

原创 函数簇 execve wait exit

第八章进程功能0号金城:调度进程,也叫做交换进程, idle进程:1号进程:进程树的根,init进程2号进程:kthreadd进程:== =======================进程诞生特殊之处备注0号由系统自动创建,运行在内核态他的前身是整个系统创建的第一进程,也是唯一一个没使用fork或kernel_thread创建的进程系统加载完成之后,0号进程进行演变 演变成进程调度,交换1号由0号进程创建(通过kernel

2020-11-20 15:02:57 1421

原创 <<APUE>>第八章--fork vfoek pthread_creat 和clone()

文章目录fork()返回值写时复制的具体过程:关于fork和vforkfork之后文件共享:fork之后处理文件描述符有两种常见的情况:fork之后 父子共享的东西fork之后父子之间不一样的东西fork会失败吗?为什么?关于VFORKvfork不想fork那样放将父进程的底层虚拟地址完全复制 --->vfork之后会立即调用exec关于vfork调用栈混乱的根本原因:八字真言:读时共享,写时分离fork()include <unistd.h>pid_t fork(void)

2020-11-19 13:19:31 2102

原创 <<深入linux内核>>第三章 进程

进程 线程 轻量级进程linux内核上准确来说并没有 线程这一概念linux的线程其实是一种"轻量级进程"进程:操作系统分配系统资源的基本单位线程(轻量级进程):系统执行任务的基本单位多线程进程=多个轻量级进程组合成一个进程=一个线程(轻量级进程)组Linux使用轻量级进程对多线程应用程序提供更好的支持具体:实现多线程程序的一个简单方式就是把轻量级进程与每个线程关联起来.这样线程虹之间就可以通过简单地共享同一个内存地址空间,统一打开文件集来进行访问相同的应用程序数据结构集.同时每个线程

2020-11-18 13:22:26 1203

原创 apue第八章额外补充 ----电脑开机与0号1号 2号进程

转载优秀博客(务必要看) https://www.cnblogs.com/alantu2018/p/8526970.html第八章一气(电脑通电)三清(三个进程)三个进程进程功能0号进程: idle进程调度进程,也叫做交换进程, idle进程:1号进程:init进程进程树的根,init进程2号进程:管理内核线程:进程诞生特殊之处备注0号由系统自动创建,运行在内核态他的前身是整个系统创建的第一进程,也是唯一一个没使用fork或k

2020-11-16 17:44:16 1262

原创 网路-面试准备ppp协议

面试准备:10/31你了解ppp协议吗?ppp是多个协议的集合:ppp协议主要有两部分:1. lcp:链路控制协议2. ncp:网络控制协议问题1:ppp链路的建立过程:参考添加链接描述状态解析:1. 链路静止: 1. 链路一定开始并结束于此阶段 2.当接收到一个外部事件,指出物理层准备就绪的时候PPP将进入链路建立阶段。2. 链路建立: lcp协议复制建立 维护 终止链路在这个阶段接收的任何非LCPpackets必须被silentlydiscarded(静静的丢弃)1.

2020-11-01 01:36:23 1520

原创 effective35操作符

操作符对定制的"类型转换函数"保持警觉区别increment/decrement操作符的前置和后置形式千万不要重载&&,||以及逗号操作符//4. 了解各种不同意义的new和delete1.对定制的"类型转换函数"保持警觉主要的一点:单参构造函数,可能会引发隐式类型转换的问题(半缺省也会引起类似的问题)class Name{public: Name(const string& s); //可以把string转换为Name //....};class

2020-09-09 20:59:03 70

空空如也

空空如也

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

TA关注的人

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