随着php7的出现,好多业务也随之跟着转变,然后就会出现.如何充分发挥PHP7的性能 、那些相应的函数需要去掉或者不支持的函数。这些依然是需要研究的。
php7好处
性能上的大幅度提升,可以省机器,可以省钱
新特性
1 类型定义
使用字符串(string), 整数 (int), 浮点数 (float), 以及布尔值 (bool),来声明函数的参数类型与函数返回值。
两种模式 : 强制 ( 默认 ) 和 严格模式
类型:string、int、float和 bool
function add(int $a)
{
return 1+$a;
}
var_dump(add(2);
函数和匿名函数都可以指定返回值的类型
function show(): array
{
return [1,2,3,4];
}
注意:php5是无法执行上面代码的,php7执行的时候会先输出一个3和一个报错( Argument 1 passed to add() must be of the type integer,float given);
2 set_exception_handler() 不再保证收到的一定是 Exception 对象
在 PHP 7 中,很多致命错误以及可恢复的致命错误,都被转换为异常来处理了。 这些异常继承自 Error 类,此类实现了 Throwable 接口 (所有异常都实现了这个基础接口)
多异常捕获处理
一个catch语句块现在可以通过管道字符(|)来实现多个异常的捕获。 这对于需要同时处理来自不同类的不同异常时很有用。
try {
// some code
} catch (FirstException | SecondException $e) {
// handle first and second exceptions
} catch (\Exception $e) {
// ...
}
3 太空船操作符(组合比较符)====>空船操作符用于比较两个表达式。当 a大于、等于或小于a大于、等于或小于b 时它分别返回 -1 、 0 或 1
a等于b ====> 返回 0;
a小于b ====> 返回-1
a大于b ====> 返回 1;
// Integers
echo 1 <=> 1; // 0
echo 1 <=> 2; // -1
echo 2 <=> 1; // 1
// Floats
echo 1.5 <=> 1.5; // 0
echo 1.5 <=> 2.5; // -1
echo 2.5 <=> 1.5; // 1
// Strings
echo "a" <=> "a"; // 0
echo "a" <=> "b"; // -1
echo "b" <=> "a"; // 1
5 通过define()定义常量数组
define('ANIMALS', ['dog', 'cat', 'bird']);
echo ANIMALS[1]; // outputs "cat"
6 可为空(Nullable)类型:
类型现在允许为空,当启用这个特性时,传入的参数或者函数返回的结果要么是给定的类型,要么是 null 。可以通过在类型前面加上一个问号来使之成为可为空的。
function test(?string $name)
{
var_dump($name);
}
7 Void 函数----返回值声明为 void 类型的方法要么干脆省去 return 语句,要么使用一个空的 return 语句。 对于 void 函数来说,null 不是一个合法的返回值。
function swap(&$left, &$right) : void
{
if ($left === $right) {
return;
}
$tmp = $left;
$left = $right;
$right = $tmp;
}
$a = 1;
$b = 2;
var_dump(swap($a, $b), $a, $b);
输出:
null
int(2)
int(1)
8.短数组语法
$data = [
['id' => 1, 'name' => 'Tom'],
['id' => 2, 'name' => 'Fred'],
];
9 类常量可见性 现在起支持设置类常量的可见性。
class ConstDemo
{
const PUBLIC_CONST_A = 1;
public const PUBLIC_CONST_B = 2;
protected const PROTECTED_CONST = 3;
private const PRIVATE_CONST = 4;
}
php7废弃了一些函数
废弃
.废弃扩展
Ereg 正则表达式
mssql
mysql
sybase_ct
2.废弃的特性
不能使用同名的构造函数
实例方法不能用静态方法的方式调用
3.废弃的函数
方法调用
call_user_method()
call_user_method_array()
应该采用call_user_func() 和 call_user_func_array()
加密相关函数
mcrypt_generic_end()
mcrypt_ecb()
mcrypt_cbc()
mcrypt_cfb()
mcrypt_ofb()
注意: PHP7.1 以后mcrypt_*序列函数都将被移除。推荐使用:openssl 序列函数
杂项
set_magic_quotes_runtime
set_socket_blocking
Split
imagepsbbox()
imagepsencodefont()
imagepsextendfont()
imagepsfreefont()
imagepsloadfont()
imagepsslantfont()
imagepstext()
4.废弃的用法
$HTTP_RAW_POST_DATA 变量被移除, 使用php://input来代
ini文件里面不再支持#开头的注释, 使用”;”
移除了ASP格式的支持和脚本语法的支持: <% 和 < script language=php >
在日常我们经常见到,类似日期(生日、时间提醒等)提醒的程序随处可见,主要是因为这样的程序有一定的定时效果。那么在PHP中怎么实现类似生日提醒的小功能呢?今天为大家详细讲解一下。
实现过程
1、准备一张生日祝福的图片。
2、创建php脚本文件。
3、设置员工的生日。
4、把当前日期和员工生日进行比较。
5、如果当前日期和员工生日一致则系统给出提示,并发出生日祝福!
代码如下:
程序运行结果如下:
PHP知识点总结
1、if语句
if语句在PHPweb开发中常用到的语言结构,它主要是用来判定给定的值是否满足条件,根据条件是否满足再决定执行什么操作。本例中的if用来判断当前日期是否与原来设定的值是否一致,如果一致输入生日提醒,如果不符合不执行任何操作。
2、数组
数组是PHP基本的数据类型,应用广泛功能强大,它可以储存多个任意类型的数据,可以作为一个单元使用。我们可以把数组看成由很多隔层的盒子,每一层都可以存放一个值。本例中的数组是直接用
array()函数声明的一维数组,把员工的名字和每个人对应生日日期都存储在数组$staff中,它的键是“小张”、“小李”、“小刘”,对应键值是“08月12日”、“06月3日”、“08月3日”。
3、foreach()语句
foreach()语句用于遍历数组,如果尝试用其它数据类型或者一个未初始化的变量时会产生错误。它的语法格式是foreach(array_expression as $value)statement;,参数array表示要遍历的数组,expression表示键,$value表示键值的对应值,statement表示语句块,本例中用foreach遍历数组$staff。
4、date()函数
date()函数是直接从PHP脚本获取服务器上的日期和时间。可以使用date()函数通过不同的方式格式化日期,date 函数受到 php.ini 中设置影响。本例中是使用date()函数获取年和月再和之前设置的日期进行比较,再根据结果决定下一步操作。date函数常参数如下图:
关于PHP时间日期定期提醒先聊到这,每天学习一个知识点,每日寄语-“ 决不能放弃,世界上没有失败,只有放弃。”
php的语法中,有一些系统自带的方法名,均以双下划线开头,它会在特定的情况下被调用。即所谓的魔法函数。
魔术函数
1。__construct()
实例化对象时被调用, 当__construct和以类名为函数名的函数同时存在时,__construct将被调用,另一个不被调用。
2。__destruct() 当删除一个对象或对象操作终止时被调用。
3。__call() 对象调用某个方法, 若方法存在,则直接调用; 若不存在,则会去调用__call函数。
4。__get() 读取一个对象的属性时, 若属性存在,则直接返回属性值; 若不存在,则会调用__get函数。
5。__set() 设置一个对象的属性时, 若属性存在,则直接赋值; 若不存在,则会调用__set函数。
面向对象编程中使用频率很高的两个方法.当设置和获取对象的属性不允许访问时性,此方法会被调用。一定注意是不存在或不允许被读写时才会被调用。
因此对于一个对象,其属性不确定时,用这两个方法效果很好。
__get($name) 获取对象不存在的属性或无法访问的属性时调用.$name表示要获取的属性名
__set($name, $value) 设置对象不存在的属性或无法访问的属性时调用.$name表示要设置的属性名,$value表示要设置的值.
//例如:我们可以构建一个不确定属性的数据记录类
class Record {
protected $_data;
public function __get($name)
{
if (isset($this->_data[$name])) {
return $this->_data;
}
return false;
}
public function __set($name, $value)
{
$this->_data = $value;
}
}
$record = new Record();
$record->name = 'andrew';
echo 'My name is '.$record->name.PHP_EOL;
这两个方法用得比较少些。当调用方法isset()判断对象是否存在某属性, 调用unset()注销某属性时。且当这些属性不存在或不可访问时,会分别调用__isset()和__unset()方法
与前面的__get()和__set()略同。都是某属性不存在或不可访问时被调用
__isset($name) 当调用方法isset()方法判断不可访问的类属性时调用.$name表示属性名.
__unset($name) 当调用方法unset()方法删除不可访问的类属性时调用.$name表示属性名.
6。__toString() 打印一个对象的时被调用。如echo $obj;或print $obj;
classInfo{
publicfunction__toString()
{
return"info";
}
}
$info = new Info();
echo $info.PHP_EOL;
7。__clone() 克隆对象时被调用。如:$t=new Test();$t1=clone $t;
8。__sleep() serialize之前被调用。若对象比较大,想删减一点东东再序列化,可考虑一下此函数。
9。__wakeup() unserialize时被调用,做些对象的初始化工作。
__sleep() 和 __wakeup()
这两个方法,咋一看,就是睡觉和唤醒嘛。那跟对象有什么关系?有时候该用的时候也想不起来。其实,我们简单点记,在php中有一个让对象睡觉的方法,叫searialize(),
它会将对象的各属性序列化以方便保存起来。而unsearialize()方法是将保存的序列化的数据解开变成对象。也叫唤醒。相对应的,当睡觉时,php会调用__sleep()方法,它
的返回值必须是一个数组,表示需要保存的属性项, 对于文件句柄,数据库连接等资源类型的数据是不能被序列化保存的。同理唤醒对象时,php会调用__wakeup()方法,
但与__sleep()不同的是,它返回值为空。被保存的属性都会被解开。那它有什么用呢?刚我们说了,searialize是不能保存资源的。那么唤醒时如果我们想用到这些资源怎么
办?回答很肯定,重新创建?那在哪里创建合适呢?当然是__wakeup()方法里面,因为每次唤醒时都会调用此方法嘛。这下我们很清楚这两个方法的用途了。
__sleep() 当调用searialize()方法时调用,返回值为数组,表示需要序列化的数据项.
__wakeup() 当调用unsearizlie()方法时调用。一般用来在唤醒时初始化资源对象.
//例如我们有一个用户类,用户名和性别都是类属性。用户的密码存在文件中
Class User {
public $username;
public $sex;
public $passFile;
private $_password;
public function __construct($username, $sex, $passFile)
{
$this->username = $username;
$this->sex = $sex;
$this->passFile = $passFile;
$this->_password = file_get_contents($passFile);
}
public function getPassword()
{
return $this->_password;
}
public function __sleep()
{
return array(
'username', 'sex', 'passFile',
);
}
public function __wakeup()
{
$this->_password = file_get_contents($this->passFile);
}
}
$user = new User('andrew', 'male', 'pass.data');
$serializeData = serialize($user);
echo $serializeData.PHP_EOL;
$user = unserialize($serializeData);
echo $user->getPassword().PHP_EOL;
10。__isset() 检测一个对象的属性是否存在时被调用。如:isset($c->name)。
11。__unset() unset一个对象的属性时被调用。如:unset($c->name)。
12。__set_state() 调用var_export时,被调用。用__set_state的返回值做为var_export的返回值。
13。__autoload() 实例化一个对象时,如果对应的类不存在,则该方法被调用。
魔术常量
1。__LINE__ 返回文件中的当前行号。
2。__FILE__ 返回文件的完整路径和文件名。如果用在包含文件中,则返回包含文件名。自 PHP 4.0.2 起,__FILE__ 总是包含一个绝对路径,而在此之前的版本有时会包含一个相对路径。
3。__FUNCTION__ 返回函数名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该函数被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。
4。__CLASS__ 返回类的名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该类被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。
5。__METHOD__ 返回类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。
运行效果
上代码
<!DOCTYPE html><html><head><meta charset="UTF-8"><title>评价学生成绩</title></head><body>在一个form表单中输入一个分数(0-100之间),程序可以给该分数进行“评语”,<br>评语包括:优秀,良好,中等,及格,不合格。 <form action="" method="post"><input type="text" name="result" placeholder="请输入您的成绩"> <input type="submit" value="评价"></form><?php $cj = "";if (!empty($_POST['result'])) {//判断字段是不为空$cj = $_POST['result'];//获取POST字段if (is_numeric($cj)) {//判断字段是否为数字类型$cj2 = (float)$cj;//将字段强制转换为浮点型// echo $cj2.'<br>';// echo $cj;if ($cj2 == $cj) {//两次变量是否相等,相等则执行内if,否则执行本身esleif ($cj >= 90) {echo "您输入的成绩为{$cj},判定为:成绩优秀!";} elseif ($cj >= 80 && $cj <= 90) {echo "您输入的成绩为{$cj},判定为:成绩良好!";} elseif ($cj >= 70 && $cj <= 79) {echo "您输入的成绩为{$cj},判定为:成绩中等!";} elseif ($cj >= 60 && $cj <= 69) {echo "您输入的成绩为{$cj},判定为:成绩及格!";} else {echo "您输入的成绩为{$cj},判定为:成绩不合格!";}}} else {//若字段不为数字类型echo '<font color="red" class=" ">请输入正确的成绩,如:90.5</font>';}} else {//若字段为空echo '<font color="red" class=" ">请不要留空!请输入正确的成绩,如:90.5</font>';}?></body></html>提示
若上面代码影响阅读,自行百度"PHP代码格式化"进行格式化.
function getResult($a,$b,$f){ return $f($a)+ $f($b);}function maxs($x){if($x>10)return20;
elsereturn5;}echo getResult(11,9,'maxs');
上一节课讲的是PHP编程语言的分支语句和循环语句,以及常用的字符串函数和数组函数。
有了这些基础知识之后,就可以开始大量的编程练习了。
这节课先来做之前学习Python编程语言的部分稍微简单一些的例子程序,因为之前已经讲解过编程的思路和解法,因此,这节课学哥直接给出程序的例子,大家可以先自己根据题目尝试编写看看,然后再和学哥的程序进行对照学习思考。
从1加到100求和
程序如下:
运行结果:
输出九九乘法表
程序如下:
运行结果:
从1开始连续100个奇数相加是多少
程序如下:
运行结果:
从2开始连续50个偶数相加是多少
程序如下:
运行结果:
输入一个年份,判断输出闰年或者平年
程序如下:
运行结果:
由于PHP是服务器端运行语言,因此不能直接接收用户键盘的输入,但是可以通过在运行PHP程序时传递参数的方式将用户的输入的值传递给PHP程序进行处理,一般使用$argv数组来接收参数,这个数组就是php命令后面的相应的值,可以在程序中使用print_r($argv)来看看具体都是什么样的值。
斐波拉契数列,求第一百个数字
程序如下:
运行结果:
引言
我们已经习惯在框架里编写类库接口,使用面向对象的方式构建规模以上的应用程序。但是还有很多机会,时时刻刻与PHP数组打交道。
PHP版本迭代并加入的对象操作特性非常丰富。今天我们来说一说最基础的PHP空对象,怎么使用,以及注意事项。
学习时间
如果是数组,我们可能这样存储数据:
$aVal = array(); $aVal[key1][var1] = "something"; $aVal[key1][var2] = "something else";
那么有没有办法像下面这样操作数据呢?
(object)$oVal = ""; $oVal->key1->var1 = "something"; $oVal->key1->var2 = "something else";
当然了,这个是伪代码。PHP中自带了 stdClass 对象,声明空对象使用下面的方法:
$x = new stdClass();
stdClass是默认的PHP对象。stdClass没有属性,方法或父级。它不支持魔术方法,并且不实现任何接口。
当将标量或数组转换为Object时,将获得stdClass的实例。只要需要通用对象实例,就可以使用stdClass。
创建 stdClass 的示例,可以使用下面的任意方式:
$x = new stdClass; $y = (object) null; // 同上 $z = (object) 'a'; // 创建属性 'scalar' = 'a' $a = (object) array('property1' => 1, 'property2' => 'b');
你需要格外注意:
stdClass不是基类! PHP类不会自动从任何类继承。 所有类都是独立的,除非它们显式扩展了另一个类。 在这方面,PHP与许多面向对象的语言不同。
你无法在代码中定义名为“ stdClass”的类。 该名称已被系统使用。 你可以定义一个名为“Object”的类。也可以定义一个扩展stdClass的类,但不会获得任何好处,因为stdClass不执行任何操作。
再举一个例子:
class CTest {public $property1; } $t = new CTest; var_dump($t instanceof stdClass); // falsevar_dump(is_subclass_of($t, 'stdClass')); // false echo get_class($t) . "\n"; // 'CTest' echo get_parent_class($t) . "\n"; // false (no parent)
注意,PHP的类是独立存在的,上面的 CTest 类也绝不是继承自 stdClass 对象。
写在最后
通过本文,你应该收获一个重要的概念,那就是,PHP 的类除非手动严格指定继承类,否则都是独立存在的。
同时,PHP 提供了标准的 stdClass 对象用于构建空对象。操作数据时可以不用像数组那样了。但是,抛开数组,你讲很大程序上享受不到PHP带来的数据操作便利。
Happy coding :_)
我是 @程序员小助手 ,持续分享编程知识,欢迎关注。
有时候用户在网站上发布内容或者留言时,系统提示使用了禁止词语禁止发布。为了避免用户在网站上发布违规违法内容,网站开发人员为了规范网站内容采取了过滤字符串的手段,今天为大家讲解一下自定义函数过滤字符串。
实现过程
1、制作用户评论文本框和评论提交按钮。
1、创建php文件。
2、定义具有过滤功能的验证函数,设定过滤规则。
3、调用函数去判断用户提交内容是否符合规则。
代码如下:
PHP编程实例:简单的自定义函数过滤字符串功能实现!
PHP知识点总结:
1、form标签的action属性
form标签的action属性表示向何处提交表单数据,当action为空时表示数据提交还是这个页面本身。
2、php自定义函数
我们把内容过滤(过滤字符串功能)功能语句都写到函数里方便后续的调用。函数是可以实现特定功能的代码块(程序),大部分编程语言都有这个概念,函数可以更好实现模块功能。函数可以分为父函数和子函数,他们之前可以相互调用。上面代码中我们声明了一个str函数,它具有过滤特定内容(过滤字符串)的功能。
3、数组和php系统函数
这个实例中我们先把我们要过滤的内容(版权、出版、图书、影像)声明成数组$array,再用implode()函数把数组转换成字符串$repstr。数组是不能直接操作的,我们需要把数组转换成字符串再进一步处理。
4、if语句、preg_match() 函数和正则表达式
if语句作用是根据不同的条件执行不同的动作,如果用户输入内容出现了禁止内容提示“使用了系统禁止词语,重新填写”页面重新定位到index.php。如果用户输入内容不包括禁止内容则输出提交成功并输出用户提交内容。
preg_match() 函数是处理正则表达式匹配,成功返回 1 ,否则返回 0。“/$str/”是一个简单的正则表达式表示匹配函数的参数即用户输入内容,preg_match("/$str/",$repstr)意思用户输入内容($str)和设定禁止的内容($repstr)进行匹配,如果匹配成功返回1,if执行为真的内容。如果匹配不成功,返回0,则if执行else内容。
5、empty()函数
为了避免出现非预期的效果,这是使用是empty()函数判断$_POST['sub'](提交的内容)传递参数是否存在。
上面实例只是简单介绍了字符串过滤的原理,如果要运用的话需要把过滤数据存储在数据库中,而不是一个简单的数组。
代码运行结果如下图:
关于自定义函数过滤字符串功能先聊到这,每天学习一个知识点,每日寄语-“滴水穿石,不是力量大,而是功夫深。”
近期许多网民跟我说为何出現系统漏洞的网站程序全是PHP开发设计的,而非常少有JAVA和Python的渗透案例,先不用说python,就PHP和Java谈一谈。在这以前,先何不记牢那么一个依据(眼底下也无需担心它对吗):PHP网站系统漏洞类型多但不繁杂,Java网站系统漏洞则反过来。
为什么在被实战渗透中的网站大部分是PHP代码开发设计的?这个问题可以先放一放,先说下边的这几个问题。
1.为何看了许多分享实战中的案例全是PHP代码开发设计的网站?不清楚网友说的实例指具体的渗透实例還是一些实验教学实例?先说后面一种,PHP語言非常容易入门,而PHP网站开源系统免费代码多,因此(再融合前边何不记牢的依据),PHP网站系统漏洞自然环境更非常容易构建,更合适课堂教学。再聊前面一种,1)渗透一般并不是对单独系统漏洞的剖析,只是对好几个系统漏洞的开发利用,那麼(依据前边何不记牢的依据),显而易见在渗透层面PHP网站有大量概率,应写的主题多。2)中国状况来讲,用Java的网站是政府单位、大中型国营企业等,用PHP的是中小型企业、个人、学生所使用等,(防止话题讨论拓宽过多就不用说为何了),因此渗透Java网站你一般是不容易传出来给人看的。
2.哪儿能寻找JAVA/Python等渗透实例?
如前所述,根据他所谈论的情况,在线教学案例应该很多,如JSP框架环境漏洞、Tomcat漏洞、反序列化漏洞等。假如要具体渗透实例,那每一年hw行動有一大堆渗透Java网站的,但报告就不易取得咯。
3.有木有必要去学PHP?
并不是必需的,如同我明天早上并不是非得吃包子豆浆一样。但PHP更强入门web安全性,学PHP也不会阻拦你再学Java,大部分搞web安全性都从PHP下手,咱也没必要与人不一样。许多搞web安全性也不是一定要学习什么,实践活动中碰到什么了学习什么。再而言“为何被渗透的网站大部分是PHP开发设计的?”
这个问题我认为针对题主来讲实际上实际意义并不大了。以便描述便捷这儿何不先建立一个“非专业难题”的定义。说白了“非专业难题”,便是围观者非专业)会传出的难题,而被告方并不考虑到的难题。举个例子,你一直在报名参加一场考試,我还在做旁观者,考卷做完了我发现了你绝大多数回答选B,随后我说“为何你的单选题大部分是选B”?这就是个非专业难题,由于作为被告方你来说,并不会有“我想多选B”那样的考虑,你所考虑到的仅仅解每个题罢了。过后你能寻找各式各样造成出現许多选B的缘故,但没啥实际意义,由于下一次考試你肯定不会考虑到这种缘故。
“为何被渗透的网站大部分是PHP开发设计的?”就是个非专业难题,针对做渗透的人而言并不关注,而题主如今的目地是要变成渗透工作人员,所以说它没有什么实际意义。针对渗透者来讲,并不会说PHP开发设计的a网站便会比Java开发设计的b网站更强或更难渗透,仅仅PHP有PHP的搞法Java有Java的搞法罢了,如果对网站或APP渗透测试有需求的朋友可以找专业的网站安全公司来测试网站的安全性,找出漏洞修复掉防止被黑客入侵攻击,目前SINESAFE,鹰盾安全,绿盟,石头科技都是在渗透测试方面比较专业的公司。
加密和解密一般用于电子商务,但是一般的网站开发中也会用涉及到到加密和解密,特别是文件处理上,今天为大家讲解一个自定义函数简单的数字加密/解密算法实例。
实现过程
1、制作form表单提交框一个文本输入框和一个提交按钮。
2、创建php脚本文件。
3、定义加密数字和解密数字的函数。
4、调用自定义函数处理用户输入的数据,输出加密数字和解密数字。
代码如下:
php知识总结:
1、form表单
form标签的action属性表示向何处提交表单数据,当action为空时表示数据提交还是这个页面本身。
2、$_POST预定义数组
$_POST在PHP中是预定义数组,它属于外部变量.它的作用收集用户通过表单提交数据,$_POST收集的数据可以赋给变量再进一步处理,上面代码就是把$_POST赋给变量作为自定义函数的参数。
3、自定义函数
把加密和解密的php功能语句,都写到特定的程序块中,这个程序块就是自定义的函数。在本例中我们声明一个函数A,他具有加密数字的功能。声明一个函数B,它具有解密功能的功能。函数A和函数B都有一个共同的参数$str。声明函数目的是为了避免在程序中出现功能相同的代码,提高效果。
4、session
session在PHP中的作用是暂时把用户信息(比如说用户名)存储在服务器上,过一段时间就会被删除。如果想把数据长期存储可以把数据存在数据库中。上面代码中是加密后的结果保存在session中,然后session在作为解密函数的参数再继续执行。
5、isset()函数
isset()函数是为了确定变量是否存在,它经常和if语句一块使用。上面代码中是判断地址栏pwd是否存在,存在则执行下面的语句。
程序执行结果
关于“自定义函数简单的数字加密/解密算法实例”先聊到这,有兴趣可以自己动手实践一下,每天学习一个知识点,每日寄语-“积德为产业,强胜于美宅良田。”