springboot第35集:微服务与flutter安卓App开发

Google Playplay.google.com/apps/publis…[1]
应用宝open.qq.com/[2]
百度手机助手app.baidu.com/[3]
360 手机助手dev.360.cn/[4]
vivo 应用商店dev.vivo.com.cn/[5]
OPPO 软件商店(一加)open.oppomobile.com/[6]
小米应用商店dev.mi.com/[7]
华为应用市场developer.huawei.com/consumer/cn…[8]
阿里应用分发平台(豌豆荚)open.uc.cn/[9]
搜狗手机助手zhushou.sogou.com/open/[10]
锤子应用商店dev.smartisan.com/[11]
魅族应用商店open.flyme.cn/[12]
金立软件商店open.appgionee.com/[13]
安智市场dev.anzhi.com/[14]
酷安市场developer.coolapk.com[15]
联想乐商店open.lenovo.com/[16]
三星应用开发者平台support-cn.samsung.com/App/Develop…[17]
9e248845e602d386aa1198581132de96.png
image.png

软著是必要的,提前准备好,软著申请大概需要1-2周时间才能下来。提前把APP名字想好,然后同步准备软著。这个越提前越好,因为软著的价格和时间有关,时间要求越高,越贵。特殊行业需要提供其他证明或授权,比如新闻的需要新新闻相关的,金融的需要金融相关的。最近很多app都要求ICP证、app安全评估报告、银行合作等等。

icon/应用介绍/截图,截图要提前准备,按照尺寸要求。

  1. 使用 Wrap 布局:Wrap 组件包裹住选项,这样可以在水平空间不足时自动换行,以避免溢出屏幕。Wrap 可以根据内容的大小自动调整布局。

  2. 提取通用方法: 将类似的代码块提取为通用方法,以减少重复代码。这将帮助你简化代码并使其更易于维护。

  3. 缩小间距: 调整 SizedBox 组件的宽度,以减少选项之间的间距。你可以根据需要微调间距的大小。

springboot微服务如何在服务器上查看日志

  1. 查看控制台输出:在服务器上启动Spring Boot微服务时,控制台会输出日志信息。您可以通过SSH登录到服务器,并在控制台中查看应用程序的输出日志。

  2. 查看日志文件:Spring Boot会将日志输出到指定的日志文件中,默认情况下,Spring Boot会将日志输出到应用程序的工作目录下的logs文件夹中。您可以通过SSH登录到服务器,然后使用文本编辑器或者命令行工具查看日志文件。

  3. 使用日志管理工具:在生产环境中,通常会使用专业的日志管理工具来集中管理和查看日志。常见的日志管理工具包括ELK Stack(Elasticsearch、Logstash、Kibana)、Splunk等。这些工具可以帮助您在服务器上集中收集、搜索和分析日志信息,便于快速定位问题。

  4. 使用日志级别控制:在Spring Boot中,可以通过配置日志级别来控制日志的输出。常见的日志级别有DEBUG、INFO、WARN、ERROR等。您可以根据需求将日志级别设置为适当的级别,以便只输出关键信息。

在Linux或Unix系统中,您可以使用cat命令或tail命令来查看日志文件的内容。以下是常用的命令示例:

  1. 使用cat命令查看完整的日志文件内容:

    cat /path/to/your/logfile.log
  2. 使用tail命令查看日志文件的末尾部分(默认显示最后10行):

    tail /path/to/your/logfile.log

    您也可以使用-n参数指定显示的行数,例如显示最后20行:

    tail -n 20 /path/to/your/logfile.log
  3. 如果日志文件比较大,可以使用less命令进行分页查看:

    less /path/to/your/logfile.log

    使用space键向下翻页,使用b键向上翻页,使用q键退出查看。

如果您希望在实时监视日志文件的更新,可以使用tail命令的-f参数:

tail -f /path/to/your/logfile.log

