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

spring boot 集成mongodb

引入依赖

     <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId><version>2.2.0.RELEASE</version></dependency>

配置db: 

spring:data:mongodb:host: 127.0.0.1database: dev-picker-dbauthentication-database: dev-picker-dbport: 27017

在实体类上添加 @Document 并指定集合名称  @Document(collection = "customer")


import com.person.common.utils.UUIDUitl;
import lombok.AllArgsConstructor;
import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;import java.util.Date;@AllArgsConstructor
@Data
@Document(collection = "customer")
public class Customer {@Idprivate String id;@Indexed /**索引列**/private String realName;private String mobile;private Address address;private Date createdTime;private Boolean member;public Customer() {id = UUIDUitl.generateLowerString(32);realName = "Han";mobile = "13770655999";address = new Address();createdTime = new Date();}public static class Address {private String aliasName;private String province;private String city;private String detail;public Address() {aliasName = "Home";province = "JiangSu";city = "NanJing";detail = "1865";}}public static Customer form(String realName, String mobile, Address address) {Customer customer = new Customer();customer.realName = realName;customer.mobile = mobile;customer.address = address;return customer;}public static Customer form(String realName, String mobile, Address address, Boolean isMember) {Customer customer = new Customer();customer.realName = realName;customer.mobile = mobile;customer.address = address;customer.member = isMember;return customer;}}

编写测试类 


import com.bmyg.api.mongo.Customer;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import javax.annotation.Resource;@RequestMapping("/uncontrol/mongo")
@RestController
public class MongoDBController {@Resourceprivate MongoTemplate mongoTemplate;@GetMapping("/test")public String getMongoDBName() {Customer customer = new Customer();mongoTemplate.insert(customer);return mongoTemplate.getDb().getName();}}

结果:

其他查询:

package com.test.api;import com.alibaba.fastjson.JSON;
import com.test.api.mongo.Customer;
import com.test.api.mongo.CustomerRepository;
import com.test.api.mongo.CustomerVo;
import com.test.api.mongo.PageResult;
import com.mongodb.client.ListIndexesIterable;
import org.bson.Document;
import org.springframework.beans.BeanUtils;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.web.bind.annotation.*;import javax.annotation.Resource;
import java.util.Arrays;
import java.util.List;@RequestMapping("/uncontrol/mongo")
@RestController
public class MongoDBController {@Resourceprivate MongoTemplate mongoTemplate;@Resourceprivate CustomerRepository customerRepository;//给customer集合的某个字段创建索引@GetMapping("/crtIdx")public String createIndex(@RequestParam String key) {Index index = new Index(key, Sort.Direction.ASC);mongoTemplate.indexOps("customer").ensureIndex(index);return "ok";}//获取所有集合@GetMapping("/coll")public Set<String> index() {return mongoTemplate.getCollectionNames();}//插入@GetMapping("/insert")public String insert() {Customer customer = new Customer();mongoTemplate.insert(customer);return mongoTemplate.getDb().getName();}//查询@PostMapping("/query")public String query(@RequestBody Customer cus) {//查询所有List<Customer> result = mongoTemplate.findAll(Customer.class);System.out.println("查询所有" + JSON.toJSONString(result));//通过ID 查询Customer byId = mongoTemplate.findById(cus.getId(), Customer.class);System.out.println("通过ID 查询" + JSON.toJSONString(byId));Query query = new Query(Criteria.where("realName").is(cus.getRealName()));//条件-精确查询,返回第一条数据,没有条件 依旧会查询数据,但是返回第一条Customer findOne = mongoTemplate.findOne(query, Customer.class);System.out.println("条件-精确查询,返回第一条数据" + JSON.toJSONString(findOne));//条件-精确查询,返回所有数据---没有条件 依旧会查询数据,返回所有List<Customer> findList = mongoTemplate.find(query, Customer.class);System.out.println("条件-精确查询,返回所有数据" + JSON.toJSONString(findList));return JSON.toJSONString(result);}//删除@PostMapping("/del")public String del(@RequestBody Customer cus) {Query query = new Query(Criteria.where("realName").is(cus.getRealName()));mongoTemplate.remove(query, Customer.class);return mongoTemplate.getDb().getName();}//查询所有索引@PostMapping("/all-idx")public String getIndexAll() {// 获取集合中所有列表---import org.bson.Document;ListIndexesIterable<Document> indexList =mongoTemplate.getCollection("customer").listIndexes();StringBuilder sb = new StringBuilder();// 获取集合中全部索引信息for (Document document : indexList) {sb.append(document + "/r/n");}return sb.toString();}//模糊查询@PostMapping("/like-query")public String likequery(@RequestBody Customer cus) {//模糊查询Query queryLike = new Query(Criteria.where("realName").regex(".*" + cus.getRealName() + ".*"));List<Customer> queryLikeResult = mongoTemplate.find(queryLike, Customer.class);System.out.println(queryLikeResult);return JSON.toJSONString(queryLikeResult);}//多条件查询 and@PostMapping("/query-and")public String manyMatchAnd(@RequestBody Customer cus) {//多条件查询Criteria criteriaUserName = Criteria.where("realName").is(cus.getRealName());Criteria criteriaPassWord = Criteria.where("mobile").is(cus.getMobile());// 创建条件对象,将上面条件进行 AND 关联Criteria criteria = new Criteria().andOperator(criteriaUserName, criteriaPassWord);Query queryLike = new Query(criteria);List<Customer> queryLikeResult = mongoTemplate.find(queryLike, Customer.class);return JSON.toJSONString(queryLikeResult);}//多条件查询 or@PostMapping("/query-or")public String manyMatchOr(@RequestBody Customer cus) {Criteria criteriaUserName = Criteria.where("realName").is(cus.getRealName());Criteria criteriaPassWord = Criteria.where("mobile").is(cus.getMobile());// 创建条件对象,将上面条件进行 OR 关联Criteria criteria = new Criteria().orOperator(criteriaUserName, criteriaPassWord);Query queryor = new Query(criteria);List<Customer> queryLikeResult = mongoTemplate.find(queryor, Customer.class);return JSON.toJSONString(queryLikeResult);}//多条件查询 in@PostMapping("/query-in")public String findByInCondition() {// 设置查询条件参数List<String> names = Arrays.asList("Ma", "liu", "li");// 创建条件-- 创建条件,in 后面是list 集合Criteria criteria = Criteria.where("realName").in(names);// 创建查询对象,然后将条件对象添加到其中Query queryIn = new Query(criteria);List<Customer> result = mongoTemplate.find(queryIn, Customer.class);return JSON.toJSONString(result);}//根据【逻辑运算符】查询集合中的文档数据@PostMapping("/query-gt")public String findByGt() {int min = 20;int max = 35;Criteria criteria = Criteria.where("age").gt(min).lte(max);// 创建查询对象,然后将条件对象添加到其中Query queryGt = new Query(criteria);List<Customer> result = mongoTemplate.find(queryGt, Customer.class);return JSON.toJSONString(result);}//根据【正则表达式】查询集合中的文档数据@PostMapping("/query-regex")public String findByRegex() {String regex = "^张*";Criteria criteria = Criteria.where("realName").regex(regex);// 创建查询对象,然后将条件对象添加到其中Query queryRegex = new Query(criteria);List<Customer> result = mongoTemplate.find(queryRegex, Customer.class);return JSON.toJSONString(result);}//更新@PostMapping("/update")public String update(@RequestBody Customer cus) {Query query = new Query(Criteria.where("mobile").is(cus.getMobile()));Update update = new Update().set("realName", cus.getRealName());mongoTemplate.updateMulti(query, update, Customer.class);return mongoTemplate.getDb().getName();}// 分页查询---逻辑没问题 序列化有问题!!!!!!!!!!!!!!!!!@PostMapping("/query-page")public PageResult<Customer> queryPage(@RequestBody CustomerVo customerVo) {Customer cus = new Customer();BeanUtils.copyProperties(customerVo, cus);Query queryLike = new Query(Criteria.where("realName").regex(".*" + cus.getRealName() + ".*"));long total = mongoTemplate.count(queryLike, Customer.class);Integer skip = (customerVo.getPageNo() - 1) * customerVo.getPageSize();queryLike.skip(skip).limit(customerVo.getPageSize());queryLike.with(Sort.by(Sort.Order.desc("createdTime")));List<Customer> findList = mongoTemplate.find(queryLike, Customer.class);return PageResult.pageResult(customerVo.getPageNo(), customerVo.getPageSize(), (int) total, findList);}}

其他:


import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.person.common.utils.UUIDUitl;
import lombok.AllArgsConstructor;
import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.index.Indexed;
import org.springframework.data.mongodb.core.mapping.Document;import java.util.Date;@AllArgsConstructor
@Data
@Document(collection = "customer")
public class Customer {@Idprivate String id;@Indexedprivate String realName;private String mobile;@JsonIgnoreProperties(ignoreUnknown = true)private Address address;private Date createdTime;private Boolean member;private int age;public Customer() {id = UUIDUitl.generateLowerString(32);realName = "Han";mobile = "13770655999";address = new Address();createdTime = new Date();age = 18;}public static class Address {private String aliasName;private String province;private String city;private String detail;public Address() {aliasName = "Home";province = "JiangSu";city = "NanJing";detail = "1865";}}public static Customer form(String realName, String mobile, Address address) {Customer customer = new Customer();customer.realName = realName;customer.mobile = mobile;customer.address = address;return customer;}public static Customer form(String realName, String mobile, Address address, Boolean isMember) {Customer customer = new Customer();customer.realName = realName;customer.mobile = mobile;customer.address = address;customer.member = isMember;return customer;}}

import lombok.AllArgsConstructor;
import lombok.Data;import java.util.Date;/**** @version JDK 11* @className CustomerVo* @description TODO*/@AllArgsConstructor
@Data
public class CustomerVo {private String id;private String realName;private String mobile;private Date createdTime;private Boolean member;private int age;private Integer pageNo;private Integer pageSize;}

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import org.hibernate.validator.constraints.Range;import javax.validation.constraints.NotNull;
import java.io.Serializable;@Data
@ApiModel
@SuperBuilder
@AllArgsConstructor
@NoArgsConstructor
public class PageQuery implements Serializable {@ApiModelProperty(value = "页码,默认1", example = "1")@NotNull(message = "页码不能为空")@Range(min = 1, message = "页码不正确")protected Integer pageNo = 1;@ApiModelProperty(value = "每页条数, 默认10", example = "10")@NotNull(message = "每页条数不能为空")protected Integer pageSize = 10;/*** 偏移*/@ApiModelProperty(hidden = true)protected Integer offset;public Integer getOffset() {return (getPageNo() - 1) * getPageSize();}public Integer getPageNo() {return pageNo == null ? 1 : pageNo;}public Integer getPageSize() {return pageSize == null ? 10 : pageSize;}
}

import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;import java.io.Serializable;
import java.util.Collections;
import java.util.List;@Data
@ApiModel(description = "分页数据返回模型")
public class PageResult<T> implements Serializable {@ApiModelProperty(value = "当前页 - 和PageQuery保持统一")private Integer pageNo;@Deprecated@ApiModelProperty(value = "当前页", hidden = true)private Integer page;@ApiModelProperty(value = "每页条数")private Integer pageSize;@ApiModelProperty(value = "总记录数")private Integer total;@ApiModelProperty(value = "查询数据")private List<T> list;public Integer getPageNo() {return pageNo;}public void setPageNo(Integer pageNo) {this.pageNo = pageNo;this.page = pageNo;}@Deprecatedpublic Integer getPage() {return page;}@Deprecatedpublic void setPage(Integer page) {this.page = page;this.pageNo = page;}public static <T> PageResult<T> pageResult(Integer page, Integer pageSize, Integer total, List<T> list) {PageResult<T> pageResult = new PageResult<T>();pageResult.setPage(page);pageResult.setPageNo(page);pageResult.setPageSize(pageSize);pageResult.setList(list);pageResult.setTotal(total);return pageResult;}public static <T> PageResult<T> pageResult(PageQuery query, Integer total, List<T> list) {return pageResult(query.getPageNo(), query.getPageSize(), total, list);}public static <T> PageResult<T> pageResult(PageQuery query, long total, List<T> list) {return pageResult(query.getPageNo(), query.getPageSize(), (int) total, list);}//    public static <T> PageResult<T> pageResultLimit( PageQuery query, long total, List<T> list ) {
//        if (total>10000L){
//            total=10000L;
//        }
//        return pageResult(query.getPageNo(), query.getPageSize(), (int) total, list);
//    }public static <T> PageResult<T> empty(PageQuery query) {return pageResult(query, 0, Collections.emptyList());}/*** 获取总页数** @return 总页数*/@JsonIgnore@ApiModelProperty(hidden = true)public Integer getPages() {if (getPageSize() == 0) {return 0;}int pages = getTotal() / getPageSize();if (getTotal() % getPageSize() != 0) {pages++;}return pages;}}

相关文章:

spring boot 集成mongodb

引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId><version>2.2.0.RELEASE</version></dependency>配置db: spring:data:mongodb:host: 127.0.…...

从零开始搭建SpringCloud Alibaba微服务架构

Spring Cloud Alibaba是Spring Cloud的一个拓展项目&#xff0c;它用于构建基于阿里巴巴的微服务应用。它提供了多个阿里巴巴的开源组件&#xff0c;如Nacos、Sentinel、Dubbo等&#xff0c;用于解决微服务架构中的服务注册、配置管理、流量控制等问题。 Spring Cloud Alibaba…...

SpringBoot(八)之JdbcTemplate

SpringBoot&#xff08;八&#xff09;之JdbcTemplate 文章目录 SpringBoot&#xff08;八&#xff09;之JdbcTemplate1.添加依赖项&#xff1a;2. 配置数据库连接3.创建表信息4. 创建数据模型5. 创建 Repository6.测试,创建TestController spring-boot-starter-jdbc 是 Spring…...

ClickHouse 24.4 版本发布说明

本文字数&#xff1a;13148&#xff1b;估计阅读时间&#xff1a;33 分钟 审校&#xff1a;庄晓东&#xff08;魏庄&#xff09; 本文在公众号【ClickHouseInc】首发 新的一个月意味着新版本的发布&#xff01; 发布概要 本次ClickHouse 24.4版本包含了13个新功能&#x1f381;…...

amtlib.dll打不开怎么办?一键修复丢失amtlib.dll方法

电脑丢失amtlib.dll文件是什么情况&#xff1f;出现amtlib.dll打不开怎么办&#xff1f;这样的情况有什么解决方法呢&#xff1f;今天就和大家聊聊amtlib.dll文件同时教大家一键修复丢失amtlib.dll方法&#xff1f;一起来看看amtlib.dll文件丢失会有哪些方法修复&#xff1f; a…...

【退役之重学Java】关于 volatile 关键字

一、是什么 volatile 是Java中的关键字&#xff0c;用于声明变量&#xff0c;具有两个主要特性使其特殊。 二、两个特性 首先&#xff0c;如果有一个volatile变量&#xff0c;任何线程都无法将其缓存在计算机的缓存中。访问始终从主内存中进行。其次&#xff0c;如果volatile变…...

“大数据建模、分析、挖掘技术应用研修班”的通知!

随着2015年9月国务院发布了《关于印发促进大数据发展行动纲要的通知》&#xff0c;各类型数据呈现出了指数级增长&#xff0c;数据成了每个组织的命脉。今天所产生的数据比过去几年所产生的数据大好几个数量级&#xff0c;企业有了能够轻松访问和分析数据以提高性能的新机会&am…...

Uniapp自定义默认返回按钮回退页面

//自定义后退时的操作onBackPress() {this.back1();return true;}, methods: { //跳转到 tabBar 页面&#xff0c;并关闭其他所有非 tabBar 页面back1() {uni.switchTab({url: /pages/mangement/mangement});},//关闭所有页面&#xff0c;打开到应用内的某个页面。back1() {uni…...

音视频开发5 补充 - Nginx搭建rtmp流媒体服务器,目的是让ffmpeg 可以直播推流

直播推流 ffmpeg -re -i out.mp4 -c copy flv rtmp://server/live/streamName -re, 表示按时间戳读取文件 参考&#xff1a; Nginx 搭建 rtmp 流媒体服务器 (Ubuntu 16.04) https://www.jianshu.com/p/16741e363a77 第一步 准备工作 安装nginx需要的依赖包 打开 ubutun 终端…...

小猫咪的奇幻冒险:一个简单的Python小游戏

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、游戏简介与演示 二、游戏开发与运行 1. 环境搭建 2. 代码解析 3. 加速机制 三、游戏…...

专注于运动控制芯片、运动控制产品研发、生产与销售为一体的技术型芯片代理商、方案商——青牛科技

深圳市青牛科技实业有限公司,是专注于运 动控制芯片、运动控制产品研发、生产与销售为一体的技术型 芯片代理商、方案商。现今代理了国产品牌GLOBALCHIP&#xff0c;芯谷&#xff0c;矽普&#xff0c;TOPPOWER等品牌。其中代理品牌TOPPOWER为电源模块&#xff0c;他们公司通过了…...

【C++】继承(二)深入理解继承:派生类默认成员函数与友元、静态成员的奥秘

目录 派生类的默认成员函数①派生类的构造函数②派生类的拷贝构造函数③派生类的赋值构造④派生类的析构函数 继承与友元继承与静态成员 前言 我们在上一章讲解了: 继承三部曲&#xff0c;本篇基于上次的基础继续深入了解继承的相关知识&#xff0c;欢迎大家和我一起学习继承 派…...

【MATLAB源码-第214期】基于matlab的遗传算法GA最短路径路由优化算法仿真。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 在现代网络通信和路径规划领域&#xff0c;最短路径路由优化算法是一项关键技术。它涉及在给定的网络拓扑中寻找从源点到目标点的最短或成本最低的路径。近年来&#xff0c;遗传算法&#xff08;GA&#xff09;因其出色的全局…...

数据结构(四)顺序栈 链式栈

一、概念 栈是一种先进后出的数据结构。FILO(firt in late out) 逻辑结构&#xff1a;线性结构 二、存储结构&#xff1a; &#xff08;一&#xff09; 顺序存储 顺序栈 基于一个数组配合一个栈顶"指针&#xff08;数组下标&#xff09;–top" 顺序栈的本质就是对…...

【linux】g++/gcc编译器

目录 背景知识 gcc如何完成 预处理(进行宏替换) 编译&#xff08;生成汇编&#xff09; 汇编&#xff08;生成机器可识别代码&#xff09; 链接&#xff08;生成可执行文件或库文件&#xff09; 在这里涉及到一个重要的概念:函数库 函数库一般分为静态库和动态库两…...

VBA批量合并带有图片、表格与文本框的Word

本文介绍基于VBA语言&#xff0c;对大量含有图片、文本框与表格的Word文档加以批量自动合并&#xff0c;并在每一次合并时添加分页符的方法。 在我们之前的文章基于Python中docx与docxcompose批量合并多个Word文档文件并逐一添加分页符&#xff08;https://blog.csdn.net/zhebu…...

市面上前 11 名的 Android 数据恢复软件

Android数据恢复软件是恢复无意中删除的文件或文件夹的必要工具。该软件还将帮助您恢复丢失或损坏的信息。本文介绍提供数据备份和磁盘克隆选项的程序&#xff0c;这些选项有助于在Android设备上恢复文件的过程。 如果您正在寻找一种有效的方法来恢复图像&#xff0c;文档&…...

【数据结构与算法 | 基础篇】数组模拟栈

1. 前言 前文我们刚提及了如何用单向链表来模拟栈. 我们还可以用数组来模拟栈.使用栈顶指针top来进行栈顶的操作. 2. 数组模拟栈 (1). 栈接口 public interface stack<E> {//压栈boolean push(E value);//弹栈, 栈非空返回栈顶元素E pop();//返回栈顶元素, 但不弹栈E…...

css卡片横线100%宽度

所需样式: 横线不用border, 用单独一个div, 这样就不会影响父组件的padding <div class"pumpDetailView"><div class"pump_title_name"><span>{{ pumpInfo.pointname }}</span><divclass"point_state":style"…...

回溯大法总结

前言 本篇博客将分两步来进行&#xff0c;首先谈谈我对回溯法的理解&#xff0c;然后通过若干道题来进行讲解&#xff0c;最后总结 对回溯法的理解 回溯法可以看做蛮力法的升级版&#xff0c;它在解决问题时的每一步都尝试所有可能的选项&#xff0c;最终找出所以可行的方案…...

2026年HR招聘偏好白皮书:这5项附加技能出现频率暴涨

2026 年的招聘市场&#xff0c;正在从“看你会什么岗位技能”&#xff0c;转向“看你能不能把岗位做得更智能”。HR筛简历时&#xff0c;越来越关注候选人的AI应用能力、数据化思维和业务落地能力。人社部近年发布的新职业中&#xff0c;已经出现生成式人工智能系统应用员、人工…...

警惕!AI正在悄悄重构全球攻防格局

警惕&#xff01;AI 正在悄悄重构全球攻防格局 热点聚焦 AI重构网络安全&#xff1a;全球巨头加速布局 2026年5月&#xff0c;全球网络安全领域迎来重大变革&#xff0c;AI技术正在重塑攻防格局。OpenAI发布专为网络安全防御打造的集成化AI平台Daybreak&#xff0c;将安全防…...

Owl-Alpha 新手快速上手指南

在处理大规模数据或构建高性能应用时&#xff0c;我们常常会遇到一个棘手的问题&#xff1a;如何在不阻塞主线程的情况下&#xff0c;高效地执行耗时任务&#xff1f;无论是处理图像、解析大型文件&#xff0c;还是进行复杂的数学运算&#xff0c;传统的单线程模式往往会让界面…...

告别数据饥荒:用PyTorch手把手实现原型网络(Prototypical Networks)做电影评论情感分类

告别数据饥荒&#xff1a;用PyTorch手把手实现原型网络做电影评论情感分类 在自然语言处理领域&#xff0c;情感分析一直是热门研究方向&#xff0c;但现实中的开发者常面临一个尴尬困境&#xff1a;标注数据太少。传统深度学习方法动辄需要成千上万的标注样本&#xff0c;而实…...

BiliRoamingX:彻底解决B站体验限制的完整增强方案

BiliRoamingX&#xff1a;彻底解决B站体验限制的完整增强方案 【免费下载链接】BiliRoamingX-integrations BiliRoamingX integrations and patches powered by ReVanced. 项目地址: https://gitcode.com/gh_mirrors/bi/BiliRoamingX-integrations 你是否曾为B站的内容区…...

如何用免费工具解锁QQ音乐、网易云音乐等加密格式:3分钟解决音乐播放限制

如何用免费工具解锁QQ音乐、网易云音乐等加密格式&#xff1a;3分钟解决音乐播放限制 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库&#xff1a; 1. https://github.com/unlock-music/unlock-music &#xff1b;2. https://git.unlock-music.dev/um/web…...

NPU跑LLM实战指南:KV Cache动态性如何突破硬件限制

NPU跑LLM实战指南:KV Cache动态性如何突破硬件限制 副标题: 从预分配+Attention Mask到三层软件栈,完整解析NPU推理架构 痛点:为什么NPU跑LLM这么难? LLM的生成机制和NPU的硬件特性存在根本冲突: LLM特性 NPU特性 冲突点 逐token生成 固定shape执行 KV Cache动态增长 动…...

3分钟快速上手:bilibili-parse视频解析API终极指南

3分钟快速上手&#xff1a;bilibili-parse视频解析API终极指南 【免费下载链接】bilibili-parse bilibili Video API 项目地址: https://gitcode.com/gh_mirrors/bi/bilibili-parse bilibili-parse是一款高效专业的B站视频解析工具&#xff0c;为开发者和内容创作者提供…...

HKMG工艺的“阿喀琉斯之踵”:聊聊那个无法移除的SiON界面层与未来0.3nm的挑战

HKMG工艺的隐形枷锁&#xff1a;SiON界面层的物理宿命与亚纳米级突围战 在半导体工艺演进的史诗中&#xff0c;HKMG&#xff08;高K金属栅&#xff09;技术曾被寄予厚望——它用金属栅极替代传统多晶硅&#xff0c;搭配高K介质材料HfO₂&#xff0c;一举解决了栅极耗尽和漏电流…...

Windows安卓应用安装终极指南:APK Installer让你的电脑变身安卓平台

Windows安卓应用安装终极指南&#xff1a;APK Installer让你的电脑变身安卓平台 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 还在为无法在Windows电脑上直接安装安卓…...