自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 await async 处理promise封装jquery ajax请求

【代码】await async 处理promise封装jquery ajax请求。

2023-04-13 22:19:04 394

原创 正则在js中的使用

str.replace(/激情|gay/g, ‘**’);//将str中 激情何gay全局替换。gi:全局匹配 + 忽略大小写。

2022-08-02 22:35:39 597

原创 数据扁平化、去扁平化

// 去扁平化 function myparse(list,str){ var newArr=[] list.forEach(item=>{ if(item.pid===str){ newArr.push(item) var children= myparse(list,item.id) if(children.length){ item.children=chi...

2022-03-31 20:24:00 334

原创 js中的reduce函数详解

reducer 逐个遍历数组元素,每一步都将当前元素的值与上一步的计算结果相加(上一步的计算结果是当前元素之前所有元素的总和)——直到没有更多的元素被相加。语法:reduce(function(previousValue, currentValue, currentIndex, array) { /* ... */ }, initialValue)参数:一个 “reducer” 函数,包含四个参数:previousValue:上一次调用callbackFn时的返回值。在第一次调用时,..

2022-03-17 21:46:06 22778

原创 js得到数组A减去数组B的结果

// 题意 例如arr1=[1,2,3,4,5] arr2=[1,2] arr1减去arr2的结果就是 [3,4,5] var arr1 = [ { name: 'zs', id: 18 }, { name: 'xiaoming', id: 20 }, ...

2022-03-17 21:36:17 961

原创 封装本地存储操作模块

// 封装本地存储模块// 存储数据export const setItem = (key, value) => { if (typeof value === 'object') { value = JSON.stringify(value) } window.localStorage.setItem(key, value)}// 获取数据export const getItem = key => { const data = wi.

2022-03-12 00:02:03 259

原创 js高频面试题

01-JavaScript的数据类型有哪些?基本数据类型:number、string、boolean、null、undefined 引用数据类型:function、object、Array02-什么是显示转换隐式转换?强制转化成字符串 toString() String() 转换成数字 Number()、 parseInt()、 parseFloat() 转换成布尔类型 Boolean() 隐式拼接字符串 例子 var str = "" + 18 - / %

2022-03-10 00:08:22 661

原创 css 高频面试题

01-如何使一个盒子水平垂直居中?

2022-03-09 23:49:23 190

原创 c语言 二叉树基本操作

#include "BinTree.h"#include <assert.h>#include <malloc.h>#include <stdio.h>#include <string.h>#include "Queue.h"BTNode* BuyBinTeeNode(BTDataType data){ BTNode* pN...

2020-03-02 23:26:55 214

原创 c++智能指针

智能指针的使用及原理 RAII(Resource Acquisition Is Initialization)是一种利用对象生命周期来控制程序资源(如内存、文件句 柄、网络连接、互斥量等等)的简单技术。 在对象构造时获取资源,接着控制对资源的访问使之在对象的生命周期内始终保持有效,最后在对象析构的 时候释放资源。借此,我们实际上把管理一份资源的责任托管给了一个对象。这种做法...

2020-02-23 00:23:11 149

原创 C++ 类型转换

1.static_caststatic_cast 用于内置类型的数据类型还有具有继承关系的指针或者引用2.dynamic_cast结论 dynamic 只能转换具有继承关系的指针或引用,并且只能由子类型转换成基类型3.const_cast 指针 引用或者对象指针增加或者去除变量的 const 属性4.reinterpret_cast 强制类型转换无关的...

2020-02-21 23:28:46 127

原创 本地套接字

本地套接字: IPC: pipe、fifo、mmap、信号、本地套接字(domain)---cs 模型 对比网络编程 TCP C/S模型 注意以下几点: 1.int socket(int domain,int type,int protocol); 参数 domain:AF_INET-->AF_UNIX/AF_LOCAL...

2020-02-20 21:44:15 968 1

原创 udp通信

