【经典回放】JavaScript学习详细干货笔记之(一)

【经典回放】JavaScript学习详细干货笔记之(一)

【经典回放】JavaScript学习详细干货笔记之(二)

【经典回放】JavaScript学习详细干货笔记之(三)

目录

一、为什么要学JavaScript

二、JavaScript经典案例

例1 一个最简单的网页构成:

例2 浏览器上加入控件

例3 事件与响应程序

例4 输入半径、求圆面积

例5 欧拉素数公式验证,公式是a=n*n-n+41,n[-39,41]

例6 爱因斯坦的台阶

例7 边长为a,b,c的三角形的面积。

例8 最大公约数。


一、为什么要学JavaScript

首先、JavaScript是浏览器下运行的程序,也就是说:只要是能上网的浏览器、就应该能支持JavaScript的运行,这点,是C语言、VB等根本不能比拟的事情。所以网络上许多优秀的程序,都是用JavaScript编写的,能让你的网页功能异常强大。在EXT3.0的文件夹里、就是一套JavaScript编写好的程序包,恰当调用这些包、就能编写出和这些范例一样的程序,而类似这样的包还很多,比如JQuery、Dojo、YUI等等的,它们的功能都非常强大,所以学会JavaScript、善于使用这些包的程序、非常重要。

同理,我们在后面还要学到C#,这个语言主要是给服务器编程使用的,仅仅是浏览器下的程序是远远不够的。随后我们学习的Ajax编程、主要是要用这两套语言去完成,当然,还要其他的语言来支持。

那么我们现在学习的C语言,实际目前最主要的用途就是:首先是能考证、其次是让学习JavaScript和C#变的容易点,毕竟这些语言的用法有很大的相似性。事实上我们大多的C语言作业、是可以用JavaScript去完成的。

二、JavaScript经典案例

JavaScript是一个支持图形界面的程序,而图形界面的构成,是用HTML语言构成的,HTML就是网页设计的语言,它的全部内容很多,但在我们开始的学习中,我们仅仅从最简单的学习起。

掌握以下经典案例,JavaScript手到擒来。

例1 一个最简单的网页构成:

<HTML><HEAD><TITLE>这里是你网页的标题</TITLE><SCRIPT TYPE="TEXT/JAVASCRIPT">//这里要加入的是JAVASCRIPT的代码</SCRIPT></HEAD><BODY BGCOLOR="#FF1234"><DIV></DIV></BODY>
</HTML>

注意这个程序段落:<HTML>是这个段落的开始,最后,要用</HTML>去结束。在这个大段落里,有<HEAD>和<BODY>两个段落,每个段落都用</HEAD>和</BODY>结束,而在<HEAD>里,也有两个段落:<TITLE>和<SCRIPT>两个段落。在随后的介绍里,我们的程序将写在<SCRIPT>段落里。

< BODY BGCOLOR="#FF1234">说明了网页构成的单元,其中BGCOLOR是背景颜色,对一个网页,颜色是有红绿蓝三种基本颜色组成的,每种颜色的明亮程度分为0~255个等级,转换成16进制、就是0~FF,上述的颜色描述,就是说红色亮度为FF、绿色亮度是12、而蓝色的亮度是34,注意都是16进制的。如果说颜色是:”#FFUVWX”、则显然是错误的,因为16进制里没UVWX这样的数字。修改颜色的值,构造出一个你喜欢的网页背景颜色。运行它,你会发现在<TITLE></TITLE>中的字符将显示在浏览器的左上角中。

例2 浏览器上加入控件

浏览器上加入控件的意思是:让浏览器上显示出个按钮、文本框之类的东西,加入控件一定要记着:要写在<DIV></DIV>段落中,比如我们在浏览器上加入按钮,就是:

<INPUT TYPE="button" ID=BUTTON1 value="开始测试" />

这个语句的含义是:

加入INPUT(输入模式)的控件;

TYPE="button":意思是说:类型是按钮;

ID=BUTTON1:这个按钮的名称是BUTTON1,以后或许我们要加100个按钮,所以100个按钮类型都是TYPE=”button”、但每个都要有名称,比如BUTTON1到BUTTON100;

value="开始测试":说明按钮上显示:开始测试