这将实时显示日志文件的末尾部分,并持续监视文件的更新。

  • server:此部分用于配置嵌入式服务器属性。

  • port:此属性指定服务器将监听的端口号。在此情况下,服务器将监听00000端口。

spring:application:name: service
  • spring:此部分包含Spring Boot相关的配置。

  • application:此子部分用于配置Spring应用程序属性。

  • name:此属性设置Spring应用程序的名称。在此情况下,应用程序名称设置为"sys-service"。

cloud:nacos:discovery:server-addr:username:password:
  • cloud:此部分用于配置Spring Cloud组件。

  • nacos:此子部分用于配置Nacos服务发现。

  • discovery:此子部分配置Nacos发现的属性。

  • server-addr:此属性用于指定Nacos服务器的地址。应填写Nacos服务器的地址,例如:server-addr: http://localhost:8848

  • username:如果需要与Nacos服务器进行身份验证,则可以使用此属性进行配置。如果不需要身份验证,则可以将此属性留空。

  • password:如果需要与Nacos服务器进行身份验证,则可以使用此属性配置密码。如果不需要身份验证,则可以将此属性留空。

private Set<Integer> topONumSet; //所有权限组织的顶级组织序号
// 注入 Spring 的环境变量,用于获取配置信息 @Autowired private Environment env;
// 通过 @Value 注解获取配置文件中的属性值
// 系统数据库地址
@Value("${sys.datasource.url}")
// 系统数据库密码
// 系统数据库驱动类名
// 创建名为 "sysDataSource" 的 Bean,作为系统数据源
// 打印系统数据库地址到日志
// 设置 DruidDataSource 的属性
dataSource
// 设置数据库连接地址
// 设置数据库用户名
// 设置数据库密码
// 设置数据库驱动类名
dataSource.setInitialSize(2); // 设置初始化时的连接数
dataSource.setMaxActive(20); // 设置最大活跃连接数
dataSource.setMinIdle(0); // 设置最小空闲连接数
dataSource.setMaxWait(60000); // 设置获取连接的最大等待时间
dataSource.setValidationQuery("SELECT 1"); // 设置用于校验连接是否有效的 SQL 查询语句
setTestOnBorrow(false); // 设置是否在获取连接时校验连接的有效性
setTestWhileIdle(true); // 设置是否在空闲时校验连接的有效
setPoolPreparedStatements(false); // 设置是否缓存预编译语句
setDefaultAutoCommit(false); // 设定不自动提交事务
// 创建名为 "sysSqlSessionFactory" 的 Bean,用于管理系统数据库的 SqlSessionFactory
// 设置系统数据源
// 设置系统数据库的 MyBatis Mapper 文件的位置,指定 mapper 文件所在的目录
// 设置 MyBatis 的插件,这里使用了 ComConfig 类中的 pageHelperSetting() 方法返回的拦截器
// 返回配置好的 SqlSessionFactory
// 创建日志记录器,用于输出日志信息
// 从配置文件中获取 Redis 的主机名
// 从配置文件中获取 Redis 的端口号
// 从配置文件中获取 Redis 的连接超时时间
// 从配置文件中获取 Redis 的密码
// 从配置文件中获取 Redis 的数据库索引
// 从配置文件中获取 Redis 连接池的最大空闲连接数
// 从配置文件中获取 Redis 连接池的最小空闲连接数
// 创建名为 "sysRedisTemplate" 的 Bean,用于管理 RedisTemplate 实例
// 创建 Jedis 连接工厂 jedisConnectionFactory
// 设置 Redis 主机名
// 设置 Redis 端口号
// 设置 Redis 密码
// 设置存储的数据库索引
// 设置连接超时时间
// 使用连接池
// 创建 Jedis 连接池配置
// 设置连接池的最大空闲连接数
// 设置连接池的最小空闲连接数
// 将连接池配置设置给连接工厂
// 调用 ComConfig 类中的 strRedisTemplate 方法,创建并配置 RedisTemplate 实例,并返回该实例 jedisConnectionFactory
// 声明一个静态变量来保存 Spring 的 ApplicationContext 对象
// 实现接口 ApplicationContextAware 的方法,用于获取 Spring 的 ApplicationContext 对象
// 将传入的 ApplicationContext 对象赋值给静态变量 context
// 提供一个静态方法,根据 Bean 名称获取对应的 Spring Bean 实例
// 如果 context 为空,则返回 null
// 提供一个静态方法,用于获取所有已注册的 Bean 名称
// 返回所有已注册的 Bean 名称数组
// 定义一个静态方法,用于配置 MyBatis 分页插件 PageHelper
// 创建一个 PageInterceptor 对象作为分页插件的实例
// 创建一个 Properties 对象用于设置分页插件的属性
// 将 offset 参数当成页码
// 使用 RowBounds 分页时进行 count 查询
// 是否合理化分页参数(启用合理化时,如果 pageNum < 1,会自动设置为 1;如果 pageNum > pages,会自动设置为 pages)
properties.setProperty("dialect", "mysql");       //4.0.0以后不要配置数据源
// 当 pageSize=0 时查询返回全部结果(相当于没有执行分页查询)
// 支持通过 Mapper 接口参数来传递分页参数
// 不返回 Page 类型,返回 PageInfo 类型
// 将设置好的属性赋值给分页插件
// 返回配置好的分页插件实例// 定义一个静态方法,用于配置 RedisTemplate
// 创建一个 RedisTemplate 实例
// 设置连接工厂,即连接到 Redis 的配置
// 设置 key 和 hash key 的序列化方式为 StringRedisSerializer
/ 设置 hash value 和 value 的序列化方式为 StringRedisSerializer
// 初始化 RedisTemplate
// 返回配置好的 RedisTemplate 实例
// 用于注入配置属性值 spring.application.name
// 实现 EnvironmentAware 接口,用于获取 Spring 的 Environment 对象
// 在 Spring 环境准备就绪后,会调用此方法
// 检查是否已经设置了系统属性 "project.name",如果没有设置,则将 applicationName 的值赋给该系统属性
// 静态Logger,用于日志记录
// 用于存储 RestHighLevelClient 实例
// 用于存储 BulkProcessor 实例
// 在初始化阶段执行的方法
// 创建基本的凭证提供者
// 创建 RestClientBuilder
// 创建 RestHighLevelClient 实例
// 创建 BulkProcessor.Listener 实例
// 在执行批处理前调用 beforeBulk
// 在执行批处理后调用(成功) afterBulk
// 在执行批处理后调用(失败) afterBulk
// 创建 BulkProcessor.Builder 实例
// 设置 BulkProcessor 的配置属性
// 到达10000条时刷新
// 内存到达8M时刷新
// 设置的刷新间隔10s
// 设置允许执行的并发请求数
// 设置重试策略
// 构建 BulkProcessor 实例
// 创建名为 "esRestHighLevelClient" 的 RestHighLevelClient Bean
// 在销毁阶段执行的方法
// 创建名为 "esRestBulkProcessor" 的 BulkProcessor Bean
// 获取 HttpHost 数组
// 启用Swagger2注解
// 启用Knife4j注解,Knife4j是Swagger的增强工具包
// 创建一个名为 createRestApi 的 Docket Bean
// 创建一个 Docket 实例,使用 Swagger 2 规范
// 设置API信息
// 扫描带有 @ApiOperation 注解的方法
// 扫描指定包下的类
// 匹配所有路径
// 设置全局参数
// 创建一个 ApiInfo 实例,用于设置 API 文档信息
// API 标题
// 服务条款 URL
// API 版本
// 将自定义的拦截器注入为一个 Bean
// 配置内容协商,设置默认的响应内容类型为 JSON 格式
// 配置跨域资源共享(CORS)规则
.allowedOrigins("*") // 允许的源
// 允许的HTTP方法
"POST", "GET", "PUT", "OPTIONS", "DELETE"
// 预检请求的缓存时间
// 允许跨域请求携带认证信息
// 添加拦截器,并配置拦截规则和排除规则
.addPathPatterns("/**") // 拦截所有路径// 添加静态资源处理器,用于处理 Swagger UI 页面
// 配置默认的 Servlet 处理器
// 自动注入 SysMenuService
// API 操作文档的注解,描述接口的用途和输入参数
// POST 请求映射到 /pageQuery,接收 JSON 请求体
// 将 JSON 请求体解析为 xxx 对象
// 创建 xxxBO 对象,用于业务操作
// 调用 xxxService 的分页查询方法
// 返回失败响应,并记录错误日志
// 定义API标签
// 使用Lombok注解,自动生成Logger
// 表明这是一个REST控制器
// 静态Logger,用于记录日志
// 自动注入 SysOrgService、SysUserOrgService、SysRoleOrgService
// 自动注入 RedisTemplate
// 调用 xxxService 的删除组织方法
// 删除与该组织相关的用户组织关联信息
// 构建 SysRoleOrg 对象,设置组织ID,并删除与该组织相关的角色组织关联信息
// 创建 Page 对象并拷贝 PageInfo 属性
// 将传入的 JSON 请求体转换为 组织树 对象
// 用于存储组织树节点的列表
// 未传入 orgId,默认根节点为父节点
// 默认根
// 获取缓存中的 系统组织 对象
// 创建根节点
// 添加根节点到树节点列表
// 递归添加子节点
// 获取所有权限编号集合
// 获取缓存中的 系统组织 对象
// 判断是否具有权限
// 创建权限不足的返回结果
// 创建根节点
// 添加根节点到树节点列表
// 递归添加子节点
// 未传入 orgId,默认根节点为父节点
// 批量查询根据权限编号集合获取的 系统组织 列表
// 查找用户顶级机构
// 获取缓存中的顶级子节点 SysOrg 对象
// 如果根节点的子节点列表为空,则初始化子节点列表
// 添加子节点到根节点的子节点列表
// 表示这是一个 RESTful 风格的 Controller
// 根据角色ID删除旧的角色菜单关联
// 循环插入新的角色菜单关联
// 记录日志,表示批量新增角色菜单成功,并输出新增的角色菜单关联列表
// 创建成功的返回结果
// 记录异常信息,表示批量新增角色菜单失败
// 创建失败的返回结果
// 后续方法类似,实现角色菜单的删除、查询和查询用户菜单等功能// 如果系统菜单列表不为空且长度大于0,则执行以下操作
//制作父菜单Id映射
// 创建用于存储父菜单Id映射的 HashMap
/ 创建用于存储菜单Id映射的 HashMap
// 遍历系统菜单列表中的每个菜单项
// 获取当前菜单项的父菜单Id
// 获取存储在父菜单Id映射中的子菜单Id列表
// 如果列表为空,则将子菜单Id列表初始化为空列表
// 将当前菜单项的菜单Id添加到子菜单Id列表中
// 将菜单Id与菜单项对象建立映射关系
// 设置根菜单Id为配置文件中的 menuRoot 属性值
// 通过递归调用 sysAppMenuService 的 getChildMenuNode 方法构建菜单树
// 如果构建的菜单树为空,则初始化为一个空的列表
// 从缓存中获取组织信息的JSON数据
// 使用 xx 将 xxxStr 中的JSON数据映射为 xxx 对象
// 从缓存中获取组织信息的JSON数据
// 将角色的组织编号设置为所属组织的编号
// 遍历查询结果中的角色列表
根据组织ID查询组织信息
// 获取用户所属组织信息
// 插入新的系统用户记录
// 添加用户所属组织,以及菜单角色
List<SysUserRole> sysUserRoleList = new ArrayList<>();
// Populate sysUserRoleList with SysUserRole objectsList<String> roleIdList = new ArrayList<>();
if (sysUserRoleList != null && sysUserRoleList.size() > 0) {roleIdList = sysUserRoleList.stream().map(s -> s.getRoleId()) // 提取每个元素的 roleId 属性.collect(Collectors.toList()); // 将提取出的 roleId 值收集到 roleIdList
}System.out.println(roleIdList);

