安全矩阵

 找回密码
 立即注册
搜索
楼主: Anatasha

周家敏学习日记

[复制链接]

8

主题

57

帖子

279

积分

中级会员

Rank: 3Rank: 3

积分
279
 楼主| 发表于 2020-7-20 23:49:16 | 显示全部楼层
PHP温故与知新
一、如一例:
<?php
switch(n)
{
caselabel1:
如果 n=label1,此处代码将执行;
break;
caselabel2:
如果 n=label2,此处代码将执行;
break;
default:
如果 n 既不等于 label1 也不等于 label2,此处代码将执行;
}
?>


其中运用的php语句:
1、switch:
有选择地执行若干代码块之一
2、cass:
将表达式的值与结构中每个 case 的值进行比较。如果存在匹配,则执行与 case 关联的代码。
3、break :
阻止代码跳入下一个 case 中继续执行
4、default :
用于不存在匹配(即没有 case 为真)时执行


实例:
  1. <?php
  2. $color="red";
  3. switch ($color)
  4. {
  5. case "red":
  6.     echo "你喜欢的颜色是红色!";
  7.     break;
  8. case “green”:
  9.     echo "你喜欢的颜色是绿色!";
  10. }
  11. ?>
复制代码



结果如下:


二、PHP超级全局变量:
1、$GLOBALS
$GLOBALS是PHP的一个超级全局变量组,变量的名字就是数组的键,它在一个PHP脚本的全部作用域中都可以访问。
比如下例:
  1. <?php
  2. $x = 100;
  3. $y = 200;

  4. function addition()
  5. {
  6. $GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];
  7. }

  8. addition();
  9. echo $z;
  10. ?>
复制代码

2、$_SERVER:
$_SERVER 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组,这个数组中的项目由 Web 服务器创建。
比如运行如下代码:
  1. <?php
  2. echo $_SERVER['PHP_SELF'];
  3. echo "<br>";
  4. echo $_SERVER['SERVER_NAME'];
  5. echo "<br>";
  6. echo $_SERVER['HTTP_HOST'];
  7. echo "<br>";
  8. echo $_SERVER['HTTP_USER_AGENT'];
  9. echo "<br>";
  10. echo $_SERVER['SCRIPT_NAME'];
  11. ?>
复制代码


会得到下列结果:


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

8

主题

57

帖子

279

积分

中级会员

Rank: 3Rank: 3

积分
279
 楼主| 发表于 2020-7-26 13:10:23 | 显示全部楼层
python条件循环结构
一、条件语句:

1、if语句:判断条件是否成立


  1. var1 = 100
  2. if var1:
  3.   print ("1 - if 表达式条件为 true")
  4.   print (var1)
  5. var2 = 0
  6. if var2:
  7.   print ("2 - if 表达式条件为 true")
  8.   print (var2)
  9. print ("Good bye!")
复制代码

2、if-else语句:
  1. num=int(input("输入一个数字:"))
  2. if num%2==0:
  3. if num%3==0:
  4.      print ("你输入的数字可以整除 2 和 3")
  5. else:
  6.     print ("你输入的数字可以整除 2,但不能整除 3")
  7. else:
  8.   if num%3==0:
  9.     print ("你输入的数字可以整除 3,但不能整除 2")
  10. else:
  11.    print ("你输入的数字不能整除 2 和 3")
复制代码



3、 if -elif语句:elif 语句即为 else if,用来检查多个表达式是否为真,并在为真时执行特定代码块中的代码
  1. age = int(input("请输入你家狗狗的年龄: "))
  2. print("")
  3. if age == 1:
  4.    print("相当于 14 岁的人。")
  5. elif age == 2:
  6.    print("相当于 22 岁的人。")
  7. elif age > 2:
  8.    human = 22 + (age -2)*5
  9.    print("对应人类年龄: ", human)
  10. input("点击 enter 键退出")
复制代码




4. assert 关键词
assert这个关键词我们称之为“断言”,当这个关键词后边的条件为 False 时,程序自动崩溃并抛出AssertionError的异常。
语法格式如下:
  1. assert expression
复制代码

等价于:
  1. <p><span lang="EN-US" style="mso-bidi-font-size:10.5pt;&#10;font-family:等线;mso-ascii-theme-font:minor-fareast;mso-fareast-theme-font:minor-fareast;&#10;mso-hansi-theme-font:minor-fareast">if not expression:</span></p>

  2. <p><span lang="EN-US" style="mso-bidi-font-size:10.5pt;&#10;font-family:等线;mso-ascii-theme-font:minor-fareast;mso-fareast-theme-font:minor-fareast;&#10;mso-hansi-theme-font:minor-fareast"><span style="mso-spacerun:yes">    </span>raise
  3. AssertionError</span>
  4. </p>
复制代码
assert 后面也可以紧跟参数:
  1. assert expression [, arguments]
复制代码
等价于:
  1. <p><span lang="EN-US" style="mso-bidi-font-size:10.5pt;&#10;font-family:等线;mso-ascii-theme-font:minor-fareast;mso-fareast-theme-font:minor-fareast;&#10;mso-hansi-theme-font:minor-fareast">if not expression:</span></p>

  2. <p><span lang="EN-US" style="mso-bidi-font-size:10.5pt;&#10;font-family:等线;mso-ascii-theme-font:minor-fareast;mso-fareast-theme-font:minor-fareast;&#10;mso-hansi-theme-font:minor-fareast"><span style="mso-spacerun:yes">    </span>raise
  3. AssertionError(arguments)</span>
  4. </p>
复制代码
例子:


二、循环语句
1.while循环
while语句最基本的形式包括一个位于顶部的布尔表达式,一个或多个属于while代码块的缩进语句。如果布尔表达式不带有<、>、==、!=、in、not in等运算符,仅仅给出数值之类的条件,也是可以的。当while后写入一个非零整数时,视为真值,执行循环体;写入0时,视为假值,不执行循环体。也可以写入str、list或任何序列,长度非零则视为真值,执行循环体;否则视为假值,不执行循环体。
实例:
  1. n = 100
  2. sum = 0
  3. counter = 1
  4. while counter <= n:
  5.   sum = sum + counter
  6.   counter += 1
  7. print("1 到 %d 之和为: %d" % (n,sum))
复制代码





2、while -else 循环

