首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

LeetCode-8-String to Integer (atoi)

讲字符串转化为整型。当然过程很简单,但是需要考虑的乱七八糟的情况很多,空格和正负号之类的。提交了一百次,终于过了,但是看到别人的代码还是很气呀,还是得多写才行,但是起码写的慢慢有感觉了是吧。 总体思路基本都是差不多的: 1.循环字符串,从第一个开始不为空的字符开始判断,如果是正负号,则只能有一个正负号,进行标记,数字开始。 2.数字开始之后,出现空格或者字母,返回已经生成的整型。 3.当数字大于最大的整数或者小于最小的整数的时候,应该将其置为最大或者最小。所以这里应该将结果定义为long long int ,不然当加到INT_MAX的时候,会自动+1,置为INT_MIN,应该避免这样的情况。 这里贴一下自己改的乱七八糟的代码吧,实在很气呀。

03

《design data-intensive application》阅读笔记之一

于2017年末得知了一本神书《design data-intensive application》,读完即可惜,如果早拿到这本书,就不会纠结于很多分布式系统和数据库的书了。因为已通读完全书,觉得如果不写 一些东西,确实可惜了。希望中文版早日出来吧。 如果我们要设计一个data system,有什么是我们需要考虑的呢? 首先,应该是存储数据的database。且不论这些怎么存储,假设是一个txt文档。当这个txt文档数据量很小时,一眼就能看出我们需要的数据在哪了。当数据量随之增长时,眼睛就不够用了, 我们需要区分经常读取的数据(hot spot)和不怎么读取的数据,这部分经常读的数据,不可能存放在很慢的磁盘上了,每次读取都去需要全量加载,而是直接缓存放入内存,这就是cache。那么 突发紧急情况,我们又想读取那些老旧的数据,这部分数据肯定不会是存放在内存里,那么这时候我们就需要一个index去filter or search by keyword。除此之外,我们不会局限于这部分数据 我们还需要和其他的process交流,那么所谓的batch process和stream process应运而生。于是一个简单的data system诞生了。 可能我们在app上,我们会觉得我们只是按下一个按钮,但是仅仅是一个简单的data system,就已经如此让人惊叹了。对的,这仅仅只是一个简单的抽象,实际上,我们需要考虑如何保证 client看到的cache和stored data是一致的?如何确保某一台机器坏了,系统还能正常用?好了,你的boss突然想撒钱了,贪小便宜的client会使得你的系统load不断增长,这时你该如何保证? 不仅如此,client可不能忍受打开网页相应的缓慢,performance可不能放弃了。当然,还有各种各样神奇的问题在等着你。

02

21天自制chromium -- cc篇

