当前位置: 首页 > news >正文

【JavaEE进阶】MyBatis的创建及使用

文章目录

  • 一. MyBatis简介
  • 二. MyBatis 使用
    • 1. 数据库和数据表的创建
    • 2. 创建Mybatis项目
      • 2.1 添加MyBatis框架支持
      • 2.2 设置MyBatis配置信息
    • 3. MyBatis开发流程
    • 4. MyBatis查询数据库测试
  • 三. MyBatis 流程
    • 1. MyBatis 查询数据库流程
    • 2. MyBatis 框架交互流程图

一. MyBatis简介

MyBatis是一种开源的持久层框架,它可以与Java程序一起使用,用于简化数据库操作。MyBatis提供了一个简单且灵活的方式来将Java对象映射到关系型数据库中的数据表。

MyBatis的主要目标是通过将SQL查询与Java代码的解耦来简化数据库访问,并提供了丰富的映射功能和灵活的查询选项。使用MyBatis,您可以将数据库操作定义为XML文件或注解的形式,然后根据需要执行这些操作。

总之,MyBatis是一个轻量级且功能强大的持久层框架,适用于需要灵活控制SQL和数据库访问的Java应用程序。它提供了一种简单且可定制的方式来进行数据库操作,使开发人员能够更容易地与数据库交互。
MyBatis官网

二. MyBatis 使用

MyBatis 的使用分为两部分,分别为:

  1. MyBatis开发环境的配置
  2. 使用MyBatis模式和语法操作数据库。

1. 数据库和数据表的创建

首先我们来创建一个数据库三张表(用户表,文章表,视频表):
将以下代码复制到MySQL5.7中:

-- 创建数据库
drop database if exists mycnblog;
create database mycnblog DEFAULT CHARACTER SET utf8mb4;-- 使用数据数据
use mycnblog;-- 创建表[用户表]
drop table if exists  userinfo;
create table userinfo(id int primary key auto_increment,username varchar(100) not null,password varchar(32) not null,photo varchar(500) default '',createtime timestamp default current_timestamp,updatetime timestamp default current_timestamp,`state` int default 1
) default charset 'utf8mb4';-- 创建文章表
drop table if exists  articleinfo;
create table articleinfo(id int primary key auto_increment,title varchar(100) not null,content text not null,createtime timestamp default current_timestamp,updatetime timestamp default current_timestamp,uid int not null,rcount int not null default 1,`state` int default 1
)default charset 'utf8mb4';-- 创建视频表
drop table if exists videoinfo;
create table videoinfo(vid int primary key,`title` varchar(250),`url` varchar(1000),createtime timestamp default current_timestamp,updatetime timestamp default current_timestamp,uid int
)default charset 'utf8mb4';-- 添加一个用户信息
INSERT INTO `mycnblog`.`userinfo` (`id`, `username`, `password`, `photo`, `createtime`, `updatetime`, `state`) VALUES 
(1, 'admin', 'admin', '', '2021-12-06 17:10:48', '2021-12-06 17:10:48', 1);-- 文章添加测试数据
insert into articleinfo(title,content,uid)values('Java','Java正文',1);-- 添加视频
insert into videoinfo(vid,title,url,uid) values(1,'java title','http://www.baidu.com',1);

即为创建完毕.

2. 创建Mybatis项目

添加MyBatis框架支持分为两种情况,一种情况是对自己之前的 Spring 项目进行升级,另一种情况是创建一个全新的 MyBatisSpring Boot的项目.两者的区别是创建一个全新的 MyBatis项目时直接使用依赖(下面的演示为直接使用依赖),另一个方法是使用插件来引入依赖.(此处不做介绍)

2.1 添加MyBatis框架支持

在这里插入图片描述
注意此处使用2.x.x版本的.
在这里插入图片描述
在这里插入图片描述
添加完依赖后,重新reload:
在这里插入图片描述
然后删除不使用的文件:
在这里插入图片描述

2.2 设置MyBatis配置信息

