Java Persistence APl(JPA)——JPA是啥? SpringBoot整合JPA JPA的增刪改查 條件模糊查詢 多對一查詢

目錄

  • 引出
  • Jpa是啥?
  • Jpa的使用
    • 創建實體類
    • 寫dao接口類
    • 寫服務類
  • crud增刪改查
    • 增加
    • 修改
    • 根據id刪除
    • 全查詢
    • 分頁查詢
  • 條件查詢模糊查詢
    • 單條件查詢
    • 多條件查詢
    • 模糊查詢
    • 排序查詢
  • 多對一查詢
    • 定義實體類
    • auto主鍵策略下新增
    • 進行全查詢測試
  • 全部代碼
    • application.yml配置類
    • pom配置文件
    • 實體類
      • Car實體類
      • Factory實體類
    • dao接口類
    • service服務類
    • 測試代碼
  • 總結

引出


1.jpa是啥?java持久層的api,SpringBoot官方支持;
2.約定大于配置的理念,增刪改查,save,deleteById,findAll;
3.多條件查詢,and,or,like,約定大于配置;
4.多對一的查詢,@ManyToOne;

在這里插入圖片描述

Jpa是啥?

Spring Data JPA

在這里插入圖片描述

JPA是Java Persistence API的縮寫,是Java EE(Enterprise Edition)中用于實現對象關系映射(ORM)的一種規范。它提供了一組用于管理和持久化Java對象的API,使開發人員能夠以面向對象的方式操作數據庫。

JPA的目標是提供一種統一的、面向對象的數據訪問方式,使開發人員能夠更加方便地進行數據庫操作,而不需要關注底層數據庫的細節。它抽象了不同數據庫之間的差異,提供了一套通用的API,使開發人員能夠以相同的方式操作不同的數據庫。

JPA的核心概念包括實體(Entity)、實體管理器(EntityManager)、持久化上下文(Persistence Context)等。開發人員可以通過注解或XML配置來定義實體類和數據庫表之間的映射關系,然后使用EntityManager進行增刪改查等數據庫操作。

JPA的實現有很多,比較常用的有Hibernate、EclipseLink等。開發人員可以根據自己的需求選擇合適的JPA實現框架來使用。

Jpa的使用

創建實體類

javax

  • @Entity

    @Table

    • @Id
    • @GeneratedValue(strategy) AUTO/IDENTITY(數據庫自己的主鍵自增長策略???)
    • @Column

GenerationType.AUTO:會多一張表,記錄鍵
GenerationType.IDENTITY:用數據庫自增的主鍵
@GeneratedValue(strategy = GenerationType.IDENTITY) // 用數據庫自增長策略

在jpa中,ddl-auto共分為四種:

spring.jpa.hibernate.ddl-auto = create ----每次啟動SpringBoot程序時,沒有表會新建表格,表內有數據會清空;

spring.jpa.hibernate.ddl-auto = create-drop ----每次啟動SpringBoot程序時,會清空表數據;

spring.jpa.hibernate.ddl-auto = update ---- 每次啟動SpringBoot程序時,沒有表格會新建表格,表內有數據不會清空,只會更新;

spring.jpa.hibernate.ddl-auto = validate ---- 每次啟動SpringBoot程序時,會校驗實體類字段與數據庫字段的類型是否相同,不同則會報錯;

在這里插入圖片描述

package com.tianju.jpa.entity;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import javax.persistence.*;
import java.math.BigDecimal;@Data
@NoArgsConstructor
@AllArgsConstructor// 表示這個實體類是和數據庫表對應的
@Entity
@Table(name = "car_tab") // 對應的表名
public class Car {@Id // 是主鍵// GenerationType.AUTO:會多一張表,記錄鍵// GenerationType.IDENTITY:用數據庫自增的主鍵@GeneratedValue(strategy = GenerationType.IDENTITY) // 用數據庫自增的策略@Column(name = "car_id")private Integer id;@Column(name = "car_num")private String carNum; // 車牌@Column(name = "car_brand")private String brand; // 品牌@Column(name = "car_color")private String color; // 顏色@Column(name = "car_price")private BigDecimal price; // 價格
}

在這里插入圖片描述

寫dao接口類

JpaRepository<Identity,String>:實體類以及主鍵的類型

在這里插入圖片描述

package com.tianju.jpa.mapper;import com.tianju.jpa.entity.Car;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;/*** JpaRepository<Identity,String>:實體類以及主鍵的類型*/
@Repository // 用在持久化對象上,類似于mapper
public interface CarDao extends JpaRepository<Car,Integer> {
}

