自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

菜皮日记

后端 Python PHP Java Go

  • 博客(69)
  • 收藏
  • 关注

原创 通过单例探究 Go 可见性与内存屏障

内存屏障的作用是确保在屏障之前的所有内存操作如读写,在屏障之后的操作开始之前完成,并且对所有处理器可见。这些指令能够直接影响处理器如何处理接下来的内存操作,确保在内存屏障指令之前的所有操作都完成,并且结果对所有处理器核心可见,然后才执行屏障之后的操作。这些原子操作在底层使用处理器提供的原子指令,这些指令的实现也隐含了必要的内存屏障语义。编译器在编译过程中负责正确地安排内存访问指令和插入必要的内存屏障指令,编译器会分析代码并会根据不同的底层环境,在必要的位置插入内存屏障指令,来保证内存操作的顺序和可见性。

2023-12-24 18:45:56 1036

原创 从 Go channel 源码中理解发送方和接收方是如何相互阻塞等待的

这样一来就能够理解前面的两个原则了,在一个无缓冲的 channel 中,无论是 sender 先执行,还是 receiver 先执行,都会因为找不到对方,并且没有 buf 空间的情况下,将自己加入到等待队列;一文中,介绍了在 Go 并发编程下数据可见性问题,可见性是并发编程中一个重要概念,指的是在哪些条件下,可以保证一个线程中读取某个变量时,可以观察到另一个线程对该变量的写入后的值,Go 语言中的 goroutine 也适用。意思是:在一个 channel 上的发送操作应该发生在对应的接收操作完成之前。

2023-12-16 13:19:57 99 1

原创 始于数据,终于数据 - 读《数据密集型应用系统设计》

本书将数据密集型应用所面临的问题和挑战做了全面的解析,并且列举了常见的应对方案,在覆盖了广度的同时,对于问题和挑战背后的本质原理也有一定深度的探讨,个人认为本书称得上是程序员必读书目之一,也属于个人 2021 年度书单中技术类书籍的最佳。第二部分,五六七八九章主要讲多机环境下的数据存储和检索。之所以要在多机上分布数据主要由于扩展性、容错和高可用性、延迟考虑三大原因。第一部分、一二三四章主要讲单机环境下的数据系统设计问题。

2023-12-15 19:31:11 90

原创 由 Go 结构体指针引发的值传递的思考

这种设计选择是出于安全性和一致性的考虑。最后一个问题,既然函数传递和容器类结构维护存取的都是副本,那么如果反复传递一些大对象,就会频繁复制对象,导致性能下降,所以传递对象时,应该尽量传递对象的指针,因为即使复制指针,指针类型长度也在可控范围内,如在 32 位机上占用 4 字节,在 64 位机上占用 8 字节。这也证明了有种说法称 Go 支持引用传递的说法是不严谨的,这种说法认为,通过传递指针,可以实现在函数内部修改对象的效果,所以 Go 支持引用传递,而事实上这里面依旧是值传递,只不过复制的是指针本身。

2023-12-11 09:47:59 68

原创 2021 年书单

覆盖了 Java 开发的方方面面,从计算机的 0 1 二进制是怎么回事,到计算机硬件基础,再到 Java 并发和虚拟机,以及 Web 开发中的一些工程类的问题都有涉及,但都是一带而过,没有深入。:本书将数据密集型应用所面临的问题和挑战做了全面的解析,并且列举了常见的应对方案,在覆盖了广度的同时,对于问题和挑战背后的本质原理也有一定深度的探讨,本书称得上是程序员必读书目之一,也属于个人本年度书单中技术类书籍的最佳。:消费者用品类来思考,用品牌来表达,品牌源于新品类的分化,用品牌占据用户心智中的品类格子。

2023-12-10 16:08:32 29

原创 科学技术是第一生产力 - 读《科学:无尽的前沿》

