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

JAVA程序获取SVN提交记录

1.获取文件提交记录

private String userName = "userName "; //svn账号
private String password = "password "; //svn密码
private String urlString = "urlString "; //svnurl

换成自己对应的svn信息

package com.tengzhi.common.dao;import java.io.File;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Collection;
import java.util.Date;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.tmatesoft.svn.core.SVNException;
import org.tmatesoft.svn.core.SVNLogEntry;
import org.tmatesoft.svn.core.SVNURL;
import org.tmatesoft.svn.core.auth.ISVNAuthenticationManager;
import org.tmatesoft.svn.core.internal.wc.DefaultSVNOptions;
import org.tmatesoft.svn.core.io.SVNRepository;
import org.tmatesoft.svn.core.io.SVNRepositoryFactory;
import org.tmatesoft.svn.core.wc.SVNWCUtil;public class SvnUtil {private static Logger log = LoggerFactory.getLogger(SvnUtil.class);private String userName = "userName "; //svn账号private String password = "password "; //svn密码private String urlString = "urlString "; //svnurlprivate String tempDir = System.getProperty("java.io.tmpdir"); //临时文件private DefaultSVNOptions options = SVNWCUtil.createDefaultOptions(true);private SVNRepository repos;private ISVNAuthenticationManager authManager;public SvnUtil() {try {init();} catch (SVNException e) {e.printStackTrace();}}public void init() throws SVNException{log.info("开始加载");authManager = SVNWCUtil.createDefaultAuthenticationManager(new File(tempDir+"/auth"), userName, password.toCharArray());options.setDiffCommand("-x -w");repos = SVNRepositoryFactory.create(SVNURL.parseURIEncoded(urlString));repos.setAuthenticationManager(authManager);Calendar calendar = Calendar.getInstance();// 将日期减一天calendar.add(Calendar.DAY_OF_YEAR, -1);Date yesterday = calendar.getTime();System.out.println("昨天的日期: " + yesterday);SVNLogEntry[] list = getLogByTime(yesterday, new Date());for (SVNLogEntry logEntry : list) {log.info(logEntry.toString());}log.info("init completed");}/**获取一段时间内,所有的commit记录* @param st	开始时间* @param et	结束时间* @return* @throws SVNException*/public SVNLogEntry[] getLogByTime(Date st, Date et) throws SVNException{long startRevision = repos.getDatedRevision(st);long endRevision = repos.getDatedRevision(et);@SuppressWarnings("unchecked")Collection<SVNLogEntry> logEntries = repos.log(new String[]{""}, null,startRevision, endRevision, true, true);SVNLogEntry[] svnLogEntries = logEntries.toArray(new SVNLogEntry[0]);SVNLogEntry[] svnLogEntries1 = null;if(svnLogEntries.length==0){svnLogEntries1 = Arrays.copyOf(svnLogEntries, svnLogEntries.length);}else{svnLogEntries1 = Arrays.copyOf(svnLogEntries, svnLogEntries.length-1);}return svnLogEntries1;}}

查询结果:

15:51:14.035 [main] INFO com.tengzhi.common.dao.SvnUtil - 开始加载
昨天的日期: Tue Apr 22 15:51:14 CST 2025
15:51:15.349 [main] INFO com.tengzhi.common.dao.SvnUtil - 107074
svn:log=feat(common): 增加产品编码搜索功能并调整界面布局
svn:author=zhumengmeng
svn:date=2025-04-22T07:15:27.638278Z
M /main/resources/static/common/gdselectlist.html
M /main/resources/static/xcgd/scll/sclladd.html
M /main/java/com/tengzhi/common/dao/ScllwindowDao.java
15:51:15.349 [main] INFO com.tengzhi.common.dao.SvnUtil - 107075
svn:log=feat(xcgd): 修改生产工序中出现的问题
svn:author=zhumengmeng
svn:date=2025-04-22T08:29:41.425038Z
M /main/resources/static/xcgd/blcl/blcladd.html
M /main/resources/static/xcgd/blcl/blclview.html
M /main/java/com/tengzhi/common/dao/ScllwindowDao.java
M /main/resources/static/common/scllwindow.html
M /main/java/com/tengzhi/xcgd/dao/BlclDao.java
15:51:15.349 [main] INFO com.tengzhi.common.dao.SvnUtil - 107080
svn:log=调整
svn:author=zlf
svn:date=2025-04-22T09:27:12.986773Z
M /main/java/com/tengzhi/cwgl/dao/CksfcsDao.java
15:51:15.352 [main] INFO com.tengzhi.common.dao.SvnUtil - 107082
svn:log=提交
svn:author=zyj
svn:date=2025-04-22T09:34:02.707044Z
M /main/java/com/tengzhi/clcg/dao/SyncCgddDao.java
15:51:15.352 [main] INFO com.tengzhi.common.dao.SvnUtil - 107083
svn:log=修改不良分类展示
svn:author=zhumengmeng
svn:date=2025-04-22T09:39:34.097090Z
M /main/resources/static/xcgd/blcl/blcladd.html
M /main/java/com/tengzhi/xcgd/dao/BlclDao.java
15:51:15.352 [main] INFO com.tengzhi.common.dao.SvnUtil - 107091
svn:log=提交
svn:author=zyj
svn:date=2025-04-22T10:55:07.026351Z
M /main/java/com/tengzhi/clcg/dao/SyncCgddDao.java
15:51:15.352 [main] INFO com.tengzhi.common.dao.SvnUtil - 107101
svn:log=菜单和功能模块 绑定的编码修改为平台
svn:author=gaobg
svn:date=2025-04-23T02:06:15.374327Z
M /main/java/com/tengzhi/base/security/SuccessHandler.java
M /main/java/com/tengzhi/xtgl/dao/GnpzMkDao.java
M /main/java/com/tengzhi/base/model/X_userinfo.java
M /szxtpt/tzwalechat.iml
M /main/resources/static/cwgl/gszt/gsztadd.html
M /main/java/com/tengzhi/xtgl/dao/RoleDao.java
M /main/java/com/tengzhi/system/dao/UserDetailsServiceImpl.java
M /main/java/com/tengzhi/system/dao/SysMainDao.java
M /main/resources/application-jdbc.yml
15:51:15.352 [main] INFO com.tengzhi.common.dao.SvnUtil - 107107
svn:log=调整授权 永久授权不判断时间
svn:author=guol
svn:date=2025-04-23T02:32:18.531097Z
M /main/java/com/tengzhi/system/dao/HomeDao.java
15:51:15.352 [main] INFO com.tengzhi.common.dao.SvnUtil - 107116
svn:log=修改最大最小值数据类型
svn:author=zhumengmeng
svn:date=2025-04-23T03:54:24.512469Z
M /main/java/com/tengzhi/base/model/E_js_jyjl.java
15:51:15.352 [main] INFO com.tengzhi.common.dao.SvnUtil - 107129
svn:log=提交
svn:author=zyj
svn:date=2025-04-23T06:44:21.460201Z
M /main/java/com/tengzhi/bjxs/dao/BjhtDao.java
15:51:15.352 [main] INFO com.tengzhi.common.dao.SvnUtil - 107130
svn:log=feat(scllwindow):增加工序展示控制
svn:author=zhumengmeng
svn:date=2025-04-23T06:45:58.360059Z
M /main/resources/static/common/gdselectlist.html
M /main/java/com/tengzhi/common/dao/ScllwindowDao.java
M /main/resources/static/common/scllwindow.html
15:51:15.352 [main] INFO com.tengzhi.common.dao.SvnUtil - init completedProcess finished with exit code 0

2.获取具提交的内容片段

package com.tengzhi.common.dao;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.tmatesoft.svn.core.*;
import org.tmatesoft.svn.core.auth.ISVNAuthenticationManager;
import org.tmatesoft.svn.core.internal.wc.DefaultSVNOptions;
import org.tmatesoft.svn.core.io.SVNRepository;
import org.tmatesoft.svn.core.io.SVNRepositoryFactory;
import org.tmatesoft.svn.core.wc.SVNDiffClient;
import org.tmatesoft.svn.core.wc.SVNRevision;
import org.tmatesoft.svn.core.wc.SVNWCUtil;import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.UnsupportedEncodingException;
import java.util.Calendar;
import java.util.Collection;
import java.util.Date;
import java.util.Map;public class SvnUtil {private static Logger log = LoggerFactory.getLogger(SvnUtil.class);private String userName = "guol"; // SVN账号private String password = "gl1234"; // SVN密码private String urlString = "https://svn.tengzhicn.com:8089/svn/nbtzrepository/szxtpt/"; // 仓库根URLprivate String tempDir = System.getProperty("java.io.tmpdir"); // 临时文件目录private DefaultSVNOptions options = SVNWCUtil.createDefaultOptions(true);private SVNRepository repos;private ISVNAuthenticationManager authManager;private SVNDiffClient diffClient;public SvnUtil() {try {init();} catch (SVNException e) {log.error("初始化失败", e);}}public void init() throws SVNException {log.info("开始初始化SVN工具");authManager = SVNWCUtil.createDefaultAuthenticationManager(new File(tempDir + "/auth"), userName, password.toCharArray());options.setDiffCommand("-x -w");repos = SVNRepositoryFactory.create(SVNURL.parseURIEncoded(urlString));repos.setAuthenticationManager(authManager);// 初始化Diff客户端diffClient = new SVNDiffClient(authManager, options);diffClient.setIgnoreExternals(true);Calendar calendar = Calendar.getInstance();calendar.add(Calendar.DAY_OF_YEAR, -1);Date yesterday = calendar.getTime();log.info("检索昨天的提交记录,日期: {}", yesterday);SVNLogEntry[] entries = getLogByTime(yesterday, new Date());for (SVNLogEntry entry : entries) {log.info("提交版本: {} 作者: {} 日期: {}", entry.getRevision(), entry.getAuthor(), entry.getDate());processLogEntryDiffs(entry); // 处理差异}log.info("初始化完成");}/*** 获取指定时间范围内的提交日志*/public SVNLogEntry[] getLogByTime(Date start, Date end) throws SVNException {long startRevision = repos.getDatedRevision(start);long endRevision = repos.getDatedRevision(end);Collection<SVNLogEntry> logEntries = repos.log(new String[] { "src/main/java/com" }, null,startRevision, endRevision, true, true);return logEntries.toArray(new SVNLogEntry[0]);}/*** 处理单个日志条目的代码差异*/private void processLogEntryDiffs(SVNLogEntry logEntry) {long revision = logEntry.getRevision();long prevRevision = Math.max(revision - 1, 0); // 确保版本号不小于0Map<String, SVNLogEntryPath> changedPaths = logEntry.getChangedPaths();for (String pathKey : changedPaths.keySet()) {SVNLogEntryPath entryPath = changedPaths.get(pathKey);String path = entryPath.getPath();try {SVNURL fileUrl = SVNURL.parseURIEncoded(urlString).appendPath(path, false);ByteArrayOutputStream diffOutput = new ByteArrayOutputStream();// 生成差异diffClient.doDiff(fileUrl, SVNRevision.create(prevRevision), SVNRevision.create(revision),SVNRevision.create(revision),SVNDepth.EMPTY,true,diffOutput);String diffContent = diffOutput.toString("UTF-8");log.info("文件路径: {}\n操作类型: {}\n差异内容:\n{}",path, entryPath.getType(), diffContent);} catch (SVNException e) {log.error("无法获取差异: {}", e.getErrorMessage().getMessage());} catch (UnsupportedEncodingException e) {log.error("编码错误: {}", e.getMessage());}}}
}

相关文章:

JAVA程序获取SVN提交记录

1.获取文件提交记录 private String userName "userName "; //svn账号 private String password "password "; //svn密码 private String urlString "urlString "; //svnurl 换成自己对应的svn信息 package com.tengzhi.common.dao;import…...

从检索到生成:RAG 如何重构大模型的知识边界?

目录 一、技术演进图谱说明 二、RAG 技术概述 &#xff08;一&#xff09;核心思想说明 &#xff08;二&#xff09;RAG 发展路径与研究范式 三、Naive RAG&#xff1a;最基础的检索增强生成范式 &#xff08;一&#xff09;Naive RAG 的标准流程 1. 索引&#xff08;In…...

rabbitmq-spring-boot-start版本优化升级

文章目录 1.前言2.优化升级内容3.依赖4.使用4.1发送消息代码示例4.2消费监听代码示例4.3 brock中的消息 5.RabbmitMq的MessageConverter消息转换器5.1默认行为5.2JDK 序列化的缺点5.3使用 JSON 进行序列化 6.总结 1.前言 由于之前手写了一个好用的rabbitmq-spring-boot-start启…...

SVN仓库突然没有权限访问

如果svn仓库突然出现无法访问的情况&#xff0c;提示没有权限&#xff0c;所有账号都是如此&#xff0c;新创建的账号也不行。 并且会突然提示要输入账号密码。 出现这个情况时&#xff0c;大概率库里面的文件有http或者https的字样&#xff0c;因为单独给该文件添加权限导致…...

vue实现静默打印pdf

浏览器中想要打印文件&#xff0c;不依靠浏览器自带的打印窗口&#xff0c;想要实现静默打印&#xff08;也就是不弹出打印对话框&#xff09;&#xff0c;同时控制打印份数的功能&#xff0c;一种方式是使用vue-plugin-hiprint和本地安装客户端electron-hiprint 本来是浏览器去…...

如何开启远程桌面连接外网访问?异地远程控制内网主机

实现远程桌面连接外网访问&#xff0c;能够突破地域限制&#xff0c;随时随地访问远程计算机&#xff0c;满足远程办公、技术支持等多种需求。下面为你详细介绍开启方法。 一、联网条件 确保本地计算机和远程计算机都有稳定的网络连接&#xff0c;有联网能上网。 二、开启远程…...

数据结构与算法学习笔记(Acwing提高课)----动态规划·数字三角形

数据结构与算法学习笔记----动态规划数字三角形 author: 明月清了个风 first publish time: 2025.4.23 ps⭐️终于开始提高课的题啦&#xff0c;借的人家的号看&#xff0c;以后给y总补票叭&#xff0c;提高课的题比之前的多很多啊哈哈哈哈&#xff0c;基本上每种题型都对应了…...

RK3568平台开发系列讲解(调试篇)debugfs文件系统及常见调试节点介绍

更多内容可以加入Linux系统知识库套餐(教程+视频+答疑) 🚀返回专栏总目录 文章目录 一、什么是debugfs二、/proc/filesystems三、debugfs的挂载3.1、fstab 的文件结构3.2、手动挂载与卸载四、debugfs 常见目录有哪些4.1、/sys/kernel/debug/gpio4.2、/sys/kernel/debug/…...

数字化转型避坑指南:中钧科技如何用“四个锚点”破解转型深水区

数字化转型浪潮下&#xff0c;企业常陷入四大典型陷阱&#xff1a;跟风式投入、数据沼泽化、流程伪在线、安全裸奔化。中钧科技旗下产品以“经营帮”平台为核心&#xff0c;通过针对性方案帮助企业绕开深坑。 陷阱一&#xff1a;盲目跟风&#xff0c;为数字化而数字化 许…...

数字化转型下的批发订货系统:降本增效的关键路径

随着数字化转型的不断深入&#xff0c;越来越多的企业开始拥抱现代化的技术和工具&#xff0c;以提升业务效率、降低运营成本。批发行业&#xff0c;作为一个高度依赖库存和订单管理的行业&#xff0c;数字化转型尤为关键。传统的批发订货系统存在信息不对称、操作复杂、效率低…...

一 、环境的安装 Anaconda + Pycharm + PaddlePaddle

《从零到一实践&#xff1a;系统性学习生成式 AI(NLP)》 一 、环境的安装 Anaconda Pycharm PaddlePaddle 1. Anaconda 软件安装 Anaconda 软件安装有大量的教程&#xff0c;此处不在说明&#xff0c;安装完成之后界面如下&#xff1a; 2. 创建 Anaconda 虚拟环境 Paddl…...

Dhtmlx Gantt教程

想实现的效果 插件安装&#xff1a; npm i dhtmlx-gantt使用该插件的时候&#xff0c;直接导入包和对应的样式即可&#xff1a; import { Gantt} from "dhtmlx-gantt"; import "dhtmlx-gantt/codebase/dhtmlxgantt.css";也可以安装试用版本&#xff0c;…...

大模型框架技术全景与下一代架构演进

‌一、大模型框架概述 ‌大模型框架‌是支撑千亿级参数模型训练、推理及产业落地的技术底座&#xff0c;涵盖分布式计算、高效内存管理、多模态融合等核心模块。从GPT-3到Gemini Ultra&#xff0c;大模型框架的迭代推动AI从“作坊式实验”迈向“工业化生产”。据Gartner预测&a…...

官方不存在tomcat10-maven-plugin插件

Maven 中央仓库中没有官方的tomcat10-maven-plugin。Apache Tomcat Maven 插件项目目前仅对以下插件提供官方支持&#xff1a; tomcat6-maven-plugin tomcat7-maven-plugin tomcat8-maven-plugin tomcat9-maven-plugin 如果你想使用 cargo 命令来跑支持 Jakarta EE 的 Tomcat 1…...

vue3 el-table 右击

在 Vue 3 中使用 Element Plus 的 <el-table> 组件时&#xff0c;如果你想实现右击&#xff08;右键点击&#xff09;事件的处理&#xff0c;你可以通过监听 contextmenu 事件来实现。contextmenu 事件在用户尝试打开上下文菜单&#xff08;通常是右键点击&#xff09;时…...

第一节:核心概念高频题-Vue3响应式原理与Vue2的区别

Vue2&#xff1a;基于Object.defineProperty监听对象属性&#xff0c;需手动处理数组方法重写 Vue3&#xff1a;采用Proxy代理实现全量响应式&#xff0c;支持动态新增属性和深层嵌套对象监听 一、实现机制对比 1. Vue2&#xff1a;基于 Object.defineProperty • 原理&#…...

【锂电池剩余寿命预测】CNN卷积神经网络锂电池剩余寿命预测(Pytorch完整源码和数据)

目录 效果一览程序获取程序内容代码分享效果一览 程序获取 获取方式一:文章顶部资源处直接下载:...

web刷题笔记

2024isctf ezrce 禁用了一些关键字符&#xff0c;查询函数&#xff0c;系统执行函数&#xff0c;执行函数都有&#xff0c;空格也和斜杆也禁用了&#xff0c;但是其他一些很大一部分字符都没有禁用&#xff0c;属于关键词禁用的类型&#xff0c;正常的步骤是去查一下列表&#…...

基于FPGA 和DSP 的高性能6U VPX 采集处理板

基于FPGA 和DSP 的高性能6U VPX 采集处理板&#xff0c;是一款处理架构采用FPGADSP 的高性能的6U VPX 采集处理板。板载4 片高速ADC 共8 个采集通道&#xff0c;可支持8 路采样率最高2.6Gsps/14Bit 的模拟信号通道。 板卡FPGA 采用Xilinx 公司KU 系列的XCKU115-2FLVF1924I&…...

uniapp中使用<cover-view>标签

文章背景&#xff1a; uniapp中遇到了原生组件(canvas)优先级过高覆盖vant组件 解决办法&#xff1a; 使用<cover-view>标签 踩坑&#xff1a; 我想实现的是一个vant组件库中动作面板的效果&#xff0c;能够从底部弹出框&#xff0c;让用户进行选择&#xff0c;我直…...

【JavaScript】详讲运算符--算术运算符

1、运算符简介 运算符也叫操作符&#xff0c;通过运算符可以对一个或多个值进行运算&#xff0c;比如&#xff1a;typeof就是运算符&#xff0c;可以来获得一个值的类型&#xff0c;它会将该值的类型以字符串的形式返回,即&#xff1a;typeof 变量名的结果为字符串类型。 <…...

.NET 6 + Dapper + User-Defined Table Type

大家都知道&#xff0c;对于SQL Server IN是有限制条件的&#xff0c;如果IN里面的内容过多&#xff0c;在执行的时候会被自动截断&#xff0c;因而导致查询到的结果不是实际需要的结果。 select * from Payments where Id in (1,2,3,4,...) 为了解决上面的限制&#xff0c;可以…...

使用 Conda 创建新环境

使用 Conda 创建新环境 在使用 Conda 进行包管理和环境隔离时&#xff0c;创建新环境是一个非常常见的操作。通过创建独立的环境&#xff0c;可以避免不同项目之间的依赖冲突&#xff0c;并且能够灵活地管理各个项目的运行环境。 以下是使用 Conda 创建和管理新环境的详细步骤…...

数据为基:机器学习中数值与分类数据的处理艺术及泛化实践

数据为基&#xff1a;机器学习中数值与分类数据的处理艺术及泛化实践 摘要 在机器学习实践中&#xff0c;数据质量对模型效果的影响往往超过算法选择。本文通过详实的案例解析&#xff0c;系统阐述数值型数据与分类数据的特征工程处理方法&#xff0c;揭示数据预处理对模型泛…...

Docker镜像与容器概念解析

Docker镜像与容器概念解析 -更适合大学生宝宝体制的docker学习指南 一、Docker镜像&#xff1a;应用程序的基因库 &#xff08;1&#xff09;本质特征&#xff1a;镜像是一个只读的二进制文件包&#xff0c;相当于应用程序的”基因图谱”。就像生物体的DNA决定了生物特征&a…...

基于GMM的语音识别

语音识别是近年来发展非常迅速的一项计算机智能技术&#xff0c;广泛应用在语音控制、身份识别等多个领域。本次项目主要研究语音识别的预处理过程和特征参数的提取环节。通过对原始语音信号进行预加重和分帧、加窗&#xff0c;滤除低频干扰&#xff0c;提升对语音识别有用的部…...

K8S安全认证

一。用户认证的基本框架 在K8S集群中&#xff0c;客户端通常有两类&#xff1a; 1.User Account&#xff1a;一般独立于K8S之外的其他服务管理的用过户账号 2.Service Account&#xff1a;K8S管理的账号&#xff0c;用于为Pod中的服务进程在访问K8S提供身份标识 ApiServer是…...

咖啡机语音芯片方案-WTN6040FP-14S直接驱动4欧/3W喇叭-大功率输出

一、开发背景 随着智能家居市场的快速发展和消费者对家电产品交互体验要求的不断提高&#xff0c;语音提示功能已成为现代咖啡机产品的重要卖点之一。传统咖啡机仅依靠指示灯和简单蜂鸣器提示&#xff0c;无法满足用户对操作引导、状态反馈和个性化体验的需求。 WTN6040FP-14大…...

Vue3集成百度实时语音识别

示例 SpeechRecognitionModal.vue 组件 <template><transition name"modal-fade"><div v-if"isOpen" class"modal-overlay" click.self"handleOverlayClick"><div class"modal-container"><div…...

C# 设计原则总结

跟着视频学习的&#xff0c;记录一下最后的总结。 接口隔离&#xff1a; 单一职责&#xff1a; 里氏替换&#xff1a; 依赖倒置; 迪米特法则; 开闭原则&#xff1a;...

zkPass案例实战之合约篇

目录 一、contracts/contracts/ProofVerifier.sol 1. License 和 Solidity 版本 2. 导入依赖 3. 合约声明和默认分配器地址 4. 验证证明 5. 验证分配器签名 6. 验证验证者签名 7. 签名前缀处理 8. 签名恢复 总结 二、contracts/contracts/SampleAttestation.sol 1. …...

docker学习笔记5-docker中启动Mysql的最佳实践

一、查找目录文件位置 1、mysql的配置文件路径 /etc/mysql/conf.d 2、mysql的数据目录 /var/lib/mysql 3、环境变量 4、端口 mysql的默认端口3306。 二、启动命令 1、启动命令说明 docker run -d -p 3306:3306 -v /app/myconf:/etc/mysql/conf.d # 挂载配置目录 -v…...

彻底禁用windows的语音识别快捷键win+ctrl+s

工作中经常使用ctrls保存&#xff0c;但是经常误触win&#xff0c;结果弹出如下对话框&#xff0c;甚是闹心&#xff1a; 搜索网络&#xff0c;问AI&#xff0c;竟然没有一个好用的不依赖常驻内存软件的办法&#xff0c;最终经过探索与验证&#xff0c;总算是彻底解决了此问题&…...

大数据学习(112)-Analytic函数集

&#x1f34b;&#x1f34b;大数据学习&#x1f34b;&#x1f34b; &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 用力所能及&#xff0c;改变世界。 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4dd;支持一…...

文档构建:Sphinx全面使用指南 — 实战篇

文档构建&#xff1a;Sphinx全面使用指南 — 实战篇 Sphinx 是一款强大的文档生成工具&#xff0c;使用 reStructuredText 作为标记语言&#xff0c;通过扩展兼容 Markdown&#xff0c;支持 HTML、PDF、EPUB 等多种输出格式。它具备自动索引、代码高亮、跨语言支持等功能&#…...

欧拉环境(openEuler 22.03 LTS SP3)安装移动磐维数据库(PanWeiDB_V2.0-S2.0.2_B01)步骤

一、磐维数据库概述 中国移动磐维数据库&#xff08;ChinaMobileDB&#xff09;&#xff0c;简称“磐维数据库”&#xff08;PanWeiDB&#xff09;&#xff0c;是中国移动信息技术中心首个基于中国本土开源数据库打造的面向ICT基础设施的自研数据库产品。其产品内核能力基于华…...

【产品经理从0到1】产品规划

产品规划 已经知道要做什么功能&#xff0c;展示什么信息&#xff0c;那这些信息应该 以什么方式展现给用户&#xff1f; 信息架构的概念 一般的商场导览图&#xff0c;都有以下特征&#xff1a; • 每一层都由多个店铺组成&#xff1b; • 商场有出口&#xff0c;有入口&am…...

一篇文章学会开发第一个ASP.NET网页

*开发环境&#xff1a;Visual Studio 2022 ASP.NET Core 6.0* 一、开发环境准备 1.1 安装必备工具 Visual Studio 2022 Community&#xff08;免费版本&#xff09; .NET 6.0 SDK 验证安装&#xff1a;命令行执行 dotnet --version 显示6.0.x版本 1.2 创建新项目 打开VS…...

[架构之美]Ubuntu源码部署APISIX全流程详解(含避坑指南)

[架构之美]Ubuntu源码部署APISIX全流程详解(含避坑指南) 一、离线安装场景需求分析 1.1 典型应用场景 金融/政务内网环境生产环境安全合规要求边缘计算节点部署1.2 离线安装难点 #mermaid-svg-B25djI0XquaOb1HM {font-family:"trebuchet ms",verdana,arial,sans-s…...

【3】CICD持续集成-k8s集群中安装Jenkins-agent(主从架构)

一、背景&#xff1a; Jenkins Master/Slave架构&#xff0c;Master&#xff08;Jenkins本身&#xff09;提供Web页面让用户来管理项目和从节点&#xff08;Slave&#xff09;&#xff0c;项目任务可以运行在Master本机或者分配到从节点运行&#xff0c;一个Master可以关联多个…...

2024从Maven-MySQL-Nginx部署

1、IDEA配置全局Maven设置 第一步&#xff1a;File->Close Project返回到创建工程界面。 第二步&#xff1a;找到bulid---maven设置对应位置。 第三步&#xff1a;选中两栏后的Override---应用---关闭即可。 *************************************************************…...

MySQL运算符

目录 一、mysql运算符 1. 算数运算符 2. 比较运算符 2.1 等号运算符&#xff08;&#xff09; 2.2 不等于运算符 ! 3.非符号类型的运算符 3.1 空运算 IS NULL、 IS NOT NULL、 ISNULL 3.2 区间查询 BETWEEN 3.3 包含查询 IN、 NOT IN 3.4模糊查询LIKE 4. 逻辑运算符 4.1 AND(逻…...

什么是区块?

“区块”是区块链技术的基本组成部分&#xff0c;是加密货币交易的数字记录簿。一个区块就像是账本中的一页&#xff0c;详细记录了所有的交易细节。每个区块都包含基本信息&#xff0c;如最近的交易列表、标记区块创建时间的时间戳&#xff0c;以及称为“哈希值”的唯一加密代…...

爬虫学习——获取动态网页信息

对于静态网页可以直接研究html网页代码实现内容获取&#xff0c;对于动态网页绝大多数都是页面内容是通过JavaScript脚本动态生成(也就是json数据格式)&#xff0c;而不是静态的&#xff0c;故需要使用一些新方法对其进行内容获取。凡是通过静态方法获取不到的内容&#xff0c;…...

LSA六种类型

LAS --- 链路状态通告 链路状态类型、链路状态ID、通告路由器 --- LSA的三元组 --- 可以唯一标识出一条LSA Type --- OSPFv2中&#xff0c;常见的需要掌握LSA有6种 LS ID --- LSA的名字 --- 因为每一种LSA ID的生成方式都不相同&#xff0c;所以导致可能重复&#xff0c;则如…...

第七篇:linux之基本权限、进程管理、系统服务

第七篇&#xff1a;linux之基本权限、进程管理、系统服务 文章目录 第七篇&#xff1a;linux之基本权限、进程管理、系统服务一、基本权限1、什么是权限&#xff1f;2、为什么要有权限&#xff1f;3、权限与用户之间的关系&#xff1f;4、权限对应的数字含义5、使用chmod设定权…...

时序约束 记录

一、基础知识 1、fpga的约束文件为.fdc&#xff0c;synopsys的约束文件为.sdc。想通过fpga验证soc设计是否正确&#xff0c;可以通过syn工具(synplify)吃.fdc把soc code 转换成netlist。然后vivado P&R工具通过吃上述netlist、XDC 出pin脚约束、fdc时序约束三个约束来完成…...

fpga系列 HDL:跨时钟域同步 脉冲展宽同步 Pulse Synchronization

Pulse Synchronization 脉冲同步&#xff08;Pulse Synchronization&#xff09;是 FPGA 设计中处理跨时钟域信号传输的常见问题和关键细节。由于不同步的时钟域之间可能存在相位差或频率差异&#xff0c;可能会导致亚稳态问题或数据丢失。脉冲同步的主要目标是确保一个时钟域中…...

链表系列一>两数相加

目录 题目&#xff1a;解析&#xff1a;方法&#xff1a;代码&#xff1a;链表常用技巧&#xff1a; 题目&#xff1a; 链接: link 解析&#xff1a; 方法&#xff1a; 代码&#xff1a; /*** Definition for singly-linked list.* public class ListNode {* int val;* …...

MCP接入方式介绍

上一篇文章&#xff0c;我们介绍了MCP是什么以及MCP的使用。 MCP是什么&#xff0c;MCP的使用 接下来&#xff0c;我们来详细介绍一下MCP的接入 先看官网的架构图 上图的MCP 服务 A、MCP 服务 B、MCP 服务 C是可以运行在你的本地计算机&#xff08;本地服务器方式&#xff…...