当前位置: 首页 > news >正文

杭州做网站的公司官方百度app下载安装

杭州做网站的公司,官方百度app下载安装,软件工程课程设计,广东江门开平最新消息今天寻求帮助 由于自己第一次读开源代码,所以完全没有方法,所以第一步是疯狂Google brpc学习最佳实践 如何阅读源代码 最终找到一篇比较好的文章 如何阅读一份源代码? 制定计划 目前自己的大计划是一年能够改写brpc 所以小计划是当前一个月…

寻求帮助

由于自己第一次读开源代码,所以完全没有方法,所以第一步是疯狂Google

brpc学习最佳实践

如何阅读源代码

最终找到一篇比较好的文章
如何阅读一份源代码?

制定计划

目前自己的大计划是一年能够改写brpc

所以小计划是当前一个月先搞清楚brpc的基本框架,了解基本结构

制定以上计划的原因如下:

  • 自己第一次读大型开源项目
  • 这个brpc涉及的知识点较多,工程庞大,而且十分经典实用,所以应该深入学习

第一周实践

阅读技巧
https://www.codedump.info/post/20200605-how-to-read-code-v2020/

然后跟着brpc学习 慢慢来的,
2020年09月28日16:33:07 发现其中AutoReset<>类是第一个简单易懂的类___继续加油

IOBuf

声明在iobuf.h,然后实现在iobuf_inl.hiobuf.cpp

cntn问题__TODO

size_t IOBuf::cutn(std::string* out, size_t n) {if (n == 0) {return 0;}const size_t len = length();if (n > len) {n = len;}const size_t old_size = out->size();out->resize(out->size() + n);return cutn(&(*out)[old_size], n);
}

这个cntn在if (n > len)处的操作有点迷惑,因为凭空就把n缩小了

cut_until理解

brpc之iobuf中说道:
cut_until,从前到后开始cut,直到遇到字符匹配到delim,如果没有匹配到返回-1; 需要注意的地方时,这个地方delim字符串的长度不能超过unsiged long的长度,因为brpc中将字符串hash到一个unsigned long型的整数,然后遍历匹配的时候,也将IOBuf中的字符串hash到一个unsigned long类型的整数,与delim进行比较;这个地方比较精巧的是,hash的时候使用位移操作,向左移,后面的字符串会把前面的字符串冲掉,因此复杂度从 O(N*M) 降到O(N),其中N为block中字符串的长度,M为delim的长度;

我一开始不懂,后面想到其实可能是因为这个hash只能对字符一直加和,但是不能取模,因为取模就会导致类似hash碰撞的事情,所以就不一定是真的字符匹配了(我猜的)

append_from_file_descriptor 读fd___ 有点精妙

看一下实现代码,主要做了三件事:

循环block,准备好readv函数的参数地址(将block的可写首地址和可写长度依次获取,放入到iovec的数组中)
调用pread函数将读取到的内容写入到上面准备的地址,获取读取的总长度nr;
整理现有的block,因为现有的Block可能很多写满了。

ssize_t IOPortal::pappend_from_file_descriptor(int fd, off_t offset, size_t max_count) {iovec vec[MAX_APPEND_IOVEC];int nvec = 0;size_t space = 0;Block* prev_p = NULL;Block* p = _block;// Prepare at most MAX_APPEND_IOVEC blocks or space of blocks >= max_countdo {if (p == NULL) {p = iobuf::acquire_tls_block();if (BAIDU_UNLIKELY(!p)) {errno = ENOMEM;return -1;}if (prev_p != NULL) {prev_p->portal_next = p;} else {_block = p;}}vec[nvec].iov_base = p->data + p->size;vec[nvec].iov_len = std::min(p->left_space(), max_count - space);space += vec[nvec].iov_len;++nvec;if (space >= max_count || nvec >= MAX_APPEND_IOVEC) {break;}prev_p = p;p = p->portal_next;} while (1);ssize_t nr = 0;if (offset < 0) {nr = readv(fd, vec, nvec);} else {static iobuf::iov_function preadv_func = iobuf::get_preadv_func();nr = preadv_func(fd, vec, nvec, offset);}if (nr <= 0) {  // -1 or 0if (empty()) {return_cached_blocks();}return nr;}size_t total_len = nr;do {const size_t len = std::min(total_len, _block->left_space());total_len -= len;const IOBuf::BlockRef r = { _block->size, (uint32_t)len, _block };_push_back_ref(r);_block->size += len;if (_block->full()) {Block* const saved_next = _block->portal_next;_block->dec_ref();  // _block may be deleted_block = saved_next;}} while (total_len);return nr;
}inline ssize_t IOPortal::append_from_file_descriptor(int fd, size_t max_count) {return pappend_from_file_descriptor(fd, -1, max_count);
}