科学的进步一旦应用于实践,就意味着更多的岗位、更高的工资、更短的劳作、更丰富的农作物,人们可以有更多的闲暇用于娱乐、学习,可以抛弃烦琐的生活,远离长久以来的劳苦。在你的领导下,科学研究与发展办公室进行了一项独特的团队合作实验,你们协调科学研究,并将现有的科学知识应用于解决战争中最为重要的技术问题。二战即将结束时,罗斯福总统的科技顾问范内瓦·布什在《科学:无尽的前沿》中提出要重视不以应用为目的的基础研究,面向长远,逐步摆脱了对欧洲基础科学研究的依赖,从此,美国基础科学研究远远领跑全球,形成若干重大突破。

2023-12-10 16:03:47 91

原创 开源文化的肇始 - 读《Unix 传奇历史与回顾》

有个叫比尔·乔伊(Bill Joy)的研究生(图6-2)修改 Unix 的本地版本,添加了一些自己的程序,包括 vi 文本编辑器(现在仍然是最流行的 Unix 编辑器之一)和 csh(C 语言 shell)。到了 1968 年,尽管对能用上它的少数人而言,Multics 算是一个优秀的计算环境,但在贝尔实验室看来,作为一套信息处理工具,它已无法实现以合理的代价为实验室提供计算服务的目标,并且它太贵了。PDP-7 于 1964 年推出,但计算机领域演进太快,到了 1969 年,它已经过时。

2023-12-10 16:01:06 41

原创 效用组合、用户需求与交易成本 - 读《俞军产品方法论》

卖同样一批橘子,可能卖的是“低价”,也可能卖的是“有机”“安全”,又或者是卖“甜度”、卖“水分”、卖“产地”、卖“保障”、卖“新鲜”、卖“方便”、卖“包装”、卖“归属”、卖“爱心”、卖“反季节”的稀缺性等等,卖的其实是效用(或效用组合),而不是具有相近物理属性的橘子本身。还有历史上几次工业革命实际上都是由于新技术的出现降低了过去的生产成本,提高了生产效率,降本增效的结果肯定是普惠的,商品价格趋向于平价,服务的受众也会扩大,这是降本增效使得边际成本下降的必然。可持续其实是靠实践验证的,即追求长期利益最大化。

2023-09-16 09:53:16 85

原创 占据用户心智是品牌的终极战场 - 读《品牌的起源》

本书重新定义了品牌以及品牌创建的哲学和方法,使品牌创建的过程成为一门科学、成为商业的一部分,而非灵光一现的艺术或者虚无缥缈的品牌宗教。品类一旦消失,品牌也将消亡:企业创建品牌的正道是把握分化趋势,创新品类创建新品牌,发展品类,壮大品牌,以多品牌驾御多品类。但除非新品类是由于新技术出现而产生的品类尚未开发出来时的真空期,成功的机会或许高一些,否则就有可能是已被验证过确实没有实际需求,举个极端的例子比如消费者心智中有运动时喝的饮料,有聚会时喝的饮料,但没有上厕所时喝的饮料,开发这样一个品类应该胜算不大……

2023-09-12 00:14:45 119

原创 做难而正确的事 - 读《详谈:左晖》

贝壳找房做的是平台,其他房产中介可以接入到贝壳上来,但是贝壳有一套从链家衍生出来的管理方法和平台规范,比如公开房屋信息,24 秒钟响应顾客的留言等等,很多中介一开始非常不适应,也非常不认同,阻力非常大。这也是做难而正确的事的一个小的体现。只要钱够厚,只要不死就还有机会,这一点跟《创新者的窘境》书中提到的观点类似,尝试创新成功率是很低的,记得留一部分资源,做第二次、第三次尝试。贝壳从传统的房产中介,赚中介费的一锤子买卖的角色,转变成陪伴客户从选房、买卖、居住的整体服务,格局更大,想象空间更大,机会也更多了。

2023-09-10 16:01:48 118

原创 为什么颠覆式创新往往发生在新兴企业 - 读《创新者的窘境》