好吧,我承认有点标题党了。 不过从这篇开始, 我们来点干货,如何从blink打造一个可以实用的浏览器。 chromium从零几年搞到现在,已经完全变成一个无所不包的庞然大物。 如果你只是想要一个能浏览网页的组件,方便嵌入到自己的程序里,或者想用网页来做界面--例如QQ音乐,网易云音乐那样, chromium的那堆多进程、mojo通信、Chrome Apps 框架、Aura Shell、增量升级系统、Chrome Extensions 、headless模式、P2P 通信库,native_client、pdf、ppapi、沙盒机制等等一堆乱七八糟你听都没听过的东西都不会需要。然而只要用了chromium的内核,这堆东西除了占用系统资源外,你还不得不都打包带上。 这时候你就会有个强烈的想法,我不需要这堆乱七八糟的功能,只要能浏览大部分网页的排版渲染组件可以么。 答案是肯定的。webkit内核就是为此而生。 但这里有个问题,chromium虽然当年是使用webkit内核,但自从和苹果分道扬镳后,把webkit改名成blink不说,代码和结构完全是面目全非,而且最重要的是blink已经不是像webkit那样是一个独立的组件了,而是chromium那堆几百个第三方库里一个小小的组件,所有外部设施都依赖于chromium的其他组件了。 我们来看看blink目前需要依赖哪些组件: 1,cc层(chromium 合成层,实现网页绘制并贴到屏幕上等操作。这个是最麻烦的,以后专门开一篇来讲如何自制) 2,base库(chromium基础库,类似字符串操作等一系列c++基础库) 3,各种和操作系统打交道的接口,例如菜单、文件读写、窗口操作等。这堆东西可以认为是要实现third_party/WebKit/public/platform/Platform.h里的一系列虚函数。 4,如果你不是打算卖到清真地区,通常icu你也不会想要。这是个占用体积很大的毒瘤,一个数据文件就10几M,作为轻量级内核,你肯定不想带。 5,网络层。 6,v8(js引擎) 7,skia(底层绘图库) 那我们如何在尽量少的使用chromium代码基础上,实现上诉一堆功能和组件呢? 这是目前我的解决方案: 1,cc层:我放弃了原版chromium cc层,自己完全重写了一遍。这个工作量相当巨大,如果你不是和我一样这么闲,建议直接使用原版cc。 2,base库:在chromium四十几版的时候,blink几乎不依赖base。然而高版本把wtf库里的大量实现,直接使用base库。所以如果你是从高版本blink开始撸,可以直接扣取低版本blink里的wtf来实现base相关依赖。此处工作量也甚大。 3,各种和操作系统打交道的接口:这块其实没有难度,就是有着巨大的工作量。一个个补齐就好。 4,icu:直接使用系统相关的接口。例如文字编码转换之类的,windouws就有现成的api。其他高级icu api例如断行断句,如果你只打算运行在中英文地区,那自己实现也很简单。 只有阿拉伯文、天成文、藏文这些小众语言那需要那么复杂的规则。 5,网络层:直接用webkit里的现成代码吧。 6,v8:直接使用chromium原始代码即可。毕竟这玩意不依赖其他任何组件。 7,skia:直接使用chromium原始代码即可。毕竟这玩意不依赖其他任何组件。 说到这里,大家肯定有个疑问:既然这么多都用webkit,那为啥我们直接拿webkit过来不就行了。 其实是可以的。webkit发展到今天,已经完全和chromium分开发展了(当年有一阵子谷歌的人也一直在给webkit提代码,后面苹果把他们都踢走了)。而且webkit就是个完整内核,你用来做轻量级组件正合适。但我有几个原因还是放弃了: 1,webkit对标准的支持还是有点偏差。例如web组件标准,css gird等等。 2,webkit的web inspect做的很烂,完全没blink好用。 3,webkit现在也很大了,我编译出来不算icu,也有26M多。作为一个有追求的程序员,我希望这个大小是10M左右。 4,最重要的,webkit的js引擎是javascriptcore。这样实现的组件就无法兼容市面上那堆v8造出来的轮子。例如electron、nwjs、nodejs都是用v8。 5,还有个小点就是chromium更新非常快,跟着谷歌大佬走感觉更有保障些,尤其是碰到各种莫名其妙的bug,还可以查chromium的更新记录。

04

数据科学家/统计学家应该养成哪些好习惯?

1、永远不要轻信自己的分析结果,多用业务和常识去检验。 很多时候,我们的分析都是含有一些潜在的假设,而在分析过程中被忽略。比如最经典的案例是在1948年,盖洛普错误地预测了杜威能击败杜鲁门而当选总统,原因是多方面的,但是抽样中的潜在不平均是不可否认的!再比如有个人分析结果得到刚毕业的专科的平均薪资比同专业的本科要高,就找一堆理由来说明这个结论。但是领导说这个不符合常识,打回去重新分析。之后发现是因为样本男女比例不均衡导致的。所以,我们不要轻信自己的分析结果,尤其是不能给自己的分析找正向的理由!因为只有你找理

04

【数据科学】数据科学家/统计学家应该养成哪些好习惯

永远不要轻信自己的分析结果,多用业务和常识去检验 阅读人文:数据科学不仅是一门科学,也是一门艺术 了解行业信息和业务信息 好奇心与多沟通 多实践与多走一步 1、永远不要轻信自己的分析结果,多用业务和常识去检验 很多时候,我们的分析都是含有一些潜在的假设,而在分析过程中被忽略。比如最经典的案例是在1948年,盖洛普错误地预测了杜威能击败杜鲁门而当选总统,原因是多方面的,但是抽样中的潜在不平均是不可否认的!再比如有个人分析结果得到刚毕业的专科的平均薪资比同专业的本科要高,就找一堆理由来说明这个结论。但是领导说

05
领券