娄底做网站/宁波seo优化公司排名
文章目录
- 服务端高并发分布式结构
- 名词基本概念
- 评价指标
- 1.单机架构
- 缺点
- 2.应用数据分离架构
- 应用服务集群架构
- 读写分离/主从分离架构
- 引入缓存-冷热分离架构
- 分库分表(垂直分库)
- 业务拆分⸺微服务
- 总结
服务端高并发分布式结构
名词基本概念
- 应⽤(Application)/系统(System)
为了完成一整套服务的一个程序或相互配合的程序群。例子:为了完成⼀项任务,⽽搭建的由⼀个⼈或者⼀群相互配的⼈组成的团队
- 模块(Module)/组件(Component)
当应⽤较复杂时,为了分离职责,将其中具有清晰职责的、内聚性强的部分,抽象出概念,便于理解。例子:军队中为了进⾏某据点的攻克,将⼈员分为突击⼩组、爆破⼩组、掩护⼩组、通信⼩组等
- 分布式(Distributed)
分布式(Distributed)是指将计算、任务或数据分散到多个独立的计算机或节点上进行处理的方式。(即:将系统中的多个模块被部署于不同服务器之上)与传统的集中式系统相比,分布式系统具有更高的灵活性、可扩展性和冗余性。
在分布式系统中,各个节点(模块)可以通过网络进行通信和协作,共同完成任务。每个节点独立地执行一部分工作,并根据需要与其他节点进行交互。节点之间可以相互传递消息、共享资源和数据,以实现更加复杂和大规模的计算和服务。(跨主机之间的模块之间的通信基本要借助⽹络⽀撑完成)
例子1:Web服务器与数据库分别⼯作在不同的服务器上,或者多台Web服务器被分别部署在不同服务器上
例子2:为了更好的满⾜现实需要,⼀个在同⼀个办公场地的⼯作⼩组被分散到多个城市的不同⼯作场地中进⾏远程配合⼯作完成⽬标。
- 集群(Cluster)
被部署于多台服务器上的、为了实现特定⽬标的⼀个/组特定的组件,整个整体被称为集群。比如,多个MySQL⼯作在不同服务器上,共同提供数据库服务⽬标,可以被称为⼀组数据库集群
分布式和集群的区别
分布式强调的是物理形态,即⼯作在不同服务器上并且通过⽹络通信配合完成任务。 =>物理上的多台主机
集群更在意逻辑形态,即是否为了完成特定服务⽬标 =>逻辑上的多台主机,比如:一台主机上部署多个服务器程序
- 主(Master)/从(Slave)
集群中,通常有⼀个程序需要承担更多的职责,被称为主;其他承担附属职责的被称为从。
⽐如MySQL集群中,只有其中⼀台服务器上数据库允许进⾏数据的写⼊(增/删/改),其他数据库的数据修改全部要从这台数据库同步⽽来,则把那台数据库称为主库,其他数据库称为从库。主库:可以读和写入 从库:只可以进行读取
- 中间件(Middleware)
⼀类提供不同应⽤程序⽤于相互通信的软件,即处于不同技术、⼯具和数据库之间的桥梁
例子:⼀家饭店开始时,会每天去市场挑选买菜,但随着饭店业务量变⼤,成⽴⼀个采购部,由采购部专职于采买业务,称为厨房和菜市场之间的桥梁
评价指标
- 可⽤性(Availability)
考察单位时间段内,系统可以正常提供服务的概率/期望。例如:年化系统可⽤性=系统正常提供服务时⻓/⼀年总时⻓。平常说的4个9即系统可以提供99.99%的可⽤性,5个9是99.999%的可⽤性
- 响应时⻓(ResponseTimeRT)
指⽤⼾完成输⼊到系统给出⽤⼾反应的时⻓,例如:点外卖业务的响应时⻓=拿到外卖的时刻-完成点单的时刻
需要衡量的是最⻓响应时⻓、平均响应时⻓和中位数响应时⻓。这个指标原则上是越⼩越好,但很多情况下由于实现的限制,需要根据实际情况具体判断
- 吞吐(Throughput)vs并发(Concurrent)
吞吐考察单位时间段内,系统可以成功处理的请求的数量。并发指系统同⼀时刻⽀持的请求最⾼量。实践中,并发量往往⽆法直接获取,很多时候都是⽤极短的时间段(⽐如1秒)的吞吐量做代替
例如⼀条辆⻋道⾼速公路,只有两条通道,但是⼀分钟可以通过20辆⻋,则并发是2,⼀分钟的吞吐量是20
1.单机架构
单机架构:只有一台服务器,这台服务器用来负责所有的工作。整个系统在物理上只由一个节点组成,所有的计算和存储都发生在这个节点上,比如一个电商网站:
- Web服务器软件:Tomcat、Netty、Nginx、Apache
- 数据库软件:MySQL、Oracle、PostgreSQL、SQL Server
注意:在单机程序当中,本质上可以把数据库服务器也去掉,用一个应用服务器即负责业务,又负责数据存储
大部分的中小公司的产品,都是这种单机架构,整个系统只有一个单机服务器。由于计算机硬件发展速度非常之快,主机的性能都很高,能支持非常高的并发和非常大的数据存储,已经能满足大部分中小公司的需求。
单机架构相对于分布式架构来说,系统比较容易进行管理和维护,数据传输和处理的延迟较低,易于部署
当业务需求进一步增长时,用户量和数据量等都会增加,一台服务器难以应对时,就需要引入更多的主机和其他硬件资源
缺点
- **有限的性能和扩展性:**由于计算和存储资源都集中在一个节点上,无法有效地利用分布式环境下多个节点的计算和存储能力。当系统的工作负载和数据量增加时,单机架构可能无法满足性能和扩展性(比如主机上能够增加的硬件资源等,都是有限的)的要求。
- 单点故障:由于只有一个节点,如果这个节点出现故障或停机,整个系统将无法正常运行。
- 硬件资源限制:单个节点的硬件资源(CPU、内存、磁盘,网络等)是有限的,无法满足大规模数据处理和存储的需求。
- 服务器每次收到一个请求,都是需要消耗上述的硬件资源去处理请求,如果同一时刻处理的请求太多,就可能导致某个硬件资源不够用,就会导致服务器处理请求的时间变长/处理出错
如果真的遇到了上述的场景,如何处理
1.开源 => 增加更多的硬件资源,但是一台主机上可以增加的硬件资源也是有限的,取决于主板的拓展能力,如果一台主机拓展到极限了还是不够,那么就只能引入多台主机了,引入多台主机后需要在软件上做出对应的调整和适配。此时系统就可以称为是分布式系统,系统复杂性大大提高,出现bug概率提高
2.节流 =>在软件上做优化,通过性能测试,找到是哪个环节出现的瓶颈
2.应用数据分离架构
系统的访问量逐步上升,逐渐逼近了硬件资源的极限,⾯对当前的性能压⼒,我们需要未⾬绸缪去进⾏系统重构、架构挑战,以提升系统的承载能⼒,可以选择将应⽤和数据分离的做法,可以最⼩代价的提升系统的承载能⼒
引入多台主机后,就不是单机架构了,系统就可称为“分布式系统”
应用服务器和数据库服务器就是不同的服务器。应⽤服务通过⽹络访问数据库服务当中的数据,并且可以根据不同服务的特点配置不同的服务器,从而达到更高的性价比
- 应用服务器会包含更多的业务逻辑,需要大量的计算分析,对cpu,内存性能要求高。所以可以配置CPU比较好的主机
- 数据库服务器需要更大的硬盘空间,更快的数据访问速度,对空间要求高。可以配置更大硬盘的服务器,甚至可以上固态硬盘(SSD)
硬盘分类:
- 机械硬盘:便宜,访问速度慢
- 固态硬盘:贵,访问速度快
应用服务集群架构
随着数据量进一步增加,单台应⽤服务器已经⽆法满⾜需求了。单机应⽤服务器⾸先遇到了瓶颈,此时可以有两种解决方法:
- 垂直扩展/纵向扩展:通过购买性能更优、价格更⾼的应⽤服务器来应对更多的流量。这种⽅案的优势在于完全不需要对系统软件做任何的调整;但劣势也很明显:硬件性能和价格的增⻓关系是⾮线性的,意味着选择性能2倍的硬件可能需要花费超过4倍的价格,其次硬件性能提升是有明显上限的
- ⽔平扩展/横向扩展:通过调整软件架构,增加应⽤层硬件,将用户流量分担到不同的应⽤层服务器上,来提升系统的承载能⼒
优势在于成本相对较低,并且提升的上限空间也很⼤。但劣势是带给系统更多的复杂性,需要技术团队有更丰富的经验,并且为了解决⽤⼾流量向哪台应⽤服务器分发的问题,需要⼀个专⻔的系统组件(负载均衡器)做流量分发
- 用户的请求先到达负载均衡器/网关服务器,
负载均衡器(Load Balancer):也是一个单独的服务器,或者称为网关。是一种用于分发网络流量的设备或软件。它位于应用程序和网络基础设施之间,将传入的流量(请求)分配到多个服务器或计算资源上,以实现负载的均衡和性能的优化。(和之前学习的多线程思想相似,都是通过流量分发到多处进行处理,以提高效率)
负载均衡器的主要功能包括:
- 流量分发:接收传入的请求流量,将其分发到后端的多个服务器或计算资源上,以确保每个服务器都能得到相对均等的工作负载。
- 负载调度:采用不同的调度算法,如轮询、权重、最少连接等,来决定请求应该被分发到哪个后端服务器上。根据服务器的性能和负载情况,动态地调整流量分发策略。
- 策略1:轮询算法—将请求依次分给不同的应⽤服务器
- 策略2:随机选择算法—每次随机将请求分发给一台应用服务器
- 策略3:基于权重的轮询算法—为不同的服务器(⽐如性能不同)赋予不同的权重,能者多劳
- 策略4:⼀致哈希散列算法—通过计算⽤⼾的特征值(⽐如?IP?地址)得到哈希值,根据哈希结果做分发,优点是确保来⾃相同⽤⼾的请求总是被分给指定的服务器
- 高可用性:可以监控后端服务器的可用性,并在某个服务器发生故障或不可用时,自动将流量转移到其他正常工作的服务器上,确保服务的连续性和高可用性。
- 健康检查:可以定期检查后端服务器的健康状态,如响应时间、负载情况等,并根据检查结果来决定是否将流量分发给该服务器。
- 扩展性:通过添加更多的后端服务器,可以实现系统的水平扩展,以满足不断增长的流量需求。
负载均衡器的流量承担能力是远远超过应用服务器的,因为它只用单纯的分配任务,服务器是需要进行执行任务的,所花时间是更长的。如果超过负载均衡器的承受能力,就引入更多的负载均衡器,也就是多个机房,用来分担流量
- 负载均衡软件:Nginx、HAProxy、LVS、F5等
读写分离/主从分离架构
通过负载均衡解决了请求量过大的问题,大量请求可以得到并行处理了,⽆论扩展多少台服务器,这些请求最终都会从数据库读写数据,那么到一定程度上,就会到达瓶颈点。并且不能将数据库服务器和应用服务器一样进行扩展,因为将数据分散到不同的数据库后,会破坏数据的一致性,例如转账,如果一个数据库的数据修改了,另一个数据库没修改,就造成数据不一致
解决办法:保留⼀个主要的数据库作为写⼊数据库,其他的数据库作为从属数据库。
- 从库的所有数据全部来⾃主库的数据,经过同步后,从库可以维护着与主库⼀致的数据
- 为了分担数据库的压⼒,我们可以将写数据请求全部交给主库处理,但读请求分散到各个从库中
应⽤中需要对读写请求做分离处理,所以可以利⽤⼀些数据库中间件,将请求分离的职责托管出去。例如:MyCat、TDDL、Amoeba、Cobar等类似数据库中间件
引入缓存-冷热分离架构
实际上读的频率是远高于写的频率,因此主数据库服务器一般是一个,从数据库服务器有多个(一主多从),同时从数据库通过负载均衡的方式,让应用服务器进行访问。针对数据库响应速度比较慢的问题,将数据进行“冷热”划分,将热点数据放到缓存中,冷的数据放到硬盘。
- 热点数据:⼀些数据的读取频率远⼤于其他数据的读取频率
针对热数据,为了提升其读取的响应时间,可以增加本地缓存,并在外部增加分布式缓存。缓存热⻔商品信息或热⻔商品的html⻚⾯等。通过缓存能把绝⼤多数请求在读写数据库前拦截掉,⼤⼤降低数据库压⼒
注意:缓存服务器中存放一小部分热点数据,根据二八原则:20%的数据,能够支持80%的访问量。数据库中存储的还是完整的数据,只是将热点数据放到缓存中了,缓存的速度非常快,但是容量小,成本高,也是Redis出现的位置。Redis的核心功能就是作为缓存服务器
代价:数据的一致性问题,如果存储服务器的数据被修改,访问时使用的是缓存的数据,那就出现错误了
分库分表(垂直分库)
引入分布式系统不光要去应对高的请求量,也需要应对更大的数据量。虽然一个服务器存储的数据量可以达到几十个TB,即使如此面对不同的应用场景,也会存不下。需要使用多台主机存储数据,所以可以针对数据库进行分库分表
原本是一个数据库服务器,这个服务器上存储了多个数据库,现在由于数据量太大,一个数据库服务器存不下那么多数据,就引入多个数据库服务器,每个服务器上存储一个或一部分数据库
如果某个表特别大,一台服务器存不下,也可以针对表进行拆分,使用多个存储服务器进行存储
业务拆分⸺微服务
之前的应用服务器,一个服务器中要实现所有的业务,会导致这一个服务器的代码越来越复杂。按照功能拆成多组微服务,就可以便于代码的维护,互相之间对数据的直接访问进⾏隔离,可以利⽤Gateway、消息总线等技术,实现相互之间的调⽤关联。甚⾄可以把⼀些类似⽤⼾管理、安全管理、数据采集等业务提成公共服务
应用服务器复杂了之后,就需要更多的人力资源进行维护,增加了管理成本。为了减少管理成本,就可以把一个复杂的服务器,拆分成更多的,功能单一的,更小的服务器(微服务),有利于划分组织结构,分多组进行管理
引入微服务主要是为了解决人的管理问题,付出的代价有:
1.系统性能下降,多个被拆出来的服务,功能之间需要更依赖网络通信。解决办法:引入更多的机器提升性能,万兆网卡等等配套设施
2.系统复杂程度提高,可用性降低,出现问题的概率增加。 解决办法:引入更丰富的报警机制,监控系统,以及运维人员
总结
1.单机架构(应用程序+数据库服务器)
2.数据库和应用程序分离
- 应用程序和数据库服务器分别放到不同的主机上进行部署
3.引入负载均衡,将应用服务器集群化
- 通过负载均衡器把请求比较均匀的分发给集群当中的每个应用服务器
- 好处是:当集群当中的某个主机挂了,其它的主机仍然可以承担服务,提高了整个系统的可用性
4.引入读写分离,数据库主从结构
- 一个数据库节点作为主节点, 其它N个数据库节点作为从节点,主节点负责写数据,从节点负责读数据,主节点需要把修改过的数据同步给从节点
5.引入缓存,冷热数据分离
- 进一步的提升了服务器针对请求的处理能力 【28原则】
- 引入的问题:数据库和缓存的一致性问题
6.引入分库分表,数据库能够进一步拓展存储空间
7.引入微服务,从业务上进一步拆分应用服务器
- 从业务功能的角度,把应用服务器拆分成更多的功能更单一,更简单,更小的服务器
相关文章:

