自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Pangda code twice

Love & Peace

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

原创 [C++] 移动语义和右值引用

移动语义和右值引用特性说明C++11中最为重要的特性就是移动语义和右值引用。这两者带来的革命性变化,使得其成为大家选择C++11的理由,以及提升代码效率的必备之法。左值和右值C++中所有的表达式和值,要么是左值,要么是右值。通俗的来说,左值指可以使用&取得其地址的“非临时对象”,而右值则是指不可用&取得其地址的“临时对象”。int a = 0;在上面这个例子中,a可以...

2019-03-14 22:24:45 863 1

翻译 [Asio] Using Asio with C++11

Using Asio with C++11这篇文章既作为Asio网络库的一个介绍,也作为Asio网络库与C++11进行协同实现和使用的一个简单的概览。本文主要介绍的不是跟随Boost发布的Asio库,而是Asio独立于Boost的一个版本,我们所介绍的这个版本的Asio有以下几个目标:在库接口上使用C++11语言和标准库特性。证明这个库可以在仅仅使用C++11标准库和操作系统提供的设施下...

2018-12-24 17:37:17 4144 2

原创 [IPC] 共享内存——分析和使用

共享内存共享内存简介共享内存是所有进程间通信(IPC)手段中速度最快的,不同进程间使用事实上的同一内存区域,这样使得进程间使用信息时免去“复制”这一流程,减少开销。以下面“进程A从文件f中读取数据,进行加工之后,将数据传递给进程B”这种场景为例,若使用其他的IPC形式,我们至少需要以下步骤:1. 从文件f中复制数据到进程A的内存中;2. 加工数据;3. 将加工好的数据通过系统调用拷贝到...

2018-10-31 22:56:59 1561 1

原创 [ArchLinux] 安装及KDE桌面环境安装配置

ArchLinux 安装及KDE桌面环境安装配置首先,安装之前,需要一个“启动介质”,我这里习惯使用USB设备作为启动介质,这是由于ArchLinux滚动更新的特性,而且占用空间很小,以其他的方式安装个人认为不太适合。话不多说,访问ArchLinux官方网站,点击右上角Download,在下方选择适合你的下载方式或镜像进行下载,我常用的地址是网易的镜像源,和清华大学的镜像源。下载完毕后,我一般...

2018-09-22 22:22:39 19565 2

原创 【FastCGI】FastCGI 协议分析