寫服務類

package com.tianju.jpa.service.impl;import com.tianju.jpa.entity.Car;
import com.tianju.jpa.mapper.CarDao;
import com.tianju.jpa.service.ICarService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;@Service
public class CarServiceImpl implements ICarService {@Autowiredprivate CarDao carDao;@Overridepublic void add(Car car) {carDao.save(car);}
}

crud增刪改查

增加

carDao.save(car);

在這里插入圖片描述

插入多條數據

在這里插入圖片描述

插入后的結果

在這里插入圖片描述

修改

在這里插入圖片描述

    @Overridepublic void update(Car car) {carDao.save(car);}@Overridepublic Car findById(int id) {Car car = carDao.findById(id).get();return car;}

根據id刪除

在這里插入圖片描述

    @Overridepublic void deleteById(int id) {carDao.deleteById(id);}

全查詢

    @Overridepublic List<Car> findAll() {return carDao.findAll();}

在這里插入圖片描述

分頁查詢

import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;

    @Overridepublic Page findByPage(int pageNum, int pageSize) {PageRequest pageRequest = PageRequest.of(pageNum, pageSize);Page<Car> carPage = carDao.findAll(pageRequest);return carPage;}

在這里插入圖片描述

分頁查詢的sql

在這里插入圖片描述

條件查詢模糊查詢

在這里插入圖片描述

單條件查詢

package com.tianju.jpa.mapper;import com.tianju.jpa.entity.Car;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;import java.util.List;/*** JpaRepository<Identity,String>:實體類以及主鍵的類型*/
@Repository // 用在持久化對象上,類似于mapper
public interface CarDao extends JpaRepository<Car,Integer> {List<Car> findCarsByColor(String color);
}

在這里插入圖片描述

多條件查詢

package com.tianju.jpa.mapper;import com.tianju.jpa.entity.Car;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;import java.util.List;/*** JpaRepository<Identity,String>:實體類以及主鍵的類型*/
@Repository // 用在持久化對象上,類似于mapper
public interface CarDao extends JpaRepository<Car,Integer> {List<Car> findCarsByColor(String color);List<Car> findByColorAndBrand(String color,String brand);List<Car> findByColorOrBrand(String color,String brand);}

在這里插入圖片描述

or查詢

在這里插入圖片描述

模糊查詢

package com.tianju.jpa.mapper;import com.tianju.jpa.entity.Car;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;import java.util.List;/*** JpaRepository<Identity,String>:實體類以及主鍵的類型*/
@Repository // 用在持久化對象上,類似于mapper
public interface CarDao extends JpaRepository<Car,Integer> {List<Car> findCarsByColor(String color);List<Car> findByColorAndBrand(String color,String brand);List<Car> findByColorOrBrand(String color,String brand);List<Car> findByBrandLike(String brand);}

在這里插入圖片描述

排序查詢

在這里插入圖片描述
在這里插入圖片描述

package com.tianju.jpa.service.impl;import com.tianju.jpa.entity.Car;
import com.tianju.jpa.mapper.CarDao;
import com.tianju.jpa.service.ICarService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Service;import java.util.List;@Service
public class CarServiceImpl implements ICarService {@Autowiredprivate CarDao carDao;@Overridepublic void add(Car car) {carDao.save(car);}@Overridepublic void update(Car car) {carDao.save(car);}@Overridepublic Car findById(int id) {Car car = carDao.findById(id).get();return car;}@Overridepublic void deleteById(int id) {carDao.deleteById(id);}@Overridepublic List<Car> findAll() {return carDao.findAll();}@Overridepublic Page findByPage(int pageNum, int pageSize) {PageRequest pageRequest = PageRequest.of(pageNum, pageSize);Page<Car> carPage = carDao.findAll(pageRequest);return carPage;}@Overridepublic List<Car> findCarsByColor(String color) {return carDao.findCarsByColor(color);}@Overridepublic List<Car> findByColorAndBrand(String color, String brand) {return carDao.findByColorAndBrand(color, brand);}@Overridepublic List<Car> findByColorOrBrand(String color, String brand) {return carDao.findByColorOrBrand(color,brand);}@Overridepublic List<Car> findByBrandLike(String brand) {return carDao.findByBrandLike(brand);}@Overridepublic List<Car> orderByPrice() {Sort price = Sort.by(Sort.Direction.DESC, "price");return carDao.findAll(price);}
}

