自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 收藏
  • 关注

原创 一文读懂flask--gunicorn是如何启动flask应用

在了解了开发模式下flask是如何启动,并且是如何监听请求,在收到请求后又是怎么处理请求之后,接下来进一步了解在生产环境中最常用的gunicorn是如何启动、如何监听请求,并且保证一个请求只会被一个worker处理,而不会被多个worker处理,以及woker又是如何将请求分发到flask应用中的,同时这里也会提供一个简单的示例演示如何为每一个woker添加ros的初始化节点用以保证对外暴露的接口能够正常通过ros服务进行通信。

2024-08-28 15:46:45 1475

原创 一文读懂flask

在实际工作中遇到了需要在通过gunicorn启动flask应用,并在gunicorn启动的每个woker之前为每个woker初始化ros节点信息,但在改造的过程中遇到通过worker数指定节点名称时多次初始化节点时只有一个woker的节点能够初始化成功,因此激发了我去了解gunicorn是如何启动flask应用?并且收到请求后事如何将请求分发给flask应用?以及是如何做到多个woker同时监听同一个端口,又是如何做到只有一个worker处理请求的?接下来会通过分析flask和gunicorn源码解决这些问

2024-08-28 10:21:38 1073

原创 ROS学习教程-第五篇(机器人仿真系统)

机器人操作系统学习、开发与测试过程中,会遇到诸多问题,比如:场景1:机器人一般价格不菲,学习ROS要购买一台机器人吗?场景2:机器人与之交互的外界环境具有多样性,如何实现复杂的环境设计?场景3:测试时,直接将未经验证的程序部署到实体机器人运行,安全吗?在诸如此类的场景中,ROS中的仿真就显得尤为重要了。

2024-07-26 16:43:47 1276

原创 ROS学习教程-第四篇(ROS常用组件)

显示是不行的,这中间需要一个转换过程。现有坐标系统,父级坐标系统 world,下有两子级系统 son1,son2,son1 相对于 world,以及 son2 相对于 world 的关系是已知的,求 son1原点在 son2中的坐标,又已知在 son1中一点的坐标,要求求出该点在 son2 中的坐标。现有一移动式机器人底盘,在底盘上安装了一雷达,雷达相对于底盘的偏移量已知,现雷达检测到一障碍物信息,获取到坐标分别为(x,y,z),该坐标是以雷达为参考系的,如何将这个坐标转换成以小车为参考系的坐标呢?

2024-07-26 16:10:14 631

原创 ROS学习教程--第三篇 (launch文件编写)

launch 文件是一个 XML 格式的文件,可以启动本地和远程的多个节点,还可以在参数服务器中设置参数。

2024-04-30 10:47:39 1202

原创 ROS学习教程--第二篇(服务通信)

ROS master(管理者)Server(服务端)Client(客户端)ROS Master 负责保管 Server 和 Client 注册的信息,并匹配话题相同的 Server 与 Client ,帮助 Server 与 Client 建立连接,连接建立后,Client 发送请求信息,Server 返回响应信息。整个流程由以下步骤实现:1.Server注册Server 启动后,会通过RPC在 ROS Master 中注册自身信息,其中包含提供的服务的名称。

2024-04-29 19:56:29 884

原创 ROS学习教程--第一篇(初试ROS)

上述命令,会在工作空间下生成一个功能包,该功能包依赖于 roscpp、rospy 与 std_msgs,其中roscpp是使用C++实现的库,而rospy则是使用python实现的库,std_msgs是标准消息库,创建ROS功能包时,一般都会依赖这三个库实现。该文件定义有关软件包的属性,例如软件包名称,版本号,作者,维护者以及对其他catkin软件包的依赖性。在自定义包basic_correspondence的src目录下创建person_talker.py,编辑以下内容。

2024-04-29 17:11:16 1177

原创 langchain学习记录(1)

或者使用conda虚拟环境安装(需要提前切换到相应的虚拟环境)同时还需要安装你要使用的基础模型相应的库,我这里以openai为例,使用pip或者conda安装openai的SDK使用conda。

2023-12-12 18:19:56 611

原创 kubernetes-1.18.8-UOS-龙芯mips64le架构适配

kubernetes-1.18.8-UOS-龙芯mips64le架构适配一.适配环境操作系统:UOS 20CPU架构:mips64le服务器厂家:K8S版本:v1.18.8docker版本:docker-ce 19.03二.适配步骤1. 安装docker由于UOS之前已与docker做过适配,因此可通过uos官方的软件源,安装docker,官方提供给的版本为docker-ce 19.03,若需要其他版本,需要自行进行源码编译安装,本文档仅提供使用uos官方软件源进行安装:apt-get

2023-12-12 16:45:08 1890

原创 用python实现一个分布式锁

