- 博客(22)
- 收藏
- 关注
原创 [TCP/IP网络编程]实现一个简单的http服务器(普通模型+epoll模型)和测压
知识背景:1、对HTTP报文段有所认识。2、掌握基础的epoll模式网络编程。3、基础的HTML知识。第一部分:实现简单的http服务器实现的内容:我们能通过 http://127.0.0.1 访问服务器,如果需要找到服务器对应的文件,则在网址后面加上“/想要的内容”。例如我想要浏览服务器上的一张图片,如下是演示的效果网站对后的 “/index.html” 就是我想要获取的内容...
2018-12-16 01:11:03 1136
原创 《UNIX环境高级编程》读书笔记一——UNIX基础知识
一、shell登陆后,系统先显示一些典型的系统信息,然后可以向shell程序键入命令。shell是一个命令行解释器,它先读取用户的输入,然后执行命令,用户通常用终端,有时通过文件(称为shell脚本)向shell进行输入。常用的shell有:Bourne shell./bin/sh C shell./bin/csh KornShell./bin/ksh系统从口令文件登陆项的最后一个字...
2018-12-12 21:03:53 365
原创 HDU2063——过山车(匈牙利算法)
HDOJ2063过山车过山车Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 30895 Accepted Submission(s): 13340 Problem DescriptionRPG girls今天和大家...
2018-12-05 20:00:21 466
原创 [TCP/IP网络编程]线程池实现回射服务器
github地址:https://github.com/Tangupton/socket-ThreadPool 1、threapool.h#ifndef THREADPOOL_H#define THREADPOOL_H#include <stdio.h>#include <stdlib.h>#include <unistd.h>#inc...
2018-12-02 15:31:11 688
原创 leetcode——探索字节跳动系列题目
今天登陆leetcode发现探索区多了字节跳动的专栏,特意用了一下午去刷,有些是之前刷过的。但题目不错,就当是复习一遍吧,这里记录一下我会的以及自己觉得不错的题目。原题链接请点击题目一:挑战字符串3. 无重复字符的最长子串分析:这题要求连续的不重复的最长子序列的长度,注意这里是需要连续,利用这个特性,我们可以维护一个窗口,窗口装的是无重复的字符串,一开始窗口的左边在起点(即下标为0...
2018-11-29 22:05:50 7583 2
原创 HDU1175——连连看(DFS+剪枝)
Problem Description“连连看”相信很多人都玩过。没玩过也没关系,下面我给大家介绍一下游戏规则:在一个棋盘中,放了很多的棋子。如果某两个相同的棋子,可以通过一条线连起来(这条线不能经过其它棋子),而且线的转折次数不超过两次,那么这两个棋子就可以在棋盘上消去。不好意思,由于我以前没有玩过连连看,咨询了同学的意见,连线不能从外面绕过去的,但事实上这是错的。现在已经酿成大祸,就只能将...
2018-11-18 00:42:43 354
原创 [leetcode934]——最短的桥(深度搜索+广度搜索)
在给定的二维二进制数组 A 中,存在两座岛。(岛是由四面相连的 1 形成的一个最大组。)现在,我们可以将 0 变为 1,以使两座岛连接起来,变成一座岛。返回必须翻转的 0 的最小数目。(可以保证答案至少是 1。) 示例 1:输入:[[0,1],[1,0]]输出:1示例 2:输入:[[0,1,0],[0,0,0],[0,0,1]]输出:2示例 3:输...
2018-11-12 22:00:11 1393
原创 [Linux系统编程]一步一步实现守护进程——简单易懂
本次文章划分为四个部分1. 守护进程的概念。2. 认识实现守护进程的相关函数。3. 创建一个守护进程的基本步骤。4. 演示实现守护进程代码。一、守护进程的概念守护进程就是一个脱离于控制终端、进程组与会话并且在后台运行的进程。 进程组:每个进程除了有一进程ID之外,还属于一个进程组。进程组是一个或多个进程的集合,每一个进程有一个唯一的进程组ID。进程组ID类似于进程ID——它是一个...
2018-11-08 13:37:11 500
原创 [hihocoder1081]最短路径问题一:dijkstra算法
利用贪心的思想:#include<bits/stdc++.h>using namespace std;const int maxn = 1005;const int INF = 0x7f7f7f7f;int root[maxn][maxn],dis[maxn],vis[maxn];int n,m,s,t;void dijk(int s){ for(int i...
2018-10-16 00:08:13 377
原创 [TCP/IP网络编程]fork函数、僵尸进程以及信号处理
为了实现Linux下多进程服务端,我们有必要掌握三个基础知识:fork函数、僵尸进程以及信号处理fork函数说明:多进程编程,说白了就是多个进程并发处理事件,通常我们运行一个程序的时候只有一个进程在执行任务,那么怎么才能创建多个进程来工作呢?答案就是使用fork函数,fork函数主要就是用来创建一个新的进程,被创建出来的新的进程就叫做子进程,而创建子进程的进程相对就叫做父进程。例如,进程A...
2018-10-03 23:35:45 1045
原创 Leetcode4——两个排序数组的中位数
给定两个大小为 m 和 n 的有序数组 nums1 和 nums2 。请找出这两个有序数组的中位数。要求算法的时间复杂度为 O(log (m+n)) 。你可以假设 nums1 和 nums2 不同时为空。示例 1:nums1 = [1, 3]nums2 = [2]中位数是 2.0示例 2:nums1 = [1, 2]nums2 = [3, 4]中位数是 (...
2018-09-22 15:18:17 441
原创 Leetcode2——两数相加
给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807分析:两个链表分别从头到尾取元素相...
2018-09-22 01:08:41 227
原创 [数据结构与算法]排序算法——图解堆排序
堆排序:堆排序作为一种高效的排序算法,最好、最坏以及平均时间复杂度都为O(NlogN)。堆排序正如其名,是利用堆这种数据结构进行设计的一种排序算法,所以我们要先了解什么是堆。堆:分为大顶堆和小顶堆两种大顶堆:每个结点的值都比它的左右孩子结点的值大。小顶堆:每个结点的值都比它的左右孩子结点的值小。对堆有了简单的认识即可,实际上我们在进行堆排序的时候既可以建立大顶堆进行排序...
2018-09-21 00:38:47 436
原创 [TCP/IP网络编程]使用C++实现简单的TCP通信(windows)
工具:VS2015学习前先稍微了解下系统提供的动态链接库(DLL),windows API中所有函数都包含在里面,这里不深入讲解,只需知道接下来的socket编程要用到里面的各种函数就行了,一般来说我们能学会调用就已经足够了,对应的头文件为 winsock2.h。使用DLL前必须把DLL加载到当前程序,加载方式分为动态加载和静态加载两种,这里我使用静态加载做示范,需要用到 #pragma ...
2018-09-16 15:03:44 11219 3
原创 [数据结构与算法]通俗易懂入门并查集
并查集,顾名思义,具有将两个或以上的集合合并和查找的作用。所以讨论这个数据结构即讨论两个函数,一个是查找函数find(),另一个是合并函数join()。为了便于理解,我们从题目入手: hdoj畅通工程leetcode朋友圈用leetcode的题目做例子,简单的说就是,假设1和2是朋友,2和3是朋友,4和5是朋友,那1,2,3可以组成一个朋友圈,4和5可以组成另一个朋友圈,所以一共有...
2018-09-13 15:31:34 595
原创 [数据结构与算法]二叉树的前、中、后序非递归遍历以及层次遍历
前言:二叉树作为常见的数据结构,其重要性不言而喻。相信前、中、后序的递归遍历大家都已经非常熟悉,但很多场景是需要用到非递归的遍历(例如leetcode上的题目)。前序遍历和中序遍历差不多,后序遍历稍微难一点,用点时间研究一下相信也能熟悉掌握。(整个流程建议结合画图会更好理解)前序遍历:我们将会用到数据结构里面的栈。1:我们先从根节点开始一边沿着左子树的方向把每个结点压进栈中一边把每个结点一...
2018-07-13 15:44:50 422
原创 Leetcode402——移掉K位数字
题目描述:给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小。注意:num 的长度小于 10002 且 ≥ k。 num 不会包含任何前导零。 示例 1 :输入: num = "1432219", k = 3输出: "1219"解释: 移除掉三个数字 4, 3, 和 2 形成一个新的最小的数字 1219。示例 2 :输入...
2018-06-08 23:50:23 1840 4
原创 Leetcode525——连续数组
题目描述:给定一个二进制数组, 找到含有相同数量的 0 和 1 的最长连续子数组。 示例 1:输入: [0,1]输出: 2说明: [0, 1] 是具有相同数量0和1的最长连续子数组。示例 2:输入: [0,1,0]输出: 2说明: [0, 1] (或 [1, 0]) 是具有相同数量0和1的最长连续子数组。 分析:这道题目有个特点,就是数组里的数字全都是0和1...
2018-06-05 19:58:50 1677
原创 Leetcode300——最长上升子序列(动态规划)
题目描述:给定一个无序的整数数组num,找到其中最长上升子序列的长度。 示例:输入:[10,9,2,5,3,7,101,18]输出:4解释:最长的上升子序列是[2,3,7,101],它的长度是4 典型的动态规划题目,定义一个数组dp,其中dp[i]代表以第num[i]为结尾取得的最长长度,最后返回最大的那个dp[i]就行了,所以这道题的重点在于怎么求得dp[i...
2018-06-05 19:26:36 3469 1
原创 [C++刷题笔记]——区间分解质数
问题描述 求出区间[a,b]中所有整数的质因数分解。输入格式 输入两个整数a,b。输出格式 每行输出一个数的分解,形如k=a1*a2*a3...(a1<=a2<=a3...,k也是从小到大的)(具体可看样例)样例输入3 10样例输出3=34=2*25=56=2*37=78=2*2*29=3*310=2*5思路先筛选出一堆质数存在...
2018-04-03 23:12:19 784
原创 【C++算法笔记】——二分查找算法
二分查找也称折半查找(Binary Search)1、目的:给定一个数组和一个目标值,返回该目标值在数组中第一次出现位置的下标。2、限制:(1)该数组必须满足顺序存储结构。(2)必须按关键字大小有序排列。3、原理:每次取数组正中间的值与目标值比较,若相等则返回该中间值的下标,若目标值大于中间的值则取中间值的后半部分作为一个新的数组(保留原下标)重复第一步的操作,若目标值小于中间的值则取该中间值的前...
2018-04-03 21:29:23 693
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人