当前位置: 首页 > news >正文

PHP初级教程------------------(2)

目录

运算符

赋值运算符

算术运算符

比较运算符

逻辑运算符

连接运算符

错误抑制符

三目运算符

自操作运算符

​编辑

计算机码

位运算符

运算符优先级

流程控制

控制分类

顺序结构

分支结构

If分支

​ Switch分支

循环结构

For循环

while循环

do-while循环

循环控制

​         流程控制替代语法


运算符

运算符:operator,是一种将数据进行运算的特殊符号,在PHP中一共有十种运算符之多。

赋值运算符

赋值运算:符号是“=”,表示将右边的结果(可以是变量、数据、常量和其它运算出来的结果),保存到内存的某个位置,然后将位置的内存地址赋值给左侧的变量(常量)。

算术运算符

算术运算:基本算术操作

+:执行数据累加

-:数据相减

*:键盘上没有乘法符号,使用*代替,两个数相乘

/:正斜杠代替,表示两个数相除

%:取余(模)运算,两个数(整数)相除,保留余数

在进行除法运算或者取余运算的时候,对应的除数(第二个数)不能为0

比较运算符

比较运算:比较两个数据的大小,或者两个内容是否相同,返回的结果都是布尔类型:满足返回true,不满足返回false

>:左边大于右边,返回结果true

>=:左边大于等于右边

<:左边小于右边

<=:左边小于或者等于右边

==:左边的与右边的相同(大小相同)

!=:左边的与右边的不同(大小不同)

===:全等于,左边与右边相同:大小以及数据的类型都要相同

!==:不全等于,只有大小或者类型不同

逻辑运算符

逻辑运算:针对不同的结果进行匹配。满足条件返回true,不满足返回false

&&:逻辑与,左边的条件与右边的条件同时成立(两边结果都为true)

||:逻辑或,左边的条件或者右边的条件只要有一个满足即可

!:逻辑非,对已有条件进行取反,本身为true,取反结果就是false

逻辑与和逻辑或又称之为短路运算:如果第一个表达式结果已经满足条件了,那么就不会运行逻辑运算符后面的表达式:在书写代码的时候,尽量将出现概率最高的(能够直接判断出结果)的表达式放到第一位

连接运算符

连接运算:是PHP中将多个字符串拼接的一种符号

. :将两个字符串连接到一起

.= : 复合运算,将左边的内容与右边的内容连接起来,然后重新赋值给左边变量

A .= b  就变成了  A = A . b

错误抑制符

在PHP中有一些错误可以提前预知,但是这些错误可能无法避免,但是又比希望报错给用户看,可以使用错误抑制符处理。

@:在可能出错的表达式前面使用@符号即可

错误抑制符通常在生产环境(上线)会用到,在开发的时候不会用:系统本身最好没有任何错误。

三目运算符

三目运算:有三个表达式参与的运算(简单的的分支结构缩写)

语法格式:

表达式1 ? 表达式2 :表达式3;

运算:如果表达式1成立,那么执行表达式2,否则执行表达式3;

注意:如果表达式本身比较复杂,建议使用括号包起来。

三目运算可以进行复合三目运算:三目运算中的表达式2和3都是可以是另外一个三目运算。

表达式1 ? (表达式2 ? 表达式4 : 表达式5) : (表达式3 ? 表达式5 : 表达式6);

自操作运算符

自操作:自己操作自己的运算符

++:在原来的值上+1

--:在原来的值上-1

$a = 1;

$a++; // $a = $a + 1;

在PHP中自操作符是可以放到变量前或者后:前置自操作和后置自操作

$a = 1;

$a++;

++$a;       //前置或者后置如果本身只有自操作,不参与其他运算(自操作同时),那么效果是一样的。但是如果自操作同时还参与别的运算,那么效果就不一样

$a = 1;

$b = $a++;       //$a++会导致$a = $a + 1; $a = 2;,上面的$b = 1

$c =++$a;         //++$a会导致$a = $a + 1; $a = 2;,$c = 2;

