Bingo

Azure Web App (二)使用部署槽切换部署环境代码

不羁岁月 提交于 2020-08-16 12:13:59
一,引言 前天我们将到使用Azure的 Pass 服务 “Web App” 去部署我们的.NET Core Web项目,也同时有介绍到如何在VS中配置登陆中国区的Azure账号,今天接着讲,我们部署完我们的Web服务,进行完测试后,肯定是要发布到生产环境,但是我们不可能再去创建一个相同的Web App,配置上生产环境的域名,配置上生产环境的数据库连接字符串等等,而 Azure 的 Web App是可以通过自己的一个叫 “Deployment slots(部署槽)”的功能进行切换。我们来看一下微软给出的使用部署槽的优点,以下是微软的官方文档提到的优势 将应用程序部署到非生产槽具有以下优点: 可以在分阶段部署槽中验证应用更改,并将其与生产槽交换。 首先将应用部署到槽,然后将其交换到生产,这确保槽的所有实例都已准备好,然后交换到生产。 部署应用时,这样可避免停机。 流量重定向是无缝的,且不会因交换操作而删除任何请求。 当不需要预交换验证时,可以通过配置自动交换来自动化这整个工作流。 交换后,具有以前分阶段应用的槽现在具有以前的生产应用。 如果交换到生产槽的更改与预期不同,可以立即执行同一交换来收回“上一已知的良好站点”。 下面,我们正式开始今天的分享。 ----------我是分割线---------- Azure Web App 部署系列: 1,Azure Web App(一

Azure Web App (二)使用部署槽切换部署环境代码

喜夏-厌秋 提交于 2020-08-13 11:51:58
一,引言 前天我们将到使用Azure的 Pass 服务 “Web App” 去部署我们的.NET Core Web项目,也同时有介绍到如何在VS中配置登陆中国区的Azure账号,今天接着讲,我们部署完我们的Web服务,进行完测试后,肯定是要发布到生产环境,但是我们不可能再去创建一个相同的Web App,配置上生产环境的域名,配置上生产环境的数据库连接字符串等等,而 Azure 的 Web App是可以通过自己的一个叫 “Deployment slots(部署槽)”的功能进行切换。我们来看一下微软给出的使用部署槽的优点,以下是微软的官方文档提到的优势 将应用程序部署到非生产槽具有以下优点: 可以在分阶段部署槽中验证应用更改,并将其与生产槽交换。 首先将应用部署到槽,然后将其交换到生产,这确保槽的所有实例都已准备好,然后交换到生产。 部署应用时,这样可避免停机。 流量重定向是无缝的,且不会因交换操作而删除任何请求。 当不需要预交换验证时,可以通过配置自动交换来自动化这整个工作流。 交换后,具有以前分阶段应用的槽现在具有以前的生产应用。 如果交换到生产槽的更改与预期不同,可以立即执行同一交换来收回“上一已知的良好站点”。 下面,我们正式开始今天的分享。 ----------我是分割线---------- Azure Web App 部署系列: 1,Azure Web App(一

用程序员的独特视角解读《隐秘的角落》

六月ゝ 毕业季﹏ 提交于 2020-08-11 19:00:12
前两天,我一口气看完了电视剧《隐秘的角落》,剧情相当精彩。美中不足的是,剧组为了让片子过审, 导致11集,12集的剪辑顺序被打乱,甚至台词被修改,以至于片中有几个处演员口型与台词对不上,剧情也有点让人摸不到头脑。因此我尝试 通过人工智能技术还原了被修改的台词 ,从而还原了一部分原本的剧情,一个更加黑暗的真相。 因要过审而被修改的台词 被修改的台词主要集中在 12 集,朱朝阳、严良两人火海逃生后在天台上的对话: 严良:「告诉警察吧」 朱朝阳:「像我爸希望的那样 」 朱朝阳:「你想报警么」 这段对话其实被后期修改过了,口型和内容不吻合。至于「隐秘」剧组为什么要修改这段台词,我也是在还原了原对话之后才知道答案, 因为原对话实在过于黑暗了,坐实了朱朝阳的黑化,是不可能过审的。 那么原对话到底是什么?往下看,我用深度学习来告诉你答案。 用机器学习识别唇语,还原对话 >这部分主要演示用机器学习的手段识别唇语,唇语识别就是靠分析人说话时嘴唇与面部的特征来解读人说话的内容。这里我并不介绍唇语识别模型的基础架构(篇幅太长,后面有机会单独讲),而是通过以识别张朝阳唇语为例,演示一下唇语识别的一个简单流程。 这个案例中的模型我选使用基于 Tensorflow 的 Facemash 模型进行二次训练。Facemash 的主要作用是获取面部表情的特征。之后通过分析嘴唇的运动特征

python之路——二分查找算法

混江龙づ霸主 提交于 2020-08-11 02:59:46
楔子 如果有这样一个列表,让你从这个列表中找到66的位置,你要怎么做? l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88] 你说,so easy! l.index(66)... 我们之所以用index方法可以找到,是因为python帮我们实现了查找方法。如果,index方法不给你用了。。。你还能找到这个66么? l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88 ] i = 0 for num in l: if num == 66 : print (i) i +=1 上面这个方法就实现了从一个列表中找到66所在的位置了。 但我们现在是怎么找到这个数的呀?是不是循环这个列表,一个一个的找的呀?假如我们这个列表特别长,里面好好几十万个数,那我们找一个数如果运气不好的话是不是要对比十几万次?这样效率太低了,我们得想一个新办法。 二分查找算法 l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88] 你观察这个列表,这是不是一个从小到大排序的 有序 列表呀? 如果这样

