反射 可以避免开工厂函数,实现自动注册,避免写繁琐的工厂函数代码 #include <iostream>#include <unordered_map>#include <cxxabi.h>namespace cpputil {namespace reflection {// 获取typeid(T).name()拿到的是被编码的内容,用__cxa_demangle可以得到命名空间下的名字template <typename T>std::string get_type_name() { char *demangle_name = abi::__cxa_demangle(typeid(T).name(), nullptr, nullptr, nullptr); if(demangle_name) { std::string ret(demangle_name); free(demangle_name); return ret; } return "";}// Args用于展开构造函数的不同参数namespace {// 利用空命名
C++
发表于 2019-02-16 03:16:10 | 条评论 | 阅读次数:18
上次用于模拟机房演练,主要是针对ip级别的封禁 iptables本身是一个list,可以通过-I在最前面插入,通过-A在最后面插入 然后每次它会拿一个ip从上往下去匹配规则 白名单都差到最前面iptables -I INPUT -s 10.8.1.1 -j ACCEPT黑名单最好都追加在后面iptables -A INPUT -s 10.8.1.1 -j DROP删除规则iptables -D INPUT -s 10.8.1.1 -j DROP按ip/mask封禁iptables -A INPUT -s 10.2.0.0/16 -j DROP
发表于 2019-01-05 11:57:32 | 条评论 | 阅读次数:42
在复习线性代数,没事多学习 线性方程组 线性方程组 通过增广矩阵求解 其次线性方程组:Ax=0Ax=0Ax=0 平凡解:x=0x=0x=0向量,是其次方程的平凡解 非平凡解:至少有一个自由变量 其次方程组的应用:化学方程配平 非其次线性方程组:Ax=bAx=bAx=b 其中AxAxAx的本质是: [a1a2...an]∗[x1x2...xn]=∑i=1nxiai\left[\begin{matrix} a_1 & a_2 ... a_n \end{matrix}\right]*\left[\begin{matrix}x_1\\x_2\\...\\x_n\end{matrix}\right] = \sum\limits_{i=1}^nx_ia_i[​a​1​​​​​a​2​​...a​n​​​​]∗​⎣​⎢​⎢​⎡​​​x​1​​​x​2​​​...​x​n​​​​​⎦​⎥​⎥​⎤​​=​i=1​∑​n​​x​i​​a​i​​ 对于线性变换T,有如下特征: 对于T中的定义域的一切u,v,有 T(u+v)=T(u)+T(v), \sum^1
发表于 2019-01-01 18:03:48 | 条评论 | 阅读次数:87
首先要解决乱码的问题,linux用的字体是ttc,有点不太好用,所以我们要用ttf的 下载SimHei.ttf字体,网上能搜到一堆,然后查看 print matplotlib.matplotlib_fname() ,复制到 /usr/local/lib/python2.7/dist-packages/matplotlib/mpl-data/fonts 目录中,然后要删掉字体的缓存,即删掉 rm -rf ~/.cache/matplotlib ,再按下面的,设置字体即可。 plt.rcParams['font.family'] = 'sans-serif'plt.rcParams['font.sans-serif'] = ['SimHei']plt.rcParams['axes.unicode_minus'] = False # 解决负号显示不出的问题plt.rcParams['font.size'] = 13 # 设置字体大小bar_width = 0.35keys = small_cars.keys(); keys.sort()xlen = len(keys)xx1 = [i for i in ra
发表于 2018-05-28 14:01:21 | 条评论 | 阅读次数:119
老版本的free TODO 新版本的free total used free shared buff/cache available Mem: 7.7G 2.5G 1.1G 479M 4.1G 4.4G Swap: 15G 0B 15G used中包括了shared 新版本中的buff/cache,相比较老版本,其实包括了(-)buff/cache和(+)buff/cache 其中(-)buff/cache是一些系统的页和缓存是不可以回收的,但是(+)buff/cache是可以回收的 所以available=free + (+)buff/cache 所以available<=free + buff/cache available就是真实可用的内存
发表于 2018-05-22 09:46:45 | 条评论 | 阅读次数:108
url 路径问题 命令 语法 url https://github.com/qwb2333/Pierce 路径问题 开发go,最刚开始要做的事情,就是设置好$GOROOT, $GOPATH, $GOBIN,其中$GOBIN要加入到$PATH中 最好在项目开始前,就在github上创建好repo,然后用go get下载下来,再开始写 此时可以发现,引用文件时是github.com/qwb2333/Pierce这样的 通常代码没有src,直接就放在了repo的根目录中 命令 bash -x xxx.sh 运行的时候能显示每个命令的输出 bash -v xxx.sh 运行的时候会打印出当前的命令 go test github.com/qwb2333/Pierce/test 运行具体的package的单元测试 go run 包含main函数文件名 go install 包含main的文件名,并会把二进制文件放到$GOBIN中 go build main.go 将go文件,可以-o加上输出路径 语法 主要区分interface和struct 对于struct,在传递函数的时候是形式参数,会复制内
发表于 2018-05-19 00:25:32 | 条评论 | 阅读次数:180
第三章 文件I/O 第四章 文件和目录 第三章 文件I/O open(const char *pathname, int oflag, .../*mode_t mode*/) oflag除了熟悉的O_CREATE, O_RDONLY, O_WRONLY, O_RDWR外, 还有 O_APPEND 追加 O_EXCL 如果存在就会报错,不存在就创建,原子性操作 O_SYNC 保证数据一定落到硬盘上,但实际上很多系统并没有实现这个 O_TRUNC 成功打开后,且有写权限时,把长度截断到0 进程关闭时会自动关闭进程打开的所有fd. 可利用lseek来把cur位置往后移动,创建空洞文件,中间全为0. read和write是不带buff的,最优buff通常都是4096字节,即页大小. 文件的i节点中记录了文件的所有者,文件长度,文件所在的设备等,所以多个进程同时写一个文件时,相当于对i节点做原子操作. 由于历史原因,O_RDONLY,O_WRONLY并不是恰好不同的二进制位,所以要判断时必须 val & O_ACCMODE . int dup(fd) 用于从fd复制一个新的,并返回,等价
发表于 2018-04-23 08:41:48 | 条评论 | 阅读次数:196
Copyright © 2017 - 2019 qwb's blog
blog.csustacm.com All Rights Reserved
Powered by qwb Contact me