多對一查詢

在這里插入圖片描述

定義實體類

package com.tianju.jpa.entity;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import javax.persistence.*;
import java.math.BigDecimal;@Data
@NoArgsConstructor
@AllArgsConstructor// 表示這個實體類是和數據庫表對應的
@Entity
@Table(name = "car_tab") // 對應的表名
public class Car {@Id // 是主鍵// GenerationType.AUTO:會多一張表,記錄鍵// GenerationType.IDENTITY:用數據庫自增的主鍵@GeneratedValue(strategy = GenerationType.IDENTITY) // 用數據庫自增的策略@Column(name = "car_id")private Integer id;@Column(name = "car_num")private String carNum; // 車牌@Column(name = "car_brand")private String brand; // 品牌@Column(name = "car_color")private String color; // 顏色@Column(name = "car_price")private BigDecimal price; // 價格@ManyToOne@JoinColumn(name = "factory_id")private Factory factory; // 多對一的工廠
}
package com.tianju.jpa.entity;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import javax.persistence.*;/*** 生產車的工廠,多個車對應一個工廠*/@Data
@NoArgsConstructor
@AllArgsConstructor// 表示這個實體類是和數據庫表對應的
@Entity
@Table(name = "car_factory") // 對應的表名public class Factory {@Id@GeneratedValue(strategy = GenerationType.AUTO)@Column(name = "factory_id")private Integer id;@Column(name = "factory_name")private String name;}

在這里插入圖片描述

自動建的表

在這里插入圖片描述

auto主鍵策略下新增

在這里插入圖片描述

新增后的表

在這里插入圖片描述

在這里插入圖片描述

進行全查詢測試

在這里插入圖片描述

運行的SQL語句

在這里插入圖片描述

全部代碼

application.yml配置類

在jpa中,ddl-auto共分為四種:

spring.jpa.hibernate.ddl-auto = create ----每次啟動SpringBoot程序時,沒有表會新建表格,表內有數據會清空;

spring.jpa.hibernate.ddl-auto = create-drop ----每次啟動SpringBoot程序時,會清空表數據;

spring.jpa.hibernate.ddl-auto = update ---- 每次啟動SpringBoot程序時,沒有表格會新建表格,表內有數據不會清空,只會更新;

spring.jpa.hibernate.ddl-auto = validate ---- 每次啟動SpringBoot程序時,會校驗實體類字段與數據庫字段的類型是否相同,不同則會報錯;

spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://192.168.111.130:3306/jpa_db?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&allowMultiQueries=trueusername: rootpassword: 123jpa:# 允許顯示sqlshow-sql: truehibernate:# 自動對表進行增刪改查的操作,創建表# 可以開始的時候打開,等表創建好之后關閉ddl-auto: updateserver:port: 9089

pom配置文件

<?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><groupId>com.tianju.jpa</groupId><artifactId>spring-boot-jpa</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><!--    起步依賴--><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.13</version></parent><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><!--mysql驅動--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi2-spring-boot-starter</artifactId><version>4.0.0</version></dependency><!--        Jpa的包--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency></dependencies></project>

實體類

Car實體類

package com.tianju.jpa.entity;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import javax.persistence.*;
import java.math.BigDecimal;@Data
@NoArgsConstructor
@AllArgsConstructor// 表示這個實體類是和數據庫表對應的
@Entity
@Table(name = "car_tab") // 對應的表名
public class Car {@Id // 是主鍵// GenerationType.AUTO:會多一張表,記錄鍵// GenerationType.IDENTITY:用數據庫自增的主鍵@GeneratedValue(strategy = GenerationType.IDENTITY) // 用數據庫自增的策略@Column(name = "car_id")private Integer id;@Column(name = "car_num")private String carNum; // 車牌@Column(name = "car_brand")private String brand; // 品牌@Column(name = "car_color")private String color; // 顏色@Column(name = "car_price")private BigDecimal price; // 價格@ManyToOne@JoinColumn(name = "factory_id")private Factory factory; // 多對一的工廠
}

Factory實體類

package com.tianju.jpa.entity;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import javax.persistence.*;/*** 生產車的工廠,多個車對應一個工廠*/@Data
@NoArgsConstructor
@AllArgsConstructor// 表示這個實體類是和數據庫表對應的
@Entity
@Table(name = "car_factory") // 對應的表名public class Factory {@Id@GeneratedValue(strategy = GenerationType.AUTO)@Column(name = "factory_id")private Integer id;@Column(name = "factory_name")private String name;}

