首页 文章 精选 留言 我的

精选列表

搜索[快直播],共10000篇文章
优秀的个人博客,低调大师

esbuild —— 比 Webpack 快 100 倍的打包和压缩工具

esbuild 是 Go 编写的 JavaScript 打包和压缩工具,支持 TypeScript。 根据项目介绍中的 Benchmark测试结果,在使用同一份代码 (three.js) 的情况下,esbuild 比其他打包工具(rollup / webpack / parcel 等)快了至少 100 倍。Vue.js 作者尤雨溪的新工具 Vite 也是基于 esbuild 转换库来添加对 TypeScript 的支持。 主要特性 速度极快,无需缓存 支持 ES6 和 CommonJS 模块 支持Tree shaking 适用于 Go 和 JavaScript 的 API 支持TypeScript和JSX语法 生成Source map 插件 加载器 压缩&打包 …… Benchmark 测试对比

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

5G网速这么快,辐射一定很大吧

基站辐射问题从3G建设开始就被广泛议论,在媒体和新闻资讯中也经常能看到有小区住户联合抗议,阻止运营商在楼顶或小区内安装信号基站。 到了5G时代,网速达到10Gb/s,是3G和4G的数倍,那它对人体的辐射会不会更大呢? 基站离我们有多近 想知道基站对人体辐射有多大,那就先要找找这些基站在哪里。 基站的设置距离完全基于高中物理的一个公式c =λν,光速c是一个固定值,为了网速能变快,就要使用更高频率v来传输更多数据,频率高会导致波长λ变短,因此信号的传输距离就会越短。 因此,2G基站覆盖距离约为10公里,3G约为5公里,4G就只有3公里了,而5G就只有500米左右了。 但实际操作中,地形复杂且样貌多变,山岳、丘陵、池塘、水库、高楼、桥梁等都会影响信号的传递,为了用户有良好上网体验,运营商会进行高密度铺设。 作为全球5G第一城,深圳在不到2000平方千米的土地上安装了超过4.6万个5G基站塔,平均每0.04平方千米一个,计算的再仔细一点就是200米左右就有一个5G基站。 深圳市目前基站密度最大的是福田区,在78.66平方公里的区域内安装了5260个5G基站,平均每0.01平方千米一个,每100米就有一座5G基站。 全国各地的5G覆盖建设也保持着与深圳相似的基站铺设密度,如果你生活在深圳或5G覆盖的区域内,留心观察的话,一定能找到5G基站的“方盒子”。 基站辐射有多大 这个身怀绝技的“邻居”,是个24小时不间断工作的“劳模”。那它产生的辐射会对人体有影响么? 其实,不止手机信号,生活中很多物品都会产生电磁辐射,电视和电脑的屏幕,微波炉与电磁炉的加热功能,太阳光的照射也是一种辐射,地球本身就是一个大磁场,我们时刻生活在数以万计的不同辐射中。 按照国家标准的要求,通信基站的电磁辐射必须小于40微瓦/平方厘米,在实际执行中,运营商考虑到信号叠加,每台基站会控制在8微瓦/平方厘米以内。 而吹风机的辐射约为100微瓦/平方厘米,电脑和电视约为70微瓦/平方厘米,与这些相比基站的辐射很小,对人体的危害也很小。 你所在的地方覆盖5G信号了么?你有看到过5G基站么?

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

JFinal一行代码搞定增删改,要的就是快

