每日编程-20260304
括号生成
题目: 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
函数 myAtoi(string s) 的算法如下:
空格:读入字符串并丢弃无用的前导空格(" ")
符号:检查下一个字符(假设还未到字符末尾)为 ‘-’ 还是 ‘+’。如果两者都不存在,则假定结果为正。
转换:通过跳过前置零来读取该整数,直到遇到非数字字符或到达字符串的结尾。如果没有读取数字,则结果为0。
舍入:如果整数数超过 32 位有符号整数范围 [−231, 231 − 1] ,需要截断这个整数,使其保持在这个范围内。具体来说,小于 −231 的整数应该被舍入为 −231 ,大于 231 − 1 的整数应该被舍入为 231 − 1 。
返回整数作为最终结果。
输入格式:
1整型数据n
输出格式:
1vertor<string>
输入样例:
1n = 3
输出样例:
1["((()))","(()())","(())()","()(())"," ...
每日编程-20260303
字符串转换整数 (atoi)
题目: 请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数。
函数 myAtoi(string s) 的算法如下:
空格:读入字符串并丢弃无用的前导空格(" ")
符号:检查下一个字符(假设还未到字符末尾)为 ‘-’ 还是 ‘+’。如果两者都不存在,则假定结果为正。
转换:通过跳过前置零来读取该整数,直到遇到非数字字符或到达字符串的结尾。如果没有读取数字,则结果为0。
舍入:如果整数数超过 32 位有符号整数范围 [−231, 231 − 1] ,需要截断这个整数,使其保持在这个范围内。具体来说,小于 −231 的整数应该被舍入为 −231 ,大于 231 − 1 的整数应该被舍入为 231 − 1 。
返回整数作为最终结果。
输入格式:
1字符串
输出格式:
1整数
输入样例:
1s = "42"
输出样例:
142
示例 1:
输入: s = “42”
输出: 42
解释: 加粗的字符串为已经读入的字符,插入符号是当前读取的字符。
带下划线线的字符是所读的 ...
每日编程-20260302
整数反转
题目: 给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。
输入格式:
1整数
输出格式:
1整数
输入样例:
1123
输出样例:
1321
示例 1:
**输入:** x = 123
**输出:** 321
示例 2:
**输入:** x = -123
**输出:** -321
示例 3:
**输入:** x = 120
**输出:** 21
示例 4:
**输入:** x = 0
**输出:** 0
提示:
-2^31 <= x <= 2^31 - 1
思路:
逐个分解给出整数的每一位的值,采用对10求余和除以10的方法提取数字的每一位的值,并将其逆序压入新的变量
代码:
1234567891011121314151617181920212223242526272829303132// 思路一: 效果不好,优化差,且不符合假设环境不允许存储 64 位整数(有符号或无符号)的要求。 ...
分布式系统中userId的生成
userId生成的策略类型
目前常见的userId生成策略主要有:
数据库自增id
UUID
雪花算法
数据库自增id
简单明了,使用数据库中的主键自增即可实现
优点在于:
自动自增,可以作为索引提升数据库的查询效率
节省磁盘空间,相较于其他两种策略可以节省大量空间
查询、写入效率高
缺点在于:
在导入数据时可能存在id重复的问题
不适应与分布式架构,在该中存在id重复的问题
无法进行分表,拆表等操作,与分布式的缺陷类似
UUID
UUID(Universally Unique Identifier):它是由一组32个十六进制数字组成的字符串,总共分为无端,每段之间用连字符(-)隔开,包括连字符在内共36个字符
123// 生成UUIDString uuid = UUID.randomUUID.toString()
UUID基于硬件地址(MAC地址)、时间戳和随机因子来生成Id
优势在于:
几乎不可能重复,可以用于分布式系统
具有唯一性、高性能和高可用的特点
本地生成
缺点在于:
产生的值较长,足足有36个字符
ID完全随机,没有任何顺序可言
可读性差,且ID不具 ...
ubuntu安装docker
Ubuntu安装Docker
Docker官方文档
卸载旧版docker
1for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
补充知识
apt-get
apt
功能
apt-get
apt
安装软件包
apt-get remove
apt remove
删除软件包
apt-get remove
apt remove
更换所有包
apt-get purge
apt purge
移除软件包及配置文件
apt-get upgrade
apt upgrade
更新所有软件包(自动处理依赖项)
apt-get autoremove
apt autoremove
自动删除不需要的包
apt-get dist-upgrade
apt full-upgrade
在升级软件包时自动处理依赖关系
apt-cache search
apt search
搜索应 ...
webpack相关知识
本篇博客是为了加深对于webpack的理解
webpack的作用是什么?
前端网页功能丰富、现如今SPA(Single Page Web Application 单页面应用)技术大量应用, JavaScript 的复杂的增加,以及 Scss 、 Less 和 Typescript 的编译工作都需要 webpack 来解决处理。
webpack的工作原理
webpack 是一个模块打包工具,它主要做以下工作:
分析项目的结构、找到需要的 JavaScript 模块
将非 JavaScript 的文件( Scss 、 Less 和 Typescript 等)转换为合适的格式,让浏览器执行
webpack的打包原理
webpack 将一切都视为模块,无论是 JavaScript 、 Css 、 HTML 和 Image 图片资源等等都可以相互引用,通过 entry.js 对所有依赖的文件进行追踪,将各个模块通过 loader 和 plugins 处理进行打包。
webpack的核心概念
SSL/TSL及openssl的使用
一、什么是HTTPS?
HTTPS,全称为 Hypertext Transfer Protocol Secure,是一种通过加密通道传输数据的安全协议。它是 HTTP 协议的安全版本,用于在 Web 浏览器和 Web 服务器之间进行安全的数据传输。
HTTPS 在传输过程中使用了 SSL(Secure Sockets Layer)或 TLS(Transport Layer Security)协议来加密数据,确保敏感信息在传输过程中不会被窃取或篡改。
二、HTTP的存在的问题已经HTTPS如何解决?
HTTP存在的问题:
明文传输,内容可能被盗用
不进行通信方的验证,有可能遭遇伪装
无法验证报文的完整性,请求报文可能被篡改
HTTPS的解决方案:
进行加密处理
进行身份校验
进行完整性校验
HTTPS = HTTP + TSL/SSL
三、什么是SSL/TLS
TLS(Transport Layer Security)和 SSL(Secure Sockets Layer)是用于保护网络通信的安全协议。它们都提供了加密和认证机制,用于确保数据传输的机密性和完整性。
SSL 是最 ...
MQ服务异步通信
服务异步通信
MQ的一些常见问题
消息可靠性问题:如何确保发送的消息至少被消费一次
延迟消息问题:如何实现延迟消息投递
高可用问题:如何避免单点的MQ故障而导致的不可用问题
消息堆积问题:如何解决数百万消息堆积,无法及时消费的问题
消息可靠性问题
消息从生产者发送到exchange,再到queue,再到消费者,有哪些导致消息丢失的可能性?
发送时丢失:
生产者发送的消息未送达exchange
消息到达exchange后未到达queue
MQ宕机,queue将消息丢失
consumer接收到消息后未消费就宕机
一 消息可靠性
1.生产者消息确认
生产者确认机制
RabbitMQ提供了publisher confirm机制来避免消息发送到MQ过程中丢失。消息发送到MQ以后,会返回一个结果给发送者,表示消息是否处理成功。结果有两种请求:
2.消息持久化
3.消费者消息确认
4.消费失败重试机制
二 死信交换机
三 惰性队列
四 MQ集群
分布式事务
分布式事务 seata
事务的ACID原则
分布式访问案例
微服务下单业务,在下单时会调用订单服务,创建订单并写入数据库。然后订单服务调用账户服务和库存服务
账户服务负责扣减用户余额
库存服务负责扣减商品库存
一 理论基础
1.CAP定理
1998年,加州大学的计算机科学家Eric Brewer提出,分布式系统有三个指标:
Consistency (一致性)
Availability (可用性)
Partition tolerance (分区容错性)
CAP定理-Consistency
Consistency (一致性)︰用户访问分布式系统中的任意节点,得到的数据必须一致
CAP定理-Availability
Availability (可用性)∶用户访问集群中的任意健康节点,必须能得到响应,而不是超时或拒绝
CAP定理-Partition
Partition(分区)∶因为网络故障或其它原因导致分布式系统中的部分节点与其它节点失去连接,形成独立分区
Tolerance(容错)∶在集群出现分区时,整个系统也要持续对外提供服务
2.BASE理论
BASE理论是对CAP的一种解决思 ...
JMeter安装教程
下载JMeter
1.前期准备
具备Java的JDK环境(此处不详细介绍)
2.下载JMeter
(一)进入JMeter的官网:https://jmeter.apache.org/
(二)点击Down Load Release:https://jmeter.apache.org/
tips: Binaries是二进制可执行版本,已编译完成, Source是源代码版,需要自己编译
(三)点击apache-jmeter-5.5.zip下载可执行压缩包apache-jmeter-5.5.zip
(四)下载速度较慢,等待下载完成
建议清华镜像网站下载官网
2.配置环境变量
(一)在系统变量中新增变量JMETER_HOME
变量名:【JMETER_HOME】
变量值:JMeter安装路径`
(二)编辑系统变量CLASSPATH。在CLASSPATH中增加
1%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib\logkit-2.0.jar;
(三)确定 ...



