Scalpel's Blog

Stay hungry, Stay foolish.

一个小型的Web多线程服务器开发笔记

  首先说一下服务器支持的功能:支持POST和GET方法,目录浏览,可以提供静态与动态两种服务,采用了预线程化的并发技术,项目主页。   服务器采用生产者-消费者模型,主线程不断地接受来自客户端的连接请求,并将连接描述符放到一个缓冲区中,每一个线程池中的线程反复地从这个缓冲区中取出可用的描述符,为客户端服务,具体代码如下: sbuf_t sbuf; //缓冲区 int main(int ...

基于TCP的Linux文件传输程序开发记录

  前段时间读完了《APUE》和《UNP》第一卷,打算写个项目练练手,正好在实验室里和同学之间传文件不太方便,于是打算写个传输文件的小程序项目主页   首先编写发送端也就是客户端的程序,程序的大体流程为:创建套接字,设置服务器端套接字地址,调用connect创建连接并等待服务器端接受,连接建立后根据输入的选项获取文件名,发送文件名,最后打开文件,读取数据并发送出去(因为fread读的数据不...

Xfce桌面环境下通过pac实现自动代理

Ubuntu + Shadowsocks

安装准备 安装Shadowsocks-Qt5 sudo add-apt-repository ppa:hzwhuang/ss-qt5 sudo apt update sudo apt install shadowsocks-qt5 Shadowsocks-Qt5配置 安装pip sudo apt install python-pip pip install --upgrade pip ...

Ubuntu系统中Chrome使用系统代理的方法

  最近发现Flash插件老是无法更新,后来查阅得知更新需要连接Google服务器,但我翻墙用的是SwitchyOmega+Shadowsocks,更新不走这个,可以通过添加启动参数的方法来指定Chrome的代理,终端命令如下   google-chrome --proxy-server="socks5://127.0.0.1:1080"

Ubuntu系统清除已卸载软件的配置文件

  在Ubuntu中我们可以用apt purge PackageName或者apt remove PackageName --purge的方式完全卸载一个软件,可是有时我们忘了用purge,只是单纯的卸载了程序,系统上还保留着配置文件怎么办呢,我们可以用如下命令来清除其配置文件:   dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P

C++两个类的互相调用

今晚WDL在设计两个类互相调用的时候遇到了一些问题,我们查了会资料,在这里记一下解决方案: 首先说一下容易犯错的地方:   两个类不能互相include对方的头文件,两者也不能都是实体对象,必须其中一个为指针。 因为两个类相互引用,不管哪个类在前面,都会出现有一个类未定义的情况,所以可以提前声明一个类,而类的声明就是提前告诉编译器,所要引用的是个类,但此时后面的那个类还没有定义,因此无...

51Nod 1486 大大走格子

Dynamic Programming & 逆元 & 容斥

题目链接 题意: 有一个h行w列的棋盘,里面有一些格子是不能走的,现在要求从左上角走到右下角的方案数。 思路: 若没有不能走的格子,则方案数为,对于不能走的点可以用容斥原理减去这些点的方案数,把点根据x坐标以及y坐标排序,表示起点到该点的方案数,则 需要用逆元求组合数,逆元求法:可以用扩展欧几里德定理,若a与模p互质,根据费马小定理可得其逆元等于,可以快速幂取模求出。 #include...

51Nod 1371 填数字

Dynamic Programming

题目链接 题意: 有n(1-200)行格子,第i(1<=i<=n)行有i个格子,每行格子是左对齐。现在要在每一个格子填入一个非负整数,最后使得每一行每一列的和都不超过2。请计算有多少种方案,答案比较大,请输出对100000007取余后的结果。 思路: 枚举每一行,设,表示到当前行已有i列为0,j列为1,k列为2,为保证合法,当前行只有如下几种填写方案(注意:每一行会比上一行多...

关于MySQL在日常使用中遇到的一些问题

问题一 由于MySQL默认字符编码为Latin,不支持中文,所以会遇到无法插入中文数据或者中文乱码的情况,这时我们可以更改其默认字符编码:打开/etc/mysql/my.cnf,添加 [mysqld] character-set-server=utf8 问题二 在做课程设计的时候,发现无法执行下述语句: update 账单 set 耗水量 = 当前水表数 - (select 当前水表...

Codeforces 687A NP-Hard Problem

DFS 染色

题目链接 题意: 给出一个无向图G,求其是否可以划分为两个互斥的顶点覆盖集,图G的顶点覆盖是一个顶点集合V,使得G中的每一条边都接触V中的至少一个顶点。 思路: 二分图,跑一遍DFS对其进行染色即可。 #include <iostream> #include <algorithm> #include <cstdio> #include <cst...