产品功能结构图、产品信息结构图、产品结构图 在写PRD、竞品分析文档中,我们常常会看到产品结构图、产品功能结构图或者产品信息结构图的身影,但需要讲清楚他们的定义和作用也真没看上去那么简单。 特别声明:由于篇幅和其他因素限制,本系列中所有的实例图在完整性上有省略和简化,仅作为举例讲解用,请读者不要纠结图表是否描述完整、是否有缺失模块,主要是给读者来对比3类图表的联系与区别。 功能结构图1.定义功能结构图就是按照功能的从属关系画成的图表,在该图 2023-02-01 pm #pm
产品流程图 很多人拿到需求就火急火燎的开始画原型,然后画着画着觉得有些地方没有考虑到,又回头去改,如果在画原型之前,你能将自己的业务流程想好,用户的操作流程想好,页面跳转想清楚,你就能少做很多无用功,达到事半功倍的效果。 一、什么是流程图流程图=流程+图。 流程是一系列的逻辑关系(包含因果关系、时间先后、必要条件、输入输出)产品经理做需求前一定要先把这些逻辑关系理清楚,如果非要用一句话概括的话“流程 2023-02-01 pm #pm
微信红包后台系统设计-春哥大魔王 原文连接:https://cloud.tencent.com/developer/article/1637408 背景微信作为一款国民应用,已经进入每个互联网用户手中,微信支付作为其杀手级功能,在每一次佳节期间都会产生巨大流量,以2017年除夕为例,峰值QPS在76w左右,整个系统核心功能和金融相关,需要做好高可用。 我们先了解下微信红包支付的流程: 一个发红包的流程经过抽象可以得到如下路径:包 2023-02-01 architecture #architecture
架构、抢红包算法、高并发和降级方案-第八号当铺 原文连接:https://www.cnblogs.com/8hao/p/5383143.html 编者按历经上千年时代传承与变迁,春节发红包早已成为历史沉淀的文化习俗,融入了民族的血脉。按照各家公布的数据,除夕全天微信用户红包总发送量达到80.8亿个,红包峰值收发量为40.9万个/秒。春晚直播期间讨论春晚的微博达到5191万条,网友互动量达到1.15亿,网友抢微博红包的总次数超过8亿次。 2023-02-01 architecture #architecture
架构图 什么是架构图?平常工做中常常能看到各类各样的架构图,每个人对架构图的理解各有侧重。深刻追究到这个问题,可能很难有一个具象的定义,若是把这个问题进行拆分,理解起来就会容易一点。 1架构图 = 架构 + 图 按照这个等式,咱们能够把问题转换: 架构是什么? 图是什么? 图是什么?这个比较容易回答,图是一种信息的表达方式,因此架构图,即表达“架构”的图,也就是一种架构的表达方式。也即:架构图 2023-02-01 pm #pm
百亿级微信红包的高并发资金交易系统设计方案-方乐明 原文连接:https://www.infoq.cn/article/2017hongbao-weixin 百亿级微信红包的高并发资金交易系统设计方案2017 年 1 月 28 日,正月初一,微信公布了用户在除夕当天收发微信红包的数量——142 亿个,而其收发峰值也已达到 76 万每秒。百亿级别的红包,如何保障并发性能与资金安全?这给微信带来了超级挑战。面对挑战,微信红包在分析了业界“秒杀”系统解决 2023-02-01 architecture #architecture
软件架构中主流框架和技术 数据存储高速缓存 Redis Memcached NOSQL文件数据库 MongoDB CouchDB HBase LevelDB FastDB 关系型数据库 Mysql Oracle Sqllite PostgreSQL Sybase 中间件方面消息中间件 RabbitMQ ZeroMQ ActiveMQ 数据库中间件 Cobar MyCAT Altas Heisenberg 2023-02-01 architecture #architecture
软件架构之权限设计模型 背景任何一套商业系统的设计都离不开权限管理模型的设计,不论是哪种设计,均可归纳为四种经典权限模型中(自主访问控制、强制访问控制、基于角色访问控制、基于属性访问控制等)。 从本质来说,无论哪种类型的权限管理模型均能抽象出三个基本的要素:用户(USER)、系统/应用(SYSTEM/APPLICATION)、策略(POLICY)。 相关术语说明: 用户:发起操作的主体; 对象:指操作所针对的 2023-02-01 architecture #architecture
软件架构的演进 1、软件架构的发展软件架构的发展经历了从 单体架构、垂直架构、SOA 架构到微服务架构的过程。 1.1、单体架构Web 应用程序发展的早期,大部分 web 工程师将所有的功能模块打包到一起并放在一个 web 容器中运行,所有功能模块使用同一个数据库。 下图是一个单体架构的电商系统: 优点: 项目架构简单,前期开发成本低,周期短。小型项目的首选。 开发效率高,无须考虑跨语言,模块之间交互采用本地 2023-02-01 architecture #architecture
04.log标准库 log标准库golang内置了log包,实现简单的日志服务。通过调用log包的函数,可以实现简单的日志打印功能。 log包定义了Logger类型,该类型提供了一些格式化输出的方法。 log包也提供了一个预定义的“标准”logger,可以通过调用函数Print系列(Print|Printf|Println)、Fatal系列(Fatal|Fatalf|Fatalln)、和Panic系列(Panic|P 2023-01-22 go > go标准库
05.errors标准库 errors标准库errors包实现了操作错误的函数。go语言使用error类型来返回函数执行过程中遇到的错误,如果返回的error值为nil,则表示未遇到错误,否则error会返回一个字符串,用于说明遇到了什么错误。 123type error interface { Error() string} error不一定表示一个错误,它可以表示任何信息,比如io包中就用e 2023-01-22 go > go标准库
06.bytes标准库 bytes标准库bytes包提供了对字节切片进行读写操作的一系列函数,字节切片处理的函数比较多分为基本处理函数、比较函数、后缀检查函数、索引函数、分割函数、大小写处理函数和子切片处理函数等。 1. 常用函数1.1 转换 函数 说明 func ToUpper(s []byte) []byte 将 s 中的所有字符修改为大写格式返回。 func ToLower(s []byte) []b 2023-01-22 go > go标准库
07.io标准库 io标准库io包中提供I/O原始操作的一系列接口。它主要包装了一些已有的实现,如 os 包中的那些,并将这些抽象成为实用性的功能和一些其他相关的接口。 1. 错误变量 var EOF = errors.New(“EOF”)正常输入结束Read返回EOF,如果在一个结构化数据流中EOF在不期望的位置出现了,则应返回错误ErrUnexpectedEOF或者其它给出更多细节的错误。 var 2023-01-22 go > go标准库
08.ioutil标准库 ioutil标准库ioutil包封装了一些I/O实用程序函数。 函数 说明 ReadAll 读取数据,返回读到的字节slice ReadDir 读取一个目录,返回目录入口数组[]os.FileInfo ReadFile 读取一个文件,返回读到的文件内容字节slice WriteFile 根据文件路径,写入字节slice TempDir 在一个目录中创建指定前缀 2023-01-22 go > go标准库
09.bufio标准库 bufio标准库bufio包实现了有缓冲的I/O。它包装一个io.Reader或io.Writer接口对象,创建另一个也实现了该接口,且同时还提供了缓冲和一些文本I/O的帮助函数的对象。 1. bufio包原理io操作本身的效率并不低,低的是频繁的访问本地磁盘的文件。所以bufio就提供了缓冲区(分配一块内存),读和写都先在缓冲区中,最后再读写文件,来降低访问本地磁盘的次数,从 2023-01-22 go > go标准库
10.builtin标准库 builtin标准库builtin包提供了一些类型声明、变量和常量声明,还有一些便利函数,这个包不需要导入,这些变量和函数就可以直接使用 1. 常用函数1.1 append1func append(slice []Type, elems ...Type) []Type slice = append(slice, elem1, elem2) 直接在slice后面添加单个元素,添加元素类 2023-01-22 go > go标准库
12.sort标准库 sort标准库sort包提供了排序切片和用户自定义数据集以及相关功能的函数。 sort包主要针对[]int、[]float64、[]string、以及其他自定义切片的排序。 主要包括: 对基本数据类型切片的排序支持。 基本数据元素查找。 判断基本数据类型切片是否已经排好序。 对排好序的数据集合逆序 1. 排序接口1234567type Interface interface { 2023-01-22 go > go标准库
13.math标准库 math标准库math包包含一些常量和一些有用的数学计算函数,例如:三角函数、随机数、绝对值、平方等 1. 常量12345678910111213141516fmt.Printf("Float64的最大值: %.f\n", math.MaxFloat64)fmt.Printf("Float64最小值: %.f\n", math.SmallestNonzeroFloat64)fmt.Printf(" 2023-01-22 go > go标准库
14.flag标准库 flag标准库Go语言内置的flag包实现了命令行参数的解析,flag包使得开发命令行工具更为简单。 1. os.Args如果你只是简单的想要获取命令行参数,可以像下面的代码示例一样使用os.Args来获取命令行参数。 123456789func main() { // 获取命令行参数 // os.Args:[]string if len(os.Args) > 0 { 2023-01-22 go > go标准库
15.runtime标准库 runtime标准库runtime包提供和go运行时环境的互操作,如控制goroutine的函数。 它也包括用于reflect包的低层次类型信息。 1. 环境变量 环境变量GOGC设置最初的垃圾收集目标百分比。当新申请的数据和前次垃圾收集剩下的存活数据的比率达到该百分比时,就会触发垃圾收集。默认GOGC=100。设置GOGC=off 会完全关闭垃圾收集。runtime/debu 2023-01-22 go > go标准库