自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 解决sudoers权限问题

前言前面一篇文章说到,sudo 操作免密码验证等,最好先切换到 root 用户,再进行编辑,最后强制保存。如果不这么做,而使用 chmod 来更改权限,就会导致之后的 sudo 操作全部被拒绝。问题与解决问题是这样的,我需要编辑 /etc/sudoers 文件,想让当前用户使用 sudo 操作可以免密码验证,但是保存不了,一直提示文件是只读的,:wq! 强制保存也不行,提示文件不属于当前用户...

2019-12-29 01:18:53 6234 1

原创 C++实现线程安全的队列(生产者和消费者模型)

#include <queue>#include <memory>#include <mutex>#include <condition_variable>#include <iostream>#include <thread>using namespace std;template<typename T...

2019-10-15 17:35:03 2299

原创 线程安全的对象生命期的管理

编写线程安全的类不是难事,用同步原语保护内部状态即可。但是对象的生与死不能由对象自身拥有的mutex(互斥器)来保护。如何避免对象析构时可能 存在的race condition(竞态条件)是C++多线程编程面临的基本问题,可以借助Boost库 中的shared_ptr和weak_ptr完美解决、这也是实现线程安全的Observer模式的必备技术。1.1当析构函数遇到多线程与其他的面向对象 语言...

2019-10-08 10:14:49 200

原创 LeetCode91. 解码方法