setnx方法会尝试在Redis中设置一个键值对,如果该键不存在,则设置成功并返回True,否则设置失败并返回False。在释放锁时,我们使用Redis的delete方法将键值对从Redis中删除,并将locked属性设置为False。在获取锁时,我们使用了一个while循环不断地尝试获取锁,直到成功或者超时为止。如果当前锁已被其他进程或者机器获取,则会在Redis中获取锁的过期时间,并判断该时间是否已经过期。在获取锁时,我们使用了Lock类的acquire方法来获取锁,并将锁设置为临时节点。

2023-04-15 14:58:26 733

原创 Velero 备份集群数据代码解读

Velero 备份集群数据代码解读1.介绍Velero(以前称为Heptio Ark)可以为您提供了备份和还原Kubernetes集群资源和持久卷的能力,你可以在公有云或本地搭建的私有云环境安装Velero,可以为你提供以下能力:备份集群数据,并在集群故障的情况下进行还原;将集群资源迁移到其他集群;将您的生产集群复制到开发和测试集群;Velero包含:在集群上运行的服务器端;在本地运行的命令行客户端;2.工作原理每个Velero的操作(如backup,schdule,restor

2021-04-22 09:34:51 723

原创 Velero安装与使用手册

Velero安装与使用手册1.Velero简介1.1 概览Velero(以前称为Heptio Ark)可以为您提供了备份和还原Kubernetes集群资源和持久卷的能力,你可以在公有云或本地搭建的私有云环境安装Velero,可以为你提供以下能力:备份集群数据,并在集群故障的情况下进行还原;将集群资源迁移到其他集群;将您的生产集群复制到开发和测试集群;Velero包含:在集群上运行的服务器端;在本地运行的命令行客户端;1.2 Velero工作原理每个Velero的操作(如按需备份

2021-04-16 13:57:28 7445 12

原创 使用KubeSphere的应用商店在k8s中部署应用过程代码解读

使用KubeSphere的应用商店在k8s中部署应用过程代码解读1.kubesphere应用商店工作原理图以根据应用市场的应用模板部署实例为例:1.用户通过KubeSphere API发起部署实例请求;2.由KuveSphere API路由请求到Openpitrix API,发起创建Cluster请求;3.Openpitrix中的Cluster Service收到请求后,向Job Service发起创建Cluster的Job;4.Job Controler监听到新的Job被创建,解析Job类型

2021-04-01 18:53:51 1083

原创 k8s 对接ceph并使用StorageClass动态创建pvc

k8s 对接ceph并使用StorageClass创建动态pvc前提条件,已经安装ceph和k8s,具体环境信息如下:一. 服务器环境操作系统:centos 7.6ceph版本:14.2.10(nautilus)k8s版本:v1.18.0arch: ARM64GO版本:go1.14.6docker版本:19.03.12在k8s中使用volume主要有两种使用方式,一种的静态方法,一种是动态方法,本文主要介绍动态方法。k8s集群默认不支持动态创建pvc,官方推出了external-sto

2020-08-27 15:57:34 5111 8

原创 kubernetes v1.18.6源码编译

kubernetes v1.18.6编译Kubernetes是一个容器集群管理平台。大多数情况下,并不需要修改K8s代码即可直接使用。但如果,我们在环境中发现了某个问题/缺陷,或按照特定业务需求需要修改K8s代码时,如定制Kubelet的StopContainer 逻辑、kube-scheduler的pod调度逻辑等。为了让修改生效,那么就需要编译K8s代码了。Kubernetes源码编译,大致分为本地二进制可执行文件编译和docker镜像编译两种。1 安装依赖1.1 安装Golang官方地址为:

2020-08-05 19:44:01 1781 2

原创 基于docker commit和Dockerfile的docker容器镜像制作

Docker容器镜像制作1.docker commit定制镜像镜像是容器的基础,每次执行docker run的时候都会指定哪个镜像作为容器运行的基础。镜像是多层存储,每一层是在前一层的基础上进行的修改;而容器同样也是多层存储,是在以镜像为基础层,在其基础上加一层作为容器运行时的存储层。例如:docker run --name webserver -d -p 80:80 nginx此命令会启动一个名为webserver的容器,镜像名称为nginx,并将本地的80端口映射到容器,此时可以通过本地IP加

2020-07-13 11:23:10 483

原创 基于Docker的容器的常用操作集合

Docker容器的基本操作1.获取镜像获取镜像的命令:docker pull,格式为: docker pull [选项] [Docker Registry 地址[:端口]]/仓库名[:标签]Docker Registry 地址: 包括主域名加端口号仓库名:这里的仓库名是两段式名称,即 <用户名>/<软件名>。对于 docker.io,如果不给出用户名,则默认为 library,也就是官方镜像2.运行容器[root@wtao-test-3 ~]# docke

2020-07-10 14:03:29 273

原创 静态Pod

静态Pod静态Pod是由kubelet进行管理的仅存在于特定Node上的Pod。它们不能通过API Server进行管理,无法与ReplicationController、Deployment或者DaemonSet进行关联,并且kubelet无法对它们进行健康检查。静态Pod总是由kubelet创建的,并且总在kubelet所在的Node上运行。创建静态Pod有两种方式:配置文件方式和HTTP方式。配置文件方式可以通过kubelet的启动参数查看kubelet扫描静态Pod配置文件的路径,如下:

2020-07-08 11:44:28 1295 1

原创 kubectl命令行工具用法

kubectl命令行工具用法kubectl作为客户端CLI工具,可以让用户通过命令行对Kubernetes集群进行操作。1 kubectl用法概述kubectl命令行的语法如下:kubectl [command] [TYPE] [NAME] [flags]其中,command、TYPE、NAME、flags的含义如下。(1)command:子命令,用于操作Kubernetes集群资源对象的命令,例如create、delete、describe、get、apply等。(2)TYPE:资源对象的

2020-06-30 11:40:21 901

原创 Kubernetes集群的安全设置

Kubernetes集群的安全设置1 基于CA签名的双向数字证书认证方式在一个安全的内网环境中,Kubernetes的各个组件与Master之间可以通过kube-apiserver的非安全端口http://<kube-apiserver-ip>:8080进行访问。但如果API Server需要对外提供服务,或者集群中的某些容器也需要访问API Server以获取集群中的某些信息,则更安全的做法是启用HTTPS安全机制。Kubernetes提供了基于CA签名的双向数字证书认证方式和简单的基

2020-06-28 10:26:32 315

原创 使用kubeadm工具快速安装Kubernetes集群

使用kubeadm工具快速安装Kubernetes集群1.安装前准备关闭防火墙;关闭SELinux;关闭Swap交换分区:swapoff -a;master与node之间ssh免密登录;同步NTP时间;所有IP均能访问外网。操作过程略。2.安装kubernetes2.1 安装kubeadm和相关工具(所有节点都执行)首先配置yum源,官方yum源的地址为https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64。如果

2020-06-28 10:20:35 1494

原创 python3利用sqlalchemy操作mysql数据库

一、安装sqlalchemypip install sqlalchemy通过python命令行工具导入模块未报错则说明安装成功from sqlalchemy import *from sqlalchemy.orm import *二、使用sqlalchemy对数据库进行操作1.定元信息,绑定到引擎# python3.x连接mysql使用的是如下路径连接,若...

2019-09-25 00:39:14 1550

原创 Django实现使用支付宝支付

接入支付宝支付宝开发平台登录https://open.alipay.com/platform/home.htm沙箱环境 是支付宝提供给开发者的模拟支付的环境 跟真实环境是分开的 沙箱应用:https://docs.open.alipay.com/200/105311 沙箱账号:https://openhome.alipay.com/platform/...

2019-03-03 23:57:16 412

原创 Django项目使用QQ实现第三方登录

QQ登录,也就是我们所说的第三方登录,是指用户可以不在本项目中输入密码,而直接通过第三方的验证,成功登录本项目。若想实现QQ登录,需要成为QQ互联的开发者,审核通过才可实现。注册方法可参考链接http://wiki.connect.qq.com/%E6%88%90%E4%B8%BA%E5%BC%80%E5%8F%91%E8%80%85成为QQ互联开发者后,还需创建应用,即获取本项目对应与Q...

2019-02-17 21:29:42 995 2

原创 python实现常用排序算法(冒泡、插入、选择、希尔和快排)

最近在学习算法时,了解到了一些关于排序的算法实现,在这里我整理了一下,并用python实现,具体实现请看下面代码:(一)、冒泡排序算法def pop_sort(alist) i = 0 while i < len(a) - 1: count = 0 for j in range(len(alist) - 1 - i): ...

2018-11-12 22:50:47 390 1

原创 python实现单向、双向、单向循环链式表

说起python,最近一段时间可是火的一塌糊涂,想必很多了解python的人都知道它有一下几种数据类型:(1)字典dict:{‘key’:value}(2)列表list:[a,b,c,d](3)元组tuple:(a,b,c,d)(4)字符串str:'adsa'(5)整型int:1,2,3 ...  (6) 小数float:1.12那么我们自己能不实现一种类似于以上几种数...

2018-11-04 22:21:57 347

原创 rest_framework中利用jwt登录验证时,自定义返回凭证和登录校验支持手机号

安装pip install djangorestframework-jwt在Django.settings中配置REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': ( 'rest_framework_jwt.authentication.JSONWebTokenAuthentication', # 添加...

2018-08-25 11:33:30 3983 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除