【Redis】高并发分布式结构服务器
文章目录 服务端高并发分布式结构名词基本概念评价指标1.单机架构缺点 2.应用数据分离架构应用服务集群架构读写分离/主从分离架构引入缓存-冷热分离架构分库分表(垂直分库)业务拆分⸺微服务 总结 服务端高并发分布式结构 名词基本概念 应⽤࿰…...

微信小程序拍照页面自定义demo
api文档 <template><div><imagemode"widthFix"style"width: 100%; height: 300px":src"imageSrc"v-if"imageSrc"></image><camerav-else:device-position"devicePosition":flash"flash&qu…...

单目标应用:进化场优化算法(Evolutionary Field Optimization,EFO)求解微电网优化MATLAB
一、微网系统运行优化模型 微电网优化模型介绍: 微电网多目标优化调度模型简介_IT猿手的博客-CSDN博客 二、进化场优化算法EFO 进化场优化算法(Evolutionary Field Optimization,EFO)由Baris Baykant Alagoz等人于2022年提出&…...

推荐算法面试
当然可以,请看下面的解释和回答: 一面(7.5) 问题:推荐的岗位和其他算法岗(CV,NLP)有啥区别? 解释: 面试官可能想了解你对不同算法岗位的理解,包…...

长图切图怎么切
用PS的切片工具 切片工具——基于参考线的切片——ctrl+shift+s 过长的图片怎么切 ctrl+alt+i 查看图片的长宽看图片的长宽来切成两个板块(尽量中间切成两半)用选区工具选中下半部分的区域——在选完时不…...

