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

JPA之实体之间的关系

JPA之实体之间的关系

10.1.1实体类创建

注解的应用

@Table,@Entity

@Id+@GeneratedValue指定主键,@Column

P174 实体类编写规范

@Table(name = "t_user")
@Entity(name = "User")
public class User implements Serializable {@Id@GeneratedValue(strategy =GenerationType.AUTO)
    private Integer id;@Column(name = "name",length = 50,unique = false,insertable = true,updatable = true,table = "t_user",nullable = true)
    private String name;
+get和setter方法
+有参无参构造
+toSTring方法    }

10.1.2jap的一对一,一对多,多对多用法

详见10.1.3-10.1.9

10.1.3单向一对一

P188 结合课本的单向一对一进行判断

本人理解的单向一对一的关系是。

往person表插入数据或者是删除数据的时候可以对idcard表进行操作。

但是操作idcard表无论如何也得不到person表的任何信息。

案例:person和身份证实体

  • 通过用户可以找到身份证
  • 通过身份证不能找到用户
  • 关键是关系拥有方如何写

Person的代码:

@Table(name = "person")
@Entity(name="Person")
public class Person {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "personId")
    private Integer personId;    @Column(name="personName")
    private String personName;
//    ================单项一对一==============
    @OneToOne(optional = true,cascade = CascadeType.ALL)
    @JoinColumn(name = "id_card")
    private IdCard idCard;//构造函数+getter+setter+toString
...
}

IdCard的代码:就是编写一个实体类

@Table(name = "idcard")
@Entity(name="IdCard")
public class IdCard {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "cardId")
    private Integer cardId;    @Column(name="cardName")
    private String cardName;
//构造函数+getter+setter

测试代码:

import com.lxz.demo2.entity.IdCard;
import com.lxz.demo2.entity.Person;import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;public class PersonTest {
    public static void main(String[] args) {
        EntityManagerFactory factory=Persistence.createEntityManagerFactory("MyJPA2");
        EntityManager em=factory.createEntityManager();
        EntityTransaction transaction=em.getTransaction();
        transaction.begin();
        Person person=new Person(null,"李四");
        IdCard idCard=new IdCard(null,"李四身份证号码");
        person.setIdCard(idCard);
        em.persist(person);
        transaction.commit();
    }}

效果图:

10.1.4双向一对一

1.双向一对一

本人理解的双向一对一的关系是。

往person表插入数据或者是删除数据的时候可以对idcard表进行操作。

操作idcard表同样也会操作person表。

1.Person表的代码不变

@Table(name = "t_person")
@Entity(name="Person1")
public class Person {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "personId")
    private Integer personId;    @Column(name="personName")
    private String personName;
//    ================单项一对一==============
    @OneToOne(optional = true,cascade = CascadeType.ALL)
    @JoinColumn(name = "card_id")
    private IdCard idCard;}

2.IdCard的代码

@Table(name = "t_card")
@Entity(name="IdCard")
public class IdCard {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "cardId")
    private Integer cardId;    @Column(name="cardName")
    private String cardName;
//    =============双向一对一===================
//    mappedBy必须和前面设置的保持一致,idCard是person的属性,所以person表是关系的维护方
    @OneToOne(optional = false,cascade = CascadeType.REFRESH,mappedBy = "idCard")
    private Person person;//构造函数+getter+setter
}

测试代码:

public class PersonTest {
    public static void main(String[] args) {
        EntityManagerFactory factory=Persistence.createEntityManagerFactory("MyJPA2");
        EntityManager em=factory.createEntityManager();
        EntityTransaction transaction=em.getTransaction();
        transaction.begin();
        TPerson person=new TPerson(null,"王五");
        TIdCard idCard=new TIdCard(null,"李四身份证号码");
        person.setIdCard(idCard);
        idCard.settPerson(person);
        em.persist(person);
        em.persist(idCard);
        transaction.commit();
    }}

效果图:

10.1.5单向一对多

3.单向一对多

P193 单向一对多关系

案例:部门和员工的关系就是一对多的关系

  • 外键关联
  • 中间表

1.采用外键关联的方式

  • 创建表

Department表:

Employee表:

  • 创建

  • 测试:

 EntityManagerFactory factory=Persistence.createEntityManagerFactory("MyJPA2");
        EntityManager em=factory.createEntityManager();
        EntityTransaction transaction=em.getTransaction();
        transaction.begin();
        Department department=new Department(null,"媒体部",null);
        Employee employee=new Employee(null,"王五");
        Employee employee2=new Employee(null,"赵六");
        List<Employee> e=new ArrayList<>();
        e.add(employee);
        e.add(employee2);
        department.setEmployees(e);
        em.persist(department);
        transaction.commit();

2.基于中间表方式

案例:学生和选课之间的关系是就是单向一对一,一个学生可以选择多门课程可以形成一个中间表(选课信息表)

基于中间表的方式的区别和基于外键的区别在于配置单方(关系拥有方的时候需要配置中间表)

  • student类

@Table(name = "student")
@Entity(name = "Student")
public class Student implements Serializable {
    @Id
    @GeneratedValue
    @Column(name = "id")
    private Integer id;
    @Column(name = "name")
    private String name;    @OneToMany(cascade = CascadeType.ALL,fetch = FetchType.EAGER)
    @JoinTable(name="sc",
            joinColumns={
                    @JoinColumn(name = "student_id", referencedColumnName = "id")}
            ,inverseJoinColumns = {
            @JoinColumn(name = "course_id", referencedColumnName = "id")
    })    List<Course> courses;}

  • Course类:

@Entity(name = "Course")
@Table(name = "course")
public class Course {@Id@GeneratedValue@Column(name = "id")
    private Integer id;@Column(name = "name")
    private String name;}

  • 测试类:

 EntityManagerFactory factory=Persistence.createEntityManagerFactory("MyJPA2");
        EntityManager em=factory.createEntityManager();
        EntityTransaction transaction=em.getTransaction();
        transaction.begin();
        Student student=new Student(null,"张三",null);
        Course c1=new Course(null,"数据库");
        Course c2=new Course(null,"Java");
        List<Course> e=new ArrayList<>();
        e.add(c1);
        e.add(c2);
        student.setCourses(e);
        em.persist(student);
        transaction.commit();

查询测试:

  public static void main(String[] args) {
       EntityManagerFactory factory=Persistence.createEntityManagerFactory("MyJPA2");
       EntityManager em=factory.createEntityManager();
       Query query=em.createQuery("select student from Student student");
       System.out.println(query.getResultList());   }

  • 查多端的

public static void main(String[] args) {
       EntityManagerFactory factory=Persistence.createEntityManagerFactory("MyJPA2");
       EntityManager em=factory.createEntityManager();
       Query query=em.createQuery("select course from Course course");
       System.out.println(query.getResultList());   }

10.1.6单向多对一/

1.单向一对多

10.1.7双向一对多/双向多对一

P193

从一方可以获取多方,从多方可以获取一方

@ManyToOne注解+@OneToMany注解的应用

  • Student类:

@Table(name = "student")
@Entity(name = "Student")
public class Student implements Serializable {@Id@GeneratedValue@Column(name = "id")private Integer id;@Column(name = "name")private String name;@OneToMany(cascade = CascadeType.ALL,fetch = FetchType.EAGER)
    List<Course> courses;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public List<Course> getCourses() {return courses;}public void setCourses(List<Course> courses) {this.courses = courses;}public Student() {}public Student(Integer id, String name, List<Course> courses) {this.id = id;this.name = name;this.courses = courses;}@Overridepublic String toString() {return "Student{" +"id=" + id +", name='" + name + '\'' +", courses=" + courses +'}';}
}

  • Course类

@Entity(name = "Course")
@Table(name = "course")
public class Course {
    @Id
    @GeneratedValue
    @Column(name = "id")
    private Integer id;
    @Column(name = "name")
    private String name;    @ManyToOne
    @JoinTable(name="sc",
            joinColumns={
                    @JoinColumn(name = "course_id", referencedColumnName = "id")}
            ,inverseJoinColumns = {
            @JoinColumn(name = "student_id", referencedColumnName = "id")
    })
     private Student student;}

10.1.8单向多对多

P196

  • Student表

@Entity(name = "Student")
@Table(name = "student")
public class Student {
    @Id
    @GeneratedValue
    private Integer id;
    private String name;
    @ManyToMany(cascade = CascadeType.ALL,fetch = FetchType.EAGER)
    @JoinTable(name = "sc")
    private Collection<Course> course=new ArrayList();}

  • course表:

@Entity(name = "theCourse")
@Table(name = "course")
public class Course {
    @Id
    @GeneratedValue
    private Integer id;
    private String name;

10.1.9双向多对多

P197

  • Student

@Entity(name = "Student")
@Table(name = "student")
public class Student {
    @Id
    @GeneratedValue
    private Integer id;
    private String name;
    @ManyToMany(cascade = CascadeType.ALL,fetch = FetchType.EAGER)
    @JoinTable(name = "sc")
    private Collection<Course> courses=new ArrayList();

  • Course

@Entity(name = "theCourse")
@Table(name = "course")
public class Course {
    @Id
    @GeneratedValue
    private Integer id;
    private String name;
    @ManyToMany(mappedBy = "courses",cascade = CascadeType.ALL)
    private Collection<Student> students;

10.1.10jpa单表的增删改查

  • 目录

  • 配置文件

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1"
             xmlns="http://xmlns.jcp.org/xml/ns/persistence"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
     http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
    <persistence-unit name="MyJPA" transaction-type="RESOURCE_LOCAL">
      <class>com.lxz.demo.entity.User</class>
        <properties>
            <!-- 标准配置方法,适用性高 -->
            <property name="javax.persistence.jdbc.driver" value="com.mysql.cj.jdbc.Driver"/>
            <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/jdbc?useSSL=false&amp;serverTimezone=GMT"/>
            <property name="javax.persistence.jdbc.user" value="root"/>
            <property name="javax.persistence.jdbc.password" value="root"/>            <!-- hibernate 的配置方法-->
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
            <property name="hibernate.show_sql" value="true" />
            <property name="hibernate.hbm2ddl.auto" value="update"/> <!--create,create-drop,update,validate  -->        </properties>
    </persistence-unit>
</persistence>

  • 实体类

@Table(name = "t_user")
@Entity(name = "User")
public class User implements Serializable {
    @Id
    @GeneratedValue(strategy =GenerationType.AUTO)
    private Integer id;
    @Column(name = "name",length = 50,unique = false,insertable = true,updatable = true,table = "t_user",nullable = true)
    private String name;    public Integer getId() {
        return id;
    }    public void setId(Integer id) {
        this.id = id;
    }    public String getName() {
        return name;
    }    public void setName(String name) {
        this.name = name;
    }    public User() {
    }    public User(Integer id, String name) {
        this.id = id;
        this.name = name;
    }    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }
}

  • UserDao类

public class UserDao {
    public boolean add(User user){
        try {
            EntityManagerFactory factory = Persistence.createEntityManagerFactory("MyJPA");
            EntityManager em = factory.createEntityManager();
            EntityTransaction transaction = em.getTransaction();
            transaction.begin();
            em.persist(user);
            transaction.commit();
            em.close();
            factory.close();return true;}catch (Exception e){
            e.printStackTrace();return false;}}    public boolean update(User user){
        try {
            EntityManagerFactory factory = Persistence.createEntityManagerFactory("MyJPA");
            EntityManager em = factory.createEntityManager();
            EntityTransaction transaction = em.getTransaction();
            transaction.begin();
            em.merge(user);
            transaction.commit();
            em.close();
            factory.close();return true;}catch (Exception e){return false;}}
    public boolean delete(Integer id){
        try {
        EntityManagerFactory factory= Persistence.createEntityManagerFactory("MyJPA");
        EntityManager em=factory.createEntityManager();
        EntityTransaction transaction=em.getTransaction();
        transaction.begin();
        User user=new User();
        user=em.find(User.class,id);
        em.remove(user);
        transaction.commit();
        em.close();
        factory.close();return true;}catch (Exception e){return false;}}
    public User findById(Integer id){
        EntityManagerFactory factory= Persistence.createEntityManagerFactory("MyJPA");
        EntityManager em=factory.createEntityManager();
        EntityTransaction transaction=em.getTransaction();
        User user=em.find(User.class,id);
        em.close();
        factory.close();return user;}
    public List<User> findAll(){
        EntityManagerFactory factory= Persistence.createEntityManagerFactory("MyJPA");
        EntityManager em=factory.createEntityManager();
        EntityTransaction transaction=em.getTransaction();
        Query query =em.createQuery("select user from User user");
        List<User> users=query.getResultList();
        em.close();
        factory.close();return users;}
}