一、拓展篇 首先需要重写getModel方法,但是这有个问题,重写之后的方法和getModel的参数有点冲突,所以选择不重写,另外写个方法占且叫getBaseModel吧,getBaseModel的实现如下 /** * * @Description: 基础类扩展,实现在一些快速的一步操作 * @author lianghao * @date 2016年2月26日 下午3:02:04 */ public class BaseController extends Controller { public <T extends Model<?>> T getBaseModel(Class<?> modelClass, String... removeParas) { T model = null; try { model = (T) modelClass.newInstance(); } catch (Exception e) { logger.error("baseController init exception" + e); } Map<String, String[]> parasMap = getParaMap(); Map<String, String> removeParasMap = new HashMap<String, String>(); for (String para: removeParas) { removeParasMap .put(para, para); } for (Entry<String, String[]> e : parasMap.entrySet()) { if (removeParasMap.containsKey(e.getKey())) continue; if (e.getValue()[0] != null) model.set(reqParaFormat.paraToFormat(e.getKey()), e.getValue()[0]); } return model; } } 这里面有两个方法去转换参数格式,如果请求的参数是根据自己的需要实现不同的转换,我这边以请求的是驼峰转成数据库的大写如userName转成USER_NAME,具体的实现可以根据自己的需求做封装,有了这个BaseModel增改就很方便了,扩展如下 public boolean save(Class<?> modelClass, String... keys){ Model model = getBaseModel(modelClass, keys); return model.save(); } public boolean update(Class<?> modelClass, String... keys){ Model model = getBaseModel(modelClass, keys); return model.update(); } /** 必须传入主键id **/ public boolean delete(Class<?> modelClass, String... keys){ Model model = getBaseModel(modelClass, keys); return model.delete(); } 这样就搞定了 使用篇 完成了上面的扩展,使用时,只要把你的Controller继成你的BaseController,就可以了,使用如下,一步增删改 /** 后面参数加入不属于这个表的参数过滤,如果没有就不加 **/ save(User.class, "test"); update(User.class); delete(User.class); 又节省了你的开发时间,只需一行代码就搞定了增删改,妈妈再也不用担心我的学习

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

Docker Hub 迎来大幅改版整合,全新特性先睹为快!

出品丨Docker公司(ID:docker-cn)编译丨小东每周一、三、五,与您不见不散! Docker 近日宣布将 Docker Store 和 Docker Cloud 集成到 Docker Hub 中,为用户提供一种集查找、存储以及共享容器镜像的一站式体验。这意味着: Docker 官方镜像和经验证的发布者镜像现在可以直接在 Docker Hub 上进行查找和下载了; Docker Hub 拥有了全新的用户体验; 数百万的个人用户以及数十万的组织都在使用 Docker Hub、Store 和 Cloud 来满足其容器内容的需要。本次 Docker Hub 的更新就是要将这些产品中用户最熟悉、最喜欢的功能集中在一起,同时围绕用户、镜像仓库和团队管理的易用性等方面来处理已知的 Docker Hub 请求。下面将对新特性进行简单介绍。 镜像仓库 在镜像仓库页面可以查看最近推送的标签和自动构建的内容; 添加了镜像仓库标签分页功能; 改进了在 Docker Hub 主页登录时的镜像仓库过滤机制; 组织和团队 作为一名组织的管理者,可以在一瞥间快速查看镜像仓库中的团队权限; 通过电子邮件将 Docker Hub 用户添加到团队(如果您不记得他们的 Docker ID); 全新的自动化构建 使用构建缓存加快构建速度; 在构建中可以添加环境变量和进行运行测试; 对现有的镜像仓库添加自动化构建; 注意:对于组织,需要将 GitHub 和 BitBucket 帐户重新链接到您的组织中,这样才可以使用全新的自动化构建。现有的自动化构建将在未来几个月内迁移到这个新系统。 浏览 https://docs.docker.com/docker-hub/builds/classic/ 了解更多详细。 改进容器镜像过滤机制 按官方、发布者和已认证镜像进行过滤,确保每一个搜索出来的 Docker 镜像的质量水平; 根据类别进行过滤,快速挖掘您正在寻找的镜像类型; 现有的 URL 将继续有效,您可以在适当的时候进行自动重定向。无需更新任何自定义标签; 经验证的发布者镜像和插件 经验证的发布者镜像现已在 Docker Hub 上提供。 与官方镜像类似,这些镜像已经通过了 Docker 官方的审查。Docker 维护官方镜像库时,经验证的发布者镜像将由我们的第三方软件供应商提供。 下一步 随着时间的推移,我们将向用户推出全新的 Docker Hub,浏览 https://hub.docker.com 了解更多相关信息。

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

SMProxy,让你的数据库操作快三倍!

