自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

编程爱好者的博客

一个编程爱好者的学习过程

  • 博客(92)
  • 收藏
  • 关注

原创 python爬虫入门xpath

import requestsimport csvimport osfrom lxml import etreedef getHtml(name, page): url = "https://search.jd.com/Search?" parmas = {"keyword": name, "enc": "utf-8", "page": page} heade...

2019-11-29 11:17:19 313

原创 python爬虫入门

import reimport requestsdef fun(first): #http://www.mmonly.cc/gqbz/list_41_345.html url = "http://www.mmonly.cc/gqbz/list_41_"+first+".html"#10-70 1-7 res = requests.get(url=url) ht...

2019-11-28 18:37:53 314

原创 01背包和完全背包

01背包int main(){ //01背包,time==》V 分数等于价值,时间等于体积 int size; cin >> size; vector<int> w; w.resize(size + 1, 0); vector<int> v; v.resize(size + 1, 0); vector<int> dp;...

2019-09-06 18:06:26 262

原创 http头部常见信息

准备写一个http类型的服务器,基于应用层,知识查看于https://www.php.cn/manual/view/35624.htmlETagHTTP 响应报头为资源的特定版本的标识符。它允许缓存更高效,并节省带宽,因为如果内容没有改变,Web 服务器不需要发送完整的响应。另一方面,如果内容发生了变化,etags 有助于防止资源的同时更新互相覆盖(“空中冲突”)。如果给定 URL...

2019-07-21 10:55:34 475

原创 epoll学习笔记

pollpoll 对比select 没有监控的文件描述符上限采用事件结构信息进行描述符监控,简化了三种描述符的操作流程但是poll依然需要将事件结构信息拷贝到内核进行监控在内核中需要轮询遍历的方式进行描述符事件监控(随着描述符增多而性能降低)poll也不会告诉用户具体哪个描述符就绪,需要遍历判断revents来决定描述符应该进行何种操作epollint epoll_create(in...

2019-07-03 08:23:21 447 1

原创 四次挥手的中间状态错误问题

今天模拟了四次挥手中的一些错误,开门见山,先来TCP状态转移图当然四次挥手的主动方不一定是客户端,正常情况下是客户端,但是如果客户端长时间未响应,服务器也可以主动断开(防止恶意占用系统资源和网络不好情况)四次挥手图和状态图来自百度,连接图来自我的服务器在HTTP 1.0中,客户端的每次请求都要求建立一次单独的连接,在处理完本次请求后,就自动释放连接。 在HTTP 1....

2019-06-26 01:30:29 1399

原创 shell demo练习

实现3个demoAdemo 备份器在linux环境下,B—shell程序,实现文件的备份和恢复,批量处理Bdemo使用一个菜单界面,方便Linux用户对U盘的加载,卸载操作过程,程序5个功能1加载U盘2卸载U盘3查看U盘信息4Linux分区的硬盘加载到U盘5U盘拷贝文件到Liunx分区C学生成绩增删查改功能score代码,存储查询学生成绩,假设...

2019-06-25 17:22:25 1652

原创 Linux:守护进程和http服务器

守护进程什么是守护进程?《UNIX环境高级编程》指出属于生存期长的一种进程,系统级别就有许多进程进行内核级别操作或者交互操作需要设置为守护进程,暂且不论。如果我们意图使服务器一直运行,则需要我们的守护进程客户进程-服务器进程模型,在服务器模型中,fork然后exec一个程序来向客户服务是常见的行为,这样我们的守护进程可以让守护进程的子进程打开文件描述符(fork时会继承父进程(守...

2019-06-24 22:38:52 708

原创 回调函数复习

回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。之前在#include <stdio.h>typedef int(*mypoint)(int);sta...

2019-06-24 09:48:39 353

原创 动态规划:(二维)地下城游戏,最大公共子串

地下城游戏(leetcode)一些恶魔抓住了公主(P)并将她关在了地下城的右下角。地下城是由 M x N 个房间组成的二维网格。我们英勇的骑士(K)最初被安置在左上角的房间里,他必须穿过地下城并通过对抗恶魔来拯救公主。骑士的初始健康点数为一个正整数。如果他的健康点数在某一时刻降至 0 或以下,他会立即死亡。有些房间由恶魔守卫,因此骑士在进入这些房间时会失去健康点数(若房间里的值为负整...

2019-06-11 22:04:21 170

原创 一些牛客网上的选择题

已知int a[]={1,2,3,4,5};int*p[]={a,a+1,a+2,a+3};int **q=p;表达式*(p[0]+1)+**(q+2)的值是____。*(p[0]+1)+**(q+2) 其中p[0]=a也就是a[0]的地址,p[0]+1=a+1就是a[1]的地址,*(p[0]+1)就是a[1]的值就是2,**q=p --> *q=&p ...

2019-06-06 22:43:41 415

原创 centos 7 磁盘挂载

今天搜索的时候,发现网上的磁盘挂载都是fdisk等老旧命令(已经失效),今天写一个小教程,全程贴图挂载右键vm下操作系统,添加硬盘,一路next;(模拟外部插入磁盘)分区ls 可以看到磁盘Liuxin用户无法更改,su rootgdisk命令利用n +num(1,2,3)+ num G 来分区然后ls格式化,挂载然后mkfs.xfs...

2019-06-04 17:47:02 201

原创 CPP运算符优先级

优先级 运算符 名称或含义 使用形式 结合方向 说明 1 [] 数组下标 数组名[整型表达式] 左到右 () 圆括号 (表达式)/函数名(形参表) . 成员选择(对象) 对象.成员名 -> 成员选择(指针) 对象指针->成员名 2 ...

2019-05-29 22:29:32 3412 1

原创 动态规划:对角线行走

沿着对角线,重点是发现状态转移方程:dp[i][j] = dp[i - 1][j] + dp[i][j - 1];#include <iostream>#include <vector>using namespace std;int main(){ int n=1, m=2; while ( cin >> n >> m) {...

2019-05-29 22:19:57 646

原创 高精度加法

如下,是加法的方法。#include<string>#include<vector>#include<algorithm>#include<iostream>using namespace std;template <class T>void reverse(T& s){ int begin = 0; ...

2019-05-26 19:39:42 220

原创 C++重载细究

首先,重载只和“参数”“const”有关。和返回值无关。static在重载函数中无法重载,报错,但如果只有一个static int name(a,b,c)是可以的。const在重载中const修饰变量其次,如果是简单如const int和int直接不能构成重载,因为函数传参过程无法确定const int和int但是 char * a和const char*...

2019-05-26 00:10:35 279

原创 传递对象和传递指针(是否产生多态)

今天碰到一个例子,这样则是常见的多态行为,一个接口,多种实现。class A {public: virtual void fun() { cout << "1" << endl; }};class B:public A {public: virtual void fun() { cout << "子类" << endl...

2019-05-23 20:56:13 508

原创 动态规划:连续最大和

最简单和经典的一维和线性dp:斐波那契和连续最大和问题:把多阶段过程转化为一系列单阶段问题,利用各阶段之间的关系,逐个求解,创立了解决这类过程优化问题的新方法——动态规划。暴力递归:1,把问题转化为规模缩小了的同类问题的子问题2,有明确的不需要继续进行递归的条件(base case)3,有当得到了子问题的结果之后的决策过程4,不记录每一个子问题的解。而我们需要把这种...

2019-05-23 20:22:58 649

原创 VirtualAlloc的使用

在应用程序中使用虚拟内存(VirtualAlloc VirtualFree)本文转载以下博客,百度百科,cpp文档https://blog.csdn.net/baidu_25539425/article/details/78764156https://blog.csdn.net/u012372584/article/details/79621538https://www.cnblo...

2019-05-23 20:06:12 11163

原创 排序2:自定义数据的排序(仿函数和lambda)

利用仿函数和泛型编程完成自定义数据的排序template<class T=vector<PAIR>,class K>void mysort(T & num,const K &cmp){ int size = num.size(); for (int i = 0; i <= size-2; i++) { for (int j = 0;...

2019-05-11 21:54:18 946

原创 排序1 O(nlogn)

nlogn的排序:堆排,快排,归并堆排序(英语:Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。 void adjustHeap(int a[], int i, int size) { //int max; int l = 2 * i + 1; in...

2019-05-11 20:57:22 606

原创 http总结(get,post)

A:对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。B:因为POST需要两步,时间上消耗的要多一点,看起来GET比POST更有效。但是,GET与POST都有自己的语义,不能随便混用。在网...

2019-05-09 22:05:36 375

原创 剑指offer练习部分:替换空格,从尾到头打印链表,栈模拟队列

替换空格,从尾到头打印链表,栈模拟队列,青蛙跳问题请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。class Solution {public: char* Mstrcpy(char * des,const char* str){ char * ret...

2019-05-06 19:19:03 251

原创 最小栈

使用2个栈实现最小栈class Solution { private: stack<int> s1; stack<int> s2;public: void push(int value) { s1.push(value); if(s2.empty()==1 || value <= s2.top()...

2019-04-30 20:57:20 385

原创 Linux复习: semaphore.h信号量和生产者消费者

点击查看demo代码demo运行结果如图借用网上的一段话在线程世界里,生产者就是生产数据的线程,消费者就是消费数据的线程。在多线程开发当中,如果生产者处理速度很快,而消费者处理速度很慢,那么生产者就必须等待消费者处理完,才能继续生产数据。同样的道理,如果消费者的处理能力大于生产者,那么消费者就必须等待生产者。为了解决这种生产消费能力不均衡的问题,所以便有了生产者和消费者模式。可以对数...

2019-04-21 23:53:58 5791

原创 Linux复习:pthread的cond和mutex

互斥锁mutex这一篇文章描述pthread的创建和分离,等待线程的条件变量何为同步?同步 概念主要当某个线程可以修改变量,而其他线程也可以读取或修改这个变量的时候,就需要对这些线程进行同步,以确保它们在访问变量的存储内容时不会访问到无效的数值。在Linux中,可以理解为一个线程需要等待另外一个线程完成某个条件变量,才能继续自己,否则挂起自己。顺便复习挂起和阻塞的区别当多个控制线程...

2019-04-14 23:27:00 1214

原创 Linux复习:XSI IPC之消息队列总结

在Linux中,IPC消息队列是一个双向通信的全内存设计,即内核保证了读写顺序和数据同步,并且是性能比较优越的先进先出数据结构。消息队列应用于很多场景:比如异步任务处理,抢占式的数据分发,以及顺序缓存区等。消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。每个数据块都被认为含有一个类型,接受者接受的数据块可以有不同的类型值,我们可以通过发送消息来避免命名管道的同步和阻...

2019-04-14 22:41:27 341

转载 STL: unordered_map 自定义键值类型的使用

当试图使用自定义类型作为 unordered_map 的键值时,则必须为自定义类型定义 Hash 函数与相等的判断条件。我们先定义自定义类型作键值,代码如下:struct KEY{ int first; int second; int third; KEY(int f, int s, int t) : first(f), second(s), third(...

2019-04-12 20:34:24 1374

原创 Linux复习:pthread的create和join,detach

本文demo运行在阿里云的服务器,Centos系统首先复习进程和线程的资源关系。进程内典型全局资源如下:1)代码区:这意味着当前进程空间内所有的可见的函数代码,对于每个线程来说,也是可见的2)静态存储区:全局变量,静态空间3)动态存储区:堆空间线程内典型的局部资源:1)本地栈空间:存放本线程的函数调用栈,函数内部的局部变量等2)部分寄存器变量:线程下一步要执行代码...

2019-04-08 20:21:22 1087 2

转载 gdb调试

前言 gdb开始调试开始上手1.开启core,采集程序崩溃的状态  首先你跟着我做开启core崩溃状态采集.可以通过ulimit -c查看如果是0表示没有开启.开启按照下面操作su rootvi /etc/profileShift + Gi# No core files by default 0, unlimited is ooulimit -S -...

2019-04-08 19:42:50 163

转载 netstat命令

在linux一般使用netstat 来查看系统端口使用情况步。 netstat命令是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的 netstat命令的功能是显示网络连接、路由表和网络接口信息,可以让用户得知目前都有哪些网络连接正在运作。 该命令的一般格式为: netstat [选项] ...

2019-04-06 10:04:22 353

原创 Linux复习:页面置换算法LRU和FIFO

在地址映射过程中,若在页面中发现所要访问的页面不在内存中,则产生缺页中断。当发生缺页中断时,如果操作系统内存中没有空闲页面,则操作系统必须在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间。而用来选择淘汰哪一页的规则叫做页面置换算法。首先引用定义,当发生缺页中断时,虽可随机选择一个页面来置换,但如果每次都选择不常使用的页面会提升系统的性能。如果一个被频繁使用的页面被置换出内存,很...

2019-04-06 09:33:31 1682 3

原创 Linux复习:PCB task_struct

从经典函数fork()引出1)在父进程中,fork返回新创建子进程的进程ID; 2)在子进程中,fork返回0; 3)如果出现错误,fork返回一个负值; 在fork函数执行完毕后,如果创建新进程成功,则出现两个进程,一个是子进程,一个是父进程。在子进程中,fork函数返回0,在父进程中,fork返回新创建子进程的进程ID。我们可以通过fork返回的值来判断当前进...

2019-04-02 21:16:26 426

转载 linux下非阻塞io库 epoll

假设你在大学中读书,要等待一个朋友来访,而这个朋友只知道你在A号楼,但是不知道你具体住在哪里,于是你们约好了在A号楼门口见面.如果你使用的阻塞IO模型来处理这个问题,那么你就只能一直守候在A号楼门口等待朋友的到来,在这段时间里你不能做别的事情,不难知道,这种方式的效率是低下的.进一步解释select和epoll模型的差异.select版大妈做的是如下的事情:比如同学甲的朋友来了,selec...

2019-04-02 19:48:07 565

转载 ssh原理

SSH是每一台Linux电脑的标准配置。随着Linux设备从电脑逐渐扩展到手机、外设和家用电器,SSH的使用范围也越来越广。不仅程序员离不开它,很多普通用户也每天使用。SSH具备多种功能,可以用于很多场合。有些事情,没有它就是办不成。本文是我的学习笔记,总结和解释了SSH的常见用法,希望对大家有用。虽然本文内容只涉及初级应用,较为简单,但是需要读者具备最基本的"Shell知识"和了解"...

2019-04-02 16:09:36 178

原创 三指针操作链表逆置

之前以为链表逆置是利用头插法。今天看到一个三指针法,分享一下。class Solution {public: ListNode* ReverseList(ListNode* pHead) { if(pHead->next==NULL||pHead==NULL) return pHead; ListNode* pre=NU...

2019-04-01 15:44:47 400

原创 波峰波谷数组

如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列。第一个差(如果存在的话)可能是正数或负数。少于两个元素的序列也是摆动序列。例如,[1,7,4,9,2,5]是一个摆动序列,因为差值(6,-3,5,-7,3)是正负交替出现的。相反,[1,4,7,2,5]和[1,7,4,5,5]不是摆动序列,第一个序列是因为它的前两个差值都是正数,第二个序列是因为它的最后一个...

2019-03-31 22:46:31 2038

原创 Linux复习:vim,gcc和gdb

梳理操作系统,linux的脉络,把过去学习的知识系统化,一是方便自己复习,二是分享我的学习。vim配置cd到/etc目录打开vimrc,然后网上搜索相关配置,粘贴进去或者直接yum别人打包好的文件。我用的是码云上的一个插件,各种功能,自动补全,好看~vim快捷键我其实常用就切换i(插入模式),底行模式写写小命令,切換vvim命令下面的引用自网...

2019-03-27 16:25:21 703

原创 Linux复习:用户操作权限及相关命令

梳理操作系统,linux的脉络,把过去学习的知识系统化,一是方便自己复习,二是分享我的学习。看完我这一篇文章,在linux下操作和编写代码没有问题。我在Linux下最常使用的命令无外乎cd,ls首先,作为用户,有普通用户和root用户,一些整个系统的设置,我会使用root,平时还是我自己用户超级用户(root):可以在linux系统下做任何事情,没有限制**(命令提示符为"...

2019-03-27 13:03:55 487

原创 Linux进程概念

《操作系统》概念上分为三种状态阻塞到就绪:等待的事件发生了 就绪到运行:进程调度程序为之分配了处理机后,该进程便由就绪状态转变运行运行到就绪:时间片已用完而不得不让出处理机,于是进程从运行状态转变就绪运行到阻塞:因为某个事件中断R (TASK_RUNNING),可执行状态表明进程要么是在运行中要么在运行队列里。S (TASK_INTERRUPT...

2019-03-25 12:21:04 264

空空如也

空空如也

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

TA关注的人

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