首页 文章 精选 留言 我的

精选列表

搜索[全模态模型],共10000篇文章
优秀的个人博客,低调大师

1.全栈工程师Python基础

Python基础¶ Python概述 计算机语言概述 语言: 交流的工具,沟通媒介 计算机语言: 人跟计算机交流工具,翻译官 Python是计算机语言里的一种 Python编程语言 代码: 人类语言,通过代码命令机器,跟机器交流 Python解析器: 就是那个担任翻译官工作的 流程: 写代码 执行: 由翻译官(Python解析器)把命令(Code) 翻译给机器, Python 简史 1989年, Guido van Rossum 2014: 宣布2.7支持到2020 2017: AI 元年, Pyhton崛起 Python特点: 速度问题 Python的应用领域 全能 设计哲学: 平衡发展,样样通,简洁明了 Python 为什么这么火 环境问题 anaconda+pycharm python3.6 环境 学习环境: 直播课: 网易云课堂 讲义+代码: github 教科书: gitbook 工作环境 环境安装: gitbook上有 http://www.cnblogs.com/zhouzhishuai/p/8401103.html 操作系统 windows Linux 我们的标准系统: windows下开虚拟机,虚拟机安装uabntu 软件环境 使用anaconda3+pycharm代替 Python的执行方式 本质上Python是一堆命令的集合 执行过程是逐行执行,遇到问题即刻终止 打印 Hello world jupyter notebook 快捷键: - alt+Enter 切换代码模式 - Shift+# 笔记 或 文本输入 - alt+Enter 也能运行代码

优秀的个人博客,低调大师

【全干货】5分钟带你看懂 Docker!

