自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 http协议相关

1.HTTP超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。尽管TCP/IP协议是互联网上最流行的应用,HTTP协议中,并没有规定必须使用它或它支持的层。事实上,HTTP可以在任何互联网协议上,或其他网络上实现。HTTP假定其下层协议提供可靠的传输。因此,任何能...

2020-05-06 22:35:31 136

原创 nginx学习

1.nginx是啥Nginx 同 Apache 一样都是一种 Web 服务器。基于 REST 架构风格,以统一资源描述符(Uniform Resources Identifier)URI 或者统一资源定位符(Uniform Resources Locator)URL 作为沟通依据,通过 HTTP 协议提供各种网络服务。产生原因:apache的限制:发展周期长,重量级,不支持高并发;进程和线程切...

2020-05-06 22:09:57 164

原创 《深入理解计算机系统》—优化程序性能

程序一般从三个方面优化性能:①算法和数据结构②使编译器更好地优化③并发消除循环的低效率:(1)可以在循环的时候避免一些重复性的判断(代码移动,将不必要的计算移动到循环外),例如:for(i = 0; i < get_length(vec); ++i){/**/}这个代码的内部每次循环判断都会进行重复计算get_length(vec),下面的优化会提高很多效率:int le

2017-11-23 21:17:01 445

原创 秋招总结

最近,有很多同学问找工作的情况,然后就写一篇博客总结一下自己的一些经验,希望能够帮到学弟学妹们(哈哈,莫名奇妙大了一届)。1.关于实习(可能会有很多实验室不放实习,其实问题不大,可以忽略这一部分。)实习招聘一般是在2月底三月初开始投递,笔试面试一直会持续到5月份。实习的期限一般是毕业前一年暑假的两个月,所以也是一种抉择吧,因为秋招的话是从8月底就要开始投递了,所以如果选择去实习的话难免会影

2017-10-09 15:36:00 661 2

原创 面试复习------------数据库

1

2017-09-06 15:01:39 319

原创 面试复习-------算法与数据结构------算法设计

分治法分治法的基本思想是将一个规模为n的问题分解为k个规模较小的问题,这些子问题互相独立且与原问题相同(所以可以递归)。递归地解这些子问题,然后将各个子问题的解合并得到原问题的解。分治一般有两步:①问题分解,递归求解②子问题解的合并典型例子:归并排序动态规划动态规划也需要将问题进行分解,但与分治法不同的是,适合动态规划法解的题,经分解得到的子问题往往不是相互独立的。若用分治

2017-09-01 21:03:17 293

原创 面试复习-------算法与数据结构------二叉树

创建二叉树(1)二叉树的反序列化给定“6423####51##7##”(先序)这种序列,构造二叉树TreeNode* preOrderToTree(string input,int& index){ if(input.length() == 0)return NULL; if(input.at(index) == '#') { index++;

2017-08-30 20:46:32 341

原创 面试复习-------算法与数据结构------二分搜索

面试中的查找算法有顺序查找、二分查找、哈希表查找以及二叉树查找。哈希表查找通常用在字符串中的字符查找O(1),如:查找字符串中第一个只出现一次的字符。如果说给定的序列是已经排序(或者是已排序的变种),那么大概率要使用二分查找。(1)最左查找:给定一个有序(非降序)数组A,可含有重复元素,求最小的i使得A[i]等于target这个题的直观思路是先找到一个target然后向左遍

2017-08-29 19:20:54 262

原创 面试复习-------算法与数据结构------链表

如果一个操作可能会改变头指针,那么参数应该是ListNode** phead头插法和尾插法是指在建立单链表的时候,时间复杂度都是O(n)将节点添加到一个已存在链表的尾部也是O(n),那么为何尾插法可以O(n)而不是O(n^2),原因是在创建的时候会维护一个链表尾部的指针。所以不用每次都循环寻找链表尾节点。(1)反转链表(剑指offer16)为了防止断链需要设置三个指针分别指

2017-08-24 17:28:02 281

原创 面试复习-------算法与数据结构------栈&队列