如何实现vue3.0的响应式呢?本文实战教你

风流意气都作罢 提交于 2020-08-09 11:16:06
之前写了两篇vue2.0的响应式原理,链接在此,对响应式原理不清楚的请先看下面两篇 和尤雨溪一起进阶vue 和尤雨溪一起进阶vue(二) 现在来写一个简单的3.0的版本吧 大家都知道,2.0的响应式用的是 Object.defineProperty ,结合发布订阅模式实现的,3.0已经用 Proxy 改写了 Proxy是es6提供的新语法,Proxy 对象用于定义基本操作的自定义行为(如属性查找、赋值、枚举、函数调用等)。 语法: const p = new Proxy(target, handler) target 要使用 Proxy 包装的目标对象(可以是任何类型的对象,包括原生数组,函数,甚至另一个代理)。 handler 一个通常以函数作为属性的对象,各属性中的函数分别定义了在执行各种操作时代理 p 的行为。 handler的方法有很多, 感兴趣的可以移步到MDN,这里重点介绍下面几个 handler.has() in 操作符的捕捉器。 handler.get() 属性读取操作的捕捉器。 handler.set() 属性设置操作的捕捉器。 handler.deleteProperty() delete 操作符的捕捉器。 handler.ownKeys() Object.getOwnPropertyNames 方法和 Object.getOwnPropertySymbols

skimage库安装

江枫思渺然 提交于 2020-08-09 11:10:32
skimage是个处理图片的库啊,你平时如果没有用到过,那当你报错如下的时候,你就会想起它来了。就这样: 安装库嘛,一般是在cmd上用下面这个命令嘛: conda install skimage 但是这个命令它报错嘛: 这个意思就是目前找不到这个库嘛。但事实上是有这个库的,它还有一个主页:skimage库的主页。上面写的很清楚了嘛,其实它的大名是ski-image嘛,那就是说,命令应该是这个嘛: conda install scikit-image 这样就可以顺利安装了: bingo!!! 来源: oschina 链接: https://my.oschina.net/timebear/blog/4301406

八种架构设计模式及其优缺点概述

半腔热情 提交于 2020-08-05 12:55:26
1. 什么是架构 我想这个问题,十个人回答得有十一个答案,因为另外的那一个是大家妥协的结果。哈哈,我理解,架构就是 骨架 ,如下图所示: 人类的身体的支撑是主要由骨架来承担的,然后是其上的肌肉、神经、皮肤。架构对于软件的重要性不亚于骨架对人类身体的重要性。 2. 什么是设计模式 这个问题我问过的面试者不下于数十次,回答五花八门,在我看来,模式就是 经验 ,设计模式就是 设计经验 ,有了这些经验,我们就能在特定情况下使用特定的设计、组合设计,这样可以大大节省我们的设计时间,提高工作效率。 作为一个工作10年以上的老码农,经历的系统架构设计也算不少,接下来,我会把工作中用到的一些架构方面的设计模式分享给大家,望大家少走弯路。总体而言,共有八种,分别是: 单库单应用模式 :最简单的,可能大家都见过 内容分发模式 :目前用的比较多 查询分离模式 :对于大并发的查询、业务 微服务模式 :适用于复杂的业务模式的拆解 多级缓存模式 :可以把缓存玩的很好 分库分表模式 :解决单机数据库瓶颈 弹性伸缩模式 :解决波峰波谷业务流量不均匀的方法之一 多机房模式 :解决高可用、高性能的一种方法 一. 单库单应用模式 这是最简单的一种设计模式,我们的大部分本科毕业设计、一些小的应用,基本上都是这种模式,这种模式的一般设计见下图: 如上图所示,这种模式一般只有一个数据库,一个业务应用层,一个后台管理系统

