AI 大模型与智能应用
实践与技术

专注分享 AI 大模型、Agent 开发、深度学习等技术实战与架构设计;兼具 C#/.NET 后端开发经验

113
技术文章
8
文章分类
512
技术标签
29029
累计字数
使用Docker部署Apollo一个环境docker-quick-start版
数据与中间件
2020-04-05 0k

使用Docker部署Apollo一个环境docker-quick-start版

1、下载Apollo源码 git clone https://github.com/ctripcorp/apollo.git 2、进入docker-quick-start 目录 cd apollo/scripts/docker-quick-start 3、安装启动 docker-compose up 看到下面日志表示已经安装成功 apollo-quick-start | Waiting for config service startup..... apollo-quick-start | Config service started. You may visit http://localhost:8080 for service status now! apollo-quick-start | Waiting for admin service startup. apollo-quick-start | Admin service started apollo-quick-start | ==== starting portal ==== apollo-quick-start | Portal logging file is ./portal/apollo-portal.log apollo-quick-start | Started [237] apollo-quick-start | Waiting for portal startup..... apollo-quick-start | Portal started.

apollo docker 配置中心
阅读更多
使用Docker部署Apollo多个环境在一台(Linux)服务器
数据与中间件
2020-04-05 0k

使用Docker部署Apollo多个环境在一台(Linux)服务器

一、搭建MySql 1、拉取官方镜像 (我们这里选择5.7,如果不写后面的版本号则会自动拉取最新版) docker pull mysql:5.7 # 拉取 mysql 5.7 docker pull mysql # 拉取最新版mysql镜像 docker images # 检查是否拉取成功 2、运行镜像 docker run -p 23306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 参数说明: –name:容器名,此处命名为mysql -e:配置信息,此处配置mysql的root用户的登陆密码 -p:端口映射,此处映射 主机23306端口 到 容器的3306端口 3、创建数据库 根据\apollo\scripts\sql目录下的两个脚本 创建三个数据库 ApolloConfigDBPro : apolloconfigdb.sql ApolloConfigDBDev : apolloconfigdb.sql ApolloPortalDB : apolloportaldb.sql 4、修改值 修改 ApolloPortalDB库中ServerConfig表apollo.portal.envs的值为dev,pro 修改 ApolloConfigDBPro库中ServerConfig表eureka.service.url的值 为http://localhost:8083/eureka/ 二、搭建Apollo 拉取镜像 docker pull idoop/docker-apollo 运行容器 注意 “=” 附近不能有空格 docker run --net="host" --name myapollo -d \ -e PORTAL_DB='jdbc:mysql://192.

apollo docker 配置中心
阅读更多
Docker环境安装及基础命令使用
运维与DevOps
2020-04-03 0k

Docker环境安装及基础命令使用

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。 安装Docker 为yum配置加速 centos默认国外源,安装过程不是很理想 #下载阿里yum源2 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo yum clean all #清理缓存 yum makecache #生成仓库缓存 安装: 1、安装必要依赖包 yum install -y yum-utils device-mapper-persistent-data lvm2 2、添加阿里镜像稳定版仓库 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 3、安装docker-ce yum install -y docker-ce docker-ce-cli containerd.io 配置docker加速 创建或修改 daemon.json 文件 修改之后重启docker服务 vim /etc/docker/daemon.json { "registry-mirrors" : [ "http://registry.docker-cn.com", "http://docker.mirrors.ustc.edu.cn", "http://hub-mirror.c.163.com" ], "insecure-registries" : [ "registry.docker-cn.com", "docker.mirrors.ustc.edu.cn" ], "debug" : true, "experimental" : true } 开机启动 systemctl enable docker #开机启动docker 重启 systemctl daemon-reload #加载 systemctl restart docker #重启docker 查看 systemctl status docker #查看docker状态 docker info #查看详细信息 docker version #查看版本 使用Docker 查看已有镜像列表

docker 环境安装 国内源
阅读更多
Typora+Picgo图片自动上传打造Markdown写作神器
工具与效率
2020-03-11 0k

Typora+Picgo图片自动上传打造Markdown写作神器

1、Markdown神器:Typora Typora 是一款支持实时预览的 Markdown 文本编辑器。它有 OS X、Windows、Linux 三个平台的版本,并且由于仍在测试中,是完全免费的。 官网地址:https://www.typora.io/ 2、图床工具:Picgo 将本地图片上传到七牛云、腾讯云COS、GitHub等图床。 3、如何实现Typora图片自动上传 1、在Typora 依次点击 文件 –> 偏好设置 –> 图像 2、点击下载PicGo,填写PicGo启动文件路径 4、PicGo相关设置 PicGo默认安装了几个插件腾讯云、阿里云、七牛云、GitHub等,这里已blog-uploader这个插件为例, 这里收集了一些其他插件:https://github.com/PicGo/Awesome-PicGo 点击 插件设置 –> 搜索插件 –> 安装 点图床设置 –> 设置为默认图床 –> 确定 支持: 拖拽 粘贴板直接粘贴 5、相关错误解决: 如果报错先检查一下picgo设置Server是否开启,端口是否是36677 如果报什么upload文件夹错误,检查一下这个路径是否有权限读写权限C:\Program Files\Typora\upload