while
布尔表达式: 代码块
else: 代码块 ``` 当while循环正常执行完的情况下,执行else输出,如果while循环中执行了跳出循环的语句,比如 break,将不执行else代码块的内容。
  1. count = 0
  2. while count < 5:
  3.    print (count, " 小于 5")
  4.    count = count + 1
  5. else:
  6.    print (count, " 大于或等于 5")<b>
  7. </b>
复制代码



3、for - else 循环

当for循环正常执行完的情况下,执行else输出,如果for循环中执行了跳出循环的语句,比如 break,将不执行else代码块的内容,与while - else语句一样。


实例:

  1. nums=["A","B","C","D"]
  2. for num in nums:
  3.       if num == "A":
  4.         print("第一个字母")
  5.         break
  6.       print("循环数据" + num)
  7. else:
  8.       print("无循环")
  9. print("完成循环")
复制代码

(特别:break语句可以跳出当前所在层的循环)


4、 range() 函数

  1. <span lang="EN-US" style="mso-bidi-font-size:10.5pt;&#10;font-family:等线;mso-ascii-theme-font:minor-fareast;mso-fareast-theme-font:minor-fareast;&#10;mso-hansi-theme-font:minor-fareast">range([start,] stop[,step=1])</span>
复制代码
这个BIF(Built-in functions)有三个参数,其中用中括号括起来的两个表示这两个参数是可选的。step=1 表示第三个参数的默认值是1。range 这个BIF的作用是生成一个从start参数的值开始到stop参数的值结束的数字序列,该序列包含start的值但不包含stop的值。


结合range()和len()函数以遍历一个序列的索引,如下例:






5、 enumerate()函数


语法:

以下是 enumerate() 方法的语法:

  1. enumerate(sequence, [start=0])
复制代码

参数:

sequence -- 一个序列、迭代器或其他支持迭代对象。

start -- 下标起始位置。



返回值:


返回 enumerate(枚举) 对象。enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。



例子:

  1. seq = ['one', 'two', 'three']
  2. for i, element in enumerate(seq):
  3.     print(i, element)
复制代码
用 enumerate(A) 不仅返回了 A 中的元素,还顺便给该元素一个索引值 (默认从 0 开始)。此外,用
enumerate(A, j) 还可以确定索引起始值为j。



6、 continue 语句

continue终止本轮循环并开始下一轮循环,如下例:
  1. for letter in 'Python':   
  2.    if letter == 'h':
  3.       continue
  4.    print('当前字母 :', letter)
复制代码
  1. var = 10               
  2. while var > 0:              
  3.    var = var -1
  4.    if var == 5:
  5.       continue
  6.    print ('当前变量值 :', var)
  7. print ("Good bye!")
复制代码













本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

8

主题

57

帖子

279

积分

中级会员

Rank: 3Rank: 3

积分
279
 楼主| 发表于 2020-9-25 23:31:55 | 显示全部楼层
PHP
一、php中->和=>和::的作用
1.->用于类实例化后的对象读取类中的属性和方法。
例如:
<?php
class foo
{
function do_foo()
{
echo "Doing foo.";
}
}
$bar = new foo;
$bar->do_foo();
?>
2.=>,用于数组中,常见的用法是array(key=>values)——左侧表示键,右侧表示值。
<?php
//从数组变量$arr中,读取键为apple的值
$arr = array('apple'=>"苹果",'banana'=>"香蕉",'pineapple'=>"菠萝");
$arr0=$arr["apple"];
if( isset($arr0) )
  {print_r($arr0);
}
?>
3.::(类中静态方法和静态属性的引用方法)
例如:
class Test{
public static function test(){     public static $test = 1;    } }
类的静态方法和静态属性可以不用实例化对象直接使用(使用的方式是 类名::静态方法名)Test::test(); 调用静态方法testTest:test;  来取得$test静态属性的值
注: 静态方法在读到这个类或者引入这个类文件的时候,就已经实例化并存放到内存中了,非静态类则需要new一下。 静态类在内存中即使有多个实例,静态的属性也只有一份。
二、php的类(php5)

自动加载对象机制:我们引用对象时,可以定义一个__autoload函数,可以在使用尚未被定义的类时自动调用。

例子:
类文件:/class/class.testOne.php
<?php
class testOne{
   function__construct(){
      echo "begin";
   }
   function__destruct() {
   }
}
?>
类文件:/class/class.testTwo.php
<?php
class testTwo{
   protected$name;
   function__construct(){
      echo "conn";
   }  
   functionsetName( $name ){
      $this->name = $name
   }
   functiongetName(){
      return "My name is:".$this->name;
   }
   function__destruct() {
   }
}
?>
文件:/comm.config.php
<?php
function __autoload( $class_name) {
  require_once "./class/class.".$class_name.'.php';
}
?>
文件:/index.php
<?php
require_once( "comm.config.php" );
$testOne = new testOne();
?>
输出结果:begin
文件:/index2.php
<?php
require_once( "comm.config.php" );
$testTwo = new testTwo();
$testTwo->setName( "test" );
echo $testTwo->getName();
?>
输出结果:connMy name is:test
三、php强制类型转换

1、获取数据类型 :
如果想查看某个表达式的值和类型,用 var_dump()。
如果只是想得到一个易读懂的类型的表达方式用于调试,用 gettype()。

要查看某个类型,不要用 gettype(),而用 is_type() 函数。
2、类型:
第一种转换方式: (int)  (bool)  (float) (string)  (array) (object)
<?php   
$num1=3.14;   
$num2=(int)$num1;   
var_dump($num1); //输出float(3.14)   
var_dump($num2); //输出int(3)   
?>  
第二种转换方式: intval()  floatval()  strval()
<?php   
$str="123.9abc";   
$int=intval($str);     //转换后数值:123   
$float=floatval($str); //转换后数值:123.9   
$str=strval($float);   //转换后字符串:"123.9"   
?>  
第三种转换方式: settype();
<?php   
$num4=12.8;   
$flg=settype($num4,"int");   
var_dump($flg);  //输出bool(true)   
var_dump($num4); //输出int(12)   
?>

回复

使用道具 举报

8

主题

57

帖子

279

积分

中级会员

Rank: 3Rank: 3

积分
279
 楼主| 发表于 2020-9-26 21:28:27 | 显示全部楼层
Linux
一、简介
Linux,全称GNU/Linux,是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和Unix的多用户、多任务、支持多线程和多cpu的操作系统。
Linux不仅系统性能稳定,而且是开源软件。其核心防火墙组件性能高效、配置简单,保证了系统的安全。在很多企业网络中,为了追求速度和安全,Linux不仅仅是被网络运维人员当作服务器使用,它还被当作服务器,甚至当作网络防火墙,这是Linux的一大亮点。
Linux具有开放源码、没有版权、技术社区用户多等特点,开放源码使得用户可以自由裁剪,灵活性高,功能强大,成本低。尤其系统中内嵌网络协议栈,经过适当的配置就可实现路由器的功能。这些特点使得Linux成为开发路由交换设备的理想开发平台。
二、通用命令
date:打印或者设置系统的日期和时间
stty-a:可以查看或者打印控制字符(Ctrl-C、Ctrl-D、Ctrl-Z等)
passwd:用passwd-h查看
logout,login:登录shell的登录和注销命令
more,less,head tail:显示或部分显示文件内容
lp/lpstat/cancel,lpr/lpq/lprm:打印文件
chmod u+x:更改文件权限
rm-fr dir:删除非空目录
cp-R dir:拷贝目录
fg jobid:可以将一个后台进程放到前台
kill的作用:send asignal to a process、eg:kill-9发送的是SIG_KILL信号,具体发送什么信号可以通过man kill查看
ps的用法,ps-e或ps-o pid,ppid,session,tpgid,comm(其中session显示的sessionid,tpgid显示前台进程组id,comm显示命令名称)
三、系统操作相关命令
1、系统信息处理
arch 显示机器的处理器架构
uname -m 显示机器的处理器架构
uname -r 显示正在使用的内核版本
dmidecode -q 显示硬件系统部件 - (SMBIOS / DMI)
hdparm -i /dev/hda 罗列一个磁盘的架构特性
hdparm -tT /dev/sda 在磁盘上执行测试性读取操作
cat /proc/cpuinfo 显示CPU的信息
cat /proc/interrupts 显示中断
cat /proc/meminfo 校验内存使用
cat /proc/swaps 显示哪些swap被使用
cat /proc/version 显示内核的版本
cat /proc/net/dev 显示网络适配器及统计信息
cat /proc/mounts 显示已加载的文件系统
lspci -tv 罗列出所有的 PCI 设备
lsusb -tv 显示 USB 设备
cal 2020 显示2020年的日历表
clock -w 将时间修改保存到 BIOS
2、系统重启及关机
shutdown -h now 关闭系统
init 0 关闭系统
telinit 0 关闭系统
shutdown -h hours:minutes & 按预定时间关闭系统
shutdown -c 取消按预定时间关闭系统
shutdown -r now 重启
reboot 重启
logout 注销

回复

使用道具 举报

8

主题

57

帖子

279

积分

中级会员

Rank: 3Rank: 3

积分
279
 楼主| 发表于 2020-10-18 22:10:42 | 显示全部楼层
PHP面向对象开发的学习
1、面向对象的特点:
抽象性
封装性
共享性
强调对象结构而不是程序结构


2、类的成员属性和成员方法
class MyPc{
  public $name; //类的成员属性
  public $price;

functionvod(){ //类的成员方法
   return “PHP”
   }
}


3、使用new函数对象实例化
new 对象名(参数)
例如:$pc1 = new MyPc();


4、创建1个和多个对象
多次使用new函数,进行对类的实例化
注意:php6中使用public而不是var
类:
class MyPc{
  public $name;
  public $price;

functionvod(){
   return “PHP”
   }
……

对象:
$pc1 = new MyPc();
$pc2 = new MyPc();
$pc3 = new MyPc();



5、对象中的$this关键字
$this关键字用于访问当前对象中对象属性和对象方法的系统变量,$this仅能在当前对象中使用,
class MyPc{
  public $name;
  public $price;

functionvod(){
   $this->name;
   }
  ……
$this->vod();
……
}

6、初始化对象__construct():__construct ([ mixed $args [, $... ]]) : void
Php5中有两种初始化方法
1)原php4中可建立一个与类名称相同的对象方法
2)在php5中继承了php4但为了更好的针对面向对象开发有了固定函数
例子:
<?php
class BaseClass {
  function __construct() {
      print "In BaseClass constructor\n";
   }
}

class SubClass extends BaseClass {
  function __construct() {
      parent::__construct();
      print "In SubClass constructor\n";
   }
}

$obj = new BaseClass();
$obj = new SubClass();
?>


7、析构函数__destruct():__destruct ( void ) : void
例子:
<?php
class MyDestructableClass {
   function __construct() {
       print "In constructor\n";
       $this->name = "MyDestructableClass";
   }

   function __destruct() {
       print "Destroying " . $this->name . "\n";
   }
}

$obj = new MyDestructableClass();
?>
PHP 5 引入了析构函数的概念,这类似于其它面向对象的语言,如 C++。析构函数会在到某个对象的所有引用都被删除或者当对象被显式销毁时执行。
规则:先进后出
注意:
析构函数在脚本关闭时调用,此时所有的 HTTP 头信息已经发出。脚本关闭时的工作目录有可能和在 SAPI(如 apache)中时不同。
试图在析构函数(在脚本终止时被调用)中抛出一个异常会导致致命错误。

回复

使用道具 举报

8

主题

57

帖子

279

积分

中级会员

Rank: 3Rank: 3

积分
279
 楼主| 发表于 2020-10-28 18:25:34 | 显示全部楼层
ssrf漏洞
一、CSRF与SSRF
之前浅略地了解过csrf漏洞(Cross-site request forgery:跨站请求伪造),今天学习的是ssrf漏洞 (Server-Side Request Forgery:服务器端请求伪造) 之所以将两者进行区分,是因为通过对比带有相似性的知识点,有助于我们巩固旧有的知识,更有利于我们更新自己的知识库。
1、CSRF
(1)概念:第三方恶意攻击者盗用了用户身份,伪装成了受信任用户发送恶意请求。

(2)CSRF攻击攻击原理及过程如下:
前提:网站A为存在CSRF漏洞的网站,网站B为攻击者构建的恶意网站,用户C为网站A的合法用户。
1.      用户C打开浏览器,访问受信任网站A,输入用户名和密码请求登录网站A;
2.      在用户信息通过验证后,网站A产生Cookie信息并返回给浏览器,此时用户登录网站A成功,可以正常发送请求到网站A;
3.      用户未退出网站A之前,在同一浏览器中,打开一个TAB页访问网站B;
4.      网站B接收到用户请求后,返回一些攻击性代码,并发出一个请求要求访问第三方站点A;
5.      浏览器在接收到这些攻击性代码后,根据网站B的请求,在用户不知情的情况下携带Cookie信息,向网站A发出请求。网站A并不知道该请求其实是由B发起的,所以会根据用户C的Cookie信息以C的权限处理该请求,导致来自网站B的恶意代码被执行。
2、SSRF
从字面意思理解,ssrf与csrf的不同即是“s”指“server-side”——服务器处理,这是一种由攻击者构造请求,由服务端发起请求的安全漏洞。正因为请求是服务端发起的,它更适合访问与自身相连而外网无法访问的内部系统。
二、攻击方法
1.      可以对外网、内网、本地进行端口扫描,某些情况下端口的Banner会回显出来
2.      攻击运行在内网或本地的有漏洞程序(比如溢出)
3.      可以对内网Web应用进行指纹识别,原理是通过请求默认的文件得到特定的指纹
4.      攻击内网或外网有漏洞的Web应用
5.      使用file:///协议读取本地文件
三、主要危害
1.      可对内网,服务器所在内网,受控服务器进行端口扫描,获取一些banner
2.      对内网web应用进行指纹识别,通过访问默认文件实现。
3.      攻击内外网web应用,主要是使用get参数就可以实现分攻击。
4.      利用file协议读取本地文件。
四、漏洞修复建议
1.      过滤返回信息,验证远程服务器对请求的响应是比较容易的方法;
2.      统一错误信息,避免用户可以根据错误信息来判断远端服务器的端口状态;
3.      限制请求的端口为http常用的端口;
4.      黑名单内网ip。避免应用被用来获取获取内网数据,攻击内网;
5.      禁用不需要的协议。仅允许http和https请求;
6.      使用正则对参数进行效验,防止畸形请求绕过黑名单。
五、实例分析
1、服务器页面——ssrf.php:
  1. <?php

  2. function curl($url){

  3.        $ch=curl_init();

  4.        curl_setopt($ch,CURLOPT_URL,$url);

  5.        curl_setopt($ch,CURLOPT_HEADER,0);

  6.        curl_exec($ch);

  7.        curl_close($ch);

  8. }

  9. $url=$_GET['url'];

  10. curl($url);

  11. ?>
复制代码

2、访问:
  1. http://127.0.0.1/ssrf.php?url=某链接
复制代码
(1)若URL参数改为内网的地址,则会泄露服务器内网的信息
(2)若将URL换成file://的形式,则可以读取本地文件

回复

使用道具 举报

8

主题

57

帖子

279

积分

中级会员

Rank: 3Rank: 3

积分
279
 楼主| 发表于 2021-3-10 00:22:01 | 显示全部楼层
Python编程:文本处理——正则表达式
总结:
1)可用预定义模型匹配同类字符串
2)使用圆括号表示一个子模式,是一个整体
3)match()和search()匹配成功后会返回match对象
4)正则表达式在形式上检查,在内容上不一定正确
一、正则表达式元字符(菜鸟教程收集)
\
将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符。例如,'n' 匹配字符 "n"'\n' 匹配一个换行符。序列 '\\' 匹配 "\" "\(" 则匹配 "("
^
匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 '\n' '\r' 之后的位置。
$
匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性,$ 也匹配 '\n' '\r' 之前的位置。
*
匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"* 等价于{0,}
+
匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"+ 等价于 {1,}
?
匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配 "do" "does" ? 等价于 {0,1}
{n}
n 是一个非负整数。匹配确定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o
{n,}
n 是一个非负整数。至少匹配n 次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o'o{1,}' 等价于 'o+''o{0,}' 则等价于 'o*'
{n,m}
m n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,"o{1,3}" 将匹配 "fooooood" 中的前三个 o'o{0,1}' 等价于 'o?'。请注意在逗号和两个数之间不能有空格。
?
当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串 "oooo"'o+?' 将匹配单个 "o",而 'o+' 将匹配所有 'o'
.
匹配除换行符(\n\r)之外的任何单个字符。要匹配包括 '\n' 在内的任何字符,请使用像"(.|\n)"的模式。
(pattern)
匹配 pattern 并获取这一匹配。所获取的匹配可以从产生的 Matches 集合得到,在VBScript 中使用 SubMatches 集合,在JScript 中则使用 $0…$9 属性。要匹配圆括号字符,请使用 '\(' '\)'
(?:pattern)
匹配 pattern 但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。这在使用 "" 字符 (|) 来组合一个模式的各个部分是很有用。例如, 'industr(?:y|ies) 就是一个比 'industry|industries' 更简略的表达式。
(?=pattern)
正向肯定预查(look ahead positive assert),在任何匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如,"Windows(?=95|98|NT|2000)"能匹配"Windows2000"中的"Windows",但不能匹配"Windows3.1"中的"Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。
(?!pattern)
正向否定预查(negative assert),在任何不匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如"Windows(?!95|98|NT|2000)"能匹配"Windows3.1"中的"Windows",但不能匹配"Windows2000"中的"Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。
(?<=pattern)
反向(look behind)肯定预查,与正向肯定预查类似,只是方向相反。例如,"(?<=95|98|NT|2000)Windows"能匹配"2000Windows"中的"Windows",但不能匹配"3.1Windows"中的"Windows"
(?<!pattern)
反向否定预查,与正向否定预查类似,只是方向相反。例如"(?<!95|98|NT|2000)Windows"能匹配"3.1Windows"中的"Windows",但不能匹配"2000Windows"中的"Windows"
x|y
匹配 x y。例如,'z|food' 能匹配 "z" "food"'(z|f)ood' 则匹配 "zood" "food"
[xyz]
字符集合。匹配所包含的任意一个字符。例如, '[abc]' 可以匹配 "plain" 中的 'a'
[^xyz]
负值字符集合。匹配未包含的任意字符。例如, '[^abc]' 可以匹配 "plain" 中的'p''l''i''n'
[a-z]
字符范围。匹配指定范围内的任意字符。例如,'[a-z]' 可以匹配 'a' 'z' 范围内的任意小写字母字符。
[^a-z]
负值字符范围。匹配任何不在指定范围内的任意字符。例如,'[^a-z]' 可以匹配任何不在 'a' 'z' 范围内的任意字符。
\b
匹配一个单词边界,也就是指单词和空格间的位置。例如, 'er\b' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'
\B
匹配非单词边界。'er\B' 能匹配 "verb" 中的 'er',但不能匹配 "never" 中的 'er'
\cx
匹配由 x 指明的控制字符。例如, \cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z a-z 之一。否则,将 c 视为一个原义的 'c' 字符。
\d
匹配一个数字字符。等价于 [0-9]
\D
匹配一个非数字字符。等价于 [^0-9]
\f
匹配一个换页符。等价于 \x0c \cL
\n
匹配一个换行符。等价于 \x0a \cJ
\r
匹配一个回车符。等价于 \x0d \cM
\s
匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]
\S
匹配任何非空白字符。等价于 [^ \f\n\r\t\v]
\t
匹配一个制表符。等价于 \x09 \cI
\v
匹配一个垂直制表符。等价于 \x0b \cK
\w
匹配字母、数字、下划线。等价于'[A-Za-z0-9_]'
\W
匹配非字母、数字、下划线。等价于 '[^A-Za-z0-9_]'
\xn
匹配 n,其中 n 为十六进制转义值。十六进制转义值必须为确定的两个数字长。例如,'\x41' 匹配 "A"'\x041' 则等价于 '\x04' & "1"。正则表达式中可以使用 ASCII 编码。
\num
匹配 num,其中 num 是一个正整数。对所获取的匹配的引用。例如,'(.)\1' 匹配两个连续的相同字符。
\n
标识一个八进制转义值或一个向后引用。如果 \n 之前至少 n 个获取的子表达式,则 n 为向后引用。否则,如果 n 为八进制数字 (0-7),则 n 为一个八进制转义值。
\nm
标识一个八进制转义值或一个向后引用。如果 \nm 之前至少有 nm 个获得子表达式,则 nm 为向后引用。如果 \nm 之前至少有 n 个获取,则 n 为一个后跟文字 m 的向后引用。如果前面的条件都不满足,若 n m 均为八进制数字 (0-7),则 \nm 将匹配八进制转义值 nm
\nml
如果 n 为八进制数字 (0-3),且 m l 均为八进制数字 (0-7),则匹配八进制转义值 nml
\un
匹配 n,其中 n 是一个用四个十六进制数字表示的 Unicode 字符。例如, \u00A9 匹配版权符号 (?)
二、子模块拓展语法
(? P<groupname>)
为子模式命名
(? iLmsux)
设置匹配标志,可以是几个字母的组合
每个字母含义与编译标志相同
(? :...)
匹配单不捕获该匹配的子表达式
(? P=groupname)
表示在此之前的命名为groupname的子模式
(? #...)
表示注释
( ? = ...)
用于正则表达式之后,表示如果“=”后的内容在字符串中出现则匹配,但不返回“=”之后的内容
( ? ! ...)
用于正则表达式之后,表示如果“!”后的内容在字符串中不出现则匹配,但不返回“!”之后的内容
(? <=....)
用于正则表达式之前,与(?=...)含义相同
(? <! ...)
用于正则表达式之前,与(?! ...)含义相同
针对正则表达式相关语法的学习,我认为太多太杂比较难以记住,死记硬背一般是学不下来的。所以暂时先mark下来,通过多加思考,记住语法使用的大概方向来进行学习的方式比较好。
三、re模块
(一)使用re模块完成正则表达式相关操作
常用的功能函数包括:compile、search、match、split、findall(finditer)、sub(subn)
flags定义包括:
re.I:忽略大小写
re.L:表示特殊字符集 \w, \W, \b, \B, \s, \S 依赖于当前环境
re.M:多行模式
re.S:' . '并且包括换行符在内的任意字符(注意:' . '不包括换行符)
re.U: 表示特殊字符集 \w, \W, \b, \B, \d, \D, \s, \S 依赖于 Unicode 字符属性数据库

1、re.compile(pattern[, flags])
把正则表达式语法转化成正则表达式对象
2、re.search(pattern, string[, flags])
在字符串中查找匹配正则表达式模式的位置,返回 MatchObject 的实例,如果没有找到匹配的位置,则返回 None。
例子:
  1. if re.search(r'abc','helloaaabcdworldn'):
  2.     print 'search succeeds'
  3. else:
  4.     print 'search fails'
复制代码

3、re.match(pattern, string[, flags])
match() 函数只在字符串的开始位置尝试匹配正则表达式,也就是只报告从位置 0 开始的匹配情况,而 search() 函数是扫描整个字符串来查找匹配。如果想要搜索整个字符串来寻找匹配,应当用 search()。
4、re.split(pattern, string[, maxsplit=0, flags=0])
作用:可以将字符串匹配正则表达式的部分割开并返回一个列表
例如:
  1. #分析某ip
  2. #!/usr/bin/env python
  3. import re
  4. r1 = re.compile('W+')
  5. print r1.split('某ip')
  6. print re.split('(W+)', '某ip')
  7. print re.split('(W+)', '某ip', 1)
复制代码

5、re.findall(pattern, string[, flags])
在字符串中找到正则表达式所匹配的所有子串,并组成一个列表返回
贪婪匹配和惰性匹配:
因为正则表达式是默认的是贪婪匹配就是按照最多的来匹配的,所以你要想改变你匹配的方式你就要在正则的后面加上?来改变你的正则的方式
(1)贪婪匹配:
ret = re.findall('\d+', 'abc123yzx456')  
# 这是按照贪婪匹配来计算的print(ret) # ['123', '456']
(2)惰性匹配:
ret = re.findall('\d+?', 'abc123yzx456')  
# 这是惰性匹配 一次匹配一个print(ret) # ['1', '2', '3', '4', '5', '6']
6、re.finditer(pattern, string[, flags])
findall 类似,在字符串中找到正则表达式所匹配的所有子串,并组成一个迭代器返回。
*迭代器:
迭代器是一个可以记住遍历的位置的对象。
有两个基本的方法:iter() 和 next()。
比如创建迭代器:
  1. >>> list=[1,2,3,4]
  2. >>> it = iter(list)    # 创建迭代器对象
  3. >>> print (next(it))   # 输出迭代器的下一个元素
  4. 1
  5. >>> print (next(it))
  6. 2
复制代码

7、re.sub(pattern, repl, string[, count, flags])
在字符串 string 中找到匹配正则表达式 pattern 的所有子串,用另一个字符串 repl 进行替换。如果没有找到匹配 pattern 的串,则返回未被修改的 string。Repl 既可以是字符串也可以是一个函数。
8、re.subn(pattern, repl, string[, count, flags])
该函数的功能和 sub() 相同,但它还返回新的字符串以及替换的次数。

回复

使用道具 举报

8

主题

57

帖子

279

积分

中级会员

Rank: 3Rank: 3

积分
279
 楼主| 发表于 2021-3-10 23:37:51 | 显示全部楼层
计算机二级公共基础部分知识汇总(part one)
一、概述
1、计算机发展
1)世界上第一台计算机问世:电子数字积分计算机(Electronic Numerical Integrator And Calculator)于1946年,在美国宾夕法尼亚大学研制成功。
“埃尼阿克” ENIAC的问世标志着计算机时代的到来,它重达30t,在1s内能进行5000次加法运算和500次乘法运算。
2)·诺依曼型计算机原理
二进制:计算机的程序和程序运行所需要的数据以二进制形式表示和存储。
程序存储,自动执行:程序和数据存放在存储器中,计算机执行程序时,无需人工干预,能自动、连续地执行程序,并得到预期的结果。
3)计算机发展的四个阶段(采用的物理器件不同)
1946-1959:电子管计算机
1959-1964:晶体管计算机
1964-1972:小、中规模集成电路计算机
1972-至今:大规模和超大规模集成电路计算机。
2、特点
1) 高速、精确的运算能力
2012年6月公布的世界超级计算机排名显示,排名第一的IBM公司“红杉”(Sequoia)运算速度达到每秒16324万亿次浮点运算。
我国“天河一号”实测运算速度可达每秒2570万亿次浮点运算,排名世界第五。
2) 准确的逻辑判断能力
在信息检索方面,能够根据要求进行匹配检索。
3) 强大的存储能力
计算机能够长期保存大量数字、文字、图像、视频、声音等信息。如:能够“记住”一个大型图书馆的所有资料。
4) 自动功能
计算机能够自动执行预先编写好的一组指令(称为程序)。工作过程完全自动化,无需人工干预,而且可以反复进行。
5) 网络与通信功能
目前广泛应用的“国际互联网”(Internet)连接了全世界200多个国家和地区的数亿台各种计算机。
网上的计算机用户可以共享网上资料、交流信息。
3、应用
1) 科学计算
科学计算主要是使用计算机进行数学方法的实现和应用。许多科研研究仍然需要大量的运算需求,如:著名的人类基因序列分析计划和气象预报前,对气象卫星云图数据进行处理等等。
2) 数据/信息处理
     数据/信息处理也称为非数值运算。如:计算机在文字处理方面的应用。
3) 过程控制
    过程控制计算是指利用计算机对生产过程、制造过程或运行过程进行检测与控制,即通过实时监控目标对象的状态,及时调整被控对象,使被控对象能够正确地完成生产、制造或运行。过程控制广泛应用于各种工业环境中。
4) 计算机辅助
     计算机辅助(或称为计算机辅助工程)包括:计算机辅助设计、计算机辅助制造、计算机辅助教育、计算机辅助技术、计算机仿真模拟等。
5) 网络通信
     计算机技术和数字通信技术的融合产生了计算机网络。计算机网络极大地改变人们的生活和工作方式。
6) 人工智能
     人工智能(Artificial Intellibence, AI)是用计算机模拟人类的某些智力活动。其主要研究内容包括:自然语言理解、专家系统、机器人以及自动定理证明等等。
7) 多媒体应用
     多媒体是包括文本、图形、图像、音频、视频、动画等多种信息类型的综合。
     多媒体技术是指人和计算机交互地进行上述多种媒介信息的捕捉、传输、转换、编辑、存储、管理,并由计算机综合处理为表格、文字、图形、动画、音频、视频等视听信息有机结合的表现形式。
8) 嵌入式系统
     嵌入式系统(Embedded system),是一种“完全嵌入受控器件内部,为特定应用而设计的专用计算机系统”。
4、计算机的分类
1) 巨型机:型机是指速度最快、处理能力最强的计算机,现在又称其为高性能计算机。
2) 大型通用机:大型通用计算机的特点是通用性强,具有较高的运算速度、极强的综合处理能力和极大的性能覆盖。
3) 微型机:微型机具有小、巧、轻、使用方便的特点,是目前计算机应用的主流。
4) 工作站:一种高档微型计算机,它比微型机有更大的存储容量和更快的运算速度,通常配有高分辨率的大屏幕显示器及容量很大的内部和外部存储器,并具有较强的信息处理功能和高性能的图形、图像处理功能和联网功能。
5) 服务器:通常以各种应用的服务提供者角色出现。例如:服务器以作为网络的节点,存储、处理网上80%的数据、信息,因此被称为网络的灵魂。
二、信息的表示与存储
1、数据与信息
数据:数据是对客观事物的符号表示。
      如:数值、文字、语言、图形、图像等都是不同形式的数据。
信息:既是对客观事物变化和特征的反映,又是事物之间相互作用、相互联系的表征。信息必须数字化编码,才能传送、存储和处理,需要具有针对性和时效性。
数据与信息的区别:数据是信息的载体,信息是数据。针对处理之后产生的结果,信息有意义,而数据没有。
2、数据单位
1)位(bit)
   (bit)是度量数据的最小单位。在计算机技术中用二进制表示数据,1位数据只能表示0和1两种代码。
2)字节(Byte)
   一个字节(Byte)由8位(bit)二进制数字组成。存储器容量通常以字节为单位(Byte, B)来描述:
千字节
1KB = 1024B = 210B
兆字节
1MB = 1024KB = 220B
吉字节
1GB = 1024MB = 230B
太字节
1TB = 1024GB = 240B
3)字长
    字长是指计算机一次能够同时处理的二进制位数,即CPU在一个机器周期中最多能够并行处理的二进制位数。
字长是计算机(CPU)的一个重要指标,直接反映一台计算机的计算能力和运算精度。字长越长,计算机的处理能力通常越强。
字长是字节的整倍数,如8位、16位、32位,发展到今天微型机的64位,大型机/巨型机已达128位。
3、字符编码
1)ASCII码:一个字符的ASCII码通常占一个字节,用七位二进制数码组成,所以ASCII码最多可表示128个不同的符号(或用一个字节表示,最高位为“0”)。
例如:数字0 ~ 9用ASCII码表示为30H ~ 39H;大写英文字母A ~ Z的ASCII码为41H ~ 5AH, H表示十六进制,B 表示二进制,D 表示十进制。
控制字符 < 数字符号 < 大写字母 < 小写字母。
小写的字母的ASCII码比对应的大写字母的ASCII大20H(32D)
2)区位码:
(1)可以唯一确定一个汉字或符号。
(2)是十进制编码,用4位十进制数表示。例:“北”:1717;    ” :3009;
区位码表共有94行,94列,每一行称为“区”,每一列称为“位”。
在区位码表中:
1~15区:各种图形符号,制表符和一些字母。16~55区:一级汉字。56~87区:二级汉字。
3)汉字编码(GB2312-80:)7445:一、6763(汉字)3755(一级汉字按汉语拼音排序)3008(二级汉字按偏旁部首排序)二、682(非汉字图形字符)
汉字编码:输入码、内码、字形码。
(1) 汉字输入码
区位码、全拼、双拼、微软拼音、五笔形等。       
(2) 汉字内码
汉字在设备或信息处理系统内部最基本的表达形式
a.是二进制编码。
b.一个汉字用两个字节表示,两个字节的最高位为1。
机内码:最高位为1。
(3) 汉字字形码
汉字字形的字模数据,以点阵或矢量函数表示。
点阵:16×16(32个字节)、24×24(72个字节)、32×32(128个字节)、48×48(288个字节)。
4)国标码
(1)是一种汉字交换码。
(2)是十六进制编码,用四位十六进制数表示。例:“大”:3473H
汉字内码=汉字国标码+8080H
汉字国标码=汉字的区位码+2020H
显示或打印汉字时用汉字字形码,在计算机内部时使用汉字机内码。汉字机内码与国标码的差别:前者各字节的最高二进制位的值均为1,后者均为0。
5)形码:根据字形结构进行编码(五笔),音码:根据发音进行编码(全拼、双拼)
6)音形码:一拼音为主,辅以字形、字义进行编码(自然码)
三、硬件
1、运算器:
又称算术逻辑部件(Arithmetic and Logic Unit,ALU),主要用于算术运算和逻辑运算。
内部结构:ALU、寄存器、控制电路
执行操作:算术运算(+ -×÷)、
          逻辑运算(与或非)、
          移位操作(左移、右移)
性能指标:字长和运算速度。
l 逻辑运算:
(1)逻辑加法
符号:+
表示:两逻辑量间的“或”关系。
如:Y=A+B或Y=A∨B
运算规则:Y=0+0=0或Y= 0∨0=0;Y=0+1=1或Y= 0∨1=1
Y=1+0=1或Y=1∨0=1;Y=1+1=1或Y=1∨1=1
结论:两运算量只要有1个或1个以上为1结果为1,否则为0。
推广:
n个逻辑量
Y=0+0+0+……0=0 ;Y=1+0+0+……0=1;Y=0+1+0+……0=1
…   …   …  
Y=1+1+1+……1=1
(2)        两逻辑变量“或”运算真值表
逻辑变量               “或”运算结果
A         B                       Y=A+B
0          0                            0
0          1                            1
1          0                            1
1          1                            1
(3)两逻辑变量“与”运算真值表
逻辑变量         “与”运算结果
A         B               Y=A×B
0          0                       0
0          1                       0
1          0                       0
1          1                       1
2、控制器
控制器:指挥和协调计算机各部件有自动、协调地工作。
内部结构:指令寄存器(IR)、指令译码器(ID)、操作控制器(OC)和程序计数器(PC)。
3、储存器:
存储器——帮助计算机记忆信息,是存取程序和数据的部件。
类型划分:依据CPU是否可以直接访存将存储器划分为内存和外存。
l 内存:
可以被CPU直接访问。内存容量小、速度快、掉电后RAM信息全部消失。
l 外存:
1)硬盘:是主要的外部存储设备
内部结构:硬盘是由磁盘片、读写控制电路和驱动机构组成。
工作原理:根据电磁学原理,使得磁性材料被磁化时具有两种极性来记录二进制信息。
性能指标:容量和转速
2)快闪储存器:Flash是一种非易失型半导体存储器 (通常称U盘),即掉电后信息不丢失且存取速度快,采用USB接口,支持热插拔。
3)光盘
工作原理:通过激光照射染料层呈现结晶和非结晶两种状态记录二进制信息。
类型划分:只读型和可记录型
4、输入输出设备:输入/输出设备是计算机与外部世界进行信息交换的中介,是人与计算机联系的桥梁。  
输入设备:将信息输入计算机
输出设备:将结果反馈给人
性能指标:容量和倍速,一倍速率= 150KB/秒

回复

使用道具 举报

8

主题

57

帖子

279

积分

中级会员

Rank: 3Rank: 3

积分
279
 楼主| 发表于 2021-3-12 00:04:12 | 显示全部楼层
计算机二级公共基础部分知识汇总(Part Two)
四、计算机软件
计算机软件是为运行、管理和维护计算机而编制的各种指令、程序和文档的总称。
1、程序:程序是按照一定顺序执行的、能够完成某一任务的指令集合。
2、程序设计语言:
  程序设计语言是由单词、语句、函数和程序文件等组成。
  程序设计语言是软件的基础和组成。
3、进程与线程
1)进程:进程是指进行中的程序。它是程序的一
           次执行过程,是系统调度和资源分配的独立单位。即:一个程序加载到内存后就变成进程。
2)线程:线程是细化了的进程,是CPU调度和分配的基本单位。
3)二者关系
线程共享进程的公共资源
线程必须依赖于进程
线程间可以并发执行
一个进程最少有一个线程,也可有多个线程
五、多媒体
1、多媒体系统特点:集成性、多样化、交互性
2、多媒体系统的基本构成:由主机,视频、音频输入和输出设备,数据储存设备,各类功能卡、交互界面和各种软件构成
3、常见的多媒体文件:
常见的音频文件:①WAVE(.WAV)文件②MIDI(.MID)文件③MPEG (.mp1/mp2/mp3)
常见的视频文件: ①.AVI文件 ② MPEG文件
常见的图象文件: ①位图图象②矢量图形
常见的位图文件:.BMP、.PCX、.GIF、TIF等
4、多媒体技术研究的主要内容:数据压缩、数据的组织与管理、多媒体信息的展现与交互;多媒体通信与分布处理、虚拟现实技术。
六、计算机病毒
1、人为编写的一段程序代码或是指令集合,能够通过复制不断感染其它程序、文件等。
2、病毒分类:
按照寄生方式分类:文件型病毒、引导扇区型病毒和混合型病毒。
按照病毒的传播途径分类:单机病毒和网络病毒。
按照破坏性分类:恶性病毒和良性病毒。
几种常见的病毒:宏病毒、木马病毒和蠕虫病毒。
1)宏病毒
感染Word、Excel、Access等软件保存的资料文件。破坏包括删除硬盘上的文件,将私人文件复制到公开场合,从硬盘上发送文件到指定的E-mail 、FTP地址。
2)CIH病毒
能破坏硬件的病毒,篡改主板BIOS的数据,造成无法开机并且常常删除硬盘上的文件及破坏硬盘分区表。
3)蠕虫病毒
大量占用计算机系统资源、网络资源,造成计算机负荷过重而死机。
4)木马病毒
将用户计算机中的所有信息都暴露在网络中。
3、常见症状:
1)磁盘文件数目无故增多;
2)系统的内存空间明显变小;
3)文件的日期/时间值被修改成新近的日期或时间
   (用户自己并没有修改);
4)感染病毒后的可执行文件的长度通常会明显增加;
5)正常情况下可以运行的程序却突然因内存区不足
      而不能装入;
6)程序加载时间或程序执行时间比正常的明显变长;
7)计算机经常出现死机现象或不能正常启动;
8)显示器上经常出些莫名奇妙的信息或异常现象。
4、特点:具有可运行性、复制性、传染性、潜伏性、欺骗性、精巧性、隐藏性、顽固性、破坏性、不可预见性等特点
5、计算机病毒的预防:
及时对硬盘上的文件和数据进行备份
凡不需要再写入数据的磁盘作写保护
将所有的.COM和.EXE文件属性设置称“只读”
不使用来历不明的程序
对执行重要工作的机器专机、专盘专用
对交换的软件和数据文件进行检查确定无毒时使用
不要浏览不安全的网站,慎重下载网上文件
不要打开可疑的电子邮件
安装正版查毒软件
七、计算机网络
1、概念:以能够相互共享资源的方式互连起来的自治计算机系统的集合。
2、关于数据通信:
信道:信息传输的媒介或渠道。有线、无线两种
数字信号和模拟信号:数字信号是一种离散的脉冲序列,模拟信号是一种连续变化的信号。
调制与解调:数字脉冲信号转换成模拟信号的过程称为调制(Modulation);将接收端模拟信号还原成数字脉冲信号的过程称为解调(Demodulation)。将调制和解调两种功能结合在一起的设备称为调制解调器(Modem)。
带宽与传输速率:信号的最高频率和最低频率之差表示,即频率的范围。
误码率:二进制比特在数据传输系统中被传错的概率,是通信系统的可靠性指标。
3、分类:
局域网(Local Area Network,LAN):是一种在有限区域内使用的网络,其传送距离一般在几公里之内,因此适用于一个部门或一个单位组建的网络。
城域网(Metropolitan Area Network,MAN):
将不同的局域网通过网间连接形成一个覆盖城市或地区范围的网络,局域网的传输可靠、误码率低,结构简单,容易实现。
广域网(Wide Area Network,WAN):又称远程网,覆盖的地理范围要比局域网大的多,从几十公里到几千公里。将分布在不同地区的计算机系统互连起来,达到资源共享的目的。
4、网络硬件:
传输介质:同轴电缆、双绞线和光缆
网络接口卡:网卡
交换机:支持多端口并发连接的集线设备
无线AP:无线访问点或网络桥接器
路由器:实现局域网与广域网互联的主要设备
5、无线局域网:是计算机网络与无线通信技术相结合的产物,它利用射频(RF)技术取代双绞线构成的传统有线局域网络,并提供有线局域网的所有功能。
6、TCP / IP 协议工作原理
1)IP(Internet Protocol)协议
    IP协议是TCP/IP协议体系中的网络层协议,主要是将不同类型的物理网络互联在一起。IP的另一个功能是路由选择,即从网上某个节点到另一个节点的传输路径的选择,将数据从一个节点按路径传输到另一个节点。
2) TCP(Transmission Control Protocol)协议
TCP即传输控制协议,位于传输层。如远程登录协议TELNET、简单邮件传输协议SMTP、文件传输协议FTP、超文本传输协议HTTP等。
7、域名:
域名实质是用一组由字符组成的名字代替IP地址。
从右至左分别是第一级域名(或称顶级域名),第二级域名,…… ,直至主机名。其结构是:主机名.…….第二级域名.第一级域名

回复

使用道具 举报

8

主题

57

帖子

279

积分

中级会员

Rank: 3Rank: 3

积分
279
 楼主| 发表于 2021-3-22 18:08:42 | 显示全部楼层
Python计算机二级真题
一、输入一个正整数n,自动生成n个1-100范围内的随机浮点数,计算输出每个随机数,并显示平均值。
  1. import random
  2. random.seed()
  3. n=eval(input())
  4. sum=0
  5. for i in range(n):
  6. random.uniform(1,100)
  7. sum+=f1
  8. print(f1)
  9. print(‘the average is:’;sum/n)
复制代码

要点:
1、使用random随机库——import random
2、题目限制了程序框架——uniform ()
3、程序要求求平均数——sum/n
二、输出字符
1、键盘输入正整数n,按要求把n输出到屏幕,格式要求:宽度为20个字符,减号字符-填充,右对齐,带千位分隔符。如果输入正整数超过20位,则按照真实长度输出。例如:键盘输入正整数n为1234,屏幕输出1,234
  1. n = eval(input("请输入正整数:"))
  2. s = "{:->20,}".format(n)
  3. print(s)
复制代码

2、键盘输入字符串s,按要求把s输出到屏幕,格式要求:宽度为20个字符,等号字符=填充,居中对齐。如果输入字符串超过20位,则全部输出。
  1. s = input("请输入一个字符串:")
  2. print("{:=^20}".format(s))
复制代码

3、键盘输入正整数n,按要求把n输出到屏幕,格式要求:宽度为15个字符,数字右边对齐,不足部分用填充。例如:键盘输入正整数n为1234,屏幕输出1234
  1. n = eval(input("请输入正整数:"))
  2. print("{:*>15}".format(n))
复制代码

4、获得用户输入的一个数字,对该数字以30字符宽度,十六进制,居中输出,字母小写,多余字符采用双引号(”)
  1. s = input()
  2. print("{:"^30x}".format(eval(s)))
复制代码

三、随机选择一个手机品牌屏幕输出。
  1. import random
  2. brandlist = ['华为','苹果','诺基亚','OPPO','小米']
  3. random.seed(1)
  4. i=random.randint(0,4)
  5. name=brandlist[i]
  6. print(name)
复制代码

四、从键盘输入4个数字,各数字采用空格分隔,对应为变量x0, y0,x1,y1 计算两点(x0,y0) 和(x1,y1)之间的距离,例如:键盘输入0135屏幕输出5.00
  1. ntxt = input("请输入4个数字(空格分隔):")
  2. nls=ntxt.split()
  3. x0 = eval(nls[0])
  4. y0 = eval(nls[1])
  5. x1 = eval(nls[2])
  6. y1 = eval(nls[3])
  7. r = pow(pow(x1-x0, 2) + pow(y1-y0, 2), 0.5)
  8. print("{:.2f}".format(r))
复制代码

五、完成如下功能。程序接收用户输入的五个数,以逗号分隔。将这些数字按照输入顺序输出,每个数字占10个字符宽度,右对齐,所有数字显示在同一行。
  1. num = input().split(',')
  2. for i in num:
  3. print("{:>10}".format(i),end="")
复制代码

六、接收用户输入的一一个小于20的正整数,在屏幕上逐行递增显示从01到该正整数,数字显示的宽度为2,不足位置补0,后面追加一个空格,然后显示’>’号,’>’号的个数等于行首数字。
  1. n = input('请输入一个正整数:')
  2. for i in range(int(n)):
  3.     print('{:0>2}{}'.format(i+1,">"*(i+1) ))
复制代码

七、a和b是两个列表变量,列表a为[3, 6, 9]己给定,键盘输入列表b, 计算a中元素与b中对应元素乘积的累加和。例如:键盘输入列表b为[1,2,3],累加和为3+12+27=42,因此,屏幕输出计算结果为42。
  1. a = [3,6,9]
  2. b =  eval(input())
  3. s = 0
  4. for i in range(len(a)):
  5.     s += a[i]*b[i]
  6. print(s)
复制代码

八、键盘输入一段文本,保存在一个字符串变量s中,分别用Python内置函数及jieba库中己有函数计算字符串s的中文字符个数及中文词语个数。
例如,键盘输入:俄罗斯举办世界杯
屏幕输出:中文字符数为8,中文词语数为3。
  1. import jieba
  2. s = input("请输入一个字符串")
  3. n = len(s)
  4. m = len(jieba.lcut(s))
  5. print("中文字符数为{},中文词语数为{}。".format(n, m))
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-11-28 02:38 , Processed in 0.025749 second(s), 17 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表