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

微服务全套

微服务导学服务拆分如何把单一的大项目如何拆分成一个个小项目远程调用每个小的单体项目在物理上是隔绝开的使用的是不同的Tomcat有独立的运维和部署互相之间如何调用就涉及到了远程调用的知识学习微服务的最好方法是尝试着把一个大项目分成一个个小问题然后解决这个过程中出现的问题MybatisPlus介绍快速入门对于单表查询很好用常用注解MyBatisPlus用过扫描Mapper继承的实体类基于反射获取实体类的信息作为数据库信息也就是对应数据库的字段名从而编写单表查询语句实体类的字段名转数据库的字段名有约定如下这就要求我们在编写实体类以及数据库的时候要规范一定要注意的是一定要有主键有成员变量为id的或者用TableId这个注解把主键是什么标出来TableId有两个属性value是给这个成员变量起别名并设置为主键type是给这个成员变量设置如下属性常用配置默认id的type属性为雪花算法生成但是优先级不如注解的高mybatis-plus: mapper-locations: [classpath*:/mapper/**/*.xml] type-aliases-package: com.itheima.map.domain.po global-config: db-config: id-type: assign-id update-strategy: not-null configuration: map-underscore-to-camel-case: true cache-enabled: false这些配置几乎都是默认的不用自己配置需要的时候看文档就行条件构造器在给出复杂的where条件的时候可以使用条件构造器构造出来的一个类传入参数Test void testQuerywrapper() { //在查询中 Wrapper用来填充复杂的条件语句同时可以对查询结果做筛选 QueryWrapperUser queryWrapper new QueryWrapperUser() .select(id,username,phone,balance) .like(username,o) .ge(balance,1000); ListUser users userMapper.selectList(queryWrapper); users.forEach(System.out::println); //在更新中 Wrapper设置条件语句,还需要一个实体类来传递参数 User user new User(); user.setBalance(10000); QueryWrapperUser queryWrapper1 new QueryWrapperUser() .eq(username,Lucy); userMapper.update(user,queryWrapper1); //在执行比较特殊的update语句的时候可以手写sql语句 User user1 new User(); user1.setUsername(zhangsan); UpdateWrapperUser updateWrapper new UpdateWrapperUser() .setSql(balancebalance-1000) .eq(username,mary); userMapper.update(user,updateWrapper); }在构建wrapper的时候直接传入字段名是属于硬编码要尽量避免可以通过如下方法传入函数的get方法来避免自定义sqlIService接口基本用法自定义接口继承IService接口自定义实现类继承IService的实现类要传递baseMapper给ServiceImplIService的实现类是因为调用Mapper方法时要知道要调用哪一个类的Mapper开发基础业务接口RestController RequestMapping(/users) Api(tags用户管理相关接口) public class UserController { private final UserService userService; public UserController(UserService userService) { this.userService userService; } PostMapping ApiOperation(新增用户) public void saveUser(RequestBody UserFormDTO userFormDTO) { //把DTO拷贝到pojo User user BeanUtil.copyProperties(userFormDTO,User.class); userService.save(user); } DeleteMapping(/{id}) ApiOperation(删除员工) public void deleteUser(PathVariable String id) { //删除用remove userService.removeById(id); } GetMapping(/{id}) ApiOperation(根据id查询用户) public UserVO getUserById(PathVariable String id) { User user userService.getById(id); return BeanUtil.copyProperties(user,UserVO.class); } GetMapping ApiOperation(根据id批量删除) public ListUserVO getUserByIds(RequestParam ListLong ids) { //批量查询用list ListUser userList userService.listByIds(ids); //因为返回类型是固定的所以类的复制转换会很常用 return BeanUtil.copyToList(userList,UserVO.class); }开发复杂业务接口baseMapper是编译时多态userMapper是运行时多态通过泛型绑定实现了自定义实现类继承mp提供的serviceImplUserMapper,User的时候通过泛型绑定了所以这里的BaseMapper实际上运行时使用的是userMapper对象尽管deductMoneyById是不在BaseMapper中自定义的方法。Lambda方法在查询参数比较多的时候不建议用requestParam一个一个查询太过于麻烦可以定义一个对象来接收ISerice的批量新增每一次循环只插入一条数据一共要插入十万条数据就进入十万次数据库每一次进入数据库就是一次网络请求网络请求比较耗时间所以效率比较低每一次循环插入一千条数据要插入十万条数据就要进入一百次数据库执行网络请求的次数变少了效率提升了,但是由于还是一条sql执行一次新增用户效率还没有达到最好一次性插入十万条数据只进入一次数据库且一条sql执行批量新增用户一条sql可以添加多个用户效率最高spring: datasource: url: jdbc:mysql://127.0.0.1:3306/mp?useUnicodetruecharacterEncodingUTF-8autoReconnecttrueserverTimezoneAsia/ShanghairewriteBatchedStatementstrue driver-class-name: com.mysql.cj.jdbc.Driver username: root password: 1234SpringBootTest class MpDemoApplicationTests { Autowired private UserService userService; private User buildUser(int i) { User user new User(); user.setUsername(user_ i); user.setPassword(123); user.setPhone( (18688190000L i)); user.setBalance(2000); user.setInfo({\age\: 24, \intro\: \英文老师\, \gender\: \female\}); user.setCreateTime(LocalDateTime.now()); user.setUpdateTime(user.getCreateTime()); return user; } Test void testSaveBatch() { // 准备10万条数据 ListUser list new ArrayList(1000); long b System.currentTimeMillis(); for (int i 1; i 100000; i) { list.add(buildUser(i)); // 每1000条批量插入一次 if (i % 1000 0) { userService.saveBatch(list); list.clear(); } } long e System.currentTimeMillis(); System.out.println(耗时 (e - b)); }代码生成器插件功能Docker快速入门-部署MySQL应用的运行对环境和操作系统有强要求windows64位的qq换到windows32位上面就不能运行命令解读docker run是创建并运行一个容器但可能会中途停止-d是让容器一直运行--name是给容器指定一个名字以后去操作容器的时候就是根据名字来的这个名字是这里我们自己起的名字-p 3306:3306前一个端口号是虚拟机自己的端口号后面那个端口号是虚拟机内部给mysql容器分配的端口号不同的容器前面的3306虚拟机端口号是不变的后面的端口号会不同因为虚拟机内部是隔离的外部不能直接访问到内部的容器只能通过虚拟机提供的端口号来访问虚拟机然后再访问容器-e 是设置环境变量TZAsia/Shanghai设置容器时区为上海避免 MySQL 时间与宿主机不一致。MYSQL_ROOT_PASSWORD123强制必填用于初始化 MySQL 的 root 用户密码是 MySQL 镜像的核心启动参数无此参数容器会启动失败。最后的mysql指定运行的镜像名称docker daemon基于该镜像创建容器实例本地无镜像时自动从镜像仓库拉取以后操作容器时--name指定要操作的容器docker daemon找到对应容器之后会自己起个名字自己用常见命令docker pull去镜像仓库里面拉取镜像要用pull可能会有必须输入的内容这部分可以去docker hub网站上面去搜索要拉取的镜像名称来确认docker image镜像的英文翻译是image要查看镜像使用这个命令就行docker save -o nginx.tar nginx:latest将镜像下载到本地镜像列表要用save命令具体内容如下docker save -o nginx.tar nginx:latest意思是将nginx镜像的最新版本下载到本地的文件nginx.tar里面docker load -i nginx去本地镜像列表里可以下载镜像用load命令忘了都可以用--help查看容器操作命令作用示例 (Nginx)docker run -d --name nginx -p 8081:80 nginx启动并运行 Nginx 容器推荐docker run -d --name nginx -p 8081:80 nginxdocker ps查看正在运行的容器docker psdocker ps --all查看所有容器包括停止的docker ps -adocker start nginx启动已存在的 Nginx 容器docker start nginxdocker stop nginx安全停止 Nginx 容器docker stop nginxdocker restart nginx重启 Nginx 容器docker restart nginxdocker rm -f nginx强制删除Nginx 容器解决端口冲突用docker rm -f nginx软件端口启动命令Nginx80818081:80phpMyAdmin80808080:80MySQL33063306:3036命令作用示例 (Nginx)docker exec -it nginx /bin/bash进入 Nginx 容器终端docker exec -it nginx bashexit退出容器回到宿主机exit命令作用示例 (Nginx)docker logs nginx查看 Nginx 日志docker logs nginxdocker logs -f nginx实时跟踪Nginx 日志docker logs -f nginx数据卷镜像就是最小化的系统只给你准备必要的最少的运行所必需的所以在容器内修改容器是非常困难的在创建数据卷的时候每创建一个数据卷就会对应宿主机文件系统里的一个文件每一个数据卷里的都和宿主机里的文件有对应关系在修改宿主机文件系统里面的文件时容器内的文件也会改变Docker 挂载数据卷时把宿主机的某个目录直接映射进容器的文件系统树。宿主机写 → 直接写硬盘容器读 → 直接读硬盘两边看到的是同一块物理存储空间没有同步、没有传输、没有复制。改一个 改另一个。为什么会这样因为容器本质不是虚拟机容器是共享宿主机内核的进程。它没有自己独立的硬盘只能通过挂载方式使用宿主机的真实文件。最终一句话总结宿主机和容器修改的是硬盘上同一份真实文件所以一边改另一边立刻变。

相关文章:

微服务全套

微服务导学服务拆分如何把单一的大项目如何拆分成一个个小项目远程调用每个小的单体项目,在物理上是隔绝开的,使用的是不同的Tomcat,有独立的运维和部署,互相之间如何调用就涉及到了远程调用的知识学习微服务的最好方法是尝试着把…...

2026奇点智能技术大会人脸识别大模型全解析(训练成本下降67%、误识率跌破0.0001%的底层逻辑)

第一章:2026奇点智能技术大会:人脸识别大模型 2026奇点智能技术大会(https://ml-summit.org) 核心突破:多粒度语义对齐架构 本届大会首次公开了FaceSynth-7B,一个支持跨姿态、跨光照、跨年龄鲁棒识别的开源大模型。该模型摒弃传…...

从零到代码卫士:我与 NVIDIA DGX Spark 的 72 小时

从零到代码卫士:我与 NVIDIA DGX Spark 的 72 小时一个普通开发者的 Hackathon 实录序:那个让我失眠的想法 收到 NVIDIA DGX Spark Hackathon 的参赛邀请时,我正盯着公司代码仓库里一份刚被安全团队打回来的审查报告发呆。 报告上密密麻麻标注…...

两级式光伏并网逆变器的Simulink仿真 光伏pv+Boost+三相并网逆变器 PLL锁相环

两级式光伏并网逆变器的Simulink仿真 光伏pv+Boost+三相并网逆变器 PLL锁相环 MPPT最大功率点跟踪控制(扰动观察法) dq解耦控制 电流内环电压外环的并网控制策略 PWM调制/SVPWM调制可切换 电压外环控制直流母线电压稳住400V 功率4kW今天咱们来拆解一个两…...

告别云端依赖:用STM32F405+EC600N搭建一个离线/弱网可用的OTA固件升级系统

告别云端依赖:STM32F405EC600N构建高可靠离线OTA升级系统 在物联网设备部署的最后一公里,网络稳定性往往成为固件升级的最大障碍。想象一下部署在偏远农场的气象监测设备、地下停车场的传感器节点,或是移动车辆上的追踪终端——这些场景下的4…...

【工业级多模态服务架构白皮书】:基于12个千万级AI应用验证的6层解耦架构(含视觉/语音/文本协同调度协议)

第一章:多模态大模型服务化架构设计总览 2026奇点智能技术大会(https://ml-summit.org) 多模态大模型服务化架构需在推理性能、资源弹性、协议兼容性与安全隔离之间取得系统级平衡。其核心目标是将文本、图像、音频、视频等异构输入统一接入,经标准化预…...

宝塔面板安装后MySQL无法启动_修复数据表损坏与日志恢复

MySQL启动失败应先查错误日志:主路径为/www/server/data/*.err,次选/www/server/mysql/logs/error.log;若不存在则找/www/server/data/下最新.err文件;再结合my.cnf中log-error配置确认实际路径。MySQL 启动失败时先看 mysqld 错误…...

CSS文本渲染在不同操作系统差异_使用font-smoothing平滑化

-webkit-font-smoothing 在 macOS 和 Windows 上表现不一致,因依赖系统渲染机制:macOS 默认 subpixel 抗锯齿更柔,Windows 用 grayscale 更硬;该属性仅 WebKit 有效,且受 font-weight、transform 等限制,全…...

基于gmid设计方法的二级运放优化与仿真验证

1. 从零理解gmid设计方法 我第一次接触gmid设计方法时,完全被各种曲线和参数搞晕了。后来在实际项目中反复尝试,才发现这套方法简直是模拟电路设计的"瑞士军刀"。简单来说,gmid就是晶体管的跨导(gm)与漏极电…...

手把手教你解决CMake升级后的CMAKE_ROOT错误(Ubuntu环境)

手把手教你解决CMake升级后的CMAKE_ROOT错误(Ubuntu环境) 在Ubuntu系统上进行CMake版本升级时,不少开发者会遇到一个令人头疼的错误提示:CMake Error: Could not find CMAKE_ROOT !!!。这个错误通常发生在升级过程中新旧版本混用或…...

别只把它当查询器!DataGrip 2026.1 深度实测:AI Agent 时代的数据库工作流质变

DataGrip 2026.1部署工具包 🚀 前言:工具只是表象,思维才是降维打击 我发现很多同学还在把 DataGrip 当成一个“换了皮的 Navicat”。 如果 2026 年你还没发现 DataGrip 的进化逻辑,那你每天至少在 CRUD 上浪费了 2 小时。 一、…...

从零开始搭建MogFace:环境依赖、模型下载、界面开发一步到位

从零开始搭建MogFace:环境依赖、模型下载、界面开发一步到位 1. 项目简介与核心优势 MogFace是CVPR 2022提出的一种高精度人脸检测算法,基于ResNet101架构设计,特别擅长处理具有挑战性的人脸检测场景。本教程将带您从零开始搭建完整的MogFa…...

NVIDIA Jetson Orin系列:人形机器人边缘AI计算的革命性突破

1. 为什么人形机器人需要NVIDIA Jetson Orin? 当你看到波士顿动力Atlas机器人后空翻时,可能不会想到背后需要多少算力支持。传统机器人主控芯片在实时处理高清摄像头、激光雷达、惯性测量单元等多传感器数据时常常力不从心,就像用老年机玩3A游…...

Qwen3.5-2B实战体验:低门槛搭建本地AI助手,支持图片识别与文本对话

Qwen3.5-2B实战体验:低门槛搭建本地AI助手,支持图片识别与文本对话 1. 为什么选择Qwen3.5-2B 在AI模型越来越庞大的今天,找到一个既轻量又实用的本地AI助手并不容易。Qwen3.5-2B作为阿里千问系列的小尺寸版本,完美平衡了性能与资…...

分布式光纤传感:新一代管网探漏监测技术

摘要:长期以来,长距离地埋管网的探漏一直是个大难题 —— 人工探漏盖不全、响应慢,定点传感器又只能盯着几个点,很多漏损都得等到路面冒水了才被发现。近年来,分布式光纤传感技术的成熟应用,给这个行业带来了颠覆性的改…...

FPGA新手避坑指南:用74HC595驱动静态数码管,时序问题一次讲清(附野火教程对比)

FPGA时序控制实战:74HC595驱动数码管的避坑与优化 第一次用FPGA驱动74HC595芯片时,我盯着Modelsim里那堆乱七八糟的波形整整发呆了半小时——明明按照手册写的时序图编写代码,为什么数码管显示的数字总是跳变?后来才发现&#xff…...

【毕设】毕业生实习与就业管理系统

💟博主:程序员俊星:CSDN作者、博客专家、全栈领域优质创作者 💟专注于计算机毕业设计,大数据、深度学习、Java、小程序、python、安卓等技术领域 📲文章末尾获取源码数据库 🌈还有大家在毕设选题…...

台达DVP PLC与三台变频器通讯程序详解:昆仑通态接线方式、设置指南及功能实现(频率设定、启...

台达DVP PLC与3台台达VFD-M变频器通讯程序 程序带注释,并附送昆仑通态有接线方式,设置。 器件:台达DVP ES系列的PLC,3台台达VFD M系列变频器,昆仑通态 功能:实现频率设定,启停控制,实…...

【粉丝福利社】从“找资料”到“资料找我”:OpenClaw如何让信息搜集效率翻倍?

💎【行业认证权威头衔】 ✔ 华为云天团核心成员:特约编辑/云享专家/开发者专家/产品云测专家 ✔ 开发者社区全满贯:CSDN博客&商业化双料专家/阿里云签约作者/腾讯云内容共创官/掘金&亚马逊&51CTO顶级博主 ✔ 技术生态共建先锋&am…...

【愚公系列】《剪映+DeepSeek+即梦:短视频制作》057-剪映智能剪辑+多款AI工具联动(剪映的AI剪视频)

💎【行业认证权威头衔】 ✔ 华为云天团核心成员:特约编辑/云享专家/开发者专家/产品云测专家 ✔ 开发者社区全满贯:CSDN博客&商业化双料专家/阿里云签约作者/腾讯云内容共创官/掘金&亚马逊&51CTO顶级博主 ✔ 技术生态共建先锋&am…...

**光场显示中的编程实践:基于Python与OpenCV的3D立体图像生成技术探索**在虚拟现实、增强现实和下一

光场显示中的编程实践:基于Python与OpenCv的3D立体图像生成技术探索 在虚拟现实、增强现实和下一代人机交互系统中,光场显示(Light Field Display) 正逐步从实验室走向产业化落地。它通过精确控制光线的方向和强度,在不…...

传统软件工程是不是已经噶了

站在2026年这个节点,面对满大街的“自然语言即代码”和满屏幕的智能体(Agent)自动协作,“传统软件工程”还活着么?如果深入到工业、能源、制造这些硬核生产力的底层看一眼,你会发现:传统软件工程…...

Spring全家桶系列框架核心源码解析!

Spring是我们Java程序员面试和工作都绕不开的重难点。很多粉丝就经常跟我反馈说由Spring衍生出来的一系列框架太多了,根本不知道从何下手;大家学习过程中大都不成体系,但面试的时候都上升到源码级别了,你不光要清楚了解Spring源码…...

bge-large-zh-v1.5开源模型实践:符合信创要求的国产AI基础设施部署

bge-large-zh-v1.5开源模型实践:符合信创要求的国产AI基础设施部署 如果你正在寻找一个性能强劲、完全开源且符合信创要求的文本向量化模型,那么bge-large-zh-v1.5绝对值得你深入了解。今天,我们就来聊聊如何快速部署和使用这个优秀的国产嵌…...

CV实战:LBP纹理特征在Python中的高效实现与优化

1. LBP纹理特征入门:从原理到应用场景 第一次接触LBP(Local Binary Pattern)是在2015年的人脸识别项目中。当时深度学习还没现在这么火爆,LBP因其计算简单、效果稳定成为我们团队的首选特征。现在虽然CNN大行其道,但LB…...

Samhelper(Sam helper 下载)

Sam Helper 是一款专为三星 Galaxy 手机用户开发的强大实用工具,它被誉为三星手机的“最强辅助”。如果你希望挖掘三星手机的隐藏潜力,特别是想要深度自定义屏幕刷新率或系统主题,那么 Sam Helper 绝对能让你眼前一亮。 Sam Helper 不仅能让…...

MoveIt Servo 如何通过 FollowJointTrajectoryControllerHandle Action Server 通信

一、通信架构图textMoveIt Servo (moveit_servo node)↓ MoveItSimpleControllerManager (插件管理器)↓ FollowJointTrajectoryControllerHandle (您看到的这个类)↓ [内部创建 Action Client]↓ ROS 2 Action Client (自动生成)↓ [通过 ROS 2 Action 协议]↓ 您的 Action Se…...

大模型应用开发实战(4)——智能体经典范式

🤵‍♂️ 个人主页:小李同学_LSH的主页 ✍🏻 作者简介:LLM学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…...

别让一颗小电阻毁了你的时钟!手把手教你搞定有源晶振的匹配电阻(附LVDS/CMOS选型表)

有源晶振匹配电阻实战指南:从信号异常到稳定时钟的完整解决方案 时钟信号如同电子系统的心跳,而有源晶振则是这颗心脏的核心。在实际项目中,一颗不起眼的匹配电阻往往成为决定系统稳定性的关键因素。我曾亲眼见证过因匹配电阻设计不当导致整批…...

重载 AGV 控制怎么做?这篇 2025 论文把“载荷转移”讲透了

最新 AGV 控制论文解析:20 吨重载 AGV 怎么把“轨迹跟踪”和“车身稳定”一起管起来? 摘要 这次分析一篇 AGV 控制 方向的最新论文,而且和前面讲过的 Pure Pursuit 改进、外部视觉导航、托盘装卸 都不重复。本文选取的是 2025 年发表的论文 《…...