markdown typora picgo
阅读更多
Vuepress起步
前端开发
2020-03-11 0k

Vuepress起步

1、安装 npm install -g vuepress 如果慢或者安装失败可以用cnpm替换,或者yarn # yarm yarn global add vuepress #cnpm npm install -g cnpm --registry=https://registry.npm.taobao.org #如果已安装请忽略 cnpm install -g vuepress 2、创建项目目录 mkdir vuepress-starter && cd vuepress-starter 3、新建一个 markdown 文件 echo '# Hello VuePress!' > README.md 运行项目 vuepress dev . 4、访问站点 http://localhost:8080/ 初始化项目 npm init -y 执行命令后,项目根目录会出现一个package.json,我们修改scripts节点 "scripts":{ "dev":"vuepress dev docs", "build":"vuepress build docs" } 修改之后: { "name":"vuepress-starter", "version":"1.0.0", "description":"", "main":"index.js", "scripts":{ "dev":"vuepress dev docs", "build":"vuepress build docs" }, "keywords":[ ], "author":"", "license":"ISC" } 创建基本目录

markdown vuepress Vue
阅读更多
浏览器保留页面跳转前的请求记录-持续记录
前端开发
2020-03-08 0k

浏览器保留页面跳转前的请求记录-持续记录

开发中往往会遇到这样的情况,调试一个请求,但是请求中有报错的跳转,结果一刷新页面就自动跳转了,也看不到请求报错,这个时候只要勾选上preserver log即可 谷歌: 火狐:

浏览器 开发者工具 网络调试
阅读更多
.Net Core项目使用Docker容器部署到Linux服务器Centos7
运维与DevOps
2020-02-11 0k

.Net Core项目使用Docker容器部署到Linux服务器Centos7

创建项目 选择 ASP.NET Core Web 应用程序 可以在创建时直接勾选【启用Docker支持】选择Linux(图1),也可以在已有项目右键添加Docker支持(图2) 图1 图2 项目发送至Linux服务器,我这里是上传到github,然后在linux服务器通过github下载项目 git下载项目 git clone https://github.com/raikay/firstdemo.git 构建镜像 docker build -t firstdemo . -f firstdemo/Dockerfile 如果构建dotnet环境太慢,可以使用腾讯加速镜像下载 docker pull ccr.ccs.tencentyun.com/dotnet-core/aspnet:3.1-buster-slim docker tag ccr.ccs.tencentyun.com/dotnet-core/aspnet:3.1-buster-slim mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim docker pull ccr.ccs.tencentyun.com/dotnet-core/sdk:3.1-buster docker tag ccr.ccs.tencentyun.com/dotnet-core/sdk:3.1-buster mcr.microsoft.com/dotnet/core/sdk:3.1-buster docker build -t firstdemo . -f firstdemo/Dockerfile 运行镜像 docker run -d -p 1080:80 --name myfirstdemo firstdemo 浏览器访问 http://192.168.198.131:1080/WeatherForecast 浏览器显示效果 Dockerfile解释 #See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.

DotNet Docker Centos
阅读更多
Dto / Model / Entity 区别
后端开发
2020-02-11 0k

Dto / Model / Entity 区别

Entity 数据表对应到实体类的映射 Model Model是MVC中一个概念,可能不和Entity一一对应,因为展示在View层中数据可能是一个Entity的精简,也可能是多个Entity的组合。 Model是一个高度优化组合或者精简后的一个用于在View层展示数据的对象。 DTO 数据传输对象(Data Transfer Object)。 用于系统间数据传输的对象,数据传输目标往往是数据访问对象从数据库中检索数据。 鸣谢: https://www.zhihu.com/question/25256772 http://www.liuhuachao.com/blog/2018/05/20/entity-model-dto/

dotnet DTO Model
阅读更多
分布式唯一ID - 雪花ID Snowflake .Net版
后端开发
2020-02-11 0k

分布式唯一ID - 雪花ID Snowflake .Net版

