获得徽章 0
15个改变世界的开源项目

网站开发:
1、Node.js 一个事件驱动、非阻塞式I/O模型,让JavaScript 运行在服务端的开发平台;
2、React 一套用于构建用户界面的 JavaScript 库。
3、Apache HTTP Server(简称Apache)是最流行的Web服务器端软件之一。

数据管理:
4、PostgreSQL 一种特性非常齐全的自由软件的对象-关系型数据库管理系统(ORDBMS)(PS:不是应该MySQL吗,哈哈)。
5、Redis 一个高性能的key-value数据库。
6、Elasticsearch 一个分布式的 RESTful 风格的搜索和数据分析引擎。

开发工具:
7、Git 一个开源的分布式版本控制系统。
8、VSCode 一款由微软开发且跨平台的免费源代码编辑器。
9、Jupyter Notebook(此前被称为 IPython notebook)是一个交互式笔记本,支持运行 40 多种编程语言。

机器学习&大数据:
10、Tensorflow 一个端到端开源机器学习平台。
11、Apache Spark 专为大规模数据处理而设计的快速通用的计算引擎。
12、Kafka 一种高吞吐量的分布式发布订阅消息系统。

DevOps&容器化
13、Docker 一个开源的应用容器引擎。
14、Kubernetes 简称K8s,是一个全新的基于容器技术的分布式架构解决方案。
15、Linux (PS:太出名,不介绍了,哈哈)

(图转自bytebytego,翻译整理by dogstar)
展开
dogstarhuang于2024-04-19 18:48发布的图片
1
不能被忽视的9大网站性能指标【理论和实践,同样重要】
(图转自bytebytego,翻译整理by dogstar)

性能指标1、加载时间
这是Web浏览器下载和显示网页所花费的时间,以毫秒为单位。

性能指标2、第一个字节时间(TTFB)
TTFB是发出页面请求到接收到应答数据第一个字节所花费的毫秒数。TTFB至关重要,因为它指示服务器处理流量的一般能力。
(PS:在谷歌、Firefox等浏览器,都可以通过网络查看网页请求+响应+传输的时间;此外通过 性能 也能监控和进行具体的性能分析;请见图2;如果你用VUE开发的,最好是在localhost时进行性能分析)。

性能指标3、请求次数
浏览器为完全加载页面而必须发出的HTTP请求数。这个次数越低,网站对用户的感觉就越快。

性能指标4、DOMContentLoaded(DCL)
这是加载网页的完整HTML代码所需的时间。这种情况发生得越快,用户就能越快看到有用的功能。这次不包括加载CSS和其他静态资源。

性能指标5:首屏加载时间
“首屏”是指网页中适合浏览器窗口的区域,用户无需向下滚动即可。这是用户首先看到的内容,通常决定他们是否继续阅读网页。
(PS:经验法则,如果一个网站打开超过2秒,大部分用户就会离开)

性能指标6:第一次内容绘制 (FCP)
这是浏览器首次开始“绘制”内容的时间。它可以是文本、图像,甚至是背景颜色。

性能指标7:页面大小
这是页面上显示的所有内容和资产的总文件大小。在过去的几年里,网站的页面大小一直在不断增长。网页越大,加载所需的时间就越长、需要消耗的流量就越多。

性能指标8:往返时间 (RTT)
这是往返所需的时间。往返包括从浏览器到源服务器的请求以及从服务器到浏览器的响应。降低RTT是提高网站性能的关键方法之一。

性能指标9:渲染阻塞所占用的时间
某些资源会阻止加载页面的其他部分。跟踪此类资源的数量非常重要。网页拥有的渲染阻塞资源越多,浏览器加载页面的延迟就越大。

来互动评论一下:你平时都在关注哪些指标来优化你的网站?
(PS:网站性能除了影响用户体验外,对搜索引擎也会有一定的影响。)

参考来源:Cloudflare官方文档。
展开
dogstarhuang于2024-04-16 13:18发布的图片
dogstarhuang于2024-04-16 13:18发布的图片
评论
云消息传递的6种模式

服务之间如何通信?下图显示了6种云消息传递模式。
(图转自bytebytego,翻译整理by dogstar)