后置自操作:先把自己所保存的值留下来,然后改变自己,自己给别人的值是原来的值;

前置自操作:先把自己改变,然后把改变后的值给别人。

衍生符号:类似自操作

+=:左边的结果与右边结果相加,然后赋值给左边

-=:左边的减去右边的结果,然后复制给左边

*=:乘法操作

/=:除法操作

%=:模操作

注意:右边是一个整体 $a += $b; =è $a = $a + ($b);

如果进行除法或者取余运算,那么要考虑右边表达式的结果是否为0(为0出错)

<?php//运算符//算术运算符$a = $b = 10;		//连贯赋值运算:两个不同变量$c = 0;//var_dump($a / 0);	//错误:被除数不能为0echo '<hr/>';//比较运算符$a = '123';	//字符串$b = 123;	//整型//判断相等var_dump($a == $b);//全等判断var_dump($a === $b);echo '<hr/>';$a = 'weekend';$b = 'goods';//逻辑与var_dump($a == 'weekend' && $b == 'good');//逻辑或var_dump($a == 'weekend' || $b == 'good');//逻辑非var_dump($b == 'good');var_dump(!($b == 'good'));echo '<hr/>';//连接运算符$a = 'hello ';$b = 123;echo $a . $b;	//将a变量和b变量连接起来$a .= $b; //$a = $a . $b;echo $a;//错误抑制符echo '<hr/>';$a = 10;$b = 0;//$a % $b;//@($a % $b);//三木运算符echo '<hr/>';$a = 10;$b = $a > 10 ? 100 : 0;echo $b;//自操作符echo '<hr/>';$a = $b = 1;$a++;++$b;				//独立操作,不参与其他运算echo $a,$b;echo '<br/>';echo $a++,++$b;		//$a和$b不只是独立运算,还参与了输出操作echo $a,$b;$a = 10;$b = 5;$a += $b;			//$a = $a + $b = 15;$a -= $b - 1;		//$a = $a - ($b - 1);		//15 - 5 + 1 = 11echo '<br/>',$a,$b;

计算机码

计算机码:计算机在实际存储数据的时候,采用的编码规则(二进制规则)

计算机码:原码、反码和补码,数值本身最左边一位是用来充当符号位:正数为0,负数为1

原码:数据本身从十进制转换成二进制得到的结果

         正数:左边符号位为0(正数的原码、反码和补码就是原码本身)

         负数:左边符号位为1

反码:针对负数,符号位不变,其他位取反

补码:针对负数,反码+1

系统中存在两个0:+0和-0

+0: 00000000

-0: 10000000    ->   原码

取反 11111111

补码 00000000

位运算符

位运算:取出计算机中最小的单位(位bit)进行运算

&:按位与,两个位都为1,结果为1,否则为0

|:按位或,两个有一个为1,结果为1

注意:

1、  系统进行任何位运算的时候都是使用的补码

2、  运算结束之后都必须转换成原码才是最终要显示的数据

~:按位非,一个位如果为1则变成0,否则反之

^:按位异或,两个相同则为0,不同则为1

<<:按位左移,整个位(32位),向左移动一位,右边补0

>>:按位右移,整个位向右移动一位,左边补符号位对应内容(正数补0,负数补1)

按位左移:乘以2的操作

按位右移:除以2的操作(不完全正确):整数除2会出现小数

附上代码:

<?php//位运算//计算机码$a = 5;$b = -5;/*5原码: 00000101-5原码:10000101取反:  11111010	//反码:符号位不变,其他位取反求补:	11111011	//补码:反码+1*///按位右移var_dump($b>>1);var_dump($b>>2);/*-5	11111011>>1 11111110	//运算结果:补码-1  11111101	//反码取反  10000010	//原码:-2*///按位非var_dump(~$b);/*-5  11111011	补码取反    00000100原码    00000100	*///按位与var_dump($a & $b);/*//取出系统存储的结果进行与操作5	00000101-5  11111011&	00000001	//最终结果转换:判断符号位,0表示正数(原码),1表示负数(补码)*/