python之路——二分查找算法

浪子不回头ぞ 提交于 2020-08-04 18:55:28
楔子 如果有这样一个列表,让你从这个列表中找到66的位置,你要怎么做? l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88] 你说,so easy! l.index(66)... 我们之所以用index方法可以找到,是因为python帮我们实现了查找方法。如果,index方法不给你用了。。。你还能找到这个66么? l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88 ] i = 0 for num in l: if num == 66 : print (i) i +=1 上面这个方法就实现了从一个列表中找到66所在的位置了。 但我们现在是怎么找到这个数的呀?是不是循环这个列表,一个一个的找的呀?假如我们这个列表特别长,里面好好几十万个数,那我们找一个数如果运气不好的话是不是要对比十几万次?这样效率太低了,我们得想一个新办法。 二分查找算法 l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88] 你观察这个列表,这是不是一个从小到大排序的 有序 列表呀? 如果这样

Azure Web App (三)切换你的Net Core Web 项目的数据库连接字符串

半世苍凉 提交于 2020-07-27 22:40:06
一,引言   上一篇文章讲到今天我们演示了一下,如何在Web App中创建 “Deployment Slot”进行快速无停机部署新功能代码,也使用VS进行发布到创建的Web App中创建的新的部署槽位中,同时也引出了另外一个问题,环境变量怎么切换,切换槽位后,生产环境的数据库连接字符串怎么办。下一篇文章,我会继续 部署槽,进行配置部署槽设置,同时在交换槽位的时候,测试环境/生产环境都能够准确的连接到对于的数据库。😎😎😎😎😎 --------------------我是分割线-------------------- Azure Web App 部署系列: 1,Azure Web App(一)发布你的Net Core Web 项目 2,Azure Web App(二)使用部署槽切换部署环境代码 3,Azure Web App(三)切换你的Net Core Web 项目的数据库连接字符串 二,正文 1,新建Net Core Web 项目 项目名称 “CnBateBlogWeb” 选择 “Web 应用程序(模型视图控制器)”,去掉 “为HTTPS 配置” 的勾选,点击创建 删除 “launchSettings” 文件中 IIS 配置部分 添加一个名叫 “appsettings.Production.json” 配置文件,里面当前项目的生产环境的数据库连接字符串。 ”appsettings

第19天:Python 之迭代器

拜拜、爱过 提交于 2020-07-25 04:05:40
by 轩辕御龙 Python 之迭代器 1 概念引入 在之前的教程中,我们已经接触过一些典型的 for 语句 ,比如: >>> list_example = [0, 1, 2, 3, 4] >>> for i in list_example: ... print(i) ... 0 1 2 3 4 通过简单地使用 for 和 in 两个关键字,我们可以很轻松地实现在 C 语言中繁琐的遍历操作。相比较而言,C 语言中要实现相同的功能,需要这样写(假设存在整型数组 list_example ): int i; for(i = 0; i < list_length; i++) printf("%d\n", list_example[i]); 显而易见,在遍历元素的操作上,Python 的表达更加直观优雅,简洁明了;这正是因为 Python 在实现 for 语句的时候,恰到好处地使用了“迭代器”的概念。 迭代器在 Python 中随处可见,并且具有统一的标准。通过使用迭代器,Python 能够逐个访问列表 list_example 中的每个元素。 下面我们来进一步讨论相关的机制。 2 定义及原理 2.1 迭代器的定义 迭代器(iterator)是一种可在容器(container)中遍访的接口,为使用者封装了内部逻辑。 —— 百度百科·迭代器 大意 上面是我们可以查到的、对“迭代器