项目转换微服务架构
文章目录
- 1.sun-dependencies引入SpringCloud的版本
- 2. 创建sun-cloud-home微服务
- 1.创建maven项目
- 2.目录概览
- 3.pom.xml
- 4.application.yml
- 5.application-prod.yml
- 6.HomeApplicaion.java
- 7.HomeController.java
- 8.测试访问
- 9.打包测试
- 3.创建sun-cloud-sku微服务
- 1.磁盘将这个sun-cloud-home复制粘贴
- 2.修改pom.xml
- 1.artifactId
- 2.项目启动类路径
- 3.添加为maven项目
- 3.修改application.yml
- 4.修改启动类
- 5.修改controller
- 6.启动测试
- 7.打包测试
- 1.发现没有交给sun-frame管理
- 2.在sun-frame的pom中添加对这个模块的管理
- 3.maven clean-package 成功打包!
- 4.创建sun-cloud模块来管理cloud的组件
- 1.创建模块
- 2.pom.xml
- 3.删除src目录
- 4.在下面新建一个sun-cloud-nacos模块
- 1.创建项目
- 2.pom.xml
- 3.查看父pom
- 5.使用RestTemplate实现微服务之间的调用
- 1.引入依赖
- 2.sun-cloud-nacos创建配置类
- 3.在sun-cloud-home模块引入sun-cloud-nacos依赖
- 4.HomeController.java
- 4.报错 log4j-slf4j-impl cannot be present with log4j-to-slf4j日志冲突
- 5.去sun-common-log这个日志模块将spring-boot-starter-logging排除掉
- 6.再回到home模块,发现spring-boot-starter-logging没了
- 7.需要注意的是引入sun-common-log模块一定要在第一个,因为有很多依赖都有spring-boot-starter-logging
- 8.启动两个项目进行服务调用测试
1.sun-dependencies引入SpringCloud的版本
<spring.cloud.version>2020.0.6</spring.cloud.version><!-- 导入springcloud的所有依赖版本 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring.cloud.version}</version><type>pom</type><scope>import</scope></dependency>
2. 创建sun-cloud-home微服务
1.创建maven项目
2.目录概览
3.pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><!-- 继承父模块的版本和通用依赖 --><parent><groupId>com.sunxiansheng</groupId><artifactId>sun-dependencies</artifactId><version>1.0-SNAPSHOT</version><!-- 父pom.xml位置 --><relativePath/></parent><artifactId>sun-cloud-home</artifactId><properties><!-- 统一指定common的版本,方便修改 --><sun-common-version>1.0-SNAPSHOT</sun-common-version></properties><!-- 自定义依赖,无需版本号 --><dependencies><!-- 引入的自定义公共模块 --><!-- 引入sun-common-log --><dependency><groupId>com.sunxiansheng</groupId><artifactId>sun-common-log</artifactId><version>${sun-common-version}</version><exclusions><exclusion><artifactId>spring-boot-starter-logging</artifactId><groupId>org.springframework.boot</groupId></exclusion></exclusions></dependency><!-- 引入sun-common-mybatisplus --><dependency><groupId>com.sunxiansheng</groupId><artifactId>sun-common-mybatisplus</artifactId><version>${sun-common-version}</version><!-- 与log4j2日志冲突 --><exclusions><exclusion><artifactId>spring-boot-starter-logging</artifactId><groupId>org.springframework.boot</groupId></exclusion></exclusions></dependency><!-- 引入sun-common-redis --><dependency><groupId>com.sunxiansheng</groupId><artifactId>sun-common-redis</artifactId><version>${sun-common-version}</version></dependency><!-- 引入sun-common-web --><dependency><groupId>com.sunxiansheng</groupId><artifactId>sun-common-web</artifactId><version>${sun-common-version}</version></dependency><!-- 引入sun-common-swagger --><dependency><groupId>com.sunxiansheng</groupId><artifactId>sun-common-swagger</artifactId><version>${sun-common-version}</version></dependency><!-- 引入sun-common-test --><dependency><groupId>com.sunxiansheng</groupId><artifactId>sun-common-test</artifactId><version>${sun-common-version}</version></dependency><!-- 引入sun-common-threadpool --><dependency><groupId>com.sunxiansheng</groupId><artifactId>sun-common-threadpool</artifactId><version>${sun-common-version}</version></dependency><!-- 引入sun-common-tool --><dependency><groupId>com.sunxiansheng</groupId><artifactId>sun-common-tool</artifactId><version>1.0-SNAPSHOT</version></dependency><!-- 引入的自定义公共模块 --><!-- fastjson --><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId></dependency><!-- mapstruct --><dependency><groupId>org.mapstruct</groupId><artifactId>mapstruct</artifactId></dependency><dependency><groupId>org.mapstruct</groupId><artifactId>mapstruct-processor</artifactId></dependency></dependencies><!-- maven 打包常规配置 --><build><!-- 打包成 jar 包时的名字为项目的artifactId --><finalName>${project.artifactId}</finalName><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><!-- 引用父模块中统一管理的插件版本(与SpringBoot的版本一致!) --><version>${spring-boot.maven.plugin.version}</version><configuration><!-- 指定项目的主启动类(大多数SpringBoot项目可以自动检测) --><mainClass>com.sunxiansheng.home.HomeApplicaion</mainClass></configuration><executions><execution><goals><!-- 将所有的依赖包都打到这个模块中 --><goal>repackage</goal></goals></execution></executions></plugin></plugins></build></project>
4.application.yml
server:port: 8081
spring:profiles:active: ${env-flag} # 配置为application-xxx.yml中的xxx,就可以激活指定的配置文件application:name: sun-cloud-home # 服务名(注册到Nacos中的名字)
5.application-prod.yml
# 生产环境日志配置
#logging:# 日志级别的控制(一般在区分多环境的时候使用)
# level:
# com.sunxiansheng.user.UserApplicaion: INFO # 保留启动类的日志,可以看到激活了什么环境
# com.sunxiansheng.user: OFF # 关闭其他类的日志
# 生产环境暴露生产环境服务器外网ip
#spring:
# cloud:
# nacos:
# discovery:
# ip: xxx # 服务注册地址,指定生产环境服务器外网ip
6.HomeApplicaion.java
package com.sunxiansheng.home;import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;/*** Description: 首页微服务启动类* @Author sun* @Create 2024/7/8 16:56* @Version 1.0*/
@SpringBootApplication
@MapperScan(value = "com.sunxiansheng.*.mapper") // 扫描 Mapper 接口
@ComponentScan(value = "com.sunxiansheng") // 扫描组件
public class HomeApplicaion {public static void main(String[] args) {// 异步日志配置System.setProperty("Log4jContextSelector", "org.apache.logging.log4j.core.async.AsyncLoggerContextSelector");SpringApplication.run(HomeApplicaion.class, args);}
}
7.HomeController.java
package com.sunxiansheng.home.controller;import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;/*** Description: 首页控制器* @Author sun* @Create 2024/7/27 15:40* @Version 1.0*/
@Slf4j
@RestController
public class HomeController {@GetMapping("/test")public String home() {log.info("home");return "home";}}
8.测试访问
9.打包测试
3.创建sun-cloud-sku微服务
1.磁盘将这个sun-cloud-home复制粘贴
2.修改pom.xml
1.artifactId
2.项目启动类路径
3.添加为maven项目
3.修改application.yml
4.修改启动类
5.修改controller
6.启动测试
7.打包测试
1.发现没有交给sun-frame管理
2.在sun-frame的pom中添加对这个模块的管理
3.maven clean-package 成功打包!
4.创建sun-cloud模块来管理cloud的组件
1.创建模块
2.pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><!-- 继承父模块的版本和通用依赖 --><parent><groupId>com.sunxiansheng</groupId><artifactId>sun-dependencies</artifactId><version>1.0-SNAPSHOT</version><!-- 父pom.xml位置 --><relativePath/></parent><artifactId>sun-cloud</artifactId><!-- 自定义依赖,无需版本号 --><dependencies></dependencies></project>
3.删除src目录
4.在下面新建一个sun-cloud-nacos模块
1.创建项目
2.pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><!-- 继承父模块的版本和通用依赖 --><parent><groupId>com.sunxiansheng</groupId><artifactId>sun-cloud</artifactId><version>1.0-SNAPSHOT</version></parent><artifactId>sun-cloud-nacos</artifactId></project>
3.查看父pom
5.使用RestTemplate实现微服务之间的调用
1.引入依赖
<!-- 可以使用Spring注解 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
2.sun-cloud-nacos创建配置类
package com.sunxiansheng.nacos.config;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;/*** Description: RestTemplate 配置类* @Author sun* @Create 2024/7/27 16:19* @Version 1.0*/
@Configuration
public class RestTemplateConfig {/*** 将 RestTemplate 注入到容器中* @return*/@Beanpublic RestTemplate restTemplate() {return new RestTemplate();}}
3.在sun-cloud-home模块引入sun-cloud-nacos依赖
<!-- sun-cloud-nacos --><dependency><groupId>com.sunxiansheng</groupId><artifactId>sun-cloud-nacos</artifactId><version>1.0-SNAPSHOT</version></dependency>
4.HomeController.java
package com.sunxiansheng.home.controller;import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;import javax.annotation.Resource;/*** Description: 首页控制器* @Author sun* @Create 2024/7/27 15:40* @Version 1.0*/
@Slf4j
@RestController
public class HomeController {/*** 注入 RestTemplate*/@Resourceprivate RestTemplate restTemplate;/*** 请求地址*/private static final String URL = "http://localhost:8082/test";@GetMapping("/getSkuInfo")public String getSkuInfo() {// 调用 sku 服务return restTemplate.getForObject(URL, String.class);}}
4.报错 log4j-slf4j-impl cannot be present with log4j-to-slf4j日志冲突
5.去sun-common-log这个日志模块将spring-boot-starter-logging排除掉
6.再回到home模块,发现spring-boot-starter-logging没了
7.需要注意的是引入sun-common-log模块一定要在第一个,因为有很多依赖都有spring-boot-starter-logging
比如把sun-common-log模块放到mybatisplus后面,就又会出现这个问题,因为maven是按照顺序加载的,如果不放在第一个就只能一个个排除。
8.启动两个项目进行服务调用测试
相关文章:
项目转换微服务架构
文章目录 1.sun-dependencies引入SpringCloud的版本2. 创建sun-cloud-home微服务1.创建maven项目2.目录概览3.pom.xml4.application.yml5.application-prod.yml6.HomeApplicaion.java7.HomeController.java8.测试访问9.打包测试 3.创建sun-cloud-sku微服务1.磁盘将这个sun-clou…...
WebRTC搭建与应用(五)-Coturn踩坑记
WebRTC搭建与应用(五)-Coturn踩坑记 近期由于项目需要在研究前端WebGL渲染转为云渲染,借此机会对WebRTC等有了初步了解,在此记录一下,以防遗忘。 第五章 WebRTC搭建与应用(五)-Coturn踩坑记 文章目录 WebRTC搭建与应用(五)-Coturn踩坑记前…...
Uniapp 手机基座调试App 打包成Apk文件,并上传到应用商店
1.Uniapp手机基座调试App。 1.1 以下是我另一篇文章 讲解 uniapp连接手机基座调试App、 Hbuildx使用SUB运行到手机基座测试_hbuilder基座-CSDN博客 2.打包本地的uniapp项目为apk文件。 打包的方式有很多种,我们可以选择本地打包和远程云端打包两种方式。 我们在打包…...
【AI日记】24.12.24 kaggle 比赛 2-12
【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】 工作 参加:kaggle 比赛 Regression with an Insurance Dataset时间:3 小时 读书 书名:我们能做什么 : 胡适与中国青年最真诚的分享时间:2 小时 律己 工作时…...
教师如何打造专属私密成绩查询系统?
期末的校园,被一种特殊的氛围所笼罩。老师们如同辛勤的工匠,精心打磨着每一个教学环节。复习阶段,他们在知识的宝库中精挑细选,把一学期的重点内容一一梳理,为学生们打造出系统的复习框架。课堂上,他们激情…...
【linux】NFS实验
NFS服务 NFS是Network File System(网络文件系统)的缩写。它是一种用于在计算机网络中共享文件和目录的协议。NFS允许计算机上的用户访问和操作远程计算机上的文件,就像访问本地文件一样。它使用客户端-服务端模型,其中客户端机器…...
ubuntu22.04安装PaddleX3
PaddleOCR 安装过程可以参考PaddleX本地安装教程 我的电脑环境配置: ubuntu22.04 cuda11.8(之前安装的是12.4没有匹配的paddle-gpu;这里改成11.8) 一、安装基础环境 1、 conda create -n ppx1 python3.10 2、 conda activate ppx1 3、…...
无标记动作捕捉系统如何赋能体育运动分析,推动体育科学发展?
随着技术的不断发展与社会的需要,健康、科学运动成为了大众关注的一个热词。在韩国首尔的中央大学,其生物运动临床康复实验室和运动训练中心就致力于通过生物力学分析来研究与运动相关的伤害,并通过定制科学的训练计划来帮助运动员改进他们的…...
JavaScript 标准内置对象——Array
1、构造函数 2、静态方法 // 从可迭代或类数组对象创建一个新的浅拷贝的数组实例 // arrayLike 想要转换成数组的类数组或可迭代对象 Array.from(arrayLike, mapFn, thisArg) Array.fromAsync(arrayLike, mapFn, thisArg) // 异步Array.isArray(value) // 判断传递的值是否是一…...
Python超能力:高级技巧让你的代码飞起来
文章一览 前言一、with1.1 基本用法1.2 示例自定义上下文管理器 二、条件表达式三、列表式推导式与 zip 结合 四、map() 函数(内置函数)map用于数据清洗1. 数据清洗:字母大小写规范2. filter() 函数 五、匿名函数 lambda5.1 lambda的参数&…...
move生态
move生态 Move 生态主要围绕着 Move 编程语言及其相关的区块链平台构建,这些平台旨在提供更高的安全性、可扩展性和开发者友好性。以下是关于 Move 生态的一些关键点: 1. 核心区块链平台 Aptos:Aptos 是一个 Layer 1 区块链,专注…...
使用插件时要注意
在使用插件时,需要注意一些关键事项,确保插件能够稳定、安全地工作,并且不会给系统带来风险或负担。以下是使用插件时需要注意的几个重要方面: 1. 插件来源与信任度 官方渠道与可靠来源:总是选择来自官方网站、知名平…...
JVM对象分配内存如何保证线程安全?
大家好,我是锋哥。今天分享关于【JVM对象分配内存如何保证线程安全?】面试题。希望对大家有帮助; JVM对象分配内存如何保证线程安全? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在JVM中,对象的内存分配…...
ApacheStruts2 目录遍历与文件上传漏洞复现(CVE-2024-53677,S2-067)(附脚本)
0x01 产品描述: Apache Struts 2 是一个用于JAVA的MVC框架,它用于快速开发web应用。它的设计目标是使得开发者能够更容易的处理web应用的展现层,数据层,和业务层。0x02 漏洞描述: CVE-2024-53677 漏洞的根本原因是 Struts 框架中不安全的文件上传处理机制。攻击者利用 CVE…...
Scala字符串连接方法—mkString—用法详解
Scala字符串连接方法—mkString—用法详解 在 Scala 中,mkString 是集合(如数组、列表、字符串等)的一种方法,用于将集合中的元素连接成一个字符串。 def mkString(sep: String): Stringdef mkString(start: String, sep: String…...
[实战]Spring Boot启动卡在Root WebApplicationContext initialization completed in
Spring Boot启动 打印Root WebApplicationContext: initialization completed in…这行日志完成后需要等很长时间才能真正启动完成。 分析一下发现是连接某个机器的MySQL就会出现这种情况。使用客户端软件连接MySQL时也很慢,但连接完成后执行MySQL各种语句非常看。…...
什么样的LabVIEW控制算自动控制?
自动控制是指系统通过预先设计的算法和逻辑,在无人工干预的情况下对被控对象的状态进行实时监测、决策和调整,达到预期目标的过程。LabVIEW作为一种图形化编程工具,非常适合开发自动控制系统。那么,什么样的LabVIEW控制算作“自动…...
xshell下载和安装(超详细)
参考:https://blog.csdn.net/hffh123/article/details/135885175 一、xshell官网下载 下载官网:https://www.xshell.com/zh/free-for-home-school/ 二、安装步骤 (一)、直接打开.exe文件 (二)、点击下一步ÿ…...
NS3学习——tcpVegas算法代码详解(2)
NS3学习——tcpVegas算法代码详解(1)-CSDN博客 目录 4.TcpVegas类中成员函数 (5) CongestionStateSet函数 (6) IncreaseWindow函数 1.检查是否启用 Vgas 2.判断是否完成了一个“Vegas 周期” 2.1--if:判断RTT样本数量是否足够 2.2--e…...
PyTorch 神经网络回归(Regression)任务:关系拟合与优化过程
PyTorch 神经网络回归(Regression)任务:关系拟合与优化过程 本教程介绍了如何使用 PyTorch 构建一个简单的神经网络来实现关系拟合,具体演示了从数据准备到模型训练和可视化的完整过程。首先,利用一维线性空间生成带噪…...
链原生 Web3 AI 网络 Chainbase 推出 AVS 主网, 拓展 EigenLayer AVS 场景
在 12 月 4 日,链原生的 Web3 AI 数据网络 Chainbase 正式启动了 Chainbase AVS 主网,同时发布了首批 20 个 AVS 节点运营商名单。Chainbase AVS 是 EigenLayer AVS 中首个以数据智能为应用导向的主网 AVS,其采用四层网络架构,其中…...
es 3期 第18节-分页查询使用避坑的一些事
#### 1.Elasticsearch是数据库,不是普通的Java应用程序,传统数据库需要的硬件资源同样需要,提升性能最有效的就是升级硬件。 #### 2.Elasticsearch是文档型数据库,不是关系型数据库,不具备严格的ACID事务特性ÿ…...
linux检测硬盘
通过fdisk 查看显示所有磁盘或闪存的信息 fdisk -l /dev/sd*使用 badlocks检查 linux 硬盘上的坏道/坏块。也可以修复坏道,但仅限于逻辑坏道,物理坏道只能更换硬盘 badblocks -s -v /dev/vdb1 > /badblocks-vdb1.txt tail -f badblocks-vdb1.txt #检…...
Unity3d 基于UGUI和VideoPlayer 实现一个多功能视频播放器功能(含源码)
前言 随着Unity3d引擎在数字沙盘、智慧工厂、数字孪生等场景的广泛应用,视频已成为系统程序中展示时,不可或缺的一部分。在 Unity3d 中,我们可以通过强大的 VideoPlayer 组件和灵活的 UGUI 系统,将视频播放功能无缝集成到用户界面…...
Ubuntu22.04 LTS 安装nvidia显卡驱动
准备跑老师给定的Github上的多模态源码,但是用了这么久ubuntu还没有尝试过安装nvidia驱动,好在也是一次成功,于是记录下来。 借鉴的是Ubuntu22.04安装显卡驱动(高速、避错版)-CSDN博客这篇文章,按照流程来基本没有问题,不过个人觉得有些步骤比较冗余,所以记录下来 主要…...
Linux编程(清华大学出版社2019年1月第1版)第5章课后作业
5.1 对于执行在时间上有重叠的逻辑流,称为并发流,并发流是并发的 并发不并发并发 5.2 几个箭头几个状态转换关系,箭头上写了可能原因。 在就绪状态不会执行指令,不会有IO请求或主动wait的情况,不会有从就绪状态到阻…...
相机雷达外参标定综述“Automatic targetless LiDAR–camera calibration: a survey“
相机雷达外参标定综述--Automatic targetless LiDAR–camera calibration: a survey 前言1 Introduction2 Background3 Automatic targetless LiDAR–camera calibration3.1 Information theory based method(信息论方法)3.1.1 Pairs of point cloud and image attributes(属性…...
JSON 系列之1:将 JSON 数据存储在 Oracle 数据库中
本文为Oracle数据库JSON学习系列的第一篇,讲述如何将JSON文档存储到数据库中,包括了版本为19c和23ai的情形。 19c中的JSON 先来看一下数据库版本为19c时的情形。 创建表colortab,其中color列的长度设为4000。若color的长度需要设为32767&a…...
分布式专题(10)之ShardingSphere分库分表实战指南
一、ShardingSphere产品介绍 Apache ShardingSphere 是一款分布式的数据库生态系统, 可以将任意数据库转换为分布式数据库,并通过数据分片、弹性伸缩、加密等能力对原有数据库进行增强。Apache ShardingSphere 设计哲学为 Database Plus,旨在…...
支付宝订单码支付
1.订单码支付,首先下载官方网站提供的sdk包到你的项目中。 2.选择控制器复制官方文档的获取二维码相关的代码示例。打开sdk包中v2的index.php文件,这个才是你选择语言的具体代码。 3.引用里面所需要的类文件,文件下载到你的项目中后…...
使用 Django 和 AWS ECR 实现容器化应用的管理
在现代云原生应用的开发和部署中,容器化技术已经成为主流。Amazon Elastic Container Registry (ECR) 是一种完全管理的 Docker 容器注册表服务,可以与 Amazon ECS、EKS 和其他容器服务无缝集成。在这篇文章中,我们将介绍如何使用 Django 和 AWS ECR 实现集成管理,包括创建、更…...
DeepWalk 原理详解
概述: DeepWalk 是一种流行的图嵌入方法,用于学习图结构数据中节点的低维表示。它通过将图的节点视作序列数据,利用自然语言处理中的技术(类似于word2vec算法)来捕捉节点间的关系,可以帮助我们理解和利用图…...
深入理解批量归一化(BN):原理、缺陷与跨小批量归一化(CmBN)
在训练深度神经网络时,批量归一化(Batch Normalization,简称BN)是一种常用且有效的技术,它帮助解决了深度学习中训练过程中的梯度消失、梯度爆炸和训练不稳定等。然而,BN也有一些局限性,特别是在…...
基于Spring Boot的雅苑小区管理系统
一、系统背景与意义 随着信息化技术的快速发展,传统的小区物业管理方式已经难以满足现代居民对于高效、便捷服务的需求。因此,开发一款基于Spring Boot的小区管理系统显得尤为重要。该系统旨在通过信息化手段,实现小区物业管理的智能化、自动…...
物理层知识要点
文章目录 物理层接口的四大特性通信基础编码和调制(1)数字数据编码为数字信号(2)模拟数据编码为数字信号(3)常见调制方式(3)信道的极限容量 多路复用技术数据传输方式物理层下的传输…...
项目里用到了哪些设计模式是怎么使用的?
在软件开发项目中,设计模式是解决特定问题的通用模板或最佳实践。它们提供了一种经过验证的方式来组织代码,使其更易于理解、维护和扩展。下面我将详细介绍一些常见的设计模式及其在项目中的应用方式。 1. 单例模式(Singleton Pattern&#…...
CPU性能篇-CPU 100%如何定位根因-Day 03
1. CPU使用率 1.1 关键指标介绍 user(通常缩写为 us),代表用户态 CPU 时间。注意,它不包括下面的 nice 时间,但包括了 guest 时间。nice(通常缩写为 ni),代表低优先级用户态 CPU 时…...
访谈积鼎科技总经理:国产CFD软件发展与未来趋势展望
傅彦国,上海积鼎信息科技有限公司创始人 记者:请傅总介绍下我国流体仿真行业的发展现状是怎样的? 傅彦国:自2018年政府加大了对核心技术自主研发的支持力度,国产CFD软件逐渐步入发展正轨。 首先,从市场规…...
四种自动化测试模型实例及优缺点详解
一、线性测试 1.概念: 通过录制或编写对应应用程序的操作步骤产生的线性脚本。单纯的来模拟用户完整的操作场景。 (操作,重复操作,数据)都混合在一起。 2.优点: 每个脚本相对独立,且不产生…...
数字后端培训项目Floorplan常见问题系列专题续集1
今天继续给大家分享下数字IC后端设计实现floorplan阶段常见问题系列专题。这些问题都是来自于咱们社区IC后端训练营学员提问的问题库。目前这部分问题库已经积累了4年了,后面会陆续分享这方面的问题。 希望对大家的数字后端学习和工作有所帮助。 数字后端项目Floor…...
NVIDIA GPU 内部架构介绍
NVIDIA GPU 架构 NVIDIA GPU 的 SM(Streaming Multiprocessor) 和 GPC(Graphics Processing Cluster) 是 GPU 架构中的关键组成部分。它们决定了 GPU 的计算能力和性能,以下是对这两个参数的详细介绍: 1. …...
[spring]实例化对象(静动态工厂)
在前面文章的例子当中,我们都创建了Bean对象。spring里常用的获取类的实例化对象有几种方式:构造函数获取Bean对象、静态和动态工厂获取Bean对象、实现FactoryBean规范。 因为一些步骤没有什么别的不同,所以我不会重复去讲,届时会…...
【转】arm64架构的银河麒麟系统Kylin的qt安装教程
转自:arm64架构的银河麒麟系统Kylin的qt安装教程_银河麒麟安装qt-CSDN博客 文章目录 前言 一、准备环境 安装C编译器和调试器 二、安装qt、qtcreator 检查是否已经安装过Qt组件 安装Qt组件和Qt creator 检查组件是否安装成功: 三、测试程序运行 报错 Qt…...
C# Main方法 和顶级语句详解
总目录 前言 Main方法 和顶级语句 介绍。 一、Main方法 1. 基本信息 Main 方法是 C# 应用程序的入口点。 Main 方法是应用程序启动后调用的第一个方法。C# 程序中只能有一个入口点。如果多个类包含 Main 方法,必须使用 StartupObject 编译器选项来编译程序&#…...
传输层协议分析头歌
第1关:TCP 包基础 本机使用的IP地址和TCP端口号(用;隔开):192.168.1.102;1161 gaia.cs.umass.edu的IP地址和端口号(用;隔开):128.119.245.12;80 第2关:三次握手 第一次握手,TCP SYN区段的序列号是:232129012 gaia.cs.umass.edu…...
JAVA AOP简单实践(基于SpringBoot)
天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…...
重温设计模式--迭代器模式
文章目录 迭代器模式(Iterator Pattern)概述迭代器模式的结构迭代器模式UML图C 代码示例应用场景 迭代器模式(Iterator Pattern)概述 定义: 迭代器模式是一种行为型设计模式,它提供了一种方法来顺序访问一个…...
Unity-Editor扩展GUI基本实现一个可拖拉放的格子列表
短短几百行代码,好吧,又是“参考”了国外的月亮 操作,还真地挺自然的。。。。。。国外的实现有点小牛 拖拉,增加+ 一个Element 鼠标左键长按,可以出提示 鼠标右键,清除Element, 有点小bug,不是很自然地完全清除, using System.Collections; using System.Collecti…...
Android 11添加电容笔电量监测需求
软件平台:Android11 硬件平台:QCS6125 需求:PAD接入电容笔,该笔通过驱动上报坐标及当前电量等数据,即走系统的input通道,需要系统层监测到该硬件数据,这里主要展示电量,对用户显示提…...
迈向AGI——大模型创新体验嘉年华邀请函
点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 深度对话,思想碰撞 大模型创新体验嘉年华诚邀您与我们共同见证 智见未来,只等你来 往期精彩文章推荐 关于AI TIME AI TIME源起于2019年,旨在发扬科学思辨精神,…...