运算符优先级

运算符优先级:在多种运算符同时存在的时候,如何结合运算

流程控制

流程控制:代码执行的方向

控制分类

顺序结构:代码从上往下,顺序执行。(代码执行的最基本结构)

分支结构:给定一个条件,同时有多种可执行代码(块),然后会根据条件执行某一段代码

循环结构:在某个条件控制范围内,指定的代码(块)可以重复执行

顺序结构

顺序结构:最基本结构,所有代码默认都是从上往下依次执行

分支结构

在PHP中,分支结构主要有两种:if分支和switch分支

If分支

If:如果的意思,给定一个条件,同时为该条件设置多种(两种)情况,然后通过条件判断来实现具体的执行段

基本语法:if分支PHP也提供多种方式来实现

最简if:只有一段代码,但是可以选择是否执行

If(条件表达式){

         //满足条件所要执行的内容; //顺序结构

}

基础if:有两面性,满足条件或者不满足条件都有对应的执行代码

If(条件表达式){

         //满足条件后执行的代码段;

}else{

         //不满足条件执行的代码段;

}

复杂if结构:在判断条件之后,通常就有两种结果:满足或者不满足,在不满足之后还可以再次进行条件判断

If(条件表达式1){

         //满足条件表达式1的代码段;

}elseif(条件表达式2){

         //不满足表达式1条件,但是满足表达式2的代码;

}…    //可以使用多个elseif来进行再次条件筛选

Else{

         //全部不满足要执行的代码;

}

注意:如果条件特别多才会采用复合if形式

1、  如果条件比较单一(同一个条件),会采用elseif复合方式

2、  如果判断条件不一致,建议使用嵌套语法(不宜有太多层嵌套:影响代码美观)

If分支,适用于所有的条件判断(分支结构)

附上代码:

<?php//分支结构:if分支//最简if$day = 'weekenday';//如果是星期天就出去玩if($day == 'sunday'){echo 'go out';}//基本if判断//如果是星期天就出去玩,否则上班if($day == 'sunday'){echo 'go out play';}else{//不满足条件echo 'work';}//复合if结构//如果是星期天就出去玩,否则不能,但是如果是周六,那么可以在家玩echo '<hr/>';$day = 'satday';if($day == 'sunday'){echo 'go out';}else{//包含全部不满足情况//重新进行判断if($day == 'satday'){echo 'play at home';}else{echo 'work';}}echo '<hr/>';if($day == 'sunday'){echo 'go out';}elseif($day == 'satday'){echo 'play at home';}else{echo 'work';}

 Switch分支

Switch分支:有一组情形存在,同过一条件,通常有多个值,但是每一个值都会有对应不同的代码要执行。

Switch判断方式:是将条件放到分支结构内部判断

Switch基本语法:

Switch(条件表达式){

         //所有条件判断:逐个进行

         Case 值1:                                          //当前条件表达式的结果与值1相等(==)

                  要执行的代码段;

                  Break;                                         //在switch中,如果条件匹配成功,那么系统就不会再次匹配条件,会自动顺序执行向下的所有代码(case代码除外),需要中断执行:break表示中断switch(结束)。

         Case 值2:

                  要执行的代码段;

                  Break;

         …

         //可以使用类似else的语法:都不匹配

         Default:

                  //匹配失败的代码;

                  Break;

}

If和switch的选择

1、  if能做所有的分支结构事情

2、  switch处理的是条件比较多,同时比较单一,而且是固定值匹配的分支结构

附上代码:

<?php//分支结构:switch分支//根据日期做不同的事情$day = 1;//从1到5做不同的事情switch($day){//$day条件一定是个具体的值case 1:	//$day == 1echo '1';//break;case 2:echo '2';break;case 3:echo '3';break;case 4:echo '4';break;case 5:echo '5';break;default:echo 'error';break;	}

