syf 发布的文章

转载自:https://sspai.com/post/35097

前段时间,一篇名为《Snipaste - 开发了三年的截图工具,但不只是截图》的帖子在 V2EX 上成为热门,这款免费且功能强大的 Windows 截图工具迅速得到了众多用户的关注和喜爱,少数派也在第一时间对 Snipaste 作了详细介绍

但当我们进一步接触了开发者 levie 之后,才发现不论是 Snipaste 本身的功能设计,还是开发背后的故事,都还有太多太多值得挖掘和分享。于是,就有了这篇可能是篇幅最长的一期「幕后」,在采访中,他向我们分享了他心目中 Snipaste 的用法,以及 Snipaste 的未来,最后,对于那些想要进行尝试独立开发的人,他也向大家分享了几点自己的经验。

- 阅读剩余部分 -

介绍

LNMP 由以下四个部分构成:

  • Linux 是运行下面三个软件的操作系统。
  • Nginx 是一款面向性能设计的 HTTP 服务器,相较于 Apache、lighttpd 具有占有内存少,稳定性高等优势。
  • MySQL 是一款性能高、成本低、可靠性好的数据库。
  • PHP 是目前常用于编写网页的脚本语言。

本文将一步一步搭建 LNMP 服务。

- 阅读剩余部分 -

杭电多校后标程里经常看见大神的代码里有断言函数,像这样:assert(a[1] == 1),便了解了一下断言函数。

形式:void assert (int expression);

头文件:assert.h

当括号内表达式为真时继续运行程序,为假时向系统的错误设备抛出一个错误,并退出程序。

例程:

#include <bits/stdc++.h>
using namespace std;

int main()
{
    freopen("input.txt","r",stdin);
    char a = 'N';
    assert(a != 'N');
    cout << a << endl;
    cout << __FUNCTION__ << ", " << __LINE__ << endl;
    return 0;
}

断言括号内的表达式为假,所以运行结果:

Assertion failed!

Program: C:\Users\syf\src\ACM\test.exe
File: C:\Users\syf\src\ACM\test.cpp, Line 8

Expression: a != 'N'

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.

此时没有执行9、10行的语句。

大量断言函数会减缓程序运行速度,且断言函数仅在debug时有作用。

取消代码中所有断言时在#include <assert.h>语句前加上宏定义#define NDEBUG即可。

事情起源于一次比赛中大佬的标程无法用sublime直接编译,错误提示如下:

唔,原来是sublime自带的c++编译系统没有-std=c++11的选项。

先看看自带的c++编译系统是怎么配置的。

- 阅读剩余部分 -