中文 | English SMProxy 喜欢请star github: https://github.com/louislivi/smproxy Swoole MySQL Proxy 一个基于 MySQL 协议,Swoole 开发的MySQL数据库连接池。 原理 将数据库连接作为对象存储在内存中,当用户需要访问数据库时,首次会建立连接,后面并非建立一个新的连接,而是从连接池中取出一个已建立的空闲连接对象。使用完毕后,用户也并非将连接关闭,而是将连接放回连接池中,以供下一个请求访问使用。而连接的建立、断开都由连接池自身来管理。 同时,还可以通过设置连接池的参数来控制连接池中的初始连接数、连接的上下限数以及每个连接的最大使用次数、最大空闲时间等等。也可以通过其自身的管理机制来监视数据库连接的数量、使用情况等。超出最大连接数会采用协程挂起,等到有连接关闭再恢复协程继续操作。 特性 支持读写分离 支持数据库连接池,能够有效解决 PHP 带来的数据库连接瓶颈 支持 SQL92 标准 采用协程调度 支持多个数据库连接,多个数据库,多个用户,灵活搭配 遵守 MySQL 原生协议,跨语言,跨平台的通用中间件代理 支持 MySQL 事务 支持 HandshakeV10 协议版本 完美兼容 MySQL4.1 - 8.0 兼容各大框架,无缝提升性能 设计初衷 PHP 没有连接池,所以高并发时数据库会出现连接打满的情况,Mycat 等数据库中间件会出现部分 SQL 无法使用,例如不支持批量添加等,而且过于臃肿。所以就自己编写了这个仅支持连接池和读写分离的轻量级中间件,使用 Swoole 协程调度 HandshakeV10 协议转发使程序更加稳定,不用像 Mycat 一样解析所有 SQL 包体,增加复杂度。 环境 Swoole 2.1+ PHP 7.0+ 安装 (推荐)直接下载最新发行版的 PHAR 文件,解压即用: https://github.com/louislivi/smproxy/releases/latest 或者使用 Git 切换任意版本: git clone https://github.com/louislivi/smproxy.git composer install --no-dev # 如果你想贡献你的代码,请不要使用 --no-dev 参数。 运行 需要给予 bin/SMProxy 执行权限。 SMProxy [ start | stop | restart | status | reload ] [ -c | --config <configuration_path> ] SMProxy -h | --help SMProxy -v | --version Options: start 运行服务 stop 停止服务 restart 重启服务 status 查询服务运行状态 reload 平滑重启 -h --help 帮助 -v --version 查看当前服务版本 -c --config 设置配置项目录 SMProxy连接测试 测试SMProxy与测试MySQL完全一致,MySQL怎么连接,SMProxy就怎么连接。 推荐先采用命令行测试:(请勿使用MYSQL8.0客户端链接测试) mysql -uroot -p123456 -P3366 -h127.0.0.1 也可采用工具连接。 没用框架的 PHP 7.2.6 没用:0.15148401260376,用了:0.040808916091919 未使用连接池: 0.15148401260376 使用连接池: 0.040808916091919 ThinkPHP 5.0 未使用连接池: 使用连接池: Laravel 5.7 未使用连接池: 使用连接池: MySQL 连接数 未使用连接池: 使用连接池: 请以实际压测为准,根数据量,网络环境,数据库配置有关。测试中因超出最大连接数会采用协程挂起 等到有连接关闭再恢复协程继续操作,所有并发量与配置文件maxConns设置的不合适,会导致比原链接慢,主要是为了控制连接数。 交流 QQ群:722124111 配置文件 配置文件位于 smproxy/conf 目录中,其中大写 ROOT 代表当前 SMProxy 根目录。 database.json { "database": { "account": { "自定义用户名": { "user": "必选,数据库账户", "password": "必选,数据库密码" }, "...": "必选1个,自定义用户名 与serverInfo中的account相对应" }, "serverInfo": { "自定义数据库连接信息": { "write": { "host": "必选,写库地址 多个用[]表示", "port": "必选,写库端口", "timeout": "必选,写库连接超时时间(秒)", "account": "必选,自定义用户名 与 account中的自定义用户名相对应" }, "read": { "host": "可选,读库地址 多个用[]表示", "port": "可选,读库端口", "timeout": "可选,读库连接超时时间(秒)", "account": "可选,自定义用户名 与 account中的自定义用户名相对应" } }, "...": "必选1个,自定义数据库连接信息 与databases中的serverInfo相对应,read读库可不配置" }, "databases": { "数据库名称": { "serverInfo": "必选,自定义数据库连接信息 与serverInfo中的自定义数据库连接信息相对应", "maxConns": "必选,该库服务最大连接数,支持计算", "maxSpareConns": "必选,该库服务最大空闲连接数,支持计算", "startConns": "可选,该库服务默认启动连接数,支持计算", "maxSpareExp": "可选,该库服务空闲连接数最大空闲时间(秒),默认为0,支持计算", "charset": "可选,该库编码格式" }, "...": "必选1个,数据库名称 多个数据库配置多个" } } } maxConns,maxSpareConns,startConns 推荐设置为server.json中配置的worker_num的倍数swoole_cpu_num()*N 多个读库,写库 目前采取的是随机获取连接,推荐将maxConns,startConns,startConns至少设置为max(读库,写库)*worker_num 的1倍以上 server.json { "server": { "user": "必选,SMProxy服务用户", "password": "必选,SMProxy服务密码", "charset": "可选,SMProxy编码,默认utf8mb4", "host": "可选,SMProxy地址,默认0.0.0.0", "port": "可选,SMProxy端口,默认3366 如需多个以`,`隔开", "mode": "可选,SMProxy运行模式,SWOOLE_PROCESS多进程模式(默认),SWOOLE_BASE基本模式", "sock_type": "可选,sock类型,SWOOLE_SOCK_TCP tcp", "logs": { "open":"必选,日志开关,true 开 false 关", "config": { "system": { "log_path": "必选,SMProxy系统日志目录", "log_file": "必选,SMProxy系统日志文件名", "format": "必选,SMProxy系统日志目录日期格式" }, "mysql": { "log_path": "必选,SMProxyMySQL日志目录", "log_file": "必选,SMProxyMySQL日志文件名", "format": "必选,SMProxyMySQL日志目录日期格式" } } }, "swoole": { "worker_num": "必选,SWOOLE worker进程数,支持计算", "max_coro_num": "必选,SWOOLE 协程数,推荐不低于3000", "pid_file": "必选,worker进程和manager进程pid目录", "open_tcp_nodelay": "可选,关闭Nagle合并算法", "daemonize": "可选,守护进程化,true 为守护进程 false 关闭守护进程", "heartbeat_check_interval": "可选,心跳检测", "heartbeat_idle_time": "可选,心跳检测最大空闲时间", "reload_async": "可选,异步重启,true 开启异步重启 false 关闭异步重启", "log_file": "可选,SWOOLE日志目录" }, "swoole_client_setting": { "package_max_length": "可选,SWOOLE Client 最大包长,默认16777216MySQL最大支持包长" }, "swoole_client_sock_setting": { "sock_type": "可选,SWOOLE Client sock 类型,默认tcp 仅支持tcp" } } } user,password,port,host 为SMProxy的账户|密码|端口|地址(非Mysql数据库账户|密码|端口|地址) 可随意设置用于SMProxy登录验证 例如默认配置登录为mysql -uroot -p123456 -P 3366 -h 127.0.0.1 SMProxy登录成功MySQL COMMIT会提示Server version: 5.6.0-SMProxy worker_num 推荐使用swoole_cpu_num() 或 swoole_cpu_num()*N MySQL8.0 SMProxy1.2.4及以上可直接使用 SMProxy1.2.4以下需要做兼容处理MySQL-8.0默认使用了安全性更强的caching_sha2_password插件,其他版本如果是从5.x升级上来的, 可以直接使用所有MySQL功能, 如是新建的MySQL, 需要进入MySQL命令行执行以下操作来兼容: ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password'; flush privileges; 将语句中的 'root'@'%' 替换成你所使用的用户, password 替换成其密码. 如仍无法使用, 应在my.cnf中设置 default_authentication_plugin = mysql_native_password 其他学习资料 MySQL协议分析 :https://www.cnblogs.com/davygeek/p/5647175.html MySQL官方协议文档 :https://dev.MySQL.com/doc/internals/en/connection-phase-packets.html#packet-Protocol::Handshake Mycat源码 :https://github.com/MyCATApache/Mycat-Server Swoole :https://www.swoole.com/

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

