首页 文章 精选 留言 我的

精选列表

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

【Spark Summit East 2017】BigDL:Spark上的分布式深度学习库

更多精彩内容参见云栖社区大数据频道https://yq.aliyun.com/big-data;此外,通过Maxcompute及其配套产品,低廉的大数据分析仅需几步,详情访问https://www.aliyun.com/product/odps。 本讲义出自Yiheng Wang在Spark Summit East 2017上的演讲,主要介绍了使用Spark构建大数据平台的分布式的深度学习框架,其结合了“高性能计算”和“大数据”的架构,为Spark上的深度学习功能提供本地支持,演讲中还分享了用户通过BigDL构建的深度学习的应用程序,BigDL允许开发者使用大数据平台进行统一数据存储、数据处理和挖掘、机器学习以及深度学习等。

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

当Docker遇到数据库:在阿里云容器服务中使用RDS

Docker与持久化服务 最近一段时间以来,微服务架构和Docker成为了技术社区的“网红”。其背后的原因是将微服务与Docker的结合在一起对现有的软件生命周期从架构设计、开发测试到运维迭代构成了一种“颠覆性”的力量:微服务鼓励开发者将整个软件解构为较小的功能组件;每个组件能够独立开发、运维、伸缩和容错;组件之间通过标准的服务接口进行通信,而组件可以选择最适合的技术栈来实现。而容器技术进一步拓展了这种解耦性,它能够将软件与其部署环境分离,利用容器敏捷和可移植的使得容器化的组件可以更快地进行创建,在软件流水线不同阶段使用完全相同的镜像部署,不但能够更好的确保软件质量并且更易于维护。 大家在实践中会发现:Docker容器非常适用于无状态的应用,比如Web应用,计算任务等等;利用容器技术,这些应用可以弹性扩展,可以快速部署和回退;然而很多

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

【JavaScript框架封装】实现一个类似于JQuery的基础框架、事件框架、CSS框架、属性框架、内容框架、动画框架整体架构的搭建