FastCGI 协议分析FastCGI(快速通用网关接口)是一种让交互程序与Web服务器通信的协议,可以算是CGI的增强版本。FastCGI减少了网页服务器与CGI程序之间的开销,使得服务器可以同时处理更多的网页请求。目前很多常见的网页服务器都已经支持了该种协议。通信格式Web服务器与FastCGI程序之间通过流式套接字来通信,既包含Unix域套接字(Unix Domain S...

2018-08-10 16:43:56 2348 1

原创 【C++】C++ 17简单上手(2)——string_view

什么是string_viewstd::string_view是C++ 17标准中新加入的类,正如其名,它提供一个字符串的视图,即可以通过这个类以各种方法“观测”字符串,但不允许修改字符串。由于它只读的特性,它并不真正持有这个字符串的拷贝,而是与相对应的字符串共享这一空间。即——构造时不发生字符串的复制。同时,你也可以自由的移动这个视图,移动视图并不会移动原定的字符串。正因这些特性,当你不需...

2018-06-26 21:55:29 18607 3

原创 【C++】C++ 17简单上手(1)

写在前面C++ 17标准已经发布了有一段时间了(甚至于后一个版本C++ 20也在路上了),最近终于得空(懒癌治愈),查阅了相关资料,简单上手一下。简单的感受,一个是“现代”C++和C语言确实已经是天差地别,另一个就是标准库中的东西以及新语法确实更加方便我们编程了。虽然这些特性也许很长一段时间内都不一定用得上,然而学习一下总是好的,并且,体验一下“更现代”的C++的感觉也不错。带初始化的选择...

2018-06-26 19:24:43 3290

原创 2018年 西邮Linux兴趣小组 纳新免试题揭秘

前言小组2018年的免试题的五位出题人是:小组16级成员刘付杰、李猛、时宇辰、王良、娄泽豪。(此处应有掌声若干秒)本人虽然参与了出题,但是我对其他关卡知之甚少,于是好奇的我在免试题上线了之后,与大家一起开始了破关之旅。以下以我作为第一视角所写而成的“免试题攻略”,若有错漏,还请多多包涵,与我在评论区进行交流。第一关目前微信推送中第一关的入口已经下线,想要挑战的同学可以点击这里的入口...

2018-05-07 23:14:59 1878 4

原创 [这很难吗?] C/C++ 求Fibonacci数列的第N项(N不大于50)

为什么写?很好奇为什么这个东西有那么难吗?于是就花了点时间探索一下若n未知或已知使用写轮眼复制书上代码顺便一说书上的代码十分的难看,好孩子们不要学。#include<stdio.h>void main(){ int i; long int f, f1=1, f2=1; printf("%10ld%10ld", f1, f2)...

2018-04-19 13:10:26 1956 3

原创 [C++] algorithm库内容学习(1)

algorithm[C++ 11] std::all_of原型:template <class InputIterator, class UnaryPredicate> bool all_of (InputIterator first, InputIterator last, UnaryPredicate pred);功能: 指定上下界内是否都符合某条件 用例...

2018-03-06 21:05:38 460

原创 [阶段练习] String类型实现

使用时#include包含以下代码的头文件即可:// File: pstring.hpp#ifndef __HEADER__PSTRING_#define __HEADER__PSTRING_#include<stdexcept>#include<iostream>class pstring {private: // 任意迭代器类型 template<typename F

2017-12-27 21:30:15 326 2

原创 [随手写写] 减少代码的“复制粘贴”——关于函数

写点啥?最近状态其实一直挺差的,有各种各样的破事,人很烦躁的说,希望早点能调整过来吧。这学期基本上不怎么更新博客了,一个是学的内容,语言向的多一些,直接写的话很像抄书,对自己的提升基本没有。我对自己的记性还是有点信心的,记忆方面一向不出什么大问题。其实也是自己暗地里开过很多想写的内容,不过都被懒癌战胜了,有点难过。决定还是找个小一点的东西写写,找找感觉。在群博看到了一篇博客,决定拿这个入口搞一下。

2017-12-11 20:37:31 509

原创 [算法] 使用“复杂”的数据结构降低时间复杂度

Leetcode 1: Two Sum问题描述 给定一个整数数组和一个目标数,返回两个下标,使数组中这两个下标所代表的数字之和等于目标数。 你可以认为每组输入有且仅有一个正解,除此之外,两个下标不应当相等。 例子: 给定一数组nums = [2, 7, 11, 15],目标数target = 9 因为nums[0] + nums[1] = 2 + 7 = 9 = ta

2017-12-04 22:47:03 588

原创 [随便扯几句] 关于数据结构

吐槽一下学校这学期开始使用“SPOC+翻转课堂”的模式来教数据结构这门课。就我这段时间的体验来说,这种模式非常非常非常不负责任。虽说学习本就是自己的事情,不能寄希望于别人来督促,但这种模式让不想学习的人失去了最后的负罪感:自己不会?组内别人帮忙解答呗~没写作业?反正是一组交一份作业,别人肯定会写的嘛~期末挂科?平时分占比那么高,拿头挂科?当然了,我并不关心这个模式的教学效果怎样,这交给教育学

2017-10-30 20:42:31 394 2

原创 [JSON] JVM平台下解析JSON——Gson库使用方法

介绍Gson是目前被广泛使用的一个JSON库,它由Google公司发布,完全开放源代码,主要用途为序列化Java对象为JSON字符串,或反序列化JSON字符串成Java对象。当然,虽然它由Java编写,但它可以被JVM平台下的一切语言使用,以下以Scala作为描述语言,简单的说明如何使用Gso安装GsonGson是一个开放源代码的项目,它的源代码可以在项目的github仓库找到,如果你并不关心它的源

2017-09-26 22:31:20 350

原创 [Golang] 写个小东西:今天吃什么好

所以到底吃什么?每天到了饭点都会莫名的焦虑,到底吃什么啊,感觉每个都想吃,每个也都不想吃的样子,非常的纠结。打开手机自带的Roll点App又要开始纠结到底点数对应啥,实在是非常的烦人,所以不如写一个程序自动帮我做决定好了。然而自身太弱了,写不出手机应用,写Web应用的话……不也还是不会写吗!!就这么点小小的需求要等那么多东西学完才能写实在是太不Cool了。于是决定用golang自带的HTTP服务器,

2017-09-14 17:42:12 786 2

原创 [ACM] POJ 2488 A Knight's Journey

纪念一下自己寒假被支配了半个月的恐惧。Description整天待在方块里的骑士感到特别的无聊,于是他决定来一场说走就走的旅行。 然而他只能走日字,如右图所示,如果骑士当前在棋盘的正中央,他可以走标记有白点的八个区域。 骑士知道世界是一个列数和行数均不超过8(即8×8)的棋盘。 并且骑士有一点强迫症,如果用A-Z来表示列,1-99来表示横行,他只愿意走字典序最小的一条道路。 你能帮助勇敢的骑

2017-08-02 17:06:18 407

原创 [网络编程] 常见的IO模型

常见的IO模型在Unix Network Programming一书中提到了若干个常见的IO模型,大概有: - 同步阻塞IO(Blocking IO):即传统的IO模型。 - 同步非阻塞IO(Nonblocking IO):此时非阻塞IO的Socket应当被设定为NONBLOCK。 - IO多路复用(IO Multiplexing):也称之为异步阻塞IO,是一种Reactor设计模式。常

2017-08-02 16:35:46 533

原创 [GNU/Linux] Linux系统调用-线程相关(三):私有数据

线程特定数据线程特定数据,也称之为线程私有数据,是一种存储和查询某个特定线程相关数据的一种机制。使用线程特定数据的原因是:我们希望每个线程可以访问它单独的数据副本,而不需要担心与其他线程的同步访问问题。而实际上由于每一个线程都可以平等地访问进程空间里的所有内容,我们并不能完全地屏蔽掉这种访问,但我们可以设计使得很难在编码无恶意的情况下访问到不应当访问的数据。在使用线程特定数据之前,我们需要一个键,这

2017-07-27 11:04:30 297

原创 [GNU/Linux] Linux系统调用-线程相关(二):线程同步

以下内容中读写锁、自旋锁、屏障并没有在《Linux C编程实战》一书中提及,其内容来源于《Advanced Programming in the Unix Environment》中。互斥量 Mutex初始化、销毁函数原型及解释//对于静态分配的互斥量,可以通过赋特殊值的方法完成初始化,如:pthread_mutex_t one = PTHREAD_MUTEX_INITIALIZER;//对于

2017-07-26 11:33:32 408

原创 [GNU/Linux] Linux系统调用-线程相关(一):基本知识

线程包含的信息:每个线程中都包含有表示自身执行环境的信息,其中至少包括:标识线程的线程ID、一组寄存器的值、栈、调度优先级和策略、信号屏蔽字、errno变量和线程的私有数据。 线程函数的错误处理与返回值:与一般的POSIX函数不同,线程函数在执行发生错误的时候,一般不会设置errno全局变量值,而是直接返回表示错误类别的错误码。因此下面的函数若不特殊说明,一般不会设置errno。线程标识符函

2017-07-25 19:16:20 1118

原创 [GNU/Linux] 自己实现shell

写在前面shell作为一种与内核对话的一种方式,为我们使用操作系统服务,提供了很多便利。在我们使用Linux时,shell是不得不接触的内容之一。为了学习和熟悉Linux进程相关的内核函数,我们可以尝试着自己实现一个shell。源代码src/MakefileSOURCES = $(wildcard *.cpp)OBJECTS = $(patsubst %.cpp, %.o, $(SOURCES))

2017-07-25 09:13:02 826

原创 [GNU/Linux] Linux系统调用-进程相关

进程标识符函数原型及解释pid_t getpid(void);pid_t getppid(void);uid_t getuid(void);uid_t geteuid(void);gid_t getgid(void);gid_t getegid(void);返回值:成功时getpid返回自身的pid,getppid返回自身父进程的pid,getuid返回自身的实际运行uid,geteui

2017-07-24 14:48:43 432

原创 [GNU/Linux] 自己实现ls

随便扯点什么实际上刚开始让我实现ls(1)我是拒绝的,因为,你不能让我写,我就马上去写,第一我要看一下,因为我不愿意写完了以后再加一些特技上去,比如ls忽然“Segmentation Fault”了,很懵逼、很低能,这样用过ls的人出来一定会骂我,根本没有这样辣鸡的ls,就证明这ls一点也不好用,就是在骗人。后来组长告诉我只用实现-a -l -R就好,我写了两天左右,感觉还不错,后来我在使用的时候就

2017-07-23 22:28:19 551 1

原创 [GNU/Linux] Linux系统调用-文件操作(二)

获得文件属性函数功能:获得文件的属性。函数原型及解释int stat(const char *restrict path, struct stat *restrict buf);int fstat(int fildes, struct *buf);int lstat(const char *restrict path, struct stat *restrict buf);返回值:若执行成功则

2017-07-20 17:19:30 305

原创 [GNU/Linux] Linux系统调用-文件操作(一)

POSIX 错误处理 POSIX函数若执行时发生错误,大部分函数都将设置全局变量errno,以下内容若未特别提及,均在执行失败时设置了errno。 各个errno变量可以取的常数值可以使用man 3 errno查看man手册得知。打开文件函数功能: 打开文件并返回文件描述符,其他功能视参数而定。函数原型及解释int open(const char *path, int oflag, .

2017-07-20 11:43:42 324

原创 [XiyouLinux] 纳新题的更深层次探讨(1)

题目十一 以下程序段的运行结果是什么? #include<stdio.h>int main(int argc, char *argv[]){ int nums[5] = {2, 4, 6, 8, 10}; int *ptr = (int *)(&nums + 1); printf("%d, %d\n", *(nums + 1), *(ptr - 1)); retur

2017-06-27 17:58:49 471

原创 [ArchLinux] 搜狗拼音输入法的安装

配置源在ArchlinuxCN源中有很多方便中国用户使用的包,其中也包含了经常使用的搜狗拼音输入法,于是我们需要先配置ArchlinuxCN源,这样我们就可以使用自带的包管理器Pacman直接安装搜狗拼音输入法。首先使用文本编辑器打开/etc/pacman.conf,末尾增加以下两句:[archlinuxcn]Server = https://mirrors.ustc.edu.cn/archlin

2017-06-26 11:33:56 11529 1

原创 [GNU/Emacs] 快捷键简单汇总

特别约定在以下所有叙述中,C-× 都代表同时按住Ctrl和×键,M-×都代表同时按住Alt和×键。屏幕移动向下滚动一屏 C-v向上滚动一屏 M-v重新定位光标相对于屏幕所在的位置 C-l光标控制向上移动一行 C-p向下移动一行 C-n向左移动一个字符 C-b向左移动一个单词 M-b向右移动一个字符 C-f向右移动一个单词 M-f移动到一行的最前 C-a移动到一句的最前 M-a

2017-06-19 22:55:17 2872

原创 [ACM] 第八届西邮杯初赛题解

Problem A: 加法变乘法Time Limit: 10 Sec Memory Limit: 256 MBDescription已知X可以写成从1开始连续若干个整数的和, 现在要求把其中两个不相邻的加号变成乘号,使得结果为Y。找出所有满足条件的可能答案并输出(把两个乘号左边的数字用小括号括起来,中间用英文逗号间隔,两个括号之间不空格);若找不到满足的条件,则输出“NON

2017-06-18 14:28:43 1839 2

原创 [算法] 基本图算法的c++实现:广度优先搜索

伪代码BFS(G, s): for each vertex u ∈ G.V - {s}: u.color = White u.d = ∞ u.π = NIL s.color = Gray s.d = 0 s.π = NIL Q = ∅ Q.push(s) while Q ≠ ∅: u

2017-06-02 20:31:56 875 1

原创 [Assembly] 程序的机器级表示(三):栈指令、算术和逻辑指令

栈指令 指令 效果 描述 pushq S R[%rsp]←R[%rsp] - 8

2017-06-02 11:36:21 4995 3

原创 [Assembly] 程序的机器级表示(二):数据传输指令

数据传输指令的形式指令效果描述 mov S, DD ← S 传送 movb 传送字节 movw 传送字 movl 传送双字 movq 传送四字 movabsq I, RD ← S 传送绝对的四字需要注意的点传送指令的两操作数不可均为内存位置。movl在以寄存器作为目的时,会把寄存器的高位设为0 例子:分别执行movabsq $0xABCDEF01234567

2017-05-30 20:51:40 2152

原创 [Assembly] 程序的机器级表示(一)

数据格式 C声明 Intel数据类型 汇编代码后缀 大小(字节) char 字节 b 1 short 字 w 2 int 双字 l 4 long 四字 q 8 char * 四字 q 8 float 单精度 s 4 double 双精度 l 8寄存器 主要用途 64

2017-05-30 19:57:12 1114

原创 [算法] 基本图算法:深度优先搜索、广度优先搜索

程序中图的表示邻接链表法对于图G = (V, E),我们可以将之视为邻接链表的组合,该种表示方法在表示稀疏图(即边的条数|E|远远小于|V| ^ 2的图)时空间利用效率高而成为表示稀疏图,甚至是稠密图的主要方法之一。 对于上述例图,使用邻接链表的表示形式示意图如下: 不难从例子中总结出,对于图G = (V, E)来说,其邻接链表表示由一个包含|V|条链表的数组Adj组成,每个结点有一条链

2017-05-30 17:29:29 1690 2

原创 [ACM] POJ 3087 Shuffle'm Up

#include<iostream>#include<string>#include<map>using namespace std;const int MAXDATA = 100000;map<string, bool> vis;void shuffle(string &r, string &s1, string &s2) { r.clear(); string::iterat

2017-05-25 19:17:23 342

原创 [ACM] HDU 2025 查找最大元素

#include<iostream>#include<algorithm>#include<string>using namespace std;int main() { string st; while (getline(cin, st)) { char max = *max_element(st.begin(), st.end()); for (

2017-05-25 19:09:12 541

原创 [ACM] UVa 11624 Fire!

#include<iostream>#include<queue>#include<cstring>using namespace std;const int MAXDATA = 1005;const int NOTV = -1;const int OPR[4][2] = { 0, 1, 0, -1, 1, 0, -1, 0};struct d2Pos { int x, y, d;

2017-05-25 18:59:36 454

原创 [ACM] HDU 2054 A == B?

#include<iostream>#include<string>using namespace std;string numlize(string n);int main(void){ string n1, n2; while (cin >> n1 >> n2) { if (numlize(n1) == numlize(n2)) cou

2017-05-25 18:56:05 399

原创 [C++ 11] Range-based For

Range-based For 的一般形式想要遍历C++的各个容器类型以及原生数组,除了使用下标以及迭代器访问之外,还可以使用C++11的一种新的for循环形式,Range-based For。其一般的形式:for (declaration : expression) { statement;}以下是一个使用的例子:#include<iostream>int main() { in

2017-05-24 19:43:14 552

空空如也

空空如也

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

TA关注的人

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