启示录 Blog

生活不只是眼前的苟且,还有诗和远方

迁移私有化git到gitlab

摘要 主要从原因、调研、部署、迁移以及总结几个方面 原因 我们使用git用四年,团队中的所有项目都是在git下面开发。代码库的代码量在10GB+左右。随着团队的发展。工程化以及自动化的需求与呼声越来越高。我们希望通过git来实现gitops、devops、CI/CD。旧的git服务是使用gitosis搭建的.如果是自己开发改造的时间太长。 调研 选择了两个git工具:gogs和gi...

Dockerfile最佳实践Tips

Dockerfile最佳实践 1.使用缓存 Dockerfile的镜像是一层一层的叠加,每一个指令是基于之前层的镜像。如果存在相同父级映像和指令(除了ADD)中,docker不会再次执行相同的指令。而使用缓存。下面是制作镜像时都会添加的部分。注意:如果是多个参数记得使用\换行 1 2 3 4 5 6 FROM ubuntu MAINTAINER Michael Crosby <m...

如何阅读一篇论文

如何阅读一篇论文 Learning to efficiently read a paper is a critical but rarely taught skill. 学习高效的阅读论文重要却鲜少为人所教之事 Three-Pass Approach 三阶段阅读法 第一阶段:掌握该论文的整体观点,讲述的是一个什么观点 第二阶段:领略论文的内容,但非所有的细节 第三阶段:了解整理论...

阅读《Code Simplicity:The Science of Software development》笔记

好工程师与差工程师的差别在于理解能,好工程师理解自己做的事情,差的则相反。 好工程师应当竭尽全力让自己的代码能够其他工程师更容易理解 程序究竟是什么? a.给计算机的一系列指令 b.计算机依据指令进行操作 每个工程师都是设计师。他们有权在自己的工作中作出良好的设计决策。 软件设计的基础:定义(事物是什么)、事实(对事物的陈述)、条...

对于新手容易在数据库上犯的五个错误

1.存储图片到数据库中 千万不要把图片存储到数据库中,有些初学者喜欢把图片转换成base64的编码,然后使用数据库的text/blob对象存储,这里非常不建议这样做,因为它会消耗你数据库的大量I/O资源。而且转换后的对象也非常占存储空间。最终导致整个数据库的存储空间极速增长。 在国内推荐使用云存储服务(譬如:七牛,又拍云等),然后存储url即可。在你的web应用中可以使用 <img&...

纪录一次真实的系统故障总结

2016年5月29日,这个是第一次遇到系统商业故障。以前只在书中和微博上面看到过这样的案例,没有想到会发生在自己身上。这是一次宝贵的经验。 事故原因:在阿里云购买服务器之后再次升级配置。如果需要配置生效,需要重新启动系统。而系统重新启动只能依靠阿里云控制面板去软重启,不能在系统中执行reboot命令重新启动。正是因为如此导致系统多次启动失败。 事故结果:所有系统下线,门店无法正常收银,线...

阅读:大型网站技术架构.技术原理与案例分析(三)

路由算法指通过算法分配用户最终访问的目标服务,例如分布式缓存集群,分布式数据库等。 最常见的是使用余数hash(hash()mod N):用缓存的key的hash值除以服务器数目(N),余数为服务器编号,同一数据的hash是不变的。数据相对固定。但是这是一种平衡场景,如果数据的key访问不平衡,会造成个别服务器压力猛增,而其他的却处于空闲。但是这种情况对于集群中某一台出现故障,需要重新计算...

阅读:大型网站技术架构.技术原理与案例分析(二)

不同视角下的网站性能 1、用户关注的角度是如何能快速使用到对应的服务或功能。 2、开发人员关注的是TPS(每秒事务处理能力)、QPS(每秒查询数)、并发能力、响应延迟、吞吐量(throughput)、稳定性、HPS(每秒HTTP请求数) 3、运维人员关注的是基础设施性能、资源利用率、带宽、服务器硬件等 网站前端性能优化: 1、浏览器访问优化:减少HTTP(无状态)请求,每次请求需要重新...

阅读:大型网站技术架构.技术原理与案例分析(一)

在做网站架构时,甚至是在做开发做技术选型时很容易走入技术人的误区。例如:一味的跟随大公司的解决方案,”这个问题淘宝就是这么做的”、”别人Facebook就用很久了”。选择一门技术肯定是要贴合业务的,别人的不一定适合。思考别人这样用的场景,是什么问题导致大公司通过这个方法解决。切勿盲目,成为愚翁。 为技术而技术 网站技术与架构是为业务服务的,并不能一味的追求时髦技术。否则会把技术发展引入崎岖...

如何写一份好的README

项目名称 关于项目的简单描述 简短的介绍你的项目,项目如何使用,并且这个项目主要解决什么问题,如何使用 安装/入门 使用简洁的语言快速的介绍如何使用,就像编程语言一样,如何写一个简单的Hello world或者是运行。 1 2 3 packagemanager install awesome-project awesome-project start awesome-pr...