自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(145)
  • 资源 (2)
  • 收藏
  • 关注

原创 FLASK高可用的MVC代码框架

MVC_v1├── application.py:应用程序全局对象├── common:公有库以及model数据结构│ ├── libs:公有库│ └── models:数据结构├── config:配置文件│ ├── base_settings.json:基础配置│ ├── local_settings.json:本地配置│ └── production_setting.json: 线上配置├── docs:数据库变更记录│ └── Mysql.md├── j

2020-05-09 00:05:30 555

原创 如何解决交叉编译后GLIBC_2.14 not found的问题

目录一、 问题出现的原因二、 如何解决?2.1 升级glibc2.2 使用symbol version2.2.1 如何找到出问题的函数2.2.2 使用symbol version解决问题2.2.3 使用--wrap更加通用三、如何理解--warp参数一、 问题出现的原因使用较高版本的GLIBC库编译程序,然后将程序放到GLIBC版本较低的机器上运行,导致该问题出现二、 如何解决?2.1 ...

2019-12-08 17:01:36 1898 1

原创 短网址服务API实现方式

源码地址欢迎star项目目的我们在类似空间微博的地方会遇到字符限制这种问题,但是我们又需要贴一个网址的时候,这时候需要用到短网址服务,短网址的意思就是将一个长网址映射为一个短网址,以此来达到缩短字数的目的项目架构项目设计接口设计主要实现三个接口// Storage for redis interfacetype Storage interface { Shorten(url ...

2019-11-20 21:06:50 783

原创 使用variadic特性完成Hash函数 c++11

使用 variadic Template 完成一个Hash类的实现,variadic特性支持可变长的参数,整个过程调用由泛化向特化调用#include <iostream>#include <bitset>using namespace std;template <typename T>inline void hash_combine(size_t...

2019-09-04 14:08:11 261 1

原创 leetcode 122. 买卖股票的最佳时机 II