循环结构

循环结构:代码段在一定的控制下,可以多次执行

在PHP中循环结构有以下几种:

For循环:通过条件、起始和终止判断执行

While循环:通过判断条件终止

Do-while循环:跟while差不多

Foreach循环:专门针对数组

For循环

For循环基本语法

For(条件表达式1;条件表达式2;条件表达式3){

         //条件表达式1:定义初始化条件,可以有多种赋值语句存在,使用逗号分隔即可

         //条件表达式2:边界判定,限定循环执行的次数

         //条件表达式3:用来执行条件变化(自操作)

         //循环体

}

For循环执行原理:

1、  执行条件表达式1:定义初始化条件(执行一次)

2、  执行条件表达式2:判断条件(N次)

         2.1   满足条件:执行循环体

         2.2   不满足条件:循环结束

3、  执行循环体:(N次)

4、  执行条件表达式3:循环变量变化(N次)

5、  执行条件表达式2:判断条件(N次)

6、  重复执行3-4-2步骤:直到第2步不满足条件结束循环

For循环中条件表达式1的多变量定义

For循环特殊使用:for循环中对应的括号(条件)可以一个都没有(死循环):一定要避免出现

For(;;){

         //循环体

}

附上代码:

<?php//循环结构:for循环//从1到10输出:初始为1,截止为10for($i = 1; $i <= 10;$i++){//输出//echo $i,'<br/>';}//最后:$i == 11echo $i;

 

while循环

while循环基本语法:

条件初始化;

while(条件表达式){

         //条件表达式就是判断边界条件

         循环体;            //循环条件的变化

}

For与while的选择

1、  如果是基于固定已知条件(数值而且是有规律的变化),使用for循环

2、  while可以做灵活的条件判定(while使用的比较多)

附上代码:

<?php//while循环//定义条件$i = 1;//循环判定执行while($i <= 10){//循环体echo $i++,'<br/>';//循环条件变更//$i++;}

do-while循环

do-while:看着很像while,while首先进行条件判定然后执行循环体,有可能出现第一次就条件不满足,那么就会直接失败(循环体一次都不执行)。Do-while就是先干了再说(执行循环体),后判断条件。(至少会执行一次循环体)

do-while基本语法:

do{

         //循环体

}while(条件表达式);

附上代码:

<?php//do-while循环结构//输出1-10之间的偶数(条件判定加入)//定义基础条件$i = 1;//循环判定do{//执行输出if($i % 2 != 1){//是偶数echo $i,'<br/>';		}//条件变更$i++;}while($i <= 10);

循环控制

循环控制:在循环内部对循环本身进行控制

中断控制:重新开始循环,循环体中还有其他内容,也再执行

Continue 层级;       //默认是1(循环可以多层嵌套)

终止控制:循环直接结束

Break 层级;             //默认是1

因为循环经常性会碰到嵌套(循环中间包含循环),如果在循环内部有些条件下,明确可以知道当前循环(或者说外部循环)不需要继续执行了,那么就是可以使用循环控制来实现:其中内部循环也可以控制到外部,就是通过使用层级参数。

Continue 2;    //当前自己循环后面内容不再执行,同时外部循环如果还有循环体也不再执行,重新来过;

Break 2;            //当前自己循环结束,同时外部也结束(如果还有外部不受影响,继续执行)

附上代码:

<?php//循环控制//需求:输出1到100之间的5的倍数$i = 1;while($i <= 100){//判断:是否是5的倍数if($i % 5 != 0) {//说明当前$i不是5的倍数//重新循环$i++;//重新循环//continue;			//系统重新跳到循环开始处//终止循环break;}//输出数值echo $i++,'<br/>';}echo $i;

流程控制替代语法

流程控制替代语法:分支和循环结构的替代语法

PHP本身是嵌入到HTML中的脚本语言,需要在HTML中书写一些关于判断或者循环的结构语法,必须符合PHP标签规范,需要HTML与PHP进行混搭,如果使用原始的PHP代码那么会非常不美观。

