自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Steve_Abelieve

Don't worry too much about the ambiguous future, just make effort for explicit being present.

  • 博客(17)
  • 资源 (3)
  • 收藏
  • 关注

原创 模拟实现atoi和itoa以及100G 的IP地址求出现次数最多的前K个IP

1.模拟实现C库的atoi和itoa。 2.给一个超过100G的log file, log中存着IP地址, 设计算法找到出现次数最多的100个IP地址?1.题考察面试者的思维方式:完整性和鲁棒性 先想好测试用例,沟通好错误处理,才能满意的做完。错误需要考虑的情况有: 1.当字符串为空时返回0,0字符串返回值也是0,但是两者的含义不同,我们应该做到区分,怎么区分? 定义全局变量,设

2017-08-09 19:28:59 973

原创 实现memcpy和memmove以及大数据url交集。

1.模拟实现C库的memcpy和memmove。void* myMemcpy(void* dst,const void* src,size_t size){ assert(src); assert(dst); char* _dst = (char*)dst; char* _src = (char*)src; while (size--) {

2017-08-09 08:20:55 572

原创 Shell实现斐波那契数列、希尔排序

1.shell实现斐波那契数列##实现一arr[0]=1arr[1]=1i=0read maxwhile [ $i -le $max ]do let arr[$i+2]=arr[$i+1]+arr[$i] let i++doneecho ${arr[$max]}#实现二function fib(){ temp=$1 if [ $temp -lt 2

2017-08-07 20:25:31 1989

原创 Shell语法训练

1. 计算出1+2+3+..+100的结果。可以使⽤用多种⽅方法解答。str=""sum=0for i in {1..100}do if [ "X$str" = "X" ]; then str=$i else str=$str"+"$i fi#let sum+=$i((sum+=i))donestr=$str"="${sum}ec

2017-08-07 00:15:39 461

原创 简单布隆过滤器实现、布隆过滤器扩展

1.【基础题】–实现一个简单的布隆过滤器。 如果想要判断一个元素是不是在一个集合里,一般想到的是将所有元素保存起来,然后通过比较确定。链表,树等等数据结构都是这种思路. 但是随着集合中元素的增加,我们需要的存储空间越来越大,检索速度也越来越慢(O(n),O(logn))。不过世界上还有一种叫作散列表(又叫哈希表,Hash table)的数据结构。它可以通过一个Hash函数将一个元素映

2017-08-06 22:09:13 887

转载 TCP的粘包问题

本文转载自:http://www.cnblogs.com/qiaoconglovelife/p/5733247.html1 什么是粘包现象  TCP粘包是指发送方发送的若干包数据到接收方接收时粘成一包,从接收缓冲区看,后一包数据的头紧接着前一包数据的尾。2 为什么出现粘包现象  (1)发送方原因  我们知道,TCP默认会使用Nagle算法。而Nagle算法主要做两件事:1)只有上一个分组得到确认,才

2017-08-06 12:52:54 317

原创 Shell中字符串的切割、拼接、比较、替换

【截取】一、Linux shell 截取字符变量的前8位,有方法如下:1.expr substr “$a” 1 82.echo $a|awk ‘{print substr(,1,8)}’3.echo $a|cut -c1-84.echo $5.expr $a : ‘(.\).*’6.echo $a|dd bs=1 count=8 2>/dev/null 补充: expr(选项)(参数

2017-08-06 11:34:53 68482 3

转载 Shell的两种命令替换与eval 命令

转载自:http://blog.csdn.net/lf_2016/article/details/654474571.shell中有两种命令替换:他们之间的区别在于 在多层次的复合替换命令中,倒引号需要加”\”转义,$()则不需要。举例: 2.eval 命令1)用于重新运算求出参数的内容。 语法:eval cmdline功能:eval会对后面的cmdline扫描两遍,第一遍扫描之后如果cmdl

2017-08-06 09:57:41 1414

原创 线程池模拟实现

线程池的应用场景1)需要大量的线程来完成任务,且完成任务的时间比较短。 比如WEB服务器完成网页请求这样的任务,使用线程池技术是非常合适的。因为单个任务小,而任务数量巨大。但对于长时间的任务,比如一个Telnet连接请求,线程池的优点就不明显了。因为Telnet会话时间比线程的创建时间大多了。2)对性能要求苛刻的应用,比如要求服务器迅速响应客户请求。3)接受突发性的大量请求,但不至于使服务器因此产生

