【DevOps系列】构建Devops系统
开始介绍
那就着手开始干吧。先介绍一下我们的工具链。
主要工具:GitHub、Jenkins、Kubernetes、Ansible、Prometheus和JMeter
着手动
1. 设置GitHub作为源代码仓库
-
登录GitHub: 打开浏览器并访问 https://github.com,使用您的GitHub账户登录。
-
创建新的仓库: 登录后,您应该能看到GitHub的主页。点击页面右上角的 "+" 符号,然后选择 "New repository" 或直接在导航栏中找到 "Repositories" 并点击 "New"。
-
填写仓库信息: 在新弹出的页面中,您会被要求填写一些关于仓库的基本信息:
- Repository name: 输入仓库的名称。这将是您的项目在GitHub上的标识。
- Description: 可选地,您可以为仓库添加一个描述,解释其用途或内容。
- Visibility: 选择仓库的可见性。您可以选择 "Public"(公开)或 "Private"(私有)。私有仓库需要付费订阅。
- Add a README file: 选中此选项将自动为您的仓库添加一个README文件,这是仓库的默认说明文件。
- Add .gitignore: 如果适用,可以选择添加一个.gitignore文件,这将帮助您忽略特定类型的文件或目录,例如编译后的文件或操作系统特定的缓存文件。
- Add a license: 如果您的项目遵循某种开源许可证,这里可以选择添加一个许可证模板。
-
创建仓库: 填写完所有必要的信息后,点击页面底部的 "Create repository" 按钮。
-
初始化本地仓库: 创建仓库后,GitHub会显示初始化本地仓库的命令。您需要在本地机器上安装Git,并在您希望存放项目代码的目录中运行以下命令:
git init
初始化完成后,使用以下命令将本地仓库与GitHub仓库关联:
git remote add origin https://github.com/yourusername/your-reponame.git
-
推送代码到GitHub: 将您的代码添加到本地仓库中,然后使用以下命令将代码推送到GitHub:
git add . git commit -m "Initial commit" git push -u origin main
2. 配置Jenkins作为持续集成/持续交付服务器
步骤1: 安装Jenkins
- 下载Jenkins: 访问Jenkins官方网站 Download and deploy 下载适合您操作系统的Jenkins安装包。
- 安装Jenkins:
- Linux: 使用RPM或DEB包安装,或通过Docker容器运行。
- Windows: 下载Windows安装程序并运行。
- macOS: 可以通过Homebrew安装。
- 启动Jenkins: 根据您的操作系统,使用相应的命令或服务管理工具启动Jenkins。
- 初始化Jenkins: 第一次启动时,Jenkins会引导您完成初始化过程,包括解锁Jenkins和设置管理员密码。
步骤2: 配置Jenkins
A. 解锁Jenkins
- 获取初始管理员密码: Jenkins会提示您从
/var/lib/jenkins/
目录下的密钥文件中获取初始密码。 - 输入密码解锁: 在浏览器中输入密码解锁Jenkins。
B. 安装插件
- 安装推荐插件: Jenkins会推荐一组插件,选择 “Install” 安装它们。
- 安装额外插件: 根据项目需求,可能需要安装额外的插件,如 GitHub Plugin, Git Plugin, Kubernetes Plugin, Docker Pipeline Plugin 等。
C. 创建第一个管理员用户
- 设置用户名和密码: 创建一个新的管理员账户。
- 保存设置: 完成后,保存并完成初始化过程。
步骤3: 创建Jenkins Job
- 新建Job: 在Jenkins主页点击 “New Item”。
- 选择Job类型: 选择适合的类型,如 “Freestyle project” 或者 “Pipeline”。
- 配置Job:
- General: 给Job命名,添加描述。
- Source Code Management: 配置源代码管理,如 Git,指定仓库URL、分支等。
- Build Triggers: 设置触发构建的条件,如代码提交、定时任务等。
- Build Environment: 可以在这里设置环境变量或脚本。
- Build Steps: 添加构建步骤,如执行shell命令、调用Maven或Gradle命令等。
- Post-build Actions: 配置构建后的动作,如发送邮件通知、部署到Kubernetes等。
- Save: 保存配置。
步骤4: 集成GitHub
- 安装GitHub Plugin: 如果还未安装,确保已经安装了GitHub Plugin。
- 配置GitHub Credentials: 在Jenkins的全局配置中添加GitHub的访问令牌。
- 配置Job: 在Job配置中,选择GitHub作为源代码管理,并使用前面创建的Credentials。
步骤5: 测试和优化
- 手动触发构建: 开始手动触发构建,检查是否一切正常。
- 自动化构建: 设置自动化触发,如通过GitHub webhook来自动触发构建。
- 监控和日志: 查看构建日志,监控构建状态,确保没有错误发生。
步骤6: 部署至Kubernetes
- 配置Kubernetes Plugin: 安装Kubernetes Plugin,如果还未安装的话。
- 添加Kubernetes Credentials: 在Jenkins中添加Kubernetes集群的凭证。
- 配置部署步骤: 在Job的构建步骤中添加Kubernetes部署命令。
通过以上步骤,就可以配置好Jenkins作为持续集成和持续交付的服务器了。确保在实际操作中,根据您的具体需求和环境进行适当的调整。
3. 部署Kubernetes集群
配置Kubernetes集群,对于一个普通的团队而言,最划算的是直接使用云服务商提供的云服务器,这样也不用麻烦自己搭建。但是如果想要自己搭建的话,也是可以的,这边介绍使用kubeadm来搭建kubernetes集群。
准备工作
-
服务器准备:
- 确保每台服务器或虚拟机都满足Kubernetes的系统要求。
- 每台机器上都需要安装Linux操作系统(如CentOS、Ubuntu等)。
-
关闭防火墙和SELinux: 这是为了简化安装过程,但在生产环境中,你可能需要配置防火墙规则而不是完全禁用它。
sudo systemctl stop firewalld sudo systemctl disable firewalld sudo setenforce 0 sudo sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config
-
禁用Swap: Kubernetes不支持在有活跃swap的系统上运行。
sudo swapoff -a
安装Kubernetes
-
安装必要的软件包:
sudo apt-get update && sudo apt-get install -y apt-transport-https curl
-
添加Kubernetes的GPG密钥:
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
-
添加Kubernetes的APT仓库:
cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list deb https://apt.kubernetes.io/ kubernetes-xenial main EOF
-
安装Kubernetes的组件:
sudo apt-get update && sudo apt-get install -y kubelet kubeadm kubectl
配置和初始化主节点
-
初始化Master节点:
sudo kubeadm init --pod-network-cidr=<CIDR>
<CIDR>
应替换为你的Pod网络CIDR,例如10.244.0.0/16
。 -
设置kubeconfig: 初始化完成后,
kubeadm init
会输出一些信息,包括一个kubectl
配置文件的位置。你需要把这个配置文件复制到你的用户主目录下。mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
加入Worker节点
- 运行
kubeadm join
命令: 在初始化Master节点后,kubeadm init
会输出一个kubeadm join
命令。在每个Worker节点上运行这个命令以加入集群。
配置网络插件
- 安装网络插件: 通常使用像Flannel、Calico或Weave Net这样的网络插件。以Flannel为例:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
验证集群状态
-
检查节点状态:
kubectl get nodes
-
检查集群状态:
1kubectl cluster-info
以上步骤提供了搭建Kubernetes集群的基本流程。在生产环境中,你可能还需要考虑更多因素,如高可用性、安全性和性能优化等。另外,许多云服务商如AWS、Google Cloud和Azure都提供了托管的Kubernetes服务,可以大大简化部署和维护的复杂度。
4. 使用Ansible自动化部署
配置Ansible用于自动化部署通常涉及到以下几个关键步骤:
-
安装Ansible 首先确保Ansible已经安装在你的控制节点(即运行Ansible命令的机器)上。如果你还没有安装,可以在Linux系统上使用如下命令进行安装:
sudo apt update sudo apt install ansible
-
配置Ansible Ansible的配置文件通常位于
/etc/ansible/ansible.cfg
,你可以在此文件中修改一些默认配置,例如SSH超时时间、重试次数等。 -
创建Inventory文件 Inventory文件是用来定义目标主机列表以及它们的变量的地方。可以使用INI格式或YAML格式。例如:
[webservers] host1.example.com host2.example.com[dbservers] db1.example.com db2.example.com
或者使用动态inventory脚本。
-
编写Playbooks Playbooks是Ansible的核心,使用YAML语法编写,用来定义要执行的任务序列。例如,一个简单的playbook可能看起来像这样:
- name: Deploy web applicationhosts: webserversbecome: yestasks:- name: Update apt cacheapt:update_cache: yes- name: Install Apacheapt:name: apache2state: latest- name: Copy HTML filescopy:src: ./html_files/dest: /var/www/html/owner: www-datagroup: www-datamode: 0644- name: Restart Apacheservice:name: apache2state: restartedenabled: yes
-
执行Playbook 使用
ansible-playbook
命令来执行playbook:1ansible-playbook -i inventory.ini deploy_webapp.yml
-
使用Role和Modules Ansible的Role提供了一种组织playbook的方式,使得代码更加模块化和可重用。Modules则是Ansible执行特定任务的小型程序。
-
测试和调试 使用
--check
选项来测试playbook是否会按预期工作,而不做任何更改:1ansible-playbook -i inventory.ini deploy_webapp.yml --check
-
优化和维护 随着Ansible playbooks的增加,你可能需要优化它们以适应不断变化的需求,比如添加错误处理、使用变量、模板化配置文件等。
-
集成CI/CD 将Ansible集成到持续集成/持续交付(CI/CD)管道中,例如与Jenkins、GitLab CI/CD或CircleCI配合使用,以便在代码变更时自动执行部署。
-
安全和权限 确保Ansible操作的安全性,例如使用
become
关键字来提升权限,使用Vault加密敏感信息,以及限制谁可以执行Ansible操作。
5. 配置Prometheus和Grafana进行监控
1. 安装Prometheus
首先,你需要在一台服务器上安装Prometheus。Prometheus可以从其官方网站下载适用于不同操作系统的二进制文件。以下是在Linux上安装Prometheus的简要步骤:
下载Prometheus
wget https://github.com/prometheus/prometheus/releases/download/v<version>/prometheus-<version>.linux-amd64.tar.gz
tar xvfz prometheus-<version>.linux-amd64.tar.gz
移动文件到适当位置
sudo mv prometheus-<version>.linux-amd64/prometheus /usr/local/bin/prometheus
sudo mv prometheus-<version>.linux-amd64/promtool /usr/local/bin/promtool
sudo rm -rf prometheus-<version>.linux-amd64
创建配置文件
sudo nano /etc/prometheus/prometheus.yml
然后在配置文件中添加目标监控的job和scrape配置。
2. 启动Prometheus
启动Prometheus,通常使用systemd或作为Docker容器运行。
使用systemd
sudo nano /etc/systemd/system/prometheus.service
在文件中添加Prometheus服务的定义,保存并重新加载systemd配置,然后启动Prometheus。
sudo systemctl daemon-reload
sudo systemctl start prometheus
sudo systemctl enable prometheus
3. 安装Grafana
Grafana可以从其官方网站下载或通过包管理器安装。
使用APT安装
1sudo apt-get install -y adduser libfontconfig1
2wget https://dl.grafana.com/oss/release/grafana_8.0.0_amd64.deb
3sudo dpkg -i grafana_8.0.0_amd64.deb
启动Grafana
sudo systemctl start grafana-server
sudo systemctl enable grafana-server
4. 配置Grafana
打开浏览器,访问Grafana的Web界面,默认地址是 http://localhost:3000
,使用默认的用户名和密码登录(admin/admin)。
添加数据源
在Grafana中添加Prometheus作为数据源。
创建仪表板
使用Grafana创建新的仪表板,并添加图表来展示Prometheus收集的数据。
5. 配置Exporter和Target
如果需要监控特定的应用或服务,可能需要安装相应的Exporter。例如,对于Node Exporter、Blackbox Exporter或其他特定的服务Exporter。
6. 配置Alerting(可选)
如果需要配置警报,可以使用Prometheus的Alertmanager,配置规则并设定警报条件。
请注意,实际配置可能会因具体需求和环境而异,上述步骤提供了基础框架。在生产环境中,你可能需要更详细的规划,如安全性、持久存储、高可用性和扩展性等方面的考虑。
6. 使用JMeter进行性能测试
6. 运行测试计划
完成配置后,点击工具栏上的绿色三角形图标(运行按钮)或选择 "Run -> Start" 来运行测试计划。
7. 分析结果
测试运行完成后,使用 "View Results Tree" 或 "Aggregate Report" 等监听器来查看和分析测试结果。
-
1. 安装 Java
JMeter 是基于 Java 构建的,因此首先需要在你的计算机上安装 Java Development Kit (JDK)。你可以从 Oracle 的官方网站下载最新版本的 JDK,并按照指示进行安装。安装完成后,确保设置好环境变量,使
java
命令可以在命令行中全局调用。2. 下载和安装 JMeter
访问 Apache JMeter 的官方网站下载最新版本的 JMeter ZIP 包。解压缩下载的 ZIP 文件到你希望存放 JMeter 的目录。
3. 配置 JMeter 属性
在 JMeter 目录下的
bin
文件夹中,找到jmeter.properties
文件。使用文本编辑器打开它,你可以在这里配置各种 JMeter 的行为。例如,如果你想将界面语言更改为中文,可以取消注释language=zh_CN
这一行。4. 运行 JMeter
打开命令行或终端,导航到 JMeter 的
bin
目录,并运行jmeter.sh
(Unix/Linux)或jmeter.bat
(Windows)。这将启动 JMeter 的图形界面。5. 创建测试计划
一旦 JMeter 运行起来,你可以开始创建测试计划。测试计划是所有测试元素的容器,包括线程组、采样器、监听器等。
步骤如下:
-
新建测试计划:
- 选择 "Test Plan" 并从上下文菜单中选择 "Add -> Logic Controller -> Simple Controller" 来添加逻辑控制器(如果需要)。
-
添加线程组:
- 在测试计划或逻辑控制器下添加 "Thread Group",这将定义测试的并发用户数和循环次数。
-
添加采样器:
- 在线程组下添加 "Sampler",如 "HTTP Request Default",用于向目标服务器发送请求。
- 配置请求的 URL、方法、参数等。
-
添加监听器:
- 添加 "Listener" 如 "View Results Tree" 或 "Summary Report",以便观察和分析测试结果。
-
配置其他元素:
- 根据需要添加断言、定时器、配置元件等。
7. 整合所有组件
使用Jenkins Pipeline as Code功能,可以将构建、测试和部署的步骤整合成一个自动化流水线。下面是一个示例,展示了如何使用Declarative Pipeline语法来实现这一过程,该流水线包括构建、单元测试、集成测试、静态代码分析、打包、部署以及使用Prometheus和Grafana进行监控。
Jenkinsfile 示例
在项目根目录中创建一个名为 Jenkinsfile
的文件,然后输入以下内容:
pipeline {agent anyenvironment {DOCKER_REGISTRY = "your-docker-registry-url"IMAGE_NAME = "your-image-name"TAG = "${env.BUILD_NUMBER}"}stages {stage('Build') {steps {script {sh 'mvn clean package'}}}stage('Test') {steps {script {sh 'mvn test'}}post {always {junit 'target/surefire-reports/*.xml'}}}stage('Static Analysis') {steps {script {sh 'mvn checkstyle:checkstyle'}}post {always {archiveArtifacts 'target/checkstyle-result.xml'publishHTML target: [allowMissing: true,alwaysLinkToLastBuild: false,keepAll: true,reportDir: 'target/site/checkstyle',reportFiles: 'index.html',reportName: 'Checkstyle Report',reportTitles: '']}}}stage('Package') {steps {script {sh 'docker build -t ${IMAGE_NAME}:${TAG} .'sh 'docker tag ${IMAGE_NAME}:${TAG} ${DOCKER_REGISTRY}/${IMAGE_NAME}:${TAG}'sh 'docker push ${DOCKER_REGISTRY}/${IMAGE_NAME}:${TAG}'}}}stage('Deploy') {steps {script {sh 'kubectl apply -f kubernetes/deployment.yaml'sh 'kubectl apply -f kubernetes/service.yaml'}}}stage('Prometheus & Grafana Setup') {steps {script {sh 'kubectl apply -f monitoring/prometheus.yml'sh 'kubectl apply -f monitoring/grafana.yml'}}}}options {timeout(time: 30, unit: 'MINUTES')}triggers {pollSCM('*/30 * * * *')}
}
- Agent:指定流水线应该在哪个节点上运行。
- Environment:定义流水线中使用的环境变量。
- Stages:流水线中的各个阶段。
- Steps:每个阶段执行的具体操作。
- Post:阶段结束后执行的操作,例如收集测试报告、静态分析报告等。
- Options:定义流水线的额外选项,例如超时时间。
- Triggers:触发流水线执行的条件,例如定期执行或代码提交时。
这样,整条流水线就可以转起来了。当然,中间的细节,需要依照实际的情况进行调整,不过这边整个devops平台基本就是 完整了。
相关文章:
【DevOps系列】构建Devops系统
开始介绍 那就着手开始干吧。先介绍一下我们的工具链。 主要工具:GitHub、Jenkins、Kubernetes、Ansible、Prometheus和JMeter 着手动 1. 设置GitHub作为源代码仓库 登录GitHub: 打开浏览器并访问 https://github.com,使用您的GitHub账户登录。 创建…...

