自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 IDEA相对路径

System.getProperty("user.dir")可以返回当前工程根目录的绝对路径user.home:用户的主目录https://blog.csdn.net/qq_35873847/article/details/77966921 public static String getProperty(String key) { checkKey(key); SecurityManager sm = getSecurityManager();

2021-05-20 11:47:50 1701

原创 2021-05-18

catch catch(Exception e){ e.printStackTrace() ; } 当try语句中出现异常是时,会执行catch中的语句,java运行时系统会自动将catch括号中的Exception e 初始化,也就是实例化Exception类型的对象。e是此对象引用名称。然后e(引用)会自动调用Exception类中指定的方法,也就出现了e.printStackTrace() ;。 printStackTrace()方法的意思是:在命令行打印异常信息在程序中出错的位置及原因。.

2021-05-18 10:09:34 138

原创 华为机试1

写出一个程序,接受一个由字母和数字组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写。第一行输入一个有字母和数字以及空格组成的字符串,第二行输入一个字符。输出输入字符串中含有该字符的个数。诀窍:使用count函数,#include<algorithm>, count (InputIterator first, InputIterator...

2020-03-11 15:56:30 282

原创 华为机试

写出一个程序,接受一个十六进制的字符串,输出该数值的十进制字符串表示。(多组同时输入 )代码如下。注意printf的头文件是#include "stdio.h",printf("%s\n",buf);可以直接输出字符数组; 什么时候输入结束,使用while(cin>>str)判断; map的使用,使用map构造一个字典; 空字符数组的初始化方式,char buf[]={}...

2020-03-10 14:54:05 241

原创 对于TKeed的一些思考

首先介绍一下线程数目应该创建多少个 应用程序最小线程数应该等于可用处理器核数。 如果所有任务都是计算密集型的,则创建处理器核心数那么多个线程就可以了,在这种情况下,创建更多的线程对程序性能而言反而是不利的,因为当多个任务处于就绪状态时,处理器核心需要在线程间频繁进行上下文切换,而这种切换对程序性能损耗很大;而且线程的创建是需要消耗内存资源的。 如果任务都是IO密集型的,那么我们就需要开更多的...

2019-09-20 11:11:02 322

原创 百度面试准备

如何设计操作系统内核 进程管理、处理机调度、存储器管理、设备管理、文件管理。 对于程序员,操作系统需要提供很多系统调用函数接口,来对内核进行处理,所以内核应该包含很多内核程序,它们是操作系统最常用的基本模块,直接与硬件打交道。内核程序占据内存一部分内存。应该有一些程序比如SHELL,编辑器,编译器来与用户进行交互。 对于显卡的驱动,因为要在PC上显示文字,需要显示器和显卡两个设备,显示器负责...

2019-09-18 22:08:57 226

原创 美团面试准备之数据库