版权声明:本文为博主原创文章,未经博主允许不得转载。更多学习资料请访问我爱科技论坛:www.52tech.tech https://blog.csdn.net/m0_37981569/article/details/81055973 /* * @Author: 我爱科技论坛 * @Time: 20180715 * @Desc: 实现一个类似于JQuery功能的框架 * V 1.0: 实现了基础框架、事件框架、CSS框架、属性框架、内容框架、动画框架的搭建 * V 2.0:实现了框架的进一步优化,具有良好的扩展性, 可以支持链式访问 * */ / 主框架: 只做一件事,就是用于获取所有的元素集合 (function (w) { // 定义一个Xframe对象,后面就是他的构造函数 var xframe = function (selector, context) { // 为了使得后面的函数this始终指向的是xframe框架,这里需要修改函数内部this的指向 return this.init.apply(this, [selector, context]); }; // 定义一个初始化函数,用于初始化获取所有的元素集合 // 只要用户使用了类似于JQuery中的选择元素的方法,就开始选择一个元素集合 // 这里的核心功能:实际上是为了使用一个伪数组实现一个类似于JQuery中的链式访问的功能 xframe.prototype.init = function (selector, context) { // 开始构建一个伪数组:{1 : list[0], 2 : list[1], , , , length : list.length} this.length = 0; if (typeof selector === 'string'){ var nodeList = (context || document).querySelectorAll(selector); this.length = nodeList.length; for (var i = 0, len = this.length; i < len; i++){ this[i] = nodeList[i]; } } else if (selector.nodeType){ // 如果获取的是一个元素节点,文本节点,或者属性节点的话 this[0] = selector; this.length++; } // 为了可以支持链式访问必须把这个this对象返回出去 return this; }; // 使用双对象法则继续暴露出去一个对象,进行对象的二次封装 // 【双对象法则的使用】 var $$ = function (selctor, context) { // 这里使用一个简单的异步加载机制,等待所有的DOM元素执行完毕之后再开始继续向下执行 if (typeof selctor === 'function'){ // selector就是DOM元素加载完毕之后的继续向下执行的回调函数 w.onload = selctor; } else { // 如果不是一个函数的话 return new xframe(selecor, context); } } // 添加一个extend方法, 用于扩充一个对象的方法, 扩展向一个类中拷贝方法 $$.extend = function () { // 这里需要分为两种情况: // 1. 如果传过来的是一个参数的话,就相当于是给xframe对象添加方法 // 2. 如果是两个参数的话,就相当于是给一个类扩充方法 var len = arguments.length, target = null, // target 用来存储需要把方法拷贝进去的目标函数 i = 1, // 初始化变量i, 表示需要开始遍历的起始位置标记 key; // 为了防止定义太多的局部变量,可以把后面需要用到的所有局部变量事先在前面定义好 if (len === 0){ return; } else if (len === 1){ // 给xrame对象添加方法 target = xframe.prototype; i--; } else{ // 两个参数的话,那么第一个参数就是我需要拷贝新的方法进去的目标对象 // 如果是两个参数的话:就不需要修改变量i的值了, 直接从第一个位置开始,拿到第一个参数后, 把第二个参数的方法全部拷贝给第一个对象 // 注意: 这里有可能也是三个参数或者是多个参数, 因此也可以吧后面的好几个对象的属性或者方法添加给第一个对象 target = arguments[0]; } // 确定好了target 这个目标对象以后,开始遍历原始对象那个source,把source里面的方法全部都拷贝到这个target对象里面 for (; i < len; i++){ // 这里实际上在遍历一个json对象,json对象的每一项实际上就是一个属性或者方法 for (key in source){ target[key] = arguments[i][key]; } } return target; } // 为了把主框架里面的局部变量暴露出去供其他模块使用 w.xframe = w.$ = $$; })(window); // 公共框架 (function (xframe) { // 需要参与链式访问的(必须使用prototype的方式来给对象扩充方法) xframe.extend({ each : function () { } }); // 不需要参与链式访问的 /*公共部分*/ xframe.extend(xframe, { }); /*字符串处理模块*/ xframe.extend(xframe, { }); /*数组相关*/ xframe.extend(xframe, { }); /*Math*/ xframe.extend(xframe, { }); /*数据类型检验*/ xframe.extend(xframe, { }); })(xframe); // 事件框架 (function (xframe) { // 需要参与链式访问的(必须使用prototype的方式来给对象扩充方法) xframe.extend({ each : function () { } }); // 不需要参与链式访问的 xframe.extend(xframe, { }); })(xframe); // 属性框架 (function (xframe) { // 需要参与链式访问的(必须使用prototype的方式来给对象扩充方法) xframe.extend({ each : function () { } }); // 不需要参与链式访问的 xframe.extend(xframe, { }); })(xframe); // 内容框架 (function (xframe) { // 需要参与链式访问的(必须使用prototype的方式来给对象扩充方法) xframe.extend({ each : function () { } }); // 不需要参与链式访问的 xframe.extend(xframe, { }); })(xframe); // DOM框架 (function (xframe) { // 需要参与链式访问的(必须使用prototype的方式来给对象扩充方法) xframe.extend({ each : function () { } }); // 不需要参与链式访问的 xframe.extend(xframe, { }); })(xframe); // 缓存框架 (function (xframe) { // 需要参与链式访问的(必须使用prototype的方式来给对象扩充方法) xframe.extend({ each : function () { } }); // 不需要参与链式访问的 xframe.extend(xframe, { }); })(xframe); // 基础框架: 基本上都是不需要参与链式访问的 // 实现功能: 如果是一个参数的话,就直接给类添加方法 // 如果是多个参数的话,就表示给指定的对象添加方法 xframe.extend(xframe, { ltrim: function () { }, rtrim: function () { }, trim: function () { }, ajax: function () { }, formateString: function () { }, random: function () { }, isNumber: function () { }, isBoolean: function () { }, isString: function () { }, isUndefined: function () { }, isObject: function () { }, isNull: function () { }, isArray: function () { }, }) // 选择框架 /*** * 如果下面的框架需要用到上面的框架,就直接可以把上面的去全局变量/对象暴露出去,这里是使用了前面的xframe全局变量 */ (function ($$) { $$.$all = function () { }; $$.$id = function (id) { }; $$.$tag = function () { }; $$.$class = function () { }; $$.$group = function () { }; $$.cengci = function () { }; $$.$select = function () { } })(xframe); // 事件框架 (function ($$) { $$.on = function () { } })(xframe); // CSS框架 (function ($$) { $$.css = function () { }; // 元素的显示与隐藏 $$.show = function () { }; $$.hide = function () { }; // 元素的宽度和高度 $$.width = function () { }; $$.height = function () { }; // 元素的滚动宽度和高度 $$.scrollWidth = function () { }; $$.scrollHeight = function () { }; // 滚动条相对于上面和左边的距离 $$.scrollTop = function () { }; $$.scrollLeft = function () { }; // 屏幕的宽度和高度 $$.screenWidth = function () { }; $$.screenHeight = function () { }; // 文档区域的宽度和高度 $$.wWidth = function () { }; $$.wHeight = function () { }; // 获取文档滚动窗口的相关属性参数信息 $$.wScrollHeight = function () { }; $$.wScrollWidth = function () { }; // 获取文档滚动窗口距离上面和左边的距离和宽度 $$.wScrollTop = function () { }; $$.wScrollLeft = function () { }; })(xframe); // 属性框架 (function ($$) { // 私有方法 function removeName() { }; function addName() { } // 公有方法 $$.attr = function () { }; $$.addClass = function () { }; $$.removeClass = function () { } })(xframe); // 内容框架 (function () { $$.html = function () { }; $$.text = function () { }; $$.val = function () { } })(); // 动画框架 (function () { function Animate() { } Animate.prototype = {} })();

资源下载

更多资源
Mario

Mario

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

腾讯云软件源

腾讯云软件源

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

Nacos

Nacos

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

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

用户登录
用户注册