2017-08-06 08:09:47 538

原创 实现一个位图、100亿个整数找出只出现一次的整数、找出现次数不超多2次的数

1.–实现一个位图。 位图特点: 节省空间 适合数据比较密集的情况 适合判断事件 是否 这样的问题 相关位运操作: & | ~ 代码实现:#include<iostream>#include<vector>using namespace std;////1.【基础题】--实现一个位图。//位图特点: 节省空间,适合数据密集的情况class BitSet{

2017-08-05 23:41:54 3662

原创 字符串右旋 、 字符串去重

1.–将N个字符的数组,循环右移K位。时间复杂度O(N)。实现思路: 两种实现思路:1.借助辅助空间,按照后面的顺序进行拷贝,最后拷贝回字符串 2.三次反转法就可实现#include<algorithm>void RotateKth(char str[],int size,int k){ //三步翻转法 k %= size; /*Reverse(&str[0], k)

2017-08-04 23:43:48 598

原创 多进程多线程服务器编写

多线程int main(int argc,char* argv[]){ if(argc!=3) { printf("Usage:%s [service ip][service port]\n",argv[0]); return 1; } int sock=socket(AF_INET,SOCK_STREAM,0); //create

2017-08-04 22:20:07 334

原创 套接字编程

UDP 编写server.c#include<stdio.h>#include<string.h>#include<sys/socket.h>#include<sys/types.h>#include<arpa/inet.h>#include<netinet/in.h>void Usage(char* prc){ printf("Usage: %s [local ip][loc

2017-08-04 22:07:50 287

原创 select服务器编写

select与多进程/多线程服务器进行对比 优点1)不需要建立多个线程、进程就可以实现一对多的通信。 2)可以同时等待多个文件描述符,效率比起多进程多线程来说要高很多。 3)select()的可移植性更好,在某些Unix系统上不支持poll() 4)select() 对于超时值提供了更好的精度:微秒,而poll是毫秒缺点1)每次调用select,都需要把fd集合从用户态拷贝到内核态,这个开销在

2017-08-04 21:36:56 341

转载 三种I/O复用的比较

相同点:1.select、poll、epoll这三组I/O复用系统调用都能同时监听多个文件描述符, 2。他们都通过timeout参数指定要等待的时间。直到事件就绪时返回 3.返回值就是就绪的文件描述符的数量。不同点:epoll高效的原因:1>、底层采用回调机制激活某个节点,将已经就绪的文件描述符添加到就绪队列中去;2>、当有新的事件发生的时候,该结点会被插入到epoll模型中的红黑树中去,红黑树

2017-08-04 21:08:15 385

转载 内存池、线程池、进程池

池的概念由于服务器的硬件资源“充裕”,那么提高服务器性能的一个很直接的方法就是以空间换时间,即“浪费”服务器的硬件资源,以换取其运行效率。这就是池的概念。池是一组资源的集合,这组资源在服务器启动之初就完全被创建并初始化,这称为静态资源分配。当服务器进入正式运行阶段,即开始处理客户请求的时候,如果它需要相关的资源,就可以直接从池中获取,无需动态分配。很显然,直接从池中取得所需资源比动态分配资源的速度要

2017-08-04 18:37:54 260

原创 求一个无序数组的中位数

求一个无序数组的中位数。如:{2,5,4,9,3,6,8,7,1}的中位数为5,{2,5,4,9,3,6,8,7,1,0}的中位数为4和5。 要求:不能使用排序,时间复杂度尽可低。实现思路:解法一:快排思想【背景知识】 1.快速排序可以实现将数据划分为 三部分 : 左边小于基准值 基准值 右边大于基准值位置2.每次划分都可以将基准值的最终确定, 那这样的话,我们找中位数就很方便了。

2017-08-04 16:42:52 2905 1

C++知识点总结

C++核心知识点总结,涉及C++常考面试题,以及常用知识点梳理,最短的时间的得到质的突破,祝您成功!

2018-12-08

C语言核心知识点总结

包含了C语言核心知识点,以及常见面试题考法和总结

2017-02-22

比特科技与坚持信念者同行

比特科技,与坚持信念者同行!

2016-10-15

空空如也

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

TA关注的人

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