《快学 Go 语言》第 7 课 —— 冰糖葫芦串

字符串通常有两种设计,一种是「字符」串,一种是「字节」串。「字符」串中的每个字都是定长的,而「字节」串中每个字是不定长的。Go 语言里的字符串是「字节」串,英文字符占用 1 个字节,非英文字符占多个字节。这意味着无法通过位置来快速定位出一个完整的字符来,而必须通过遍历的方式来逐个获取单个字符。 我们所说的字符通常是指 unicode 字符,你可以认为所有的英文和汉字在 unicode 字符集中都有一个唯一的整数编号,一个 unicode 通常用 4 个字节来表示,对应的 Go 语言中的字符 rune 占 4 个字节。在 Go 语言的源码中可以找到下面这行代码,rune 类型是一个衍生类型,它在内存里面使用 int32 类型的 4 个字节存储。 type rune int32 使用「字符」串来表示字符串势必会浪费空间,因为所有的英文字符本来只需要 1 个字节来表示,用 rune 字符来表示的话那么剩余的 3 个字节都是零。但是「字符」串有一个好处,那就是可以快速定位。 为了进一步方便读者理解字节 byte 和 字符 rune 的关系,我花了下面这张图 图片 其中 codepoint 是每个「字」的其实偏移量。Go 语言的字符串采用 utf8 编码,中文汉字通常需要占用 3 个字节,英文只需要 1 个字节。len() 函数得到的是字节的数量,通过下标来访问字符串得到的是「字节」。 按字节遍历 字符串可以通过下标来访问内部字节数组具体位置上的字节,字节是 byte 类型 package mainimport "fmt"func main() {var s = "嘻哈china"for i:=0;i<len(s);i++ { fmt.Printf("%x ", s[i]) } } ----------- e5 98 bb e5 93 88 63 68 69 6e 61 按字符 rune 遍历 package mainimport "fmt"func main() {var s = "嘻哈china"for codepoint, runeValue := range s { fmt.Printf("%d %d ", codepoint, int32(runeValue)) } } -----------0 22075 3 21704 6 99 7 104 8 105 9 110 10 97 对字符串进行 range 遍历,每次迭代出两个变量 codepoint 和 runeValue。codepoint 表示字符起始位置,runeValue 表示对应的 unicode 编码(类型是 rune)。 字节串的内存表示 如果字符串仅仅是字节数组,那字符串的长度信息是怎么得到呢?要是字符串都是字面量的话,长度尚可以在编译期计算出来,但是如果字符串是运行时构造的,那长度又是如何得到的呢? var s1 = "hello" // 静态字面量var s2 = ""for i:=0;i<10;i++ { s2 += s1 // 动态构造 } fmt.Println(len(s1)) fmt.Println(len(s2)) 为解释这点,就必须了解字符串的内存结构,它不仅仅是前面提到的那个字节数组,编译器还为它分配了头部字段来存储长度信息和指向底层字节数组的指针,图示如下,结构非常类似于切片,区别是头部少了一个容量字段。 图片 当我们将一个字符串变量赋值给另一个字符串变量时,底层的字节数组是共享的,它只是浅拷贝了头部字段。 字符串是只读的 你可以使用下标来读取字符串指定位置的字节,但是你无法修改这个位置上的字节内容。如果你尝试使用下标赋值,编译器在语法上直接拒绝你。 package mainfunc main() {var s = "hello" s[0] = 'H' } -------- ./main.go:5:7: cannot assign to s[0] 切割切割 字符串在内存形式上比较接近于切片,它也可以像切片一样进行切割来获取子串。子串和母串共享底层字节数组。 package mainimport "fmt"func main() {var s1 = "hello world"var s2 = s1[3:8] fmt.Println(s2) } ------- lo wo 字节切片和字符串的相互转换 在使用 Go 语言进行网络编程时,经常需要将来自网络的字节流转换成内存字符串,同时也需要将内存字符串转换成网络字节流。Go 语言直接内置了字节切片和字符串的相互转换语法。 package mainimport "fmt"func main() {var s1 = "hello world"var b = []byte(s1) // 字符串转字节切片var s2 = string(b) // 字节切片转字符串 fmt.Println(b) fmt.Println(s2) } -------- [104 101 108 108 111 32 119 111 114 108 100] hello world 从节省内存的角度出发,你可能会认为字节切片和字符串的底层字节数组是共享的。但是事实不是这样的,底层字节数组会被拷贝。如果内容很大,那么转换操作是需要一定成本的。 那为什么需要拷贝呢?因为字节切片的底层数组内容是可以修改的,而字符串的底层字节数组是只读的,如果共享了,就会导致字符串的只读属性不再成立。 原文发布时间为: 2018-11-20 本文作者:码洞 本文来自云栖社区合作伙伴“码洞”,了解相关信息可以关注“码洞”。

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

