springboot开发实用篇

一、Mongodb

(1)简介

MongoDB是一个开源、高性能、无模式的文档型数据库。NoSQL数据库产品中的一种,是最像关系型数据库的非关系型数据库。

数据库:永久性存储,修改频率极低

Mongodb:永久性存储与临时存储相结合,临时存储,修改频率较高

(2)robo3t

添加:db.集合名称.insert/save/insertOne(文档)

修改:db.集合名称.remove(条件)

删除:db.集合名称.update(条件,{操作种类:{文档}})

(3)使用springboot整合Mongodb

导入Mongodb的驱动坐标,添加相关的配置,客户端读写Mongodb。

二、Elasticsearch(ES)

(1)简介

Elasticsearch是一个分布式全文搜索引擎。

ctrl+shift+f在命令行中搜索

(2)文档操作

POST    http://localhost:9200/books/_doc        #使用系统生成id POST    http://localhost:9200/books/_create/1        #使用指定id, POST    http://localhost:9200/books/_doc/1        #使用指定id,不存在创建,存在更新(版本递增)

(3)springboot整合ES

导入坐标,添加配置,测试

三、整合第三方技术

(1)缓存cache

缓存是一种介于数据永久存储介质与数据应用之间的数据临时存储介质。

使用缓存可以有效地减少低速数据读取过程的次数,提高系统性能,

还可提供临时的数据存储空间。

(2)缓存使用

导入缓存技术相应的starter

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifactId>
</dependency>

启用缓存

@SpringBootApplication
@EnableCaching
public class Springboot19CacheApplication {public static void main(String[] args) {SpringApplication.run(Springboot19CacheApplication.class, args);}
}

设置当前操作的结果数据进入缓存

@Cacheable(value="cacheSpace",key="#id")
public Book getById(Integer id) {return bookDao.selectById(id);
}

(3)缓存供应商变更:Ehcache

①加入缓存供应商的坐标Ehcache

    <dependency><groupId>net.sf.ehcache</groupId><artifactId>ehcache</artifactId></dependency>

②缓存设定为使用Ehcache

spring:cache:type: ehcacheehcache:config: ehcache.xml

③提供ehcache配置文件ehcache.xml

(4)知识加油站(数据淘汰策略)

区分LRU和LFU

LRU:Least Recently Used(挑选最近最少使用的数据淘汰)

LFU:Least Frequently Used(挑选最近使用次数最少的数据淘汰)

(5)缓存供应商变更:Redis

①加入Redis坐标

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

②配置Redis服务器,缓存设定为使用Redis

spring:redis:host: localhostport: 6379cache:type: redisredis:use-key-prefix: true      # 是否使用前缀名(系统定义前缀名)key-prefix: sms_          # 追加自定义前缀名time-to-live: 10s         # 有效时长cache-null-values: false  # 是否允许存储空值

(6)缓存供应商变更:memcached

①安装memcached,需要使用命令行窗口的管理员身份运行cmd指令。

安装:memcached.exe -d install

启动:memcached.exe -d start

停止:memcached.exe -d stop

②springboot整合memcached

由于springboot未整合过memcached,需要硬编码操作。

就变成将对应的东西交给spring容器管理。

第一步加坐标

 <dependency><groupId>com.googlecode.xmemcached</groupId><artifactId>xmemcached</artifactId><version>2.4.7</version></dependency>

第二步配置memcached服务器必要的属性

memcached:# memcached服务器地址servers: localhost:11211# 连接池的数量poolSize: 10# 设置默认操作超时opTimeout: 3000

第三步创建读取属性配置信息类,加载配置

@Component
@ConfigurationProperties(prefix = "memcached")
@Data
public class XMemcachedProperties {private String servers;private Integer poolSize;private Long opTimeout;
}

第四步创建客户端配置类

@Configuration
public class XMemcachedConfig {@Autowiredprivate XMemcachedProperties xMemcachedProperties;@Beanpublic MemcachedClient getMemcachedClinet() throws IOException {MemcachedClientBuilder builder = new XMemcachedClientBuilder(xMemcachedProperties.getServers());MemcachedClient memcachedClient = builder.build();return memcachedClient;}
}