TCP UDP各自优缺点: TCP: 面向连接的,可靠数据包传输。对于不稳定的网络层,采取完全弥补的通信方式。丢包重传。 优点: 稳定 数据流量稳定、速度稳定、顺序 缺点: 传输速度慢、效率低、开销大 ...

2020-02-20 21:21:01 202

原创 线程池

描述线程池相关信息struct threadpool_t{ pthread_mutex_t lock; 用于锁住本结构体 pthread_mutex_t thread_counter 记录忙状态线程个数的 锁 -- busy_thr_num pthread_cond_t queue_not_full 当任务队列满时,添加任务的线程阻...

2020-02-20 18:00:54 177

原创 IO 多路转接 epoll

read 函数返回值 >0 :实际读到的字节数 =0 :socket中,表示对端关闭 close() -1 : 如果errno = EINTR 被异常中断。需要重启。 如果errno =EAGIN 或 EWOULDBLOCK 以非阻塞的方式读数据,但是没有数据。需要再次读 如果errno = ECONNRESET 说明...

2020-02-19 21:38:07 195

原创 yum & ctags

yum:软件包管理工具查看软件包:yum listlrzsz yum list|grep lrzsz安装软件包:yum installlrzsz.x86_64 yum install lrzsz.x86_64 yum install lrzszyum install gccyum list installed 查看已经安装的移除软件包:yum removelrz...

2020-02-19 21:37:42 440

原创 IO 多路转接 poll

poll: int poll(struct pollfd* fds,nfds_t nfds,int timeout) fds: 监听的文件描述符 【数组】 struct pollfd { int fd 待监听的文件描述符 short...

2020-02-18 21:42:46 151

原创 IO 多路转接 select

TCP状态时序图: 1.主动发起连接请求端: CLOSE --发送SYN--SEND_SYN --接受 ACK、SYN --SEND_SYN--发送 ACK --ESTABLISHED(数据通信状态) 2.主动关闭连接请求端; ESTABLISHED(数据通信状态) --发送FIN --FIN_WAIT_1 --接受 ACK --FIN_WAIT_2(半关闭) ...

2020-02-18 21:09:10 149

原创 tcp状态装换

TCP状态时序图: 1.主动发起连接请求端: CLOSE --发送SYN--SEND_SYN --接受 ACK、SYN --SEND_SYN--发送 ACK --ESTABLISHED(数据通信状态) 2.主动关闭连接请求端; ESTABLISHED(数据通信状态) --发送FIN --FIN_WAIT_1 --接受 ACK --FIN_WAIT_2(半关闭)...

2020-02-18 19:58:21 247

原创 套接字编程 (多进程多线程)

三次握手: 主动发起连接请求端,发送SYN标志位,请求建立连接。携带序号、数据字节数(0)、滑动窗口大小。 被动接受连接请求端,回复ACK标志位,同时携带 SYN 请求标志位。 携带序号、确认序号、数据字节函数(0)、滑动窗口大小 主动大气连接请求端,发送 ACK 标志位,应答服务器连接请求。携带确认序号。四次挥手: 主动关闭连接请求端,发送 FIN标...

2020-02-15 00:14:58 1135

原创 网络基础&套接字编程 一

协议: 一组规则分层模型结构: OSI 七层模型 : 物、数、网、传、会、表、应 TCP/IP 4层模型:网(链路层/网络接口层)、网、传、应 应用层:http、ftp、nfd、ssh、telnet 传输层:TCP/UDP 网络层:IP、ICMP、IGMP 链路层:以太网帧协议、ARPc/s...

2020-02-14 23:00:43 227

原创 linux 线程同步

线程同步: 协同步调,对公共区域的数据排队访问。防止数据混乱。产生与时间有关的错误。 一个线程发出某一功能调用时,在没有得到结果之前,该调用不返回。同时其他线程为保证数据一致性,不能调用该功能。 列子:银行存款5000.柜台存折:取3000; 提款机,卡 :取 3000 。剩余:2000锁的使用: 建议锁 ! 对公共数据进...

2020-02-14 00:11:59 133

原创 linux 线程

线程概念: 进程:有独立的 进程地址空间。 有独立的pcb。 分配资源最小单位 线程:有独立的 pcb。 没有独立的进程地址空间 执行最小单位 ps-Lf 进程id --》线程号 LWP -->CPU 执行的最小单位线程共享资源: 1.文件描述符 2.每种信号的处理方式 3.当前工作目录 4....

2020-02-13 20:12:33 324

原创 守护进程及会话

创建一个会话:#include<stdio.h>#include<stdlib.h>#include<string.h>#include<unistd.h>int main(){ pid_t pid; if((pid=fork())<0){ perror("fork error"); exit(1);...

2020-02-12 22:58:10 239

原创 linux 信号相关函数 二

信号集操作函数: sigset_t set ; 自定义信号集 int sigemptyset(sigset_t* set); 清空信号集 int sigfillset(sigset_t* set); 全部置一 int sigaddset(sigset_t* set,int signum); 讲一个信号添加到集合中 int sigd...

2020-02-12 20:55:10 276

原创 linux 信号相关函数 一

信号共性: 简单、不能携带大量信息、满足条件才发送信号的特质: 信号是软件层面的 中断。一旦信号产生,无论程序执行到什么位置,必须停止运行,处理信号,处理结束,再继续执行后续指令。 所有信号的产生及处理都是 由 内核完成的。信号相关概念: 产生信号: 1.按键产生 如:ctrl+c 2.系统调用产生 如:kil...

2020-02-12 17:36:22 209

原创 linux 常规信号

常规信号一览:1)SIGHUP:当用户退出shell时,由该shell启动的所有进程将收到这个信号,默认动作为终止进程。2) SIGINT:挡用户按下了<ctr+C>组合键时,用户终端向正在运行中的由该终端启动的程序发出此信号。默认动。作为终止进程。。3) SIGQUIT:当用户按下<ctrI+\>组合键时产生该信号,用户终端向正在运行中的由该终端启动的程序...