注意这个语句写的位置:

程序2: a1_1.htm

注意位置,如果再加入一行:

<INPUT TYPE="button" ID=BUTTON2 value="开始测试" />

浏览器上将会有2个按钮,注意ID,这个控件是BUTTON2,你把它改成BUTTON1,尽管浏览器也能显示出来,但这样就无法使用了。至于value,则是按钮上显示的字符,可以和其他按钮一样、也可以不一样。

再加入:

                 <INPUT TYPE="input"  ID="text1" value="我的文本框" />   

则代表给浏览器上加入了一个文本框,名称text1,写入””中则代表要在JavaScript中直接按text1使用它,这个和BUTTON1不一样,后面还会介绍到。注意:如果要加入很多的文本框,则它们每个的ID都是不能相同的。

尝试着加入3个按钮、5个文本框。

<HTML><HEAD><TITLE>加入控件测试</TITLE><SCRIPT TYPE="TEXT/JAVASCRIPT">//这里要加入的是JAVASCRIPT的代码</SCRIPT></HEAD><BODY BGCOLOR="#00FF00"><DIV><INPUT TYPE="button" ID=BUTTON1 value="开始测试" /></DIV></BODY>
</HTML>

例3 事件与响应程序

所谓事件,就是当你的鼠标点了控件、双击控件或者移动过控件等这些操作;

响应程序,就是发生事件后、该进行什么样的处理。

我们现在首先把界面上仅仅造一个按钮、看鼠标点该按钮后要进行的操作。要说明这样的按钮,就是用:

<INPUT TYPE="button" ID=BUTTON1 value="点我" οnclick='响应函数名称()'/> 构造按钮,这个控件说明中,其中:

οnclick='响应函数名称()'

非常重要,所谓响应函数名称、就是用JavaScript编写的一个函数。函数的名称是自己可以随便定义的,比如我们打算用函数fun1()来处理这个鼠标点击,则函数是:

function fun1()
{alert("你好,我的第一个网页程序~");
}

alert()是JavaScript的一个提示函数,会在消息框中提示后面的字符串,除了函数前必须加function外,其他写法和C语言没什么差别。

最关键的有两点:

1 我们的按钮BUTTON1的实践响应函数应该是fun1()、所以,这个按钮的说明就应该是这样的:

<INPUT TYPE="button" ID=BUTTON1 value="点我" οnclick='fun1()'/>

一定注意οnclick=后的写法

2 响应函数fun1()在网页中、要写在<SCRIPT></SCRIPT>之间,千万不能在其他地方写这些函数代码,否则不会执行。

完整的程序就是下面的内容:

<HTML><HEAD><TITLE>这里是你网页的标题</TITLE><SCRIPT TYPE="TEXT/JAVASCRIPT">//这里要加入的是JAVASCRIPT的代码function fun1(){alert("你好,我的第一个网页程序~");}</SCRIPT></HEAD><BODY BGCOLOR="#00FF00"><DIV><INPUT TYPE="button" ID=BUTTON1 value="点我" onclick='fun1()'/></DIV></BODY>
</HTML>

一定注意上面内容中红色粗体字部分,浏览器中打开它,点那个按钮吧,会看到提示的。

例4 输入半径、求圆面积

首先想界面构成,要输入半径,肯定要一个文本框,而计算,则要有个命令按钮,所以要加两个控件:

<INPUT TYPE="button" ID=BUTTON1 value="开始计算" onclick='Area()'/><INPUT TYPE='input' ID="text1"/>

也就是说:在text1中输入半径、按下“开始计算“按钮,则将把结果显示出来。注意这个按钮:它的鼠标点事件响应函数是Area()

对JavaScript语言来说,变量仅有一个类型:var,注意是小写的,这点和C语言有很大不同,但使用起来、确实很方便。首先、JavaScript函数要获得text1控件中输入的值,于是有:

function Area()
{var r;r=text1.value;
}

这段程序就可以从text1控件中读到输入的值。再申请个变量a用来计算圆面积,就是:

function Area()
{var r,a;r=text1.value;a=3.141592654*r*r;alert(“圆面积是”+a);
}

