李笑来老师:
earth 脉动星球 9.8 90岁 纪录片
终生学习者得天下
读不懂 但是要读完 很强大的能力
有没有没人教你 你自己学会了
最大的进步就是 商业社会 商业社会 自重要的就是 市场 市场最重要的就是 交易 !交易的人就是商人!在商业社会 不做商人 就是怪物👹
节点数量 足够多 就一定会产生价值! lixiaolai@gmail.com
范冰 《 增长黑客 》
利用产品和技术的手段 增加用户。而不是钱! dropbox hotmail 邀请好友 增加扩容 .仅仅简单的几行代码! facebook 刚开始 新用户很多 流失也很大 发现加好友十个以上的 就会很活跃 .因为他有timeline !开始推出 你感兴趣的人!
增长黑客 是一个职业!靠着产品和技术的双重智能!在资产寒冬也能获得丰厚的薪资!我有兴趣!
理解: 创意营销 大而全渠道很贵!好的渠道找不到 !流量少 ! 垂直领域的渠道 很好找! 一个激活用户 可以做到4毛钱 !
初级:抢夺关键词 !高级 :甚至创造关键词!刷爆一个关键词 然后自己的app用这个关键词 !那么没能蹭的上 你的app 关键词!
airbnb 将用户上传的房源 发到竞争对手 的平台 !用户将获得更多的电话 !
这些都是技术的手段 撬动大公司的用户!
打车大战!上门刷机 竞争对手发的机器!
西少爷肉夹馍 :招聘网站 补助餐厅 !一个名片 一块钱买个肉夹薄!
假装收废品 送优惠卷 有付出 用户更易接受!行为心理学!
数据分析: 留存图 热力图 用户获取成本 用户终身价值 回收期 一定要快 不然就撑不过寒冬
自动化!机制化! workflow 定义执行流程 微信文章 复制文章 pinboard 收藏文章 并生成Rss 合适 mailchimp 检测到rss的邮件就会转发邮件 teambition :数据增长!主动推送收藏夹 !激励用户收藏! 创造自定义任务案板! 其实是 基于数据的方法论! 技术和ui很容易被抄袭 ! 街头智慧的黑客增长 !范冰 老师!
高可用服务器:
云api 发达之后 可已形成强大的 自动反应连!
老不老 看学习能力!
全栈程序员:把所有东西连起看
无论表现什么样 !所有语言 最终都会落到系统api上 !Nodejs 为什么那么快 !都是解决系统里的一个问题 ?
服务器QPS(每秒执行的Query)的性能瓶颈包括CPU,网络带宽,硬盘读写,内存问题,其中 Server端的瓶颈一般都是IO而不是计算。IO包括网络通信、文件系统读写等 Node.js是单进程单线程异步处理消息,没有多线程的资源占用和上下文切换,当有大规模的Http请求。Node.js 都是用单线程的事件驱动搞定的,也就是说 业务层就用单一线程处理,要注意的是,单线程也是可以实现异步的,依靠消息通知机制就行。而到底层操作IO时,Node.js采用的是异步IO ,避免了大量IO操作block系统的可能。真正有效的不是多线程而是异步!Node.js就是把所有的IO都统一到异步模型中,不在主进程使用IO,要异步使用IO,这就是Node.js的基本思想。
架构师 是给机会 做过来到! 一定要有机会 和经验!
如果技术 架构 服务器 允许出错 那么就不要 预防性管理 过早优化 其实可以亡羊补牢!
公司是要有商业目标的!
docker 特别适用私有云!
微服务!serverless !像游戏系统一样 都在设备本地运算!
微服务:
微服务是由以单一应用程序构成的小服务,自己拥有自己的行程与轻量化处理,服务依业务功能设计,以全自动的方式部署,与其他服务使用 HTTP API 通讯。同时服务会使用最小的规模的集中管理 (例如 Docker) 能力,服务可以用不同的编程语言与数据库等元件实作 serverless: serverless并不是不需要服务?而是你无需关注服务。举个例子,现在你开发一个应用,需要关心缓存、mq、web容器,serverless环境下,你只需要关注代码层面的东西。如果想用mq,只需调用函数解决,无需关注mq是否能承受压力,理论上,无上限,至于什么时候需要扩展?成本如何控制?云会为你做好一切。
Amazon发布lambda
一种可以直接根据时间来运行用户代码的计算服务。说是更深度的PaaS也不为过,你不需要关心底层的任何存储和计算资源。 lambda能做到的,你只需要关心业务逻辑,无需关注架构上的细节,可以非常容易的实现扩缩容。节省钱。根据函数调用次数收费,每月前 100 万个请求免费
啥是云?
将服务器环境统一搭建,使其高效稳定,并面向给大众开放服务,承载各种开放的Api。
paas in container?
PAAS平台即(Platform-as-a-Service:平台即服务),把应用服务的运行和开发环境作为一种服务提供的商业模式 PAAS平台通过网络进行程序提供的服务称之为SaaS(Software as a Service),而云计算时代相应的服务器平台或者开发环境作为服务进行提供就成为了 PaaS(Platform as a Service)。
jenkins
Jenkins 是一个可扩展的持续集成引擎 也就是自动化部署 ,后台用于开发测试发包 等等一系列的功能插件的集成环境,具体来说: 1,开发者同步代码到源码仓库 2,会为每一个项目创建工作区,并将代码放到那里,执行构建过程 打包。 3.打包完成后 会进行测试,会触发Email,Rss等等给相关当事人
从代码合并 到 测试 到部署 各个生成 正式环境 都是自动的 服务器 更侧重检测。api调用 流量 错误数会使线上服务自动调整 高峰流量过来 自动容器扩容 服务自动降级等
DevOps?
DevOps(Development和Operations的组合词)是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。 个人理解就是:这种文化 注重的是后台开发人员和运维人员密切配合,以一种自动化(开发 上线 环境变更 等等)的方式减小之间的沟通成本。
内部调用都用RPC方式?
远程过程调用(英语:Remote Procedure Call,缩写为 RPC)是一个计算机通信协议。该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员无需额外地为这个交互作用编程 Redis 数据库 优点 单线程高性能!小数据 的缓存和持久化 eg:排行榜单 不适用场景: 大容量时redis有问题 可能达到50G的内存
数据库分主从 同步一定会有延迟问题 主从切换15s 机房down机则可能15min
在服务器上的数据库 有如下特点功能: 自动扩容 升级 备份 拆分 表变更 日志收集 监控 优化诊断。 在线上记录SQL收集并处理 系统发出给出建议变换SQL策略 此生态集群 有接受任务单 自动搭建集群的能力
数据库加索引index 是啥?
1、首先要明白无名无实莫要用索引:因为数据中的记录很多,为了方便我们查找,提高查询的效率;
2、索引的原理:对要查询的字段建立索引其实就是把该字段按照一定的方式排序;建立的索引只对该字段有用,如果查询的字段改变,那么这个索引也就无效了,比如图书馆的书是按照书名的第一个字母排序的,那么你想要找作者叫张三的就不能用改索引了;还有就是如果索引太多会降低查询的速度
3、索引是优缺点: 首先明白为什么索引会增加速度,DB在执行一条Sql语句的时候,默认的方式是根据搜索条件进行全表扫描,遇到匹配条件的就加入搜索结果集合。如果我们对某一字段增加索引,查询时就会先去索引列表中一次定位到特定值的行数,大大减少遍历匹配的行数,所以能明显增加查询的速度。那么在任何时候都应该加索引么?这里有几个反例:1、如果每次都需要取到所有表记录,无论如何都必须进行全表扫描了,那么是否加索引也没有意义了。2、对非唯一的字段,例如“性别”这种大量重复值的字段,增加索引也没有什么意义。3、对于记录比较少的表,增加索引不会带来速度的优化反而浪费了存储空间,因为索引是需要存储空间的,而且有个致命缺点是对于update/insert/delete的每次执行,字段的索引都必须重新计算更新。所以并不是任何情况下都改建立索引的 高可用是方案!
中间件在服务器的数据库扮演什么角色?
数据库 事务?
事务是由相关操作构成的一个完整的操作单元。两次连续成功的COMMIT或ROLLBACK之间的操作,称为一个事务。在一个事务内,数据的修改一起提交或撤销,如果发生故障或系统错误,整个事务也会自动撤销。
docker 使服务器易扩展 容器数量 10000 为啥会那么多?
编程范式
静态语言 安全 但是 局限类型 需要抽象和隔离
C++解决了C的最大问题 范型问题 !应该只关注算法 不需要太关注类型
不想写注释 就要拆分小函数
函数式强调动词 面向对象强调名词
业务逻辑 和控制逻辑 揉在一起 是复杂的原因
泛型编程 汉书编程都是解决的控制逻辑的结偶
lambda 表达式
这表达式可以省去函数名表达匿名函数 正常: a =[1, 2, 3]r =[]
for each in a: r.append(each+1) lambda: map( lambda x:x + 1,[1, 2, 3])
DSL编程:
有人将DSL编程称之为声明式编程。 DSL是在模型之上建立的一种更加灵活的对 模型化的理解和使用方式。 语义模型是DSL的核心 服务器的熔断 是啥? 就类似家里的保险丝一样的作用,当异常情况超过预期时 比如请求错误过多。流量过大,等等。就会启用熔断机制,关掉一些问题服务 以保证系统的正常运行。
GC是啥?
GC是自动垃圾回收机制 手动管理: C/C++ 计数管理:COM/Objective C 自动管理:.NET Java PHP GO GC是如何工作的? 1.标记 :找出所有不为0的live的对象实例 2.计划和清理:遍历存活的对象到内存链中 3.引用更新和压缩:将所有引用的地址进行更新,移动存活的对象,减少内存碎片
代码格式化!风格固定?
自我总结
函数式编程:高阶数据算法 可以讲任务分成小块儿 利用多核运算 性能快 线程安全 因为都是值类型 输入一样输出就一样 面向对象编程:封装,继承,多态 (其实这些都是Type的特性,class只是实现Type的一个方法) 面向协议编程:可定义属性,可组合,可继承,可扩展,支持泛型,支持类/结构体/枚举 面向对象编程和面向协议编程最明显的区别在于程序设计过程中对数据类型的抽取(抽象)上,面向对象编程使用类和继承的手段,数据类型是引用类型 面向协议编程使用的是遵守协议的手段,数据类型是值类型(Swift中的结构体或枚举)
强弱 :是否容忍转换 动静 :编译的时候是否知道每个变量的类型
强类型:偏向于不容忍隐式类型转换。譬如说haskell的int就不能变成double
弱类型:偏向于容忍隐式类型转换。譬如说C语言的int可以变成double
静态类型:编译的时候就知道每一个变量的类型,因为类型错误而不能做的事情是语法错误。
动态类型:编译的时候不知道每一个变量的类型,因为类型错误而不能做的事情是运行时错误。譬如说你不能对一个数字a写a[10]当数组用。