dao接口類

package com.tianju.jpa.mapper;import com.tianju.jpa.entity.Car;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;import java.util.List;/*** JpaRepository<Identity,String>:實體類以及主鍵的類型*/
@Repository // 用在持久化對象上,類似于mapper
public interface CarDao extends JpaRepository<Car,Integer> {List<Car> findCarsByColor(String color);List<Car> findByColorAndBrand(String color,String brand);List<Car> findByColorOrBrand(String color,String brand);List<Car> findByBrandLike(String brand);}

service服務類

package com.tianju.jpa.service.impl;import com.tianju.jpa.entity.Car;
import com.tianju.jpa.mapper.CarDao;
import com.tianju.jpa.service.ICarService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Service;import java.util.List;@Service
public class CarServiceImpl implements ICarService {@Autowiredprivate CarDao carDao;@Overridepublic void add(Car car) {carDao.save(car);}@Overridepublic void update(Car car) {carDao.save(car);}@Overridepublic Car findById(int id) {Car car = carDao.findById(id).get();return car;}@Overridepublic void deleteById(int id) {carDao.deleteById(id);}@Overridepublic List<Car> findAll() {return carDao.findAll();}@Overridepublic Page findByPage(int pageNum, int pageSize) {PageRequest pageRequest = PageRequest.of(pageNum, pageSize);Page<Car> carPage = carDao.findAll(pageRequest);return carPage;}@Overridepublic List<Car> findCarsByColor(String color) {return carDao.findCarsByColor(color);}@Overridepublic List<Car> findByColorAndBrand(String color, String brand) {return carDao.findByColorAndBrand(color, brand);}@Overridepublic List<Car> findByColorOrBrand(String color, String brand) {return carDao.findByColorOrBrand(color,brand);}@Overridepublic List<Car> findByBrandLike(String brand) {return carDao.findByBrandLike(brand);}@Overridepublic List<Car> orderByPrice() {Sort price = Sort.by(Sort.Direction.DESC, "price");return carDao.findAll(price);}
}

測試代碼