美团重点就是数据库、linux、java上,感觉只要你的java和数据库好就能进,恰巧,我是搞C++的,数据库不咋熟悉。 数据库的事务,具体在代码里怎么实现事务。比如:我往一个表里插入一个a再插入一个b再插入一个 redis数据库跟本地数据库有什么区别吗 redis实际工作中有用到过吗? 数据清洗是怎么清洗的 什么情境下会用到redis? 数据库熟悉吗?(不熟悉啊,没关系,我问几个问题...

2019-09-17 15:22:04 1005

原创 美团面试准备之操作系统

互斥锁和排他锁❌ 多线程编程有了解吗? Linux命令(问了接近10个小问题吧):怎么修改一个文件的权限、怎么查询一个文件的最后10行(tail),那怎么找出含有关键字的行的前后4行(不会了),怎么查询一个网络情况 暂停一个正在运行的程序,将其放到后台 ctrl+Z//暂停任务bg//放到后台fg//拉到前台 文件和目录授权管理 chmod用于改变文件...

2019-09-16 19:45:20 287

原创 bigo面试准备一

多继承 一个类继承了多个类。 多继承下的构造函数 先调用基类的构造函数,再调用子类构造函数,基类构造函数调用顺序与声明派生类时继承基类的顺序一致。在子类声明构造函数时,可以在初始化列表显示构造,也可以不写,隐式调用基类的构造函数。 多继承下的析构函数 析构先析构子类,再按照与声明子类时继承基类顺序的相反顺序来析构。析构顺序与构造顺序相反。 菱形问题 当多继承的父类拥有更高的...

2019-09-16 13:20:34 801

原创 TKeed之webench之压测

前面介绍了resquest结构体的构建,现在来介绍压测函数的编写。首先介绍webbench的原理,它主要通过fork()函数产生很多子进程,模拟多个客户端, bench(), static int bench(void) static int bench(void){ int i,j,k; pid_t pid=0; FILE *f; /* check...

2019-09-15 19:37:16 207

原创 TKeed之webbench测压之request报文的构建

构造request请求行 请求行的请求方法:GET,HEAD,OPTIONS,TRACE 请求行的URL:http://127.0.0.1:3000/index.html 请求行协议版本号:HTTP/0.9、HTTP/1.0、HTTP/1.1 构造request请求头 第一个头部关键字:值 User-Agent: WebBenchUser Agent中文名为用户代理,简称...

2019-09-15 16:53:24 347

原创 线程创建方式

什么是线程? 进程是运行中的程序,多个进程实现了操作系统的并发;多个线程实现了进程的并发,是操作系统进行计算和调度的基本单位,进程有多个线程以完成不同的任务。同一进程下的多个线程共享内存空间和文件描述符等,所以线程之间通信要比进程通信方便的多,但是线程也有自己的独立空间,比如线程栈,它是其他线程不能访问的,线程栈从进程堆上分配内存,通过 ulimit -a可以查看线程栈大小为8M,为了防止其他线...

2019-09-15 12:11:30 94

原创 TKeed源码解析之静态文件请求处理

前面做了这几件事:解析请求行 解析请求头 解析URI 对错误情况(404,403)进行处理,并读取了文件的inode信息,存储在结构体里面 处理请求头几种情况,并将请求头的处理结果存在out中 现在来处理静态文件请求先来看下HTTP的响应报文格式。基本由三部分组成:状态行响应头部响应正文协议版本空格状态码空格状态码描述符回车符换行符头部字段名:值回车符换行...

2019-09-14 09:17:36 304

原创 TKeed源码解析之几种头部字段的处理

前面已经对请求行和请求头进行了处理,还有对URI也进行了处理,也处理了资源找不到和资源不允许访问的情况。下面讲一下,对于请求头几种头部字段的处理,头部字段名有这几个类型:Host,Connection,If-Modified-Since和什么都没有;它们都有各自的处理函数。Host:初始URL中的主机和端口。Connection:表示是否需要持久连接。如果Servlet看到这里的值为“Kee...

2019-09-13 21:05:32 229

原创 TKeed源码解析之URI解析

前面对request报文请求行和请求头进行了解析,现在来对uri进行解析。uri存在于请求行中,Uniform Resource Identifiers统一资源标识符,用于在互联网上标志一个资源,完整的URI主要由以下三种形式:<scheme>:scehme-specific-part#<fragment><scheme>://<authori...

2019-09-13 19:47:00 261

原创 TKeed源码之解析request请求头

前面解析了request请求报文的行。现在介绍对请求头的解析,解析就是将头部字段名和对应的值存储起来,存在下面的结构体里面,再把结构体放到链表里。typedef struct tk_http_header{ void* key_start; void* key_end; void* value_start; void* value_end; str...

2019-09-13 15:44:10 269

原创 TKeed源码解析之request结构体解析

首先看下HTTP请求报文结构method空格URL空格version回车换行符头部字段名:值回车换行符...头部字段名:值回车换行符回车换行符请求数据其中回车是'\r',换行符是'\n'。具体地可以看一个例子。GET /search?hl=zh-CN&source=hp&q=domety&aq=f&oq= HTTP/1.1 Ac...

2019-09-13 15:24:05 412

原创 TKeed之处理超时请求

前面使用epoll_wait将就绪事件从内核读取到用户数组里之后,需要处理事件。其中包括对超时事件的处理。tk_handle_expire_timers();tk_pq_t tk_timer;//优先队列是全局变量void tk_handle_expire_timers(){ while(!tk_pq_is_empty(&tk_timer)){ // 更...

2019-09-12 16:24:25 387

原创 数据库查询优化的方法

使用索引 尽量避免全局搜索,为经常被where,order by,group by访问的字段建立索引。 优化sql语句 使用exlpain查看select查询过程,可以帮助更好地选择索引和优化查询 不要返回不使用的列; 不对索引使用运算符和函数; 使用limit减少返回行数。 优化sql语句 优化数据库 对表进行拆分,有垂直拆分和水平拆分,垂直拆分将一个表分成多个表,把主...

2019-09-12 13:25:19 463

原创 招商银行面试准备

项目相关,并发多少,有没有压测 mysql事务ACID A是指原子性,一件事务要么全部完成,要么全部不完成; C是指一致性,执行事务前后,数据保持一致,多个事务对同一数据的读取结果是相同的; I是指隔离性,并发访问数据时,各个事务之间是相互独立的; D是持久性,是指一件事务完成之后,对数据库的操作是永久性的。 并发事务带来的问题 脏读 读取了脏数据,脏数据是...

2019-09-12 12:33:59 492

原创 死锁

软、硬件资源的抢占都会导致死锁的产生。资源分为可抢占资源和不可抢占资源。可抢占资源是它可以被其他进程抢占而不产生副作用。不可抢占资源是资源被一个进程占有期间,不可以被剥夺占有权,例如CD刻录机,它的抢占会导致刻录机划坏。死锁与不可抢占资源有关。死锁的规范定义如下:如果一个进程集合中的每一个进程都在等待只能由本进程集合其他进程才能引发的事件,那么该组进程是死锁的。死锁发生的四个必要条...

2019-09-07 20:52:00 110

原创 内核态和用户态

Linux体系架构分为用户态和内核态,内核本质上是一种软件,为上层应用程序提供访问接口,就是系统调用,系统调用本质也是一种中断,它是一种软中断。 系统调用是操作系统最小的功能单位,LINUX提供大致260个系统调用函数。 库函数实现了对系统调用的封装,为用户提供简单的业务逻辑接口。 shell是一种特殊的应用程序,下通系统调用,上通各种应用。 总的来说,用户态的应用程序可以通过三种方式操作...

2019-09-07 11:02:09 122

原创 引用与指针

引用 引用就是对象的别名,一切对引用的操作,就是对原对象的操作。 引用经常存在于函数的参数和返回值当中。 在重载某些操作符时,我们需要引用,例如重载下标操作符[]. vector<int> vec{1,2,3,4,5};vec[2]=10;//这就是对[]进行重载之后,可以对vec的下标为2的变量进行赋值操作 参数传递准则 如果我们想要提高效率,且不改变传...

2019-09-06 19:56:57 88

原创 应用层常见协议

DNS DNS全称是域名系统,整个网络架构是采用分布式的域名系统。 主要是用作将域名转换成IP地址,www.baidu.com,获取服务器IP地址。 解析过程如下: 1.UDP承载DNS解析报文,在本地域名服务器上查找相应的ip地址,找到了就返回报文,进程获得目的主机的ip地址之后进行通信,若本地域名服务器中找不到相应的IP地址,则将本地域名服务器作为DNS客户端,向其他服务器发出解析请求...

2019-09-06 18:26:41 369

原创 猿辅导面试之手撕代码

leetcode73题 两数相加(猿辅导面试题,我的两个同学都遇到了这个题)leetcode2 思路:唯一需要考虑的是进位问题,还有长链表多余的部分 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(...

2019-09-06 15:18:16 686

原创 虚函数实现多态

基类指针可以指向子类对象,假设基类中的函数并没有定义成虚函数,那么这个指针就无法调用子类的函数,思维习惯上,如果指针指向了子类对象就应该调用子类的成员函数,但是如果不声明该函数为虚函数,就无法访问子类的成员函数。此外想说一下,基类指针,指向派生类对象,也就只能访问虚函数对应的函数,其他成员函数也不能访问,派生类新定义的成员变量不可以访问,派生类从基类继承的成员变量可以访问。C++中虚函数的唯一...

2019-09-05 20:50:52 1208

原创 类模板

模板是泛型编程的基础。一个类或一个函数可以用来操纵多种类型的对象。标准库中的容器、迭代器和算法是很好的泛型编程的例子。标准库用独立于类型的方式定义每个容器、迭代器和算法,因此几乎可以在任意类型上使用标准库的类和函数。可以不用为每个类型定义一个新函数,而是只定义一个函数模板(function template)。函数模板是一个独立于类型的函数,可作为一种方式,产生函数的特定类型版本。...

2019-09-05 15:33:13 94

原创 瓜子二手车面试准备(leetcode,剑指offer)

实现一个函数,能够计算整型十进制对应的二进制里的1的数目leetcode191 思路:主要是利用位运算,整型数据与1相与,对应二进制末尾为0,则结果为0,末尾为1,则结果为1;无符号整型,>>运算符高位用0填充。 int hammingWeight(uint32_t n) {//typedef unsigned long uint32_t; int cou...

2019-09-04 14:06:48 515

原创 TKeed源码分析之循环等待事件发生

采用的系统调用函数是epoll_wait()。 while(1){ // 得到最近且未删除时间和当前时间差值(等待时间) int time = tk_find_timer(); // 调用epoll_wait函数,返回接收到事件的数量 int events_num = tk_epoll_wait(epoll_fd, ev...

2019-09-04 11:20:01 260

原创 TKeed源码分析之添加listen监听事件

前面初始化监听套接字listen_fd后,现在把它加入到epoll内核事件表当中。// 初始化套接字开始监听 int listen_fd = socket_bind_listen(conf.port); // 设置为socket非阻塞 int rc = make_socket_non_blocking(listen_fd); // 创建epoll并注册监听...

2019-09-04 10:11:26 295

原创 TKeed源码分析之EPOLL边缘触发模式监听事件

EPOLL边缘触发模式监听事件,EPOLL是LINUX特有。众所周知,epoll维护了一个红黑树,来快速查找到有数据到来的fd对应的epoll_event结构体,从而copy给用户态,供用户详细地处理。epoll是linux系统特有的I/O复用函数,epoll使用一组函数来完成任务,而不是单个函数,epoll把用户关心文件描述符放在内核的一个事件表当中,epoll需要使用一个额外的文件描述符来唯...

2019-09-03 17:09:53 210

原创 TKeed之监听模式设置为非阻塞

设置socket套接字为非阻塞int make_socket_non_blocking(int fd){//设置套接字为非阻塞模式 int flag = fcntl(fd, F_GETFL, 0);//获得文件状态标记 if(flag == -1) return -1; flag |= O_NONBLOCK; if(fcntl(fd, F_S...

2019-09-02 19:09:54 254

原创 TKeed源码分析之读写数据

socket通信的读写ssize_t Read(int fd, void *buf, size_t count){ ssize_t rc; if ((rc = read(fd, buf, count)) < 0) unix_error("Read error"); return rc;}ssize_t Write(int fd, const v...

2019-09-02 17:57:33 142

原创 TKeed源码分析之监听之后数据的接收与连接的关闭

遍历events数组,根据监听种类及描述符类型分发操作tk_handle_events(epoll_fd, listen_fd, events, events_num, conf.root, tp);// 分发处理函数void tk_handle_events(int epoll_fd, int listen_fd, struct epoll_event* events, i...

2019-09-02 15:56:21 333

原创 TKeed源码分析之初始化套接字并监听

初始化套接字并监听socket_bind_listen()函数端口port不能是知名端口,也不能大于65535int listen_fd=0;listen_fd=socket(AF_INET,SOCK_STREAM,0);//AF_INET表示使用ipv4协议,SOCK_STREAM表示流式套接字,是基于TCP协议,还有一种是SOCK_DGRAM表示基于数据包的套接字,到达的顺...

2019-09-02 14:47:14 223

原创 当你回答进程时你应该回答什么?

什么是进程? 它是运行中的程序,一个程序可以有多个进程,进程包含程序计数器(用来存放下一条指令存放的地址)、寄存器(用来存储指令,数据和地址)、变量当前的值。 进程如何创建? 可以通过系统调用来创建子进程,fork(). pid_t pd;pd=fork(); 该系统调用创建了一个子进程,该子进程拥有与父进程一样的初始状态,PCB相同,用户态代码也相同,数据也相同。此时刚调用完fo...

2019-08-30 16:06:37 91

原创 Mysql——undo log

逻辑日志 undo用于将数据库物理地恢复到执行语句或事务之前样子—但事实并非如此。数据库只是逻辑地恢复到原来的样子,所有修改都被逻辑地取消,但是数据结构本身在回滚之后可能大不相同,因为在多用户并发系统中,可能会有数十、数百甚至数千个并发事务。数据库的主要任务就是协调对于数据记录的并发访问。如一个事务在修改当前一个页中某几条记录,但同时还有别的事务在对同一个页中另几条记录进行修改。因此,不能将一个...

2019-08-29 16:12:05 88

原创 二叉树题目

https://juejin.im/post/5b8d64346fb9a01a1d4f99fa翻转二叉树leetcode226执行用时 :4 ms, 在所有C++提交中击败了82.02%的用户 内存消耗 :9.1 MB, 在所有C++提交中击败了54.58%的用户 思路:先画图自己反转一颗二叉树,看下反转规律,前序遍历树中结点,对对于每个结点做如下操作:结点有孩子,左右互换;结...

2019-08-28 14:22:43 96

原创 http

http全称 超文本传输协议,用于浏览器和websever之间通信的协议。 http是无状态的,所谓无状态是指,服务器对事务是没有记忆的,当连接断开后,再次向服务器发送报文又是一次全新的连接,服务器并不知道对方是谁。 http是无状态的,面向连接的,通过tcp承载,永远是客户端向服务器端发送请求,使用80端口,https是443端口。 http的版本有: http 0.9/1.0 是非...

2019-08-28 09:27:44 93

原创 tcp网络拥塞控制算法

https://wetest.qq.com/lab/view/246.htmlhttps://www.jianshu.com/p/7d59f9292b03

2019-08-27 18:35:54 183

空空如也

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

TA关注的人

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