模式1、异步请求-答复模式(Asynchronous Request-Reply)
在后端处理需要是异步处理但前端仍需要明确响应的情况下,将后端处理与前端主机分离。
简单来说,客户端应用程序对 API 进行同步调用,从而在后端触发长时间运行的操作。API 会尽快地进行同步响应,大约 100 毫秒或更短。它返回HTTP 202(已接受)状态代码,确认已收到要处理的请求。

模式2、订阅/发布模式(Publisher-Subscriber)
一种异步服务对服务的通信方法。Pub/Sub模型包括如下两个基本组成部分:发送消息的发布者(publisher)、以及通过消息中介(broker)接收消息的订阅者(subscriber)。

模式3、声明-检查模式(Claim Check)
此模式解决了大型消息的传输问题。它将整个消息有效负载存储到数据库中,并仅传输对消息的引用,稍后将用于从数据库中检索有效负载。
此模式也称为基于引用的消息传递,最初在《Enterprise Integration Patterns》(企业集成模式)一书中做了介绍。

模式4、优先级队列(Priority Queue)
此模式对发送到服务的请求进行优先级排序,以便优先处理优先级较高的消息。即允许用户为队列中元素设置优先级,放置元素的时候不是直接放到队尾,而是放置到比它优先级低的元素前面。

模式5、Saga模式
Saga 用于管理分布式系统中多个服务的数据一致性,尤其是在每个服务管理自己的数据库的微服务架构中。Saga模式的名称源于古希腊诗歌中的“saga”(故事),因为它通过多个步骤组成了一个完整的事务故事。Saga 模式解决了在不依赖分布式事务的情况下保持数据一致性的挑战,分布式事务难以扩展,并且会对系统性能产生负面影响。

模式6、使用者竞争模式(Competing Consumers)
使多个并发使用者能够处理同一消息通道上收到的消息。 存在多个并发使用者时,系统可以并发处理多个消息,以优化吞吐量、改进可伸缩性和可用性,以及均衡工作负载。

参考:Azure Messaging patterns
展开
dogstarhuang于2024-04-15 15:30发布的图片
3
数据通信的9大架构模式

一般人学不会,学会的不是一般人,哈哈!(图转自bytebytego,翻译整理by dogstar)

模式一、点对点通信(Peer-to-Peer)
点对点模式涉及两个组件之间的直接通信,而无需中央协调器。
和 端对端 的区别是?点对点是基于MAC地址或者IP地址,是指一个设备发数据给另外一个设备,这些设备是指直连设备包括网卡、路由器、交换机等。 端对端是网络连接,应用程序之间的远程通信。端到端通信是针对传输层来说的,是逻辑链路。

模式二、API网关(API Gateway)
API网关是一种服务器,充当应用程序编程接口(API)的入口点。

模式三、订阅-发布模式(Pub-Sub)
订阅-发布模式通过消息代理将消息的生产者(发布者)与消息的使用者(订阅者)分离。

模式四、请求-响应模式
这是最基本的集成模式之一,由客户端向服务器发送请求并等待响应。

模式五、Event Sourcing架构模式
Event Sourcing架构模式将应用程序的状态更改存储为一系列事件。类似生活中在会计账簿上的会计条目按照发生的时间顺序,记录了对账户余额产生变更的事件。
(PS:注意,不是事件驱动模式)。

模式六、ETL(Extract Transform Load,抽取、转换、载入)
ETL是一种数据集成模式,用于从多个源收集数据,将其转换为结构化格式,然后加载到目标数据库中。即将业务系统的数据经过抽取(Extract)、清洗转换(Transform)之后加载(Load)到数据仓库的过程。

模式七、批量处理
批处理涉及在一段时间内积累数据,或直到达到特定阈值,然后再将其作为单个组进行处理。

模式八、流处理
流处理允许实时连续摄取、处理和分析数据流。流处理是一种允许用户在接收到的数据后的短时间内快速查询连续数据流和检测条件的技术。检测时间从几毫秒到几分钟不等。

模式九、服务编排 (Orchestration)
编排涉及中央协调器(编排器)管理分布式组件或服务之间的交互,以实现工作流或业务流程。在微服务架构中常用于聚合调用的低代码实现方案,通过对下游各个领域系统原子接口的排列组合,最终对客户端或前端提供可灵活适配业务的聚合接口,用以降低业务变化带来的技术成本。
展开
dogstarhuang于2024-04-15 13:33发布的图片
4
12个APP开发的硬核知识,你知道吗?