这样,a中就可以计算出圆的面积来,要显示弹出消息框来报告结果。整个程序是:

<HTML><HEAD><TITLE>圆的面积</TITLE><SCRIPT TYPE="TEXT/JAVASCRIPT">//这里要加入的是JAVASCRIPT的代码function Area(){var r,a;r=text1.value;a=3.141592654*r*r;alert("圆面积是:"+a);}</SCRIPT></HEAD><BODY BGCOLOR="black"><DIV><INPUT TYPE="button" ID=BUTTON1 value="开始计算" onclick='Area()'/><INPUT TYPE='input' ID="text1"/></DIV></BODY>
</HTML>

另外一种输出语句是:document.write(“圆面积是:”+a);

注意:这一句将把结果直写到网页上、并清除所有的元素,用这一句代替alter(),则又是新的一种显示结果,a4.htm就是这样的网页,这种显示方法适合显示结果很多的情况。当然,你也可以再加一个文本框、把结果显示在新的文本框里。

例5 欧拉素数公式验证,公式是a=n*n-n+41,n[-39,41]

首先这个公式的计算没输入数据的要求,所以不需要文本框,但我们要补充一个判断素数的函数,对C语言,则是:

int prime(int n){int I;for(I=2;I<=n/2;I++)if(n%I==0) return 0;return 1;
}

上述函数我们很熟悉,现在要改写成JavaScript语言的,注意JavaScript变量仅仅有var,并且JavaScript有false、ture的概念,所以有:

function prime(n)
{var i;for(i=2;i<=n/2;i++)if(n%i==0) return false;return true;
}

注意和C语言的差别:首先是函数没返回类型,这点和C有很大区别,其次是C的函数没有function这样的描述。

为证明欧拉公式,我们再编写个函数,就是:

function Euler()
{var a,n;for(n=-39;n<=41;n++){a=n*n-n+41;if(prime(a))document.write(n+"欧拉公式正确"+"<br>");elsedocument.write(n+"欧拉公式错误"+"<br>");}
}

这个函数同C语言的差异也不大,用document.write()代替了printf(),用“var a,n;”代替了“int a,n;”,函数前补充了function,这些变动都是很小的。

最主要的是:document.write()能显示很多数据,这点是alter()不能比的。在上述的显示内容中,其中的:"<br>"是回车换行,相当于C语言的:"\n",差别是一个在浏览器中起作用、一个是在黑屏幕上起作用。

最后、一定注意函数名称是:Euler()

所以,我们的按钮说明、就应该是这样的:

<INPUT TYPE="button" ID=BUTTON1 value="开始计算" οnclick='Euler()'/>

说明这个按钮一旦按下、则执行函数:Euler(),整个就是:

<HTML><HEAD><TITLE>欧拉公式</TITLE><SCRIPT TYPE="TEXT/JAVASCRIPT">//这里要加入的是JAVASCRIPT的代码function prime(n){var i;for(i=2;i<=n/2;i++)if(n%i==0) return false;return true;}function Euler(){var a,n;for(n=-39;n<=41;n++){a=n*n-n+41;if(prime(a))document.write(n+"欧拉公式正确"+"<br>");elsedocument.write(n+"欧拉公式错误"+"<br>");}}</SCRIPT></HEAD><BODY BGCOLOR="#FFFF00"><DIV><INPUT TYPE="button" ID=BUTTON1 value="开始计算" onclick='Euler()'/></DIV></BODY>
</HTML>

这个程序能计算-39到41之间的值,尝试着修改一下,让它能计算用户输入的数据范围的值。实际就是再加2个文本框、让用户可以输入两个数据。

例6 爱因斯坦的台阶

这是一个典型的穷举问题,只能不断的尝试,先设台阶数量为n,n从2开始、逐步增加,只要满足条件:

n%2==1&&n%3==2&&n%5==4&&n%6==5&&n%7==0

则循环停止,n从2到不知道大小的一个数,所以可以先假定到10000吧,就是:

for(n=2;n<=10000;n++)

        if(n%2==1&&n%3==2&&n%5==4&&n%6==5&&n%7==0) break;

(这里你看不出来是C语言还是JavaScript,实际都一样)

或者写成:

for(n=2;!(n%2==1&&n%3==2&&n%5==4&&n%6==5&&n%7==0);n++)

;

注意这个循环是空循环,意思是不满足条件:

n%2==1&&n%3==2&&n%5==4&&n%6==5&&n%7==0

则执行空循环、然后再n++;

写法可以很多,结果是一个,我们这里把结果显示在一个文本框TEXT1里。所以上述函数就是:               

function fun()
{var n=2;for(n=2;!(n%2==1&&n%3==2&&n%5==4&&n%6==5&&n%7==0);n++);TEXT1.value=n;
}

注意函数名称是:fun(),所以按钮控件就是:

<INPUT TYPE="button" ID=BUTTON1 value="开始计算" οnclick='fun()'/>

而显示结果的文本框就是:

<INPUT TYPE="input" ID="TEXT1"/>

一定注意:在JavaScript函数中引用的是:TEXT1控件,则定义的时候一定要把控件的名称也写成TEXT1,如果写成Text1,则肯定杯具了。整个就是:

爱因斯坦的台阶:

<HTML><HEAD><TITLE>爱因斯坦的台阶</TITLE><SCRIPT TYPE="TEXT/JAVASCRIPT">//这里要加入的是JAVASCRIPT的代码function fun(){var n=2;for(n=2;!(n%2==1&&n%3==2&&n%5==4&&n%6==5&&n%7==0);n++);TEXT1.value=n;}</SCRIPT></HEAD><BODY BGCOLOR="#FFFF00"><DIV><INPUT TYPE="button" ID=BUTTON1 value="开始计算" onclick='fun()'/><INPUT TYPE="input" ID="TEXT1"/></DIV></BODY>
</HTML>

例7 边长为a,b,c的三角形的面积。

公式:s=(a+b+c)/2;

A=sqrt(s*(s-a)*(s-b)*(s-c))

这个公式最关键的是:要首先判断a、b、c是不是三角形的数据,否则开平方程序就错了,会崩溃的。

为输入三个边长的数据,首先要有三个文本框控件,考虑到结果也显示在文本框里,于是做4个文本框,外带一个计算按钮,于是有:

<INPUT TYPE="button" ID=BUTTON1 value="开始计算" onclick='Triangle()'/><INPUT TYPE="input" ID="A"/><INPUT TYPE="input" ID="B"/><INPUT TYPE="input" ID="C"/><INPUT TYPE="input" ID="RESULT"/>:

其中A、B、C控件是输入三边长的文本框,而按钮的响应函数,一定注意是Triangle(),这个函数是计算三角形面积的。

最简单的函数就是:

function Triangle()
{var a,b,c,s,a;a=A.value;b=B.value;c=C.value;s=(a+b+c)/2;a=Math.sqrt(s*(s-a)*(s-b)*(s-c));RESULT.value=a;
}

整个程序就是:

<HTML><HEAD><TITLE>三角形的面积</TITLE><SCRIPT TYPE="TEXT/JAVASCRIPT">//这里要加入的是JAVASCRIPT的代码function Triangle(){var a,b,c,s,a;a=A.value;b=B.value;c=C.value;s=(a+b+c)/2;a=Math.sqrt(s*(s-a)*(s-b)*(s-c));RESULT.value=a;}</SCRIPT></HEAD><BODY BGCOLOR="#FFFF00"><DIV><INPUT TYPE="button" ID=BUTTON1 value="开始计算" onclick='Triangle()'/><INPUT TYPE="input" ID="A"/><INPUT TYPE="input" ID="B"/><INPUT TYPE="input" ID="C"/><INPUT TYPE="input" ID="RESULT"/></DIV></BODY>
</HTML>

但这个程序肯定是有问题的,计算出来是错误的。首先Math.sqrt()必须要求是个float类型的数据,而从文本框里读到的数据,我们却不知道类型,实际大多情况下,我们知道是字符串。JavaScript有个强制类型转换函数,就是parseFloat(),于是上述函数就变为:

<HTML><HEAD><TITLE>三角形的面积</TITLE><SCRIPT TYPE="TEXT/JAVASCRIPT">//这里要加入的是JAVASCRIPT的代码function Triangle(){var a,b,c,s,a;a=parseFloat(A.value);b= parseFloat(B.value);c= parseFloat(C.value);s=(a+b+c)/2;a=Math.sqrt(s*(s-a)*(s-b)*(s-c));RESULT.value=a;}</SCRIPT></HEAD><BODY BGCOLOR="#FFFF00"><DIV><INPUT TYPE="button" ID=BUTTON1 value="开始计算" onclick='Triangle()'/><INPUT TYPE="input" ID="A"/><INPUT TYPE="input" ID="B"/><INPUT TYPE="input" ID="C"/><INPUT TYPE="input" ID="RESULT"/></DIV></BODY></HTML>

但这个程序非常脆弱,输入负值也计算,但肯定是程序崩溃。

为此,还要把这个程序做的更加健壮,于是要假如判断:

三边为负则是:

if(a<=0||b<=0||c<=0)
{alert("这不是三角形数据、滚~思想有多远滚的有多远~");return;
}

是否为三角形三边的判断则是:

if((a+b)<c||(b+c)<a||(a+c)<b)
{alert("这是三角形数据?滚~欠揍啊~");return;
}

于是修改后的程序就是:

<HTML><HEAD><TITLE>三角形的面积</TITLE><SCRIPT TYPE="TEXT/JAVASCRIPT">//这里要加入的是JAVASCRIPT的代码function Triangle(){var a,b,c,s,a;a=parseFloat(A.value);//parseFloat()函数是转换成浮点数字b=parseFloat(B.value);c=parseFloat(C.value);if(a<=0||b<=0||c<=0){alert("这不是三角形数据、滚~思想有多远滚的有多远~");return;}if((a+b)<c||(b+c)<a||(a+c)<b){alert("这是三角形数据?滚~欠揍啊~");return;}s=(a+b+c)/2;a=Math.sqrt(s*(s-a)*(s-b)*(s-c));//Math.sqrt()是开平方RESULT.value=a;}</SCRIPT></HEAD><BODY BGCOLOR="#FFFF00"><DIV><INPUT TYPE="button" ID=BUTTON1 value="开始计算" onclick='Triangle()'/><INPUT TYPE="input" ID="A"/><INPUT TYPE="input" ID="B"/><INPUT TYPE="input" ID="C"/><INPUT TYPE="input" ID="RESULT"/></DIV></BODY></HTML>

例8 最大公约数。

回忆小学的公约数计算方法,比如求30、18的最大公约数,就是:

当然也可以这么计算:

30%18=12

18%12=6

也就是说,令:m=30,n=12

r=m%n

有:r=12

再次有:m=n;n=r;就是m=18,n=12,再次计算就是:

r=m%n,得到r=6

最后,再次执行m=n;n=r;就是m=12,n=6,计算有:

r=m%n,得到r=0,循环终止。

这个算法就是所谓的欧几里德算法。

做这个算法的时候,确定一定是大数字在m、而小数字在n。

所以有:                

function gcd1(m,n)
{var r;//根据m、n的大小交换数据if(m<n){r=m;m=n;n=r;}while(r=m%n){m=n;n=r;}return n;
}

这个算法就是所谓迭代,另外一个算法就是所谓穷举,首先就是因数分解两个数字:

30=1*2*3*5;

18=1*2*3*3;

这两个数字共同的部分是1*2*3,这个就是最大公约数。根据最大公约数的性质,这个数一般不大于两个数中的最大者,所以穷举的C语言范例就是:

int gcd(int m,int n)
{int r,i,a;a=m>n?m:n;r=1;for(i=1;i<a;i++)if(m%i==0&&n%i==0&&i>r) r=i;return r;
}

对于JavaScript,转换过程一样很简单:

 function gcd2(m,n){var r,i,a;a=m>n?m:n;r=1;for(i=1;i<a;i++)if(m%i==0&&n%i==0&&i>r) r=i;return r;}

实际无论哪个函数,都可以得到你希望的结果。

这个情况下,我们期望有两个命令按钮,一个按gcd1()函数计算、而另外一个则按gcd2()函数计算,所以整个网页将有两个命令按钮,所以要:

        <INPUT TYPE="button" ID=BUTTON1 value="计算1" οnclick='fun1()'/>

        <INPUT TYPE="button" ID=BUTTON2 value="计算2" οnclick='fun2()'/>