Docker Enterprise 2.1 版本正式上线,全新特性先睹为快!

出品丨Docker公司(ID:docker-cn)编译丨小东每周一、三、五,与您不见不散! 上周,作为市场上领先的企业级容器平台,也是唯一一款专为 Windows 和 Linux 应用程序设计的容器平台 —— Docker Enterprise 2.1 版本正式上线。当 Docker Enterprise 2.1 版本与全新的 Windows Server 应用程序迁移计划中经过行业验证的工具和服务相结合时,组织就可以得到一个实现 Windows Server 应用程序现代化改造以及安全的最佳平台,同时为在任何地方的任何应用程序的持续创新奠定基础。 除了对 Windows Server 的扩展支持外,该版本还通过引入选择性、敏捷性和安全性等来满足企业的关键需求,进一步加强了我们的市场领导地位。 选择性:扩展对 Windows Server 和新 Kubernetes 功能的支持 除了 Windows Server 2016 之外,Docker Enterprise 2.1 版本还增加了对 Windows Server 1709、1803和 Windows Server 2019* 的支持。这意味着企业可以利用 Docker Enterprise for Windows Server Containers 的最新发展来支持广泛的 Windows Server 应用程序集。 更小的镜像规格: 最新版本的 Windows Server 支持更小的镜像规格,这意味着可以提高下载基础镜像和构建应用程序的性能,从而加快应用程序交付速度并降低存储成本。 改进的兼容性要求: 只要使用 Windows Server 1709 及更高版本,主机操作系统和容器镜像就可以使用不同的 Windows Server 版本进行部署,从而使其在共享操作系统上运行容器更加灵活和轻松。 网络功能增强:Windows Server 1709 还引入了对基于 Swarm 的路由网络功能的扩展支持,包括使用覆盖网络时采用入口模式的服务发布和基于 VIP 的服务发现。 除 Windows Server 更新外,Docker Enterprise 还可以进行 Kubernetes 1.11 版本的更新,并支持 Pod 自动缩放以及其他新的 Kubernetes 功能。 敏捷性:更好的洞察力和服务能力 由于许多容器化应用程序是组织的关键性业务,因此组织希望能够在整个生命周期内管理和保护这些应用程序。Docker Enterprise 2.1 版本包含多项增强功能,可以帮助管理员更好地简化集群和应用程序操作: 全新开箱即用式的仪表板:增强后的运行状况仪表板可提供对节点和容器指标的更深入了解,并可以更快地排除问题并及早识别新出现的问题。 在运行时对已知漏洞的可见性:管理员现在可以识别具有已知漏洞的运行容器来更好地分类和修复问题。 任务活动流:管理员可以查看和跟踪注册表中的任务和后台活动,包括正在进行的漏洞扫描或数据库更新等。 大规模管理镜像:在线垃圾收集和基于策略的镜像修剪有助于减少容器镜像无计划地扩展并降低镜像仓库的存储成本。 安全性:增强安全性和合规性 对于处于高度监管行业的许多组织来说,Docker Enterprise 2.1 版本增加了几项新的重要增强功能: SAML 2.0 身份验证:通过 SAML 与首选身份提供商集成,以启用单点登录(SSO)或多重身份验证(MFA)。 FIPS 140-2 认证的 Docker 引擎:Docker Enterprise 中的加密模块已经过 FIPS 140-2 标准的认证,FIPS 140-2 标准同样适用于 FISMA、HIPAA 和 HITECH 等行业。 详细的审计日志:Docker Enterprise 2.1 版本现已包括跨群集和镜像仓库的详细日志来获取完整审计跟踪的用户、操作和时间戳。这些是安全事故发生后的取证分析证明和满足某些合规性规定所必需的。 Kubernetes网络加密:使用包括密钥管理和密钥轮换的可选 IPSec 加密模块来保护所有“主机到主机”的通信。 如何开始 我们很高兴在这里分享 Docker Enterprise 2.1 版本 —— 作为市场上领先的企业级容器平台,也是唯一一款专为 Windows 和 Linux 应用程序设计的容器平台。今天,它可以供大家使用了! 浏览:https://www.docker.com/products/docker-enterprise ,了解关于 Docker Enterprise 2.1 版本的更多详细信息。

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