  • 测试类

public class UserDaoTest {
    public static void main(String[] args) {
        UserDao userDao=new UserDao();
        System.out.println(userDao.add(new User(null,"add")));
        System.out.println(userDao.update(new User(2,"update")));
        System.out.println(userDao.delete(9));
        System.out.println(userDao.findAll());
        System.out.println(userDao.findById(2));
    }}

相关文章:

JPA之实体之间的关系

JPA之实体之间的关系 10.1.1实体类创建 注解的应用 Table&#xff0c;Entity IdGeneratedValue指定主键&#xff0c;Column P174 实体类编写规范 Table(name "t_user") Entity(name "User") public class User implements Serializable {IdGeneratedVa…...

如何在 C++ 中调用 python 解析器来执行 python 代码(三)?

本文在 C 中调用 multi.py 脚本&#xff0c;并向它传入参数并执行&#xff0c;然后获得返回值并在 C 中打印结果。 目录 如何在 C 中调用 python 解析器来执行 python 代码&#xff08;一&#xff09;&#xff1f;如何在 C 中调用 python 解析器来执行 python 代码&#xff0…...

【Linux】gcc/g++/gdb的使用

&#x1f525;&#x1f525; 欢迎来到小林的博客&#xff01;&#xff01;       &#x1f6f0;️博客主页&#xff1a;✈️小林爱敲代码       &#x1f6f0;️社区 : 进步学堂       &#x1f6f0;️欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收…...

浅浅谈一谈B树和B+树

目录: &#x1f680;1.B树 &#x1f680;2.B树 索引背后的数据结构是啥呢,是B树,是为了数据库索引设计的,我们可以先了解B树,再说B树 1.什么是B树 B树也叫B-树,这里的-不读减,是一个符号 我们已经学过了二叉搜素树,B树其实就是N叉搜素树,二叉搜索树只能在每一个结点放一个…...

Keil新建一个国民32位MCU工程

1.打开Keil软件&#xff0c;点击Project→New uVision→Project 2.将工程保存到自己的工程文件夹&#xff0c;并给项目命名&#xff0c;点击保存 3.选择自己需要开发的芯片&#xff0c;点击OK 4.点击OK 5.出现上图所示&#xff0c;工程已经建好了&#xff0c;点击配置工程。 6.…...

webpack.config.js与package.json文件的配置

path要使用绝对路径&#xff0c;通过每次复制文件位置非常麻烦且容易导致问题 使用node中的 写个包名跟入口名称&#xff0c;其他全部回车 此步完成后&#xff0c;自动生成一个package.json包 licence指的是开源&#xff0c;一般不写 安装文件夹需要的依赖 dirname是node自带…...

超详细Eclipse配置JDK

在此附上Eclipse安装教程 超详细Eclipse安装教程 在此附上JDK1.8安装配置教程 超详细JDK1.8安装与配置 ①打开Eclipse–>点击Window–>点击Preferences ②找到Java–>找到Installed JREs–>点击Add… ③选中Standard VM–>之后点击Next ④点击Directory找…...

成功解决numpy.linalg.LinAlgError: SVD did not converge in Linear Least Squares

成功解决numpy.linalg.LinAlgError: SVD did not converge in Linear Least Squares 目录 解决问题 解决思路 解决方法—四大原因分析 T1、数据本身问题的解决方法...

Allegro如何设置铜皮避让的优先级操作指导

Allegro如何设置铜皮避让的优先级操作指导 在用Allegro进行PCB设计的时候,时常需要使用动态铜皮进行设计,当两块动态铜皮存在交集的时候,避让就会存在一个优先级,如下图 上方的铜皮避让调了下方的铜皮,上方的铜皮被避让了 如何调整让下方的铜皮避让上方的铜皮,如下图 具…...

(Trie Tree)字典树

&#xff08;Trie Tree&#xff09;字典树 场景&#xff1a;在n个字符串中查找某个字符串。 暴力匹配&#xff0c;时间复杂度为O&#xff08;nm&#xff09;&#xff0c;m为字符串平均长度&#xff0c;效率过低。 字典查找单词"fly"&#xff0c;首先查找’f’,然后…...

MQTT的学习之Mosquitto集群搭建

文章钢要&#xff1a; 1、进行双服务器搭建 2、进行多服务器搭建 一、Mosquitto的分布式集群部署 如果需要做并发量很大的时候就需要考虑做集群处理&#xff0c;但是我在查找资料的时候发现并不多&#xff0c;所以整理了一下&#xff0c;搭建简单的Mosquitto集群模式。 首…...

TS面向对象

第二章&#xff1a;面向对象 面向对象简而言之就是程序之中所有的操作都需要通过对象来完成。 举例来说&#xff1a; 操作浏览器要使用window对象操作网页要使用document对象操作控制台要使用console对象 一切操作都要通过对象&#xff0c;也就是所谓的面向对象&#xff0c…...

Python进阶-----高阶函数map() 简介和使用

目录 简介&#xff1a; ​编辑 示例&#xff1a; 示例&#xff08;1&#xff09;&#xff1a;输出map()函数返回值&#xff08;迭代器&#xff09;结果 示例&#xff08;2&#xff09;&#xff1a;与循环对比 示例&#xff08;3&#xff09;&#xff1a;字符串转列表 示…...

GPU会变得更便宜吗?GPU 定价更新

在英伟达和AMD发布了一段时间的一致显卡之后&#xff0c;事情在二月份已经降温。没有新的GPU可以谈论&#xff0c;没有特别惊人的交易或任何东西&#xff0c;但仍然值得看看市场现在的表现如何&#xff0c;因为它已经稳定下来&#xff0c;以及我们在未来几个月可以期待什么。过…...

IDEA如何创建一个springboot项目

要想进入springboot的殿堂&#xff0c;你的跨进springboot的门槛&#xff0c;下面就是使用IDEA初始话一个简单的springboot项目。 选择Create New Project 选择Spring Initializer——>选择对应的jdk版本——>Default默认在线构建&#xff0c;需要联网噢 选择自己想写…...

Netty核心功能以及线程模型

目录 Netty核心功能以及线程模型 Netty初探 Netty的使用场景&#xff1a; Netty通讯示例 Netty线程模型 Netty模块组件 Netty核心功能以及线程模型 Netty初探 NIO 的类库和 API 繁杂&#xff0c; 使用麻烦&#xff1a; 需要熟练掌握Selector、 ServerSocketChannel、 So…...

【并发编程二十】协程(coroutine)_协程库

【并发编程二十】协程&#xff08;coroutine&#xff09;一、线程的缺点二、协程三、优点四、个人理解五、协程库1、window系统2、unix系统&#xff08;包括linux的各个版本&#xff09;2.1、makecontext2.2、swapcontext2.3、setcontext3、第三方库3.1、Boost.Coroutine23.2、…...

c语言入门-5-字符串

c语言入门-5-字符串正文1、字符串怎么用方式一方式二2、字符串的长度深度解析1 字符串的特性2 \0 的含义3 ascii码表下一篇正文 1、字符串怎么用 方式一 // 字符串的标准使用方式&#xff0c;用char类型的数组表示字符串 #include<stdio.h> int main() {char arr[] &…...

[Ansible系列]ansible roles

目录 一. Roles简介 二. Roles基本构成 三. Role使用 3.1 playbook中引用roles 3.2 pre_tasks 和 post_tasks 3.3 role的依赖 四. Ansible Galaxy 一. Roles简介 在Ansible中&#xff0c;role是将playbook分割为多个文件的主要机制。它大大简化了复杂playbook…...

冯诺依曼体系结构与操作系统的理解

✅<1>主页&#xff1a;我的代码爱吃辣 &#x1f4c3;<2>知识讲解&#xff1a;操作系统 &#x1f4ac;<3>前言&#xff1a;今天来介绍一下冯诺依曼体系结构&#xff0c;和操作系统的理解。 目录 1.冯诺依曼体系结构 冯诺依曼体系的工作原理&#xff1a; 为…...

【高光谱图像数据处理实战】基于Python的ENVI图像交互式裁剪与光谱数据预处理

前言在处理高光谱图像数据&#xff08;Hyperspectral Imaging&#xff0c; HSI&#xff09;时&#xff0c;我们常常需要面对两个核心问题&#xff1a;一是如何从庞大的三维数据立方体&#xff08;Data Cube&#xff09;中高效、准确地提取感兴趣区域&#xff08;ROI&#xff09…...

基于硬件虚拟化的AI智能体安全隔离方案Clawcage设计与实现

1. 项目概述&#xff1a;为AI智能体打造一个坚不可摧的“笼子”如果你最近在尝试运行一些本地的AI智能体&#xff0c;比如Claude Desktop、Cursor的Agent模式&#xff0c;或者各种开源的AI助手工具&#xff0c;心里可能总会有点打鼓。这些工具功能强大&#xff0c;但它们背后运…...

从科幻到现实:波色量子18.4亿融资背后,量子计算在多领域应用大突破!

【导语&#xff1a;科幻电影《流浪地球2》中智能量子计算机“MOSS”令人印象深刻&#xff0c;如今量子计算已从实验室走向商业化。波色量子成立三年获11轮融资共18.4亿&#xff0c;其量子计算在多领域展现出巨大应用潜力。】波色量子&#xff1a;资本竞逐中的宠儿按照“十五五规…...

开源技术如何驱动物联网创新:从硬件到软件的平民化革命

1. 物联网与开源&#xff1a;一场全民工程的序章十年前&#xff0c;如果有人告诉我&#xff0c;一个没有任何电子工程背景的艺术家&#xff0c;能自己动手做一个能联网、能自动浇花、还能在社交媒体上发照片的智能花盆&#xff0c;我大概会觉得他在讲科幻故事。但今天&#xff…...

OpenClaw智能体引导基准测试:本地LLM多步骤任务执行能力评估

1. 项目概述&#xff1a;一个专为LLM智能体设计的“开箱即用”能力基准测试 如果你最近在关注本地大语言模型&#xff08;LLM&#xff09;和智能体&#xff08;Agent&#xff09;的进展&#xff0c;可能会发现一个现象&#xff1a;很多模型在标准问答或代码生成任务上表现不错…...

PostgreSQL COPY命令实战:从CSV导入到导出的完整数据流处理

1. 为什么你需要掌握COPY命令 如果你经常需要把Excel表格或CSV文件的数据导入PostgreSQL数据库&#xff0c;或者反过来把数据库查询结果导出成文件&#xff0c;那么COPY命令就是你的瑞士军刀。我见过太多人还在用Python脚本逐行读写CSV&#xff0c;不仅效率低&#xff0c;代码还…...

Harbor:统一管理MCP服务器,告别AI助手配置混乱

1. 项目概述&#xff1a;Harbor&#xff0c;一个管理MCP服务器的统一中心如果你和我一样&#xff0c;在日常开发中深度依赖Claude、Cursor这类AI编程助手&#xff0c;那你一定对MCP&#xff08;Model Context Protocol&#xff09;服务器不陌生。简单来说&#xff0c;MCP服务器…...

如何使用Gulf of Mexico构建虚拟世界:元宇宙开发的终极指南

如何使用Gulf of Mexico构建虚拟世界&#xff1a;元宇宙开发的终极指南 【免费下载链接】GulfOfMexico perfect programming language 项目地址: https://gitcode.com/GitHub_Trending/dr/GulfOfMexico Gulf of Mexico&#xff08;前身为DreamBerd&#xff09;是一款被称…...

保姆级教程:用MNN在Android上部署你的第一个图像分类App(从模型转换到实时摄像头识别)

从零构建Android端智能图像分类应用&#xff1a;MNN实战全流程解析 在移动互联网时代&#xff0c;将AI能力嵌入移动端应用已成为提升用户体验的关键。想象一下这样的场景&#xff1a;用户打开手机就能实时识别植物种类、辨别商品真伪&#xff0c;或是自动分类相册中的照片——这…...

为什么93%的DeepSeek PR被拒?揭秘CI流水线自动拦截的4类“伪Clean”代码陷阱

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;为什么93%的DeepSeek PR被拒&#xff1f;揭秘CI流水线自动拦截的4类“伪Clean”代码陷阱 DeepSeek 开源仓库的 CI 流水线以严苛著称——最新统计显示&#xff0c;93% 的 PR 在 pre-commit 阶段即被自动…...