假设sysUserRoleList中包含以下两个对象:

  1. SysUserRole(roleId = "123")

  2. SysUserRole(roleId = "456")

在这种情况下,运行示例代码后,输出会是:

[123, 456]

这表示我们从sysUserRoleList中提取了两个不同的roleId值,分别为"123"和"456",然后将它们存放在了roleIdList中。

ClickHouse 是一个用于联机分析处理(OLAP)的开源列式数据库管理系统(DBMS)。它专门设计用于处理大规模数据分析工作负载,可以在秒级甚至亚秒级内查询数十亿行数据。ClickHouse 的列式存储和数据压缩技术使其在分析查询性能方面表现出色。它广泛用于需要快速数据分析的场景,如在线广告业务、数据仓库、日志分析等。

加群联系作者vx:xiaoda0423

仓库地址:https://github.com/webVueBlog/JavaGuideInterview

参考资料

[1]

https://play.google.com/apps/publish/?hl=zh-CN: https://link.juejin.cn?target=https%3A%2F%2Fplay.google.com%2Fapps%2Fpublish%2F%3Fhl%3Dzh-CN

[2]

http://open.qq.com/: https://link.juejin.cn?target=http%3A%2F%2Fopen.qq.com%2F

[3]

http://app.baidu.com/: https://link.juejin.cn?target=http%3A%2F%2Fapp.baidu.com%2F

