javascript递归函数

递归函数:是指函数直接或间接调用函数本身,则称该函数为递归函数。这句话理解起来并不难,从概念上出发,给出以下的例子:functionfoo(){console.log("函数foo是递归函数。");foo();}这个例子的foo函数就是一个递归函数。当你把这个函数拿到浏览器上运行的时候,你会发现内存溢出了,为什么呢?因为这个递归函数没有停止处理或运算的出口,因此这个递归函数就演变为一个死循环。那如何使用递归呢? 使用递归函数必须要符合两个条件:1、在每一次调用自己时,必须是(在某种意义上)更接近于解;这句话怎么理解?大家家里都有楼梯吧?比如从一楼走到二楼,那么我们的起点是一楼,目的地是二楼,当你往上每走一个台阶是不是越接近二楼,也就是越接近目的地。因此这句话可以这样理解:函数每一次调用自己时,就越接近于我们期望它完成的任务的终点。2、必须有一个终止处理或计算的出口。这句话的意思是:必须要有一个标准的标志,让函数结束调用函数自身。比如,怎么知道你已经走到二楼了呢?当你看到有个门,门牌上写着2F的,然后推开它跨过去,那么你就到二楼了。 用递归输出对象里包含的所有属性值(...
代码星球 代码星球·2020-04-11

JavaScript之scrollTop、scrollHeight、offsetTop、offsetHeight等属性学习笔记

全文参考:https://github.com/iuap-design/blog/issues/38、MDN clientHeight  可以用公式 CSSheight+CSSpadding-水平滚动条的高度(如果存在) 来计算。如图,这样一个div,它的clientHeight为95,计算:50(height)+30(padding-top)+30(padding-bottom)-15(经测量滚动条高度就是15)=95 一个元素顶部边框的宽度(以像素表示)。嗯。。就只是  border-top-width 类似的属性还有一个 clientLeft ,顾名思义…… 元素的offsetHeight是一种元素CSS高度的衡量标准,包括元素的边框、内边距和元素的水平滚动条(如果存在且渲染的话),是一个整数。还是上面的图,div的offsetHeight为112。计算:50+60(上下内边距)+2(上下边框)=112 HTMLElemen...

常用javascript代码片段集锦

根据类名获取DOM元素1var$$=function(className,element){2if(document.getElementsByClassName){3return(element||document).getElementsByClassName(className);4}5varnodes=(element||document).getElementsByTagName('*'),6elements=[],7len=nodes.length,8i,9j,10currentNode,11classNames,12classLength;13for(i=0;i<len;i++){14currentNode=nodes[i];15classNames=currentNode.className.split('');16classLength=classNames.length;17for(j=0;j<classLength;j++){18if(classNames[j]===className){19elements.push(currentNode);20b...

JavaScript 经典实例收集整理

跨浏览器添加事件1//跨浏览器添加事件2functionaddEvent(obj,type,fn){3if(obj.addEventListener){4obj.addEventListener(type,fn,false);5}elseif(obj.attachEvent){//IE6obj.attchEvent('on'+type,fn);7}8}跨浏览器移除事件1//跨浏览器添加事件2functionaddEvent(obj,type,fn){3if(obj.addEventListener){4obj.addEventListener(type,fn,false);5}elseif(obj.attachEvent){//IE6obj.attchEvent('on'+type,fn);7}8}跨浏览器阻止默认行为1//跨浏览器阻止默认行为2functionpreDef(ev){3vare=ev||window.event;4if(e.preventDefault){5e.preventDefault();6}else{7e.returnValue=false;8}9}跨浏览器获取...

地址回环

地址回环:可以解决oracle10g在更换频繁更换ip地址的情况下,用浏览器方式登陆数据的问题控制面板——添加硬件——网络适配器,即添加一个本地连接,ip地址填写原地址即可(添加本地连接的方法需要完善) win7中添加回环网络适配器的方法MicrosoftLoopbackAdapter(微软回环网卡)类似一个虚拟网卡,能够被安装在一个没有网卡或者要用于测试多个宿主环境的Windows上。相信不少ITPro对此是相当熟悉的。但是在Widnows7上按照往常的方法使用添加硬件向导并不能继续之后的手工安装设备的步骤,如下图所示:     难道Widnows7不再支持LoopbackAdapter或手工添加设备的方式么?其实不然,我们可以通过“hdwwiz.exe”命令来手工添加设备或驱动。为此我们需要执行以下的步骤:      1.单击开始图标,在智能搜索中输入“hdwwiz”,...
代码星球 代码星球·2020-04-11

GitHub中国区前100名到底是什么样的人?

本文根据Github公开API,抓取了地址显示China的用户,根据粉丝关注做了一个排名,分析前一百名的用户属性,剖析这些活跃在技术社区的牛人到底是何许人也!后续会根据我的一些经验出品《技术人员如何建立自己的个人品牌》《优雅的程序员列传》欢迎加我微信diycodes交流。Github中国区前一百名城市分布,令人比较意外的是IT重镇深圳和广州居然和北上杭差距那么大!(其中China表示没有注明具体城市用户)Github中国区前一百名语言分布图,前端开发者依然霸占着大多数,移动开发者加起来也已经达到半壁江山,让人意向不到的是小众语言的Ruby的开发者居然排在第六把PHP,C++这些甩到了身后!废话不多说直接开始单刀直入,以下为Github中国区排行榜前20名详解,除了统计Github的粉丝排行之外,还分析了这20位社区大咖在知乎和微博的活跃度,从数据结果来看,Github排行榜上的诸君都是微博和知乎的技术红人,这也符合我正在写的《技术人员如何建立自己的个人品牌》一文(未发布,加微信可率先查看)。1:daimajiaGithub、知乎、微博情况平台用户名粉丝数Githubrepos知乎回答数...

[区块链] 共识算法之争(PBFT,Raft,PoW,PoS,DPoS,Ripple)

  近几天对区块链中几种常见的共识机制(PBFT,Raft,PoW,PoS,DPoS,Ripple)进行了总结。尽量使用简单易懂语言,篇幅较大,想了解的可以只读每个算法介绍中前边的原理。本篇文章主要参考《区块链技术指南》,首先表示感谢!   ---Begin---  区块链架构是一种分布式的架构。其部署模式有公共链、联盟链、私有链三种,对应的是去中心化分布式系统、部分去中心化分布式系统和弱中心分布式系统。  在分布式系统中,多个主机通过异步通信方式组成网络集群。在这样的一个异步系统中,需要主机之间进行状态复制,以保证每个主机达成一致的状态共识。然而,异步系统中,可能出现无法通信的故障主机,而主机的性能可能下降,网络可能拥塞,这些可能导致错误信息在系统内传播。因此需要在默认不可靠的异步网络中定义容错协议,以确保各主机达成安全可靠的状态共识。  所谓共识,简单理解就是指大家都达成一致的意思。其实在现实生活中,有很多需要达成共识的场景,比如开会讨论,双方或多方签订一份合作协议等。而在区块链系统中,每个节点必须要做的事情就是让自己的账本跟其他节点的账本保持一致。如果是在传统的软件结构...

网络之OSI七层协议模型、TCP/IP四层模型

  13.OSI七层模型各层分别有哪些协议及它们的功能 在互联网中实际使用的是TCP/IP参考模型。实际存在的协议主要包括在:物理层、数据链路层、网络层、传输层和应用层。各协议也分别对应这5个层次而已。要找出7个层次所对应的各协议,恐怕会话层和表示层的协议难找到啊。。    【1】物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后在转化为1、0,也就是我们常说的数模转换与模数转换),这一层的数据叫做比特。  【2】数据链路层:定义了如何让格式化数据以进行传输,以及如何让控制对物理介质的访问,这一层通常还提供错误检测和纠正,以确保数据的可靠传输。  【3】网络层:在位于不同地理位置的网络中的两个主机系统之间提供连接和路径选择,Internet的发展使得从世界各站点访问信息的用户数大大增加,而网络层正是管理这种连接的层。  【4】传输层:定义了一些传输数据的协议和端口号(WWW端口80等),如:TCP(传输...

什么是UWP应用?

如果不熟悉Windows平台,或来自.NET、WindowsForms或Silverlight领域,可能会对UWP应用实际上是什么感到疑惑。正如名著中所说:“不必惊慌!”,因为所有一切很快便会清清楚楚。通用Windows平台(UWP)应用是一种基于通用Windows平台(UWP)生成的Windows体验,它首次作为Windows运行时在Windows8中引入。用户希望其体验在所有设备上均为移动版,并且希望使用现有的最方便或最高效的设备完成任务,此理念是UWP应用的核心。通过Windows10,你可以更加轻松地开发适用于UWP的应用,并且只需一个API集、一个应用包和一个应用商店,即可访问所有Windows10设备–PC、平板电脑、手机、Xbox、HoloLens、SurfaceHub等。对许多屏幕大小以及各种交互模型(无论是触控、鼠标和键盘、游戏控制器还是笔)的支持也更加轻松。并了解:您无需使用C#和XAML(如果您不想这样做)。是否要在Unity或MonoGame中开发?更喜欢JavaScript?这不是问题,使用所有所需的项目。总而言之:完全可以...
代码星球 代码星球·2020-04-11

js的原型prototype究竟是什么

Javascript也是面向对象的语言,但它是一种基于原型Prototype的语言,而不是基于类的语言。在Javascript中,类和对象看起来没有太多的区别。1.什么是prototype:function定义的对象有一个prototype属性,prototype属性又指向了一个prototype对象。在prototype对象中有一个constructor属性,这个constructor属性同样指向一个constructor对象,而这个constructor对象恰恰就是这个function函数本身。用伪代码和图表表示如下:   可以看出这里的prototype是链状的。employee.prototype对象中的constructor属性指向employee函数。源码:<!DOCTYPEhtml><html><head><metacharset="utf-8"><title>菜鸟教程(runoob.com)</title></head><body><scr...

(转)我如何利用前端技术得到 XXOO 网站的 VIP

网页如图,这里只是说明整个网站的一些技术点,所以不该看的地方我都打上马赛克了,让我们揭开这些网站的整个前端工作原理首先刚进去的时候显示一堆乱七八糟的东西,点进去其中一个页面,下面各种虚假评论,然后每隔几秒钟弹出第几几几个会员充值成功,我们先把这个删掉好了,我们继续研究这个网站内部结构了正常情况每个页面的视频都是试看几十秒就会提醒你充值,当然这是这类网站的常规套路,我们在浏览器的Network观察加载的js,我们可以看到里面这段代码这是一份叫做lsj.mp4.js的代码的其中一部分,我们可以看到里面有个关键的判断,具体就是判断你是否是会员,如果是那就根据类型是否是2返回play_url_arr_oumei数组和play_url_arr数组拼接一个url给你,如果你不是会员的话就进入试看的判断,很清晰的看到有一个url,那就是试看的短视频的路径varisvip=getCookie('lsjyy');if(isvip!=undefined&&isvip!=''&&isvip.match(rgExp)){}else{}上面这两句还告诉我们第二个关键点就是我们可以...

架构师主要做些什么,你知道吗?

 小伙伴们,新年好!感谢大家对「IT老兵哥」原创文章的支持顶赞,❤️❤️❤️!把有价值的知识或经验分享给更多人,在分享中提升个人价值,这是我写作、分享的初衷和动力,在新的一年里我会更加努力,也希望能够继续获得各位小伙伴的支持!坚持原创不易,如果文章有价值,千万要记得在手动点个「推荐」哦,^_^祝大家新年在家庭、事业和生活上都有新的进步,我们一起加油干!⛽️⛽️⛽️ 年前我们一起聊了 程序员为什么要懂架构、架构是什么 和架构都有哪些类型 这三个话题,今天我们来看看架构师是怎样开展工作的,他/她需要对接上下游哪些角色,以什么作为工作输入,最终要对外输出什么产物。这些内容既有助于我们跟架构岗同事更好的协作,也可以作为是否往架构转型的参考,接下来我们一起揭开架构师的神秘面纱吧!1.架构设计的输入是什么? 软件系统最终要构建成什么样,这是由项目干系人的各种要求决定的。通常,我们将这些要求归集在产品需求文档之中,这份产品需求就是架构设计的输入。我们可以将这些需求划分为:功能需求:完成某项业务需要的功能操作,例如:共享单车客户端软件需要支持...

什么是智能配电

配电是电力系统的环节之一,发电、输电、配电、用电。所谓智能配电系指借助计算机技术、通信技术、AI技术等,在一定程度上取代传统的人工方式的配电管理模式。级别技术功能现场级控制器设备实时监控项目级控制器设备+局域网实时监控、统计查询平台级控制器设备+互联网+云服务物联配电管理...
代码星球 代码星球·2020-04-11

开发环境--Pipenv的使用

Pipenv是基于pip的Python包管理工具,它和pip的用法非常相似,可以看做pip的加强版。pipenv解决了旧的pip+virtualenv+requirements.txt的工作方式的弊端(因为requirements.txt需要手动维护,使用上不够灵活)具体来说,它是pip、Pipfile、Virtualenv的结合体,它让安装包、包依赖管理和虚拟环境管理更加方便。 (1)安装:pipinstallpipenv检查是否创建成功:pipenv--version(2)创建虚拟环境:pipenvinstall 这会为当前项目创建一个文件夹,其中包含隔离的Python解释其环境,并且安装pip、wheel、setuptools等基本的包。(3)激活虚拟环境pipenvshell当执行pipenvshell命令时,Pipenv会自动从项目目录下的.env文件中加载环境变量。现在你会发现,命令行提示符前面添加了虚拟环境名,这说明我们已经成功激活了虚拟环境,现在你所有的命令都会在虚拟环境中执行。(4)退出虚拟环境exit 一个程序通常会使用很多的Python包,即依...

开发集成工具MyEclipse中Outline的问题

     序言        不懂的多查,越查就越显得自己的无知,越发现大神的存在,可能相对于我来说是大神,在他那个高度,就觉得自己很菜,这些都正常,最值得敬佩的是,比你厉害的人,还比你更努力,那自己还有什么理由不努力呢,如果发现自己在学习的时候,容易犯困,说明自己没动脑是一方面,更重要的是,眼界太窄了,在自己的一方世界中,任由自己荒废,所以要趁早吧这种状态给抹除掉,通过学习一点东西,你会发现越来越多的东西需要你去学习,会发现越来越多的人比你厉害,其实自己真的很菜,然后通过努力去追寻他们的脚步,记录自己学习的路程,给在你身后的人一些经验。学习的乐趣大概就是这样了。                                                                            ---WZY 这里讲解一个小的模块,也是自己在查看源码的时候,发现Outline这一栏中很多符号自己很陌生,所以这里把出现过的总结一下。    我说的就是这里我用红色框框圈出来的这些符号的意思      1、蓝色空心三角形:普通的成员变量  2、带有T字蓝色...
首页上一页...363364365366367...下一页尾页