当前位置: 首页 > news >正文

Nginx的负载均衡

一、概述

Nginx负载均衡是一种通过将客户端请求分发到多个后端服务器的技术,旨在提高系统的吞吐量、可用性和容错性。

二、Nginx负载均衡工作原理

Nginx作为反向代理服务器,接收客户端的请求,并根据配置的负载均衡算法将请求转发到后端服务器。其工作流程如下:

  1. 客户端请求到达Nginx。

  2. Nginx根据配置的负载均衡策略选择后端服务器。

  3. Nginx将请求转发到选定的后端服务器。

  4. 后端服务器处理请求并返回响应。

  5. Nginx将响应返回给客户端。

三、负载均衡可以实现的场景 

3.1、四层负载均衡 

所谓四层负载均衡指的是OSI七层模型中的传输层,那么传输层Nginx已经能够支持TCP/IP的控制,所以只需要对客户端的请求进行TCP/IP协议包的转发就可以实现负载均衡,它的好处就是性能非常快、只需要底层进行应用处理,而不需要一些复杂的逻辑。

3.2、七层负载均衡 

七层负载均衡是在应用层,它可以完成很多方面的协议请求,比如我们所说的http的负载均衡,它可以实现http信息的改写、头信息的改写、安全应用规则控制、URL匹配规则控制,以及转发、rewrite等等的规则。Nginx是一个典型的七层负载均衡SLB。

 3.3、四层负载均衡与七层负载均衡的区别

四层负载均衡数据包在底层就进行了分发,而七层负载均衡数据包要在第七层才进行分发,所以,七层负载均衡的效率没有四层负载均衡效率高。
七层负载就均衡更贴近于服务,http协议就是在七层,我们可以通过Nginx做会话保持,URL路径规则匹配、Head头改写等等,这些都是四层负载均衡无法实现的。
四层负载均衡可以解决七层负载均衡的端口限制问题。
四层负载均衡可以解决七层负载均衡高可用问题。

四、Nginx负载均衡调度算法

调度算法

概述

轮循

按时间顺序逐一分配到不同的后端服务器

Weight(加权轮循)

Weight的值越大,分配到的访问几率就越高

Ip_hash

每个请求按访问的IPhash值结果进行分配,来自同一个IP的客户端会访问固定的服务器

url_hash

按照访问的URLhash值结果进行分配,每个URL定向到同一个后端服务器

Least_conn

最少链接数,哪个服务器链接数少就发给哪个

五、负载均衡后端状态 

状态

概述

down

当前的server不参与负载均衡

backup

预留的备份服务器

Max_fails

允许请求失败的次数

Fail_timeout

经过max_fails失败后,服务暂停时间

Max_conns

限制最大的连接接受数

5.1、down状态 

5.1.1、实验虚拟机配置

服务器:web01 10.0.0.7   172.16.1.7                  #安装Nginx、PHP、MuSQL

服务器:web02 10.0.0.8   172.16.1.8                  #安装Nginx、PHP、MuSQL

负载均衡服务器: lb  10.0.0.6  172.16.1.6           #安装Nginx

5.1.2、在负载均衡服务器上配置服务文件