作者克莱顿·克里斯坦森(Clayton M. Christensen) 出生于美国盐湖城,1975 年在杨百翰大学以优异表现获得经济学荣誉学士,1979 年在哈佛商学院以优异成绩获得 MBA 学位,1992 年重返哈佛商学院获得 DBA 学位之后并任哈佛商学院教授,任职于哈佛商学院总经理及技术与运营管理部 1995 年度麦肯锡奖得主。克里斯坦森是"颠覆性技术"这一理念的首创者。他的研究和教学领域集中在新产品和技术开发管理以及如何为新技术开拓 市场等方面。代表作为《创新者的窘境》和《创新者的解答》。书中通过

2023-09-10 16:00:28 137

原创 垃圾回收之Python PHP Java Go对比

GC root 指的是一组根对象 root object,这些对象被认为是内存中的起始点,它们直接或间接地引用了应用程序中的其他对象,因此,从这组根对象出发,可以通过一系列的引用关系遍历到所有可达的对象,而不可达的对象将被标记为垃圾并被回收。这样就会导致当再次遍历灰色对象集合时,将对象2移动到黑色集合之后,由于对象2不再持有对象3的引用,所以不会再考察对象3,同时由于对象4已经是黑色的考察过的对象,也不会再次考察对象3,结果就是对象3被记为白色,最终被错误地回收掉。

2023-09-09 16:35:30 327

原创 他是个希望让大家都快乐的人 - 读《岩田先生》

本书取材于 HOBO 日刊 ITOI 新闻所刊载的岩田聪先生的大量访谈,以及任天堂官网上登出的《向社长询问》栏目,将“岩田先生的话”按照时间、主题的顺序,重新编排,汇集成册。岩田聪传奇的一生,他的经历与经验,价值观与哲学,经营理念,以及对于创意的思考,尽在这本书中。这也是任天堂的发展理念,不追求机器性能,而更倾向于开发合家欢类的游戏,让玩家都能参与进来,体验到游戏之内的乐趣和游戏之外亲友们的温馨。他本来就具有实力,再加上热心于学习,能力越来越强,却始终保持谦虚的态度,支持着周围的人,提携大家共同成长。

2023-09-09 16:14:56 56

原创 HTTP 演进史

HTTP 的发展要追溯到万维网的发明,1989 年,当时在 CERN 工作的 Tim Berners-Lee 博士写了一份关于建立一个通过网络传输超文本系统的报告。这个系统起初被命名为 Mesh,在随后的 1990 年项目实施期间被更名为万维网(World Wide Web)。万维网在现有的 TCP 和 IP 协议基础之上建立,由四个部分组成:一个用来表示超文本文档的文本格式,超文本标记语言(HTML)。一个用来交换超文本文档的简单协议,超文本传输协议(HTTP)。一个显示(以及编辑)超文本

2023-09-09 16:12:22 32

原创 Go 中普通指针、unsafe.Pointer 与 uintptr 之间的关系和指针运算

因为在做指针运算时是比较抽象的,具体偏移了多少之后指向到了哪里是非常不直观的,可能已经偏离了设想中的位置而没有发现,运行起来就会出现错误。,超出数组大小多循环了一次,实际上数组已经越界,而 C 语言的数组实际上就是指针,C 运行时认为这是在指针运算,所以不会报错,导致数组访问到了其他内存地址,最终得到了一个错误结果。uintptr 是一个整型,可理解为是将内存地址转换成了一个整数,既然是一个整数,就可以对其做数值计算,实现指针地址的加减,也就是地址偏移,类似跟 C 语言中一样的效果。

2023-09-09 16:10:23 159

原创 Go 中几种常见的编程模式

上面代码这就是所谓的控制逻辑依赖业务逻辑,或者说控制逻辑被耦合进了业务逻辑之中。undo 是控制逻辑,IntSet 是业务逻辑,IntSet 在处理原本整数数据相关的事,现在却要关心函数调用次序的事,而 undo 控制逻辑嵌入到了 IntSet 中,只能服务于 IntSet,而 undo 原本是一个通用逻辑,可能别的数据结构也会用到 undo 功能。在业务逻辑代码中耦合进控制逻辑,会导致在编写业务逻辑时需要处理业务之外的事,而且控制逻辑耦合进业务中,只能适用于当前业务逻辑,无法被复用。

2023-09-09 16:09:36 63