题目链接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-ii/想多了,想到dp上去了,这个题就是看差值,例如「1,4,5,7」显然收益最大为6,就是如果今天的价格比明天低就买然后明天卖,因为可以进行多次交易,所以这样贪心收益最高class Solution {public: int maxProfi...

2019-07-11 21:14:54 112

原创 leetcode2 两数相加

题目链接:https://leetcode-cn.com/problems/add-two-numbers/submissions/总结:题目中未说明数字的范围,默认是字符串字符串模拟加法需要考虑进位之后的变化class Solution {public: ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) { ...

2019-07-02 22:13:17 102

原创 leetcode16 最近三数之和

题目链接:https://leetcode-cn.com/problems/3sum-closest/总结:题目类似15,但是需要求最近,同样变换等式,然后判断三个数字的和与target之间的差,如果大于target那么说明正数比较大,那么r–,反之l++,每次循环都执行这个操作加油//// Created by zhangfeng on 2019-07-02.//// a +...

2019-07-02 22:10:55 123

原创 leetcode 三数之和

题目链接:https://leetcode-cn.com/problems/3sum/总结知识点:题目中要求a+b+c == 0,如果使用朴素的方法时间复杂度为n3n^3n3变换一下等式为 a+b=-c,那么时间复杂度为n2n^2n2具体方法为首先将数组排序,然后使用双指针方法,计算num[l]+num[r]+num[i]的数值,如果为0则加入最后答案数组,如果大于0则说明正数比较大,我...

2019-07-02 22:07:23 135

原创 cookie,session总结

cookie:存储在浏览器端,是一个key-value结构,有生命时长会在一段时间后自动销毁,一般用于存储用户的信息(例如记住用户名等),每个浏览器最多存储300个cookie,每个站点最多20个cookiesession:为会话控制,用来记录用户的一些状态(例如在没有登陆的时候是不能直接进入管理页面),session同样为一个key-value结构工作原理cookie首先由服务器发...

2019-06-13 21:17:12 143

原创 Redis学习笔记

Redis是一个高性能开源的key-value存储系统。1、Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。2、Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,sorted set,hash等数据结构的存储。3、Redis支持数据的备份,即master-slave模式的数据备份。Redis优势:1、性能极高 ...

2019-05-07 16:13:25 128

原创 线程池实现

#include <iostream>#include <signal.h>#include <sys/types.h>#include <fcntl.h>#include <stdio.h>#include <unistd.h>#include <string.h>#include <std...

2019-03-30 20:47:45 153

原创 golang实现捧腹网爬取笑话

爬虫的步骤见:here以下golang代码实现对捧腹网笑话的爬取,并保存到本地的joy文件夹(程序会自行创建)内package mainimport ( "fmt" "net/http" "os" "regexp" "strconv")func HttpGet(url string) (result string, err error) { resp, err1 := h...

2019-03-27 18:16:09 200

原创 golang实现百度贴吧并发爬虫

package mainimport ( "fmt" "net/http" "os" "strconv")func HttpGet(page int, ch chan int) (result string, err error) { url := "https://tieba.baidu.com/f?kw=%E7%BB%9D%E5%9C%B0%E6%B1%82%E7%94%9...

2019-03-27 15:49:35 245

原创 go语言实现两个文件拷贝

参一:需要拷贝文件的路径参二:拷贝到某个文件的路径package mainimport ( "fmt" "io" "os" "syscall")func CopyFile(path string, copyPath string) { file, err := os.Open(path) if err != nil { fmt.Println("err = ", er...

2019-03-25 14:39:00 265

原创 epoll反应堆模型实现

#include <iostream>#include <unistd.h>#include <arpa/inet.h>#include <sys/socket.h>#include <sys/types.h>#include <stdio.h>#include <string>#include &l...

2019-03-19 13:44:50 239

原创 unix网络编程中设置端口复用

使用函数int setsockopt(int sockfd, int level, int option_name, void *restrict option_value, socklen_t *restrict option_len);对于level层面我们选择:SOL_SOCKEToption_name:SO_REUSEADDRoption_value:1option_len:s...

2019-03-10 12:47:54 309

原创 unix系统编程day07--线程同步,进程同步

同步概念线程同步理解:多个线程之间有序的执行。数据混乱原因资源共享(独享资源不会)调度随机(意味着数据访问出现竞争)缺乏合理的线程调度机制互斥量mutexpthread_mutex_t解释:可以简单认为是一把锁,拥有0和1两个值,0为加锁状态,1为解锁状态主要应用函数pthread_mutex_init函数原型:int pthread_mutex_init(pth...

2019-02-26 21:54:05 220

原创 unix系统编程day06--Linux线程讲解

线程概念什么是线程LWP:light weight process轻量级进程,本质仍是进程(在Linux环境下)进程:独立地址空间,拥有PCB线程:也有PCB,但没有独立的地址空间(共享)区别:在于是否共享地址空间。 独居(进程);合租(线程)Linux下:线程:最小执行单位,进程最小分配资源单位,可看成只有一个线程的进程Linux内核线程实现原理类unix系统中,早期是没有线...

2019-02-23 22:49:45 156

原创 unix系统编程day05--Linux中时序竞态的讲解

竞态条件(时序竞态)个人理解:由于系统中各个进程抢占cpu时间,导致本应该按照时间发生的事情没有发生,造成时间上的混乱。pause函数函数原型 int pause(void);作用:挂起当前进程,等待信号来唤醒,处理的信号必须捕捉,否则信号默认动作导致进程直接停止。返回值:如果信号的处理动作为默认动作,则进程终止,pause函数没机会返回如果信号的处理动作为忽略操作,则...

2019-02-20 23:36:31 152

原创 c++泛型编程之定制操作lambda函数

lambda表达式介绍:由c++11引入,类似匿名函数,解决谓词只能传入一个或两个的问题。声明lambda表达式:[capture list] (params list) mutable exception-&amp;gt; return type { function body }参数解释:capture list:lambda表达式捕捉的外部变量列表params list:函数的参...

2019-02-17 20:50:23 240

原创 unix系统编程day04--Linux中信号和信号集的讲解

信号的概念信号的机制:A给B发送信号,在B收到信号之前执行自己的代码,收到信号后无论状态如何,首先处理信号然后去执行代码,与硬件终端类似–异步模式,但是信号是在软件层面上实现的,早期常称为软中断。信号的特质:信号由于是使用软件的方法实现的,所以会有延时性,一般时间比较短,用户感觉不到。注:每个进程收到的信号,都是由内核负责发送的,也是由内核处理的。与信号相关的事件和状态产生信号:...

2019-02-17 15:55:56 207

原创 unix系统编程day03--Linux中IPC方法讲解

管道pipe具体参考manpage,使用方法比较简单,注意数据单向流动。共享存储映射mmap函数函数原型:void * mmap(void * addr, size_t length, int prot, int flags, int fd, off_t off_set)参数:addr:映射区的首地址,一般传NULL,最后映射区的首地址会以返回值的方式传出。length:欲创建的...

2019-02-14 18:03:52 143

原创 unix系统编程day02--Liunx中exec函数族和回收进程函数讲解

exec函数组作用:在程序运行的过程中,再执行一个完整的程序。execlp函数解释:其中l表示list,p表示PATH。作用:借助PATH环境变量,加载一个进程,新进程会清空原进程的虚拟地址空间的0-3G空间,但是进程id不会变。函数原型:int execlp(const char * filename, const char * filename, const char * arg0...

2019-01-31 14:40:09 188

原创 unix系统编程day01--Linux进程讲解

一、进程相关概念程序与进程&amp;nbsp; 程序:是指编译好的二进制文件,再磁盘上,不占用系统资源(cpu,内存,打开的文件,设备,锁。。。)&amp;nbsp; 进程:是一个抽象的概念,与操作系统原理联系紧密,进程是活跃的程序,占用系统资源(程序运行起来,占用一个进程)&amp;nbsp; 程序 -&amp;gt; 剧本(纸)&amp;nbsp;进程 -&amp;gt; 戏(舞台、演员、灯光)&amp;nbsp; 同一剧本

2019-01-26 21:58:46 249

原创 unix系统学习总结

第一天:&nbsp;&nbsp;&nbsp;&nbsp;学习了unix系统的基本文件系统,了解每个文件的用法,其中用到最多的是/etc目录,配置文件所存放的地方,一般的命令都存在/bin目录中,然后是一些基本的命令,如mv,ls,tree,which等,查找文件有find操作,find有三种模式,一个是根据名字,参数为 -name(find [dir] -name [filename]),根据大...

2019-01-24 11:15:02 888 2

原创 makefile知识整理

makefile的三个要素1. 目标、依赖、命令makefile的工作原理1. 首先寻找目标文件所依赖的文件是否存在,如果不存在寻找是否有生成该文件的规则,然后等到所有的依赖文件生成完毕之后,通过命令对这些文件进行组织并生成最后的目标文件2. 如上所述,我们肯定要把最后的终极目标文件写在第一行。一个简单的makefile app(target): main.cpp(依赖文件) g+...

2019-01-21 22:47:05 152

原创 gdb基础操作命令

操作命令查看某个代码内容l + 文件名:[行号]添加断点‘break + 行号’ 或者 ‘b + 行号’开始执行程序start 或 run删除断点del + 断点编号(编号需要display查询)查看变量数值p + 变量名称查看变量类型ptype + 变量名称查看断点信息display break进入函数s结束函数...

2019-01-21 10:26:51 196

原创 关于MACOS与Linux中动态链接库的一些异同(踩坑)

动态链接库在两个系统中的作用是一样的,只是在生成方面和调用方面有一些不同点,下面进行比较:动态链接库后缀MacLinux(Ubuntu).dylib.so生成方式以下的.o文件均为于位置无关的文件生成方式为&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g++ -fPIC -c + [所需要的文...

2019-01-19 17:18:42 1977

原创 关于gcc/g++的一些参数解释

-c:只编译不链接(生成.o文件)-o:生成可执行文件-g:添加gdb调试,文件要不单纯的文件大-I: 后面跟头文件目录(include目录)-L:后面跟静态库目录,需要-l的支持-l: 后面跟静态库的名字生成静态库使用 ar rcs [lib+库名字.a] + [所有的.o]文件生成动态库:gcc -fPIC 库名字 -c 文件名...

2019-01-19 11:27:28 258

原创 vim中YouCompleteMe插件.vim_extra_conf.py配置

flags中内容自定义。# This file is NOT licensed under the GPLv3, which is the license for the rest# of YouCompleteMe.## Here's the license text for this file:## This is free and unencumbered softwa...

2019-01-10 14:37:50 742

原创 简介c++的IO库

IO类IO对象无拷贝和赋值IO对象的状态接下来的表格中假设存在流s,可以想象成cinIO库条件状态解释strm::iostate是一种IO状态,提供表达状态的完整功能。strm::badbit系统级错误导致流崩溃,崩溃返回truestrm::failbit用来指出IO操作失败,失败返回truestrm::goodbit用来表示流正常,正常返回...

2018-12-30 21:02:24 143 2

原创 经典面试题整理

new和malloc的区别new/delete是c++关键字需要编译器支持,malloc/free是库函数,需要库支持new 无需指定申请的大小,系统自动识别,并返回相应的对象指针,malloc需要指定申请内存的大小并且返回值为void*类型需要进行强制转换。TCP为什么进行三次握手而不是两次握手首先确定三次握手是什么,然后客户端和服务端都需要维护一个序列号这样才能标识发出的哪些数据...

2018-12-26 11:09:30 142 1

原创 再话堆排序

过几天就要面试了,所以复习了一下堆的结构,做一下复习心得。堆堆结构分为大顶堆和小顶堆,根据名字就可以知道他们基本的性质就是父亲节点的数字大于(小于)子节点的数字,由此区分大顶堆还是小顶堆,除此之外堆还是一个完全二叉树的结构,高度能够达到严格的log。堆的调整我们现在存在一个堆该如何去调整为大顶堆还是小顶堆呢,首先我们需要从最后一个非叶子节点开始调整做到每个父亲节点都是大于(小于)它的子节点...

2018-12-26 10:40:51 240

原创 对STL中vector以及list的理解

简介两种容器vector与list同属c++标准库(STL)中的容器,其中vector为支持随机存储的可变长数组,list为双向链表容器能够高效的支持插入删除操作。浅析vecotr容器vector英文名字为向量,在c++语言中作为标准容器的一种形式存在,支持按照下表访问,并能够支持高效的在其尾部插入删除元素。原理简介vector作为可变长数组的代表,帮助我们不必为了担心空间不够而开很大的...

2018-12-25 20:38:55 281

原创 浅谈c++11的const限定符

const修饰函数目的是防止函数修改对象的数据成员,因此在const修饰的函数中不允许调用非const函数,因为非const函数可能会修改对象的数据成员。#include &amp;lt;iostream&amp;gt;class Test {public: void set(int _a) { a = _a; } void output() const { ...

2018-12-21 16:04:06 723 2

原创 关于vim插件YouCompleteMe在MACOS的安装与配置

关于安装的话,需要先安装cmake具体步骤见:https://www.jianshu.com/p/edc4bbed92ca在安装完并定义.vimrc.vimrc.vimrc之后,我们可能发现并不能补全c或者c++的代码,只能补全之前已经输入的,这是因为.ycm_extra_config配置的问题,我们需要在配置文件的flag里面添加上相应的c++include路径,这个路径需要在控制台输入e...

2018-12-13 11:19:51 402

转载 递归的理解

转:https://blog.csdn.net/sinat_38052999/article/details/73303111

2018-12-03 14:28:38 148

原创 链表相关知识整理

标语:如果惧怕前面跌宕的山岩,生命永远只能是死水一潭链表定义:链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。比较:数组链表如何建立链表头插法将元素插入链表头的后面尾插法将元素顺序插入链表当中如何逆序一个链表非递归需要三个辅助变量前驱(pre),当前节点(p),后继节点(next)递归递归到最后...

2018-11-28 17:18:07 262

原创 C - Heavy Transportation POJ - 1797[dijkstra]

题意:从1出发到各点的最短距离。ac&nbsp;code:ac\ code:ac&nbsp;code:#include &lt;iostream&gt;#include &lt;stdio.h&gt;#include &lt;stdlib.h&gt;#include &lt;cstring&gt;#include &lt;string.h&gt;#include &lt;strin...

2018-11-20 15:17:56 151

原创 B - Security Guards Gym - 101954B[预处理BFS]

题意:在二维平面内有n个消防站,现在有Q次询问,每次询问给出一个坐标代表事故现场的地点,问距离该点最近的消防站的距离是多少。距离的定义:一个点到他周围八个方向的点的距离都是1.题解:我们先把所有消防站的点压入一个队列中去,然后进行BFS,通过BFS记录到达某个点的最短距离,最先搜到的一定是最短距离。ac&nbsp;code:ac\ code:ac&nbsp;code:#include ...

2018-11-16 16:32:23 385

Linux多线程编程手册

Linux多线程编程手册,介绍了Linux下pthread的使用方法

2018-12-25

连通图tarjan算法动画讲解呕心沥血之作

tarjan算法呕心沥血之作,动画演示,步步清晰可见,详细的描述了tarjan算法的工作过程,比网上的单纯的图片更加容易理解。

2018-02-01

空空如也

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

TA关注的人

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