动手学深度学习 - 学习环境配置
学习环境配置 1、安装 Miniconda1.1 下载 miniconda31.2 环境变量配置1.3 安装成功测试1.4 配置文件1.5 使用conda创建、使用、删除环境1.6 conda 常用命令 2、使用 miniconda 安装 d2l2.1 下载 d2l 安装包2.2 安装 d2l 1、安装 Miniconda 参考: https://www.jb51.n…...

洛谷 B2004 对齐输出 C++代码
目录 推荐专栏 题目描述 AC Code 切记 推荐专栏 http://t.csdnimg.cn/Z1tCAhttp://t.csdnimg.cn/Z1tCA 题目描述 题目网址:对齐输出 - 洛谷 AC Code #include<bits/stdc.h> using namespace std; typedef long long ll; int main() { int a,b,c;cin&g…...

seccomp学习 (1)
文章目录 0x01. seccomp规则添加原理A. 默认规则B. 自定义规则 0x02. seccomp沙箱“指令”格式实例Task 01Task 02 0x03. 总结 今天打了ACTF-2023,惊呼已经不认识seccomp了,在被一道盲打题折磨了一整天之后,实在是不想面向题目高强度学习了。…...

Linux指令【上】
目录 目录结构 ls cd stat touch mkdir whoami 查看当前帐号是谁 who 查看当前有哪些人在使用 pwd 当前的工作目录 目录结构 目录结构就是一颗多叉树的样子 路径 我们从 / 目录开始,定位一个叶子文件的…...