ABAP打印WORD的解决方案
客户要求按照固定格式输出到WORD模板中,目前OLE和DOI研究了均不太适合用于这种需求。 cl_docx_document类可以将WORD转化为XML文件,利用替换字符串方法将文档内容进行填充同 时不破坏WORD现有格式。 首先需要将WORD的单元格用各种预定义的字符进行填充,为后续替换作准备…...

emr部署hive并适配达梦数据库
作者:振鹭 一、达梦 用户、数据库初始化 1、创建hive的元数据库 create tablespace hive_meta datafile /dm8/data/DAMENG/hive_meta.dbf size 100 autoextend on next 1 maxsize 2048;2、创建数据库的用户 create user hive identified by "hive12345&quo…...

王春城:怎么用精益思维重塑企业战略规划格局?
当下,企业战略规划的灵活性和适应性变得至关重要。传统的战略规划方法往往过于僵化和静态,难以应对市场的不确定性和变化。因此,引入精益思维来重塑企业战略规划格局,成为了许多企业寻求突破和创新的途径。具体步骤如深圳天行健企…...

git reset
git reset [--soft | --mixed | --hard] [HEAD] 表格版 原始内容reset前reset命令reset后本地工作区暂存区本地仓库本地工作区暂存区本地仓库本地工作区暂存区本地仓库READMEREADMEREADMEREADMEREADMEREADME--soft HEADREADMEREADMEREADMEa.txta.txtb.txtb.txtb.txtb.txtc.tx…...
E17.【C语言】练习:sizeof和strlen的辨析
先回顾http://t.csdnimg.cn/aYHl6 1. char acX[] "abcdefg"; char acY[] { a,b,c,d,e,f,g}; 以下说法正确的是( ) A.数组acX和数组acY等价 B.数组acX和数组acY的长度相同 C.sizeof(acX)>sizeof (acY) D.strlen (acX)>strlen (acY) 分析:…...