Docker 是啥? 打开翻译君输入 Docker 结果显示码头工人,没错!码头工人搬运的是集装箱,那么今天要讲的 Docker 其操作的也是集装箱,这个集装箱就静态而言就是一个应用镜像文件,就动态而言,就是一个容器。蒙了吧?好吧,上图解释。 Docker 从狭义上来讲就是一个进程,从广义上来讲是一个虚拟容器,其实更专业的叫法是应用容器( Application Container ),Docker 进程和普通的进程没有任何区别,它就是一个普通的应用进程。不过是用来操作镜像文件的。所以 Docker 进程+构建的应用镜像文件就等于 Docker 容器。本文所有讲的 Docker 都是指 Docker 容器哦。 再继续下文之前我们首先要明确几个 docker 重要的基本概念吧,镜像,容器,仓库。 镜像 Docker images,就类似于 VM 虚拟机里面的快照,但是可比快照轻量化多了。快照不懂?那可以把 images 直接理解成一个文件夹。我们可以通过 ID 或者易识别的名字 +tag 来确认唯一的目标镜像。ImagesID 是一个64位的字符,但是一般我们都是使用前面12位就足够区别了。 如图中左边红框中 redis: lates 和右边的红框中 5f515359c7f8 都唯一表示为同一个镜像。所以我们一般的镜像可以命名为类似centos: latest、centos: centos7.1.1503等等。 镜像是分层的,有基础镜像,仅仅包含操作系统,比如 centos 镜像;有中间件镜像,比如 redis 等数据库镜像;最后是应用镜像,就是指具体的应用服务了,应用镜像可以非常丰富,随时可以发布,这三者之间依次叠加。 所以当我们在使用 Docker 构建镜像的时候,每一个命令都会在前一个命令的基础上形成一个新镜像层。如下图,基础镜像就是 centos 镜像,中间件镜像就是两个红色圈,应用镜像就是紫色圈。其中 redis+centos 这样叠加组合的中间件镜像就可以供A服务或者B服务使用,这样叠加组合更加灵活。仍和一种镜像都可以从 Docker hub 公共仓库中拉取。 容器 Docker containers,你可以从镜像中创建容器,这如同从快照中创建虚拟机,不过更轻量,启动更快,秒启。应用是在容器中运行的,打个比方,你首先下载了一个 Ubuntu 的镜像,然后又安装 MySQL 和 Django 应用及其依赖,来完成对它 Ubutun 镜像的修改,一个个人觉得非常完美应用镜像生成了!就把这个镜像分享给大家使用,大家通过这个镜像就生成一个容器。容器启动之后就会运行 Django 服务了。 上面也说到了,容器就是一个个独立的封闭的集装箱,但是也需要对外提供服务的,所以 Docker 允许公开容器的特定端口,在启动 Docker 的时候,我们就可以将容器的特定端口映射到宿主机上面的任意一个端口,所以,如果几个服务都需要80端口,那么容器的对外端口是80,但是映射到宿主机上面就是任意端口,就不会产生冲突,所以就不需要通过代理来解决冲突。容器对外端口与宿主机的端口映射可以通过下面的命令来完成。 启动 docker 容器 docker run -d -p 2222:22 --name 容器名 镜像名 -d 守护容器,就是后台运行,退出命令窗口容器也不会停止 -it 交互式容器 退出命令窗口容器就停止运行了 -p宿主机端口和容器端口映射 8081:80 宿主机端口:容器公开的端口 仓库 Docker registeries,docker 仓库和存放集装箱的仓库是一样的,不过 docker 使用来存放镜像的。仓库存在公有和私有之分,公有仓库 docker hub 提供了非常多的镜像文件,这些镜像直接拉取下来就可以运行了,你也可以上传自己的镜像到 docker hub 上面。同时也可以自己搭建私有仓库用于团队项目管理。 结合前面介绍的基本概念,我们可以将 docker 的几个概念使用大致串起来,他们之间是如何运作的,也就是 Docker 的生命周期。看下图,主要是三步走。 开发构建镜像并将镜像 push 到 Docker 仓库; 测试或者运维从 Docker 仓库拷贝一份镜像到本地; 通过镜像文件开启 Docker 容器并提供服务。 为啥要用 Docker?能干些啥? 这要从目前软件行业的痛点来讲起: 软件更新发布及部署低效,过程繁琐且需要人工介入; 环境一致性难以保证; 不同环境之间迁移成本太高。 有了 Docker 可以很大程度解决上面的问题。 首先,Docker 的使用简单至极,从开发的角度来看就是三步走:构建,运输,运行。其中关键步骤就是构建环节,即打包镜像文件。但是从测试和运维的角度来看,那就只有两步:复制,运行。有了这个镜像,那么想复制到哪运行都可以,完全和平台无关了。同时 Docker 这种容器技术隔离出了独立的运行空间,不会和其他应用争用系统资源了以及还不需要考虑应用之间相互影响,想想就开心。 其次,因为在构建镜像的时候就处理完了服务程序对于系统的所有依赖,所以在你使用的时候,你可以忽略掉原本程序的依赖以及开发语言。对测试和运维而言,更多专注于自己的业务内容上。 最后,Docker 于开发者而言提供了一种开发环境的管理办法,与测试人员而言保证了环境的同步,于运维人员提供了可移植的标准化部署流程。 所以, Docker 能干啥,总结如下: 构建容易分发简单 隔离应用解除依赖 快速部署测完就销 Docker 是个进程级的轻量化虚拟机,和传统虚拟机有啥区别呢? Docker 这个虚拟机超级轻量级,仅仅是一个进程而已。与传统的虚拟机比如 VM 有着巨大的差别,区别看下图: 我们来看一下二者的区别,因为 VM 的 Hypervisor 需要实现对硬件的虚拟化,并且还要搭载自己的操作系统,其中虚拟机操作系统占用内存是比较大的,一个操作系统有好几个G,自然在启动速度和资源利用率以及性能上有非常大的开销,如果在本地,或者个人电脑,那么影响还不是那么大,但是在云端就是一个非常大的资源浪费。 咱们很多时候做事情的时候不会考虑与事情本身无关的问题,比如造飞机的不会考虑飞机是否要潜水,对于我们目前很多移动互联网的应用来说,很少会涉及到对操作系统的部分,其实我们主要关心的是应用的本身,而 VM 虚拟机的上层是运行的运行时库和应用,整个虚拟机的空间是非常的庞大,但是容器化技术 Docker 技术的出现后,省去了操作系统这一层,多个容器之间相互隔离且共用了宿主操作系统和运行时库。 所以 Docker 应用容器相对于 VM 有以下几个优点: 启动速度快,容器启动本质就是一个开启一个进程而已,因此都是秒启,而 VM 通常要更久 资源利用率高,一台普通 PC 可以跑成百上千个容器,你跑十个 VM 试试。 性能开销小, VM 通常需要额外的 CPU 和内存来完成 OS 的功能,这一部分占据了额外的资源 所以很多移动互联网的应用或者云计算的后端节点都可以用 Docker 来替换物理机器或者虚拟机。比如腾讯地图的很多后台服务基本上都迁移 Docker 部署了。 Docker 是个啥架构?底层又是用的啥技术? 前面说了那么多,始终还是雾里看花。下面就详细介绍一下技术架构,底层又是用的啥技术来实现上述那么多优点的? Docker 技术架构图: 从 Docker 依赖的底层技术来看,Docker 原生态是不能直接在Windows平台上运行的,只支持 Linux 系统,原因是 Docker 依赖 Linux kernel 三项最基本的技术,namespaces 充当隔离的第一级,是对 Docker 容器进行隔离,让容器拥有独立的 hostname,ip,pid,同时确保一个容器中运行一个进程而且不能看到或影响容器外的其它进程;Cgroups 是容器对使用的宿主机资源进行核算并限制的关键功能。 比如 CPU,内存,磁盘等,union FS 主要是对镜像也就是 image 这一块作支持,采用 copy-on-write 技术,让大家可以共用某一层,对于某些差异层的话就可以在差异的内存存储,Libcontainer 是一个库,是对上面这三项技术做一个封装。 Docker engine 用来控制容器 container 的运行,以及镜像文件的拉取。 Docker 咋装呢?Docker 怎么用呢? 安装之前,我们首先确保自己的 Linux 系统内核版本高于3.10,并且系统是64位,才能体验 Docker 哦。 通过 uname -ir 查看是否满足要求。 Docker 安装 通过脚本的方式安装 Docker,非常简单。 1、 获取最新的 Docker 安装包 nicktang@nicktang-virtual-machine:~$ wget -qO- https://get.docker.com/ | sh 输入当前用户的密码后,就会下载脚本并且安装 Docker 及依赖包。 显示上图内容就表明安装完成。 2、 启动 Docker 后台服务 root@nicktang-virtual-machine:/data # sudo service docker start #启动守护进程 root@nicktang-virtual-machine:/data # docker -v 能够看见版本号,说明 Docker 的安装成功。简单吧!至此就差一个镜像了。自己制作还是从公共仓库拉取就随你啦。 root@nicktang-virtual-machine:/data # sudo service docker stop #关闭守护进程 Docker 使用 Docker 的使用,我们主要从【增删查】几方面来说说怎么使用 docker,为什么没有【改】呢,因为在我看来 docker 容器一旦出现问题了,根本没有修复的必要,直接把容器停止并删除,再启动,这样来得快。所以我们只需要掌握几个基本命令即可,具体如下。 【查】查看本地已有的镜像 Docker images 【增】 运行一个镜像,即启动一个容器 docker run 镜像名 ,比如我们运行 docker run centos 键入这个命令的时候完成了三样操作: 检查本地是否有 hello-world 这个镜像,有->就跳过第二步 没有->依次执行; 就自动去 docker hub 下载这个镜像; 就把镜像加载到容器并且运行。 再用 docker images 查看的时候本地就增加了 centos 镜像。 Tag 为 latest 就表示是最新版本的 centos 系统镜像。因为会从 docker hub 拉取没有的镜像,所以算【增】里面。 【增】拉取指定的镜像文件 docker pull 镜像名:TAG 上面那种通过直接运行的方式拉取的是 docker hub 中最新的镜像,但是有时候我想拉取指定的镜像文件就需要使用 docker pull 命令来拉取。因为从官方拉取镜像文件,通常是比较慢的,所以我们可以通过加速器技术来从国内的镜像仓库拉取。 【查】查看所有的容器 docker ps -a 可以用来查看所有的容器,包括运行中的和已经停止的。 第一个字段就是已经启动的容器 ID,第二个字段就是这个容器是根据哪个镜像生成的。但是上面这个命令只是临时启动一下容器,上面图中的 status 是 exited(0),表示容器是退出状态。如果想容器在后台运行,所以我们需要启动守护式容器才可以,只要在启动命令中添加一个 -d 参数,即 docker run -d centos 就可以了。 【查】查看镜像/容器的具体信息 docker inspect 镜像 ID(镜像名)/容器 ID(容器名) docker inspect centos 这个命令是返回一个镜像或者容器详细信息的 json 串。其中包括 ID,IP,版本,容器的主程序等非常多的信息,根据这些信息我们可以进行二次开发。在这个命令的基础之上增加一个-f参数我们可以指定获取自己需要的信息,比如获取redis容器的IP地址,内存信息,CPU使用情况。docker inspect -f '{{.NetworkSettings.IPAddress}}' [ID /Name] 【查】进入容器 docker run -it centos 即启动一个交互式容器 -it 完成容器终端和当前终端进行关联,即当前终端的显示就会切换到容器终端的显示。 查看容器目录结构,发现和物理机器的目录结构完全一致,这就是为什么有的人称 docker 容器也称之为虚拟机的原因啦。Exit 可以退出容器终端。 【删】删除容器,docker rm 容器 ID,删除多个容器就可以多个容器 ID 之间用空格隔开即可。 怎么用 Docker 完成持续集成、自动交付、自动部署? 这年头见面不聊点自动化什么的,持续什么的,都不好意思。所以,咱们也要了解一下持续集成,自动交付,自动部署。但是上面说了这么多,没发现 Docker 有那三样功能啊,是的,Docker 是没有这个功能,但是你在完成上述三样自动化的步骤都是依赖 Docker 的。Docker 是这些流程实现的基础,就如同软件开发,软件代码才是根本,开发工具是辅助。所有搭建一个完整的自动化流程还需要 github+jenkins+ registry 三样帮助。 持续集成和自动部署的原理如下图所示: RD 推送代码到 git 仓库或者 svn 等代码服务器上面,git 服务器就会通过 hook通知 jenkins; jenkine 克隆 git 代码到本地,并通过 dockerFile 文件进行编译; 打包生成一个新版本的镜像并推送到仓库 ,删除当前容器 ,通过新版本镜像重新运行。 而在整个过程中 RD 只需要敲入三个命令 Git add * ;Git commit –m “”;Git push即可完成持续集成、自动交付、自动部署。后面通过案例实际演示这个过程的神奇! Docker 还可以很方便的自动扩容哦,一般的自动扩容的两种方式,一种就是Docker 容量扩大,另一种就是 Docker 节点数扩充。第一种就修改配置文件即可,第二种通过简单的拷贝,运行就完成了节点的扩容。 总结 Docker 虽好,可不要贪杯哦!虽然 Docker 具有超轻量化,但是不建议一台机器上面部署太多的应用,同时部署的时候一定要差异化部署,什么意思呢,就是将大量计算的,和内存需要大的,IO 操作频繁的对系统资源需求不一致的部署到同一台宿主机上。 本文讲述的 Docker 使用只是 Docker 整个使用的非常小的一部分,其中最主要的 Docker 镜像构建,就有很多内容可以学习探索,比如构建镜像需要的 Dockerfile 文件。对于测试和运维,我们只需要懂得如何使用 Docker 即可,怎么制作镜像主要还是由开发来完成。 原文发布时间为:2018-04-17 本文作者:唐文广 本文来自云栖社区合作伙伴“数据和云”,了解相关信息可以关注“数据和云”。