(1)设置数据库连接的相关信息在配置文件中添加以下配置:
```yml
spring:datasource:url: jdbc:mysql://127.0.0.1:3306/mycnblog?characterEncoding=utf8&useSSL=falseusername: rootpassword: '0828'driver-class-name: com.mysql.cj.jdbc.Driver
```![在这里插入图片描述](https://img-blog.csdnimg.cn/12a6648ef79840d98301c99249965d88.png)注意说明:如果使用的`mysql-connector-java`是 `5.x` 版本之前,`driver-class-name`的参数值应设置为`com.mysql.jdbc.Driver`,如果版本大于`5.x`,`driver-class-name`的参数值应设置为`com.mysql.cj.jdbc.Driver`。(2)MyBatis xml保存路径和xml命名模式设置`MyBatis xml`保存路径,xml 文件中保存是对数据库的具体操作SQL,配置如下:
```yml#设置MyBatis保存路径mybatis:mapper-locations: classpath:mybatis/*Mapper.xml
```
(3)启动MyBatis项目:
在设置好MyBatis配置信息后,运行启动MyBatis项目,观察能否成功运行,如果项目成功运行,说明配置成功。
![在这里插入图片描述](https://img-blog.csdnimg.cn/4fa58691bfb444d984a6c900af92fc69.png)

3. MyBatis开发流程

(1)根据xml保存路径创建包

在这里插入图片描述
(2)添加实体类对象
在 Java 目录下创建一个实体类包用来存放各种实体类,其中就包含UserEntity实体类。
在这里插入图片描述

package com.example.demo.entity;import lombok.Data;import java.time.LocalDateTime;@Data
public class UserEntity {private Integer id;private String username;private String password;private String photo;private LocalDateTime createtime;private LocalDateTime updatetime;private Integer state;
}

(3)数据库持久层UserMapper接口定义代码

package com.example.demo.mapper;import com.example.demo.entity.UserEntity;
import org.apache.ibatis.annotations.Mapper;import java.util.List;@Mapper
public interface UserMapper {List<UserEntity> getAll();
}

注意说明:创建好UserMapper类后立即在类上添加@Mapper注解,该注解源自org.apache.ibatis.annotations.Mapper
@Mapper注解是MyBatis框架中的一个注解,用于标识一个Java接口或抽象类作为数据访问对象(DAO)接口。
当我们在Java接口或抽象类上添加@Mapper注解时,MyBatis会根据接口定义生成对应的实现类。这样,我们就可以在应用程序中通过调用这些接口方法来执行数据库操作。
需要注意的是,使用@Mapper注解时,需要确保接口与对应的XML映射文件名一致,并且
同名的XML映射文件可以被正确加载和解析。

(4)添加 mybatis xml 文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace=""></mapper>

为了更好地理解上述内容,举个例子:UserMapper.xml查询所有用户的具体实现,实现代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.demo.mapper.UserMapper"><select id="getAll" resultType="com.example.demo.entity.UserEntity">select * from userinfo</select>
</mapper>

在这里插入图片描述

  • namespace属性用于指定映射器接口的完全限定名,它是与此映射器文件相关联的映射器接口的唯一标识,形式为全包名.类名
  • id属性指定了语句的唯一标识符,与接口中定义的方法名称⼀样的,表示对接口的具体实现方法。
  • resultType属性指定了查询结果的类型。在这个例子中,查询结果的类型是com.example.mybatis.entity.UserEntity

综上所述,这个示例的目的是定义了一个名为getAll的查询语句,它将查询数据库中的userinfo表,并将结果映射为com.example.mybatis.entity.UserEntity类型的对象。

通过这个映射文件,可以让MyBatis框架自动生成相应的SQL查询代码,方便在 Java 程序中调用和使用。

在这里插入图片描述
(5)添加 Service 服务层,示例具体实现代码如下:

package com.example.mybatis.service;
import com.example.mybatis.entity.UserEntity;
import com.example.mybatis.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserService {@Autowiredprivate UserMapper userMapper;public List<UserEntity> getAll(){return userMapper.getAll();}
}

(6)添加 Controller 控制层,示例具体实现代码如下:

package com.example.demo.controller;import com.example.demo.entity.UserEntity;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.List;@RestController
@RequestMapping("/user")
public class UserController {@Autowiredprivate UserService userService;@RequestMapping("getall")public List<UserEntity> getAll(){return userService.getAll();}
}

实现代码说明:在Controller类(控制层)中注入Service(服务层),并在Controller类中调用Service类中的具体方法。

4. MyBatis查询数据库测试

(1)数据库记录信息
在这里插入图片描述
(2)浏览器地址栏输入
在这里插入图片描述
MyBatisX插件的安装:
在这里插入图片描述

三. MyBatis 流程

1. MyBatis 查询数据库流程

MyBatis 在进行查询数据库操作的执行流程主要为:

  1. 配置数据源:在MyBatis中,首先需要在配置文件中配置数据源,以便连接到数据库。通常是可以通过使用连接池或者直接配置数据库连接信息连接。
  2. 创建映射文件:MyBatis使用XML文件来定义数据库操作语句和映射关系。创建一个映射文件,它包含了数据库查询、插入、更新和删除等操作的语句,以及将结果映射到 Java对象的规则。
  3. 创建映射接口:为每个映射文件创建一个对应的 Java接口,接口中定义了与映射文件中相同的操作方法。
  4. 配置映射关系:在MyBatis的配置文件中,将映射文件和映射接口进行关联,指定它们的路径和命名空间。
  5. 注入Mapper接口:在需要使用查询功能的类中,通过依赖注入(比如@Autowired)方式注入Mapper接口的实例。
    Controller 类中注入Service 类对象,Service类中注入 Mapper 接口。
  6. 调用Mapper接口进行查询:通过注入的Mapper接口实例调用定义的查询方法,将参数传递给方法并执行查询操作。
    Controller 类(控制层)中调用 Service类(服务层),而Service类(服务层)中调用Mapper类接口(持久层)。
  7. 处理查询结果:根据查询的需求和Mapper接口方法的返回类型,对查询结果进行处理。可以返回单个对象、列表、映射结果等。
    查询结果从Mapper持久层中返回至Service,再从Service服务层中返回至Controller,最后再从Controller控制层返回至前端。

2. MyBatis 框架交互流程图

MyBatis 在整个框架中的定位,框架交互流程图:
在这里插入图片描述
注意说明:MyBatis 是一个ORM框架,ORM (Object Relational Mapping),即对象关系映射。在面向对象编程语言中,将关系型数据库中的数据与对象建立起映射关系,进而自动的完成数据与对象的互相转换。

对象关系映射主要完成两步操作,分别为将输入数据(传入对象)+ SQL 映射成原生SQL以及将结果集映射为返回对象(输出对象)。

相关文章:

【JavaEE进阶】MyBatis的创建及使用

文章目录 一. MyBatis简介二. MyBatis 使用1. 数据库和数据表的创建2. 创建Mybatis项目2.1 添加MyBatis框架支持2.2 设置MyBatis配置信息 3. MyBatis开发流程4. MyBatis查询数据库测试 三. MyBatis 流程1. MyBatis 查询数据库流程2. MyBatis 框架交互流程图 一. MyBatis简介 M…...

职业学院物联网实训室建设方案

一、概述 1.1专业背景 物联网&#xff08;Internet of Things&#xff09;被称为继计算机、互联网之后世界信息产业第三次浪潮&#xff0c;它并非一个全新的技术领域&#xff0c;而是现代信息技术发展到一定阶段后出现的一种聚合性应用与技术提升&#xff0c;是随着传感网、通…...

3 个 ChatGPT 插件您需要立即下载3 ChatGPT Extensions You need to Download Immediately

在16世纪&#xff0c;西班牙探险家皮萨罗带领约200名西班牙士兵和37匹马进入了印加帝国。尽管印加帝国的军队数量达到了数万&#xff0c;其中包括5,000名精锐步兵和3,000名弓箭手&#xff0c;他们装备有大刀、长矛和弓箭等传统武器。但皮萨罗的军队中有100名火枪手&#xff0c;…...

屏蔽socket 实例化时,握手阶段报错信息WebSocket connection to ‘***‘ failed

事情起因是这样的&#xff1a; 我们网站是需要socket链接实行实时推送服务&#xff0c;有恶意竞争对手通过抓包或者断网&#xff0c;获取到了我们的socket链接地址&#xff0c;那么他就可以通过java写一个脚本无限链接这个socket地址。形成dos攻击。使socket服务器资源耗尽&…...

单发多框检测(SSD)【动手学深度学习】

单发多框检测模型主要由一个基础网络块和若干多尺度特征块串联而成。基本网络用于从输入图像中提取特征,可以使用深度卷积神经网络,原论文中选用了在分类层之前阶段的VGG,现在也常用ResNet替代。 我们可以设计基础网络,使它输出的高和宽较大,这样基于该特征图生成的锚框数…...

“RFID与光伏板的完美融合:探索能源科技的新时代!“

随着科技的不断发展&#xff0c;人类创造出了许多令人惊叹的发明。其中&#xff0c;RFID&#xff08;Radio Frequency Identification&#xff09;技术的应用在各个领域日益广泛。最近的研究表明&#xff0c;将RFID技术应用于光伏板领域&#xff0c;不仅可以提高光伏板的效率&a…...

算法leetcode|71. 简化路径(rust重拳出击)

文章目录 71. 简化路径&#xff1a;样例 1&#xff1a;样例 2&#xff1a;样例 3&#xff1a;样例 4&#xff1a;提示&#xff1a; 分析&#xff1a;题解&#xff1a;rust&#xff1a;go&#xff1a;c&#xff1a;python&#xff1a;java&#xff1a; 71. 简化路径&#xff1a;…...

网络技术Vlan技术STP(第一课)

一 Vlan技术的学习 对命令的增删改查 #### 1&#xff09;创建vlan[SW1]vlan 2 [2-4094] 创建vlan[SW1]vlan batch 10 20 30 创建多个不连续的vlan[SW1]display vlan 查看vlan信息[SW1]vlan batch 50 to 60创建多个连续的vlan[SW1]vlan2[SW1-vlan2]description caiwu添加描述信…...

SpringBoo t+ Vue 微人事 (十一)

职位修改操作 在对话框里面做编辑的操作 添加对话框 <el-dialogtitle"修改职位":visible.sync"dialogVisible"width"30%"><div><el-tag>职位名称</el-tag><el-input size"small" class"updatePosIn…...

自动驾驶卡车量产-第一章-用户需求

1、中国干线物流行业现状 万亿级市场&#xff0c;规模巨大。由中重卡承运的干线运输占到整体公路货运市场的82%&#xff0c;全国中重卡保有量约730 万台1&#xff0c;市场规模达4.6 万亿元1&#xff0c;体量全球第一&#xff0c;超过同城物流及乘用出租市场规模之和。同样&…...

Nginx 配置文件的完整指南 (一)

文章目录 一、简介1.1 配置文件一览 二、全局配置2.0 user2.1 worker_processes2.2 events模块2.3 http模块 三、server模块3.1 listen3.2 server_name3.3 location&#xff1a;请求处理位置 Nginx 配置文件的完整指南 (二) 一、简介 Nginx是一款高性能的Web服务器和反向代理服…...

css3+js 画出爱心特效

要使用CSS3和JavaScript绘制爱心特效&#xff0c;可以使用CSS3的动画和过渡效果来创建爱心的形状&#xff0c;并使用JavaScript来控制动画的触发和交互。以下是一个简单的示例代码&#xff1a; HTML: <div class"heart"></div> <button onclick&quo…...

蔚来李斌卖手机:安卓系统,苹果售价,一年一发

‍作者 | Amy 编辑 | 德新 车圈大佬的玩法真让人寻不着套路&#xff01; 苹果的库克和小米的雷布斯&#xff0c;甚至是FF贾老板准备许久&#xff0c;都想分一块新能源车的蛋糕&#xff0c;蔚来李斌却反手进军手机界&#xff0c;从宣布造手机到手机入网仅仅隔了一年。 近期&a…...

0008__浏览器层面缓存 Etag If-None-Match等详解

浏览器层面缓存 Etag & If-None-Match等详解_if-none-match:_shadow_zed的博客-CSDN博客...

Idea 快捷键整理

Idea快捷键和自动代码补全汇总 idea快捷键汇总 Ctrl 快捷键说明Ctrl F在当前文件进行文本查找 &#xff08;必备&#xff09;Ctrl R在当前文件进行文本替换 &#xff08;必备&#xff09;Ctrl Z撤销 &#xff08;必备&#xff09;Ctrl Y删除光标所在行 或 删除选中的行 &am…...

管理类联考——逻辑——真题篇——按知识分类——汇总篇——一、形式逻辑——假言——第一节 充分条件

文章目录 第一节 充分条件假言命题-那么,就,则真题(2013-29)-假言-充分假言-那么,就,则-变形推理真题(2014-44)-假言-充分假言-那么,就,则-(1)建模-“那么/就/则”-前推后真题(2018-37)-假言-充分假言-那么,就,则-(1)建模-“那么/就/则”-前推后;-(2)A→…...

LSTM模型

目录 LSTM模型 LSTM结构图 LSTM的核心思想 细胞状态 遗忘门 输入门 输出门 RNN模型 LRNN LSTM模型 什么是LSTM模型 LSTM (Long Short-Term Memory)也称长短时记忆结构,它是传统RNN的变体,与经典RNN相比能够有效捕捉长序列之间的语义关联,缓解梯度消失或爆炸现象.同时LS…...

抢红包小程序

抢红包小程序 红包大战 # urls.pyfrom django.urls import pathfrom . import viewsurlpatterns [ path(login/, views.login, namelogin), path(create_red_packet/, views.create_red_packet, namecreate_red_packet), path(join_red_packet/<int:red_packet_id…...

UVA 10006 埃氏筛法+快速幂

本题目使用费马定理时&#xff0c;我随机定义了10个数字&#xff0c;循环用费马小定理判断&#xff0c;数组中的值不用和我的相同&#xff0c;随机即可。 #include <iostream> using namespace std; typedef unsigned long long ll; bool isPrime[65007]; ll a[10]; voi…...

C++--红黑树

1.什么是红黑树 红黑树&#xff0c;是一种二叉搜索树&#xff0c;但在每个结点上增加一个存储位表示结点的颜色&#xff0c;可以是Red或Black。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制&#xff0c;红黑树确保没有一条路径会比其他路径长出俩倍&#xff0c;因…...

Unity 找不到 Navigation 组件的解决

当我们想利用unity 里面的Navigation 组件来实现我们的物体的自动导航时&#xff0c;有时竟然会发现我们的菜单栏里面找不到 该组件 这时我们应该怎么办&#xff1f; 请确保你的项目中已经导入了Unity的AI模块。要导入该模块&#xff0c;请打开"Project Settings"&am…...

【js】时间和时间戳转换、日期格式化

1、时间戳转换日期方法 &#xff08;格式&#xff1a;2023-08-17&#xff09; function timestampToDate(date) {var date new Date(date);var YY date.getFullYear() -;var MM (date.getMonth() 1 < 10 ? 0 (date.getMonth() 1) : date.getMonth() 1) -;var DD …...

glog体验第一天(0)glog介绍和安装

在Ubuntu上安装glog&#xff0c;可以按照以下步骤进行操作&#xff1a; 打开终端&#xff0c;使用以下命令更新本地软件包列表&#xff1a; sudo apt-get update然后&#xff0c;使用以下命令安装glog库及其开发工具&#xff1a; sudo apt-get install -y libgoogle-glog-de…...

Android 13像Settings一样获取SIM卡信息

一.背景 由于客户定制的Settings里面需要获取到SIM卡信息,所以需要实现此功能。 目录 一.背景 二.前提条件 三.调用api 二.前提条件 首先应用肯定要是系统应用,并且导入framework.jar包,具体可以参考: Android 应用自动开启辅助(无障碍)功能并使用辅助(无障碍)功能_…...

Can‘t find end of central directory : is this a zip file ? at XMLHttpRequest

导出woed出现这个报错,原因其实很简单,路径写错了, 这个word首先必须是docx格式,然后必须放在public文件包下 如果放在public文件包下还没有用,则放在public包下 参考帖子: https://www.cnblogs.com/hejun26/p/13647927.html...

基于SpringBoot+Thymeleaf仓库管理系统

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&#xff1a; 随着信息技术的快速发…...

ubuntu20.04磁盘满了 /dev/mapper/ubuntu--vg-ubuntu--lv 占用 100%

问题 执行 mysql 大文件导入任务&#xff0c;最后快完成了&#xff0c;查看结果发现错了&#xff01;悲催&#xff01;都执行了 两天了 The table ‘XXXXXX’ is full &#xff1f; 磁盘满了&#xff1f; 刚好之前另一个 centos 服务器上也出现过磁盘满了&#xff0c;因此&a…...

【制作npm包4】api-extractor 学习

制作npm包目录 本文是系列文章&#xff0c; 作者一个橙子pro&#xff0c;本系列文章大纲如下。转载或者商业修改必须注明文章出处 一、申请npm账号、个人包和组织包区别 二、了解 package.json 相关配置 三、 了解 tsconfig.json 相关配置 四、 api-extractor 学习 五、npm包…...

神经网络基础-神经网络补充概念-52-正则化网络的激活函数

概念 正则化是一种用于减少过拟合&#xff08;overfitting&#xff09;的技术&#xff0c;可以在神经网络的各个层次中应用&#xff0c;包括激活函数。激活函数的正则化主要目的是减少神经网络的复杂度&#xff0c;防止网络在训练集上过度学习&#xff0c;从而提高泛化能力。 …...

代码随想录训练营day56| 583. 两个字符串的删除操作 72. 编辑距离

TOC 前言 代码随想录算法训练营day56 一、Leetcode 583. 两个字符串的删除操作 1.题目 给定两个单词 word1 和 word2 &#xff0c;返回使得 word1 和 word2 相同所需的最小步数。 每步 可以删除任意一个字符串中的一个字符。 示例 1&#xff1a; 输入: word1 "sea",…...

神经网络基础-神经网络补充概念-55-为什么是ML策略

“ML策略”&#xff08;Machine Learning Strategies&#xff09;是指在解决机器学习问题时&#xff0c;采取的一系列方法、技巧和策略。选择适当的ML策略对于获得高质量的模型和结果非常重要。以下是为什么要考虑ML策略的一些原因&#xff1a; 问题适应性&#xff1a;不同的机…...

C++初阶语法——内部类

前言&#xff1a;内部类&#xff0c;顾名思义是定义在类中的类&#xff0c;许多人会以为它属于外部的类&#xff0c;实际上并不是&#xff0c;它们是两个独立的类&#xff0c;但是内部类受外部类类域的限制。 目录 一.概念二.特性1.内部类和外部类相互独立2.内部类是外部类的友…...

Java基础(十四)面向对象编程 OOP 多态

Java面向对象基础知识笔记&#xff08;四&#xff09; 1. 对象数组的使用 在Java中&#xff0c;我们可以创建包含对象的数组。对象数组是一种特殊类型的数组&#xff0c;其中每个元素都是一个对象的引用。你可以将任何类的对象存储在对象数组中&#xff0c;并通过索引来访问和操…...

【Android】解决Lint found fatal errors while assembling a release target

报错信息&#xff1a; Android在debug模式下打包没有问题&#xff0c;但是在打包release版本时出现一下问题&#xff1a; 结果图 原因 我项目的原因是因为把正式、测试地址放到代码里了&#xff0c;忘记选中正式环境的地址&#xff0c;导致打正式包有问题&#xff1b;大家如果…...

CF1195E OpenStreetMap 题解

很好的单调队列题。 题目传送门 题目意思&#xff1a; 给定一个 n m n\times m nm 的矩阵&#xff0c;求出所有大小为 a b a\times b ab 的子矩形中的最小值的和。 思路&#xff1a; 通过题目给的要求建立二维数组 h h h。通过单调队列一行一行地扫&#xff0c;将扫出来…...

微信营销系统如何使用效果会更好

微信作为中国最大的社交平台之一&#xff0c;已经成为企业私域营销的重要阵地。在这个庞大的社交网络中&#xff0c;如何使用微信营销系统&#xff0c;将直接影响到企业的营销效果。本文将深入探讨如何更好地利用微信营销系统&#xff0c;以实现更好的私域营销效果。 1. 确定营…...

Linux开机启动程序添加root权限

Linux添加开机启动程序 Debain、Ubuntu系列Linux开机之后会执行/etc/rc.local文件中的命令&#xff0c;所以&#xff0c;如果是想添加登陆用户所具有权限的操作&#xff0c;可以在文件中exit 0之前添加开机自动执行的脚本命令。或者将执行脚本的权限修改为当前登录用户具有执行…...

安卓13解决链接问题

作为Android用户&#xff0c;你可能已经注意到了一个问题——Android 13不再支持PPTP协议。但请别担心&#xff0c;作为一家专业的代理供应商&#xff0c;我们将与你分享解决方案&#xff0c;让你轻松解决L2TP问题&#xff0c;享受到高水平的连接体验。本文将为你提供实用的操作…...

​《乡村振兴战略下传统村落文化旅游设计 》在2023年畅销榜排名465位

​《乡村振兴战略下传统村落文化旅游设计 》在2023年畅销榜排名465位...

实现一个自动保存高CPU占用现场的简易工具

CPU 使用率在系统监控中是一个非常重要的指标。对于大多数 Web 应用来说&#xff0c;它们往往是 IO 密集型的&#xff0c;因此只会在某些时刻可能会出现 CPU 突然飙升的情况&#xff0c;随后很快就恢复正常。然而&#xff0c;当收到报警并想要排查问题时&#xff0c;CPU 飙升的…...

易服客工作室:如何在WordPress网站中举办虚拟活动

您是否正在寻找举办和管理虚拟活动的最佳方式&#xff1f; 也许您想在线举行下一次会议或举办有关您的产品和服务的网络研讨会。您可能担心它太贵&#xff0c;或者您没有技术知识来实现​​它。 在本文中&#xff0c;我们将列出您所需的在线服务的所有设备&#xff0c;并教您…...

Java IO流(一)IO基础

概述 IO流本质 I/O表示Input/Output,即数据传输过程中的输入/输出,并且输入和输出都是相对于内存来讲Java IO(输入/输出)流是Java用于处理数据读取和写入的关键组件常见的I|O介质包括 文件(输入|输出)网络(输入|输出)键盘(输出)显示器(输出)使用场景 文件拷贝&#xff08;File&…...

区间覆盖 线段覆盖 二分

4195. 线段覆盖 - AcWing题库 P2082 区间覆盖&#xff08;加强版&#xff09; - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 做法&#xff1a; void solve() {int n; cin>>n;vector<array<LL,2>> seg(n);for(auto &t: seg) cin>>t[0]>>…...

F#奇妙游(20):主动模式

F#中主动模式的三种形式 F#中有一种特殊的模式匹配&#xff0c;叫做主动模式&#xff08;Active Pattern&#xff09;。主动模式可以让我们自定义模式匹配的方式&#xff0c;这样可以让我们的代码更加简洁&#xff0c;更加清晰。主动模式有三种形式&#xff0c;分别是&#xf…...

OLED透明屏与传统显示屏的区别:探索未来视觉体验的新里程碑

OLED透明屏作为一种新兴的显示技术&#xff0c;与传统显示屏相比&#xff0c;具有许多独特的特点和优势。 那么&#xff0c;在这篇文章中&#xff0c;尼伽便通过比较OLED透明屏和传统显示屏的区别&#xff0c;包括透明性、对比度、色彩表现力、节能环保等方面&#xff0c;为读…...

打开软件提示mfc100u.dll缺失是什么意思?要怎么处理?

当你打开某个软件或者运行游戏&#xff0c;系统提示mfc100u.dll丢失&#xff0c;此时这个软件或者游戏根本无法运行。其实&#xff0c;mfc100u.dll是动态库文件&#xff0c;它是VS2010编译的软件所产生的&#xff0c;如果电脑运行程序时提示缺少mfc100u.dll文件&#xff0c;程序…...

Python 基础 -- Tutorial(二)

5、数据结构 本章更详细地描述了一些你已经学过的东西&#xff0c;并添加了一些新的东西。 5.1. 更多关于Lists 列表(list)数据类型有更多的方法。下面是列表对象的所有方法: list.append(x) 在列表末尾添加一项。相当于a[len(a):] [x]。 list.extend(iterable) 通过添加可…...

11 迭代器|生成器|协程

文章目录 迭代器可迭代对象可迭代对象的本质iter()函数与 next()函数迭代器 Iterator样例 for...in...循环的本质使用的场景--斐波那契数列list和tuple也可以接收可迭代对象 生成器简介创建生成器方法一方法二总结 使用 send 唤醒 协程协程和线程差异简单实现协程greenletgeven…...

“第三方支付”详解!

第三方支付是什么&#xff1f;第三方支付的解释 中央银行官方解释&#xff1a;是与产品所在国和主要外资银行签订合同、具有一定实力和信誉保障的第三方独立机构提供的交易支持平台。在通过第三方支付平台进行的交易中&#xff0c;买方购买货物后&#xff0c;买方使用第三方平台…...

Rust之泛型、trait与生命周期

泛型是具体类型或其他属性的抽象替代。在编写代码时&#xff0c;可以直接描述泛型的行为&#xff0c;或者它与其他泛型产生的联系&#xff0c;而无须知晓它在编译和运行代码时采用的具体类型。 1、泛型数据类型&#xff1a; 们可以在声明函数签名或结构体等元素时使用泛型&am…...