package com.tianju.jpa.mapper;import com.tianju.jpa.entity.Car;
import com.tianju.jpa.entity.Factory;
import com.tianju.jpa.service.ICarService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.domain.Page;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import java.math.BigDecimal;
import java.util.List;
import java.util.Random;import static org.junit.Assert.*;@SpringBootTest
@RunWith(SpringJUnit4ClassRunner.class)
public class CarDaoTest {@Autowiredprivate ICarService carService;@Testpublic void addCar(){for (int i =0;i<10;i++){double random = Math.round(Math.random() * 100) / 100.0 + 8888;
//            carService.add(new Car(null,"蘇A888" +i,"BMW","紅色",new BigDecimal(random)));}}@Testpublic void updateCar(){Car car = carService.findById(10);car.setCarNum("浙江888");carService.update(car);}@Autowiredprivate FactoryDao factoryDao;@Testpublic void addFactory(){factoryDao.save(new Factory(null,"上海工廠"));factoryDao.save(new Factory(null,"南京工廠"));factoryDao.save(new Factory(null,"山西工廠"));}@Testpublic void deleteById(){carService.deleteById(11);}@Testpublic void findCarsByColor(){List<Car> cars = carService.findCarsByColor("紅色");cars.forEach(System.out::println);}@Testpublic void findCarsByColorAndBrand(){List<Car> cars = carService.findByColorAndBrand("紅色","BYD");cars.forEach(System.out::println);}@Testpublic void findCarsByColorOrBrand(){List<Car> cars = carService.findByColorOrBrand("紅色","BYD");cars.forEach(System.out::println);}@Testpublic void findByPage(){Page page = carService.findByPage(1, 3);page.forEach(car -> {System.out.println(car);});}@Testpublic void findAll(){List<Car> all = carService.findAll();all.forEach(car -> {System.out.println(car);});}@Testpublic void findLike(){List<Car> all = carService.findByBrandLike("B"+"%");all.forEach(car -> {System.out.println(car);});}@Testpublic void orderByPrice(){List<Car> all = carService.orderByPrice();all.forEach(car -> {System.out.println(car);});}public static void main(String[] args) {double random = Math.round(Math.random() * 100) / 100.0;System.out.println(random);}}

總結

1.jpa是啥?java持久層的api,SpringBoot官方支持;
2.約定大于配置的理念,增刪改查,save,deleteById,findAll;
3.多條件查詢,and,or,like,約定大于配置;
4.多對一的查詢,@ManyToOne;

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/40991.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/40991.shtml
英文地址,請注明出處:http://en.pswp.cn/news/40991.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java反射機制是什么?

Java反射機制是 Java 語言的一個重要特性。 在學習 Java 反射機制前&#xff0c;大家應該先了解兩個概念&#xff0c;編譯期和運行期。 編譯期是指把源碼交給編譯器編譯成計算機可以執行的文件的過程。在 Java 中也就是把 Java 代碼編成 class 文件的過程。編譯期只是做了一些…

Python學習筆記第五十二天(Pandas 安裝)

Python學習筆記第五十二天 Pandas 安裝查看安裝版本 安裝驗證后記 Pandas 安裝 安裝 pandas 需要基礎環境是 Python&#xff0c;開始前我們假定你已經安裝了 Python 和 Pip。 使用 pip 安裝 pandas: pip install pandas安裝成功后&#xff0c;我們就可以導入 pandas 包使用&…

iPhone(iPad)安裝deb文件

最簡單的方法就是把deb相關的文件拖入手機對應的目錄&#xff0c;一般是DynamicLibraries文件夾 參考&#xff1a;探討手機越獄和安裝deb文件的幾種方式研究 1、在 Mac 上安裝 dpkg 命令 打包 deb 教程之在 Mac 上安裝 dpkg 命令_xcode打包root權限deb_qq_34810996的博客-CS…

神經網絡基礎-神經網絡補充概念-26-前向和反向傳播

簡單比較 前向傳播&#xff08;Forward Propagation&#xff09;&#xff1a; 前向傳播是神經網絡中的正向計算過程&#xff0c;用于從輸入數據開始&#xff0c;逐層計算每個神經元的輸出值&#xff0c;直到得到最終的預測值。在前向傳播過程中&#xff0c;我們按以下步驟進行…

驅動DAY4 字符設備驅動分步注冊和ioctl函數點亮LED燈

頭文件 #ifndef __HEAD_H__ #define __HEAD_H__ typedef struct{unsigned int MODER;unsigned int OTYPER;unsigned int OSPEEDR;unsigned int PUPDR;unsigned int IDR;unsigned int ODR; }gpio_t; #define PHY_LED1_ADDR 0X50006000 #define PHY_LED2_ADDR 0X50007000 #d…

一百五十八、Kettle——Kettle各版本及其相關安裝包分享(網盤鏈接,不需積分、不需驗證碼) 持續更新、持續分享

一、目的 最近因為kettle9.3的shim問題看了好多博客&#xff0c;都沒有網盤分享。后來有一位博主分享了kettle9.2的shim安裝包&#xff0c;已經很感謝他&#xff0c;但是是博客分享&#xff0c;下載還需要搞驗證碼下載碼之類的。 kettle9.2的shim安裝包下載好后&#xff0c;一…

圖數據庫_Neo4j基于docker服務版安裝_Neo4j Desktop桌面版安裝---Neo4j圖數據庫工作筆記0004

然后我們來看看如何用docker來安裝Neo4j community server 首先去執行docker pull neo4j:3.5.22-community 去拉取鏡像 然后執行命令就可以安裝了 可以用docker ps查看一下 看看暴露了哪些端口 然后再看一下訪問一下這個時候,要用IP地址了注意 然后再來看一下安裝Desktop 去下…

Sigmastar SSC8826Q 2K行車記錄儀解決方案

一、方案描述 行車記錄儀是智能輔助汽車駕駛&#xff0c;和管理行車生活的車聯網智能終端設備&#xff0c;利用智能芯片處理器、GPS定位、網絡通信、自動控制等技術&#xff0c;將與行車生活有關的各項數據有機地結合在一起。 行車記錄儀如今已經成了必不可少的車載用品之一&…

雙向-->帶頭-->循環鏈表

目錄 一、雙向帶頭循環鏈表概述 1.什么是雙向帶頭循環鏈表 2.雙向帶頭循環鏈表的優勢 3.雙向帶頭循環鏈表簡圖 二、雙向帶頭循環鏈表的增刪查改圖解及代碼實現 1.雙向帶頭循環鏈表的頭插 2.雙向帶頭循環鏈表的尾插 3.雙向帶頭循環鏈表的頭刪 4.雙向帶頭循環鏈表的尾刪…

ATF(TF-A) 威脅模型匯總

安全之安全(security)博客目錄導讀 目錄計劃如下&#xff0c;相關內容補充中&#xff0c;待完成后進行超鏈接&#xff0c;敬請期待&#xff0c;歡迎您的關注 1、通用威脅模型 2、SPMC威脅模型 3、EL3 SPMC威脅模型 4、fvp_r 平臺威脅模型 5、RSS-AP接口威脅模型 威脅建模是安全…

淺學實戰:探索PySpark實踐,解鎖大數據魔法!

文章目錄 Spark和PySpark概述1.1 Spark簡介1.2 PySpark簡介 二 基礎準備2.1 PySpark庫的安裝2.2 構建SparkContext對象2.3 SparkContext和SparkSession2.4 構建SparkSession對象2.5 PySpark的編程模型 三 數據輸入3.1 RDD對象3.2 Python數據容器轉RDD對象3.3 讀取文件轉RDD對象…

IDEA的常用設置,讓你更快速的編程

一、前言 在使用JetBrains的IntelliJ IDEA進行軟件開發時&#xff0c;了解和正確配置一些常用設置是非常重要的。IDEA的強大功能和定制性使得開發過程更加高效和舒適。 在本文中&#xff0c;我們將介紹一些常用的IDEA設置&#xff0c;幫助您更好地利用IDEA進行開發。這些設置包…

Java面向對象——封裝以及this關鍵字

封 裝 封裝是面向對象編程&#xff08;OOP&#xff09;的三大特性之一&#xff0c;它將數據和操作數據的方法組合在一個單元內部&#xff0c;并對外部隱藏其具體實現細節。在Java中&#xff0c;封裝是通過類的訪問控制修飾符&#xff08;如 private、protected、public&#x…

Linux MQTT智能家居項目(智能家居界面布局)

文章目錄 前言一、創建工程項目二、界面布局準備工作三、正式界面布局總結 前言 一、創建工程項目 1.選擇工程名稱和項目保存路徑 2.選擇QWidget 3.添加保存圖片的資源文件&#xff1a; 在工程目錄下添加Icon文件夾保存圖片&#xff1a; 將文件放入目錄中&#xff1a; …

網絡層協議

網絡層協議 IP協議基本概念協議頭格式網段劃分特殊的IP地址IP地址的數量限制私有IP地址和公網IP地址路由IP協議頭格式后續 在復雜的網絡環境中確定一個合適的路徑 IP協議 承接上文&#xff0c;TCP協議并不會直接將數據傳遞給對方&#xff0c;而是交付給下一層協議&#xff0c;…

機器學習基礎(四)

KNN算法 KNN:K-Nearest Neighbor,最近領規則分類。 為了判斷位置實例的類別,以所有已知類別的實例作為參照選擇參數K。計算未知實例與所有已知實例的距離。(一般采用歐氏距離)選擇最近K個已知實例。根據少數服從多數的投票法則,讓未知實例歸類為K個最近鄰樣本中最多數的類…

音視頻FAQ(三):音畫不同步

摘要 本文介紹了音畫不同步問題的五個因素&#xff1a;編碼和封裝階段、網絡傳輸階段、播放器中的處理階段、源內容產生的問題以及轉碼和編輯。針對這些因素&#xff0c;提出了相應的解決方案&#xff0c;如使用標準化工具、選擇強大的傳輸協議、自適應緩沖等。此外&#xff0…

uniapp微信小程序區分正式版,開發版,體驗版

小程序代碼區分是正式版&#xff0c;開發版&#xff0c;還是體驗版 通常正式和開發環境需要調用不同域名接口&#xff0c;發布時需要手動更換 或者有些東西不想在正式版顯示&#xff0c;只在開發版體驗版中顯示&#xff0c;也需要去手動隱藏 官方沒有明確給出判斷環境的方法&a…

SciencePub學術 | CCF推薦重點計算機SCIE征稿中

SciencePub學術 刊源推薦: CCF推薦重點計算機SCIE征稿中&#xff01;信息如下&#xff0c;錄滿為止&#xff1a; 一、期刊概況&#xff1a; CCF推薦重點SCIE簡介 【期刊簡介】IF&#xff1a;4.0&#xff0c;JCR2區&#xff0c;中科院3區&#xff1b; 【版面類型】正刊&#…

Swift 基礎

工程目錄 請點擊下面工程名稱&#xff0c;跳轉到代碼的倉庫頁面&#xff0c;將工程 下載下來 Demo Code 里有詳細的注釋 點擊下載代碼&#xff1a;swift-01