-
迫于拙劣的cpp水平,这次来记录一些关于STL算法部分的内容。 参考内容是CS106L的course reader Iterator Categories Iterators分为以下五种: * Output Iterators:可以使用"++";可以用*myItr = value,不能用value = *myItr * Input Iterators:可以使用"++";可以用value = *myItr,不能用*myItr = value * Forward Iterators: 可以使用"++",可以同时用value = *myItr和*myItr = value * …
Read More -
迫于拙劣的cpp水平,来补补以前忽略掉的cpp细节。 老规矩,先放资料。 参考资料: A Gentle Introduction to C++ IO Streams "Designing and implementing a general input/output facility for a programming language is notoriously difficult" - Bjarne Stroustrup Stream的基本认识 说说我的理解。stream(流)可以看做输入输出的抽象。我们通过流可以忽略掉device的细节,采取同样的输入输出方式。 对于任何原生的cpp类型,都可以用stream来处理。用户自定 …
Read More -
迫于要在服务器上写cpp代码,又由于各种原因,没办法把同步到本地。因此要在服务器上配置一个cpp的环境orz. 我是用vim-plug来管理插件的,只需要添加 Plug 'scrooloose/nerdtree', { 'on': 'NERDTreeToggle' } 就好了。 下面记录一些会用到的快捷键: ctrl+w类似tmux里面的功能键。 crtl+w+w: 光标自动在左右侧窗口切换 cril+w+r:调换左右侧窗口的布局位置 t 在新 Tab 中打开选中文件/书签,并跳到新 Tab T 在新 Tab 中打开选中文件/书签,但不跳到新 Tab gT 前一个 tab gt 后一个 tab
Read More -
gRPC 是 google 最新发布的开源 RPC 框架, 声称是"一个高性能,开源,将移动和HTTP/2放在首位的通用的RPC框架.". 技术栈非常的新, 基于HTTP/2, netty4.1, proto3, 拥有非常丰富而实用的特性, 堪称新一代RPC框架的典范. //上面这段话是我抄的,其实我之前连RPC是什么都不知道, 关于RPC,如果你和我一样根本不知道是什么,请参考这里 我对RPC的理解就是,一层封装,使得不在同一个机器上的程序A可以一个调用另一个程序B,而不需要考虑这两台机器,以及这两个程序使用的语言的不同。 而gRPC是诸多RPC框架中比较新,也比较好用的一个。 学习gRPC需要会使 …
Read More -
现在用的vim配置还是2015年7月的时候写的。 三年过去了,vim到了8.0,很多功能也有了更多选择。因此打算来更新一波vim配置。目前还在更新过程中。。。等差不多折腾完再来记录一些信息。 """"""""""" for vim """""""""""""" set ru set nu set clipboard+=unnamed " 映射全选+复制 ctrl+a map …
Read More -
Protobuff 是一种轻便高效的结构化数据存储格式,可以用于结构化数据序列化。它很适合做数据存储或 RPC 数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。 之前由于要用levelDB存feature,而levelDB的key只能是string(?,反正不能是一个数组), 使用了protobuf. protobuf本身还比较easy,不过目前似乎protobuf2仍然是主流,但是由于最近在看gRPC的缘故,要使用protobuf3. 如果protobuf2没有卸载干净,绝对欲仙欲死...记录一些坑.详细一点的笔记之后补. // protobuf3坑好多啊...语法全靠猜,也是有毒 …
Read More -
2022-02-26 update: 说学习笔记听起来像在分析代码。。。但是实际上什么都没干,还是写"使用笔记"好了 大三的时候看过一点levelDB的源码,不过没有怎么用过。 最近有个需求是存人脸的feature到硬盘,似乎使用levelDB比较合适,因此来学习一下使用。 先放参考资料。 关于levelDB的语法,看这里就好了。 以及由于caffe中使用了levelDB,因此也可以参考下caffe源码。不过caffe中对levelDB的使用是又封装了一层。 具体可以参考: #ifdef USE_LEVELDB #ifndef CAFFE_UTIL_DB_LEVELDB_HPP #define …
Read More -
记录一些一个没有之前没有接触过caffe/caffe2的人为了添加自定义的op 到caffe2需要做的工作. 首先参考caffe2 tutorial,随便跑个op来试试,不妨以比较简单的 Accumulate_op 为例子. 这个op的作用就是计算Y=X+gamma*Y, 其中X为输入,Y为输出,gamma是参数. 跑起来这个运算所需要的代码如下: from caffe2.python import workspace, model_helper import numpy as np # Create the input data data = np.arange(6).reshape(2,3).astype(np.float32) …
Read More -
接触Eigen的原因是最近在看caffe/caffe2源码,caffe2中使用了Eigen库. Eigen 是一个基于C++模板的线性代数库,直接将库下载后放在项目目录下,然后包含头文件就能使用,非常方便。对于Linux用户,只需要把头文件放到/usr/include 下即可此外,Eigen的接口清晰,稳定高效。 之后会更新一些,Eigen中我使用过的函数. ubuntu14.04LTS 下使用方式: sudo apt-get install libeigen3-dev cd /usr/include/eigen3 sudo cp -R Eigen /usr/include 然后尝试运行如下代码,直接编译即可.如果可以正常运行,表 …
Read More -
windows自己更新把grub更新挂了.... 更新的时候要重启几次,重启一次挂一次... 讲真,windows(或者说win10?) 是我见过的最辣鸡的OS了... 自己把自己弄挂这事不是一两次了. 下面说修复办法: 先ls,得到一堆诸如(hd0,gpt7) 这种 然后选设X=第一个(x,y)形式的输出 之后 <code>set root=X set prefix=X/boot/grub insmod normal normal </code> 然后记得要进入linux分区..... 执行: sudo update-grub sudo grub-install /dev/sda 总结:珍爱生命,远离辣 …
Read More