原创 Go Module Package Workspace 参考笔记

让我不太能理解或不好接受的一个根源在于,go 强制把一个普通的版本号 v2 赋予了特殊的含义,使得任意一个 module 升级到 v2 实质上就变成了另一个新 module,而升级到 v3 则又将是另一个新 module。go mod 还是有一些不方便的地方,例如依赖一个未发布的包,或者本地测试中的临时包,需要通过 replace 指令将包名替换为本地路径,既然是本地路径,这就导致一个问题,多人协作开发时,不同的人可能开发系统不同,环境不同,导致本地路径也不同,这就给代码仓库不一致问题的产生提供了可能。

2023-09-09 16:06:28 126

原创 Java 中的反射与注解

Class 元类是对普通类的抽象,是类的类。Class 包含了一个类的所有属性,包括类名、包名、父类、实现的接口、所有方法、属性等。拿到一个类的 Class 元类,就拿到了这个类所有信息,就可以通过这些信息动态做一些处理。解析注解就是通过反射 Reflection 获取到一个类的全部信息,包括类上面的注解,再根据注解和其中的属性值进一步做响应的处理。注解有点像 Interface,但区别是注解中定义的方法,在使用时是通过属性赋值来使用的。注解分为定义注解,使用注解,解析注解。Demo 实体类,使用注解。

2023-09-09 15:59:34 594

原创 Python type 和元类 metaclass

当打印 person.age 时,并不是返回 IntegerField 对象,而是返回一个 int 值,而且还可以使用这个对象写入到 db 中,这一些都是因为 models.Model 背后的 metaclass,其讲复杂的类型转换等操作隐藏在内部,而给业务提供了一个十分简洁的使用接口。,这个 API 不是狭义的应用接口,而是更广泛意义的接口、协议,类似一种转换器的概念,API 给应用提供了简单的使用接口,而把复杂的处理转换隐藏在 metaclass 内部,经过处理的结果最终输出到另一个系统中。

2023-09-09 15:51:08 94

原创 四种常用限流算法对比

分钟 表示滑动窗口减去黄色当前窗口后,与绿色窗口的重叠,占绿色窗口整体的百分比,也就估算出重叠部分的请求量在总共 84 个请求的占比,得出 63 个请求,再加上当前窗口的 36 请求,一共是 99 请求,那么当前滑动窗口的剩余容量就是 100 - 99 = 1 个请求容量。如果在这个时间窗口内的请求已经达到了限制,那么新的请求就会被拒绝,过了当前时间窗口后,会进入下一个时间窗口,并重置窗口内的请求数量,重新计算。在固定窗口限流算法中,如果大量请求在一个时间窗口的边界附近到达,可能会造成瞬时的流量突增。

2023-09-09 00:41:37 223

原创 PHP7内核实现原理-内存管理

chunk 是以最小 2M 分配的,每次分配时为保证内存对齐,申请 4M 内存地址,这样申请的空间横跨 2 个 2M,之后掐头去尾,留下中间的完整 2M 地址,实现内存对齐。申请内存小于等于 3092B(3/4 page_size),内存池提前定义好了 30 种同等大小的内存(8,16,24,32,...3072),他们分配在不同的 page 上(不同大小的内存可能会分配在多个连续的 page),申请内存时直接在对应 page 上查找可用位置。用到了 31 字节,小于 3K,走 small 内存申请。

2023-09-09 00:38:30 29

原创 PHP7内核实现原理-词法和语法分析

可见其处理逻辑是根据输入的字符做 switch case 判断,处理完一个字符,作为当前字符指针的YYCURSOR+1,继续判断下一个字符,配合 goto 语法,流转到下一种状态。类似的词法分析器还有 Lex(Lexical Analyzar),与re2c 类似,也是通过正则生成 C 语言 DFA 代码,C 语言解析正则一般使用 regex.h 库。PHP 7 中增加了 AST。如下代码中,char *scan 中定义了一系列正则,针对输入的内容做类型判断,保存为 a.l 文件。

2023-09-09 00:28:37 69

原创 PHP7内核实现原理-数组的实现

