首页
关于
友链
留言
Search
1
安装Docker Desktop报错WSL 2 installation is incomplete
76 阅读
2
震惊!杭州应届生工作免费领2w元
31 阅读
3
我的世界紫禁之巅纯净生存服务器
25 阅读
4
python3网络爬虫开发实战pdf
23 阅读
5
火车头采集问题:Void Proc(System.Net.HttpWebRequest)
20 阅读
技术分享
日常学习
我的世界
Search
标签搜索
python
博客
javascript
ce
web
织梦
html
按键精灵
php
游戏
css
typescript
jquery
日常
数据库
vue
ubuntu
Datehoer
累计撰写
178
篇文章
累计收到
10
条评论
首页
栏目
技术分享
日常学习
我的世界
页面
关于
友链
留言
搜索到
138
篇与
技术分享
的结果
2020-12-20
python 面对对象编程基础
今天说一下面对对象编程基础,虽然其实我最近都在看爬虫,看关于爬虫的一切知识,json,xpath啥的。说到对象,可能有人就瞪起眼睛了,但是此对象非彼对象,你们想的对象还是要自己找的,而我说的对象可以自己创建。首先先说一下关于对象的定义:把一组数据结构和处理它们的方法组成对象(object),把相同行为的对象归纳为类(class),通过类的封装(encapsulation)隐藏内部细节,通过继承(inheritance)实现类的特化(specialization)和泛化(generalization),通过多态(polymorphism)实现基于对象类型的动态分派。然后再看一段知乎大佬关于对象的定义,通俗易懂。Python中一切都是对象,函数是对象,类是对象,变量时对象,字符串是对象,列表和元组也是对象,他的所有一切都是对象。所以说,其实面对对象也就是三种要素,分别是封装,继承和多态。类和对象说真的,类和对象的关系说简单也简单,说复杂也复杂。类是对象的卖家图,而对象是类的买家图。类是一种抽象的概念,而对象则是一个具体的事物。这里就有人问了,什么是对象呢?对象到底是什么。在面对对象编程中,所有的事物都可以看作是对象,一切皆为对象,而对象拥有属性和行为,并且每一个对象都是单独的个体,都是独一无二的。而类呢?对象类似于孩子,而类就像是爹妈一样,只要有对象就会有类,而对象一定属于某一个类型。而我们把许许多多的具有共同特征的对象的属性和行为提取出来,那么就可以定义这个类了。定义类在python中可以通过使用class来定义类。这里我们引用一下之前写过的代码。class S(): #__init__()方法是一种特殊的方法,被称为类的初始化方法,当创建这个类的实例时就会调用该方法 # self 代表类的实例,self 在定义类的方法时是必须有的,虽然在调用时不必传入相应的参数 def __init__(self,code): self.code=code #类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称, 按照惯例它的名称是 self。 def printinfo(self): print(self.code) #self代表类的实例,表示当前对象的地址 self.__class__ 则指向类 def test(self,ssss): print(self) print(self.__class__) 写在类中的函数,我们通常称之为(对象的)方法,这些方法就是对象可以接收的消息。创建和使用对象def main(): a = S('aa') a.printinfo() a.test("python") if __name__ == '__main__': main()实际上我们可以设置类里面的属性是否为私有函数,但是实际上开发中是不实用的,因为你设置了私有属性,别人调用起来就比较麻烦了。然后呢,在说一下重点吧。众所周知,面对对象最重要的三个要素,正如前面所提到的,封装,继承,多态。简单说一下封装,封装就像是字面意思那样,将什么东西封起来,并且把他装在什么地方。我们可以通过封装把一些东西进行隐藏,只让别人访问一些我们提供的接口。我们对类的定义其实就是将数据和操作封装起来,然后我们创建对象后,通过给对象发送一个信息,然后执行里面的方法,就可以调用类里面的代码了,比如说一个小游戏,我们只需要点点点就可以了,而不需要知道实际上游戏进行了哪些操作,这既是封装。
2020年12月20日
2 阅读
0 评论
0 点赞
2020-12-18
浅谈php count()函数方法
简单聊一下php中count()函数方法吧,其实本来准备发一篇关于python的文章,但是现在思路有了,但是学的不是很全面,不会爬取。。。很尴尬,因为那个页面是通过JavaScript渲染的,所以爬取有点难度,不过其实该怎么爬取应该是明白了,接下来就是通过百度进行学习了,所以今天更新一篇关于php函数的文章吧。其实这个count()函数方法,大家觉得很简单,毫无难度啊,我也是这么认为的。但是今天做题的时候发现,还是有一些如果不看就不会的内容。比如说 count()函数方法的第二个参数 。最常见的用法其实是这样的<?php $cars=array("Volvo","BMW","Toyota"); echo count($cars); ?>很简单很容易就可以获取数组里面的个数,但是假如说我给它加上第二个参数呢?count($cars,1)这样应该怎么看呢?其实这个关系到数组的参数,我们叫数组里面有参数为数组的数组为多维数组,比如说 $shuzu = array(array(1),2) 这就是一个二维数组了,然后我们如果只是使用 count($shuzu) 的话,得到的结果为2,而我们使用 count($shuzu,1) 的话,得到的结果为3,这是为什么呢?其实count()函数方法的第二个参数只能是两个值,不是0就是1,而0是默认值。 0 - 默认。不对多维数组中的所有元素进行计数 1 - 递归地计数数组中元素的数目(计算多维数组中的所有元素) 我们默认的话,那么就是不记录数组里的数组内的元素,也就是只记录最外层数组的元素个数,而我们改为1的话,那么就会记录数组内数组的元素个数,所以上面count($shuzu,1) 的值才为3,其实这个还是很容易理解的,我们直接数就可以了,array()算一个,然后2算一个,接下来 array()内的1也算一个,所以结果为3,如果我们更改为 array(array(1,2,3),2)的话,那么还是那么数就行了2+3结果为5。其实这个还是很简单的,只要看过一遍就会了,当时不会是因为我确实没有看到过,所以将这个函数方法的第二个参数记录下来。如果有什么疑问可以在评论区留言,我会在看到的第一时间回复。
2020年12月18日
5 阅读
0 评论
0 点赞
2020-12-17
浅谈HTML DOM
这个其实还是因为一道题,问html中的dom根节点是哪个。这个其实我当时第一反应是body的,但是后来一想,根节点,也就是最头上的那个,没有自己的父元素,那这个肯定是html啊,然后百度一查,发现确实是html。在 HTML DOM 中,所有事物都是节点。DOM 是被视为节点树的 HTML。而在dom中,标签们都属于什么节点呢?接下来看一下解析。整个文档内容是一个文档节点每个HTML中的元素是都是元素节点HTML的元素内的文本是文本节点每个HTML属性是都属于属性节点注释则是注释节点而dom中的html文档则被当作节点树了。其实这个dom说简单也是非常简单的,只要记住每个节点都有自己的匹配对象就可以了,所有的标签都是可以通过dom来获取。简单举个例子,在<title>DOM 教程</title>中,元素节点 <title>,包含值为 "DOM 教程" 的文本节点。 获取节点其实JavaScript获取节点我认为最好的是通过id来获取,document.getElementById()这个方法,通过元素的id来获取改节点,然后进行操作。随便举个例子。<div id="aaa"></div><script>document.getElementById("aaa")</script>这样也就通过ById来获取该元素了。不光可以通过id来获取对象,还可以通过class,通过tag,通过name来获取。getElementById()getElementsByTagName()getElementsByClassName()最常用的就是这三个了,其实通过原生JavaScript来获取对象不是很方便,通过jQuery来获取的话实非常容易的,不过其实各有各的好处吧。一般操纵dom的都是方法,通过方法来对对象进行操作。 appendChild() 把新的子节点添加到指定节点。 removeChild() 删除子节点。 replaceChild() 替换子节点。 insertBefore() 在指定的子节点前面插入新的子节点。 createAttribute() 创建属性节点。 createElement() 创建元素节点。 createTextNode() 创建文本节点。 getAttribute() 返回指定的属性值。 setAttribute() 把指定属性设置或修改为指定的值。 比如说通过点击来使一个div修改颜色,可以是通过.style来操作,其实也可以通过上面的方法来操作的,也可以通过setAttribute()来修改,亦或者通过在style里添加一个没人用的class,给里面添加想要的属性,然后通过document.getElementById("").classList.add("");这个来增加上那个class,这样就会使div获得该class内的属性了。其实dom可以完成所有的html操作,甚至可以只写个html框架出来,然后其余的全部都靠JavaScript来进行修改的。这个也是目前最流行的方法了,通过JavaScript来渲染页面。
2020年12月17日
4 阅读
0 评论
0 点赞
2020-12-16
html实现图片旋转显示背面内容
其实说是html,实际上还是要通过css来实现具体效果的,毕竟实际上html是框架,而css则是填充框架的东西。这篇文章是介绍一个简单的案例,鼠标触碰图片,然后图片发生旋转,进而展现文字。可以看一下动图演示。其实这个是 通过transform旋转以及backface-visibiliity来实现图片隐藏的 。简单介绍一下这个html实现图片旋转显示背面文字的案例思路。首先是创建一个框架,用来储存这些图片以及文字。然后将搭配的图片文字储存在同一个div里,用以日后的地位修改。然后接下来先将文字进行旋转180°,之后设置hover属性即可,之所以要设置先旋转180°是因为如果不设置的话,那么图片旋转之后实现的效果就会使反向的,文字变成反向的文字,而我们事先旋转后,再进行触碰旋转的话,则会使的文字正向了。主要用到的还是上面两个属性, 一个transform: rotateY(180deg);这个是设置内容旋转180°,然后再一个是backface-visibility: hidden;这个是隐藏旋转的内容的背面 ,也就是你旋转之后,不会显示东西,这样子可以实现上面的效果了。<style> * { margin: 0; padding: 0; } body { background-color: #0d3462; } .wutai { width: 760px; height: 220px; margin: 100px auto; } .fu { width: 170px; height: 190px; margin: 10px; transition: 1.5s; transform-style: preserve-3d; float: left; position: relative; } .fu:hover { transform: rotateY(180deg); } .box { /* position: absolute; */ width: 170px; height: 190px; position: absolute; } .face { border: 2px solid #4b2518; backface-visibility: hidden; } .hip { border: 2px solid white; background-color: #4b2518; color: white; text-align: center; transform: rotateY(180deg); backface-visibility: hidden; } </style><body> <div class="wutai"> <div class="fu"> <div class="box face"> <img src="1.jpg" alt=""> </div> <div class="box hip"> <h3>浓缩咖啡</h3> </div> </div> <div class="fu"> <div class="box face"> <img src="2.jpg" alt=""> </div> <div class="box hip"> <h3>浓缩咖啡</h3> </div> </div> <div class="fu"> <div class="box face"> <img src="3.jpg" alt=""> </div> <div class="box hip"> <h3>浓缩咖啡</h3> </div> </div> <div class="fu"> <div class="box face"> <img src="4.jpg" alt=""> </div> <div class="box hip"> <h3>浓缩咖啡</h3> </div> </div> </div></body>具体详情内容可以通过上面的代码进行自我测试,其实最容易实现效果的就是先全部复制上去,然后再将不明白的属性给加上注释,查看发生了什么变化,如果没有变化,可以先记下来然后继续注释别的内容,最后将实在不明白效果的复制到百度进行查询。如果有什么不懂的可以在评论区留言,我会在看到的第一时间进行回复的。
2020年12月16日
5 阅读
0 评论
0 点赞
2020-12-15
html常用名词解释
其实好多都是我们日常接触到的,但是它的实际上的意思却并不明白是啥。所以就有了这篇介绍html名词的文章。 其实最最最经常接触的就是html了,这个大家都知道是做网页用的,但是它叫什么名字呢?html叫做超文本标记语言。 超文本标记语言(英语:HyperText Markup Language,简称:HTML)是一种用于创建网页的标准标记语言。您可以使用 HTML 来建立自己的 WEB 站点,HTML 运行在浏览器上,由浏览器来解析。 而跟html最搭的是css,css则叫做层叠样式表。 层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。CSS不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。 这两个基本上就是组合在一起出现的。 然后在接下来就是关于js的了。 JavaScript应该算作前端最常用的脚本语言。 JavaScript(简称“JS”) 是一种具有函数优先的轻量级,解释型或即时编译型的高级编程语言。虽然它是作为开发Web页面的脚本语言而出名的,但是它也被用到了很多非浏览器环境中,JavaScript 基于原型编程、多范式的动态脚本语言,并且支持面向对象、命令式和声明式(如函数式编程)风格。 在接下来就是JavaScript常用的框架了。 jQuery大概是最常用的一个框架了,它非常的便捷,是一个非常优秀的JavaScript框架。 jQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(或JavaScript框架)。jQuery设计的宗旨是“write Less,Do More”,即倡导写更少的代码,做更多的事情。它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互。 DOM对象,这个其实在我初学的时候我以为这个是什么呢,老师一直说很难很难,而实际上这些东西吧,大概就是只要理解了就会变得不是很难,毕竟勤能补拙,这些东西如果经常使用的话,那么其实还是会一些的。 HTML DOM 定义了访问和操作 HTML 文档的标准。 文档对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展标志语言的标准编程接口。 UI,泛指用户的操作界面 用户界面(User Interface)是指对软件的人机交互、操作逻辑、界面美观的整体设计。好的UI设计不仅是让软件变得有个性有品味,还要让软件的操作变得舒适、简单、自由、充分体现软件的定位和特点。 css3,这个其实跟html5一样,都是升级版,最新的。还有比如说JavaScript,这个其实是ECMAScript5.1版本,然后最新的是ES6了。 CSS 用于控制网页的样式和布局。 CSS3 是最新的 CSS 标准。 css hack,这个可能就有人不知道了,css hack通过在CSS样式中加入一些特殊的符号,区别不同浏览器制作不同的CSS样式的设置,解决浏览器显示网页特效不兼容性问题。 CSS hack由于不同厂商的浏览器,比如Internet Explorer,Safari,Mozilla Firefox,Chrome等,或者是同一厂商的浏览器的不同版本,如IE6和IE7,对CSS的解析认识不完全一样,因此会导致生成的页面效果不一样,得不到我们所需要的页面效果。 这个时候我们就需要针对不同的浏览器去写不同的CSS,让它能够同时兼容不同的浏览器,能在不同的浏览器中也能得到我们想要的页面效果。 json,这个其实许多的编程语言都会提到,简单说一下就是储存空间小的储存文件。这样说其实不准确,其实这个json是一种轻量级的数据交换格式。 JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。 cookie,cookie大概许多人都知道,这个是储存浏览器和服务器的一些交换信息的。有时也用其复数形式 Cookies,指某些网站为了辨别用户身份、跟踪session而储存在用户本地终端上的数据(通常经过加密)。后期会专门发一篇文章讲一下cookie。 Cookie,有时也用其复数形式 Cookies。类型为“小型文本文件”,是某些网站为了辨别用户身份,进行Session跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息。 svg,可缩放矢量图形,是基于可扩展标记语言XML(标准通用标记语言的子集)用于描述二维矢量图形的一种图形格式。 SVG是一种图像文件格式,它的英文全称为Scalable Vector Graphics,意思为可缩放的矢量图形。它是基于XML(Extensible Markup Language),由World Wide Web Consortium(W3C)联盟进行开发的。严格来说应该是一种开放标准的矢量图形语言,可让你设计激动人心的、高分辨率的Web图形页面。用户可以直接用代码来描绘图像,可以用任何文字处理工具打开SVG图像,通过改变部分代码来使图像具有交互功能,并可以随时插入到HTML中通过浏览器来观看。 以上就是一些常用的html名词了,其实也叫做专业术语。不过其实还有许多的特殊的名词,比如说vue,比如说nodejs,这些其实都是中后期开始学习的内容了。 如果有什么不懂的,可以在评论区留言,我会在看到的第一时间进行回复的。 最后说一句题外话,其实最重要的东西就是一颗学习的心,只要想学,其实完全可以自学的,毕竟现在搜索引擎这么强大,很难有找不到的东西,只要学会使用百度。
2020年12月15日
3 阅读
0 评论
0 点赞
2020-12-14
PHP &的应用
这篇文章,简单说一下&这个的用法吧。这个&其实在c语言中用的非常的多,当时第一次在php中看到的时候,还以为是干什么的呢。没想到它的作用是引用。在php中使用引用的话,就需要在变量或者函数、对象等的前面加上&符号实际上在PHP 中引用的意思是:不同的名字访问同一个变量内容。是不是有点不太明白呢?简单举一个例子。<?php $a="ABC"; $b =&$a; echo $a; echo $b; $b="EFG"; echo $a; echo $b; //ABC ABC EFG EFG 当然其实并没有换行的,但是为了明显,加一下换行。可以看到我们一开始的b确实是跟a相同的,但是后来我们修改b的值,没想到a的值也修改了,这就是引用的用处了。 我们应该知道,其实他这个变量的值是一个引用地址的过程,a指向了ABC这个地址,然后呢,我们通过&使得b也选择了ABC的地址,虽然看着a和b是不同的,但是实际上ab相当于是同一个量,所以修改b的话,a的值也会修改。 然后其实后面说的也是这么一回事,简单说一下吧。 通过函数来调用这个值。 <?php function test(&$a){ $a=$a+100; } $b=1; echo $b; test($b); echo "<br>"; echo $b; //1 101 其实可以看到调用函数之前,我们的b还是1,但是因为我们函数传参的话,是传递的引用的量,所以我们的a实际上和b就是同一个值了,所以最后输出的就是101了。 学术性的解释一下,这里$b传递给函数的其实是$b的变量内容所处的内存地址,通过在函数里改变$a的值 就可以改变$b的值了 而我们不想引用了呢?这里就需要使用一个函数了,unset()这个函数可以取消变量的引用。<?php $a = 1; $b =& $a; unset ($a);好了,今天的引用方法说到这里,如果有什么不懂的可以在评论区留言,我会在看到的第一时间进行回复的
2020年12月14日
2 阅读
0 评论
0 点赞
2020-12-13
PHP sort() 函数
今天在做php习题的时候,发现其实之前学习到的知识掌握的并不牢固,特别是对于一些函数的应用,感觉跟没学一样。所以今天简单的总结一下sort()函数的用法。 下面关于PHP提供的内置数组排序函数说法错误的是()A、排序函数可以根据需要设置排序的类型B、sort()函数默认将数组元素作为英文字符进行排序C、asort()可在保持键值关系的同时对数组进行排序D、rsort()可以实现数组从高到低的逆向排序 这道题,其实很简单的,但是由于对知识的掌握并不牢固,所以对B的判断出现了错误,我记得我当时应该选的是C好像,还是别的,反正没想出来。说一下为什么会做错,是因为sort()函数是将数组进行排序,然后我就想到了["pink","apple","blue"]这三个使用sort()函数排序的话会变成["apple","blue","pink"]这样,既然排序变成这样了,那么其实应该就是按照英文字符进行排序的啊。这就是我错误的地方了。其实它这个sort()函数是将数组进行排序,而不是默认将数组元素作为英文字符进行排序的。如果说默认当作英文字符,那么数字呢?所以其实sort()函数的定义其实是,sort()函数对数值数组进行升序排序。不光可以根据英文字符排序,还可以根据数字等等吧,进行排序。简单看一个关于数字的实例吧。 <?php $numbers=array(4,6,2,22,11); sort($numbers); $arrlength=count($numbers); for($x=0;$x<$arrlength;$x++) { echo $numbers[$x]; echo "<br>"; } ?>而排序结果呢?2 4 6 11 22 显而易见,这是根据数字进行排序的。而且其实sort()函数的语法其实是sort(array,sortingtype);前面的array很好理解,就是数组,规定一下要排序的数组,而后面的sortingtype呢?其实这个sortingtype是一个可选的参数,它规定了如何排列数组元素,可以选择的值有0,1,2,3,4,5怎么用呢?直接在后面加就行了,比如说前面的那个sort($numbers)我们只要在后面加上参数就行了比如说sort($numbers,1);在接下来我们简单说一下这个参数有啥用吧。 0 = SORT_REGULAR - 默认。把每一项按常规顺序排列(Standard ASCII,不改变类型)。1 = SORT_NUMERIC - 把每一项作为数字来处理。2 = SORT_STRING - 把每一项作为字符串来处理。3 = SORT_LOCALE_STRING - 把每一项作为字符串来处理,基于当前区域设置(可通过 setlocale() 进行更改)。4 = SORT_NATURAL - 把每一项作为字符串来处理,使用类似 natsort() 的自然排序。5 = SORT_FLAG_CASE - 可以结合(按位或)SORT_STRING 或 SORT_NATURAL 对字符串进行排序,不区分大小写。 所以其实如果有什么特殊的需求只需要在后面加上参数即可。如果没有别的需要的话,不需要加默认即可。
2020年12月13日
3 阅读
0 评论
0 点赞
2020-12-12
JavaScript 实现网站运行时间功能
JavaScript实现获取网站运行时间功能,其实这个功能也就是我们网站首页的下面的代码,获取网站运行时间。<script> function runtime(){ var oldtime = new Date("2020-10-20 8:32:00"); var nowtime = new Date(); var timeDifference = (nowtime.getTime()-oldtime.getTime()); var ms = 86400000; var day = Math.floor(timeDifference/ms); var hours = Math.floor(((timeDifference/ms)-day)*24); var minutes = Math.floor((((timeDifference/ms)-day)*24-hours)*60); var seconds = Math.floor(((((timeDifference/ms)-day)*24-hours)*60-minutes)*60) rtime.innerHTML ="本站大概运行了有: "+day+"天"+hours+"时"+minutes+"分"+seconds+"秒" } setInterval(runtime,1000); </script>其实这个也就是通过函数获取本地时间,然后再根据设置的时间进行相减,之后通过算法计算时间。如果想要改成你需要的代码,只需要修改var oldtime = new Date("2020-10-20 8:32:00");内的时间即可,这里就会自动根据现在的时间进行换算的。今天有点小忙,所以简单来一篇。
2020年12月12日
5 阅读
0 评论
0 点赞
2020-12-11
Javascript window.onload内的函数无法调用
其实这也是今天上课看到的,不过其实我知道是什么问题。不过这个貌似许多初学者都不会,所以准备跟大家学习一下。众所周知,JavaScript与html代码在同一页的时候,可能会因为JavaScript代码太多加载太慢导致网页打开速度缓慢,所以就有把内容放在window.onload里使得html加载完之后再加载JavaScript代码。但是今天上午调试的时候,发现出现了一个错误。console面板的提示是函数找不到,这是为什么呢?因为把想调用的函数放在了window.onload里,所以这个函数就会在最后才会加载。而这就是问题所在了。Uncaught ReferenceError: aaaa is not defined at HTMLInputElement.onclick报错就是这个,而我的代码呢?<body> <div> <input type="text"> <input type="button" value="获取内容" onclick="aaaa()"> </div> <script> window.onload = function () { var a = document.getElementsByTagName("input")[0]; function aaaa() { alert(a.value); } } </script> </body>就是一个简单的获取文本框内输入的内容。简单解释一下,这是因为window.onload会使匿名函数里面的内容在页面加载之后才会加载,而我们在页面加载到input:button的时候,里面有一个onclick,所以网页会停下继续加载而去寻找aaaa()这个函数,而我们的这个函数要在网页全部加载完才会加载,所以就找不到这个函数了,而你到最后才加载了window.onload内的内容也是没有用的了。而解决这个问题的答案很简单,把需要调用的内容拿出来即可,不过这其实也是推荐使用js文件的原因,不过其实如果把script的代码放在</body>上面,html代码的最后面的话,其实没比较加window.onload这个了。不过假如说你使用文件导入的方法,其实也是推荐放在html代码的最后面的。问题简简单单的解决了,有没有收获呢?如果有什么不懂的可以在评论区留言,我会在看到的第一时间进行回复的。其实之所以这么短是因为今天突然想整个毛概的题库出来做做,所以文章简短,哈哈,最近几篇应该都差不多的。
2020年12月11日
3 阅读
0 评论
0 点赞
2020-12-10
php 常用数组函数有哪些?
php中,一些函数是通过利用数组的指针来进行操作的。今天简单谈一下数组中的指针操作函数。今天其实写这篇文章,是为了记录一下自己的一些疑惑以及自己的解答罢了。大多数人都应该直到,php中指针操作函数有7个,分别是 current() , key() , next() , prev() , each() , end() , reset() 但是实际上随着php的版本更新,其中有的方法已经不适用最新版的php了。关于each()比如说each(),这个函数我其实看到的第一眼就觉得有些眼熟,这个不就跟之前说的那个foreach很像么,如果不知道foreach可以看这篇 foreach循环 的文章然后在看一下对each()的描述。获取数组中当前的键值对,并将数组指针向前移动一步感觉其实比不明白什么意思,实际上这个就是类似于一个遍历了,获取这个数组中下标为0的元素的所有的值,下标和值以及对应的数值都会被获取到。简单举一个例子,先说明前面的获取数组当前的键值对。 <?php header("Content-Type:text/html;charset=utf-8"); $array = array("php基础示例"=>'php',"asp基础实例"=>'asp',"jsp基础实例"=>'jsp',"php函数大全"=>'phph'); echo "<pre>"; print_r(each($array)); echo "</pre>"; 使用pre这个html标签是为了保留格式,要不然出现的结果其实还是有点丑的,具体可以自己尝试一下。 /*Array ( [1] => php [value] => php [0] => php基础示例 [key] => php基础示例 )*/ 首先其实最容易看到的就是key和value了,这个是相当于是索引形式,而0,1则类似于关联形式。这个就是获取键值对了,那么向前移动一步是什么意思呢?我们其实只需要再加一下print_r(each($array))就能看到效果了 <?php header("Content-Type:text/html;charset=utf-8"); $array = array("php基础示例"=>'php',"asp基础实例"=>'asp',"jsp基础实例"=>'jsp',"php函数大全"=>'phph'); echo "<pre>"; print_r(each($array)); echo "</pre>"; echo "<pre>"; print_r(each($array)); echo "</pre>"; /*Array ( [1] => php [value] => php [0] => php基础示例 [key] => php基础示例 ) Array ( [1] => asp [value] => asp [0] => asp基础实例 [key] => asp基础实例 )*/ 可以看到,虽然都是 一样的 代码,但实际上内在的内容已经不同,这是因为数组内的指针并不相通了,这就是向前移动一步,实际上是相当于向右移动一步。而这个each一般是用在了循环上,循环遍历一下索引数组,自我猜测应该是在没有foreach循环的时候循环索引数组使用的方法。 <?php header("Content-Type:text/html;charset=utf-8"); $array = array("php基础示例"=>'php',"asp基础实例"=>'asp',"jsp基础实例"=>'jsp',"php函数大全"=>'phph'); while(list($a,$b) = each($array)){ echo "{$a}=>{$b}"; } /*php基础示例=>phpasp基础实例=>aspjsp基础实例=>jspphp函数大全=>phph*/ 轻松得到数组的遍历结果。那么接下来讲一下为什么要废弃这个函数,说白了我认为其实还是因为有点小麻烦,再加上已经有了foreach了,所以就把它给废弃了。在php7.2以上的版本运行会发出警告,但是还是可以得到结果。 Q A PHPUnit version 6.0.0 PHP version 7.2.0RC6 Installation Method Composer Running PHPunit on PHP 7.2 results in a deprecated warning: PHP Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/travis/build/spatie/laravel-binary-uuid/vendor/phpunit/phpunit/src/Util/Getopt.php on line 39 PHP Stack trace: PHP 1. {main}() /home/travis/build/spatie/laravel-binary-uuid/vendor/phpunit/phpunit/phpunit:0 PHP 2. PHPUnit\TextUI\Command::main() /home/travis/build/spatie/laravel-binary-uuid/vendor/phpunit/phpunit/phpunit:53 PHP 3. PHPUnit\TextUI\Command->run() /home/travis/build/spatie/laravel-binary-uuid/vendor/phpunit/phpunit/src/TextUI/Command.php:135 PHP 4. PHPUnit\TextUI\Command->handleArguments() /home/travis/build/spatie/laravel-binary-uuid/vendor/phpunit/phpunit/src/TextUI/Command.php:146 PHP 5. PHPUnit\Util\Getopt::getopt() /home/travis/build/spatie/laravel-binary-uuid/vendor/phpunit/phpunit/src/TextUI/Command.php:291 PHP 6. each() /home/travis/build/spatie/laravel-binary-uuid/vendor/phpunit/phpunit/src/Util/Getopt.php:39 所以其实现在还是别使用each了,循环遍历的话,还是用foreach吧。关于其余的函数而其余的几个函数其实都很简单。我们可以简单看一个图。我们数组的初始指针是在1的位置,但是它的下标值为0,而 我们使用函数的时候,下标值根据函数的作用发生改变 ,比如说前面的each(),使用一次each(),那么指针就会+1,所以才会出现上面两次输出each()的话,结果不同,而我们的next()和prev()就是如此,一个+1一个-1而end()和reset()则是重置为0或者变成最后一个。没有什么难度应该,说一个小知识点如果我们在指针为0的时候使用prev()或者在最后的位置使用next()的话,会得到false,这是因为我们如果在头/尾使用向前或下一个的时候,并没有值了,所以返回false。这就是为什么each()可以遍历数组的原因了,因为我们使用while循环,然后设置条件即可,如果到结尾的时候再下一步的话,就会返回false,而我们的while循环就会停下了。关于while each()循环可以看上面的那串代码,应该是没有什么难度的。如果有什么不懂的,可以在评论区留言,我会在看到的第一时间进行回复的。
2020年12月10日
2 阅读
0 评论
0 点赞
2020-12-09
Javascript 浅谈面向对象
其实JavaScript面向对象的话,离不开封装,继承,以及多态。JavaScript封装JavaScript封装其实也就是把客观事物通过封装来变成抽象的类,并且这个类可以将自己的数据和方法变得只让可信的类或者对象操作,对不可信的进行信息隐藏。JavaScript继承JavaScript继承是通过继承来创建新类,这个新类被称为“子类”或“派生类”。在继承的过程中,就是从一般到特殊的过程。JavaScript多态JavaScript多态是对象的多功能,多方法的表现形式,通过多态来体现对象的一个方法的多种表示。通过一个大家都会举的例子来说明一下对象吧。假设一辆车,车就是对象,而它的重量,颜色,名字,品牌都是属性,而汽车的启动和停止等就是方法。不过其实大多数的例子来说,只要是.后面跟的是单词,那大概率就是属性了,而如果跟着的内容是有()的,那么一般就是方法了。这个其实可以简单的看一下我经常看的js教程最后简单说一下面对对象的术语吧。对象ECMA-262 把对象(object)定义为“属性的无序集合,每个属性存放一个原始值、对象或函数”。严格来说,这意味着对象是无特定顺序的值的数组。尽管 ECMAScript 如此定义对象,但它更通用的定义是基于代码的名词(人、地点或事物)的表示。类每个对象都由类定义,可以把类看做对象的配方。类不仅要定义对象的接口(interface)(开发者访问的属性和方法),还要定义对象的内部工作(使属性和方法发挥作用的代码)。编译器和解释程序都根据类的说明构建对象。实例程序使用类创建对象时,生成的对象叫作类的实例(instance)。对类生成的对象的个数的唯一限制来自于运行代码的机器的物理内存。每个实例的行为相同,但实例处理一组独立的数据。由类创建对象实例的过程叫做实例化(instantiation)。最后总结一下:在JavaScript中,对象是通过特性来构成,而特性其实就是原始值,不过也可使用引用值,不过如果这个特性存放的实函数,那么它就会被看作是对象的方法,负责这个特性就被看作对象的属性了。其实还就是上面那句话,有小括号在后面的大多就是方法,而没有的话,就是属性了。
2020年12月09日
2 阅读
0 评论
0 点赞
2020-12-08
css中的相对定位和绝对定位
今天在做案例的时候用到了相对定位和绝对定位,简单说一下他们的区别。我们通过css做元素定位的时候要用到position,而position有4个值,分别是absolute,static,relative,fixed这四个值。默认值为static,相对定位有relative,而剩余两种则是绝对定位。相对定位和绝对定位的区别既然命名不一样,那么定位的方法肯定是有去别的。我们首先来看一下不加定位的效果。四个div的class分别为box1box2box3box4然后我们添加一下定位效果来看看。其实可以预料到,我们如果只添加定位效果的话,除了relative没效果以外,其余的都有效果,不过都是差不多的,相当于原来的那个地方没有了元素,其余的向上替代了。但是relative是真的没效果么?其实不然,我们需要添加一下位移效果才能看出来。简单添加上top:50px;left:50px后发现效果出现了。看到这个效果,我们就可以直到了,原来relative需要添加位移效果才能体现出来。这样再来看一下relative的解释relative:相对于原来位置移动,元素设置此属性之后仍然处在文档流中,不影响其他元素的布局这个是相对与原来的位置进行移动的,所以我们如果不添加位移效果的话,是看不到的。而我们使用绝对定位呢?这个就是可以直接看到效果了。我们直接看一下使用最多的absolute的解释。absolute:元素会脱离文档流,如果设置偏移量,会影响其他元素的位置定位实际上,这个绝对定位是要看它的父元素的设置,毕竟是子元素。如果我们父元素不设置定位效果,那么我们的子元素就是相对于根元素来进行定位的。简单看一下效果会发现还是像我们上面所说的,原本的元素的位置会去掉,而下面的元素则会取代之前元素的位置,我们只需要给设置了absolute的元素设置上偏移,则会出现偏移效果了。而如果父元素设置了定位效果,那么子元素就会寻找最近的设置了绝对或者相对定位的父元素来进行定位。总结一下:relative:relative定位是相对于自身位置来进行定位的。设置了relative定位的元素仍然位于原来的位置,元素的宽高不变,其设置的偏移量也不会影响到其他元素的位置。最外层容器设置为relative定位,在没有设置宽度的情况下,宽度是整个浏览器的宽度。 absolute:absolute定位是相对于离元素最近的设置了绝对或相对定位的父元素决定的,如果没有父元素设置绝对或相对定位,则元素相对于根元素即html元素定位。设置了absolute的元素脱了了文档流,元素在没有设置宽度的情况下,宽度由元素里面的内容决定。脱离后原来的位置相当于是空的,下面的元素会来占据位置。最后简单的发一下最后效果图的代码吧。<!DOCTYPE html> <html> <head> <title>test</title> <meta http-equiv="content-type" content="text/html" charset="utf-8"> <meta name="author" content="xuyunfei"> <meta name="description" content=""> <meta name="keywords" content="test,html"> <title>test</title> <style> div { height: 100px; } .box1 { background-color: blue; } .box2 { background-color: red; position: absolute; left: 50px; } .box3 { background-color: green; } .box4 { background-color: yellow; } </style> </head> <body> <div class="box1">box1box1box1box1box1box1</div> <div class="box2">box2box2box2box2box2box2</div> <div class="box3">box3box3box3box3box3box3</div> <div class="box4">box4box4box4box4box4box4</div> </body> </html>可以看到实际上,定位的偏移是通过right,left,top,bottom来进行位移,而如果不设置的话,那么应该不是没有变化就是空出了一个原本的位置来给后面的元素。如果有什么不懂的可以在评论区留言,我会在看到的第一时间进行回复的。
2020年12月08日
4 阅读
0 评论
0 点赞
1
...
6
7
8
...
12