SpringCloud-环境和工程搭建
前言
JDK用17,MySQL用8.0
微服务就是微小的服务
一个微服务只做一个事情
基本概念
打开官网
spring
springcloud就是给我们提供工具,方便我们来弄微服务
springcloud是分布式微服务架构的一站式解决方案
Distributed/versioned configuration 分布式版本配置
• Service registration and discovery 服务注册和发现
• Routing 路由
• Service-to-service calls 服务调⽤
• Load balancing 负载均衡
• Circuit Breakers 断路器
• Distributed messaging 分布式消息
这个是它的版本
这里就是使用springcloud的版本要和下面组件的版本一一对应,不然可能会出错
这个是springcloud和springboot版本的对应关系
springcloud下有很多的组件
springcloud实现方案
在SpringCloud的规范下,有很多实现,其中最为出名的是
SpringCloudNetflix
SpringCloudAlibaba
Spring Cloud Alibaba 是什么
环境安装和配置
jdk安装
1.JDK17,因为旧的版本不会维护,长期维护版本:jdk8,17,21
2.MySQL
下载jdk
jdk17
我们安装windows的
然后就是配置环境变量,编辑系统环境变量
配置JAVA_HOME为安装目录
然后还有配置path
把java_home配置到bin下
然后就是验证一下
这样就成功了
然后就是Linux安装jdk我们已经安装过了
sudo apt update
sudo apt install openjdk-17-jdk
java -version
卸载jdk
#检查安装的哪个jdk
dpkg --list | grep -i jdk
#移除openjdk包
apt-get purge openjdk-*
#卸载openjdk相关包
apt-get purge icedtea-* openjdk-*
#检查删干净没有
dpkg --list | grep -i jdk
MySQL安装
#查找
apt list | grep "mysql-server"
安装最后一个
apt install mysql-server
sudo system status mysql
查看状态
MySQL安全脚本设置
sudo mysql_secure_installation
一直敲Y就可以了
sudo mysql
然后输入修改密码的sql语句
alter user ‘root’@‘localhost’ identified with mysql_native_password by ‘密码’
下次登录就这样
mysql -p
密码
就可以链接
sysytem enable mysql开机启动
反正原来已经安装过了
grep “password” /var/log/mysql.log
这个可以查看默认密码
mysql -uroot -p
环境与工程搭建
服务拆分
- 单⼀职责原则
单⼀职责原则原本是⾯向对象设计中的⼀个基本原则,它指的是⼀个类应该专注于单⼀功能.不要存在多于⼀个导致类变更的原因.
在微服务架构中,⼀个微服务也应该只负责⼀个功能或业务领域,每个服务应该有清晰的定义和边界,只关注⾃⼰的特定业务领域. - 服务⾃治
服务⾃治是指每个微服务都应该具备⾼度⾃治的能⼒,即每个服务要能做到独⽴开发,独⽴测试,独⽴构
建,独⽴部署,独⽴运⾏.
以上⾯的电商系统为例,每⼀个微服务应该有⾃⼰的存储,配置,在进⾏开发,构建,部署,运⾏和测试
时,并不需要过多关注其他微服务的状态和数据
3.单向依赖
数据准备
每个服务都应该具有自己独立的数据库
我们有两个服务,一个是订单服务,一个是商品服务
-- 订单服务
-- 建库
create database if not exists cloud_order charset utf8mb4;
use cloud_order;
-- 订单表
DROP TABLE IF EXISTS order_detail;
CREATE TABLE order_detail (`id` INT NOT NULL AUTO_INCREMENT COMMENT '订单id',`user_id` BIGINT ( 20 ) NOT NULL COMMENT '用户ID',`product_id` BIGINT ( 20 ) NULL COMMENT '产品id',`num` INT ( 10 ) NULL DEFAULT 0 COMMENT '下单数量',`price` BIGINT ( 20 ) NOT NULL COMMENT '实付款',`delete_flag` TINYINT ( 4 ) NULL DEFAULT 0,`create_time` DATETIME DEFAULT now(),`update_time` DATETIME DEFAULT now(),
PRIMARY KEY ( id )) ENGINE = INNODB DEFAULT CHARACTER
SET = utf8mb4 COMMENT = '订单表';-- 数据初始化
insert into order_detail (user_id,product_id,num,price)
values
(2001, 1001,1,99), (2002, 1002,1,30), (2001, 1003,1,40),
(2003, 1004,3,58), (2004, 1005,7,85), (2005, 1006,7,94);-- 产品服务
create database if not exists cloud_product charset utf8mb4;
-- 产品表
use cloud_product;
DROP TABLE IF EXISTS product_detail;
CREATE TABLE product_detail (`id` INT NOT NULL AUTO_INCREMENT COMMENT '产品id',`product_name` varchar ( 128 ) NULL COMMENT '产品名称',`product_price` BIGINT ( 20 ) NOT NULL COMMENT '产品价格',`state` TINYINT ( 4 ) NULL DEFAULT 0 COMMENT '产品状态 0-有效 1-下架',`create_time` DATETIME DEFAULT now(),`update_time` DATETIME DEFAULT now(),
PRIMARY KEY ( id )) ENGINE = INNODB DEFAULT CHARACTER
SET = utf8mb4 COMMENT = '产品表';-- 数据初始化
insert into product_detail (id, product_name,product_price,state)
values
(1001,"T恤", 101, 0), (1002, "短袖",30, 0), (1003, "短裤",44, 0),
(1004, "卫衣",58, 0), (1005, "马甲",98, 0),(1006,"羽绒服", 101, 0),
(1007, "冲锋衣",30, 0), (1008, "袜子",44, 0), (1009, "鞋子",58, 0),
(10010, "毛衣",98, 0);
这样我们就在本地创建好了两个服务的两个数据库了
工程搭建
springcloud的学习与项目的创建方式无关
所以我们可以采用springboot的方式—》一个窗口显示一个项目–》切换不同的服务不方便
或者父子工程的方式搭建—》一个父项目,一个子项目
先创建一个父工程
创建一个普通的maven项目
然后就是丰富pom文件
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.1.6</version><relativePath/> <!-- lookup parent from repository --></parent><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><java.version>17</java.version><mybatis.version>3.0.3</mybatis.version><mysql.version>8.0.33</mysql.version><spring-cloud.version>2022.0.3</spring-cloud.version></properties><dependencies><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>${mybatis.version}</version></dependency><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><version>${mysql.version}</version></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter-test</artifactId><version>${mybatis.version}</version><scope>test</scope></dependency></dependencies></dependencyManagement>
然后就是复制到pom文件中去
删掉这个,因为已经有了
然后就是刷新Maven
我们这里爆红应该是idea的显示问题
dependencyManagement只是声明jar包,但是并没有引入jar包,给子项目使用
如果子项目要用这些声明的东西的话。只需要加groupid和artifactid就可以了,不用写版本号了,子项目也可以自己指定版本号
没有dependencyManagement的dependencies是直接引入到项目中,并且被子项目继承
还是就是我们这里的父项目要说明打包方式为pom
现在开始创建子项目
看的出来这里还有父项目的指定
这样就创建好了子项目
再来一个
然后我们的父项目还多了一个moudules
订单服务
我们先完善订单服务的pom文件
加入
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId></dependency><!--mybatis--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId></dependency>
</dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins><resources><resource><directory>src/main/resources</directory><filtering>true</filtering><includes><include>**/**</include></includes></resource></resources>
</build>
我们上一节就说好了,子项目引入父项目声明好的,就不用写版本号了
我们在使用springboot开发的时候,不用写版本号也是因为父项目已经声明好了
这个是用来打包的
然后就是服务子项目也是这样
这些子项目都是springboot项目
然后我们给每个项目分别写好启动类,先写订单服务的
然后是写配置文件
然后就是写服务了
因为我们父项目引入了lombok,所以子项目也可以使用data注解
然后写数据库的实现mappperr
然后写service
然后就是controller
然后就是启动访问了
这样就成功了
商品服务
然后就是运行
注意两个不同的子项目都是可以一起运行的
远程调用
两个服务之间的交互怎么搞
就是根据订单服务如何得到商品服务
所以我们希望在订单里面要有一些商品的信息
可以通过http的访问,从商品服务获取订单服务的信息
怎么加载进来呢
方法
我们用第四个方法RestTemplate
RestTemplate是第三方的类,我们要用@Bean来创建这个对象
不能用什么Service注解来交给spring来管理了
只能用@Bean来交给spring来管理了
这样写出来的就是交给spring来管理的,不然普普通通写的就不是交给spring管理的
然后再service里面使用这个类
这样写就可以了
我们先启动商品服务
然后启动订单服务
这样就成功了
RestTemplate 是从Spring3.0开始⽀持的⼀个HTTP请求⼯具,它是⼀个同步的RESTAPI客⼾端,提供了常⻅的REST请求⽅案的模版
REST(Representational State Transfer), 表现层资源状态转移.
REST是由HTTP的主要设计者RoyFielding博⼠在2000年他的博⼠论⽂中提出来的⼀种软件架构⻛格.
REST是⼀种设计⻛格,并没有⼀个明确的标准.满⾜这种设计⻛格的程序或接⼝我们称之为RESTful(从单词字⾯来看就是⼀个形容词).所以RESTfulAPI就是满⾜REST架构⻛格的接⼝.
RESTful ⻛格⼤致有以下⼏个主要特征:
- 资源:资源可以是⼀个图⽚,⾳频,视频或者JSON格式等⽹络上的⼀个实体,除了⼀些⼆进制的资源
外普通的⽂本资源更多以JSON为载体、⾯向⽤⼾的⼀组数据(通常从数据库中查询⽽得到) - 统⼀接⼝:对资源的操作.⽐如获取,创建,修改和删除.这些操作正好对应HTTP协议提供的GET、
POST、PUT和DELETE⽅法.换⾔⽽知,如果使⽤RESTful⻛格的接⼝,从接⼝上你可能只能定位其
资源,但是⽆法知晓它具体进⾏了什么操作,需要具体了解其发⽣了什么操作动作要从其HTTP请
求⽅法类型上进⾏判断
⽐如同⼀个的URL:
GET/blog/{blogId}:查询博客
DELETE/blog/{blogId}:删除博客
这些内容都是通过HTTP协议来呈现的.所以RESTful是基于HTTP协议的.
RestTemplate 是Spring提供,封装HTTP调⽤,并强制使⽤RESTful⻛格.它会处理HTTP连接和关闭,
只需要使⽤者提供资源的地址和参数即可
RESTful API 缺点:
- 操作⽅式繁琐,RESTfulAPI通常根据GET,POST,PUT,DELETE来区分对资源的操作动作.但是HTTPMethod并不可直接⻅到,需要通过抓包等⼯具才能观察.如果把动作放在URL上反⽽更加直观,更利于团队的理解和交流.
- ⼀些浏览器对GET,POST之外的请求⽀持不太友好,需要额外处理.
- 过分强调资源.⽽实际业务需求可能⽐较复杂,并不能单纯使⽤增删改查就能满⾜需求,强⾏使⽤RESTful API会增加开发难度和成本.
项⽬存在问题
远程调⽤时,URL的IP和端⼝号是写死的(http://127.0.0.1:9090/product/),如果更换IP,需要修改代码
调⽤⽅如何可以不依赖服务提供⽅的IP?
多机部署,如何分摊压⼒?
远程调⽤时,URL⾮常容易写错,⽽且复⽤性不⾼,如何优雅的实现远程调⽤
所有的服务都可以调⽤该接⼝,是否有⻛险?
…
除此之外,微服务架构还⾯临很多问题, 接下来我们学习如何使⽤SpringCloud来解决这些问题
总结
相关文章:
SpringCloud-环境和工程搭建
前言 JDK用17,MySQL用8.0 微服务就是微小的服务 一个微服务只做一个事情 基本概念 打开官网 spring springcloud就是给我们提供工具,方便我们来弄微服务 springcloud是分布式微服务架构的一站式解决方案 Distributed/versioned configuration 分布…...
React 中shouldComponentUpdate生命周期方法的作用,如何利用它优化组件性能?
大白话React 中shouldComponentUpdate生命周期方法的作用,如何利用它优化组件性能? 在 React 里,shouldComponentUpdate 这个生命周期方法就像是一个“关卡守卫”,它能决定组件是否需要重新渲染。组件重新渲染是个挺费性能的事儿…...
AI写一个视频转图片帧工具(python)
现在的AI写python太方便了 说的话 我想用python实现一个能够将视频的所有帧数转化为图片的软件,可以自由配置转换的帧率或者全部,需要有界面,我需要增加一点功能,就是我需要读取出视频的分辨率,然后设置输出帧的分辨…...
React第三十一章(组件实战)
组件实战 这一章建议大家看完hooks css 原理 组件 这些章节之后再来看,这样会更好理解。 本章是额外新增的,因为之前的知识大家都掌握的差不多了,所以这一章节主要是让大家动手实践,巩固一下前面的知识。 那么你会学到什么&#…...
详细介绍WideCharToMultiByte()
书籍:《Visual C 2017从入门到精通》的2.7 字符串 环境:visual studio 2022 内容:几个字符串类型->(将单字节char*转换为宽字节wchar_t *)(将宽字节wchar_t* 转换为单字节char *) WideChar…...
Qt开发:QFileDialog的使用
文章目录 一、QFileDialog的介绍二、QFileDialog的常用静态方法三、完整示例 一、QFileDialog的介绍 QFileDialog 是 Qt 框架中提供的一个用于文件选择的标准对话框类,它允许用户在应用程序中选择文件或目录。它是跨平台的,在不同操作系统上会自动适配本…...
深度学习篇---回归分类任务的损失函数
文章目录 前言一、分类任务常用损失函数1. 交叉熵损失(Cross-Entropy Loss)数学形式使用场景特点训练状态分析损失下降损失震荡训练损失低但是验证损失高 2. Hinge Loss(合页损失)数学形式适用场景特点训练状态分析损失趋近于0损失…...
【MLP-BEV(10)】BEVPooling V1和BEVPooling V2的view_transformer,进行鱼眼图片实践
文章目录 先说说 BEVPoolv1步骤1:3D点生成步骤2 2D特征采样和BEV特征生成特点再谈谈BEVPoolv2步骤1:3D点生成步骤2: 计算索引关系步骤3: `voxel_pooling`计算鱼眼图片进行实践步骤1、3D点生成(基于Kannala-Brandt 进行调整)步骤2、2D特征采样和BEV特征生成(1) 体素化 (Voxe…...
上海SMT贴片技术解析与行业趋势
内容概要 随着长三角地区电子制造产业集群的快速发展,上海作为核心城市正引领着SMT贴片技术的革新浪潮。本文聚焦表面组装技术在高密度互连、微间距贴装等领域的突破性进展,通过解析焊膏印刷精度控制、元件定位算法优化等核心工艺,展现上海企…...
RAG优化:python从零实现[吃一堑长一智]循环反馈Feedback
本文将介绍一种有反馈循环机制的RAG系统,让当AI学会"吃一堑长一智",给传统RAG装了个"后悔"系统,让AI能记住哪些回答被用户点赞/拍砖,从此告别金鱼记忆: 每次回答都像在玩roguelike:失败结局会强化下次冒险悄悄把优质问答变成新知识卡牌,实现"以…...
Ubuntu 防火墙配置
Ubuntu 防火墙配置 一、UFW 基础操作二、核心规则配置三、高级功能四、特殊场景配置五、规则管理六、默认策略与安全建议七、故障排除 一、UFW 基础操作 检查 UFW 状态 sudo ufw status # 查看防火墙状态 sudo ufw status verbose # 显示详细规则 sudo ufw status numbered #…...
网络运维学习笔记(DeepSeek优化版) 024 HCIP-Datacom OSPF域内路由计算
文章目录 OSPF域内路由计算:单区域的路由计算一、OSPF单区域路由计算原理二、1类LSA详解2.1 1类LSA的作用与结构2.2 1类LSA的四种链路类型 三、OSPF路由表生成验证3.1 查看LSDB3.2 查看OSPF路由表3.3 查看全局路由表 四、2类LSA详解4.1 2类LSA的作用与生成条件4.2 2…...
【实战ES】实战 Elasticsearch:快速上手与深度实践-2.2.1 Bulk API的正确使用与错误处理
👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 Elasticsearch Bulk API 深度实践:性能调优与容错设计1. Bulk API 核心机制解析1.1 批量写入原理剖析1.1.1 各阶段性能瓶颈 2. 高性能批量写入实践2.1 客户端最佳…...
Oracle 23ai Vector Search 系列之2 ONNX(Open Neural Network Exchange)
文章目录 Oracle 23ai Vector Search 系列之2 ONNX(Open Neural Network Exchange)ONNX基本概念ONNX(Open Neural Network Exchange)ONNX Runtime ONNX Runtime 在Oracle数据库中的集成参考 Windows 环境图形化安装 Oracle 23ai Oracle 23ai Vector Search 系列之1 架构基础 Or…...
前端 - ts - - declare声明类型
在使用typeScript的项目中 需要声明属性类型 单独的局部属性 可以直接在当前文件中声明 全局属性需要在项目根目录下新建.d.ts文件 vite会自动识别.d.ts类型文件 在该文件中使用declare声明类型有三种写法 1、在某种类型的文件中声明 2、声明window上的属性类型 3、全局声明…...
Processor System Reset IP 核 v5.0(vivado)
这个IP的作用,我的理解是,比普通按键复位更加高效灵活,可以配置多个复位输出,可以配置复位周期。 1、输入信号: 重要的信号有时钟clk信号,一般连接到系统时钟;输入复位信号,一般是外…...
基于dify平台批量分析excel格式信息
如何以表格形式批量输入一些信息,然后让大模型以对话应用形式逐条进行推理分析? 这里提供一个分步解决方案,结合 Dify平台功能 和 API调用优化 的思路,既保证效率又降低复杂度: 1. 优先检查 Dify 的「数据集」功能 Di…...
GMII 接口
文章目录 概述硬件拓扑GMII 接口站管理接口发送数据时序接收数据时序参考 本文为笔者学习以太网对网上资料归纳整理所做的笔记,文末均附有参考链接,如侵权,请联系删除。 概述 GMII 是千兆网的MII接口,这个也有相应的 RGMII 接口&…...
学习不同电脑cpu分类及选购指南
关于电脑cpu 一、CPU型号的核心组成与命名规则Intel命名规则:AMD命名规则:5. 后缀:Intel常见后缀及其含义:AMD后缀一些常见的后缀及其含义:二、主流品牌CPU的分类与性能差异三、区分CPU型号的实用方法四、主流品牌CPU对比与选择建议五、选购CPU的注意事项关于不同主流CPU的…...
Android 动态设置默认Launcher(默认应用 电话-短信-浏览器-主屏幕应用))
Android 动态设置默认Launcher(默认应用 电话-短信-浏览器-主屏幕应用)) 文章目录 场景需求参考资料思路期待效果 实现方案源码流程分析和思路实现DefaultAppActivityHandheldDefaultAppFragmentHandheldDefaultAppPreferenceFragmentDefaultAppChildFragmentDefaul…...
23种设计模式-策略(Strategy)设计模式
策略设计模式 🚩什么是策略设计模式?🚩策略设计模式的特点🚩策略设计模式的结构🚩策略设计模式的优缺点🚩策略设计模式的Java实现🚩代码总结🚩总结 🚩什么是策略设计模式…...
游戏引擎学习第188天
回顾并计划今天的内容 原本这周的目标是进行可视化操作的尝试,但每一天都被一些棘手的bug和问题所阻碍,导致我们一直没能实现这个目标。直到今天,星期四,我们终于解决了这些问题,所有功能都能正常运行了,所…...
TF-IDF——自然语言处理——红楼梦案例
目录 一、红楼梦数据分析 (1)红楼梦源文件 (2)数据预处理——分卷实现思路 (3)分卷代码 二、分卷处理,删除停用词,将文章转换为标准格式 1.实现的思路及细节 2.代码实现&#…...
Oracle数据库数据编程SQL<2.3 DML增、删、改及merge into>
目录 一、DML数据操纵语言(Aate Manipulation Language) 二、【insert】插入数据 1、单行插入 2、批量插入 3、将数据同时插入到多张表insert all/insert first 三、【update】 更新数据 1、语法 2、举例 3、update使用注意事项: 四、【delete…...
面试计算机操作系统解析(一中)
判断 1. 一般来说,先进先出页面置换算法比最近最少使用页面置换算法有较少的缺页率。(✘) 正确答案:错误解释:FIFO(先进先出)页面置换算法可能导致“Belady异常”,即页面数增加反而…...
启山智软实现b2c单商户商城对比传统单商户的优势在哪里?
启山智软实现 B2C 单商户商城具有以下对比优势: 技术架构方面 先进的框架选型:基于 SpringCloud 等主流框架开发,是百万真实用户沉淀并检验的商城系统,技术成熟稳定,能应对高并发场景,保证系统在大流量访…...
蓝桥杯备考:贪心问题之均分纸牌
咱的贪心策略就是每次分好一个堆儿,如果某个堆已经是满足题意了,就不用管这个堆了,否则要向下一个堆借几个元素 #include <iostream> using namespace std; const int N 110; typedef long long ll; int a[N]; int n; ll x; int cnt…...
免去繁琐的手动埋点,Gin 框架可观测性最佳实践
作者:牧思 背景 在云原生时代的今天,Golang 编程语言越来越成为开发者们的首选,而对于 Golang 开发者来说,最著名的 Golang Web 框架莫过于 Gin [ 1] 框架了,Gin 框架作为 Golang 编程语言官方的推荐框架 [ 2] &…...
centos7 linux VMware虚拟机新添加的网卡,能看到网卡名称,但是看不到网卡的配置文件
问题现象:VMware虚拟机新添加的网卡,能看到网卡,但是看不到网卡的配置文件 解决方案: nmcli connection show nmcli connection add con-name ens36 ifname ens36 type ethernet #创建一个网卡连接配置文件,这里con…...
python的内置方法getitem和len
完整小测试: #python的内置函数,getitemclass Animal():def __init__(self,name):self.name namedef __str__(self):return f"This is {self.name}"class Zoo():def __init__(self,animal_list):self.animal_list animal_listdef __getite…...
深入理解 Git Stash:功能、用法与实战示例
文章目录 深入理解 Git Stash:功能、用法与实战示例一、Git Stash 的核心概念二、Git Stash 的基本用法1. 存储当前修改2. 查看 Stash 列表3. 恢复 Stash4. 恢复并删除 Stash5. 删除 Stash(1)删除指定 Stash(2)清空所有…...
SQL 复杂查询和性能优化
一、掌握复杂查询的核心技能 1. 理解 SQL 执行顺序 SQL 语句的逻辑执行顺序(非书写顺序): FROM → JOIN → WHERE → GROUP BY → HAVING → SELECT → DISTINCT → ORDER BY → LIMIT 关键点:每一步的结果会传递给下一步&a…...
【web应用安全】关于web应用安全的几个主要问题的思考
文章目录 防重放攻击1. **Token机制(一次性令牌)**2. **时间戳 超时验证**3. **Nonce(一次性随机数)**4. **请求签名(如HMAC)**5. **HTTPS 安全Cookie**6. **幂等性设计****综合防御策略建议****注意事项…...
看懂roslunch输出
自编了一个demo 第一步:创建功能包 cd ~/catkin_ws/src catkin_create_pkg param_demo roscpp第二步:写 main.cpp 创建文件:param_demo/src/param_node.cpp #include <ros/ros.h> #include <string>int main(int argc, char*…...
如何查看Unity打包生成的ab文件
文章目录 前言AssetStudioab文件介绍1. 动态加载资源2. 资源分离与模块化3. 平台兼容性4. 资源压缩与加密5. 资源管理与更新6. 减少安装包大小7. 资源加载灵活性8. 资源打包与分发9. 实际应用场景10. 注意事项 总结 前言 问题来源于工作又回归到工作,当发现发布包里…...
从泛读到精读:合合信息文档解析如何让大模型更懂复杂文档
从泛读到精读:合合信息文档解析如何让大模型更懂复杂文档 一、引言:破解文档“理解力”瓶颈二、核心功能:合合信息的“破局”亮点功能亮点1:复杂图表的高精度解析图表解析:为大模型装上精准“标尺”表格数据精准还原 功…...
Python SciPy面试题及参考答案
目录 什么是 SciPy?它与 NumPy 有什么区别? 如何在 Python 中安装 SciPy? 如何导入 SciPy 库? SciPy 中有哪些子模块?简要介绍它们的功能。 如何使用 SciPy 进行数值积分?请举例说明。 SciPy 中提供了哪些求解微分方程的函数? 什么是插值?SciPy 中如何进行插值?…...
21.Excel自动化:如何使用 xlwings 进行编程
一 将Excel用作数据查看器 使用 xlwings 中的 view 函数。 1.导包 import datetime as dt import xlwings as xw import pandas as pd import numpy as np 2.view 函数 创建一个基于伪随机数的DataFrame,它有足够多的行,使得只有首尾几行会被显示。 df …...
【redis】数据类型之Stream
Redis Stream是Redis 5.0版本引入的一种新的数据类型,它提供了一种持久化的、可查询的、可扩展的消息队列服务。 它结合了Redis高性能的特性与持久化能力,支持: 多消费者组模式(Consumer Groups)消息回溯(…...
day17 周末两天偷懒没更新,今天炼丹加学习,完结STL常用容器部分
还剩下两个常用容器,一个是set(集合容器) , 一个是map容器 set/multiset 容器 set容器是关联式容器,该容器的特点是:所有元素都会在插入时被自动排序 set/multiset 都是关联式容器 ,其底层结构是使用二叉树实现的。…...
嵌入式开发场景中Shell脚本执行方式的对比
Shell脚本执行方式对比表 执行方式命令示例是否需要执行权限是否启动子Shell环境变量影响范围适用场景嵌入式开发中的典型应用直接执行脚本./script.sh是是子Shell内有效独立运行的脚本,需固定环境自动化构建脚本(…...
数据结构之多项式相加的链表实现
在计算机科学中,多项式的表示和运算经常会用到。使用链表来表示多项式是一种常见且有效的方法,它可以方便地处理多项式的各项,并且在进行多项式相加等运算时具有较好的灵活性。 多项式通常由一系列的项组成,每一项包含一个系数和…...
Java 实现将Word 转换成markdown
日常的开发中,需要将word 等各类文章信息转换成格式化语言,因此需要使用各类语言将word 转换成Markdown 1、引入 jar包 <dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version&g…...
IEEE PDF Xpress校验出现 :字体无法嵌入问题以及pdf版本问题
文章目录 问题描述一、字体嵌入问题首先查看一下,哪些字体没有被嵌入查看window的font文件夹里的字体下载字体的网站修复字体嵌入问题 二、pdf版本不对 问题描述 在处理IEEE的camera ready的时候,提交到IEEE express的文件没有办法通过validate…...
Sa-Token
简介 Sa-Token 是一个轻量级 Java 权限认证框架,主要解决:登录认证、权限认证、单点登录、OAuth2.0、分布式Session会话、微服务网关鉴权 等一系列权限相关问题。 官方文档 常见功能 登录认证 本框架 用户提交 name password 参数,调用登…...
StarRocks 中 CURRENT_TIMESTAMP 和 CURRENT_TIME 分区过滤问题
背景 本文基于Starrocks 3.3.5 最近在进行Starrocks 跑数据的时候,发现了一个SQL 扫描了所有分区的数据,简化后的SQL如下: select date_created from tableA where date_createddate_format(current_time(), %Y-%m-%d %H:%i:%S) limit 20其…...
GithubPages+自定义域名+Cloudfare加速+浏览器收录(2025最新排坑)
前言 最近刷到一个小视频,讲述了选择域名选择的三宗罪,分别是 不要使用 .net,因为它价格贵,但是在顶级域名中的 SEO 效果却不是很好,也就是性价比很低不要使用 .cn,因为国外访问该网站可能会很慢…...
Canvas粒子系统终极指南:从基础运动到复杂交互的全流程实现
文章目录 一、粒子系统基础架构1.1 粒子数据结构设计1.2 粒子系统管理器 二、基础粒子效果实现2.1 重力场模拟2.2 弹性碰撞效果 三、高级交互实现3.1 鼠标吸引效果3.2 颜色渐变粒子 四、性能优化策略4.1 粒子池复用4.2 分层渲染 五、复杂效果实现5.1 烟花爆炸效果5.2 流体模拟 …...
【QT】新建QT工程(详细步骤)
新建QT工程 1.方法(1)点击new project按钮,弹出对话框,新建即可,步骤如下:(2) 点击文件菜单,选择新建文件或者工程,后续步骤如上 2.QT工程文件介绍(1).pro文件 --》QT工程配置文件(2)main.cpp --》QT工程主…...
详解Http:在QT中使用Http协议
目录 一、HTTP 概述 1、主要特点 2、HTTP 方法 3、HTTP 状态码 4、HTTP 头部 5、HTTP的工作原理 二、在Qt中使用HTTP 1、发送简单的HTTP请求 2、发送POST请求 3、处理异步请求 4、使用QSslConfiguration进行HTTPS 5、 处理JSON响应 6、处理错误 三、总结 一、HTTP…...