发生冲突时,把新的元素放在 nextFreeIndex 处,然后新 zval 的 next 指针指向老元素在 arData 中的索引,之后在 arHash 索引表中,指向新元素的位置。取值始终是 2 的 n 次方。因为用 1 和 8做索引,数组太过于稀疏,利用率不高,在时间效率和空间效率的平衡下,使用了 hash array。在比较两个字符串 key 的 value 是否相等时,可以先通过判断对应的 h 值是否相等,且绝大部分情况下,字符串哈希冲突的概率也比较小,所以如果不相等直接返回,加快判断的速度。

2023-09-09 00:25:02 124

原创 PHP7内核实现原理-变量的基本结构

具体过程:不管以前的类型是什么,& 首先会创建一个zend_reference 结构体,其内嵌的 zval 的 value 指向原来 zval 的 value (如果是布尔、整形、浮点则直接复制原来的值),然后将原 zval 的类型修改为 IS_REFERENCE,即将其变成引用类型的 zval,最后将原 zval 的 value 指向新创建的 zend_reference 结构。在 PHP 中所有类型的变量都是用 zval 来存储,zval 中包含一个 type 属性,表示本变量的类型。

2023-09-09 00:20:54 144

原创 PHP7内核实现原理-启动过程

opcodes 是 opcode 的集合形式,是 PHP 执行过程中的中间代码。每个worker pool 用结构体 fpm_worker_pool_s 表示,每个 pool 中的有一个 fpm_scoreboard_s 结构体,用来管理具体一个 worker。AST 是 PHP7 版本的新特性,之前版本的 PHP 代码的执行过程中是没有生成 AST 这一步的。,在 pool 的 fpm_scoreboard_s 结构体中,每个 worker 使用 fpm_scoreboard_proc_s 结构体表示。

2023-09-08 22:14:36 48

原创 PHP7内核实现原理-基本架构

要了解 FPM,首先要了解 CGI,CGI (Common Gateway Interface)定义了 Web 服务器和应用程序交互的规范,FastCGI 是在其之上优化改进的结果,增加了worker 常驻等特性,不用每次都 fork 新的进程来处理请求。PHP 最早是由 Lerdorf 于 1995年,使用 Perl 语言,以 Personal Home Page Tools (PHP Tools) 的形式创建的,目的是为了方便记录个人网站的访客记录和支持留言本等功能,此时称为。

2023-09-08 21:31:44 116

原创 PHP7内核实现原理-基本环境和C基础

