自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(54)
  • 资源 (1)
  • 收藏
  • 关注

原创 语言分词学习--jieba分词包

Anaconda,中文大蟒蛇,是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项Anaconda包括Conda、Python以及一大堆安装好的工具包,比如:numpy、pandas等conda是一个开源的包、环境管理器,可以用于在同一个机器上安装不同版本的软件包及其依赖,并能够在不同的环境之间切换在cmd中输入下述指令:(2)使用步骤安装包导入包调用包HMM参数表示分词粒度分词结果是一个pair总的步骤:n-普通名称

2022-06-09 11:07:09 764 1

原创 面经-场景题

一、数据流查找数据1. 找中位数1.1 有限数据文件建立一个大根堆,一个小根堆,每次加入数据保证了两个堆数量相等。大根堆保存较小数,小根堆保存较大数。LeetCode数据流中的中位数1.2 超大数据文件100GB数据,查找中位数,内存只有512MB100GB数据按照大小分解成200个小文件(根据内存大小分),这些文件中分别存放数字大小在一定范围中的数字,同时统计每个小文件中元素的个数,这样就能知道中位数在哪个文件中以及中位数在该文件中的第K个数,然后查找该文件中的第K大数即可。

2021-08-09 12:14:48 1868

原创 IO多路复用

I/O 多路复用使得程序能同时监听多个文件描述符,能够提高程序的性能,Linux 下实现 I/O 多路复用的系统调用主要有 select、poll 和 epoll。1. select 主旨思想: 1. 首先要构造一个关于文件描述符的列表,将要监听的文件描述符添加到该列表中。 2. 调用一个系统函数,监听该列表中的文件描述符,直到这些描述符中的一个或者多个进行I/O 操作时,该函数才返回。 a.这个函数是阻塞 b.函数对文件描述符的检测的操作是由内核完成的 3...

2021-07-09 19:02:22 230

原创 秋招(提前批)面经

字节跳动字节跳动校园招聘

2021-07-08 20:31:25 436

原创 Linux高并发服务器开发

程序突然退出而系统没有释放端口-端口复用端口复用最常用的用途是:防止服务器重启时之前绑定的端口还未释放 程序突然退出而系统没有释放端口#include <sys/types.h>#include <sys/socket.h>// 设置套接字的属性(不仅仅能设置端口复用)int setsockopt(int sockfd, int level, int optname, const void *optval, socklen_t optlen);/*..

2021-07-08 17:34:38 2305

原创 《CUDA C编程权威指南》学习笔记 chap4-6

《CUDA C编程权威指南》示例代码下载第4章 全局内存4.1 CUDA内存模型概述1. 内存层次结构的优点CUDA编程模型能将内存层次结构更好地呈现给用户,能让我们显式地控制 它的行为。2. CUDA内存模型CUDA内存模型提出了多种可编程内存的类型: ·寄存器 ·共享内存 ·本地内存 ·常量内存 ·纹理内存 ·全局内存所有线程都可以访问全 局内存。所有线程都能访问的只读内存空间有:常量内存空间和纹理内存空间。全局内 存、常量内存和纹理内存空间有不同的用途。纹理内存为各种数据布局提供了不

2021-05-08 11:53:54 498 2

转载 CUDA中grid、block、thread、warp与SM、SP的关系

首先概括一下这几个概念。其中SM(Streaming Multiprocessor)和SP(streaming Processor)是硬件层次的,其中一个SM可以包含多个SP。thread是一个线程,多个thread组成一个线程块block,多个block又组成一个线程网格grid。 现在就说一下一个kenerl函数是怎么执行的。一个kernel程式会有一个grid,grid底下又有数个block,每个block...

2021-05-07 17:37:24 4051

原创 《CUDA C编程权威指南》学习笔记 chap1-3

第二章 CUDA编程模型2.1 CUDA编程模型概述内存管理GPU内存分配:cudaMalloccudaError_t cudaMalloc(void** devPtr, size_t size)该函数负责向设备分配一定字节的线性内存,并以devPtr的形式返回指向所分配内存 的指针。cudaMalloc与标准C语言中的malloc函数几乎一样,只是此函数在GPU的内存里分 配内存。通过充分保持与标准C语言运行库中的接口一致性,可以实现CUDA应用程序的 轻松接入。2. 主机和设备之间的