(图转自bytebytego,翻译整理by dogstar)

12个APP开发的硬核知识,是提供了一套用于构建现代软件应用程序的最佳实践。遵循这12 条原则可以帮助开发人员和研发团队构建可靠、可扩展且可管理的APP手机应用程序。

以下是每个原则的简要概述:

1、代码库:
在一个地方保存所有代码,并使用Git等版本控制对其进行管理。(PS:基本到不能再基本了,千万别想着整天把代码压缩包传来传去,会疯的!)

2、依赖管理:
列出应用正常运行所需的所有内容,并确保它们易于安装。

3、配置管理:
将数据库凭据等重要设置与代码分开,以便无需重写代码即可更改它们。

4、后端服务:
使用其他服务(如数据库或付款处理器)作为应用连接到的单独组件。

5、打包、发布、运行:
明确区分各种打包。

6、进程:
设计应用,使每个部分不依赖于特定的计算机或内存。这就像制作拼凑在一起的乐高积木一样。

7、端口绑定:
允许通过网络端口访问你的应用,并确保它不会在一台计算机上存储关键信息。

8、提升并发:
通过添加相同内容的更多副本,使您的应用能够处理更多工作,例如为繁忙的餐厅雇用更多员工。

9、快速启动(别闪退):
你的应用应该快速启动并正常关闭,就像关闭电灯开关而不是拔出电源线一样。

10、开发/生产 奇偶校验:
确保用于开发应用的内容与在生产中使用的内容非常相似,以避免出现意外。

11、日志:
记录应用中发生的情况,以便了解和解决问题,例如软件的调试日记。

12、管理员进程:
与应用分开运行特殊任务,例如在车间而不是在工厂车间进行维护工作。

你认为这些原则在哪些方面对改进软件开发实践的影响最大?
展开
dogstarhuang于2024-04-09 12:38发布的图片
4
构建微服务的9个最佳实践
在构建微服务之前, 必须了解的9个最佳实践:
(图转自bytebytego,翻译整理by dogstar)

1、失败和异常处理
微服务的分布式系统总会运行异常。
您必须将系统设计为能够容忍多个级别的故障,例如基础结构、数据库和单个服务。使用断路器、隔板或优雅的降级方法来处理故障。

2、构建小型服务
微服务不应同时执行多项操作。一个好的微服务旨在做好一件事。

3、使用轻量级协议进行通信
通信是分布式系统的核心。微服务必须使用轻量级协议相互通信。选项包括 REST、gRPC或消息代理。

4、实现服务发现
为了相互通信,微服务需要通过网络相互发现。使用 Consul、Eureka 或 Kubernetes Services 等工具实现服务发现。

5、数据所有权
在微服务中,数据应由各个服务拥有和管理。目标应该是减少服务之间的耦合,以便它们能够独立发展。

6、使用复原模式
实现特定的复原模式以提高服务的可用性。示例:重试策略、缓存和速率限制。

7、注重安全
在基于微服务的系统中,攻击面非常大。您必须在服务通信路径的每个级别实现安全性。

8、集中式日志记录
日志对于查找系统中的问题非常重要。有了多种服务,它们就变得至关重要。

9、使用容器化技术
若要以隔离方式部署微服务,请使用容器化技术。Docker 和 Kubernetes 等工具可以帮助解决这个问题,因为它们旨在简化微服务的扩展和部署。
展开
dogstarhuang于2024-04-09 12:08发布的图片
3
什么是数据库?我又来汉化分享啦~
🙃🙃 #编程真好玩,小白科普:一图搞懂 什么是数据库?

主要有哪几种数据库类型?(图转自bytebytego,翻译整理by dogstar)

✅ 第1种、关系型数据库最为常见的莫过于关系型数据库,通过二维表格来存放数据。支持事务、关联查询等操作。典型代表的关系型数据库有:开源的MySQL、微软的SQLServer、甲骨文的Oracle。另外,还有偏向数据分析的OLAP数据库,其特点是:数据量巨大、分布式存储、偏向数据计算、聚合和转换,俗称的数据仓库/大数据分析。搭建好之后,不管背后存了多少TB/多少GB/甚至PB数据,只需要在应用层发起一条查询,就会有一堆服务器集群帮你计算(厉害吧 ^_^)。

