Golang-sort标准库
sort标准库sort包提供了排序切片和用户自定义数据集以及相关功能的函数。
sort包主要针对[]int、[]float64、[]string、以及其他自定义切片的排序。
主要包括:
对基本数据类型切片的排序支持。
基本数据元素查找。
判断基本数据类型切片是否已经排好序。
对排好序的数据集合逆序
1. 排序接口1234567type Interface interface { Len() int // 获取数据集合元素个数 Less(i, j int) bool // 如果i索引的数据小于j索引的数据,返回true,Swap(),即数据升序排序,false 不调用swap。 Swap(i, j int) // 交换i和j索引的两个元素的位置}
实例演示:
12345678910111213141516171819202122232425262728package mainimport ( "fmt" "sort")type NewInts []uintfunc (n NewInts) ...
Golang-math标准库
math标准库math包包含一些常量和一些有用的数学计算函数,例如:三角函数、随机数、绝对值、平方等
1. 常量12345678910111213141516fmt.Printf("Float64的最大值: %.f\n", math.MaxFloat64)fmt.Printf("Float64最小值: %.f\n", math.SmallestNonzeroFloat64)fmt.Printf("Float32最大值: %.f\n", math.MaxFloat32)fmt.Printf("Float32最小值: %.f\n", math.SmallestNonzeroFloat32)fmt.Printf("Int8最大值: %d\n", math.MaxInt8)fmt.Printf("Int8最小值: %d\n", math.MinInt8)fmt.Printf("Uint8最大值: %d\n", math.MaxUint8)fmt.Print ...
LeetCode每日一题(24-11)
3259. 超级饮料的最大强化能量date:2024-11-1 tag:动态规划
题解使用动态规划解题,分别定义dpA[i]``dpB[i]为时间i时的最大总强化能量。结果为long long型,定义vectordpA(n,0)同时初始化dpA[0]。动态转移方程dpA[i]=max(dp[i-1],dpB[i-2])+energyDrinkA[i]考虑i=1时,可能为选i=0后就2切换。(i>1?dpB[i-2]:0)返回max(dpA[n-1],dpB[n-1])
代码123456789101112131415class Solution {public: long long maxEnergyBoost(vector<int>& energyDrinkA, vector<int>& energyDrinkB) { int n=energyDrinkA.size(); vector<long long>dpA(n,0); vector&l ...
Redis哨兵(sentinel)
什么是Redis哨兵监控后台的预警者负责持续检查主服务器(master主机)的运行状态。一旦发现主服务器出现故障,系统将启动一个自动化的切换机制。这个机制会根据预设的投票规则,从多个备用服务器(从库)中选择一个来接替主服务器的角色。被选中的备用服务器将升级为新的主服务器,并继续无缝地对外提供服务,确保整个系统的持续稳定运行。这种机制有效避免了单点故障带来的风险,并提升了系统的整体可靠性和容错能力。
Redis哨兵作用
主从状态监测:监控主从redis库运行是否正常
哨兵系统负责不断检测Redis主服务器及其从服务器的运行状态,确保它们都正常运行。
通过实时的心跳检测和状态检查,哨兵能够迅速发现任何主从节点的问题。
消息通知:哨兵可以将故障转移的结果发送给客户端
在发生主服务器故障转移等重要事件时,哨兵有能力向连接的客户端发送通知。
客户端可以接收到这些事件通知,并据此更新其连接配置或执行其他必要的操作。
自动故障恢复:如果master异常,则会进行主从切换,将其中一个slave作为新master
一旦检测到主服务器出现异常,哨兵系统会立即启动故障恢复流程。
这个过程 ...
Redis主从复制原理及配置
Redis主从复制介绍Redis的持久化功能在一定程度上保证了数据的安全性,即便是服务器宕机的情况下,也可以保证数据的丢失非常少。通常,为了避免服务的单点故障,会把数据复制到多个副本放在不同的服务器上,且这些拥有数据副本的服务器可以用于处理客户端的读请求,扩展整体的性能。
主从复制的好处:
数据冗余,实现数据的热备份
故障恢复,避免单点故障带来的服务不可用
读写分离,负载均衡。主节点负载读写,从节点负责读,提高服务器并发量
高可用基础,是哨兵机制和集群实现的基础
主从复制,master以写为主,slave以读为主,当master数据变化的时候,自动将新的数据异步同步到其他的slave数据库
主从复制配置准备三台虚拟机,构成一主二仆的结构
修改配置文件redis6379.conf为例,步骤如下:
开启daemonize yes12# 设置为后台运行daemonize yes
注释掉bind 127.0.0.1
protected-mode no
指定端口
指定当前工作目录,dir
pid文件名字,pidfile
log文件名字,logfile
requiredpass,密码
dum ...
Redis持久化:AOF介绍及优劣
AOF介绍AOF持久化会把被执行的写命令写到AOF文件的末尾,记录数据的变化。默认情况下,Redis是没有开启AOF持久化的,开启后,每执行一条更改Redis数据的命令,都会把该命令追加到AOF文件中,这是会降低Redis的性能,但大部分情况下这个影响是能够接受的,另外使用较快的硬盘可以提高AOF的性能
默认情况下,redis是没有开启AOF的。开启AOF功能需要设置配置:appendonly yes
AOF持久化工作流程
Client作为命令的来源,会有多个源头以及源源不断的请求命令。
在这些命令到达Redis Server 以后并不是直接写入AOF文件,会将其这些命令先放入AOF缓存中进行保存。这里的AOF缓冲区实际上是内存中的一片区域,存在的目的是当这些命令达到一定量以后再写入磁盘,避免频繁的磁盘IO操作。
AOF缓冲会根据AOF缓冲区同步文件的三种写回策略将命令写入磁盘上的AOF文件。
随着写入AOF内容的增加为避免文件膨胀,会根据规则进行命令的合并(又称AOF重写),从而起到AOF文件压缩的目的。
当Redis Server服务器重启的时候会队AOF文件载入数据。
...
Redis持久化:RDB介绍及优劣
Redis数据持久化Redis作为一个内存数据库,数据是以内存为载体存储的,那么一旦Redis服务器进程退出,服务器中的数据也会消失。为了解决这个问题,Redis提供了持久化机制,也就是把内存中的数据保存到磁盘当中,避免数据意外丢失Redis提供了两种持久化方案:RDB持久化和AOF持久化,一个是快照的方式,一个是类似日志追加的方式
RDB(Redis Database) ,将某一时刻的所有数据保存到一个 RDB 文件中。
AOF(append-only-file) ,当Redis服务器执行写命令的时候,将执行的写命令保存到 AOF 文件中。
RDB(Redis DataBase)快照持久化在指定的时间间隔,执行数据集的时间点快照
实现类似照片记录效果的方式,就是把某一时刻的数据和状态以文件的形式写到磁盘上,也就是快照。这样一来即使故障宕机,快照文件也不会丢失,数据的可靠性也就得到了保证。
这个快照文件就称为RDB文件(dump.rdb)其中,RDB就是Redis DataBase的缩写,该文件是一个压缩过的二进制文件,可以通过该文件还原快照时的数据库状态。RDB文件默认为当前工作 ...
Mysql事务概念笔记
前言在 MySQL 中,事务(Transaction)是一组可以作为单一工作单元执行的 SQL 操作。事务提供了确保数据一致性的重要机制,可以保证多个 SQL 语句要么全部成功执行,要么在出错时不执行任何操作(即 “全部执行或全部回滚” 的原则)。事务通常用于执行需要高一致性的数据操作场景,例如银行转账等涉及多表更新的操作。
事务的四大特性(ACID原则)
原子性(Atomicity):
事务中的所有操作必须全部完成或完全不执行。即使系统发生故障,事务也必须保证要么完全执行,要么完全回滚,不会出现部分执行的情况。
一致性(Consistency):
事务执行前后,数据库必须保持一致的状态。如果事务成功执行,它必须将数据库从一个一致状态转换为另一个一致状态。如果出现错误,事务应回滚到最初的状态,保持数据库一致性。
隔离性:
多个事务可以并发执行,但每个事务的操作和数据的变更应该对其他事务是隔离的,即一个事务在执行过程中不可见其他事务的中间状态。事务隔离有不同的级别(例如:READ UNCOMMITTED,READ COMMITTED,REPEATABLE READ, ...
LeetCode每日一题(24-10)
134. 加油站date: 2024-10-21 tag:贪心算法
题解:定义了两个变量:totalgas和totalcost,表示总获得的油量和消耗的油量,初始为0如果totalgas小于totalcost则表示不能跑一圈,返回-1;
用currentgas表示当前的油量,startindex表示开始的加油站下标。
遍历两个数组,记录获得油量和消耗的油量,currentgas+=gas[i]-cost[i]表示当前的油量如果currentgas<0说明从 startindex 到当前加油站无法到达下一个加油站,因此将 startindex 更新为当前加油站的下一个索引,并重置 currentgas 为 0。
返回结果,如果满足totalgas<totalcost,则返回startindex的值,否则返回-1;
代码12345678910111213141516171819class Solution {public: int canCompleteCircuit(vector<int>& gas, vector<int>&a ...
Curl用法指南
简介curl 是常用的命令行工具,用来请求 Web 服务器。它的名字就是客户端(client)的 URL 工具的意思。
它的功能非常强大,命令行参数多达几十种。
curl的基本用法发送 GET 请求最简单的用法是向指定的 URL 发送 GET 请求,并在控制台输出返回的内容。
1curl https://www.example.com
运行上述命令后,curl 会输出 https://www.example.com 的 HTML 页面内容。默认情况下,curl 发送一个 HTTP GET 请求,并输出服务器的响应结果到终端。
123456789101112<!doctype html><html><head> <title>Example Domain</title></head><body> <div> <h1>Example Domain</h1> <p>This domain is for use in ill ...