(7)使用jetCache

①如何整合远程的缓存

<dependency><groupId>com.alicp.jetcache</groupId><artifactId>jetcache-starter-redis</artifactId><version>2.6.2</version>
</dependency>
jetcache:remote:default:type: redishost: localhostport: 6379poolConfig:maxTotal: 50

②整合本地缓存

jetcache:local:default:type: linkedhashmapkeyConvertor: fastjson

(8)启用方法注解

要操作缓存要保证缓存的对象必须可序列化

查看缓存统计报告:

jetcache:statIntervalMinutes: 1

(9)j2cache

jetCache对SpringCache进行了封装,在原有功能基础上实现了多级缓存、缓存统计、自动刷新、异步调用、数据报表等功能

j2cache是一个缓存整合框架,可以提供缓存的整合方案,使各种缓存搭配使用,

自身不提供缓存功能。

是基于ehcache+redis进行整合

四、任务

(1)springboot整合quartz

工作:用于定义具体执行的工作

工作明细:用于描述定时工作的信息

触发器:用于描述触发工作的规则

调度器:描述了工作明细与触发器的对应关系

①导入quartz的相关坐标

 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-quartz</artifactId></dependency>

②定义具体要执行的任务,继承QuartzJobBean

public class MyQuartz extends QuartzJobBean {@Overrideprotected void executeInternal(JobExecutionContext context) throws JobExecutionException {System.out.println("quartz task run...");}
}

③定义触发器与工作明细,并绑定对应关系

@Configuration
public class QuartzConfig {@Beanpublic JobDetail printJobDetail(){
//        绑定具体的工作return JobBuilder.newJob(MyQuartz.class).storeDurably().build();}@Beanpublic Trigger printJobTrigger(){
//        绑定对应的工作明细ScheduleBuilder schedBuilder=CronScheduleBuilder.cronSchedule("0/5 * * * * ?");return TriggerBuilder.newTrigger().forJob(printJobDetail()).withSchedule(schedBuilder).build();}
}

(2)spring task

①开启定时任务的开关


@EnableScheduling
public class Springboot22TaskApplication {public static void main(String[] args) {SpringApplication.run(Springboot22TaskApplication.class, args);}
}

②设置定时任务的执行,并设置执行周期

@Component
public class MyBean {@Scheduled(cron = "0/2 * * * * ?")public void print(){System.out.println("spring task run...");}
}

五、邮件

springboot整合JavaMail

SMTP(Simple Mail Transfer protocol):简单邮件传输协议,用于发送电子邮件的传输协议。

POP3(Post Office Protocol -Version3):用于接收电子邮件的标准协议

IMAP(Internet Mail Access Protocol):互联网消息协议,是POP3的替代协议

①导入springboot整合javaMail的坐标

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId>
</dependency>

②配置JavaMail

spring:mail:username: ......@qq.comhost: smtp.qq.compassword: ......

③开启定时任务功能(发简单邮件)

@Service
public class SendServiceImpl implements SendMailService {@Autowiredprivate JavaMailSender javaMailSender;//发送人private String from="。。。。。。@qq.com";//收件人private String to="。。。。。。@163.com";//标题private String subject="测试邮件";//正文private String context="测试邮件正文内容";@Overridepublic void sendMail() {SimpleMailMessage message=new SimpleMailMessage();message.setFrom(from+"(。。。)");message.setTo(to);message.setSubject(subject);message.setText(context);javaMailSender.send(message);}

④发送多部件邮件