2021-04-27 22:15:38 658 2

转载 HTTP协议是有状态还是无状态的?Cookie和Session

在面试中被问到HTTP协议是有状态还是无状态的,当场就有点懵,因为不会就没答出来。还是得总结一下啵! 一、HTTP协议的状态 HTTP是一种无状态协议,即服务器不保留与客户交易时的任何状态。 也就是说,上一次的请求对这次的请求没有任何影响,服务端也不会对客户端上一次的请求进行任何记录处理。 二、HTTP协议的无状态性带来的问题: 用户登录后,切换到其他界面,进行操作,服务器端是无法判断是哪个用户登录的。...

2021-04-10 10:29:55 4852

转载 TCP面试常见题:time_wait状态产生的原因,危害,如何避免

http://blog.csdn.net/u013616945/article/details/77510925 MSL(Maximum Segment Lifetime)最大报文生存时间         每个TCP实现必须选择一个MSL。它是任何报文段被丢弃前在网络内的最长时间。这个时间是有限的,因为TCP报文段以IP数据报在网络内...

2021-04-08 20:54:38 970

转载 C++ 虚函数表 vfptr详解

前言大家都应该知道C++的精髓是虚函数吧? 虚函数带来的好处就是: 可以定义一个基类的指针, 其指向一个继承类, 当通过基类的指针去调用函数时, 可以在运行时决定该调用基类的函数还是继承类的函数. 虚函数是实现多态(动态绑定)/接口函数的基础. 可以说: 没有虚函数, C++将变得一无是处! 既然是C++的精髓, 那么我们有必要了解一下她的实现方式吗? 有必要! 既然C++是从C语言的基础上发展而来的, 那么我们可以尝试用C语言来模拟实现吗? 有可能! 接下来, 就是我一步一步地来解析C++的虚函数的实

2021-04-08 11:13:27 1428 1

转载 HTTP 2.0 原理详细分析

HTTP 2.0是在SPDY(An experimental protocol for a faster web, The Chromium Projects)基础上形成的下一代互联网通信协议。HTTP/2 的目的是通过支持请求与响应的多路复用来较少延迟,通过压缩HTTPS首部字段将...

2021-04-08 10:47:55 874

转载 C++强制类型转换:static_cast、dynamic_cast、const_cast、reinterpret_cast

C++强制类型转换:static_cast、dynamic_cast、const_cast、reinterpret_cast1. c强制转换与c++强制转换c语言强制类型转换主要用于基础的数据类型间的转换,语法为:(type-id)expression//转换格式1type-id(expression)//转换格式2c++除了能使用c语言的强制类型转换外,还新增了四种强制类型转换:static_cast、dynamic_cast、const_cast、reinterpret_cast,主要运用

2021-04-07 11:07:53 119

原创 【VSCode】 VSCode配置LeetCode插件

1. 安装VSCode并配置环境VScode安装、配置C++运行环境2. 安装LeetCode插件插件扩展中搜索LeetCode插件,安装热度最高的那个即可。安装完成会出现上述按钮。3. 安装Node.js在安装完LeetCode插件之后,会提示你安装Node.js,除了安装路径一路next即可。Node.js在安装完成之后会自动配置环境变量,所以我们无需操心。4. 登录LeetCode账户5. 配置文件路径6. 快乐编程LeetCode插件提供类似网页版的题目筛选功能,可以按照题目序

2021-03-22 10:27:14 14870 5

原创 【Linux】硬链接和软链接

硬链接和软链接预备知识:Linux文件系统之inode、block、superblock命令 ln硬链接: 硬连接指通过索引节点 inode 产生新文件名而不是新文件,即每一个硬链接都是一个指向对应区域的文件。可以透过1或2的目录之inode指定的block找到两个不同的文件名,而不管使用那个文件名均可指到real那个inode去读取到最终数据。优点: 安全,删除任何一个档名(上图中的1或2),inode和block都是存在的,此外无论使用哪个档名编辑,最终结果都会写入inode和bl

2021-03-19 16:02:01 71

原创 【Linux】 常用命令