✅ 第2种、键值数据库特点:在一个无序的键值集合中通过 key-value 键-值对 存放你的数据。很明显,key是唯一的、不能重复的(但value可以重复),无序(即不支持key排序)。那有什么好处呢?好处就是搜索查找指定的key非常棒!常见的就有高效缓存 Redis、Memcache等,也俗称NoSQL。

✅ 第3种、文档数据库可以理解为把一大坨数据存到一个key,它将数据存储为一系列的文档,通常使用JSON、BSON或XML格式进行序列化。例如:MongoDB。

✅ 第4种、列式存储数据库主要是以列相关存储架构进行数据存储的数据库,适合于批量数据处理和即时查询。相比行式数据库,可能可以更好解决“稀疏矩阵”的空间浪费,并且查询效率更高,特别适用 读多写少 的场景。典型的有PostgreSQL。🙉🙉

最后科普:
📙 1)Database是指数据库、SQL是指结构化查询语言(Structured Query Langauge),通过SQL语句,你只需要告诉数据库你要什么数据,而不用关心具体的实现过程。例如查询全世界年龄最大的人是谁。
📙 2)数据库表关系之间有:一对一(1:1)、一对多的关系(1:N),甚至多对多(N:M)。
📙 3)怎么编程?采用ORM框架。为什么?因为主流的编程思想是OOP面向对象编程,每个类中有属性和行为;而关系数据库是二维表,不能直接映射,因此需要通过ORM方式进行匹配。所以有时你会听到:Has-One、IS-One、HAS-Many、BELONGS-TO这些关系的表述。
展开
dogstarhuang于2024-03-26 16:22发布的图片
2
[呲牙]怎么画软件系统架构图?1分钟教你学会整理架构图

【DNS域名解析】
需要了解基本的域名解析过程。

【APP和用户端】
清楚明确你为你的用户提供了哪些软件,包括:微信小程序、H5、APP应用、网站、API接口还是其他。

【负载均衡】
如果是提供单机、单体、整机服务的,没有两台及以上服务器,可以忽略。但为了应对高并发和进行分布式部署,很有必要理解和规划此部分。
1、对于API网关,可以使用反向代理、限流限速、白名单/黑名单控制、身份验证等;
2、关于负载均衡,一方面阿里云/腾讯云等服务商都有提供此服务;另一方面,技术人员也可以通过Nginx直接进行配置和管理;
3、前端服务(有时也称为前台服务):如果已经实现前后端分离则一般称为前端服务,否则一般更多称为前台服务,并且要支持无状态的水平扩容;
4、CDN及边缘服务:静态资源、图片文件等多媒体的访问,文件通常很大、占流量,要分开存放;

【Dispatcher分发器】
如果不是做实时聊天IM服务的,可以忽略此部分。

【后端服务】
核心部分,共分为7大部分(我补充了最后2个部分),依次是:分布式ID生成器&分布式锁、数据库、对象存储、通用的扇出(fan-out)服务、缓存、异步队列、定时任务。

1、分布式ID生成器:
UUID生成、要自增,最好是提前预生成可以提升注册使用时的性能和速度;分布式锁,例如使用:Redis的Redlock、Google Chubby、Apache Zookeeper;
2、数据库:
常用的关系型RDMS数据库、NoSQL数据库、key-value等,要把冷热数据分开,要实现一主多从,做好数据库索引优化和性能参数调优;
3、对象存储:
阿里云/腾讯云/七牛云都有提供OSS对象存储服务,可以直接使用;
4、通用的扇出(fan-out)服务
包括有:通知服务、推荐算法、日记服务、搜索服务、BI服务(大数据分析)、支付服务等。
5、缓存
进驻内存的高效缓存,如常用的Redis、Memcached;以及分布式的集群,要注意同步机制;
6、异步队列(补充)
优点是:提升吞吐量提升、故障隔离、调用期间无阻塞、耦合度极低,灵活插拔,可替换、流量削峰,适合在:秒杀、后台耗时操作等场景;
7、定时任务

定时批量处理任务计划,缺点:存在单点故障、无法分布式调度、不适合高并发场景。
展开
dogstarhuang于2024-03-20 15:23发布的图片
3
✅一图搞懂:搜索引擎的工作原理