Docker 社区版 18.09 开放测试,全新内容先睹为快!

出品丨Docker公司(ID:docker-cn)编译丨小东每周一、三、五晚6点10分 与您不见不散! 几周前,我们宣布了将 Docker 社区版(CE)引擎的维护周期进行更改。作为这些更改的一部分,我们正在进行 beta 测试,以向市场提供更高质量的引擎。 我们希望邀请您参与这个 beta 测试,通过安装 beta 包、仔细检查并提交问题。 Docker 社区版 18.09 增加了以下新功能: 基于容器进行构建 —— Docker Engine 的新架构基于 containerd 1.2,并完全支持 Kubernetes 容器集成。 BuildKit 投入使用 —— 通过可选的 BuildKit 集成来访问改进的构建性能(参见幻灯片22-26)和可扩展性。BuildKit 仍然用环境变量进行选择: $ DOCKER_BUILDKIT=1 docker build . 您还可以在 /etc/docker/daemon.json 中设置功能选项来默认启用 BuildKit: {"features":{"buildkit": true}} 支持与 docker 主机的 SSH 连接 —— 客户端现在可以通过 SSH 连接到远程docker守护程序,例如: $ docker -H ssh://me@example.com 安装说明 仅能在未安装先前版本的 docker-ce 的新系统上安装测试版软件包。 $ curl -fsSL test.docker.com -o test-docker.sh $ sh test-docker.sh # helper script installs the beta package $ docker --version # verify install Docker version 18.09.0-ce-beta1, build 78a6bdb 如果发现问题,请访问 https://github.com/docker/for-linux/issues 提交。

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