[4]

http://dev.360.cn/: https://link.juejin.cn?target=http%3A%2F%2Fdev.360.cn%2F

[5]

https://dev.vivo.com.cn/: https://link.juejin.cn?target=https%3A%2F%2Fdev.vivo.com.cn%2F

[6]

http://open.oppomobile.com/: https://link.juejin.cn?target=http%3A%2F%2Fopen.oppomobile.com%2F

[7]

https://dev.mi.com/: https://link.juejin.cn?target=https%3A%2F%2Fdev.mi.com%2F

[8]

http://developer.huawei.com/consumer/cn/: https://link.juejin.cn?target=http%3A%2F%2Fdeveloper.huawei.com%2Fconsumer%2Fcn%2F

[9]

http://open.uc.cn/: https://link.juejin.cn?target=http%3A%2F%2Fopen.uc.cn%2F

[10]

http://zhushou.sogou.com/open/: https://link.juejin.cn?target=http%3A%2F%2Fzhushou.sogou.com%2Fopen%2F

[11]

http://dev.smartisan.com/: https://link.juejin.cn?target=http%3A%2F%2Fdev.smartisan.com%2F

[12]

http://open.flyme.cn/: https://link.juejin.cn?target=http%3A%2F%2Fopen.flyme.cn%2F

[13]

