2018-09-03 阅读笔记
栏目: 数据库 · PostgreSQL · 发布时间: 6年前
内容简介:最近本风流才子重出江湖,不做朋友圈段子手,决定开始好好写文章了,大家好好看好好学吧!近半年来收集了一系列大厂技术 blog,断断续续在小本本上写了一些笔记,是时候整理一下了,争取日更。
最近本风流才子重出江湖,不做朋友圈段子手,决定开始好好写文章了,大家好好看好好学吧!
近半年来收集了一系列大厂技术 blog,断断续续在小本本上写了一些笔记,是时候整理一下了,争取日更。
PostgreSQL 调参
摘要:PostgreSQL 默认的配置并没有为应用做特殊的优化,然而有许多参数是有优化空间的,譬如:
-
shared_buffer
PostgreSQL 有两级缓存,自己的缓存 shared_buffer 和内核缓存。为了在什么烂机器上都能跑,shared_buffer 的默认值设的很小。调节 shared_buffer 会非常有效。推荐值是系统内存的 25%
-
wal_buffers
WAL = write ahead log,预写式日志,From Wiki :
在使用WAL的系统中,所有的修改在提交之前都要先写入log文件中。log文件中通常包括redo和undo信息。假设一个程序在执行某些操作的过程中机器掉电了。在重新启动时,程序可能需要知道当时执行的操作是成功了还是部分成功或者是失败了。如果使用了WAL,程序就可以检查log文件,并对突然掉电时计划执行的操作内容跟实际上执行的操作内容进行比较。在这个比较的基础上,程序就可以决定是撤销已做的操作还是继续完成已做的操作,或者是保持原样。
在这些日志被写入磁盘之前有这个 buffer,如果并发连接很多,可以调大
-
effective_cache_size
给 PostgreSQL 一个 disk caching 的估计,如果实际能使用的其实很大,然而估计值很小,那么性能就会受损失
-
work_mem
可以用来 in memory sort 的内存大小,如果 query 经常有 in memory sort,可以优化
-
maintenance_work_mem
预留来 VACUUM, RESTORE, CREATE INDEX, ADD FOREIGN KEY,ALTER TABLE 这种事的内存,调大可以优化这些任务
-
synchronous_commit
2 中提到了 WAL,synchronous_commit 控制 commit 之前是否等所有的操作写进了 WAL,是一个性能上的取舍。
-
checkpoint_timeout,checkpoint_completion_target
Issue 一个 checkpoint IO 代价很高,我们希望尽可能地 smooth,checkpoint_timeout 要尽量短,checkpoint_completion_target 如果我理解正确的话也要尽量短
用 React Native 开发 iOS 的得失
优势:
- 开发效率高,Debug 容易。和开发 web 一样,修改之后刷新即可见,不需要编译,Chrome 里 F12 即可调试
- 不需要太多 ios 知识,React 的知识可以迁移过来
- Flex box,一个新的 css module: https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Flexbox 很好用
劣势:
- React library 升级太快,好多东西 break 了
- 因为太新,好多本该内置的功能却需要第三方 library 的支持
- 一些动画的坑
总结:It's worth it(不亏)!
Twitch 对 gRPC 框架的改造
structured RPC 是好的,老鼠台的道友们之前想用 gRPC,后来发现有问题,原因如下:
- 缺少 HTTP 1.1 支持,gRPC 只支持 http2,但是现有很多的 load balancer 之类的只支持 http 1.1
- 生成的 runtime 过大,且有时候旧版 client 无法兼容新版 server,会 break 东西(我强烈怀疑他们是不是打开的方法不对)
- 生成的 runtime 过大,很难理解,有 bug 很难改
- gRPC 只支持 binary 的 payload,直接操作 binary 很不方便
最后老鼠台用 Golang 内置的支持 http 1.1 的 http server,json,以及 protobuf,重新写了一套系统:Twirp,实现了如下约定:
-
The URL is
/twirp/twitch.users.email.EmailBoss/UpdateEmail
. -
The HTTP Method is
POST
, because it’s alwaysPOST
. -
The body of the message should be a protobuf
UpdateEmailRequest
. - The body should be encoded either in binary or in JSON .
-
The request should have a Content-Type header set to either
application/protobuf
orapplication/json
, matching the encoding of the body. -
The response body will be a protobuf
UpdateEmailResponse
, encoded in the same way as the request. - If there is an error, it will be JSON encoded, including a message and a standardized error code.
感想:有时候一个技术是好的,但是由于 infrastructure 跟不上,可能给你你也用不了……
Uber 使用 NLP 帮助客服处理 ticket
随着 Uber 的发展,ticket 数量的增加,人工处理起来很困难了,Uber 实现了一套简单可行的 NLP 方法
- 对于每个用户的 ticket,使用 SVD 和 TF-IDF 提取特征
- 使用余弦相似性找出前 3 近似的见过的 ticket
- 将推荐结果返回给客服人员
感想:简单粗暴的办法,其实在工业界上可以满足一定的需求,并不需要炼丹
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
GUI设计禁忌2.0
Jeff Johnson / 盛海艳 等 / 机械工业出版社 / 2008 / 49.00元
本书描述软件开发人员在设计图形用户界面(GUI)时经常犯的“禁忌”,并提出避免这些错误的基本原则和理论依据。本书将GUI禁忌分为7种类型:GUI控件禁忌、导航禁忌、文字禁忌、图形设计和布局禁忌、交互禁忌、响应性禁忌以及管理禁忌,并分别进行详述。 本书编排独特,条理清晰,针对性极强,是不可多得的GUI设计优秀资源。本书适合软件开发人员、web站点设计人员、开发经理、用户界面设计人员等阅读。一起来看看 《GUI设计禁忌2.0》 这本书的介绍吧!