需求:打印一个九九乘法表,使用表格来展示

在PHP书写到HTML中的这些大括号{}非常不美观,所以PHP提供了一种替代机制,让其可以不用书写大括号:

For(;;){  =  -> for(;;):

}       =   ->   endfor;

PHP中具体有哪些替代语法呢?

PHP应该在HTML中只做数据输出,输出通常伴有条件判断和循环操作,因此PHP提供了对应分支结构和循环结构的替代语法:全部都是对应的一个模式:

左大括号{:使用冒号替代:

右大括号}:使用end+对应的起始标记替代

比如

If:                 if():                开始           endif                       结束

Switch:        switch():        开始           endswitch              结束

For:             For():            开始            endFor                   结束

While:         While():      开始            endWhile                结束

foreach:      for():           开始            endfor                     结束

附上代码:

<table border=1><?php for($i = 1;$i < 10;$i++){?><tr><?php for($j = 1;$j <= $i;$j++){?><td><?php echo $i . ' * ' . $j . ' = ' . $i * $j;?></td><?php }?></tr><?php }?>
</table><table border=1><?php for($i = 1;$i < 10;$i++):?><tr><?php for($j = 1;$j <= $i;$j++):?><td><?php echo $i . ' * ' . $j . ' = ' . $i * $j;?></td><?php endfor;?></tr><?php endfor;?>
</table>

相关文章:

PHP初级教程------------------(2)

目录 运算符 赋值运算符 算术运算符 比较运算符 逻辑运算符 连接运算符 错误抑制符 三目运算符 自操作运算符 ​编辑 计算机码 位运算符 运算符优先级 流程控制 控制分类 顺序结构 分支结构 If分支 ​ Switch分支 循环结构 For循环 while循环 do-while循环 循环控制 ​ …...

【SQL开发实战技巧】系列(三十五):数仓报表场景☞根据条件返回不同列的数据以及Left /Full Join注意事项

系列文章目录 【SQL开发实战技巧】系列&#xff08;一&#xff09;:关于SQL不得不说的那些事 【SQL开发实战技巧】系列&#xff08;二&#xff09;&#xff1a;简单单表查询 【SQL开发实战技巧】系列&#xff08;三&#xff09;&#xff1a;SQL排序的那些事 【SQL开发实战技巧…...

springBoot自动配置过程介绍

什么是自动配置 以前整合spring mybatis框架时候&#xff0c;需要加很多的bean, 比如说sqlSessionFactory等等 现在springboot帮我们干了&#xff0c;我们只需要引入对应的starter就可以了。 springBoot可以帮我们配置好了一些bean. 如mysql, mogondb相关操作等等&#xff…...

PostgreSQL最后的救命稻草 — pg_resetwal

pg_resetwal— 重置 PostgreSQL 数据库集群的预写日志和其他控制信息 适用版本&#xff1a;PostgreSQL 12/13/14/15语法 pg_resetwal [ -f | --force ] [ -n | --dry-run ] [option...] [ -D | --pgdata ]datadir描述pg_resetwal清除预写日志 WAL&#xff0c;并可选地重置pg_c…...

彻底关闭Windows更新

一、关闭Windows Update服务 1、按“Windows R”键&#xff0c;打开运行对话框&#xff0c;并输入“services.msc”&#xff0c;然后再单击“确定”。 2、在弹出的服务窗口中&#xff0c;找到“Windows Update”选项并双击打开它。 3、在弹出的“Windows Update的属性”对话框…...

Java正则表达式语法