便携气象站:科技助力气象观测
在科技飞速发展的今天,便携气象站以其轻便、高效、全面的特点,正逐渐改变着气象观测的传统模式。这款小巧而强大的设备,不仅为气象学研究和气象灾害预警提供了有力支持,更为户外活动、农业生产等领域带来了诸多便利。 便携气象站是…...

php 存储复杂的json格式查询(如:经纬度)
在开发中,有时我们可能存了一些复杂json格式不知道怎么查。我这里提供给大家参考下: 一、先上表数据格式(location字段的possiton经纬度以逗号分开的) {"title":"澳海文澜府","position":"11…...

UDP网口(1)概述
文章目录 1.计算机网络知识在互联网中的应用2.认识FPGA实现UDP网口通信3.FPGA实现UDP网口通信的方案4.FPGA实现UDP网口文章安排5.传送门 1.计算机网络知识在互联网中的应用 以在浏览器中输入淘宝网为例,介绍数据在互联网是如何传输的。我们将要发送的数据包称作A&a…...

Linux - 进程的概念、状态、僵尸进程、孤儿进程及进程优先级
进程基本概念 课本概念:在编程或软件工程的上下文中,进程通常被视为正在执行的程序的实例。当你启动一个应用程序时,操作系统会为这个程序创建一个进程。每个进程都有自己的独立内存空间,可以运行自己的指令序列,并可能…...
Gradle依赖报告:项目依赖树的X光机
Gradle依赖报告:项目依赖树的X光机 在复杂的软件项目中,依赖管理是确保应用正常构建和运行的关键。Gradle作为一个强大的构建工具,提供了依赖报告功能,帮助开发者分析和理解项目的依赖树。本文将详细介绍如何在Gradle中使用依赖报…...

开源XDR-SIEM一体化平台 Wazuh (1)基础架构
简介 Wazuh平台提供了XDR和SIEM功能,保护云、容器和服务器工作负载。这些功能包括日志数据分析、入侵和恶意软件检测、文件完整性监控、配置评估、漏洞检测以及对法规遵从性的支持。详细信息可以参考Wazuh - Open Source XDR. Open Source SIEM.官方网站 Wazuh解决…...
从零开始:构建基于深度学习的实时跌倒检测系统(UI界面+YOLO代码+数据集)
注意看文末的结局与声明 一、引言 1. 项目背景与动机 在老年人和高危职业环境中,跌倒是一种常见的事故,可能导致严重的伤害甚至致命。实时跌倒检测系统可以及时发现并报警,提供紧急救助。通过深度学习技术,可以提高跌倒检测的准…...
【策略模式在项目中的实际应用】
业务场景 最最近项目中有这样的一个业务场景: 用户下单->管理员审核->配送员接单->配送中->送达–>签收->完成 整个业务以这种流程的形式存在,每个流程状态的业务不一样,考虑到多种状态如果直接写一个接口肯定会嵌套太多…...

昇思25天学习打卡营第14天|计算机视觉
昇思25天学习打卡营第14天 文章目录 昇思25天学习打卡营第14天FCN图像语义分割语义分割模型简介网络特点数据处理数据预处理数据加载训练集可视化 网络构建网络流程 训练准备导入VGG-16部分预训练权重损失函数自定义评价指标 Metrics 模型训练模型评估模型推理总结引用 打卡记录…...
将json数组格式转成数组
start cmd [ 27 01 f7 01 24 38 02 b7 42 6e ee 2f 69 46 72 21 74 44 c4 22 7a 92 d8 6a de 66 61 b1 1e 2f de ee 5c 31 57 db df 01 31 2d c9 01 01 c0 FB ] set_ulpk {“jsonrpc”:“2.0”,“type”:2,“id”:0,“method”:“method”,“message”:{“VALUE”:[56,2,183,66…...

接口测试之测试原则、测试用例、测试流程详解
🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 一、接口的介绍 软件测试中,常说的接口有两种:图形用户接口(GUI,人与程序的接口)、应用程序编程接口&…...

证书上的服务器名错误解决方法
方法 win r ,输入mmc 点击文件——>添加/删除管理单元 找到证书——> 添加 根据自己的存放选择存放位置 点击控制台根节点——> 受信任的根证书颁发机构——>导入 若还出现问题,则参考https://blog.csdn.net/mm120138687/article/details/…...
前端:上传2进制图片
1、let formData new FormData(); 2、添加要传的字段:formData.append("avatarfile", data); (key,value) 3、上传文件 function uploadImg() {// 1定义FormDatalet formData new FormData();// 2添加字段formData.append("…...
web前端 React 框架面试200题(三)
面试题 65. 在使用 React Router时,如何获取当前页面的路由或浏览器中地址栏中的地址? 参考回答: 在当前组件的 props中,包含 location属性对象,包含当前页面路由地址信息,在 match中存储当前路由的参数等…...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill
视觉语言模型(Vision-Language Models, VLMs),为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展,机器人仍难以胜任复杂的长时程任务(如家具装配),主要受限于人…...
在 Spring Boot 项目里,MYSQL中json类型字段使用
前言: 因为程序特殊需求导致,需要mysql数据库存储json类型数据,因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...
提升移动端网页调试效率:WebDebugX 与常见工具组合实践
在日常移动端开发中,网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时,开发者迫切需要一套高效、可靠且跨平台的调试方案。过去,我们或多或少使用过 Chrome DevTools、Remote Debug…...
十九、【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建
【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建 前言准备工作第一部分:回顾 Django 内置的 `User` 模型第二部分:设计并创建 `Role` 和 `UserProfile` 模型第三部分:创建 Serializers第四部分:创建 ViewSets第五部分:注册 API 路由第六部分:后端初步测…...
Pydantic + Function Calling的结合
1、Pydantic Pydantic 是一个 Python 库,用于数据验证和设置管理,通过 Python 类型注解强制执行数据类型。它广泛用于 API 开发(如 FastAPI)、配置管理和数据解析,核心功能包括: 数据验证:通过…...
规则与人性的天平——由高考迟到事件引发的思考
当那位身着校服的考生在考场关闭1分钟后狂奔而至,他涨红的脸上写满绝望。铁门内秒针划过的弧度,成为改变人生的残酷抛物线。家长声嘶力竭的哀求与考务人员机械的"这是规定",构成当代中国教育最尖锐的隐喻。 一、刚性规则的必要性 …...

针对药品仓库的效期管理问题,如何利用WMS系统“破局”
案例: 某医药分销企业,主要经营各类药品的批发与零售。由于药品的特殊性,效期管理至关重要,但该企业一直面临效期问题的困扰。在未使用WMS系统之前,其药品入库、存储、出库等环节的效期管理主要依赖人工记录与检查。库…...
深入浅出WebGL:在浏览器中解锁3D世界的魔法钥匙
WebGL:在浏览器中解锁3D世界的魔法钥匙 引言:网页的边界正在消失 在数字化浪潮的推动下,网页早已不再是静态信息的展示窗口。如今,我们可以在浏览器中体验逼真的3D游戏、交互式数据可视化、虚拟实验室,甚至沉浸式的V…...
跨平台商品数据接口的标准化与规范化发展路径:淘宝京东拼多多的最新实践
在电商行业蓬勃发展的当下,多平台运营已成为众多商家的必然选择。然而,不同电商平台在商品数据接口方面存在差异,导致商家在跨平台运营时面临诸多挑战,如数据对接困难、运营效率低下、用户体验不一致等。跨平台商品数据接口的标准…...