注意这两个按钮的响应函数:一个是fun1()、而另外一个是fun2(),这两个函数实际是从两个文本框中读数字、并把结果写到另外一个文本框里,所以就是:

        <INPUT TYPE="input" ID="A"/>

        <INPUT TYPE="input" ID="B"/>

        <INPUT TYPE="input" ID="RESULT"/>

其中A、B两个文本框是输入数据、而RESULT则是显示结果。但要注意的是:fun1()调用的是gcd1()函数、而fun2()调用的是gcd2()函数,它们相似、但完全不是一个意思。

<HTML><HEAD><TITLE>最大公约数</TITLE><SCRIPT TYPE="TEXT/JAVASCRIPT">//这里要加入的是JAVASCRIPT的代码//欧几里德算法function gcd1(m,n){var r;if(m<n){r=m;m=n;n=r;}while(r=m%n){m=n;n=r;}return n;}//穷举算法function gcd2(m,n){var r,i;var a=m>n?m:n;r=1;for(i=1;i<a;i++)if(m%i==0&&n%i==0&&i>r) r=i;return r;}function fun1(){var a=parseInt(A.value);var b=parseInt(B.value);RESULT.value=gcd1(a,b);}function fun2(){var a=parseInt(A.value);var b=parseInt(B.value);RESULT.value=gcd2(a,b);}</SCRIPT></HEAD><BODY BGCOLOR="#FFFF00"><DIV><INPUT TYPE="button" ID=BUTTON1 value="计算1" onclick='fun1()'/><INPUT TYPE="button" ID=BUTTON1 value="计算2" onclick='fun2()'/><INPUT TYPE="input" ID="A"/><INPUT TYPE="input" ID="B"/><INPUT TYPE="input" ID="RESULT"/></DIV></BODY></HTML>

余下的程序,它们分别是:

a8.htm:e的近似值,简单~

a10.htm: 三数排序,同C,没什么奇怪的。

a11.htm:作业3.5(2),++、---运算,结果同C一样

a12.htm:作业3.5(6),++、---运算,结果同C一样

a13.htm:全局变量和静态变量,JavaScript不认识static

a14.htm:不起作用的swap()函数,原理同C一样

a15.htm:全局变量的swap()函数,原理同C一样

a16.htm:JavaScript中的数组定义

a17.htm:自由的JavaScript数组,大小是你爱用多大它就多大,比C幸福。

a18.htm:一个网页中表格的构造方法,你能看懂么?

作业:

1 在文件夹ext-3.0.0\examples下,找到index.html文件,打开它,然后逐个挑选出你喜欢的外观组件名称;

2 打开:ext-3.0.0\examples\desktop\desktop.html,看看这个组件的外观,说明该组件外观适合做什么样的系统?

3 Google中找:JQuery,寻找该编程框架下的各种组件,看看是否有你喜欢的,评价以下和ExtJS组件的外观差异;

4 Google中找:Dojo,寻找该编程框架下的各种组件,看看你最喜欢的组件是什么?

5 Google中找:YUI、mootools、Prototype等框架,看你喜欢的组件是什么?

6 网络上寻找上述框架的各种编程资料、范例;

7 哪种框架是IBM、SUN支持的?

8 哪种框架是支持2D、3D作图的?仅仅是做图、还可以有什么框架支持?

9 上述框架的基本程序、在哪个网站上提供引用?网络地址是什么?

10 这些框架是否有收费的?

11 上述框架的基本编程语言是什么?

12 对JavaScript进行编程、最好的编程工具是什么?FireBug是个什么样的系统?它要什么浏览器支持?

刘一哥GIS:专注GIS教育,探索GIS奥秘,分享GIS价值!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/287736.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TCP之三次握手和四次挥手过程

1 TCP包头里面的标志位 下图为TCP头部里面部分信息,入下标志位,每个标志位占一位。 标志位这里会涉及3个,ACK SYN FIN ACK:确认序号有效。 SYN:发起一个新连接。 FIN:释放一个连接。 2 三次握手过程 第一次握手 Client将标志位SYN置1,随机产生一个值seq=J,并将数…

