先研究随机过程
然后你就会想先尝试证明股票变化不是随机过程
然后你就会发现它 tm 还真就是随机过程
然后你就会放弃这个思路
建议别听别人的建议。。
大家又不明白你的真实情况
众所周知学霸都是每天打游戏泡妞游戏上课看小说还能门门课年级第一的
如果你能做到那谁拦着你“别太早学” 啊?
越是顶尖的人群你越是会发现他们都“有故事”
最后小圈子里一交流:哎,你也初中就开始玩这个啊,哎我也是哎
他们聊起来的时候都是轻描淡写的,如果你也能轻描淡写地学完你感兴趣的东西还能同时把 99%的人秒成渣,那赶紧啊
高中了,你应该对自己所处的阶层有所感觉了。 你会发现越往后走越不会脱离你所在的阶层。在很早就已经决定了
有没有想过华为祖传了 20 年的交换机代码基于什么架构和系统?
一度是 vxworks
一度哦
看了 lz 每一个回复
提到 B 站只有追加附言的一句话
lz 似乎完全没有意识到市面上的视频网站,只有 B 站的商业模式是跟其他家都不一样的,连 ytb 都并不特立独行。
贴片广告是个落后且很容易失败的商业模式:
1. 你的视频站营收是建立在广告之上的
2. 广告营收是建立在用独有版权把用户圈起来强迫他们付费这样的模式之上的。
对于用户而言,付费是强迫行为,从一开始用户就是没有任何意愿的,要么给钱要么滚
3. 每当独有内容壁垒有一丁点泄露,很快就要面临大规模用户流失和广告收入下降,这时候你有巩固壁垒一种策略可选,那么对于用户的压力会更高,下次壁垒有漏洞时流失就会更快,恶性循环
然而目前市面上还存着另一种商业模式:
1. 对于非独占内容,免费和付费用户没有任何体验区别,或者非常小,小到付费用户多等一周而已
2. 对于独占内容,仅付费用户专享
3. 不设贴片广告,甚至不靠广告营收获利
恩。。其实也不太对,B 站并不是一个视频站……拿它来比有点降维打击的味道
我就是这么干的,host 是 mac,写 linux 的代码,把代码挂进去在 docker 里 make,调试还能用 clion
哎。。。
为什么看起来好多人都不明白异常处理是干啥用的
建议学习一下 gcc 异常处理的实现方式感受一下
从程序执行流本身来看,异常的意义在于回滚调用栈
回滚调用栈。
如果你不确定是不是该上异常处理,那就判断一下此时是不是想把调用栈回滚到某个状态前。一个用异常处理的绝佳例子是 visitor 设计模式,当递归 visit 到某一个节点发生错误时,显然把 error code 穿过层层递归跟等于 nil 的 result 一起传回来是个非常蠢的做法(你甚至得给每一种节点类型的 visit 函数都写一遍 if err return ! shit !)
从业务逻辑上来看,异常处理机制是用来统一处理某封闭模块在各个阶段产生的同类错误用的
比如游戏读图,在每个关卡我要读不同的地图文件,文件读上来以后要解析数据结构,有可能读图失败,有可能结构不对,出错了以后我想让游戏回退到选图界面,那我肯定没理由在写游戏逻辑的地方还判断 loadNextStage()成功了没有,抛出异常可以让更上层的逻辑来处理同时打断游戏逻辑,其实还是对应回调用栈回滚的本质
再回头看为什么指南不建议你写 try except print 是不是理解一些了
数学
约束
响应式
我觉得即使你完全不会函数式编程也该现场入门一下。。
每个点类存储一个变换函数,对于自变量来说,这个函数是设置时的闭包:
a=A(1,2)
得
a.x==lambda :1
a.y==lambda :2
对于因变量来说,这个函数是变换函数
c=a+b
得
c.x==lambda:a.x()+b.x()
c.y==lambda:a.y()+b.y()
当要取得 c 的值时调用 c.x()
=>(lambda:a.x()+b.x())()
=>(lambda:(lambda:1)()+(lambda:xb)())()
=>(lambda:1+xb)()
这不是比你递归通知约束对象计算新值要容易多了
至于怎么实现,约束方法本身已经是实现方法了,品一品
你看到的都是 N 年经验的社招面经
你见过应届写的面经吗?
应届是不是都不需要写代码?
你品一品
(诶?!那应届生都问啥?)
因果关系是这样的
人们并不知道光速不变是不是对的
但是如果假设有绝对时空,相对光做运动使用伽利略变换时,发现了矛盾
并且,如果假设有绝对时空,那么光在绝对静止的介质中运动时,应该能测量出某些性质
然而并没有测出来这个性质
所以绝对时空很可能是错的,光速能用伽利略变换可能也是错的
那好了,只能假设另一种情况了,假设光在任何参考系中速度都不变,以光速运动时观察光它还能相对你自己以光速运动
这个假设看起来匪夷所思,但也能推导出一系列结论,然后人们假设这些结论是对的,去做了一些实验观测,发现居然完美符合
那没办法,不信也不行,实验已经证明了
补充一下
copy 的语境,被 copy 的东西就是原来的,完全没变,而且 copy 的时候并不一定产生了结果( copy - paste )
duplicate 后,你一定得到了两份东西,是有结果的,而且这两份东西中是否一定有一份是原来的东西,并不一定,只是长得一样
比如 file copied,此时你并不预期 copy 成了哪个实体,也许会写到后面想起来再说的什么路径里去
但 file dupplicated 此时已经有两个一样的文件同时存在
把某个数据 duplicate 一下发往两个地方,很可能两个副本都 不是之前那份数据的引用
把某个数据 copy 到新地方,那肯定有一个是旧的引用本身
call invoke apply 区分得还是比较清楚的,直接调用叫 call,委托调用叫 invoke,把固定好的变换作用在不同对象上叫 apply
-or/-er 和 -ee 是主被动关系,这个不应该搞混才对
cache 有一个建议译名叫“快取”,很好地体现了这个词的原本定义
safety 和 security 并不好直接解释词义,开车这个语境比较容易分辨区别
copy 创造一个跟以前一样的实体
clone copy to new and likely for modifying
dupplicate 把原来的实体变成两个
call 执行任意形式的子过程并期待返回
invoke 代理给某个东西执行动作然后期待代理给我返回
apply 给一个对象应用一个变换器,尤其是函数。因此 apply 的语境相当函数式
iterator 用来访问集合的东西
-ee 被遍历的东西
buffer 存任意中间数据的地方
cache 用于加快访问而特意放置中间数据的地方
safety 开车撞车死不了
security 开车不会被劫持方向盘
还有一种方式是直接把 ip 地址算成线性空间,每个区间有左右界,合并的时候先按左界排序,然后判断
下一个区间的左界有没有落在前一个区间中,如果在,那么区间右界设成下一个区间右界,如果否,那么第一个区间已处理完毕,可以处理 23 区间
首先不考虑域名和 url
我当时的实现大概这样
一个 - 指定的范围可以解析成若干个 cidr 或 ip
那现在只需要考虑 cidr 一种情况( ip 可以看做 /32 )
用二叉 trie 来存这些 cidr,在深度为 N 的节点有一个 cidr 对象表示这个 cidr 是 /N
如果某个节点左右子树都存在则递归向上合并节点
插入过程中途遇到某个节点说明这节点已经包含了待插入地址,跳过
然后就没有去重这一说了,匹配就是走这个 trie 跟插入流程几乎一样的
当时没有去重合并完还要导出合并结果的需求