http://open.appgionee.com/: https://link.juejin.cn?target=http%3A%2F%2Fopen.appgionee.com%2F

[14]

http://dev.anzhi.com/: https://link.juejin.cn?target=http%3A%2F%2Fdev.anzhi.com%2F

[15]

https://developer.coolapk.com: https://link.juejin.cn?target=https%3A%2F%2Fdeveloper.coolapk.com

[16]

http://open.lenovo.com/: https://link.juejin.cn?target=http%3A%2F%2Fopen.lenovo.com%2F

[17]

http://support-cn.samsung.com/App/DeveloperChina/Home/Index: https://link.juejin.cn?target=http%3A%2F%2Fsupport-cn.samsung.com%2FApp%2FDeveloperChina%2FHome%2FIndex

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/86159.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Pycharm解决启动时候索引慢的问题

设置里去掉update里面的两个勾 shared indexes中&#xff0c;把自动下载索引改成不下载使用本地索引

综合能源系统(6)——综合能源综合评估技术

综合能源系统关键技术与典型案例  何泽家&#xff0c;李德智主编 综合能源系统是多种能源系统非线性耦合的、多时间与空间尺度耦合的“源-网-荷一储”一体化系统&#xff0c;通过能源耦合、多能互补&#xff0c;能够实现能源的高效利用&#xff0c;并提高新能源的利用水平。对…