    try {MimeMessage message=javaMailSender.createMimeMessage();MimeMessageHelper helper=new MimeMessageHelper(message,true);//发送附件helper.setFrom(from+"(zzy)");helper.setTo(to);helper.setSubject(subject);helper.setText(context,true);//打开读取html//添加附件File f1=new File("D:\\code\\springboot_23_mail\\target\\springboot_23_mail-0.0.1-SNAPSHOT.jar");helper.addAttachment(f1.getName(),f1);javaMailSender.send(message);} catch (Exception e) {e.printStackTrace();}

六、消息

(1)概念:

生产者,消费者,同步消息,异步消息,消息队列

(2)企业级应用中广泛使用的三种异步消息传递技术

JMS ,AMQP ,MQTT

(3)JMS(java message service):一个规范,等同于jdbc规范,提供了与消息服务相关的API接口。

JMS消息模型:

peer-2-peer:点对点模型,消息发送到一个队列中,队列保存消息。队列的消息只能被一个消费者消费,或超时

publish-subscribe:发布订阅模型,消息可以被多个消费者消费,生产者和消费者完全独立,不需要感知对方的存在

JMS消息种类:

TextMessage MapMessage BytesMessage StreamMessage ObjectMessage Message (只有消息头和属性)

JMS实现:ActiveMQ、Redis、HornetMQ、RabbitMQ、RocketMQ(没有完全遵守JMS规范)

(4)AMQP

AMQP(advanced message queuing protocol):一种协议(高级消息队列协议,也是消息代理规范),规范了网络交换的数据格式,兼容JMS

优点:具有跨平台性,服务器供应商,生产者,消费者可以使用不同的语言来实现

AMQP消息模型:

direct exchange

fanout exchange

topic exchange

headers exchange

system exchange

AMQP消息种类:byte[]

AMQP实现:RabbitMQ、StormMQ、RocketMQ

(5)MQTT

MQTT(Message Queueing Telemetry Transport)消息队列遥测传输,专为小设备设计,是物联网(IOT)生态系统中主要成分之一

(6)

Kafka,一种高吞吐量的分布式发布订阅消息系统,提供实时消息功能。

消息队列产品:ActiveMQ ,RabbitMQ ,RocketMQ, Kafka

(7)ActiveMQ

①springboot整合ActiveMQ坐标

 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-activemq</artifactId></dependency>

②配置ActiveMQ

spring:activemq:broker-url: tcp://localhost:61616jms:template:default-destination: zhoupub-sub-domain: true

③指定消息存储队列(生产与消费的关系)

@Service
public class MessageServiceActivemqImpl implements MessageService {@Autowiredprivate JmsMessagingTemplate jmsMessagingTemplate;@Overridepublic void sendMessage(String id) {System.out.println("待发送短信的订单已纳入处理队列111,id:"+id);jmsMessagingTemplate.convertAndSend("order.queue.id",id);}@Overridepublic String doMessage() {String id =jmsMessagingTemplate.receiveAndConvert(String.class);System.out.println("已完成短信发送业务,id:"+id);return id;}

④使用消息监听器对消息队列监听

@Component
public class MessageListener {@JmsListener(destination = "order.queue.id")@SendTo("order.other.queue.id")public String receive(String id) {System.out.println("已完成短信发送业务,id:" + id);return "new:"+id;}

(8)RabbitMQ(direct)

①导入springboot整合RabbitMQ坐标

  <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency>

②配置RabbitMQ

spring:rabbitmq:host: localhostport: 5672

③定义消息队列

@Configuration
public class RabbitConfigDirect {@Beanpublic Queue directQueue(){return new Queue("direct_queue");}@Beanpublic DirectExchange directExchange(){return new DirectExchange("directExchange");}@Beanpublic Binding bindingDirect(){return BindingBuilder.bind(directQueue()).to(directExchange()).with("direct");}

durable:是否持久化,默认false        

exclusive:是否当前连接专用,默认false,连接关闭后队列即被删除

autoDelete:是否自动删除,当生产者或消费者不再使用此队列,自动删除

④生产与消费消息

@Service
public class MessageServiceRabbitmqDirectImpl implements MessageService {@Autowiredprivate AmqpTemplate amqpTemplate;@Overridepublic void sendMessage(String id) {System.out.println("待发送短信的订单已纳入处理队列(rabbitmq direct),id:"+id);amqpTemplate.convertAndSend("directExchange","direct",id);}

⑤监听

@Component
public class MessageListener {@RabbitListener(queues = "direct_queue")public void receive(String id){System.out.println("已完成短信发送业务(rabbitmq direct),id:" + id);}

(9)topic

①定义消息队列

@Configuration
public class RabbitConfigTopic {@Beanpublic Queue topicQueue(){return new Queue("topic_queue");}@Beanpublic Queue topicQueue2(){return new Queue("topic_queue2");}@Beanpublic TopicExchange topicExchange(){return new TopicExchange("topicExchange");}@Beanpublic Binding bindingTopic(){return BindingBuilder.bind(topicQueue()).to(topicExchange()).with("topic.*.id");}@Beanpublic Binding bindingTopic2(){return BindingBuilder.bind(topicQueue2()).to(topicExchange()).with("topic.order.*");}

②绑定键匹配规则

*  (星号): 用来表示一个单词 ,且该单词是必须出现的

#  (井号): 用来表示任意数量

(10)RocketMQ

①导入springboot整合RocketMQ坐标

    <dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-spring-boot-starter</artifactId><version>2.2.1</version></dependency>

②配置RocketMQ

rocketmq:name-server: localhost:9876producer:group: group_rocketmq

③生产消息

   @Autowiredprivate RocketMQTemplate rocketMQTemplate;@Overridepublic void sendMessage(String id) {System.out.println("待发送短信的订单已纳入处理队列(rocketmq),id:"+id);
//        rocketMQTemplate.convertAndSend("order_id",id);//同步SendCallback callback=new SendCallback() {@Overridepublic void onSuccess(SendResult sendResult) {System.out.println("消息发送成功");}@Overridepublic void onException(Throwable throwable) {System.out.println("消息发送失败!!!");}};rocketMQTemplate.asyncSend("order_id",id,callback);}

④消费消息用消息监听器(与前两个不同,监听器注解在类上)

@Component
@RocketMQMessageListener(topic = "order_id",consumerGroup = "group_rocketmq")
public class MessageListener implements RocketMQListener<String> {@Overridepublic void onMessage(String id) {System.out.println("已完成短信发送业务(rocketmq),id:" + id);}
}

七、监听

(1)SpringBootAdmin(可视化监控平台)

①admin服务端(pom)

 <dependency><groupId>de.codecentric</groupId><artifactId>spring-boot-admin-starter-server</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>

②admin客户端(pom)

<dependency><groupId>de.codecentric</groupId><artifactId>spring-boot-admin-starter-client</artifactId>
</dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>

③配置服务端

④配置客户端

(2)监控原理

Actuator提供了Springboot生产就绪功能,通过断点的配置与访问,获取端点信息。

端点描述了一组监控信息,Springboot提供了多个内置端点,也可以根据需要自定义断点信息。

访问当前应用所有端点信息:/actuator

访问端点详细信息:/actuator/端点名称

(3)自定义监控指标(info端点)

①配置方式

info:appName: @project.artifactId@version: @project.version@author: zhou

②编程方式

@Component
public class AppInfoContributor implements InfoContributor {@Overridepublic void contribute(Info.Builder builder) {Map<String,Object> infoMap = new HashMap<>();infoMap.put("buildTime","2006");builder.withDetail("runTime",System.currentTimeMillis()).withDetail("company","传智教育");builder.withDetails(infoMap);}
}

(4)为health端点添加自定义指标

@Component
public class AppHealthContributor extends AbstractHealthIndicator {@Overrideprotected void doHealthCheck(Health.Builder builder) throws Exception {boolean condition = true;if(condition){Map<String,Object> infoMap = new HashMap<>();infoMap.put("buildTime","2006");builder.withDetail("runTime",System.currentTimeMillis()).withDetail("company","传智教育");builder.withDetails(infoMap);builder.status(Status.UP);}else{builder.status(Status.DOWN);}}
}

(5)为Metrics端点添加自定义指标

@Service
public class BookServiceImpl extends ServiceImpl<BookDao, Book> implements IBookService {private Counter counter;public BookServiceImpl(MeterRegistry meterRegistry){counter = meterRegistry.counter("用户付费操作次数:");}@Overridepublic boolean delete(Integer id) {counter.increment();return bookDao.deleteById(id) > 0;}
}

(6)自定义端点

@Component
@Endpoint(id="pay")
public class PayEndPoint {@ReadOperationpublic Object getPay(){//调用业务操作,获取支付相关信息结果,最终return出去Map payMap = new HashMap();payMap.put("level 1",103);payMap.put("level 2",315);payMap.put("level 3",666);return payMap;}
}

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

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

相关文章

使用百度语音技术实现文字转语音

使用百度语音技术实现文字转语音 SpringBootVue前后端分离项目 调用api接口需要使用AK和SK生成AccessToken,生成getAccessToken的接口有跨域限制,所以统一的由后端处理了 部分参数在控制台->语音技术->在线调试里面能找到 Controller RestController RequestMapping(&q…

游戏常用运行库安装包 Game Runtime Libraries Package

游戏常用运行库安装包&#xff08;Game Runtime Libraries Package&#xff09;是一个整合了多种游戏所需运行库的安装程序&#xff0c;旨在帮助玩家和开发者解决游戏无法正常运行的问题。该安装包支持从Windows XP到Windows 11的系统&#xff0c;并且具备自动检测系统并推荐合…

【python】OpenCV—Extreme Points in the Contour

文章目录 1、需求描述2、功能实现3、更多的例子4、完整代码5、参考 1、需求描述 给一张图片&#xff0c;找出其轮廓&#xff0c;并画出轮廓的上下左右极值点 输入图片 输出效果 2、功能实现 # 导入必要的包 import imutils import cv2 # 加载图像&#xff0c;将其转换为灰度…

【数据集处理工具】将COCO格式数据集的val.json与tett.json文件合并为一个json

合并COCO数据集JSON文件的Python脚本 1、目的2、功能概述3、使用方法4、注意事项5、 代码部分 1、目的 此Python脚本旨在帮助用户合并多个COCO格式的数据集JSON文件&#xff0c;特别适用于将验证集和测试集的标注数据整合到单一文件中。 该脚本假设各个数据集的类别信息&…

django踩坑(四):终端输入脚本可正常执行,而加入crontab中无任何输出

使用crontab执行python脚本时&#xff0c;有时会遇到脚本无法执行的问题。这是因为crontab在执行任务时使用的环境变量与我们在终端中使用的环境变量不同。具体来说&#xff0c;crontab使用的环境变量是非交互式(non-interactive)环境变量&#xff0c;而终端则使用交互式(inter…

国内访问Docker Hub慢问题解决方法

在国内访问Docker Hub时可能会遇到一些困难&#xff0c;但幸运的是&#xff0c;有多种解决方案可以帮助你顺利下载Docker镜像。以下是一些有效的解决方案&#xff1a; 配置Docker镜像源&#xff1a;你可以通过配置Docker的daemon.json文件来使用国内镜像源&#xff0c;比如DaoC…

基于若依的ruoyi-nbcio流程管理系统修正自定义业务表单的回写bug

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 http://218.75.87.38:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a; h…

项目收获总结--大数据量存储架构设计方案

项目收获总结--大数据量存储架构设计方案 一、背景二、数据存储层技术选型2.1 MySQL2.2 MongoDB2.3 HBase2.4 HBaseElasticSearch 三、HBaseElasticSearch基本原理3.1 前置考虑3.2 HBaseElasticSearch优点3.3 HBaseElasticSearch缺点 四、HBaseElasticSearch数据一致性架构4.1 …

linux系统设置开机启动的两种方法systemd及rc.local(手工写sh脚本,手工写service服务)

文章目录 知识点实验一、systemd&#xff08;一&#xff09;自写一个sh脚本并加入开机启动&#xff08;二&#xff09;源码安装的nginx加入开机启动 rc.local 知识点 在Linux系统中&#xff0c;有多种方法可以设置开机启动。以下是其中的一些主要方法&#xff1a; systemd 在较…

3.3-LSTM的改进

文章目录 1改进点1.1多层化1.2 dropout1.2.1具体概念1.2.2应该插入到LSTM模型的哪里 1.3权重共享 2改进之后的LSTMLM的代码实现2.1初始化2.2前向计算2.3反向传播 3相应的学习代码的实现4总结 1改进点 1.1多层化 加深神经网络的层数往往能够学习更复杂的模式&#xff1b;因此这…

5种梯度下降法的公式

5种梯度下降法的公式推演&#xff1a; 1. 梯度下降 (Gradient Descent) 梯度下降法的更新公式为&#xff1a; θ t 1 θ t − η ∇ θ J ( θ ) \theta_{t1} \theta_t - \eta \nabla_\theta J(\theta) θt1​θt​−η∇θ​J(θ) 其中&#xff0c; θ t \theta_t θt​…

Tomcat服务器

1.Tomcat定义以及作用 Web服务器是一个应用程序(软件)&#xff0c;对HTTP协议的操作进行封装&#xff0c;使得程序员不必直接对协议进行操作。(不用程序员自己写代码去解析http协议规则&#xff0c;比如不用考虑响应码的问题&#xff0c;以及响应数据应该如何写)&#xff0c;让…

ZK学习笔记

ZK 一.基本概念 Zookeeper是⼀个开源的分布式协调服务&#xff0c;其设计⽬标是将那些复杂的且容易出错的分布式⼀致性服务封装起来&#xff0c;构成⼀个⾼效可靠的原语集&#xff0c;并以⼀些简单的接⼝提供给⽤户使⽤。 zookeeper是⼀个典型的分布式数据⼀致性的解决⽅案&…

在 PostgreSQL 里如何实现数据的冷热数据分层存储的自动化策略调整?

&#x1f345;关注博主&#x1f397;️ 带你畅游技术世界&#xff0c;不错过每一次成长机会&#xff01;&#x1f4da;领书&#xff1a;PostgreSQL 入门到精通.pdf 文章目录 在 PostgreSQL 里如何实现数据的冷热数据分层存储的自动化策略调整 在 PostgreSQL 里如何实现数据的冷…

ip地址是电脑还是网线决定的

在数字化时代的浪潮中&#xff0c;网络已经成为了我们日常生活和工作不可或缺的一部分。当我们谈论网络时&#xff0c;IP地址无疑是一个核心的概念。然而&#xff0c;关于IP地址的分配和决定因素&#xff0c;很多人可能存在误解。有些人认为IP地址是由电脑决定的&#xff0c;而…

mybatisPlus和mybatis的版本冲突问题、若依换成MP、解决git无法推送、使用若依框架的swagger、以后再遇到团队项目应该怎么做。

20240716 一. mybatisPlus和mybatis的版本冲突问题1. 使用前的准备2. 我遇到了一个很严重的问题。3. 解决问题&#xff0c;好吧也没解决&#xff0c;发现问题&#xff01;&#xff01; 二、该死的git&#xff01;&#xff01;&#xff01;&#xff01;1. 解决无法在idea中使用g…

CBSD bhyve Ubuntu 配置vnc登录管理

CBSD介绍 CBSD是为FreeBSD jail子系统、bhyve、QEMU/NVMM和Xen编写的管理层。该项目定位为一个综合解决方案的单一集成工具&#xff0c;用于使用预定义的软件集以最少的配置快速构建和部署计算机虚拟环境。 虽然CBSD没有提供额外的操作系统级功能&#xff0c;但它极大地简化了…

fatal: not a git repository (or any of the parent directories): .git

问题描述&#xff1a; 通过git pull 拉取代码提示&#xff1a; fatal: not a git repository (or any of the parent directories): .git 这个错误信息表明你当前所在的目录不是一个 Git 仓库&#xff0c;或者任何父目录中都没有 .git 目录。 问题解决&#xff1a; 确认当前目…

Windows 、Linux、MacOS 进程管理机制

本心、输入输出、结果 文章目录 Windows 、Linux、MacOS 进程管理机制前言Windows 进程管理机制Linux 进程管理macOS 进程管理内存不够了,几个操作系统如何处理Windows 、Linux、MacOS 进程管理机制 编辑 | 简简单单 Online zuozuo 地址 | https://blog.csdn.net/qq_15071263 …

<数据集>混凝土缺陷检测数据集<目标检测>

数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;7353张 标注数量(xml文件个数)&#xff1a;7353 标注数量(txt文件个数)&#xff1a;7353 标注类别数&#xff1a;6 标注类别名称&#xff1a;[exposed reinforcement, rust stain, Crack, Spalling, Efflorescence…