▶️ 第1步:爬虫
网络爬虫在互联网上扫描网页。它们跟踪从一个页面到另一个页面的 URL 链接,并将 URL 存储在 URL 存储中。爬虫会发现新内容,包括网页、图像、视频和文件。SEO做得好,可以提高自己网站在搜索引擎的收录和排名。

▶️ 第2步:索引
一旦网页被抓取,搜索引擎就会解析该页面,并将该页面上的内容编入数据库的索引。对内容进行分析和分类。例如,评估关键字、网站质量、内容新鲜度和许多其他因素以了解页面的内容。

▶️ 第3步:排名
搜索引擎使用复杂的算法来确定搜索结果的顺序。这些算法考虑了各种因素,包括关键字、页面的相关性、内容质量、用户参与度、页面加载速度等等。一些搜索引擎还会根据用户过去的搜索历史、位置、设备和其他个人因素来个性化结果。例如站长工具可以查到自己网站的排名和权重。

▶️ 第4步:查询
当用户执行搜索时,搜索引擎会筛选其索引以提供最相关的结果。

学会用小力气学到大知识。PS:关注我,持续给你分享技术干货。

(图转自bytebytego,翻译整理by dogstar)
展开
dogstarhuang于2024-02-18 18:20发布的图片
评论
#每天一个知识点# ✅一图搞懂:学习SQL的最佳路径

在1986年,SQL(结构化查询语句)成为了一种标准。在过去的40多年里,它也逐步变成了关系型数据库管理系统的特定领域语言。与其费时费办阅读最新的《ANSI SQL 2016》标准,不如先花几分钟快速了解下学习SQL的最佳路径。学会用小力气学到大知识。PS:关注我,持续给你分享技术干货。

对于SQL,主要有5个组成部分:

(1)DDL,数据定义语言,用于定义或者改变表的结构。例如:CREATE、ALTER、DROP等。

(2)DQL,是数据查询语言,用于从表中检索数据。例如:SELECT语句。

(3)DML,是数据操作语言,用于对数据库里表中的数据进行操作。例如:INSERT、UPDATE、DELETE等。

(4)DCL,是数据控制语言,用于设置或更改数据库用户或角色对数据的访问权限。例如:GRANT、REVOKE等。

(5)TCL,是事务控制语言,主要用来控制事务。例如:COMMIT、ROLLBACK等。

对一位后端开发工程师来说,应当熟悉了解这些知识;而作为一名数据分析师,则应当熟练使用DQL;可以根据你的岗位和身份重点掌握对应的主题。


(图转自bytebytego,翻译整理by dogstar)
展开
dogstarhuang于2024-02-18 18:04发布的图片
评论
春节放假前再学一学,✅一图搞懂:什么是顶级网络安全备忘单。

下图介绍了OSI模型中每一个层级可能会遇到的网络攻击。

7、应用层(为用户提供网络服务)
- SQL注入、XSS攻击(跨站脚本攻击)
- 恶意软件注入
- DDos攻击

6、表示层(处理数据的语法,如加密和解密,以及数据的转换)
- 编码/解码漏洞
- 格式字符串攻击
- 恶意代码注入

5、会话层(管理网络连接的事件顺序和流程的启动和关闭)
- 会话劫持
- 会话固定攻击
- 暴力攻击/暴力破解密码/弱密码

4、传输层(通过网络连接传输数据,常见的协议有TCP和UDP)
- 中间人攻击
- SYN/ACK 泛洪

3、网络层(添加路由概念,处理数据包的目标地址和源地址,确保数据包能够正确到达目的地)
- IP 欺骗
- 路由表操作
- DDos攻击

2、数据链路层(检查物理传输错误,将比特数据转换成数据帧,并进行寻址和管理)
- MAC地址欺骗
- ARP欺骗
- VLAN 跳频

1、物理层(负责通过网络通信媒介传输比特流数据,包括物理联网媒介如电缆连线和连接器的使用)
- 窃听
- 物理篡改
- 电磁干扰

(图转自bytebytego,翻译整理by dogstar)
展开
dogstarhuang于2024-02-07 10:13发布的图片
评论
下一页
个人成就
文章被点赞 198
文章被阅读 59,222
掘力值 2,368
收藏集
0
关注标签
5
加入于