业务系统的复杂性在哪里?
Leader:”我担忧的是,我们团队规模的扩张并不是因为用户规模或营收规模的增长,仅仅是因为我们有越来越多的事情要做导致人手紧缺。”
现象一:业务越不好活就越多问题:为什么用户规模或者营收规模不增加,事情反而越来越多呢?由于业务规模停滞或者下滑,产品侧不得不做更多的事情来止住颓势甚至想要以此力挽狂澜。要么是不断地拓展产品的边界,在一个应用里加入更多的功能,也就是所谓的交付更多的用户价值,从而吸引更多潜在用户;要么是不断地优化现有功能,例如通过排版来从心理学角度提高用户停留时长和点击率,亦或是进一步优化产品的交互流程,也就是所谓的提升用户体验,从而提升口碑,稳固用户基本盘。这些要做的事情对应到开发侧,那自然就是有更多的需求。
现象二:增效比降本难的多降本,就是减少不必要的浪费;比如更精细化地使用服务器和存储资源,该省的省。
降本手段在短期很有用,但很快就会达到收益天花板,更大的收益还是要提升效率。
说的增效,大多数人首先想到的就是工程效能(EP),比如利用各种各样工具、服务来提升开发、部署的效率。
最终目标让程序员可以专注于业务的开发,但问题是,在整个软件的开发中,到底是业务开发工 ...
婚介,那点事
相亲不像自由恋爱。自由恋爱是从一堆人中看到最喜欢的人;但相亲是先筛选数据,在一群人中通过筛选条件挑出符合要求的人,再培养感情。 - 序
引言过去的一年,本人陆续参加过几次线下的相亲活动,从非正式场合显眼包经历,到正式场合的”面试经验“,也算有所成长,最起码再也不会幻想“天生掉女朋友”,也逐渐改变了对相亲的一些看法。虽脱单事业尚未成功,仍需努力,但好在经历总会促使人思考。以下是我对相亲这件事的,一些看法,与君共勉!!
现象被量化的个体在相亲市场,个人数据是优先于感性因素的。婚介从业者的工作,更像是做数据处理。
相亲市场中每个人都是由年龄、学历、身高、体重、收入、车房情况、父母工作、父母养老保险等等一个个指标量化的个体。 如果是二婚,还会涉及有没有孩子、孩子跟着谁、孩子每个月的抚养费、有没有再生育的意愿等。这些数据指标都非常重要。此外,最近这两年,通过市场的反馈,相亲者普遍会看重对方父母有没有养老保险,以及对方的原生家庭关系情况。
理性的婚恋观现在年轻人的婚恋观更加理性了。年轻人现在都不愿意将就了,对对方的质量要求提高了很多。比如,以前的年轻人相亲恋爱状态达到70分,就可以结婚了;父 ...
白话科普 | AI绘画是如何生成图像的?
写在前面所有AI应用的基本范式,都可以说:“先喂给它很多数据,然后让它找到其中的特征和规律,最后让它生成新的数据”,而AI绘画也不例外,通过扔进去大量真实的图片让AI不断去了解、认识和学习,然后根据训练效果,自己生成图片。 - 废话文学
下面主要通过白话的方式阐述AI绘画原理,适用于泛AIGC爱好者阅读和学习了解,算法原理略去了很多细节。目的是让大家大概明白了AI绘画是如何工作的,共勉。本文主要将以 Stable Diffusion 的为例讲解 AI 绘画的基本原理。
术语
Diffusion Mode
扩散模型是一种深度学习模型,被设计用来生成与训练数据相似的新数据。
LDM(Latent Diffusion Mode)
LDM潜在扩散模型是扩散模型的一种变体
CLIP(Contrastive Language-Image Pre-Training)
CLIP 是一种用于匹配图像和文本的预训练神经网络模型
U-Net
U-Net是一种U型结构的用于图像分割的神经网络模型
VAE( variational autoencoder)
VAE 变分自编码器是 ...
解析一张思维脑图背后的秘密?
你好,我是金子,一个混迹互联网圈的打工人,思维脑图是我在 ProcessOn 中最常用的功能,我时常思考如何画好
一张思维脑图呢?下面和我一起解析一张思维脑图背后的秘密吧…
一则小故事:
两个人在沙漠迷路了,只剩下半壶水。
一个人说:“天啊,这可怎么办啊,我只剩半瓶水了,一定走不出去了。”
另一个说:真是太幸运了,还有半壶水,我一定可以走出去!”
最后,乐观的人成功的走了出去,而悲观的人……
同一件事,因为不同的思考方式,产生了不同的结果。有的人看到的是缺少的那一半,有的人看到的是拥有的那一
半,思考问题的方式,看问题的角度的确很重要。
相关脑图:https://www.processon.com/view/link/64da437a932af4787f788176
引言人一生往往真正可以改变的东西并不多,生物基因和环境出身已经白描出大体的命运轨迹,而想要后天改变,往依
赖一些先天资源;因此,你要真正过得关,不是当它发生的时候,而是当它注定发生的时候。努力接受不能改变
的,努力改变能改变的。因此,我们能改变什么呢?又有哪些东西值得被改变呢?
改变需要从思维开始 !人脑有意无意人脑总是在 ...
Go JSON 三方包哪家强?
引言为了小伙伴理解,汇总了一下文章中会提及的术语名词解释,请耐心品读,欢迎一起讨论交流!
专业术语
名词解释
JIT
即时编译
code-gen
代码生成
lazy-load
按需加载/懒加载
ast
抽象语法树(Abstract Syntax Tree )
Clang
它是一个 C/C++ 的轻量级编译器
asm
汇编语言(Assembly language)
Plan9
它是一个 Unix 系统,其中 Go 底层使用的汇编语言是 plan9 汇编
SIMD
全称单指令流多数据流(Single-Instruction-Multi-Data)它是一组特殊的 CPU 指令,用于矢量数据的并行处理
你真的了解 Go 标准库吗?问题一:标准库可以反序列化普通的字符串吗?执行下面的代码会报错吗?
1234567var s stringerr := json.Unmarshal([]byte(`"Hello, world!"`), &s)assert.NoError(t, err)fmt.Println( ...
提效常识
脑图:https://www.processon.com/mindmap/60e03d931efad40c1bf3ed39
软件安装安装homebrew在terminal内复制执行下面这段代码(官方版):
1/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
如果网络问题一直没反应或者报错,可以用国内镜像版:
1/bin/bash -c "$(curl -fsSL https://gitee.com/ineo6/homebrew-install/raw/master/install.sh)"
brew 常用命令
123456789101112131415161718# 检测是否安装homebrewbrew -vbrew update 更新 Homebrewbrew search package 搜索软件包brew install package 安装软件包brew uninstall pa ...
copilot 使用指南
引言英语小课堂
pilot 读音 [ˈpaɪlət] 飞行员
copilot 读音 [ˈkoˌpaɪlət] 飞机副驾驶员
co- 前缀,是 com- 前缀的变体,表示 辅助、共同、互补,类似的单词还有:
operation 操作
cooperation 合作、联合
Copilot
GitHub Copilot 由 OpenAI Codex 提供支持,这是一个由 OpenAI 创建的生成性预训练语言模型,作为一个人工智能编程伙伴,让需要的知识触手可及, 可以帮助您更快、更少地编写代码,节省时间并帮助人保持专注。
OpenAI
OpenAI 是一个非营利的人工智能(AI)研究组织,创始人伊隆·马斯克以及萨姆·奥特曼的动机是出于对强人工智能潜在风险的担忧。组织目标是通过与其他机构和研究者的“自由合作”,向公众开放专利和研究成果;促进和发展友好的人工智能,使人类整体受益。
OpenAI 成立于 2015 年底,总部坐落于旧金山的米慎区,与伊隆·马斯克的另一座公司 Neuralink 在同一办公室大楼。2019 年 7 月 22 日微软投资 OpenAI 10 亿美元,双方将携手合作 ...
如何画架构图?
整体思路什么是架构?架构是结构和愿景,是概念的体现,是对系统中的实体以及实体之间的关系所进行的抽象描述,是一系列的决策。 架构设计 是 面向于解决具体的业务问题
什么是架构图?系统架构图是为了抽象地表示软件系统的整体轮廓和各个组件之间的相互关系和约束边界,以及软件系统的物理部署和软件系统的演进方向的整体视图。
架构图的作用一图胜千言。将架构图作为一个很好的载体把架构信息传递出去。
解决沟通障碍
达成共识
减少歧义
架构图分类分类有杂,有一种比较流行的是4+1视图。
视图名称
通常表示
作用
场景视图
用例图
描述系统的参与者与功能用例间的关系,反映系统的最终需求和交互设计
逻辑视图
UML的组件图和类图
描述系统软件功能拆解后的组件关系(组件约束和边界)反映系统整体组成与系统如何构建的过程
物理视图
描述系统软件到物理硬件的映射关系,反映出系统的组件是如何部署到一组可计算机器节点上,用于指导软件系统的部署实施过程。
处理流程视图
时序图和流程图
描述系统软件组件之间的通信时序,数据的输入输出,反映系统的功能流程与数据流程
开发视图
描述系统的模块划分 ...
Go GC篇
脑图:https://www.processon.com/mindmap/60fbe47a637689719d24c16b
导读
1959年, GC由 John McCarthy发明, 用于简化Lisp中的手动内存管理. 到现在很多语言都提供了GC. 不过GC的原理和基本算法都没有太大的改变.
Garbage Collection (GC)是一种自动管理内存的方式. 支持GC的语言无需手动管理内存, 程序后台自动判断对象是否存活并回收其内存空间, 使开发人员从内存管理上解脱出来.
带着问题去思考🤔:
GC是怎样的?
GC怎么帮我们回收对象?
Go的GC会不会漏掉对象或者回收还在用的对象?
Go GC什么时候开始?
Go GC啥时候结束?
Go GC会不会太慢, 跟不上内存分配的速度?
Go GC会不会暂停我们的应用? 暂停多久? 影不影响我的请求?
GC相关术语
并发和并行: 通常在GC领域中, 并发收集器则指垃圾回收的同时应用程序也在执行; 并行收集器指垃圾回收采取多个线程利用多个CPU一起进行GC. 不过一般我们说并发回收器, 就包含了这两层意思.
Safepoint: ...
Go 内存篇
疑惑
Go 的内存分配器是如何设计的?
Go 的内存分配机制是怎样的?
Go 的对象在内存中是怎样存储的?
分配器设计线性分配器
定义通过在内存中维护一个指向内存特定位置的指针,当用户程序申请内存时,分配器只需要检查剩余的空闲内存、返回分配的内存区域并修改指针在内存中的位置,移动指针即可;
优点有较快的执行速度和较低的实现复杂度;
缺点无法在内存被释放时重用内存,需要与适当的垃圾回收算法配合使用;
空闲链表分配器
定义它在内部会维护一个类似链表的数据结构。当用户程序申请内存时,空闲链表分配器会采用适当的策略分配资源并修改链表;下面介绍几种常见的分配策略:
首次适应(First-Fit)从链表头开始遍历,选择第一个大于申请内存的内存块;
循环首次适应(Next-Fit)从上次遍历的结束位置开始遍历,选择第一个大于申请内存的内存块;
最优适应(Best-Fit)从链表头遍历整个链表,选择最合适的内存块;
隔离适应(Segregated-Fit)
将内存分割成多个链表,每个链表中的内存块大小相同,申请内存时先找到满足条件的链表,再从链表中选择合适的内存块;
例如:通过该策略会将内存分 ...