Java正则表达式的语法与示例 | |目录 1匹配验证-验证Email是否正确 2在字符串中查询字符或者字符串 3常用正则表达式 4正则表达式语法 1匹配验证-验证Email是否正确 public static void main(String[] args) { // 要验证的字符串 String str "servicexsoftlab.net&q…...

【2023-3-29】JavaScript使用promise顺序调用函数并抛出异常

JavaScript使用promise顺序调用函数并抛出异常 场景 新建或者编辑时&#xff0c;一个页面中存在多个表单&#xff0c;每个表单都有单独进行表单验证。点击提交时&#xff0c;若有一个表单校验失败&#xff0c;则不能提交。 ps&#xff1a;为啥不放在一个表单中&#xff1f; (…...

Python实现GWO智能灰狼优化算法优化随机森林分类模型(RandomForestClassifier算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 灰狼优化算法(GWO)&#xff0c;由澳大利亚格里菲斯大学学者 Mirjalili 等人于2014年提出来的一种群智能…...

从redis到epoll到mmap

redis为什么这么快&#xff1f; 比较容易答出的答案 1)纯粹的内存操作 2)单线程操作,不用考虑线程切换 其他优势 3)I/O 多路复用,使用epoll 4)Reactor 设计模式 I/O 多路复用有三种 select、poll、epoll select&#xff1a;使用数组存储轮询 poll&#xff1a;使用链表轮询 epo…...

STM32CubeMX快速构造工程模板(一)

STM32CubeMX作为一个免费开源的软件,能够可视化配置STM32或其他产品硬件资源,能过快速地构造工程模板,很是方便!!! 目录 STM32CubeMX快速构造工程模板 首先第一步,打开软件-点击按钮-输入型号-双击打开。...

Java Web中的ServletContext对象

目录 ServletContext对象 获取上下文初始化参数的相关方法 创建ServletContext对象 1&#xff09;通过 GenericServlet 提供的 getServletContext() 方法 2&#xff09;通过 ServletConfig 提供的 getServletContext() 方法 3&#xff09;通过 HttpSession 提供的 getServletCo…...

回归预测 | MATLAB实现PSO-RF粒子群算法优化随机森林多输入单输出回归预测

回归预测 | MATLAB实现PSO-RF粒子群算法优化随机森林多输入单输出回归预测 目录回归预测 | MATLAB实现PSO-RF粒子群算法优化随机森林多输入单输出回归预测效果一览基本介绍程序设计参考资料效果一览 基本介绍 MATLAB实现PSO-RF粒子群算法优化随机森林多输入单输出回归预测 粒子…...

在小公司工作3年,从事软件测试5年了,才发现自己还是处于“初级“水平,是不是该放弃....

毕业前三年&#xff0c;从早到晚&#xff0c;加班到深夜&#xff0c;一年又一年&#xff0c;直至刚入职场的首个黄金三年过年都去了&#xff0c;而职位却仍在原地踏步。尽管感觉自己努力过&#xff0c;但是实际上&#xff0c;自身的能力从没得到过多少提升。 所以在无数个夜晚…...

基于 OpenCV 与 Java 两个语言版本实现获取某一图片特定区域的颜色对比度

本文目录一、什么是对比度二、什么是颜色直方图三、如何通过RGB计算颜色对比度什么是HSV、Lab颜色空间四、OpenCV代码五、Java代码5.1 平滑处理5.2 完整代码一、什么是对比度 对比度是指图像中不同区域之间的明暗差异程度&#xff0c;它是图像质量中的重要指标之一。除了颜色对…...

Book:实战Java高并发程序设计(第二版)

实战Java高并发程序设计&#xff08;第二版&#xff09;为什么会有并行计算&#xff1f;并行计算需要回答的问题基本概念并发级别有哪些&#xff1f;Amdahl定律和Gustafson定律Java并发三特性进程和线程线程的生命周期Thread类run()与start()的区别为什么会有并行计算&#xff…...

LeetCode 831. Masking Personal Information【字符串,正则表达式】中等

本文属于「征服LeetCode」系列文章之一&#xff0c;这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁&#xff0c;本系列将至少持续到刷完所有无锁题之日为止&#xff1b;由于LeetCode还在不断地创建新题&#xff0c;本系列的终止日期可能是永远。在这一系列刷题文章…...

递增三元组

[蓝桥杯 2018 省 B] 递增三元组 题目描述 给定三个整数数组 A[A1,A2,⋯,AN]A [A_1, A_2,\cdots, A_N]A[A1​,A2​,⋯,AN​]&#xff0c;B[B1,B2,⋯,BN]B [B_1, B_2,\cdots, B_N]B[B1​,B2​,⋯,BN​]&#xff0c;C[C1,C2,⋯,CN]C [C_1, C_2,\cdots,C_N]C[C1​,C2​,⋯,CN​…...

java源码阅读 - TreeSet

往期文章 用最简单的话讲最明白的红黑树java源码阅读 - HashMap数据结构 - 堆与堆排序 文章目录往期文章一、介绍二、类的声明三、成员变量四、构造函数五、常用方法1. NavigableSet接口的实现2. SortedSet接口的实现六、总结一、介绍 在上期文章中&#xff0c;我们从源码层面…...

写毕业论文经验贴

首先说一句不要靠近word&#xff0c;会变得不幸。最好用latex写&#xff0c;不过我当时懒得下载latex了&#xff0c;于是后期改格式花了点时间 写论文之前 事先把所有的论文都查好并且整理好&#xff0c;论文第一、二章写起来就会很快&#xff1b; 把实验做顺溜&#xff0c;实…...

2.7 进程退出、孤儿进程、僵尸进程+2.8 wait函数+2.9 waitpid函数

1.进程退出 子进程退出时&#xff1a;父进程帮助子进程回收内核区的资源 exit.c /*#include <stdlib.h>void exit(int status);#include <unistd.h>void _exit(int status);status参数&#xff1a;是进程退出时的一个状态信息。父进程回收子进程资源的时候可以获取…...

Python|GIF 解析与构建(5):手搓截屏和帧率控制

目录 Python&#xff5c;GIF 解析与构建&#xff08;5&#xff09;&#xff1a;手搓截屏和帧率控制 一、引言 二、技术实现&#xff1a;手搓截屏模块 2.1 核心原理 2.2 代码解析&#xff1a;ScreenshotData类 2.2.1 截图函数&#xff1a;capture_screen 三、技术实现&…...

51c自动驾驶~合集58

我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留&#xff0c;CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制&#xff08;CCA-Attention&#xff09;&#xff0c;…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者

抖音增长新引擎&#xff1a;品融电商&#xff0c;一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中&#xff0c;品牌如何破浪前行&#xff1f;自建团队成本高、效果难控&#xff1b;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

STM32标准库-DMA直接存储器存取

文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取 DMA可以提供外设…...

渲染学进阶内容——模型

最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用

文章目录 问题现象问题原因解决办法 问题现象 macOS启动台&#xff08;Launchpad&#xff09;多出来了&#xff1a;Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显&#xff0c;都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

Spring AI与Spring Modulith核心技术解析

Spring AI核心架构解析 Spring AI&#xff08;https://spring.io/projects/spring-ai&#xff09;作为Spring生态中的AI集成框架&#xff0c;其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似&#xff0c;但特别为多语…...

【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)

1.获取 authorizationCode&#xff1a; 2.利用 authorizationCode 获取 accessToken&#xff1a;文档中心 3.获取手机&#xff1a;文档中心 4.获取昵称头像&#xff1a;文档中心 首先创建 request 若要获取手机号&#xff0c;scope必填 phone&#xff0c;permissions 必填 …...

USB Over IP专用硬件的5个特点

USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中&#xff0c;从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备&#xff08;如专用硬件设备&#xff09;&#xff0c;从而消除了直接物理连接的需要。USB over IP的…...

Java求职者面试指南:计算机基础与源码原理深度解析

Java求职者面试指南&#xff1a;计算机基础与源码原理深度解析 第一轮提问&#xff1a;基础概念问题 1. 请解释什么是进程和线程的区别&#xff1f; 面试官&#xff1a;进程是程序的一次执行过程&#xff0c;是系统进行资源分配和调度的基本单位&#xff1b;而线程是进程中的…...