STL栈:入栈:s.push(x); 出栈:s.pop()无返回值; 返回栈顶s.top()s.empty(),s.size()....STL队列:入队:q.push(x)放到队列的末端;出队:q.pop() 弹出队首无返回值q.front()返回队首;q.back()返回队尾q.empty(),q.size().....(1)队列 栈两个栈实现一个

2017-08-23 15:05:07 278

原创 面试复习-------算法与数据结构------字符串

(1)数组排成最小的数(剑指offer33/leetcode179)解题思路:关于数字的大数问题最终都要转换成字符串解决。在该题中,将vector 转换成vector,然后调用sort函数,需要定义sort第三个规则如下: static bool cmp(const string str1, const string str2){ string s1 = str1

2017-08-20 20:58:43 277

原创 面试复习-------算法与数据结构------排序

(1)快速排序最坏O(n^2),平均O(n*logn);特点:每趟都选择一个基准数,排完使左边全部比基准小,右边全部比基准大核心的partition函数如下:int Partition(int* arr, int left, int right){ if(left >= right) return left; int tmp = arr[left]

2017-08-18 21:44:20 337

原创 面试复习-------算法与数据结构------实现库函数

库函数的实现(1)字符串拷贝函数strcpy()/***********************************实现strcpy函数输入:char* dest,char* src输出:dest***********************************/char* strcpy(char* dest, char* src){ if(dest == NU

2017-08-18 19:44:15 241

原创 面试复习----多线程编程

C++11 新标准中引入了四个头文件来支持多线程编程,他们分别是  ,,,和。:提供原子操作功能,该头文主要声明了两个类, std::atomic 和 std::atomic_flag,另外还声明了一套 C 风格的原子类型和与 C 兼容的原子操作的函数。:线程模型封装,该头文件主要声明了 std::thread 类,另外 std::this_thread 命名空间也在该

2017-08-16 21:41:35 355

原创 面试复习—网络知识点-----UDP

一个UDP程序实例与tcp程序不同的是,此处无连接,所以也不需要listen创建监听套接字,直接recvfrom接收数据,sendto发送数据这两个函数原型:ssize_t recvfrom(int sockfd, void* buff, size_t nbytes, int flags, struct sockaddr* from, len_t* len);s

2017-08-15 11:08:17 262

原创 面试复习—网络知识点-----tcp

(6)一个TCP程序实例客户端:①sockfd = socket(AF_INET, SOCK_STREAM, 0);创建套接字AF_INET表示网际,SOCK_STREAM表示字节流,这两个加在一起就表示TCP套接字②struct sockaddr_in servaddr;//声明一个网际套接字地址结构 servaddr.sin_family = AF_INET;

2017-08-15 11:06:23 248

原创 一些比较好的博客资料链接

C++开发者都应该使用的10个C++11特性主要用到的一些:1.auto的自动类型推断2.nullptr可以用来代替NULL(0)3.foeach的for循环

2017-08-02 17:27:12 257

原创 java面试资料—多线程

(1)关于java线程池预先启动一些线程,线程无限循环从任务队列中获取一个任务进行执行,直到线程池被关闭。如果某个线程因为执行某个任务发生异常而终止,那么重新创建一个新的线程而已。如此反复。流程:a.一个任务提交,如果线程池大小没达到corePoolSize(最小线程数量),则每次都启动一个worker也就是一个线程来立即执行b.如果来不及执行,则把多余的线程放到wor

2017-07-31 16:18:37 238

原创 java面试资料—JVM相关

(1)类的实例化过程①首先会执行类中static代码块(不管代码块是否在类的开头还是末尾处),如果这个类有父类,同样会优先查找父类中的static代码块,然后是当前类的static。②然后会从父类的第一行开始执行,直至代码末尾处,中间不管是有赋值还是method调用,都会按顺序一一执行(method),普通代码块{ }...③代码执行完了(包括变量的声明)才开始构造,首先是父类的构造函

2017-07-31 16:18:24 269

原创 java面试资料-基础知识

(1)String类为什么是final?主要是为了“效率” 和 “安全性” 的缘故。若 String允许被继承, 由于它的高度被使用率, 可能会降低程序的性能,所以String被定义成final。为了程序的安全性,因为String类共享,所以要控制不能被修改。(2)关于HashMapJDK1.8中,HashMap采用位桶+链表+红黑树实现,当链表长度超过阈值(8)时,将链表

2017-07-26 21:56:01 501

原创 常用的几种设计模式

1.单例设计模式singleton——只能产生一个实例化对象的设计模式(为什么不用静态变量代替呢?因为静态变量在程序一开始就创建了对象,可能会比较消耗资源)public class Singleton { private static Singleton uniqueInstance; private Singleton(){} public static Singl

2017-07-26 10:35:28 364

转载 常见的排序算法

排序算法经过了很长时间的演变,产生了很多种不同的方法。对于初学者来说,对它们进行整理便于理解记忆显得很重要。每种算法都有它特定的使用场合,很难通用。因此,我们很有必要对所有常见的排序算法进行归纳。     我不喜欢死记硬背,我更偏向于弄清来龙去脉,理解性地记忆。比如下面这张图,我们将围绕这张图来思考几个问题。     上面的这张图来自一个PPT。它概括了数据结构中的所有常见

2017-07-05 16:22:24 324

原创 腾讯后台开发实习生1面+2面

本来以为一面就挂了,然后懒得写面经了;后来收到了二面通知,虽然也挂了,但是还是总结一波吧!!#######笔试笔试的题目由选择题+2道问答题+2道编程题组成;选择题主要还是围绕后台开发的一些知识点展开的,考察的知识点不是很难;简答题考了一个B+树,和一个算法题;编程题一个是围绕输出格式展开的(什么空格输出,换行字符与数字之间的转换等等。。。)第二个是寻找一个满二叉排序树两个

2017-04-15 19:10:02 885 1

原创 华为1面+综合面

相比较前面的面试,华为的面试就要简单很多,可能是因为兄弟院校的缘故吧,哈哈哈。。。面试是在华为武汉研究所进行的,在郊区。一面:首先是简单介绍自己,然后介绍一下自己的项目;面试官会针对项目问几个不痛不痒比较笼统的问题,比方说性能怎么样啊?可移植性怎么样啊?。。。然后就是对照着简历上面问(虽然让准备华为官方简历,但是我还是多打印了几份自己的简历一起给他了,面试官针对我自己的简历问的

2017-04-12 15:10:17 17400

原创 面试复习—Linux知识点

(1)gdb调试

2017-04-05 11:31:38 529

原创 面试复习—网络知识点

(1)OSI,TCP/IP,五层协议的体系结构OSI分层(7层):物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。TCP/IP分层(4层):网络接口层、网际层、运输层、应用层。五层协议(5层):物理层、数据链路层、网络层、运输层、应用层。每一层的作用如下:物理层:激活、维持、关闭通信端点之间的机械特性、电气特性、功能特性以及过程特性。该层为上

2017-04-05 11:30:57 402

原创 面试复习—操作系统知识点

(1)

2017-04-05 11:29:37 4449 1

原创 CVTE 1面+2面

一面:面试是在一个酒店进行,下午,扫码排队;一面的面试官应该是个技术人员。第一个问题:请先自我介绍     然后就自己的几个项目作介绍介绍完毕之后,面试官对项目不感兴趣,然后就按照简历的顺序开始提问;首先了解现在正在干什么,学习了什么知识;然后问了一些关于C++的基础:内存分配,问了好久。堆和栈分配内存是从两块相邻内存两边往中间进行分配的,这样设计的目的是什么?ve

2017-03-28 19:12:25 784

原创 华为IT应用开发工程师(C++应用软件)实习生笔试+360企业安全服务端开发工程师实习生笔试

华为笔试:三道编程题(120分钟,每道题200分)第一道:输入两个数,将他们反转求和,比方(输入123,456,输出975)只需要注意输入输出格式的问题,算法本身不难,两个辗转取余解决第二道:筛子有六个面:左右前后上下,定义6种操作:左翻、右翻、前翻、后翻、顺时针旋转、逆时针旋转,对这六种操作进行符号化定义L,R,F,G,A,B,要求针对序列{1,2,3,4,5,6}(6个面的值)

2017-03-25 21:44:11 3038

转载 通配符和正则表达式

在看鸟哥的Linux私房菜的时候看到十二章一直强调通配符和正则表达式的区别,在我的理解中,两者貌似是一样的都是用来匹配的。Google之网上给出的答案是:在文本过滤工具里,都是用正则表达式,比如像awk,sed,等,是针对文件的内容的而通配符多用在文件名上,比如查找find,ls,cp,等等 下表是鸟哥给的Linux下的通配符 符號內容*

2017-03-24 10:40:04 287

原创 Linux常用命令

常用:ls-l :列出长数据串,包含文件的属性与权限数据等  -a :列出全部的文件,连同隐藏文件(开头为.的文件)一起列出来(常用)  -d :仅列出目录本身,而不是列出目录的文件数据  -h :将文件容量以较易读的方式(GB,kB等)列出来  -R :连同子目录的内容一起列出(递归列出),等于该目录下的所有文件都会显示出来 mkdir创建目录(必须有相应路径的访

2017-03-23 17:00:52 211

原创 美团(后台开发工程师实习生)笔试+cvte(C/C++软件开发工程师实习生)笔试

美团笔试:15道单选+5道多选+1道简答+1道编程(1个小时)记得的几个考点:1.接口方法的形式,注意的是public并且不要参数2.三层循环时间复杂度3.chmod命令的实用,包括数字形式和.+.的形式4.给一个先序序列,求不同二叉树个数5.TCP协议以及网络层其他的一些协议6.java异常类7.类的赋值形式8.一个条件概率的计算题9.给栈长度和入栈序

2017-03-22 21:29:16 1706 1

原创 C++标准库—STL算法

STL算法库:#includelambda表达式:使用内嵌匿名函数,不必编写独立函数[捕捉块] (参数) (可选mutable等) ->return_type{body}mutable将调用标记为非const,如果不加,则不能修改捕捉的参数值;return_type指定返回值的类型,如果忽略,编译器会进行推断;[]开始,可以接受参数,可以返回值;auto return=[](i

2017-03-21 16:20:07 513

原创 C++标准库—容器

STL缺点:不能保证线程安全;没有树结构或是图结构;STL的顺序容器:1.vector 动态数组(任意时间的快速访问)#includevector的创建: vector intVector1;//创建0个元素的vector vector intVector2(10,100);//创建10个元素的vector,每个元素值为100 vector intVe

2017-03-21 12:41:41 497

原创 模板以及泛型编程

(1)

2017-03-20 17:06:14 208

原创 继承

继承实例如下:class Super{public: Super(); void someMethod();protected: int mProtectedInt;private: int mPrivateInt; };class sub:public Super{public: Sub(); void someOthe

2017-03-17 10:48:51 343

原创 类&对象(二)

test

2017-03-16 13:08:20 256

原创 字符串

C风格:使用字符数组,末尾加'\0';C++使用std::string,但也兼容C版本字符串中有c字符串操作,如:strcpy()(函数危险,并不考虑能否装下);strlen(返回字符个数,不考虑末尾的'\0'),故而如果使用的话,分配内存要+1(sizeof会考虑末尾的'\0');重载了+,+=,==,!=,自动处理内存需求,string类会在离开作用域的时候调用析构

2017-03-15 20:14:52 258

原创 关于内存管理

(1)C++中的内存分配如下图:栈用于函数参数以及局部变量值,编译器分配,每个函数有自己的一个堆栈帧,提供独立的内存空间;堆中放置的是自己申请的内存,如malloc和new申请的;全局静态区分配的内存分为两部分,初始化以及未初始化的,分开存放;(2)指针也是堆区,记得初始化,未初始化的指针会指向内存中的随意位置(很危险),如果不想初始化,可以令其为空指针nullptr;使用

2017-03-15 15:48:15 340

原创 杂货

(1)名称空间定义自己的名称空间函数:namespace mycode{ void foo() { cout<<1<<endl; }}int main(){ mycode::foo(); return 0;}还可以直接using mycode::foo;进行声明之后直接使用。(2)std::array是c++的大小固定的

2017-03-15 15:20:48 323

空空如也

空空如也

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

TA关注的人

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