快问快答 | 助教带你学习数据科学(附答疑视频领取)

Q: 可以推荐一本完全零基础的python书看一下吗?我没有数据基础。 A: 《简明Python教程》 Q:在校生,想搞明白未来的职业发展。 A:我看数据科学相关的岗位有,比如:数据分析,数据挖掘,机器学习,自然语言处理,计算机视觉,深度学习工程师等等,还有推荐算法、搜索算法。 我觉得咱们的培养目标和数据挖掘、机器学习这两个岗位的要求更贴近。当然,像数据分析、自然语言处理、计算机视觉、深度学习,推荐算法等等这些岗位,就是更专业一点,或者说更垂直一点。 我一直觉得机器学习目前还不是一种通用技术,可能很长一段时间内也不会是。所以与其关心具体的技术方向,不如选个自己感兴趣的领域更重要。 我刚看了一下,现在AI相关的岗位种类越来越多了。 **Q:群里的好多人都是有基础的,我们这种完全零基础的怎么办呢?就是一开始不知道该从何入手。**A:捷径就是给每一节

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

技术变化那么快,程序员如何做到不被淘汰?

阿里妹导读:写了这么多年的代码,你是否曾经有过这样的迷茫和困惑——技术发展日新月异,奋力追赶的我们,究竟是技术的主人还是技术的奴隶?今天,我们邀请到了蚂蚁金服的技术专家空融,一起来聊聊技术人的软件世界观。 在浩大的软件世界里,作为一名普通程序员,显得十分渺小,甚至会感到迷茫。我们内心崇拜技术,却也对日新月异的技术抱有深深的恐惧。有时候我会思考难道在技术领域内不断紧跟新潮,不断提升技能就是我的价值所在?那么我是技术的主人还是技术的奴隶? 人之所以迷茫往往是找不到工作生活的重心,感受不到工作或生活的价值。那么什么是价值呢?说的大一点就是我改变了世界,说的小一点就是我的所作所为改善了某些问题。如果不清楚自己的行为、目标、价值三者的关系,那么又何来重心?又如何能分得清重要性与优先级呢? 程序员的迷茫不仅仅是面对技术繁杂的无力感,更重要的是因为长

资源下载

更多资源
Mario

Mario

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

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

WebStorm

WebStorm

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

用户登录
用户注册