echo 底层实现利用了 ZEND_ECHO_SPEC_CV_HANDLER 函数,可以在 PHP 代码中使用 echo 打印变量,之后在 gdb 中设置 b ZEND_ECHO_SPEC_CV_HANDLER 断点,当执行到 echo 时,就会被断住,之后可以尝试解析变量。,第一次会卡在 [New Thread 处,跟随教程中处理,先 cntrl z 退出,kill 掉之后,在重新开始调试。总体来说,栈上的变量是局部的,随着局部空间销毁也随之销毁,有系统负责。编译完修改 ini ,使之生效。

2023-09-08 21:29:39 90

原创 Java 中反射、注解、动态代理、AOP 之间的联系

是一个(组)基于正则表达式的表达式,有点绕,就是说他本身是一个表达式,但是他是基于正则语法的。通常一个pointcut,会选取程序中的某些我们感兴趣的执行点,或者说是程序执行点的集合。是 eclipse 下的项目,是一个 AOP 的实现框架,是一种对 Java 语言的扩展语言,在编译器将原来的 Java 代码中织入增强代码,生成增强后的 class 文件。这些都是概念性的东西。动态代理指定增强代码复用在哪里是通过手动编写被代理类来的,而 AOP 则是声明式的,之后通过其他方式自动创建出代理类。

2023-09-08 01:21:40 146

原创 Java 动态代理原理

编写 java.lang.reflect.InvocationHandler 接口的实现类,在这个接口中只有一个方法需要实现,就是 invoke 方法,在这个类中编写增强代码,未来代理功能就是通过调用这里实现的代理效果。被代理类和代理类都实现同一个接口,通过在代理类对象中注入一个被代理对象,通过调用代理对象的方法,在其方法中间接调用被代理对象,从而实现代理的作用。如果增强代码是统计方法执行时间,那么就需要在各种各样不同的类的接口上,重复做上述的事情:编写实现类,类中实现接口方法,编写增强代码等。

2023-09-08 01:13:41 27

原创 PHP 使用 nikic/php-parser 处理 AST

AST 中各个结构说明可参见文档:https://github.com/nikic/PHP-Parser/blob/master/doc/2_Usage_of_basic_components.markdown#node-tree-structure。参考文章:https://learnku.com/articles/14387/aop-design-rewrite-the-php-class-using-php-parser。得到类名,即可 new 之,按照原类的方法签名方式调用,即可得到代理后的效果。

2023-09-08 01:09:22 235

原创 MongoDB 官方文档笔记之分片 Sharding

如果分片集群中最大的 shard 和最小 shard 的 chunk 数量超过迁移阈值,balancer 进程将会触发 chunk 迁移,使集群中 shard 之间的容量更加平衡。大数据量和高吞吐量会对机器性能造成较大压力,通过将数据分配到多台机器上,来降低单机的负载,提高整体性能,还可以通过增加分片来实现系统扩容,另外分片也提高了整体服务的可用性。在一个shard中,数据是通过 chunk 的形式存储的,每个chunk 有一定容量,存储一系列文档数据。每个分片键的值,与数据块 chunk 对应。

2023-09-08 00:57:59 60

原创 MongoDB 官方文档笔记之复制 Replication

主节点会将所有写操作记录到日志中,即 oplog,从节点复制主节点的 oplog,并将这些操作应用在从节点上。主节点挂掉之后,从节点会通过选举产生新的主节点。如果主节点与集群中其他节点通信超时,超过 electionTimeoutMillis 配置的时间,从节点会发生选举。在初始化复制完成之后,从节点会再同步源复制 oplog,异步的应用这些操作。也支持多线程并发复制。建议最少配置一主两从三成员副本集,但假如只有一主一从两个节点,则可以加入一个。主节点上的更新日志 oplog,会异步同步给从节点。

2023-09-08 00:38:44 63

原创 MongoDB 官方文档笔记之存储 Storage

日志通过快速压缩库进行压缩,通过 storage.wiredTiger.engineConfig.journalCompressor 配置压缩算法或不压缩。MongoDB 存储引擎 WiredTiger 原理解析:https://mongoing.com/archives/5367。使用日志功能,WiredTiger为每个客户端发起的写操作创建一个日记记录。没有持久化支持,所有数据均在内存中,包括应用程序数据和系统数据,例如用户,权限,索引,副本集配置,分片群集配置等。日志保留检查点之间的数据修改。

2023-09-08 00:31:53 37

原创 MongoDB 官方文档笔记之索引 Indexes

对于单字段索引,键的排序顺序无关紧要,因为 MongoDB 可以在任一方向上遍历索引。但是,对于复合索引,属性的顺序决定了索引是否支持结果集的排序。唯一索引确保索引字段不会存储重复值,默认情况下,MongoDB 在创建集合期间在 _id 字段上创建一个唯一的索引。分别是对计算类似地球的球体上的几何形状的查询的索引,和对存储为二维平面上的点的数据使用2d 索引。字符串比较时,需要考虑字符串的字符集,需要与建立索引时一致才能走索引。但对于复合索引来说,查询需要符合索引的顺序才能走上索引。

2023-09-08 00:27:29 96

原创 改变自己,改变世界 - 读《乔布斯传》

If you don’t cannibalize yourself,someone else will - 读《乔布斯传》本书作者沃尔特•艾萨克森 (Walter Isaacson),历任美国有线电视新闻网(CNN)董事长和《时代周刊》总编,艾萨克森的主要作品有《爱因斯坦:生活和宇宙》 、《基辛格传记》,其中《爱因斯坦:生活和宇宙》一书揭示了爱因斯坦的科学想象如何源于他叛逆的个性,该书曾荣获美国国家科学总院 2008 年度科学传播最佳图书奖。乔布斯的名号自不用多说。他的一生是富有传奇色彩的一生,甚至可以

2023-09-08 00:21:17 134

原创 乔布斯看了会沉默,雷军看了会流泪 - 读《硅谷之火》

它先是推出了人人都买得起的个人计算机,又首次举办了计算机展会,开创了计算机零售市场,创办了计算机公司的内部杂志,组织用户俱乐部,进行软件共享,并发明了许多硬件及软件产品。一言以蔽之,霍夫的芯片能运行程序。客户要求他们生产的是计算器芯片,霍夫设计的却是集成电路 EDVAC 类型的机器——基于一块硅片运行的、真正的通用计算机设备,即在一块芯片上运行的计算机。《硅谷之火》一书回顾了个人计算机的发展历程以及对未来的展望,从中可以看到很多鲜为人知的和富有传奇色彩的故事,可以看到面前的电脑是怎么一步步发展到今天的。

2023-09-08 00:17:47 172

原创 优秀的公司赚取利润,卓越的公司赢得人心 - 读《一往无前》

这是一本写小米的书,我曾经也是一位米boy,而且对雷军也非常敬佩,必然要读一读的。截止到 2020 年,小米公司已创办 10 周年。在这 10 年里移动互联网浪潮席卷了全球,其中尤以中国的变化最为壮观,而小米公司正处于这股创新激烈的潮头之上。本书在小米 2020 年 10 周年发布会上由小米的创始人雷军推荐,书中讲述了小米在这 10 年中的故事。优秀的公司赚取利润,卓越的公司赢得人心。捷径不是长久之计,要注重积累,着眼未来书中讲述小米刚创办的时候,几乎没有供应商想要给从没听过的小米供货,小米正处于

2023-09-08 00:14:12 79

原创 7-Eleven 便利店背后的经营之道 - 读《零售的哲学》

自然科学家根据已知的科学事实和科学原理,对所研究的自然现象及其规律性提出的推测和说明,也就是假说,自然科学史上有很多著名的假说正是利用了这种思想,比如现在再平常不过的万有引力理论,最早也是通过观察自然现象提出的假说,之后加以证明得出的。张一鸣在酷讯工作时,不论工作是不是他该做的,在他完成自己的工作后,对于大部分同事的问题,只要是他能帮助的,他都会去做。之前常常说要「拥抱变化」,落到执行层面就成了被动的接收变化,强迫自己适应变化,这其实是一种懒惰的行为,也是一种无效的拥抱。不给自己设限,就有无限可能。

2023-09-07 23:59:44 131

原创 使用基于 tideways 的 php-monitor 搭建 PHP 性能监控平台

之后 tideways 演化出了两个分支,一个是原本的 tideways 扩展,一个是继承自xhprof 的 tideways_xhprof 扩展,tideways_xhprof 内的功能与 xhprof 一致。tideways 是一家提供 PHP 应用性能监控相关服务的公司,最主要的产品是 tideways PHP 性能监控扩展,tideways 扩展能够监控请求耗时,SQL 执行耗时,CPU 和内存占用。mu:函数方法所使用的内存。相当于,在调用前记录一个内存占用,函数方法调用完毕后,计算内存差。

2023-09-07 23:54:50 246

原创 一座打渔小岛上的经济学 - 读《小岛经济学》

对于美联储的决策者来说,他们自然也希望自己被看作拯救经济的好人,而不愿被当作将经济推向低谷的吝啬鬼。这对于美国国内的公司,比如优秀滑板制造商,是很有利的,对那些能够输送其最有价值产品的公司也是有利的。因为此时银行承受损失的能力较强,而且健康的经济也为新企业的发展提供了良好的环境。一个巧妙的比喻可以起到非常好的效果,而不恰当比喻往往会增加理解的成本,书中的比喻越到后面,就越倾向于偏向后者,但对于一些概念的解释还是很值得学习的。但对投资人来说可不是好现象,会被短期的增长蒙蔽,在虚假的繁荣之后会出现巨大的危机。

2023-09-07 23:47:30 56

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除