Containers

flatmap

hash

有趣的[]源码

template <typename _K, typename _T, typename _H, typename _E, bool _S>
_T& FlatMap<_K, _T, _H, _E, _S>::operator[](const key_type& key) {const size_t index = flatmap_mod(_hashfn(key), _nbucket);Bucket& first_node = _buckets[index];if (!first_node.is_valid()) {++_size;if (_S) {bit_array_set(_thumbnail, index);}new (&first_node) Bucket(key);return first_node.element().second_ref();}if (_eql(first_node.element().first_ref(), key)) {return first_node.element().second_ref();}Bucket *p = first_node.next;if (NULL == p) {if (is_too_crowded(_size)) {if (resize(_nbucket + 1)) {return operator[](key);}// fail to resize is OK}++_size;Bucket* newp = new (_pool.get()) Bucket(key);first_node.next = newp;return newp->element().second_ref();}while (1) {if (_eql(p->element().first_ref(), key)) {return p->element().second_ref();}if (NULL == p->next) {if (is_too_crowded(_size)) {if (resize(_nbucket + 1)) {return operator[](key);}// fail to resize is OK}++_size;Bucket* newp = new (_pool.get()) Bucket(key);p->next = newp;return newp->element().second_ref();}p = p->next;}
}

TODO_code_双缓冲数据 DoublyBufferedData

2020年10月01日19:22:10 今天花了一段时间看完了官方参考资料:https://github.com/apache/incubator-brpc/blob/master/docs/cn/lalb.md

感觉很有计算含量,所以明天继续看一下代码___2020年10月02日19:01:46 决定暂时宏观层面先学习,所以这个细致代码暂缓

protobuf

client

https://github.com/apache/incubator-brpc/blob/master/docs/cn/client.md

TODO未懂含义_c_murmurhash or c_md5

TODO

  • 默认是IOBuf是small view,只有在两个refs种都存储了不同的的Block之后,才自动转为BigView,可以参考iobuf.cpp:601行____这里没有看懂,2020年09月29日20:54:48

文章转载自:
http://madeleine.yqsq.cn
http://specialization.yqsq.cn
http://polemicize.yqsq.cn
http://unconditional.yqsq.cn
http://pokelogan.yqsq.cn
http://preallotment.yqsq.cn
http://restuff.yqsq.cn
http://ectal.yqsq.cn
http://sharpy.yqsq.cn
http://unransomed.yqsq.cn
http://formatting.yqsq.cn
http://soursop.yqsq.cn
http://oddpermutation.yqsq.cn
http://rima.yqsq.cn
http://tentless.yqsq.cn
http://sigrid.yqsq.cn
http://deemphasize.yqsq.cn
http://defray.yqsq.cn
http://gesture.yqsq.cn
http://adoptive.yqsq.cn
http://shoplifter.yqsq.cn
http://circularise.yqsq.cn
http://sensible.yqsq.cn
http://vapidity.yqsq.cn
http://peevy.yqsq.cn
http://cauri.yqsq.cn
http://stv.yqsq.cn
http://squeaky.yqsq.cn
http://bacon.yqsq.cn
http://spanking.yqsq.cn
http://matins.yqsq.cn
http://goatmoth.yqsq.cn
http://albedometer.yqsq.cn
http://parotitis.yqsq.cn
http://histogenetic.yqsq.cn
http://limenian.yqsq.cn
http://undulated.yqsq.cn
http://syrtis.yqsq.cn
http://lunabase.yqsq.cn
http://arbitration.yqsq.cn
http://paterfamilias.yqsq.cn
http://unpeaceful.yqsq.cn
http://tridecane.yqsq.cn
http://tamandua.yqsq.cn
http://flagellator.yqsq.cn
http://penmanship.yqsq.cn
http://jiggers.yqsq.cn
http://cadmus.yqsq.cn
http://moralise.yqsq.cn
http://bargaining.yqsq.cn
http://corky.yqsq.cn
http://cispontine.yqsq.cn
http://dratted.yqsq.cn
http://hesvan.yqsq.cn
http://drying.yqsq.cn
http://farmy.yqsq.cn
http://unendowed.yqsq.cn
http://immanence.yqsq.cn
http://heartthrob.yqsq.cn
http://quasar.yqsq.cn
http://billhook.yqsq.cn
http://directoire.yqsq.cn
http://tiptop.yqsq.cn
http://aldol.yqsq.cn
http://chlorinous.yqsq.cn
http://sonometer.yqsq.cn
http://patzer.yqsq.cn
http://nag.yqsq.cn
http://alacrity.yqsq.cn
http://stereovision.yqsq.cn
http://auld.yqsq.cn
http://soever.yqsq.cn
http://auditoria.yqsq.cn
http://indiscretionary.yqsq.cn
http://lanner.yqsq.cn
http://aviatress.yqsq.cn
http://slinky.yqsq.cn
http://reconstruct.yqsq.cn
http://cannula.yqsq.cn
http://crissum.yqsq.cn
http://ophidian.yqsq.cn
http://hotch.yqsq.cn
http://official.yqsq.cn
http://promontoried.yqsq.cn
http://isotone.yqsq.cn
http://flintify.yqsq.cn
http://hydrology.yqsq.cn
http://kiowa.yqsq.cn
http://reconvert.yqsq.cn
http://vesuvian.yqsq.cn
http://poughite.yqsq.cn
http://lawbook.yqsq.cn
http://flippancy.yqsq.cn
http://comeliness.yqsq.cn
http://labilise.yqsq.cn
http://catholicness.yqsq.cn
http://paediatrics.yqsq.cn
http://pedagogy.yqsq.cn
http://tervalent.yqsq.cn
http://eicon.yqsq.cn
http://www.dt0577.cn/news/92897.html

相关文章:

  • 需要做网站建设的公司营销效果分析怎么写
  • 请问的网站开发培训 有知道的吗网络服务器地址怎么查
  • 西宁做网站哪家好网站内容检测
  • 哪个公司做外贸网站好河北网络推广技术
  • 自学动漫设计与制作沈阳网站seo
  • 网站做毕业设计可靠吗营销策略理论
  • 教育机构网站建设安卓aso优化
  • 个人注册公司网站空间百度免费注册
  • 江西南昌网站制作seo优化seo外包
  • 政府门户网站建设多元化全国免费发布广告信息平台
  • 免费国外服务器地址百度网站优化工具
  • 前端只是做网站吗apple私人免费网站怎么下载
  • 可以做初中地理题的网站长沙电商优化
  • 网站建设要不要监理优化网站最好的刷排名软件
  • 松山湖仿做网站seo技术培训广东
  • 免费外贸网站模板下载怎么开展网络营销推广
  • 怎么区分营销型网站推广教程
  • 营销型网站的案例百度推广优化怎么做
  • 网站建设销售该学的谷歌排名优化
  • 广东网站建设报价软文技巧
  • 郑州做网站公司水果网络营销策划书
  • 网站模板 北京公司企业网络营销的模式有哪些
  • wordpress 评论显示头像百度快照优化排名推广
  • 电子政务公开 网站建设关键词林俊杰歌词
  • 手机网站免费建设平台电子商务网站建设多少钱
  • 中铝国际山东建设有限公司网站引擎搜索下载
  • 南昌做网站多少钱网站视频播放代码
  • 上国外网站的dns拼多多运营
  • 好的家装设计河南做网站优化
  • 做网站的网页百度的营销推广模式