2020-02-12 15:54:58 533

原创 进程间通信

什么是IPC 进程间通信 InterProcess Communication进程间通信方式 管道 -- 简单 信号 -- 系统开销小 共享映射区 -- (有无血缘关系进程间通信都可以) 本地套接字-- 稳定管道(匿名) 管道的概念: ...

2020-02-12 00:48:55 154

原创 linux 进程

进程: 程序:死的。只占磁盘空间 --剧本 进程:活得。运行起来的程序。 占用内存、cup等系统资源 ---戏虚拟内存物理内存映射PCB进程控制块:struct task struct 结构体 进程id 文件描述符表 进程状态: 初始态 、就绪态、 运行太、挂起态、终止态 进程工作目录位置 umask 掩码...

2020-02-11 22:31:54 135

原创 linux 目录相关函数

目录操作函数: DIR* opendir(char* name) int closedir(DIR* dp) struct dirent* readdir(DIR* dp); struct dirent{ inode char dname[256] }递归遍历目录:l...

2020-02-11 01:05:54 224

原创 linux 文件系统

文件系统:inode: 命令: stat 文件名 查看文件 inode结点 本质为结构体,存储文件的属性信息 如 权限、类型 大小、盘块位置 大多数inode存在磁盘上 少量常用。近期使用的inode 会被缓存到内存中dentry 目录项,本质依然是结构体,重要成员变量有两个 {文件名 ,inode...} 文件内容保存在磁盘块中...

2020-02-10 22:12:11 175

原创 linux文件 IO

系统调用:由操作系统实现并提供给外部应用程序的编程接口,是应用程序同系统之间数据交换的桥梁open 函数:int open (char* pathname,int flags) #include<unistd.h> 参数: pathname :欲打开的文件路径名 flags :文件的打开方式 : O_RDONLY | O_WRONLY | O_RDWR O_CRE...

