pip安装技巧 如果遇到权限问题,导致无法安装,可以用pip install xxx -t ~/python_lib的方式,将包安装在一个目录里 使用时再加上export PYTHONPATH=~/python_lib:$PYTHONPATH guppy
发表于 2019-04-03 17:30:40 | 条评论 | 阅读次数:22
cmake_minimum_required(VERSION 3.7)project(command_executor)# 设置c++ 14set(CMAKE_CXX_STANDARD 14)# 遍历文件,并把文件都保存到${GLOB_RECURSE}file(GLOB_RECURSE SOURCE core/* python/* test/*)# 增加可执行文件add_executable(command_executor ${SOURCE})# 增加静态链接库add_library(command_executor STATIC ${SOURCE})# 增加动态链接库add_library(command_executor SHARED ${SOURCE})# 指定链接库target_link_libraries(command_executor -lpthread)# 添加子目录add_subdirectory(xxx)# 设置include路径include_directories(.)
发表于 2019-03-30 16:15:50 | 条评论 | 阅读次数:21
#include "Python.h"#include "core/executor.h"static PyObject *libcommand_executor_run(PyObject *self, PyObject *args) { char *commands; if(!PyArg_ParseTuple(args, "s", &commands)) { return NULL; } auto &instance = cpputil::CommandExecutor::instance(); if(instance.run(commands)) { Py_INCREF(Py_True); return Py_True; } Py_INCREF(Py_False); return Py_False;}static PyMethodDef executorMethods[] = { {"run", libcommand_executor_run, METH_VARARGS}, {NULL, NULL}};PyMODINIT_
发表于 2019-03-30 16:10:26 | 条评论 | 阅读次数:13
FM的本质是利用二阶特征 y(X)=∑i=1n∑j=i+1nWijXiXj\large y(X)=\sum\limits^n_{i=1}\sum\limits^n_{j=i+1}W_{ij}X_iX_jy(X)=​i=1​∑​n​​​j=i+1​∑​n​​W​ij​​X​i​​X​j​​ 可发现wijw_{ij}w​ij​​是对称的,可以通过近似矩阵分解,得到 Wij=VVTW_{ij}=VV^TW​ij​​=VV​T​​,其中VVV为n∗kn*kn∗k的矩阵,也就是n个长为k的隐向量。 有: y(X)=∑i=1n∑j=i+1n∑t=1k(VitXi)(VtjTXj)\large y(X)=\sum\limits^n_{i=1}\sum\limits^n_{j=i+1}\sum\limits^k_{t=1}(V_{it}X_i)(V^T_{tj}X_j)y(X)=​i=1​∑​n​​​j=i+1​∑​n​​​t=1​∑​k​​(V​it​​X​i​​)(V​tj​T​​X​j​​) VtjT=VjtV^T_{tj}=V_{jt}V​tj​T​​=V​jt​​ 因为f(i,j)=f(j,i)f(i,j
发表于 2019-03-24 00:35:43 | 条评论 | 阅读次数:19
反射 可以避免开工厂函数,实现自动注册,避免写繁琐的工厂函数代码 #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 | 条评论 | 阅读次数:117
上次用于模拟机房演练,主要是针对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 | 条评论 | 阅读次数:91
在复习线性代数,没事多学习 线性方程组 线性方程组 通过增广矩阵求解 其次线性方程组: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 | 条评论 | 阅读次数:157
Copyright © 2017 - 2019 qwb's blog
blog.csustacm.com All Rights Reserved
Powered by qwb Contact me