RK3568-clock
pll锁相环 总线 gating rk3568.dtsi pmucru: clock-controller@fdd00000 {compatible = "rockchip,rk3568-pmucru";reg = <0x0 0xfdd00000 0x0 0x1000>;rockchip,grf = <&grf>;rockchip,pmugrf = <&pmugrf>;#clock-cells = <1>;#re…...

新恶意软件使用 MSIX 软件包来感染 Windows
人们发现,一种新的网络攻击活动正在使用 MSIX(一种 Windows 应用程序打包格式)来感染 Windows PC,并通过将隐秘的恶意软件加载程序放入受害者的 PC 中来逃避检测。 Elastic Security Labs 的研究人员发现,开发人员通常…...

干货!数字IC后端入门学习笔记
很多同学想要了解IC后端,今天大家分享了数字IC后端的学习入门笔记,供大家学习参考。 很多人对于后端设计的概念比较模糊,需要做什么也都不甚清楚。 有的同学认为就是跑跑 flow、掌握各类工具。 事实上,后端设计的工作远不止于此。…...

力扣:144. 二叉树的前序遍历(Python3)
题目: 给你二叉树的根节点 root ,返回它节点值的 前序 遍历。 来源:力扣(LeetCode) 链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 示例: 示例 1: 输…...

【数据挖掘 | 数据预处理】缺失值处理 重复值处理 文本处理 确定不来看看?
🤵♂️ 个人主页: AI_magician 📡主页地址: 作者简介:CSDN内容合伙人,全栈领域优质创作者。 👨💻景愿:旨在于能和更多的热爱计算机的伙伴一起成长!!&…...

二叉树问题——前/中/后/层遍历(递归与栈)
摘要 博文主要介绍二叉树的前/中/后/层遍历(递归与栈)方法 一、前/中/后/层遍历问题 144. 二叉树的前序遍历 145. 二叉树的后序遍历 94. 二叉树的中序遍历 102. 二叉树的层序遍历 二、二叉树遍历递归解析 // 前序遍历递归LC144_二叉树的前序遍历 class Solution {publi…...

Nor Flash和Nand Flash的区别——笔记
NorFlash:串行存储器、读取速度比较快(比NandFlash快),适合用于存储程序代码和执行代码,但NorFlash写入速度比较慢、容量比较小。数据线和地址线是分开的。 NandFlash:并行存储器、写入速度比较快…...

7+共病思路。WGCNA+多机器学习+实验简单验证,易操作
今天给同学们分享一篇共病WGCNA多机器学习实验的生信文章“Shared diagnostic genes and potential mechanism between PCOS and recurrent implantation failure revealed by integrated transcriptomic analysis and machine learning”,这篇文章于2023年5月16日发…...

开发者看亚马逊云科技1024【文末有福利~】
1024,2023年的1024,注定是不平凡的1024,AIGC已经成为了整个年度的主题,亚马逊云科技在这个开发者每年最重要的日子,举办了生成式AI构建者大会,让我们一起再次了解本次生成式AI构建者大会,回顾会…...

操作系统(Linux)外壳程序shell 、用户、权限
文章目录 操作系统和shell外壳Linux用户普通用户的创建和删除用户的切换 Linux 权限Linux 权限分类文件访问权限修改文件的权限权限掩码粘滞位 大家好,我是纪宁。 这篇文章将介绍 Linux的shell外壳程序,Linux用户切换机Linux权限的内容。 操作系统和shel…...

C文件操作
目录 1. 什么是文件 2. 为什么要有文件 3. 文件名 4. 文件类型 5. 文件指针 6. 文件的打开和关闭 7. 文件的顺序读写 7.1. fgetc 7.2. fputc 7.3. fgets 7.4. fputs 7.5. fscanf 7.6. fprintf 7.8. sscanf 7.9. sprintf 7.9. fread 7.10. fwrite 8. 文件的随…...

drawio特性
drawio的特性 drawio是领先的基于Web技术的草图和图表功能功能的应用。 保证数据的安全 集成了各种不同的平台,和提供了在线的免费编辑器,可以使用app.diagrams.net来方案,drawio本身不会存储用户的数据。 随着互联网时代的发展࿰…...

LLM-Embedder
1. 目标 训出一个统一的embedding模型LLM-Embedder,旨在全面支持LLM在各种场景中的检索增强 2. 模型的四个关键检索能力 knowledge:解决knowledge-intensive任务memory:解决long-context modelingexample:解决in-context learn…...

xsync 集群远程同步脚本
xsync 集群分发 脚本 (1)需求:循环复制文件到所有节点的相同目录下 (2)需求分析: (a)rsync 命令原始拷贝: rsync -av /opt/module roothadoop103:/opt/(b&am…...

30秒get视频号视频如何下载,保存视频号视频到本地方法!
终于可以告别无法下载视频号视频的烦恼啦!下面是一些只需 30 秒就能get到的t视频号视频如何下载方法,让我们一起来探索如何保存视频号视频到本地方法吧! 首先,要记得这些方法仅适用于个人观看或学习使用,不可用于商业用…...

优化改进YOLOv5算法:加入SPD-Conv模块,让小目标无处遁形——(超详细)
1 SPD-Conv模块 论文:https://arxiv.org/pdf/2208.03641v1.pdf 摘要:卷积神经网络(CNNs)在计算即使觉任务中如图像分类和目标检测等取得了显著的成功。然而,当图像分辨率较低或物体较小时,它们的性能会灾难性下降。这是由于现有CNN常见的设计体系结构中有缺陷,即使用卷积…...

【数据结构】搜索树 与 Java集合框架中的Set,Map
作者主页:paper jie_博客 本文作者:大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。 本文录入于《JAVA数据结构》专栏,本专栏是针对于大学生,编程小白精心打造的。笔者用重金(时间和精力…...

掌握组件缓存:解开Vue.js中<keep-alive>的奥秘
🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…...

Ajax学习笔记第5天
无论做什么,都请记得那是为自己而做,那就毫无怨言! 【1. 跨域】 1.什么是跨域 跨域是指浏览器不能执行其他网站的脚本。它是浏览器同源策略造成的,是浏览器对JS实施的安全限制。 2.常见的跨域场景 3.什么事同源策略 ÿ…...

20.1 OpenSSL 字符BASE64压缩算法
OpenSSL 是一种开源的加密库,提供了一组用于加密和解密数据、验证数字证书以及实现各种安全协议的函数和工具。它可以用于创建和管理公钥和私钥、数字证书和其他安全凭据,还支持SSL/TLS、SSH、S/MIME、PKCS等常见的加密协议和标准。 OpenSSL 的功能非常…...

Panda3d 教程
Panda3d 教程 偶然之余看到了 Panda3d 这个3D引擎,觉得代码开源然后又比较轻量级,感觉还是比较好上手的,因此就想去学习一下,然后把学习过程记录下来。 网上也都找了不少关于Panda3d 方面的教程,但是感觉都不是很好&a…...