upstream webs {

        server 172.16.1.7  down;          #表示web01服务器不参与负载均衡服务

        server 172.16.1.8;

server {

       listen 80;

       server_name www.lv.com;

    location / {

       proxy_pass http://webs;

       include proxy_params;

    }

}

5.2、backup状态 

5.2.1实验虚拟机配置

服务器:web01 10.0.0.7   172.16.1.7                  #安装Nginx、PHP、MuSQL

服务器:web02 10.0.0.8   172.16.1.8                  #安装Nginx、PHP、MuSQL

负载均衡服务器: lb  10.0.0.6  172.16.1.6           #安装Nginx

5.2.2、 在负载均衡服务器上配置服务文件

upstream webs {

         server 172.16.1.7  backup;                  #预留的备份服务器

         server 172.16.1.8;

server {

        listen 80;

        server_name www.lv.com;

    location / {

        proxy_pass http://webs;

        include proxy_params;

       }

}

 六、实验演示案例(PhpMyadmin)

6.1、实验虚拟机配置

服务器:web01 10.0.0.7   172.16.1.7                  #安装Nginx、PHP、MuSQL

服务器:web02 10.0.0.8   172.16.1.8                  #安装Nginx、PHP、MuSQL

数据库:mysql  10.0.0.51 172.16.1.51                #安装mariadb-server

负载均衡服务器: lb  10.0.0.6  172.16.1.6           #安装Nginx

6.2、服务器web01配置

6.2.1、安装Nginx服务 

6.2.1.1、配置Nginx官方扩展仓库

 vim /etc/yum.repos.d/nginx.repo

 [nginx-stable]
 name=nginx stable repo
 baseurl=http://nginx.org/packages/centos/7/$basearch/
 gpgcheck=0
 enabled=1
 gpgkey=https://nginx.org/keys/nginx_signing.key
 module_hotfixes=true

6.2.1.2、安装Nginx服务

 yum -y install nginx

 6.2.1.3、创建启动用户www

groupadd -g 666 www

useradd -u666 -g 666 -M -s /sbin/nologin www 

6.2.1.4、修改Nginx配置文件 

vim /etc/nginx/nginx.conf

user  www;
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;

6.2.1.5、编辑PhpMyadmin配置文件

 vim /etc/nginx/conf.d/admin.conf

server {

     listen 80;

     server_name www.admin.com;

     root /app/admin;

  location / {

     index index.html index.php;

   }

  location ~ \.php$ {

    fastcgi_pass 127.0.0.1:9000;

    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

    include fastcgi_params;

   }

}

6.2.1.6、检查配置文件语法正确性 

nginx -t 

6.2.1.7、启动Nginx并加入开机自启动 

systemctl  start nginx

systemctl enable nginx 

6.2.1.8、创建PhpMyadmin代码目录

 mkdir -p /app/admin

6.2.1.9、将PhpMyadmin代码拷贝到PhpMyadmin代码目录

lz /app/phpMyAdmin-5.2.1-all-languages.zip

 6.2.1.10、解压PhpMyadmin代码

tar zxf phpMyAdmin-5.2.1-all-languages.zip

 6.2.1.10、将PhpMyadmin目录下的代码移到/app/admin

mv /app/admin/phpMyAdmin-5.2.1-all-languages/*  /app/admin/

6.2.2、安装PHP服务 

6.2.2.1、安装PHP应用软件组 

yum -y install php php-bcmath php-cli php-common php-devel php-embedded php-fpm php-gd php-intl php-mbstring php-mysqlnd php-opcache php-pdo php-process php-xml php-json 

6.2.2.2、修改PHP配置文件 

vim /etc/php-fpm.d/www.conf

同步启动用户与Nginx保持一致 www用户
       24:user = www
       26:group = www
修改监听方式
       38:listen = 127.0.0.1:9000

 6.2.2.3、启动PHP服务并加入开机自启动

systemctl start php-fpm

syatemctl enable php-fpm

6.3、在mysql服务器上安装mariadb服务 

6.3.1 、安装mariadb

yum -y install mariadb-server 

6.3.2、开启数据库并加入开机自启动 

systemctl start mariadb

systemctl enable mariadb 

6.3.3、创建数据库登录秘密 

mysqladmin password 'lyx123.com' 

 6.3.4、登录数据库

mysql -uroot -plyx123.com 

6.3.5、创建数据库远程登录用户 

grant all on *.* to lyx@'%' identified by 'lyx123.com';

6.3.6、创建admin数据库 

create database admin; 

6.3.7、检查数据库 

show databases; 

 6.4、本地hosts解析

10.0.0.7  www.admin.com 

6.5、浏览器访问 

6.6、服务器web02配置 

6.6.1、安装Nginx服务与PHP服务同web01服务器一样
6.6.2、创建代码目录文件 

mkdir -p /app/admin 

6.6.3、同步web01的admin代码到web02下 (当前在web02服务器/app/admin)

rsync -avz --delete root@10.0.0.7:/app/admin/*   ./

6.7、本地hosts解析 

10.0.0.8 www.admin.com 

6.9、浏览器访问 

6.10、在mysql服务器安装会话保持

 6.10.1、安装redis服务

yum -y install redis 

6.10.2、 配置redis的监听端口

vim /etc/redis/redis.conf

75:bind 127.0.0.1 172.16.1.51

6.10.3、启动redis服务并加入开机自启动

systemctl start redis

systemctl enable redis 

6.10.4、查看登录 

redis -cli

127.0.0.1:6379> keys *
(empty array)
127.0.0.1:6379> quit 

6.11、将两台web服务写入到redis (两台服务器都做如下操作)

6.11.1、安装redis插件 

yum -y install  gcc glibc gcc-c++ pcre-devel openssl-devel patch

6.11.2、下载redis源码包到/root

 wget http://pecl.php.net/get/redis-4.0.1.tgz

6.11.3、在/root目录下解压redis源码包 

tar zxf  redis-4.0.1.tgz

6.11.4、配置初始化 

cd  redis-4.0.1

phpize

./configure

6.11.5、编译安装 

make && make install 

6.11.6、开启redis插件功能 

vim /etc/php.ini

1357:extension=redis.so     #添加此内容

1222:session.save_handler = redis
1255:session.save_path = "tcp://172.16.1.51:6379"

6.11.7、修改 配置文件

vim /etc/php-fpm.d/www.conf

;php_value[session.save_handler] = files
;php_value[session.save_path]    = /var/lib/php/session
php_value[soap.wsdl_cache_dir]  = /var/lib/php/wsdlcache
;php_value[opcache.file_cache]  = /var/lib/php/opcache

6.11.8、重启PHP服务 

systemctl restart php-fpm 

6.12、搭建负载均衡 

6.12.1、 负载均衡服务器配置Nginx官方仓库

 vim /etc/yum.repos.d/nginx.repo

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

6.12.2、安装Nginx服务 

yum -y install nginx 

6.12.3、编辑负载均衡配置文件 

vim /etc/nginx/conf.d/lb.conf

upstream lb {

       server 172.16.1.7:80;

       server 172.16.1.8:80;

server {

      listen 80;

      server_ name www.admin.com;

  location / {

      proxy_pass http://lb;

      proxy_set_header HOST $host;

      proxy_buffers 256 4k;                        
      proxy_max_temp_file_size 0k;
      proxy_connect_timeout 60;                  
      proxy_send_timeout 60;                   
      proxy_read_timeout 60;                     
      proxy_next_upstream error timeout invalid_header http_502 http_500 http_503 http_504;
      proxy_set_header X-Forwarded-For $proxy_add__x_forwarded_for;

}

}

6.12.4、启动Nginx并加入开机自启动 

systemctl start nginx

systemctl enable nginx 

6.13、本地hosts解析 

10.0.0.6    www.admin.com 

6.14、浏览器访问测试 

七、总结

通过合理配置负载均衡策略,Nginx能够有效提升系统性能、容错能力和扩展性,是现代互联网架构中不可或缺的一部分。

相关文章:

Nginx的负载均衡

一、概述 Nginx负载均衡是一种通过将客户端请求分发到多个后端服务器的技术,旨在提高系统的吞吐量、可用性和容错性。 二、Nginx负载均衡工作原理 Nginx作为反向代理服务器,接收客户端的请求,并根据配置的负载均衡算法将请求转发到后端服务…...

vue3组件el-table报错

传给table标签的data不是数组就会报错, 摁着商品管理代码找了半天也没发现哪里错了,而且关闭报错表格数据能正常显示, 。。。 最后发现我还有个订单管理页面,这里面的data初始化成ref( )了,把这个组件注释掉&#xf…...

天聚地合:引领API数据流通服务,助力数字经济发展

天聚地合:引领API数据流通服务,助力数字经济发展 爱企猫01月24日消息:天聚地合(苏州)科技股份有限公司,成立于2010年,总部位于苏州,是一家综合性API数据流通服务商。公司旗下品牌‘聚合数据’已开发超过790个API,服务百万企业级客…...

AIGC的企业级解决方案架构及成本效益分析

AIGC的企业级解决方案架构及成本效益分析 一,企业级解决方案架构 AIGC(人工智能生成内容)的企业级解决方案架构是一个多层次、多维度的复杂系统,旨在帮助企业实现智能化转型和业务创新。以下是总结的企业级AIGC解决方案架构的主要组成部分: 1. 技术架构 企业级AIGC解决方…...

企业知识管理平台的对比分析与优化策略探讨

内容概要 随着信息技术的飞速发展,企业对知识管理的重视程度日益提高。知识管理不仅有助于知识的积累和传承,更在于提升企业整体运营效率和创新能力。为此,众多企业纷纷引入知识管理平台,以便更好地管理和利用其内部知识资源。 …...

分布式数据库与集中式数据库

分布式数据库 分布式数据库是在集中式数据库系统的基础上发展起来的,由多个相互连接并分布在不同物理位置的数据库组成。因此,可以独立于其他物理位置来管理存储在各个物理位置上的数据。因此,在不同物理位置的数据库之间的通信是由计算机网…...

STM32 OLED屏配置

1.OLED简介 OLED(Organic Light Emitting Diode):有机发光二极管 OLED显示屏:性能优异的新型显示屏,具有功耗低、相应速度快、宽视角、轻薄柔韧等特点 0.96寸OLED模块:小巧玲珑、占用接口少、简单易用&a…...

Spring Boot - 数据库集成04 - 集成Redis

Spring boot集成Redis 文章目录 Spring boot集成Redis一:redis基本集成1:RedisTemplate Jedis1.1:RedisTemplate1.2:实现案例1.2.1:依赖引入和属性配置1.2.2:redisConfig配置1.2.3:基础使用 2&…...

Day47:遍历元组

元组是 Python 中的一种有序集合类型,类似于列表,但与列表不同的是,元组是不可变的。这使得元组的元素一旦创建就不能更改。尽管元组是不可变的,我们仍然可以使用循环结构来遍历元组中的元素。 今天我们将学习如何遍历元组中的元…...

【PoCL】项目源码编译

PoCL 项目链接 本博文主要介绍了源码编译llvm和PoCL的过程 目录 0. 个人简介 && 授权须知1. 项目介绍2. 项目依赖3. 源码编译3.1 编译 LLVM 工程3.2 编译PoCL 工程 0. 个人简介 && 授权须知 📋 个人简介 💖 作者简介:大家好&…...

【数据分享】1929-2024年全球站点的逐月平均能见度(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据,气象指标包括气温、风速、降水、湿度等指标!说到气象数据,最详细的气象数据是具体到气象监测站点的数据! 有关气象指标的监测站点数据,之前我们分享过1929-2024年全球气象站点…...

免费GPU算力,不花钱部署DeepSeek-R1

在人工智能和大模型技术飞速发展的今天,越来越多的开发者和研究者希望能够亲自体验和微调大模型,以便更好地理解和应用这些先进的技术。然而,高昂的GPU算力成本往往成为了阻碍大家探索的瓶颈。幸运的是,腾讯云Cloud Studio提供了免…...

C语言的灵魂——指针(1)

指针是C语言的灵魂,有了指针C语言才能完成一些复杂的程序;没了指针就相当于C语言最精髓的部分被去掉了,可见指针是多么重要。废话不多讲我们直接开始。 指针 一,内存和地址二,编址三,指针变量和地址1&#…...

2000-2020年各省第三产业增加值占GDP比重数据

2000-2020年各省第三产业增加值占GDP比重数据 1、时间:2000-2020年 2、来源:国家统计局、统计年鉴 3、指标:行政区划代码、地区名称、年份、第三产业增加值占GDP比重 4、范围:31省 5、指标解释:第三产业增加值占G…...

Linux MySQL离线安装

一、准备工作 1. 下载MySQL安装包 访问MySQL官方网站,选择适合您Linux系统的MySQL版本进行下载。通常推荐下载Generic Linux (glibc 2.12)版本的.tar.gz压缩包,例如mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz。将下载好的安装包拷贝到Linux服务器的某…...

ESP32服务器和PC客户端的Wi-Fi通信

ESP32客户端-服务器Wi-Fi通信 本指南将向您展示如何设置ESP32板作为服务端,PC作为客户端,通过HTTP通信,以通过Wi-Fi(无需路由器或互联网连接)交换数据。简而言之,您将学习如何使用HTTP请求将一个板的数据发…...

Linux文件权限

目录 1.Linux权限管理 1.1文件访问者的分类 1.2文件的类型和访问权限 1)文件类型 2)文件访问权限 3)chmod指令 4)chown指令 ​编辑 5)chgrp命令 1.3目录权限 1.4粘滞位 1.5umask(权限掩码&…...

UE骨骼模拟物理

此功能可以制作仿动物派对上半身模拟物理效果 Set all bodies below simulate physics 骨骼名称设置为 spine_01 这样上半身所有骨骼都会模拟物理 效果演示...

salesforce中如何获取一个profile的18位id

在 Salesforce 中,要获取一个 Profile 的 18 位 ID,可以通过以下几种方式实现: 方法 1:通过 Developer Console 登录 Salesforce。 点击右上角的 头像 或 设置齿轮,选择 “开发者控制台”(Developer Conso…...

为什么机器学习中梯度下降是减去斜率,而不是按照其数学意义减去斜率的倒数

做个简单假设,Loss函数的某一个参数的函数曲线是二次方程,其导数函数为 r 2 ∗ w r 2*w r2∗w 按照斜率意义来看,要减去斜率倒数 降低LOSS需要将w1更新为w2,所以更新公式为 w w − Δ L Δ w w w - \frac{\Delta L}{\Delta w…...

Vue 3 30天精进之旅:Day 04 - 计算属性与侦听器

引言 在前几天的学习中,我们已经了解了Vue实例的基本概念和使用方法。今天,我们将深入探讨两个重要的特性:计算属性(computed properties)和侦听器(watchers)。这两个特性使得我们能够更高效地…...

UE学习日志#11GAS--ASC源码简要分析9 AbilitySystemGlobals分析2 初始化相关

1 static UAbilitySystemGlobals& Get() 保证了是单例,IGameplayAbilitiesModule继承了IModuleInterface /** Gets the single instance of the globals object, will create it as necessary */static UAbilitySystemGlobals& Get(){return *IGameplayAbi…...

SQL在DBA手里-改写篇

背景 最近运营需要做月报汇总交易情况,之前一直是他们手工出的数据,他们想做成月初自动发送邮件,从而减轻他们的工作量。于是他们提供SQL我们在邮件服务器配置做定时发送任务。 表介绍(表及字段已做脱敏处理) trans…...

SQL Server查询计划操作符(7.3)——查询计划相关操作符(5)

7.3. 查询计划相关操作符 38)Flow Distinct:该操作符扫描其输入并对其去重。该操作符从其输入得到每行数据时即将其返回(除非其为重复数据行,此时,该数据行会被抛弃),而Distinct操作符在产生任何输出前将消费所有输入。该操作符为逻辑操作符。该操作符具体如图7.2-38中…...

Autogen_core:Agent and Agent Runtime

目录 1. 代码2. 代码解释第一部分:定义消息类型和代理第二部分:定义助手代理第三部分:注册和运行代理第四部分:发送和停止消息处理总结 3. 类似的例子 1. 代码 from dataclasses import dataclassfrom autogen_core import Agent…...

vue(33) : 安装组件出错解决

1. request to https://registry.npm.taobao.org/semver/download/semver-6.1.1.tgz?cache0&other_urlshttps%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-6.1.1.tgz failed, reason: certificate has expired 这个错误提示表明你在尝试从https://reg…...

论文阅读(五):乳腺癌中的高斯图模型和扩展网络推理

1.论文链接:Network Inference in Breast Cancer with Gaussian Graphical Models and Extensions 摘要: 具有高相关性的聚类基因将具有接近表达谱的基因分组,确定共表达基因的聚类。然而,这种相关性并没有提供任何关于基因间信息…...

定时器按键tim_key模版

低优先级放在高优先级内势必是程序卡死 把高优先级放到低优先级内,会使程序卡死 可修改 Debuger调试方法 Pwm rcc #include "my_main.h" uint8_t led_sta0x10; char text[30]; void LED_Disp(uint8_t dsLED) {HAL_GPIO_WritePin(GPIOC,GPIO_PIN_All,GPI…...

Effective Objective-C 2.0 读书笔记—— objc_msgSend

Effective Objective-C 2.0 读书笔记—— objc_msgSend 文章目录 Effective Objective-C 2.0 读书笔记—— objc_msgSend引入——静态绑定和动态绑定OC之中动态绑定的实现方法签名方法列表 其他方法objc_msgSend_stretobjc_msgSend_fpretobjc_msgSendSuper 尾调用优化总结参考文…...

机器学习 vs 深度学习

目录 一、机器学习 1、实现原理 2、实施方法 二、深度学习 1、与机器学习的联系与区别 2、神经网络的历史发展 3、神经网络的基本概念 一、机器学习 1、实现原理 训练(归纳)和预测(演绎) 归纳: 从具体案例中抽象一般规律…...

Vue中的动态组件是什么?如何动态切换组件?

什么是动态组件? 动态组件是 Vue.js 中的一项强大功能,它允许开发者根据程序的状态或用户的操作,动态地切换组件。动态组件的优势在于,开发者可以根据具体需求灵活地渲染不同的组件,从而提高应用的通用性和可维护性。…...

Spring IoC DI

目录 一. IoC & DI 入门 1. 重谈Spring 2. 容器 3. IoC ① 传统程序开发 ② IoC 程序开发 ③ IoC 的优势 4. DI 3. IoC & DI 使用 二. IoC & DI 详解 1. Bean的存储 2. Bean的重命名 3. 扫描路径 三. DI 详解 1. 属性注入 2. 构造方法注入 3. Se…...

【Linux】线程、线程控制、地址空间布局

⭐️个人主页:小羊 ⭐️所属专栏:Linux 很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~ 目录 1、Linux线程1.1 线程的优缺点1.2 线程异常和用途1.3 线程等待1.3 线程终止1.4 线程分离1.5 线程ID和地址空间布局1.6 线程栈 1、…...

【记录】日常|从零散记录到博客之星Top300的成长之路

文章目录 shandianchengzi 2024 年度盘点概述写作风格简介2024年的创作内容总结 shandianchengzi 2024 年度盘点 概述 2024年及2025年至今我创作了786即84篇文章,加上这篇就是85篇。 很荣幸这次居然能够入选博客之星Top300,这个排名在我之前的所有年份…...

网盘资源查找工具---AI功能

01 软件介绍 这是一款融入了ai技术的网盘搜索神器,可以让你更快,更精准的找到自己需要的文件,不管你是找影视,音乐,还是找软件或者学习资料都可以,欢迎前来使用。 02 功能展示 该软件非常简洁&#xff…...

LWJGL轻量级Java游戏库

LWJGL - Lightweight Java Game Library 基本介绍 LWJGL是一个Java库,它支持跨平台访问流行的本地api,这些api在图形(OpenGL, Vulkan)、音频(OpenAL)和并行计算(OpenCL)应用程序的…...

AI智能日志分析系统

文章目录 1.combinations-intelligent-analysis-starter1.目录结构2.pom.xml3.自动配置1.IntelligentAnalysisAutoConfiguration.java2.spring.factories 2.combinations-intelligent-analysis-starter-demo1.目录结构2.pom.xml3.application.yml4.IntelligentAnalysisApplicat…...

详解三种常用标准化:Batch Norm、Layer Norm和RMSNorm

在深度学习中,标准化技术是提升模型训练速度、稳定性和性能的重要手段。本文将详细介绍三种常用的标准化方法:Batch Normalization(批量标准化)、Layer Normalization(层标准化)和 RMS Normalization&#…...

数据压缩算法-差分编码(Delta Encoding)

Delta Encoding(差分编码)是一种数据压缩技术,其核心思想是存储数据之间的差异(delta),而不是原始数据本身。这种方法特别适用于数据序列中相邻元素之间变化较小的情况,可以显著减少存储空间或传…...

Nginx中部署多个前端项目

1,准备前端项目 tlias系统的前端资源 外卖项目的前端资源 2,nginx里面的html文件夹中新建,tlias和sky两个文件夹。 切记这是在nginx/html下创建的 mkdir sky mkdir tlias 把tlias和sky的资源都放到对应的文件夹中 3,编辑配置ngi…...

Level DB --- TableBuilder

TableBuilder是Level DB里面重要的类和模块,它描述了数据如何序列化到文件中,以及数据里面的格式逻辑。它里面包含了之前介绍的多个模块和类。 data block、filter block和index block block格式,之前已经介绍过Level DB --- BlockBuilder-…...

JVM堆空间

一、堆空间的核心概述 一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域。Java堆区在JVM启动的时候即被创建,其空间大小也就确定了。是JVM管理的最大一块内存空间。 堆内存的大小是可以调节的。堆可以处于物理上不连续的内存空间中&#xff…...

【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.13 降维打击:扁平化操作的六种武器

1.13 降维打击:扁平化操作的六种武器 目录 #mermaid-svg-bbLxDryjxBbXe3tu {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-bbLxDryjxBbXe3tu .error-icon{fill:#552222;}#mermaid-svg-bbLxDryjxBbXe3tu…...

Doris Schema Change 常见问题分析

1. 什么是 Schema Change Schema Change 是在数据库中修改表结构的一种操作,例如添加列、删除列、更改列类型等。 ⚠️Schema Change 限制⚠️ 一张表在同一时间只能有一个 Schema Change 作业在运行。分区列和分桶列不能修改。如果聚合表中有 REPLACE 方式聚合的…...

数据结构之堆排序

文章目录 堆排序版本一图文理解 版本二向下调整建堆向上调整建堆 排升/降序升序 堆排序 版本一 基于已有数组建堆取堆顶元素并删除堆顶元素重新建大根堆,完成排序版本。 图文理解 版本二 前提:必须提供有现成的数据结构堆 数组建堆,首尾…...

实现桌面动态壁纸(三)—— 视频播放的策略

关于动态壁纸这边,其实已经不需要再谈什么东西了,现有的各种文章都在介绍相关的技术。可以说现如今要去制作一个桌面动态壁纸应该不是什么难事。我考虑了很久,决定还是开一篇单独谈谈。可能我说的也不全部正确,您有什么建议随时可…...

C语言程序设计十大排序—希尔排序

文章目录 1.概念✅2.希尔排序🎈3.代码实现✅3.1 直接写✨3.2 函数✨ 4.总结✅ 1.概念✅ 排序是数据处理的基本操作之一,每次算法竞赛都很多题目用到排序。排序算法是计算机科学中基础且常用的算法,排序后的数据更易于处理和查找。在计算机发展…...

2023年版本IDEA复制项目并修改端口号和运行内存

2023年版本IDEA复制项目并修改端口号和运行内存 1 在idea中打开server面板,在server面板中选择需要复制的项目右键,点击弹出来的”复制配置…(Edit Configuration…)“。如果idea上没有server面板或者有server面板但没有springbo…...

Ubuntu 安装 QGIS LTR 3.34

QGIS官方提供了安装指南:https://qgis.org/resources/installation-guide/#linux。大多数linux发行版将QGIS拆分为几个包:qgis、qgis-python、qgis-grass、qgis-plugin-grass、qgis-server,有的包最初安装时被跳过,可以在需要使用…...

win32汇编环境,对话框程序中使用进度条控件

;运行效果 ;win32汇编环境,对话框程序中使用进度条控件 ;进度条控件主要涉及的是长度单位,每步步长,推进的时间。 ;比如你的长度是1000,步长是100,每秒走1次,则10秒走完全程 ;比如你的长度是1000,步长是10,每秒走1次,则100秒走完全程,但每格格子的长度与上面一样 ;以下…...