1. 通过进程id查看占用的端口,通过端口号查看占用的进程 id?通过进程id查看占用的端口:netstat -nap | grep 进程id通过端口号查看占用的进程id :netstat -nap | grep 端口号2. 如何查看占用内存比较多的进程?ps aux | sort -k4nr | head -Nhead :-N可以指定显示的行数,默认显示10行。ps :a—指代所有的进程,u—userid—执行该进程的用户id,x—指代显示所有程序,不以终端机来区分。ps -aux的

2021-03-18 19:42:51 129

原创 【数据结构】排序算法

排序1 冒泡排序如果遇到相等的值不进行交换,那这种排序方式是稳定的排序方式。1. 原理: 比较两个相邻的元素,将值大的元素交换到右边2. 思路: 依次比较相邻的两个数,将比较小的数放在前面,比较大的数放在后面。(1)第一次比较:首先比较第一和第二个数,将小数放在前面,将大数放在后面。(2) 比较第2和第3个数,将小数 放在前面,大数放在后面。…(3)如此继续,知道比较到最后的两个数,将小数放在前面,大数放在后面,重复步骤,直至全部排序完成(4)在上面一趟比较完成后,最后一个数一定是数组

2021-03-14 11:41:45 212

原创 【杂项】 面试复习

main函数之前执行了什么?全局对象的构造函数会在main 函数之前执行。①设置栈指针②初始化静态和全局变量,即data段的内容③将未初始化部分的赋初值:数值型short,int,long等为0,bool为FALSE,指针为NULL,等等,即.bss段的内容④运行全局构造器,估计是C++中构造函数之类的吧⑤将main函数的参数,argc,argv等传递给main函数,然后才真正运行main函数Select poll epoll网络IO可以抽象成用户态和内核态之间的数据交换。使用sel..

2021-03-13 20:16:37 189

原创 【数据库】 面试复习