沁恒ch32V208处理器开发(三)GPIO控制

目录 GPIO功能概述 CH32V2x 微控制器的GPIO 口可以配置成多种输入或输出模式&#xff0c;内置可关闭的上拉或下拉电阻&#xff0c;可以配置成推挽或开漏功能。GPIO 口还可以复用成其他功能。端口的每个引脚都可以配置成以下的多种模式之一&#xff1a; 1 浮空输入 2 上拉输入…

安装使用IDEA,修改样式,配置服务,构建Maven项目(超级详细版)

目录 前言&#xff1a; 一&#xff0c;安装 1.1打开官网JetBrains: Essential tools for software developers and teams点击 Developer Tools&#xff0c;再点击 Intellij IDEA 2.点击下载​编辑 3.选择对应的版本&#xff0c;左边的 Ultimate 版本为旗舰版&#xff0c;需要…

C++ ModBUS TCP客户端工具 qModMaster 介绍及使用

qModMaster工具介绍 QModMaster是一个基于Qt的Modbus主站&#xff08;Master&#xff09;模拟器&#xff0c;用于模拟和测试Modbus TCP和RTU通信。它提供了一个直观的图形界面&#xff0c;使用户能够轻松设置和发送Modbus请求&#xff0c;并查看和分析响应数据。 以下是QModM…

图像处理技巧形态学滤波之腐蚀操作

1. 引言 欢迎回来&#xff0c;我的图像处理爱好者们&#xff01;今天&#xff0c;让我们深入研究图像处理领域中的形态学计算。这些非线性的图像处理技术允许我们操纵图像中对象的形状和结构。在本系列中&#xff0c;我们将依次介绍四种基本的形态学操作&#xff1a;腐蚀、膨胀…

Kafka 概述

Kafka 为什么需要消息队列&#xff08;MQ&#xff09;使用消息队列的好处&#xff08;1&#xff09;解耦&#xff08;2&#xff09;可恢复性&#xff08;3&#xff09;缓冲&#xff08;4&#xff09;灵活性 & 峰值处理能力&#xff08;5&#xff09;异步通信 消息队列的两…

Neo4j笔记-数据迁移(导出/导入)

这里先说明以下几点&#xff1a; Neo4j在4.0下版本默认的库名是&#xff1a;graph.db Neo4j在4.0上版本默认的库名是&#xff1a;neo4j.db 不管是Neo4j&#xff0c;还是Neo4j Desktop&#xff0c;都会在bin目录下有neo4j、neo4j-admin软件。在conf目录下&#xff0c;有neo4j.…

MySQL SUBSTRING_INDEX() 函数的详细介绍

MySQL SUBSTRING_INDEX() 从给定字符串中返回指定数量的分隔符出现之前的子字符串。 当指定数字为正数时从最终分隔符的左侧返回子字符串&#xff0c;当指定数字为负数时从最终分隔符的右侧返回子字符串。 如果指定的次数大于分隔符的出现次数&#xff0c;则返回的子字符串将…

【每日一题】1572. 矩阵对角线元素的和

【每日一题】1572. 矩阵对角线元素的和 1572. 矩阵对角线元素的和题目描述解题思路 1572. 矩阵对角线元素的和 题目描述 给你一个正方形矩阵 mat&#xff0c;请你返回矩阵对角线元素的和。 请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和。 示例 1&a…

