你为Class外访问private对象而苦恼嘛?你为设计序列化格式而头疼嘛? ——欢迎体验Google Protocol Buffer 面向对象之封装性 历史遗留问题 面向对象中最矛盾的一个特性,就是“封装性”. 在上古时期,大牛们无聊地设计了三种访问域: public.private.protected. 大多数C++初学者都是疑惑的,甚至是对于传统C程序员而言. 在C规范中,没有class(类)的概念,只有struct(结构体)的概念. 面向对象的C++中,尽管将C规范的struct移植过来…
欢迎来到protocol buffer的开发者指南文档,一种语言无关.平台无关.扩展性好的用于通信协议.数据存储的结构化数据序列化方法. 本文档是面向计划将protocol buffer使用的到自己的Java.C++或Python应用程序中的开发者的.这个概览介绍了protocol buffer,并告诉你如何开始,你随后可以跟随编程指导(https://developers.google.com/protocol-buffers/docs/tutorials )去深入研究protocol buf…
这个作者的其它golang的文章也值得一读 原文:https://www.cnblogs.com/charlieroro/p/9011900.html protocol buffer开发指南 --------------------------------------------------------------------- ProtoBuf 是一套接口描述语言(IDL)和相关工具集(主要是 protoc,基于 C++ 实现),类似 Apache 的 Thrift).用户写好 .proto…
请以“仰望星空与脚踏实地”作为题目,写一篇不少于800字的文章.除诗歌外,文体不限. ——2010·北京卷 仰望星空 规范性 Caffe诞生于12年末,如果偏要形容一下这个框架,可以用"须敬如师长". 这是一份相当规范的代码,这个规范,不应该是BAT规范,那得是Google规范. 很多自称码农的人应该好好学习这份代码,改改自己丑陋的C++编程习惯. 下面列出几条重要的规范准则: ★const 先说说const问题,Google为了增加代码的可读性,明确要求: 不做修改的量(涵盖函数体内…
数据变形 IO(二)中,我们已经将原始数据缓冲至Datum,Datum又存入了生产者缓冲区,不过,这离消费,还早得很呢. 在消费(使用)之前,最重要的一步,就是数据变形. ImageNet ImageNet提供的数据相当Raw,不仅图像尺寸不一,ROI焦点内容比例也不一,如图: [Krizhevsky12]给出了CNN打ImageNet的基本预处理,非常经典的" Random 256-224 Crop",即: 首先,对图片进行统一的缩放,无视宽高比,统一缩放成256*256(可利用Op…
生产者 双缓冲组与信号量机制 在第陆章中提到了,如何模拟,以及取代根本不存的Q.full()函数. 其本质是:除了为生产者提供一个成品缓冲队列,还提供一个零件缓冲队列. 当我们从外部给定了固定容量的零件之后,生产者的产能就受到了限制. 由两个阻塞队列组成的QueuePair,并不是Caffe的独创,它实际上是生产者与消费者的编程方式之一. 在大部分操作系统教材中,双缓冲区free.full通常由两个信号量empty.full实现. 信号量(Semaphore)由操作系统底层实现,并且几乎没有人会…
你说你会关系数据库?你说你会Hadoop? 忘掉它们吧,我们既不需要网络支持,也不需要复杂关系模式,只要读写够快就行.    ——论数据存储的本质 浅析数据库技术 内存数据库——STL的map容器 关系数据库横行已久,似乎大家已经忘了早些年那些简陋的数据存储模式. 在ACM选手中,流传着“手艹数据库”的说法,即利用map<string,type>或者map<int,type>, 按照自己编码规则,将数据暂存起来,等待调用. 这就是KV数据库,最简陋的数据库,也是最实用的数据库. S…
你说你学过操作系统这门课?写个无Bug的生产者和消费者模型试试! ——你真的学好了操作系统这门课嘛? 在第壹章,展示过这样图: 其中,左半部分构成了新版Caffe最恼人.最庞大的IO系统. 也是历来最不重视的一部分. 第伍章又对左半部分的独立性进行了分析,我是这么描述到: Datum和Blob(Batch)不是上下文相关的. Blob包含着正向传播的shape信息,这些信息只有初始化网络在初始化时才能确定. 而Datum则只是与输入样本有关. 所以,Datum的读取工作可以在网络未初始化之前就开…
工作环境 巧妇有了米炊 众所周知,Caffe是在Linux下写的,所以长久以来,大家都认为跑Caffe,先装Linux. niuzhiheng大神发起了caffe-windows项目(解决了一些编译.API相异问题) 以及willyd大神发起的caffe-windows-dependencies项目(整理了依赖库,修正了LMDB在NTFS分区的Bug) 我们现在可以很欢乐地在Windows上研究Caffe源码,以及山寨它了. 编辑器 在Windows下涉及CUDA,Visual Studio必然…
ProtoBuf 是一套接口描述语言(IDL)和相关工具集(主要是 protoc,基于 C++ 实现),类似 Apache 的 Thrift).用户写好 .proto 描述文件,之后使用 protoc 可以很容易编译成众多计算机语言(C++.Java.Python.C#.Golang 等)的接口代码.(摘自:ProtoBuf 与 gRPC 你需要知道的知识) 注:本文参考Protocol Buffers 3.0 技术手册,下面给出该文章中未说明的部分 定义Message类型 syntax = "…