2020-02-10 19:59:18 222

原创 gdb 调试

gdb 调试工具: 大前提 :程序是你自己写的。基础指令:-g :使用改参数编译可执行文件,得到调试表。gdb ./a.outlist: list 1 列出源码、 根据源码指定行号 设置断点、b: b20 在20行设置断点、run/r : 运行程序 n/next :下一条指令(越过函数)s/step:下一条指令(会进入函数)p/print: p i 查看变量的值...

2020-02-09 22:51:08 143

原创 静态库动态库制作及使用

静态库&动态库:静态库:对空间要求较低,而时间要求较高的核心程序中动态库:对时间要求较低 ,对空间要求较高静态库制作及使用步骤:1. 将.c生成 .o 文件 gcc -c add.c -o add.o2.使用 ar 工具制作静态库 ar rcs lib库名.a add.o sub.o div1.o3.编译静态库到可执行文件中: gcc test.c (库路...

2020-02-09 22:43:14 167

原创 linux基础知识

终端:一系列输入输出设备的总称linux 中 所见皆文件根目录下:bin:存放二进制可执行文件boot:存放开机启动程序dev:存放设备文件etc:用户信息系统配合文件home:存放用户lib:库文件usr:用户资源管理目录root:管理员宿主目录(家目录)linux系统文件类型普通文件:-目录文件:d字符设备文件:c块设备文件:b软连接:l管道文件:p套接字:...

2020-02-09 22:39:58 176 1

原创 宏和内联函数

宏的优缺点?优点:1.增强代码的复用性。2.提高性能。缺点:1.不方便调试宏。(因为预编译阶段进行了替换)2.导致代码可读性差,可维护性差,容易误用。3.没有类型安全的检查 。C++有哪些技术替代宏?常量定义 换用const函数定义 换用内联函数宏函数优缺点优点:预处理阶段替换,少了函数调用过程开销,代码效率高缺点:不是真正的函数,预处理阶段展开,不参与编译参数类型检...

2019-11-19 15:34:15 157

原创 引用

引用1.概念引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。2.特性引用在定义时必须初始化一个变量可以有多个引用引用一旦引用一个实体,再不能引用其他实体3.做函数返回值应注意如果函数返回时,离开函数作用域后,其栈上空间已经还给系统,因此不能用栈上的空间作为引用类型返回。如果以引用类型返回,返回值的生命周期...

2019-11-19 14:59:59 159

原创 递归详解

为什么你学不会递归?告别递归,谈谈我的一些经验来源:苦逼的码农可能很多人在大一的时候,就已经接触了递归了,不过,我敢保证很多人初学者刚开始接触递归的时候,是一脸懵逼的,我当初也是,给我的感觉就是,递归太神奇了!可能也有一大部分人知道递归,也能看的懂递归,但在实际做题过程中,却不知道怎么使用,有时候还容易被递归给搞晕。也有好几个人来问我有没有快速掌握递归的捷径啊。说实话,哪来那么多捷径啊,不过...

2019-11-13 17:53:35 183

原创 C语言循环队列

MyCircularQueue(k): 构造器,设置队列长度为 k 。Front: 从队首获取元素。如果队列为空,返回 -1 。Rear: 获取队尾元素。如果队列为空,返回 -1 。enQueue(value): 向循环队列插入一个元素。如果成功插入则返回真。deQueue(): 从循环队列中删除一个元素。如果成功删除则返回真。isEmpty(): 检查循环队列是否为空。isFull(): 检查循环队列是否已满。来源:力扣(LeetCode)链接:https://leetcode-cn.c

2019-11-13 16:25:40 473

原创 栈和队列

#pragma oncetypedef int SDataType;typedef struct Stack { SDataType* _array; int _capacity; int _size;}Stack;void StackInit(Stack* s);void StackPush(Stack* s,SDataType data);void StackPop(S...

2019-11-13 16:21:52 84

空空如也

空空如也

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

TA关注的人

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