一条包含字母 A-Z 的消息通过以下方式进行了编码:‘A’ -> 1‘B’ -> 2…‘Z’ -> 26给定一个只包含数字的非空字符串,请计算解码方法的总数。示例 1:输入: “12”输出: 2解释: 它可以解码为 “AB”(1 2)或者 “L”(12)。示例 2:输入: “226”输出: 3解释: 它可以解码为 “BZ” (2 26), “VF” (2...

2019-10-08 10:14:34 151

原创 关于Mac或Linux下GO的Permission denied提示错误

有时候当你下载第三方库的时候,编译时会提示Permission denied 权限不足,出现这种错误因为权限不够。其中一种办法是需要把你项目目录和go的pck、bin权限放开。chmod -R 777 go目录...

2019-09-08 22:26:51 4542

原创 LeetCode15. 三数之和

LeetCode系列(二)-3Sum  给定一个包含 n 个整数的数组 nums,  判断 nums 中是否存在三个元素 a,b,c ,  使得 a + b + c = 0 ?  找出所有满足条件且不重复的三元组。示例:  给定数组 nums = [-1, 0, 1, 2, -1, -4],  满足要求的三元组集合为:  [   [-1, 0, 1],   [-1, -1, 2...

2019-06-26 18:23:02 165

原创 模板声明与定义要放在同一文件中?

temp.h:void fun(T);temp.cpp:#include “temp.h”void fun(T){}main.cpp:#include “temp.h”void main(){int a;fun(a);}由于main.cpp用到了fun(a),所以在编译main.cpp的时候,编译器知道它要用int来实例化fun(T)中的T,也就是要实例化fun(int)...

2019-05-24 16:29:29 323

原创 error while loading shared libraries: libboost_system.so.1.58.0: cannot open shared object file

解决方案:1.locate libboost_system.so.1.66.0输出:/home/json/boost_1_66_0/bin.v2/libs/system/build/gcc-gnu-5.4.0/debug/threadapi-pthread/threading-multi/libboost_system.so.1.66.0/home/json/boost_1_66_0/bi...

2019-05-22 16:02:07 3019

原创 关于vsftp出现Failed to start vsftpd.service: The name org.freedesktop.PolicyKit1 was not provided 的解决办法

刚刚在搭建ftp服务器时,在配置好一切的参数之后,在我重启时,出现了无法启动的错误,将配置文件改了好多次都更改不好,终于在经过一阵查资料后,终于将问题定位了出来,下面先摆出错误信息:json@ubuntu:~$ service vsftpd start Failed to start vsftpd.service: The name org.freedesktop.PolicyKit1 was...

2019-05-17 12:18:47 11140 2

原创 linux下boost库的安装

boost‘准标准库’安装过程。系统是ubuntu虚拟机,安装的是boost_1_60_0。(1)首先去下载最新的boost代码包,网址www.boost.org。(2)进入到自己的目录,解压:bzip2 -d boost_1_60_0.tar.bz2tar xvf boost_1_60_0.tar(3)之后进入boost目录cd boost_1_60_0/./bootstrap...

2019-05-05 19:04:43 3013 2

原创 Select

我们能看到TCP客户同时处理两个输入,标准输入和TCP套接字。我们遇到的问题就是在客户阻塞于(标准输入上的)fgets调用期间,服务器进程会被杀死。服务器TCP虽然正确地给客户TCP发送一个FIN,但是既然客户进程正阻塞与标准输入读入的过程,它将看不到这个EOF,直到从套接字读时(可能已经过来很长时间)。这样的进程需要一种预先告知内核的能力,使得内核一旦发现进程指定的一个或多个I/O就绪(也就是说...

2019-04-21 19:41:47 241

原创 信号、服务器崩溃

信号(signal)就是告知某个进程发生了某个事件的通知,有时也成为软件中断。信号通常是异步发生的,也就是说进程预先不知道信号的准确发生时刻。信号可以:由一个进程发送给另一个进程由内核发送给某个进程。上一节结尾提到的SIGCHLD信号就是由内核在任何一个进程终止时发送给它的父进程的一个信号。每个信号都有一个与之关联的处置,也称为行为。我们通过调用sigaction函数来设定一个信号的处置...

2019-04-20 18:17:12 417

原创 简单TCP回射服务器

这个简单例子是执行如下步骤的一个回射服务器(1)客户从标准输入读入一行文本,并写给服务器(2)服务器从网络输入读入这行文本,并回射给客户(3)客户从网络输入读入这行回射文本,并显示在标准输出上我们在客户与服务器之间画了两个箭头,不过它们实际上构成一个全双工的TCP连接。fgets和fputs这两个函数来自标准I/O库,尽管我们将开发自己的回射服务器实现大多数TCP/IP实现却已经提供这样...

2019-04-18 10:03:05 696

原创 fork和exec函数

fork和exec函数fork函数时UNIX中派生新进程的唯一方法。#include<unistd.h>pid_t fork(void)如果你以前从未接触过该函数,那么理解fork最困难之处在于它调用一次,它却返回两次,它在调用进程(称为父进程)中返回一次,返回值是新派生进程(称为子进程)的进程ID号,在子进程又返回一次,返回值为0。因此,返回值本身告知当前进程是子进程还是父进...

2019-04-16 19:38:24 776

原创 socket、listen、connect、bind、accept函数详解

socket函数为了执行网络I/O,一个进程必须做的第一件事情就是调用socket函数,指定期望的通信协议#include<sys/socket.h>int socket(int family,int type,int protocol)返回成功则返回非负文件描述符,若出错则为-1其中family参数指明协议族,它是某些常量AF_INET:IPv4、AF_INET:Ipv6等...

2019-04-16 16:54:59 1733

原创 TIME_WAIT状态

毫无疑问,TCP中有关网络编程最不容易理解的就是它的TIME_WAIT状态。主动关闭的那一端经历了这个状态。该端点停留在这个状态的持续时间时最长字节生命期的两倍,有时候时2MSL。任何TCP实现都必须为MSL选择一个值。TIME_WAIT状态的持续时间时有限的。MSL是 任何IP数据报所能够在因特网存活的最长时间。因为每个数据报含有一个称为跳限的8位字段,它的最大值为255。尽管这个是一个跳数限...

2019-04-15 15:36:04 274

原创 TCP连接的建立和终止

三路握手建立一个TCP连接时会发生下述情形(1)服务器必须准备好接受外来的连接。通常通过socket、bind和listen这三个函数来完成,我们称之为被动打开(2)客户通过调用connect发起主动打开。这导致客户TCP发送一个SYN分节,它告诉服务器客户将在(待建立的)连接中发送的数据的初始序列号,通常SYN分节不携带数据,其所在IP数据报只含有一个IP首部、一个TCP首部及可能有的TC...

2019-04-15 15:07:26 200

原创 UDP、TCP、SCTP三大协议的概述

用户数据报协议(UDP)UDP是简单的传输层协议。应用进程网一个UDP套接字写入一个消息,该消息随后被封装到一个UDP数据报,该UDP数据报进而又被封装到一个IP数据报,然后发送到目的地。UDP不保证UDP数据报会到达其最终目的地,不保证各个数据报的先后顺序跨网络后保持不变,也不保证每个数据报只到达一次。我们使用UDP进行网络编程所遇到的问题是它所缺乏的可靠性。如果一个数据报到达了其最终的目的...

2019-04-15 13:17:28 1688

原创 一个简单的时间获取客户程序

让我们考虑一个具体例子,引入将本书中遇到的许多概念和说法。实现一个TCP当前时间查询客户程序的实现。该客户程序与其服务器建立一个TCP连接后,服务器直观可读格式简单地送回当前时间和日期。获取时间的服务器端代码#include <sys/types.h>#include <sys/socket.h>#include <a...

2019-04-15 00:31:14 492 1

原创 网络编程简介概述

要编写通过计算机网络通信的程序,首先要确这些程序相互通信所用的协议,在深入设计一个协议的细节之前,应该从高层次决断通信是由哪个程序发起以及响应在何时产生,举例来说,一般认为web服务器程序是一个长时间运行的程序(就是所谓的web客户程序,如某种浏览器和服务器进程的通信总是由客户进程发起的,大多数网络应用就是按照划分成客户和服务器来组织的。在设计网络应用的时候,确定总是由客户发起请求往往能够简化协议...

2019-04-14 21:58:44 343

原创 linux上编译静态库与调用

静态库是指在我们的应用中,有一些公共代码是需要反复使用,就把这些代码编译为“库”文件;在链接步骤中,连接器将从库文件取得所需的代码,复制到生成的可执行文件中的这种库。上面提到了静态库是指在我们的应用中,有一些公共代码是需要反复使用,那么我们就假设一个背景,我们的开发过程中要反复使用各种排序算法。本文将使用到封装,继承,多态 以及多种排序算法,初学者可以多看看。源码如下:由于我们编写的库给别...

2019-04-13 09:21:52 1194

原创 结构体为什么要4字节对齐

sizeof与struct——求结构体大小的计算方法sizeof浅析(一)——求结构体大小 这篇文章讲了sizeof求结构体大小的计算方法,并给出可以套用的准则:一、存储变量时地址要求对齐,编译器在编译程序时会遵循两条原则:(1)结构体变量中成员的偏移量必须是成员大小的整数倍(0被认为是任何数的整数倍)(2)结构体大小必须是所有成员大小的整数倍,也即所有成员大小的公倍数。二、 对于嵌套的...

2019-03-22 08:40:59 2437 3

原创 利用 Scrapy 爬取知乎用户信息

思路:通过获取知乎某个大V的关注列表和被关注列表,查看该大V和其关注用户和被关注用户的详细信息,然后通过层层递归调用,实现获取关注用户和被关注用户的关注列表和被关注列表,最终实现获取大量用户信息。  环境:scrapy框架  数据库:mongo     一、新建一个scrapy项目scrapy startproject zhihuuser移动到新建目录下:cd zhihuuse...

2018-12-19 23:26:24 307

原创 fastcgi 安装

spawn-fcgi 下载去 http://redmine.lighttpd.net/news/ 下载随便下载一个版本./configuremakecp ./src/spawn-fcgi /usr/local/nginx/sbin/fcgi 的 c++版本的安装去 https://github.com/FastCGI-Archives/fcgi2 下载git clone https...

2018-12-12 14:11:32 326

原创 navicat1130 ERROR 1130: Host '192.168.1.3' is not allowed to connect to thisMySQL server

可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改”mysql” 数据库里的 “user” 表里的 “host”项,从”localhost”改称”%mysql&gt;use mysql;mysql&gt;update user set host = '%' where user = 'root';mysql&gt;s...

2018-12-11 19:20:29 2196

原创 Codeforces Round #525 (Div. 2) C. Ehab and a 2-operation task

https://www.cnblogs.com/violet-acmer/p/10068786.html题意:给定一个长度为 n 的数组a[ ],并且有两种操作:①将前 i 个数全都加上 x;②将前 i 个数全都 mod x要求用不超过 n+1 次操作,使得数组 a[ ] 严格单调递增。题解:预备知识补充:假设 a &gt; b,在什么条件下可以使式子 a%(a-b) == b 成...

2018-12-10 23:52:56 144

原创 文件描述符标志和文件状态标志区别

文件描述符标志,是体现进程的文件描述符的状态,fork进程时,文件描述符被复制;目前只有一种文件描述符:FD_CLOEXEC文件状态标志, 是体现进程打开文件的一些标志,fork时不会复制file 结构,而是两个进程文件描述符指向同一个file(当FD的exec标志为0时)1.文件描述符标志:struct task_struct—&gt;struct files_struct—&gt; |...

2018-12-02 18:50:33 1289 4

原创 APUE源代码使用方法(带你运行出APUE的第一个程序)

听说你在看apue但是不知道这么运行它书上的代码,下面我按照如下步骤来吧!1、获取源码资源wget http://www.kohala.com/start/apue.linux3.tar.Z -P ~2、tar xzvf apue.linux3.tar.Z3、cd apue4、cp Make.def.rhlin Make.defines5、cd lib.rhlin6、make7、...

2018-12-02 12:39:16 706

原创 判断当前环境是大端法还是小端法的两种方法

1:写一个联合体判断///一个32位四字节的整数值,例如:1,实际的计算机编码表示是0x000000001///小端系统中在内存中的表示是 01 00 00 00///大端系统中在内存中的表示是 00 00 00 01union EndianTest{ int8_t u[4]; int32_t i;};bool isLitteEndianSystem(){ En...

2018-11-07 12:52:52 613

原创 2013南京区域赛 I 题Wall Painting (组合数学+位运算)

题意:给出n个数,求取k个数的异或和是多少,k从1到n,分别输出n个答案;思路:由于这个是异或和,那么我们可以从这里下手,我们把n个数全都看成二进制的形式,那么当前某一位会被计算进总和,当且仅当在所取的k个数中,这一位为1(二进制形式下)的数量是奇数那么最后答案就是求一个组合数,乘上当前这一位的权值(即2的幂次),之后相加就行了#include &lt;bits/stdc++.h&gt;#...

2018-10-24 19:46:00 220

原创 Oracle数据库中对误删数据的恢复

如果一不小心对Oracle数据库中的数据进行了误删除操作,那么如何进行数据恢复呢(不考虑全库备份和利用归档日志)?如果使用的是9i以及之后的版本,那么我们可以采用闪回技术对误删除的数据进行恢复。方式有两种。原理:利用oracle提供的闪回方法,如果在删除数据后还没做大量的操作(只要保证被删除数据的块没被覆写),就可以利用闪回方式直接找回删除的数据。*确定删除数据的时间(在删除数据之前的时间就...

2018-10-23 09:41:18 470

原创 关于lower_bound( )和upper_bound( )的常见用法

lower_bound( )和upper_bound( )都是利用二分查找的方法在一个排好序的数组中进行查找的。在从小到大的排序数组中,lower_bound( begin,end,num):从数组的begin位置到end-1位置二分查找第一个大于或等于num的数字,找到返回该数字的地址,不存在则返回end。通过返回的地址减去起始地址begin,得到找到数字在数组中的下标。upper_bou...

2018-10-19 18:39:23 223

原创 HDU 5976 Detachment (逆元)

题意把一个数分解成若干不相等的数,使得这若干个数的积最大,输出最大的积 mod(1e9+7) 。#include&lt;stdio.h&gt;#include&lt;string.h&gt;#include&lt;stdlib.h&gt;#include&lt;cmath&gt;#include&lt;iostream&gt;using namespace std;#define...

2018-10-17 20:37:18 182

原创 2016 ICPC大连赛区 hdu5978 To begin or not to begin

To begin or not to beginTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 229 Accepted Submission(s): 175Problem DescriptionA box contains ...

2018-10-17 15:16:19 154

原创 CF C. Maximum Subrectangle【贪心 + dp】

给你一个两个数组 分别n , m 长度然后给你n个数 m个数 一个x然后这n + m个数 构成一个矩形比如3 31 2 31 2 3表:就是for(i=n个数) for (j=m个数) i*j1 2 32 4 63 6 9再通俗点说 n = 2 m = 2a b ac adc d ...

2018-10-04 21:43:42 203

原创 矩阵的运算 --- 倍增法-矩阵连乘求和(UVA11149 - Power of Matrix)

相信大家对于矩阵快速幂都有一定的了解。大家也就知道快速幂对于幂运算的迅速,但是当出现了这样的问题:我们就会发现即便矩阵快速幂再快,我们计算和我们都是O(n)的算法。那么在这个问题上,我们研究问题的重心就从矩阵的幂,转化为了矩阵幂的和。光看这个好像也想不出什么,那么我们换一个角度来思考这个问题。我们现在是要让计算变得更快,对吧?那么怎么样才能变得更快呢?时间复杂度的定义,就是从运算的次数来衡量时间...

2018-10-02 12:39:02 729

原创 HDU2243 考研路茫茫――单词情结

考研路茫茫——单词情结Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2687 Accepted Submission(s): 744Problem Description背单词,始终是复习英语的重要环节。在荒废了3年大学生涯...

2018-10-02 12:18:08 226

原创 POJ2778 DNA Sequence(AC自动机+矩阵快速幂)

题目给m个病毒串,问不包含病毒串的长度n的DNA片段有几个。感觉这题好神,看了好久的题解。所有病毒串构造一个AC自动机,这个AC自动机可以看作一张有向图,图上的每个顶点就是Trie树上的结点,每个结点都可以看作是某个病毒串的前缀,Trie树的根则是空字符串。而从根出发,在AC自动机上跑,经过k次转移到达某个结点,这个结点所代表的病毒串前缀可以看作长度为k的字符串的后缀,如果接下去跑往ATCG...

2018-10-02 09:36:29 152

原创 bfprt 算法 (数组中第K 小问题问题)

一:背景介绍在一堆数中求其前 k 大或前 k 小的问题,简称 TOP-K 问题。而目前解决 TOP-K 问题最有效的算法即是 BFPRT 算法,又称为中位数的中位数算法,该算法由 Blum、Floyd、Pratt、Rivest、Tarjan 提出,最坏时间复杂度为(n)。在首次接触 TOP-K 问题时,我们的第一反应就是可以先对所有数据进行一次排序,然后取其前 k 即可,但是这么做有两个问题...

2018-10-01 15:06:36 251

原创 POJ3581--Sequence(后缀数组)

http://poj.org/problem?id=3581大致题意:给出n个数,把这个数列分为三段,再把三段反转后连接在一起成为一个新串,求字典序最小的新串。大致思路:由于需要翻转,所以在输入时就按照反序输入。比如样例输入是5 10 1 2 3 4。我们从后向前读入就变为5 4 3 2 1 10。对这列数求出后缀数组。在大于2的后最中找到最小的后缀并输出。对于剩下的前缀...

2018-09-28 16:39:56 276

fastcgi.zip

fastcgi2.4.1 安装: ./configure make make install 现在官网已经没有了

2019-12-28

空空如也

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

TA关注的人

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