1.数据库事务**事务:**是数据库并发控制的基本单位,一条或者一组语句要么全部成功,对数据库中的某些数据成功修改; 要么全部不成功,数据库中的数据还原到这些语句执行。四大属性ACID原子性(Atomicity):事务是一个完整的操作。事务的各步操作是不可分的(原子的);要么都执行,要么都不执行一致性(Consistency:数据库中只包含成功事务提交的结果隔离性(Isolation):对数据进行修改的所有并发事务是彼此隔离的,这表明事务必须是独立的,它不应以任何方式依赖于或影响其他事务永久性(

2021-03-13 20:13:44 657

原创 【操作系统】Linux文件系统 block、inode、superblock

UNIX文件系统1. 数据区块(block)真正存放文件的地方。2. inode存储内容:特点:结构示意图:inode本身128B,inode记录一个数据区块需要4B,数据区块按照1KB计算,总共存储量=12+256+256256+256256*256=16GB3. 超级区块(superblock)记录信息:5. 与目录树的关系...

2021-03-12 16:37:32 1614 3

原创 【C++】 map按值排序 自定义排序

map是用来存放<key, value>键值对的数据结构,可以很方便快速的根据key查到相应的value。假如存储学生和其成绩(假定不存在重名,当然可以对重名加以区分),我们用map来进行存储就是个不错的选择。 我们这样定义,map<string, int>,其中学生姓名用string类型,作为Key;该学生的成绩用int类型,作为value。这样一来,我们可以根据学生姓名快速的查找到他的成绩。       &...

2021-03-11 09:40:12 3083 1

原创 【操作系统】 进程控制 僵尸进程和孤儿进程

1. 进程创建fork()调用形式 pid=fork()功能创建一个子进程,被创建的子进程是父进程的进 程映像的一个副本 (除proc结构外),在UNIX系统中,除 了0#进程外,其它进程都是通过调用进程创建系统调用创建的。动作① 为新进程分配一个新的pcb结构;② 为子进程赋一个唯一的进程标识号 (PID);③ 做一个父进程上下文的逻辑副本。由于进程的正文区 (代码段) 可被几个进程所共享,所以核心只要增加某个正文区的引用数即可,而不是真的将该区拷贝到一个新的内存物理区。这就意味着父子进程

2021-03-09 20:27:05 83

原创 win10无法打开WLAN WLAN autoconfig启动按钮灰色

打开设备管理器查看无线网卡是否运行正常此电脑右键->管理->设备管理器->网络适配器如果无,则是网卡缺失,使用驱动精灵等修复。双击网卡驱动器->高级

2021-03-09 08:55:22 2635

原创 【操作系统】面试复习

1. 进程与线程(1)进程有自己的独立地址空间,线程没有(2)进程是资源分配的最小单位,线程是CPU调度的最小单位(3)进程和线程通信方式不同(线程之间的通信比较方便。同一进程下的线程共享数据(比如全局变量,静态变量),通过这些数据来通信不仅快捷而且方便,而进程之间的通信只能通过进程通信的方式进行。)(4)进程上下文切换开销大,线程开销小(5)一个进程挂掉了不会影响其他进程,而线程挂掉了会影响其他线程(6)一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。线程是操作系统可识别

2021-03-08 11:38:37 901

原创 【C++】 面试复习

1. C++2. 计算机网络3. 操作系统4. 数据库5. 数据结构6. 杂项1. 指针容易出现的错误:①内存泄漏,用指针指向堆内存的时候,没有及时free掉。②使用空指针,C++中NULL = 0,C语言中N ULL = (void *)0,是指向0地址的void *指针。③使用了野指针,指针变量在定义时如果未初始化,或者使用free/delete掉的指针2. 静态变量和全局变量的区别BSS段:用来存放程序中未初始化的全局/静态变量的一块内存区域。属于静态内存分配。数据段:用来存放

2021-03-07 20:20:54 606 2

原创 【计算机网络】 IPv6与IPv4的区别 IPv4到IPv6的迁移

IPv4数据报格式IPv6数据报格式IPv6与IPv4的区别无检验和中间结点不再负责分片和重组,由端节点负责首部长度固定,加速中间结点转发速度IPv4到IPv6的迁移设立标志日,统一迁移双栈技术隧道技术...

2021-03-07 11:55:14 146

原创 【计算机网络】 路由表和转发表的区别

路由器的结构路由表和转发表的区别路由器的结构结构可划分为两大部分:路由选择部分和分组转发部分路由选择部分也叫做控制部分,其核心构件是路由选择处理机。路由选择处理机的任务是根据所选定的路由协议构造出路由表,同时经常或定期地和相邻的路由器交换路由信息而不断地更新和维护路由表。分组转发部分由三部分组成:交换结构、输入端口和输出端口。交换结构的作用就是根据转发表(forwarding table)对分组进行处理,将某个输入端口进入的分组从一个合适的输入端口转发出去。...

2021-03-07 11:42:14 6835

原创 【计算机网络】 HTTP和HTTPS介绍及区别

http/httpsHTTPHttp协议运行在TCP之上,明文传输,客户端与服务器端都无法验证对方的身份;HTTP(超文本传输协议)是一个无状态的、应用层的协议,常基于TCP的连接方式,HTTP1.1版本中给出一种持续连接的机制,绝大多数的Web开发,都是构建在HTTP协议之上的Web应用。HTTP常用方法:GET:用于请求访问已经被URI识别的资源,可以通过URL传参给服务器。POST:用于传输信息给服务器,主要功能与GET方法类似,但一般推荐使用POST方式。PUT: 传输文件,报文主体中包

2021-03-05 16:59:35 128

原创 【计算机网络】 三次握手 四次挥手

三次握手和四次挥手(1). 三次握手(我要和你建立链接,你真的要和我建立链接么,我真的要和你建立链接,成功):第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将该数据包发送给Client以确认连接请求,Server进入

2021-03-05 16:53:55 141

原创 【数据结构】 面试复习

1. C++2. 计算机网络3. 操作系统4. 数据库5. 数据结构6. 杂项1. 红黑树与AVL树(能保证在最坏情况下,基本的动态几何操作的时间均为O(lgn))1.节点是红色或黑色。2.根节点是黑色。3.每个叶子节点都是黑色的空节点(NIL节点)。4 每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点)5.从任一节点到其每个叶子的所有简单路径都包含相同数目的黑色节点。5->红黑树从根到叶节点的最长路径都不会超过最短路径的两倍红黑树是牺

2021-03-01 16:37:21 339

原创 【计算机网络】面试复习

计算机网络1. 子网掩码1、一是用于屏蔽IP地址的一部分以区别网络地址和主机号,并说明该IP地址是在局域网上,还是在远程网上。同一局域网的掩码应该一样2、二是用于将一个大的IP网络划分为若干小的子网络。2. ARP(地址解析协议)每个主机上有个IP到MAC地址的映射表,称ARP表,先看表里有没有IP,有直接查出mac地址,写入mac帧,发送到此mac地址。没有,就用广播帧广播arp请求分组。同一个局域网里所有主机都收到,但是只有相应的ip做出相应。不在同一局域网,的到一个路由器的硬件地址,发给路由

2021-03-01 16:32:53 1499

原创 压缩U盘空间 U盘删除卷 提示不支持该请求

使用管理员身份打开cmddiskpartlist disksel disk 1(1是你的U盘编号)clean此时在磁盘管理中就可以轻松压缩删除卷啦

2021-02-07 17:43:54 6257 3

原创 VS2019无法打开源文件

VS2019无法打开“stdio.h”等源文件!重装SDK即可解决该问题!!!工具->获取工具和功能->通用windows平台开发没有SDK的选一个下载,已经有的重选一个下载重启!

2020-12-23 09:38:48 2242

原创 fatal error: apue.h: 没有那个文件或目录 & UNIX环境高级编程学习环境搭建---apue.h

UNIX环境高级编程学习环境搭建—apue.hUnix环境高级编程中,编写muls.c文件之后编译报错: fatal error: apue.h: 没有那个文件或目录原因是apue.h是作者自己封装的头文件,具体信息可以在附录B.1中看到。下面就来看看apue.h具体的搭建过程:1.在网上下载书中源代码,点击打开链接,然后进入下载目录2.解压文件:tar -zxvf *.tar.gz3.cd apue.3e/4.make在这个过程中,你会看到最后由于can,t find -lbsd而不能ma

2020-11-13 11:38:17 854

原创 C++ Primer 智能指针shared_ptr unique_ptr weak_ptr

指针指针是C++11新特性shared_ptr、unique_ptr、 weak_ptr,定义在memory头文件中1. shared_ptr(1. shared_ptr类make_shared函数最安全的使用和分配动态内存的方法#include <memory>shared_ptr<string> p = make_shared<string>();//构建一个空串unique_ptrweak_ptr...

2020-10-26 09:55:41 188

转载 Git的安装与使用教程(详细!)

转自 Git安装与使用教程(超详细) git 提交 全部文件 1、git add . git add xx 命令可以将xx文件添加到暂存区,如果有很多改动可以通过get add -A .来一次添加所有改变的文件。注意 -A 选项后面还有一个句点。git add -A 表示添加所有内容,git add . 表示添加新文件和编辑过的文件不包括删除的文件;git add -u 表示添加编辑或者删除的文件,不包括新添加的文件。 2.、git commit -m “提交注释” 3、git push orig

2020-10-23 15:58:07 615 1

原创 C++ Primer 容器 顺序容器 关联容器

顺序容器总览添加元素访问元素删除元素特殊的forward_list操作改变容器大小关联容器总览

2020-10-22 11:46:25 108

原创 C++ 类内类外调用sort函数时使用第三个参数的区别

sort函数的定义:void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp);前两个参数我们都比较熟悉,一般是迭代器参数分别指向要排序范围的first位置和last位置的下一个位置,第三个参数要求是一个函数指针,通过第三个参数可以让我们自定义排序规则。类外类外第三个参数直接传递函数指针就可以bool com(int a, int b){ return a > b;}int ma

2020-10-22 11:13:04 1730 4

原创 C++ primer 容器适配器

顺序适配器顺序容器有:vector deque list forward_list array string顺序容器适配器有:stack queue priority_queue容器适配器是基于容器而来的一种机制,一个容器适配器接受一种已有的容器类型,使其行为看起来像一种不同的类型。默认情况:stack和queue基于deque实现,priority_queue基于vector实现重载类型在创建一个适配器时将一个命名的顺序容器作为第二个类型参数,来重载默认容器类型// 在vector上实

2020-10-22 10:07:25 95

原创 C++11常用新特性

最近工作中,遇到一些问题,使用C++11实现起来会更加方便,而线上的生产环境还不支持C++11,于是决定新年开工后,在组内把C++11推广开来,整理以下文档,方便自己查阅,也方便同事快速上手。(对于异步编程十分实用的Future/Promise以及智能指针等,将不做整理介绍,组内使用...

2020-10-20 10:51:15 228

CodeSamples.zip

《CUDA C编程权威指南》代码

2021-05-06

空空如也

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

TA关注的人

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