雪花Id介绍: 雪花ID是用一个64位的整形数字来做ID,对应.net中的long,数据库中的bigint,雪花算法的原始版本是scala版,用于生成分布式ID(纯数字,时间顺序),订单编号等。 生成的雪花Id: 35324861574164480 35324861578358784 35324861578358785 对比自增和Guid: 自增ID: 对于数据敏感场景不宜使用,且不适合于分布式场景。 GUID: 采用无意义字符串,且36位字符串太长,数据量增大时造成访问过慢,且不宜排序。 算法描述: 最高位是符号位,始终为0,不可用。 41位的时间序列,精确到毫秒级,41位的长度可以使用69年。时间位还有一个很重要的作用是可以根据时间进行排序。 10位的机器标识,10位的长度最多支持部署1024个节点。 12位的计数序列号,序列号即一系列的自增id,可以支持同一节点同一毫秒生成多个ID序号,12位的计数序列号支持每个节点每毫秒产生4096个ID序号。 雪花算法改进,时钟回拨: 雪花ID严重依赖系统当前时间,当系统时间被人为反后调整时,算法会出问题,可能会出重复ID.Snowflake原算法是在检测到系统时间被回调后直接抛异常.本代码在时钟回拨后,会将生成的ID时间戳停留在最后一次时间戳上(每当序列溢出时会往前走一毫秒),等待系统时间追上后即可以避过时钟回拨问题. 这种处理方式的优点是时钟回拨后不会异常,能一直生成出雪花ID,但缺点是雪花ID中的时间戳不是系统的当前时间,会是回拨前的最后记录的一次时间戳,但相差也不大.不知道有没有什么生产系统会对这个时间戳要求非常严格,无法使用这种补救方式的? 当然停掉系统后的时钟回拨是无法处理的,这种还是会有可能出现重复ID的. 生成Id以及解析Id方法: 源码git地址:https://gitee.com/itsm/learning_example/tree/master/snowflake-雪花Id public class SnowflakeId { // 开始时间截((new DateTime(2020, 1, 1, 0, 0, 0, DateTimeKind.Utc)-Jan1st1970).TotalMilliseconds) private const long twepoch = 1577836800000L; // 机器id所占的位数 private const int workerIdBits = 5; // 数据标识id所占的位数 private const int datacenterIdBits = 5; // 支持的最大机器id,结果是31 (这个移位算法可以很快的计算出几位二进制数所能表示的最大十进制数) private const long maxWorkerId = -1L ^ (-1L << workerIdBits); // 支持的最大数据标识id,结果是31 private const long maxDatacenterId = -1L ^ (-1L << datacenterIdBits); // 序列在id中占的位数 private const int sequenceBits = 12; // 数据标识id向左移17位(12+5) private const int datacenterIdShift = sequenceBits + workerIdBits; // 机器ID向左移12位 private const int workerIdShift = sequenceBits; // 时间截向左移22位(5+5+12) private const int timestampLeftShift = sequenceBits + workerIdBits + datacenterIdBits; // 生成序列的掩码,这里为4095 (0b111111111111=0xfff=4095) private const long sequenceMask = -1L ^ (-1L << sequenceBits); // 数据中心ID(0~31) public long datacenterId { get; private set; } // 工作机器ID(0~31) public long workerId { get; private set; } // 毫秒内序列(0~4095) public long sequence { get; private set; } // 上次生成ID的时间截 public long lastTimestamp { get; private set; } /// <summary> /// 雪花ID /// </summary> /// <param name="datacenterId">数据中心ID</param> /// <param name="workerId">工作机器ID</param> public SnowflakeId(long datacenterId,long workerId ) { if (datacenterId > maxDatacenterId || datacenterId < 0) { throw new Exception(string.

分布式 Snowflake 雪花ID
阅读更多
HTTP / HTTPS 必备基础知识
前端开发
2019-12-05 0k

HTTP / HTTPS 必备基础知识

HTTP 是一种 超文本传输协议(Hypertext Transfer Protocol)。 http是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应 。 一、地址栏输入网址(url)后发生了什么 1. DNS解析 首先浏览器通过DNS解析根据域名获取IP。通过下面的顺序获取。其中某个节点返回IP就不继续执行。 浏览器缓存 –> 系统host –> 本地域名服务器LDNS –> Root Server 域名服务器 2. 建立连接 浏览器根据得到的IP和目标服务器经过三次握手建立 TCP 连接。 3. 请求 建立连接后,浏览器会向目标服务器发起 HTTP-GET 请求,包括其中的 URL,HTTP 1.1 后默认使用长连接,只需要一次握手即可多次传输数据。 4. 响应 如果目标服务器只是一个简单的页面,就会直接返回,状态码为200。如果有重定向 ,返回 301,302 以 3 开头的重定向码,浏览器在获取了重定向响应后,在响应报文中 Location 项找到重定向地址,浏览器重新第一步访问即可。 5. 关闭连接 应答结束后,web浏览器与webserver四次握手断开连接,以保证其它web浏览器能够与webserver建立连接。 http1.1不是立即断开连接,而是服务端使用超时断开的策略来维护连接,一般是300s左右 二、无状态协议 HTTP无状态协议,是指协议对于事务处理没有记忆能力。每次的请求都是独立的,它的执行情况和结果与前面的请求和之后的请求是无直接关系的。不过,可以通过cookie、session等机制解决这个问题。 三、HTTP请求方法 根据 HTTP 标准,HTTP 请求可以使用多种请求方法。 HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD方法。 HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。 方法 描述 GET 请求指定的页面信息,并返回实体主体。 POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。 PUT 从客户端向服务器传送的数据取代指定的文档的内容。 DELETE 请求服务器删除指定的页面。 HEAD 类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头 CONNECT 协议中预留给能够将连接改为管道方式的代理服务器。 OPTIONS 允许客户端查看服务器的性能。 TRACE 回显服务器收到的请求,主要用于测试或诊断。 PATCH 对 PUT 方法的补充,用来对已知资源进行局部更新 。 四、HTTP报文 在HTTP连接中报文分为请求(request)和响应(response)两种。每种报文在请求头都有不同的字段来标识不同的用途。

http https TCP
阅读更多