gearman mysql编译_gearman初探(一、编译和安装)

gearman是一个任务分发系统&#xff0c;将计算比较耗时的任务分发给不同的机器专门进行计算&#xff0c;而任务发起的初始程序不必等待这些任务完成就可以返回而继 续执行。笔者最开始做PHP邮件发送的时候&#xff0c;因为邮件发送耗时比较长&#xff0c;这时PHP脚本就会被阻塞…

《假如编程是魔法之零基础看得懂的Python入门教程 》——(四)了解魔法百宝箱列表、字典及基本数据类型

学习目标 了解魔法世界中可更改容器——变量了解魔法世界的基本数值类型——字符串、整数了解魔法百宝箱——字典、列表了解列表如何添加值了解字典如何添加值了解字典与列表定义的不同符号 目录 第一篇&#xff1a;《假如编程是魔法之零基础看得懂的Python入门教程 》——&…

TCP协议之如何保证传输的可靠性

一、问题 TCP协议之如何保证传输的可靠性?我们先看下TCP的头部图片和TCP头部的字段 /*TCP头定义,共20个字节*/ typedef struct _TCP_HEADER {short m_sSourPort;       // 源端口号16bitshort m_sDestPort;       // 目的端口号16bitunsigned int …

【工具篇】在Mac上开发.Net Core需要的工具

微信公众号&#xff1a;趣编程ACE关注可了解更多的.NET日常开发技巧,如需帮助&#xff0c;请后台留言&#xff1b;[如果觉得本公众号对您有帮助&#xff0c;欢迎关注]在Mac上开发.Net Core需要的工具如果您是一个.NET 开发者&#xff0c;想从Windows切换到Mac上开发.NET或者您已…

【Pix4d精品教程】Pix4Dmapper完整航测内业操作流程手把手图文教程

1. 作业流程图 2. 原始资料准备 原始资料包括影像数据、POS数据以及控制点数据。 确认原始数据的完整性,检查获取的影像中有没有质量不合格的相片。同时查看POS数据文件,主要检查航带变化处的相片号,防止POS数据中的相片号与影像数据相片号不对应,出现不对应情况应手动调…

mysql semi join_MySQL 5.6 Semi join优化之materialization strategy

8月 24, 2014 |Nix.Huang考虑如下查询&#xff1a;select * from Countrywhere Country.code IN (select City.Countryfrom Citywhere City.Population > 7*1000*1000)and Country.continentEurope这个子查询是非相关子查询&#xff0c;我们能和外层循环独立的执行它&#x…

【ArcGIS风暴】何为动态投影?这次全面为您揭开ArcGIS中动态投影的神秘面纱!

本课程配套蓝光视频: 【ArcGIS风暴】GIS动态投影问题 GISer们都见过以下警告,该警告的原因是当前加载的数据的坐标系和当前数据框坐标系不一致导致的,核心问题是地理坐标系不一致。如当前数据的坐标系是GCS_Xian_1980,而数据框的坐标系有可能是WGS_1984等,总之跟要加载的数…

《假如编程是魔法之零基础看得懂的Python入门教程 》——(五)我的魔法竟然有了一丝逻辑

学习目标 了解魔法世界中的结构表现——缩进了解魔法世界的逻辑判断——if了解魔法世界的多次逻辑判断——ifelse嵌套了解魔法世界中的逻辑运算——且 and 与或 or 推荐 1.《备受好评的看得懂的C语言入门教程》 目录 第一篇&#xff1a;《假如编程是魔法之零基础看得懂的P…

类和类之间的关系

一、类和类之间的关系 UML类图中&#xff0c;常见以下几种关系: 1、泛化&#xff08;Generalization&#xff09; 是一种继承关系&#xff0c;比如动物类和老虎类&#xff0c;老虎继承动物&#xff0c;子类如何特化父类的所有特征和行为 箭头指向:带三角箭头的实线&#xff0…

查缺补漏系统学习 EF Core 6 - 实体配置

推荐关注「码侠江湖」加星标&#xff0c;时刻不忘江湖事这是 EF Core 系列的第二篇文章&#xff0c;上一篇文章讲解了 EF Core 的一些基础概念&#xff0c;这一篇文章主要围绕实体属性的配置。点击上方或后方蓝字&#xff0c;阅读 EF Core 系列合集。实体配置配置实体的目的&am…

mysql innodb 索引 延迟更新_Mysql覆盖索引与延迟关联

延迟关联&#xff1a;通过使用覆盖索引查询返回需要的主键,再根据主键关联原表获得需要的数据。为什innodb的索引叶子节点存的是主键&#xff0c;而不是像myisam一样存数据的物理地址指针&#xff1f;如果存的是物理地址指针不就不需要二次查找了吗&#xff0c;根据myisam和inn…

Android之在笔记本电脑adb devices识别不了oppo A9手机(设备管理器ADB Interface里面有个黄色感叹号)

1 问题 记本电脑adb devices识别不了oppo A9手机&#xff08;设备管理器ADB Interface里面有个黄色感叹号&#xff09; 图片如下 2 分析 很明显这里是驱动问题&#xff0c;ADB Interface有感叹号提示&#xff0c;所以这里需要解决驱动问题 3 解决办法 1&#xff09;可以尝试…

《假如编程是魔法之零基础看得懂的Python入门教程 》——(六)精简魔法更强大

学习目标 了解对相似逻辑的简化编写——循环 推荐 1.《备受好评的看得懂的C语言入门教程》 目录 第一篇&#xff1a;《假如编程是魔法之零基础看得懂的Python入门教程 》——&#xff08;一&#xff09;既然你选择了这系列教程那么我就要让你听得懂 第二篇&#xff1a;《假…

Tiny模板语言(VelocityPlus)初步入门

2019独角兽企业重金招聘Python工程师标准>>> 1 关于用户手册 本文主要介绍如何在模板中使用Tiny模板语言&#xff0c;通过查阅本手册&#xff0c;可以对Tiny模板语言 TTL(Tiny Template Language)的用法有一个较全面的认识&#xff0c;并学会如何有效地使用Tiny模板…

『技术群里聊些啥』.NET 如何计算文件 MD5 哈希

前言有网友在交流群中询问&#xff0c;文件 MD5 是全部读取到内存后计算出来的&#xff0c;还是拿到流就可以计算出来了&#xff1a;原理上来说&#xff0c;MD5 需要对全部内容做运算&#xff0c;所以应该是获取所有内容后再计算的。但是&#xff0c;如果全部读取到内存后再计算…

探索发现:平台云——云的新风向

本文讲的是探索发现&#xff1a;平台云——云的新风向&#xff0c;云主机&#xff0c;自2011年火热崛起之后&#xff0c;成为IDC行业替代VPS的完美系列&#xff0c;它的成功在于其相对于VPS的压倒性优势;而平台云凭借其的便捷的操作、实时监控和可视化服务&#xff0c;让站长们…

windows下配置mysql主从复制_Windows下MySQL主从复制的配置方法

MySQL主从复制允许将来自一个数据库(主数据库)的数据复制到一个或多个数据库(从数据库)。主数据库一般是实时的业务数据写入和更新操作&#xff0c;从数据库常用的读取为主。主从复制过程&#xff1a;1、主服务器上面的任何修改都会通过自己的 I/O tread(I/O 线程)保存在二进制…

【ArcGIS风暴】全国1:100万基础地理数据库获取及ArcGIS图幅完美拼接---以甘肃省为例

在日常工作中,如第三次全国国土调查、不动产登记等,我们总需要对图斑、线状等数据进行数据分幅、图幅拼接等操作。另外,日常学习工作中,无论是制图还是进行分析,都不可避免的需要使用一些基础地理数据,像行政边界、水系、道路、居民地等等,那么,这些基础地理数据有没有…

体验 .NET MAUI RC3 ,马上就要发布RTM

前言.NET MAUI 已经传了很久了&#xff0c; 5月10日&#xff0c;微软终于跟随 VS2022 17.3 预览版 发布了MAUI的候选版本 &#xff0c;今天我们来体验一波。环境运行环境&#xff1a;.Net 6开发环境&#xff1a;VS2022 17.3 &#xff08;必须是预览3&#xff09;使用在安装了V…