优秀的个人博客,低调大师

超全机器学习资料合集!(附下载)

最近在群里发现一些小伙伴在寻找资料的时候总是无处可找,网上出现很多收集免费资料再去打包收钱的人,我看不惯这样的人,所以把自己收集的文件分享给大家。 百度云经常抽风,如果大家遇到了失效的链接,请在评论区给我评论,我会很快的更新。 1:数据挖掘:概念与技术(中文第三版)链接: https://pan.baidu.com/s/1skTjb69 密码: 6ixx 2:矩阵分析.美国 Roger.A.Horn.链接: https://pan.baidu.com/s/1boVDyAN 密码: p85p 3:统计学习方法 李航链接: https://pan.baidu.com/s/1o85OO22 密码: v3ri 4:概率论与数理统计 - 陈希孺.pdf链接: https://pan.baidu.com/s/1o7RTgXc 密码: 7r63 5:模式

优秀的个人博客,低调大师

Android Design Support Library全解:Part 2 Snackbar

Android Design Support Library系列第2弹: Snackbar “Providing lightweight, quick feedback about an operation is a perfect opportunity to use a snackbar.” image.png SnackBar是Design Support Library中很实用的控件,它可以在屏幕的底部展示快速消息,功能类似于Toast,但更加灵活和强大: SnackBar会在交互或者超时之后自动消失; SnackBar可以包含一个Action动作,来触发事件; SnackBar所展示的信息是UI的界面的一部分,它将出现于所有页面元素的之下,而Toast的是覆盖UI界面; 统一时间内,只会显示一条SnackBar。 因为SnackBar和Toast的功能相近,所以SnackBar继承了很多Toast的属性和方法,比如标识显示时间长短的LENGTH_LONG and LENGTH_SHORT。 使用方法 SnackBar的使用方法大致如下: Snackbar.make(view, message, duration) .setAction(action message, click listener) .show(); 其中: make() – 创建SnackBar来显示信息; setAction() – 设置Action事件; show() – 显示SnackBar; 需要说明的参数: make方法的第一个参数view,代表着SnackBar所要依附的父视图(parent view); make方法的最后一个参数duration,代表着SnackBar出现的时间,超过该时间之后便会消失。 下面我们看一个实例: Snackbar.make(rootlayout, "Hello SnackBar!", Snackbar.LENGTH_SHORT) .setAction("Undo", new View.OnClickListener() { @Override public void onClick(View v) { // 点击事件 } }) .show(); 其中,rootlayout为上一节中,包含FAB的framelayout,点击悬浮按钮就会弹出Snackbar。 Snackbar-framelayout 虽然Snackbar出现了,但是和我们预期的还是有差距,我们希望Snarkbar出现在最下方时,FAB等控件可以随之上移,比如下面的效果: Snackbar-with-CoordinatorLayout 这就需要配合CoordinatorLayout 控件来使用,我们会在后续的篇章里介绍。 自定义Snackbar样式 虽然可以通过setActionTextColor方法来设置Action字体样式,但是在实际的使用中,往往需要让Snackbar显示出不同的样式(字体和颜色)来体现出不同的意义。 如何为Snackbar添加背景颜色 你可以通过getView() 方法获取Snackbar所在的View,然后就可以在对它采用任意的背景颜色:snackbar.getView().setBackgroundColor(colorId); 下面是ColoredSnackbar类,它利用装饰器模式封装了一些方法,可以根据用户指定的类型显示不同背景颜色。 //彩色 public class ColoredSnackbar { //红色 private static final int red = 0xfff44336; //绿色 private static final int green = 0xff4caf50; //蓝色 private static final int blue = 0xff2195f3; //橙色 private static final int orange = 0xffffc107; //获得当前SnackBar所在的View private static View getSnackBarLayout(Snackbar snackbar) { if (snackbar != null) { return snackbar.getView(); } return null; } //装饰器 private static Snackbar colorSnackBar(Snackbar snackbar, int colorId) { View snackBarView = getSnackBarLayout(snackbar); if (snackBarView != null) { snackBarView.setBackgroundColor(colorId); } return snackbar; } //使用蓝色表示一般信息 public static Snackbar info(Snackbar snackbar) { return colorSnackBar(snackbar, blue); } //使用橙色表示提醒信息 public static Snackbar warning(Snackbar snackbar) { return colorSnackBar(snackbar, orange); } //使用红色表示警告信息 public static Snackbar alert(Snackbar snackbar) { return colorSnackBar(snackbar, red); } //使用绿色表示确认信息 public static Snackbar confirm(Snackbar snackbar) { return colorSnackBar(snackbar, green); } } 其使用方式很简单,先构建正常的SnackBar,然后调用ColoredSnackBar进行装饰: Snackbar snackbar = Snackbar.make(getView(), R.string.hello_snackbar, Snackbar.LENGTH_SHORT); ColoredSnackBar.alert(snackbar).show(); 效果如下: ColoredSnackBar 更多关于Design Support Library中控件的讲解将会在持续更新,欢迎关注。

优秀的个人博客,低调大师

中间人攻击&防御方式全解

关于网络安全有一个非常有意思的事,就是随着技术的变化,古老的网络攻击方式还会再次被利用。正如中间人攻击(MiTM)。这种攻击的目的很简单,就是在有线或者无线连接的中间放置一个攻击者。但是,随着云计算、物联网(IoT)、BYOT等网络技术的发展,攻击者也开始寻找新的方式以使那些古老的攻击方式可以重新被利用。下面是每个专业的网络人员都应该知道的关于MiTM攻击的各种方式。 MiT-cloud (MiTC) 过去这几年,云计算越来越受欢迎,一个常见的云服务就是云存储,很多企业都在使用。这些云服务使得庞大的数据传输和存储工作变得很简单。这个领域的参与者有Dropbox、OneDrive以及Google Drive等等。通常情况下,这些服务不会要求你每次使用服务的时候都要重新登录,因为你验证后,它会在你的本地系统上保留会话令牌(token)。MiTC就是利用的会话管理。如果攻击者获取了你的token,他们就能访问你的账户,这样,他们就能窃取你的数据,更改文件信息,或是上传恶意软件使你的电脑感染病毒。 MiT-browser (MiTB) 你上一次写支票是什么时候?我是想说,如今大多数人都使用网上银行。MiTB攻击就发生在这个时候,攻击者会诱导你下载木马(Trojan)。一旦你访问特定的财务或银行网站的时候,恶意软件就会往你访问的页面注入新的HTML代码,然后诱导你输入SSN号、ATM PIN码或是银行路由代码。MiTB会把它自己直接集成到网页上,还能保持原有的域名和SSL设置,看起来和真正的网页一样。 MiT-mobile (MiTMO) 攻击者不光针对台式机和笔记本。很多用户可能更多的是在他们的智能手机上进行转账付款等操作,这就给攻击者创造了更多的机会。这也是为什么MiTMO越来越受到关注的原因。这种攻击关注移动交易验证码(mTANs)以及其它各种类型的交易验证码。这种类型的中间人攻击会拦截SMS流量,并且捕捉这些代码,然后把它们转发给攻击者。MiTMO给带外身份验证系统带来了很大的挑战。 MiT-app (MiTA) 不知道你是不是和我一样,还记得有智能手机以前的生活,那时你可能会有很多灵感,如今这些想法都已经被智能手机替代了。随着智能手机的发展,应用程序也迅速激增,如果应用程序没有执行有效的证书验证,那就给了MiTA攻击的机会。MiTA会让攻击者插入一个自签名的证书,来和应用程序通信。它的工作原理是利用应用程序处理信任的方式,扩展MiTM攻击模式。 MiT-IoT 随着越来越多的用户和企业都开始采用IoT(物联网),MiTM攻击也越来越受到关注。其中有一种类型的攻击就是MiT-IoT,这种攻击方式是利用传递信任和较差的证书验证。举个例子来说,一种能够显示用户的Google 日历的IoT冰箱就发现没有验证SSL证书。这会导致攻击者利用这种漏洞安装一个MiTM攻击,窃取用户的Google证书。 上面说的每种攻击都是对网络安全专业人士的挑战,但是,有一些方法可以减少这些攻击发生。具体方法如下: • 通过采用动态ARP检测、DHCP Snooping等控制操作来加强网络基础设施 • 采用传输加密:SSL和TLS可以阻止攻击者使用和分析网络流量。像Google等公司如今都有高级的网站搜索引擎优化,默认状态下都提供HTTPS。 • 使用CASBs(云访问安全代理):CASBs可以提供加密、访问控制、异常保护以及数据丢失保护等一系列功能。 • 创建RASP(实时应用程序自我保护):这是一个新概念,内置于应用程序中,用来防止实时攻击。 • 阻止自签名证书:自签名证书很容易伪造。但是目前还没有撤销它们的机制。所以,应该使用有效证书颁发机构提供的证书。 • 强制使用SSL pinning:这是对抗MiTM攻击的另一种方式。使用有效证书颁发机构提供的证书是第一步,它是通过返回的受信任的根证书以及是否与主机名匹配来验证该服务器提供的证书的有效性。通过SSL pinning可以验证客户端检查服务器证书的有效性。 • 安装DAM(数据库活动监控):DAM可以监控数据库活动,检测篡改数据。 MiTM攻击是一个很大的挑战,它是利用用户和用户连接的服务器之间的信任。这种攻击的危险之处在于,用户想当然的认为他们的连接很安全。只有我们开始意识到这种攻击的危险真正存在,并且花很多时间去进行适当的控制时,比如加密、适当的验证、强大的应用程序验证以及通过系统来检测篡改等,才可以防御MiTM攻击。 作者:Michael Gregg 翻译:周南 来源:51CTO

优秀的个人博客,低调大师

首尔2017年公共区域全覆盖免费WiFi

韩国首都首尔市政府近日透露,到2017年,全市所有的公共区域都将提供免费的WiFi服务。这也是首尔市进一步增强其数字平台的举措之一。 首尔市政府表示,免费WiFi服务还将覆盖地铁和公交车,并表示,将同韩国中央政府一道确保所提供的网络质量。 首尔市市长朴元淳(Park Won-soon)表示,市政府将在未来5年内投资4605亿韩元(约合24.87亿元人民币)用于促进数字经济领域增长。 按照《首尔数字总规划2020》,首尔还将扩大物联网的应用。首尔计划建立一个综合停车系统,让车主可以利用智能手机检查车辆停放的位置。到2020年,将覆盖550个公共和私人停车位。 朴元淳表示:“到2020年,首尔市约有50%的公共数字事业会由民间部门主导,涉及企划、实行、运营到评价的全过程。我们将努力解决各种问题,在2020年将首尔打造成世界领先的数字首都。” 根据规划,首尔将借助数字手段,加强与市民的沟通,同时加强监管。到2020年,该市将开发扶持30个智能产业相关企业发展。首尔还会建设综合生活福利信息系统,对市民提供更智能的数字化服务。而在2016年,首尔上岩将构建云计算中心,到2020年,首尔市数据中心可实现100%云计算。 本文转自d1net(转载)

优秀的个人博客,低调大师

【干货】全自主研发Docker容器调度引擎——Newbon

背景: 大家所熟知的Docker容器调度引擎包括,K8S, Swarm, Mesos和Rancher,这些调度引擎都是开源的国外引擎,各有各的特点。在同客户和圈内人士沟通中,很多人直言国内容器创业公司大多只是将各种开源组件集成在一起,同质化严重,没有核心竞争力。作为国内第一批的容器创业公司——Ghostcloud精灵云,深知国内需要在容器的诸多领域拥有真正完全可控,同时具有核心竞争力的产品。因此,容器云平台最核心的调度引擎迫切需要一个完全可控,自主的产品,在这种背景下Newbon应运而生。Newbon取自“牛犇”的谐音,意在构建一个稳定的,牢固的容器调度引擎。接下来就简单介绍一下Newbon的实现细节,并通过一系列视频进行功能展示。 组成: Newbon包含几个核心部分: l Api-Server : 为UI和第三方集成提供调用接口。 l Scheduler : 负责解释定义,收集数据和执行调度。 l DNS/ETCD : 负责服务注册,服务发现,订阅和容器主机访问。 l Executer :负责执行Server端下发命令。 l Monitor : 负责监控主机和容器的各种状态。 l Heapster : 负责健康检查。 l Calico+ : 经过二次开发的基于Calico的网络插件。 l Nginx : 七层负载均衡器。 l HAProxy : 四层/七层负载均衡器。 l Keepalive : 高可用组件。 典型逻辑结构: 下面是典型的逻辑结构图: 最上层是高可用集群,中间接负载均衡器,底层接多个应用服务,从这幅图就能看出,Newbon从设计之初就支持高可用,负载均衡和弹性伸缩,以及多服务挂载。 接下来我们重点介绍下Newbon中负责解释定义,收集数据和执行调度的核心组件Scheduler。 Scheduler功能包括: l 解释服务定义 l 选择合适的节点创建容器 l 监控节点和容器运行状态 l 服务注册和注销 l 自动扩容和缩容 l 灰度升级(Rolling Upgrade) 解释服务定义: 结合解释服务定义,下面是一个服务示例: 应用支持的扩展配置: 健康检查配置支持(TCP): 健康检查配置支持(Http): 服务配置: 调度配置: 高可用集群: 服务发现,服务注册和注销: 在容器调度引擎中,这三个过程可以说是最核心的地方。Newbon借鉴了多个调度引擎的优点,使用了ETCD和DNS并结合控制服务器来实现以下功能: · 创建服务后自动创建DNS记录用于访问相关容器: § A记录,通过域名访问单个容器和一组容器。 § SRV记录,记录容器提供的服务协议、端口、优先级和提供服务的IP列表。 · 容器状态健康后注册SRV信息: · 当容器停止或处于不健康状态时,会注销DNS A记录和SRV信息。 下面就是一个DNS纪录示例: 自动扩容和缩容: 这一部分主要通过以下方式实现: Agent monitor 模块实时监测容器cpu和内存使用情况: 定义性能指标阈值和容器运行上限和下限。 扩容: 当容器平均性能指标超过阈值一段时间(1分钟)后启动自动扩容,创建更多容器以达到 阀值要求的90%。 当没有主机资源运行新容器时,自动申请新主机(限公有云环境)。 缩容: 当一段时间(3分钟)负载持续低于阈值80%启动缩容。 优先删除新创建容器和主机,以释放资源和降低运营成本。 下面是一个扩容的示意图: 功能展示: 接下来我们将通过视频的方式给大家展示Newbon所支持的一系列功能,本期重点展示Newbon的自动扩展功能: https://v.qq.com/x/page/i03670gm0fh.html Q&A: Q: 既然已经有K8S, Swarm, Mesos, Rancher等调度引擎,为什么精灵云还要自主研发调度引擎Newbon呢? A: 调度引擎是容器云平台最核心的部分,开源固然可以快速上手,快速搭建系统,但是任何一个开源系统实际是由一个或多个公司主导的,因此在使用中经常会受制于国外。开源系统由于需求和贡献者多,因此会导致系统异常庞大,企业往往只需要使用20%功能,但是却要去维护80%的其他系统。因此,精灵云从一开始就选择自主研发调度框架,做到完全自主可控,为企业级用户提供更好的服务。 Q: Newbon 跟其他容器调度相比有何优势? A: Newbon吸取各调度引擎的长处,可以说是目前国内定制能力最强,支持功能丰富的调度框架,包括在网络、应用迁移、应用快照、模板、负载均衡、弹性伸缩、高可用、CI/CD集成、灰度发布和回滚、镜像集成、日志监控等方面都有着非常大的优势。 Q: Newbon稳定吗?有多少用户在使用? A: Newbon虽然是最近才对外公布,但实际是精灵云核心研发团队多年的积累。团队在内核和分布式领域有丰富的经验,主要来自于Veritas, EMC,微软和IBM,平均拥有10年以上分布式系统研发经验,曾负责华为存储软件的OEM工作。Veritas可以说是分布式领域的兵工厂,它的Veritas Cluster Server是最早的分布式中间件,K8S容器负责人Dawn Chen也曾就职于Veritas。因此,Newbon是集众家之所长,并且在精灵云的公有云上得到了充分的验证,支撑数万用户和数十万的容器调度。Newbon从EcOS 2.0开始内置,目前已经在多家中大型企业得到运用。

优秀的个人博客,低调大师

演讲式 AI 陪练引擎设计:PPT 内容解析、翻页节奏感知与多模态评分的工程实现

对话陪练(销售话术、客诉处理)评估的是"说什么"——AI 扮演客户,看学员的应对是否得当,核心是内容与策略的匹配。演讲陪练评估的是"怎么说"——同样一份 PPT、同一篇讲稿,讲得流畅与讲得磕绊是两种结果,全程念稿与脱稿转述是两种水平,压着时间讲完与超时一半更是天壤之别。核心是表现与基准的偏离度。这个差异带来三个全新的工程问题:问题一:内容基准从哪来? 对话陪练的基准是"标准应对话术",通常几句话就够。演讲陪练的基准是"这 31 页 PPT 每页应该讲什么"——一份 31 页的方案汇报,全程应该讲 40 分钟,每页都有该覆盖的要点。基准必须做到页级粒度,否则评估无从谈起。问题二:翻页节奏怎么感知? 现场演讲中"讲到哪页了"由演讲者翻页决定,AI 陪练要跟着学员的节奏走:学员说"下一页",界面要翻页;学员第 3 页还没讲完就开始讲第 4 页的内容,AI 要知道当前应该停在第 3 页——否则"这一页漏讲了"的判定全部错位。问题三:表现质量怎么量化? "讲得好不好"在人工评委那里是感觉,在 AI 这里必须拆成可计算的信号:语速(每分钟字数)、停顿(异常长停顿的次数与分布)、口头禅密度("嗯""然后"的每分钟频次)、脱稿程度(演讲内容与 PPT 原文的逐字重合度)、时间管控(实际时长 vs 预算时长)。三个问题对应本文的三个核心模块:页级内容基准、翻页感知状态机、多维评分引擎。先看整体架构。

优秀的个人博客,低调大师

新能源汽车充电站AI安全预警系统方案:多模态感知破解占位与通行乱象

随着新能源汽车保有量的激增,充电站“建得多、用得乱”的问题日益凸显。燃油车占位、非机动车乱停、场内超速逆行等行为,不仅降低了充电设施利用率,更埋下了安全隐患。传统的道闸+地锁方案成本高、体验差,且无法应对复杂动态场景。新能源汽车充电站AI安全预警系统方案通过纯视觉感知与边缘智能分析,实现了对场站全要素的实时理解与主动干预,为充电运营商提供了轻量化、高精度的数字化治理新路径。

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册