pycharm的Terminal中如何设置打开anaconda3的虚拟环境

在pycharm的File -> Settings -> Tools -> Terminal下面&#xff0c;如下图所示 修改为红框中内容&#xff0c;然后关闭终端在重新打开终端&#xff0c;即可看到anaconda3的虚拟环境就已经会被更新

数学建模(一)前继概念

课程推荐&#xff1a;数学建模老哥_哔哩哔哩_bilibili 目录 一、什么是数学建模&#xff1f; 二、数学建模的一般步骤 三、数学建模赛题类型 1.预测型 2. 评价类 3.机理分析类 4. 优化类 一、什么是数学建模&#xff1f; 数学建模是利用数学方法解决实际问题的一种实践。…

《Linux从练气到飞升》No.12 Linux进程概念

&#x1f57a;作者&#xff1a; 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux菜鸟刷题集 &#x1f618;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 &#x1f3c7;码字不易&#xff0c;你的&#x1f44d;点赞&#x1f64c;收藏❤️关注对我真的…

maven 删除下载失败的包

本文介绍了当Maven包报红时&#xff0c;使用删除相关文件的方法来解决该问题。文章详细说明了_remote.repositories、.lastUpdated和_maven.repositories文件的作用&#xff0c;以及如何使用命令行删除这些文件。这些方法可以帮助开发者解决Maven包报红的问题&#xff0c;确保项…

css-4:元素水平垂直居中的方法有哪些?如果元素不定宽高呢?

1、背景 在开发中&#xff0c;经常遇到这个问题&#xff0c;即让某个元素的内容在水平和垂直方向上都居中&#xff0c;内容不仅限于文字&#xff0c;可能是图片或其他元素。 居中是一个非常基础但又是非常重要的应用场景&#xff0c;实现居中的方法存在很多&#xff0c;可以将这…

go语言从0基础到安全项目开发实战

一.环境搭建并helloworld 搭建环境比较简单 1.1安装SDK 到以下链接下 Go下载 - Go语言中文网 - Golang中文社区 下载windows版本64位zip包 https://studygolang.com/dl/golang/go1.20.7.windows-amd64.zip 1.2配置环境变量 不配置的话就只能在bin目录下才能运行go命令 …

[保研/考研机试] 猫狗收容所 C++实现

题目描述&#xff1a; 输入&#xff1a; 第一个是n&#xff0c;它代表操作序列的次数。接下来是n行&#xff0c;每行有两个值m和t&#xff0c;分别代表题目中操作的两个元素。 输出&#xff1a; 按顺序输出收养动物的序列&#xff0c;编号之间以空格间隔。 源代码&#xff…

RabbitMQ在CentOS下的安装

RabbitMQ的版本是3.8.2 1.环境配置&#xff1a;CentOs 7.6以上版本&#xff0c;我的版本是7.9&#xff0c;不要对yum换源&#xff0c;否则可能会安装失败。 echo "export LC_ALLen_US.UTF-8" >> /etc/profile source /etc/profile 以上命令&#xff0c;是…

ESP 32 蓝牙虚拟键盘链接笔记本电脑的键值问题

由于打算利用esp32 通过蓝牙链接电脑后实现一些特俗的键盘功能&#xff0c;所以就折腾了一下&#xff0c;折腾最耗费时间的却是键值问题&#xff0c;让一个20多年的老司机重新补充了知识 过程曲折就不说了&#xff0c;直接说结果。 我们通过网络搜索获取的键值和蓝牙模拟键盘传…

谷粒商城第十一天-完善商品分组(主要添上关联属性)

目录 一、总述 二、前端部分 2.1 改良前端获取分组列表接口及其调用 2.2 添加关联的一整套逻辑 三、后端部分 四、总结 一、总述 前端部分和之前的商品品牌添加分类差不多。 也是修改一下前端的分页获取列表的接口&#xff0c;还有就是加上关联的那一套逻辑&#xff0c;…