- Python Selenium打开Edge报错 SessionNotCreatedException: probably user data directory is already in use
samiya
pythonseleniumedge
fromseleniumimportwebdriverdriver=webdriver.Edge()driver.get('https://www.baidu.com/')初学selenium就遇到报错,倒在第一步orzselenium.common.exceptions.SessionNotCreatedException:Message:sessionnotcreated:probablyus
- 搭建Google WebDriver服务的教程
码农资源网
ubuntu
搭建GoogleWebDriver服务是进行Web自动化测试的第一步。以下是一个详细的教程,指导你如何在你的系统上搭建GoogleWebDriver服务。我们将以ChromeDriver为例,它是GoogleChrome浏览器的WebDriver实现。环境准备确保你已经安装了GoogleChrome浏览器:确保你安装了最新版本的GoogleChrome浏览器。你可以通过访问GoogleChrome
- Selenium自动化测试全解
Sally璐璐
Pythonselenium测试工具
目录Selenium简介主要特点核心组件详解1.WebDriver2.SeleniumIDE3.SeleniumGridPython环境下的详细配置安装过程基础配置示例完整操作示例及解析元素定位方法详解1.ID定位2.类名定位3.CSS选择器定位4.XPath定位5.链接文本定位6.标签名定位7.Name属性定位最佳实践建议等待机制深度解析1.强制等待(不推荐)2.隐式等待(全局设置)3.显式等待
- playwright 防止WebDriver 被检测 被网站识别为爬虫设置
nongcunqq
python爬虫python开发语言
fromplaywright.sync_apiimportPlaywright,sync_playwrightplaywright=sync_playwright().start()browser=playwright.chromium.launch(headless=False)context=browser.new_context()page=context.new_page()##关闭Web
- 【appium】5. Appium WebDriver 支持的常用方法汇总
大卫软件测试
appium
下面是一个完整的AppiumWebDriver支持的常用方法汇总,并附上典型用法示例。一、元素查找方法/元素操作方法✅使用find_element()和find_elements()fromappiumimportwebdriverfromappium.webdriver.common.appiumbyimportAppiumBy#单个元素查找el=driver.find_element(by=A
- appium入门
影流之猫
pythonappium测试工具
Appium背景介绍Appium是由nodejs的express框架写的HttpServer,Appium使用WebDriver的jsonwire协议,来驱动Apple系统的UIAutomation库、Android系统的UIAutomator框架。Appium桌面客户端安装方式1.运行appium-desktop-Setup-1.2.7.exe,默认安装即可2.启动客户端,按图片步骤设置Appi
- 记录使用appium 2.0进行自动化总结
tnan2522
appium自动化运维爬虫python
1.自动化连接driver对象获取与关闭importsocketimportsubprocessimportrandomimporttimeimportatexitimportpsutilfromappiumimportwebdriverfromappium.options.androidimportUiAutomator2Optionsfromselenium.webdriver.support
- Selenium 识别验证码并自动登录
梦想blog
SpringBoot测试干货selenium测试工具自动化爬虫
org.seleniumhq.seleniumselenium-java3.1.0importcn.hutool.core.util.StrUtil;importcn.hutool.system.SystemUtil;importorg.openqa.selenium.WebDriver;importorg.openqa.selenium.chrome.ChromeDriver;importorg
- (14)java+ selenium->元素定位大法之By xpath上卷
程序员的世界你不懂
javaselenium开发语言
1.简介继续介绍WebDriver关于元素定位大法,方法:Byxpath。xpath的定位方法,非常强大。使用这种方法几乎可以定位到页面上的任意元素。2.什么是xpath?xpath是XMLPath的简称,由于HTML文档本身就是一个标准的XML页面,所以我们可以使用Xpath的用法来定位页面元素。XPath是XML和Path的缩写,主要用于xml文档中选择文档中节点。基于XML树状文档结构,XP
- Selenium工作原理
夏日玲子
测试工具web自动化selenium测试工具
Selenium工作原理Selenium是一个用于自动化Web浏览器操作的工具,主要用于测试Web应用程序。其核心工作原理涉及多个组件协作完成对浏览器的控制。核心组件SeleniumWebDriverWebDriver是Selenium的核心组件,直接与浏览器交互。它通过浏览器提供的原生支持或插件实现自动化操作。WebDriver使用各自浏览器特定的驱动程序(如ChromeDriver、Gecko
- TestCafe API
Thomas Kant
自动化测试testcafenode.js自动化测试框架
TestCafe全面指南:高效编写Web自动化测试的利器TestCafe是一个强大且易用的端到端测试框架,基于Node.js,无需WebDriver,支持多种主流浏览器,并能直接在命令行中运行。本文将带你深入了解TestCafe的核心概念、API用法、高级功能、最佳实践,并通过完整示例流程帮助你快速掌握自动化测试技能!一、核心概念解析1.1测试文件结构一个典型的TestCafe测试文件包含以下部分
- 使用Selenium WebDriver和Python入门自动化测试
慢慢的写代码
SeleniumWebDriverPython自动化测试
使用SeleniumWebDriver和Python入门自动化测试1.准备你的机器在开始使用SeleniumWebDriver和Python进行自动化测试之前,我们需要确保机器上已经安装了必要的软件和工具。以下是详细的准备工作步骤:1.1安装PythonPython是一个强大的编程语言,广泛应用于自动化测试领域。大多数Linux发行版、MacOSX和其他Unix机器上默认安装了Python。对于W
- Python网页自动化Selenium中文文档
淘小白_TXB2196
python自动化selenium网页自动化
1.安装1.1.安装SeleniumPythonbindings提供了一个简单的API,让你使用SeleniumWebDriver来编写功能/校验测试。通过SeleniumPython的API,你可以非常直观的使用SeleniumWebDriver的所有功能。SeleniumPythonbindings使用非常简洁方便的API让你去使用像Firefox,IE,Chrome,Remote等等这样的S
- Python获取网易云音乐的评论
图片代码importtimefromseleniumimportwebdriverfromselenium.webdriver.chrome.optionsimportOptionsfromselenium.webdriver.chrome.serviceimportServicefromwebdriver_manager.chromeimportChromeDriverManagerfromse
- selenium库实现批量爬取网页文章得到PDF
ph0ebus
pythonseleniumpython
引流博客(https://ph0ebus.github.io/)实现目的利用python的selenium库实现批量网站打印为PDF预备知识selenium库的简单了解浏览器的启动参数re库函数了解(re.complie,re.findall)js调用浏览器窗口代码实现importjsonimportrefromseleniumimportwebdriverchrome_options=webdr
- Selenium 和playwright 使用场景优缺点对比
2501_91537388
自动化selenium测试工具
1.核心对比概览特性SeleniumPlaywright诞生时间2004年(历史悠久)2020年(微软开发,现代架构)浏览器支持所有主流浏览器(需驱动)Chromium、Firefox、WebKit(内置引擎)执行速度较慢(依赖WebDriver通信)快(直接协议通信,无驱动依赖)自动等待机制需手动配置等待(显式/隐式等待)自动等待元素可交互(智能等待)多标签页/iframe处理复杂(需切换上下文
- python+appium测试ios
三幺四
pythonappiumios
1、环境准备Xcode(开发者账户、证书)、appium启动、appium-WebDriverServer(账户、标识唯一、iOS与设备一致)、Carthage(RoutingHTTPSeveriOS版本与设备一致)、手机进入开发者模式、手机连接并信任设备2、构建WebDriverServer、RoutingHTTPSever成功之后,需手动启用WebDriverAgent(端口号8100)xco
- selenium execute_script常用方法汇总
ZingKings
Seleniumselenium
driver.execute_script()是SeleniumWebDriver中非常强大且灵活的功能,可以用来执行任意的JavaScript代码在浏览器上下文中。以下是一些常用的execute_script()方法的例子和用法:修改元素的属性和值python#修改输入框的值driver.execute_script("arguments[0].value='你好'",element)#清空输入
- 爬虫selenium:unexpected keyword argument ‘options‘ & use options instead of chrome_options
Raina Chen
python开发语言爬虫seleniumchrome
在学习Python超强爬虫8天速成(完整版)爬取各种网站数据实战案例Day7-06.无头浏览器+规避检测时候老师演示的代码,遇到一些问题及解决过程,供分享和指点fromseleniumimportwebdriverfromtimeimportsleepfromselenium.webdriver.chrome.optionsimportOptionsfromselenium.webdriverim
- 43. 远程分布式测试实现
Tom Boom
分布式测试开发自动化测试框架开发分布式测试webdriver自动化
43.远程分布式测试实现详解一、远程测试环境配置1.1远程WebDriver服务定义#Chrome浏览器远程服务地址chrome_url=r'http://localhost:5143'#Edge浏览器远程服务地址edge_url=r'http://localhost:9438'关键概念:每个URL对应一个独立的WebDriver服务典型配置:localhost:本地服务192.168.1.100
- selenium基础操作
謹言
Python之web自动化seleniumpython软件测试web自动化
selenium基础操作#使用seleniumfromseleniumimportwebdriver#得到一个浏览器对象browser=webdriver.Chrome()#打开一个网页browser.get('http://www.douban.com')#打印标题print(browser.title)#打印URLprint(browser.current_url)#打印源码print(bro
- selenium基础
HAPPY酷
selenium测试工具
以下是整理后的Selenium操作介绍:基本操作定位元素使用By.ID定位:driver.find_element(By.ID,"page-mainIframe"),尽量使用id元素定位。定位多个元素:driver.find_elements(By.ID,"some_id")。刷新页面:使用refresh()方法刷新当前页面。等待机制显式等待:使用WebDriverWait类和expected_c
- Selenium的底层原理
CtrlCV 攻城狮
selenium测试工具
Selenium底层主要依赖于WebDriver协议(即W3CWebDriver规范,早期也有JSONWireProtocol)来实现对浏览器的远程控制,其核心架构可以分为以下几层:Selenium客户端(ClientLibrary)支持多种语言(Java、Python、C#、JavaScript等)。提供了一套统一的API,让测试脚本(如driver.find_element(...)、driv
- 测试面试必备:Web自动化测试中如何在不同的网页之间切换
二进制11
#自动化测试面试题面试软件测试自动化测试Web测试Selenium
自动化测试面试题-Web自动化测试中,如何在不同的网页之间切换?引言在现代Web自动化测试中,经常需要处理多个浏览器标签页或窗口之间的切换场景。本文将详细介绍如何使用SeleniumWebDriver在不同网页之间切换,并提供Java代码示例和流程图帮助理解这一过程。一、理解浏览器窗口和标签页在开始之前,我们需要明确几个概念:窗口(Window):浏览器的一个独立实例标签页(Tab):窗口内的一个
- selenium webdriverchrome driver集合整理128129130131132
m0_74823408
selenium测试工具
版本downloadlink120120下載121121下載122122下載123123下載124124下載125125下載126126系列版本下载:126.0.6478.63下载126.0.6478.61下载126.0.6478.55下载126.0.6478.126下载126.0.6478.182下載127127.0.6533.72下载127.0.6533.88下载127.0.6533.72下载
- 软件测试笔记|web自动化测试|显式等待和隐式等待的区别是什么?
阳哥整理软件测试笔记
web自动化测试自动化
显式等待和隐式等待都是在自动化测试中用于等待页面元素加载或特定条件满足的机制,但它们有以下区别:一、定义和实现方式隐式等待:•定义:隐式等待是一种全局设置,告诉WebDriver在尝试查找任何元素时,如果没有立即找到,就等待一段时间。•实现方式:通过在代码中设置一次隐式等待时间,例如使用Python的Selenium库时,可以这样设置隐式等待:driver.implicitly_wait(10),
- 隐式等待和显式等待的区别
小罗0912
html前端
显式等待WebDriverWait()是针对某个元素设定的等待时间,在设置时间内,默认每隔一段时间检测一次当前页面某个元素是否存在,如果在规定的时间内找到了元素,则直接执行,即找到元素就执行相关操作,如果超过设置时间检测不到则抛出异常。默认检测频率为0.5s,如果在规定时间内没有加载出来那么就是会抛出TimeoutException使用场景:当打开一个新页面,执行第一个元素操作的时候;当某一步操作
- WebUI自动化测试
我要这脸有何用
测试自动化python爬虫
主要是selenium+pytest+POM一、selenium初始框架:#导入模块fromseleniumimportwebdriverfromtimeimportsleep#实例化浏览器对象driver=webdriver.Chrome()#打开网页driver.get('***.html')#展示效果sleep(3)#关闭页面driver.quit()元素定位#使用id定位element=d
- 作业-Python+selenium自动化测试登录126邮箱
Yioer-畘境
pythonselenium开发语言
fromtimeimportsleepfromseleniumimportwebdriverfromselenium.webdriver.support.waitimportWebDriverWaitdriver=webdriver.Chrome()#访问126邮箱网址driver.get("https://www.126.com/")#等待元素出现element=WebDriverWait(dr
- Python Selenium 一小时速通教程
TOWNST
pythonselenium开发语言
PythonSelenium一小时速通教程+实战案例一、环境配置(10分钟)安装Python确保已安装Python3.x(官网下载)。安装Selenium在终端运行:pipinstallselenium下载浏览器驱动Chrome:访问ChromeDriver官网,选择与浏览器版本匹配的驱动。Firefox:下载geckodriver。Edge:下载MicrosoftWebDriver。驱动放置位置
- web前段跨域nginx代理配置
刘正强
nginxcmsWeb
nginx代理配置可参考server部分
server {
listen 80;
server_name localhost;
- spring学习笔记
caoyong
spring
一、概述
a>、核心技术 : IOC与AOP
b>、开发为什么需要面向接口而不是实现
接口降低一个组件与整个系统的藕合程度,当该组件不满足系统需求时,可以很容易的将该组件从系统中替换掉,而不会对整个系统产生大的影响
c>、面向接口编口编程的难点在于如何对接口进行初始化,(使用工厂设计模式)
- Eclipse打开workspace提示工作空间不可用
0624chenhong
eclipse
做项目的时候,难免会用到整个团队的代码,或者上一任同事创建的workspace,
1.电脑切换账号后,Eclipse打开时,会提示Eclipse对应的目录锁定,无法访问,根据提示,找到对应目录,G:\eclipse\configuration\org.eclipse.osgi\.manager,其中文件.fileTableLock提示被锁定。
解决办法,删掉.fileTableLock文件,重
- Javascript 面向对面写法的必要性?
一炮送你回车库
JavaScript
现在Javascript面向对象的方式来写页面很流行,什么纯javascript的mvc框架都出来了:ember
这是javascript层的mvc框架哦,不是j2ee的mvc框架
我想说的是,javascript本来就不是一门面向对象的语言,用它写出来的面向对象的程序,本身就有些别扭,很多人提到js的面向对象首先提的是:复用性。那么我请问你写的js里有多少是可以复用的,用fu
- js array对象的迭代方法
换个号韩国红果果
array
1.forEach 该方法接受一个函数作为参数, 对数组中的每个元素
使用该函数 return 语句失效
function square(num) {
print(num, num * num);
}
var nums = [1,2,3,4,5,6,7,8,9,10];
nums.forEach(square);
2.every 该方法接受一个返回值为布尔类型
- 对Hibernate缓存机制的理解
归来朝歌
session一级缓存对象持久化
在hibernate中session一级缓存机制中,有这么一种情况:
问题描述:我需要new一个对象,对它的几个字段赋值,但是有一些属性并没有进行赋值,然后调用
session.save()方法,在提交事务后,会出现这样的情况:
1:在数据库中有默认属性的字段的值为空
2:既然是持久化对象,为什么在最后对象拿不到默认属性的值?
通过调试后解决方案如下:
对于问题一,如你在数据库里设置了
- WebService调用错误合集
darkranger
webservice
Java.Lang.NoClassDefFoundError: Org/Apache/Commons/Discovery/Tools/DiscoverSingleton
调用接口出错,
一个简单的WebService
import org.apache.axis.client.Call;import org.apache.axis.client.Service;
首先必不可
- JSP和Servlet的中文乱码处理
aijuans
Java Web
JSP和Servlet的中文乱码处理
前几天学习了JSP和Servlet中有关中文乱码的一些问题,写成了博客,今天进行更新一下。应该是可以解决日常的乱码问题了。现在作以下总结希望对需要的人有所帮助。我也是刚学,所以有不足之处希望谅解。
一、表单提交时出现乱码:
在进行表单提交的时候,经常提交一些中文,自然就避免不了出现中文乱码的情况,对于表单来说有两种提交方式:get和post提交方式。所以
- 面试经典六问
atongyeye
工作面试
题记:因为我不善沟通,所以在面试中经常碰壁,看了网上太多面试宝典,基本上不太靠谱。只好自己总结,并试着根据最近工作情况完成个人答案。以备不时之需。
以下是人事了解应聘者情况的最典型的六个问题:
1 简单自我介绍
关于这个问题,主要为了弄清两件事,一是了解应聘者的背景,二是应聘者将这些背景信息组织成合适语言的能力。
我的回答:(针对技术面试回答,如果是人事面试,可以就掌
- contentResolver.query()参数详解
百合不是茶
androidquery()详解
收藏csdn的博客,介绍的比较详细,新手值得一看 1.获取联系人姓名
一个简单的例子,这个函数获取设备上所有的联系人ID和联系人NAME。
[java]
view plain
copy
public void fetchAllContacts() {
 
- ora-00054:resource busy and acquire with nowait specified解决方法
bijian1013
oracle数据库killnowait
当某个数据库用户在数据库中插入、更新、删除一个表的数据,或者增加一个表的主键时或者表的索引时,常常会出现ora-00054:resource busy and acquire with nowait specified这样的错误。主要是因为有事务正在执行(或者事务已经被锁),所有导致执行不成功。
1.下面的语句
- web 开发乱码
征客丶
springWeb
以下前端都是 utf-8 字符集编码
一、后台接收
1.1、 get 请求乱码
get 请求中,请求参数在请求头中;
乱码解决方法:
a、通过在web 服务器中配置编码格式:tomcat 中,在 Connector 中添加URIEncoding="UTF-8";
1.2、post 请求乱码
post 请求中,请求参数分两部份,
1.2.1、url?参数,
- 【Spark十六】: Spark SQL第二部分数据源和注册表的几种方式
bit1129
spark
Spark SQL数据源和表的Schema
case class
apply schema
parquet
json
JSON数据源 准备源数据
{"name":"Jack", "age": 12, "addr":{"city":"beijing&
- JVM学习之:调优总结 -Xms -Xmx -Xmn -Xss
BlueSkator
-Xss-Xmn-Xms-Xmx
堆大小设置JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。我在Windows Server 2003 系统,3.5G物理内存,JDK5.0下测试,最大可设置为1478m。典型设置:
java -Xmx355
- jqGrid 各种参数 详解(转帖)
BreakingBad
jqGrid
jqGrid 各种参数 详解 分类:
源代码分享
个人随笔请勿参考
解决开发问题 2012-05-09 20:29 84282人阅读
评论(22)
收藏
举报
jquery
服务器
parameters
function
ajax
string
- 读《研磨设计模式》-代码笔记-代理模式-Proxy
bylijinnan
java设计模式
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
/*
* 下面
- 应用升级iOS8中遇到的一些问题
chenhbc
ios8升级iOS8
1、很奇怪的问题,登录界面,有一个判断,如果不存在某个值,则跳转到设置界面,ios8之前的系统都可以正常跳转,iOS8中代码已经执行到下一个界面了,但界面并没有跳转过去,而且这个值如果设置过的话,也是可以正常跳转过去的,这个问题纠结了两天多,之前的判断我是在
-(void)viewWillAppear:(BOOL)animated
中写的,最终的解决办法是把判断写在
-(void
- 工作流与自组织的关系?
comsci
设计模式工作
目前的工作流系统中的节点及其相互之间的连接是事先根据管理的实际需要而绘制好的,这种固定的模式在实际的运用中会受到很多限制,特别是节点之间的依存关系是固定的,节点的处理不考虑到流程整体的运行情况,细节和整体间的关系是脱节的,那么我们提出一个新的观点,一个流程是否可以通过节点的自组织运动来自动生成呢?这种流程有什么实际意义呢?
这里有篇论文,摘要是:“针对网格中的服务
- Oracle11.2新特性之INSERT提示IGNORE_ROW_ON_DUPKEY_INDEX
daizj
oracle
insert提示IGNORE_ROW_ON_DUPKEY_INDEX
转自:http://space.itpub.net/18922393/viewspace-752123
在 insert into tablea ...select * from tableb中,如果存在唯一约束,会导致整个insert操作失败。使用IGNORE_ROW_ON_DUPKEY_INDEX提示,会忽略唯一
- 二叉树:堆
dieslrae
二叉树
这里说的堆其实是一个完全二叉树,每个节点都不小于自己的子节点,不要跟jvm的堆搞混了.由于是完全二叉树,可以用数组来构建.用数组构建树的规则很简单:
一个节点的父节点下标为: (当前下标 - 1)/2
一个节点的左节点下标为: 当前下标 * 2 + 1
&
- C语言学习八结构体
dcj3sjt126com
c
为什么需要结构体,看代码
# include <stdio.h>
struct Student //定义一个学生类型,里面有age, score, sex, 然后可以定义这个类型的变量
{
int age;
float score;
char sex;
}
int main(void)
{
struct Student st = {80, 66.6,
- centos安装golang
dcj3sjt126com
centos
#在国内镜像下载二进制包
wget -c http://www.golangtc.com/static/go/go1.4.1.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.4.1.linux-amd64.tar.gz
#把golang的bin目录加入全局环境变量
cat >>/etc/profile<
- 10.性能优化-监控-MySQL慢查询
frank1234
性能优化MySQL慢查询
1.记录慢查询配置
show variables where variable_name like 'slow%' ; --查看默认日志路径
查询结果:--不用的机器可能不同
slow_query_log_file=/var/lib/mysql/centos-slow.log
修改mysqld配置文件:/usr /my.cnf[一般在/etc/my.cnf,本机在/user/my.cn
- Java父类取得子类类名
happyqing
javathis父类子类类名
在继承关系中,不管父类还是子类,这些类里面的this都代表了最终new出来的那个类的实例对象,所以在父类中你可以用this获取到子类的信息!
package com.urthinker.module.test;
import org.junit.Test;
abstract class BaseDao<T> {
public void
- Spring3.2新注解@ControllerAdvice
jinnianshilongnian
@Controller
@ControllerAdvice,是spring3.2提供的新注解,从名字上可以看出大体意思是控制器增强。让我们先看看@ControllerAdvice的实现:
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Co
- Java spring mvc多数据源配置
liuxihope
spring
转自:http://www.itpub.net/thread-1906608-1-1.html
1、首先配置两个数据库
<bean id="dataSourceA" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close&quo
- 第12章 Ajax(下)
onestopweb
Ajax
index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/
- BW / Universe Mappings
blueoxygen
BO
BW Element
OLAP Universe Element
Cube Dimension
Class
Charateristic
A class with dimension and detail objects (Detail objects for key and desription)
Hi
- Java开发熟手该当心的11个错误
tomcat_oracle
java多线程工作单元测试
#1、不在属性文件或XML文件中外化配置属性。比如,没有把批处理使用的线程数设置成可在属性文件中配置。你的批处理程序无论在DEV环境中,还是UAT(用户验收
测试)环境中,都可以顺畅无阻地运行,但是一旦部署在PROD 上,把它作为多线程程序处理更大的数据集时,就会抛出IOException,原因可能是JDBC驱动版本不同,也可能是#2中讨论的问题。如果线程数目 可以在属性文件中配置,那么使它成为
- 推行国产操作系统的优劣
yananay
windowslinux国产操作系统
最近刮起了一股风,就是去“国外货”。从应用程序开始,到基础的系统,数据库,现在已经刮到操作系统了。原因就是“棱镜计划”,使我们终于认识到了国外货的危害,开始重视起了信息安全。操作系统是计算机的灵魂。既然是灵魂,为了信息安全,那我们就自然要使用和推行国货。可是,一味地推行,是否就一定正确呢?
先说说信息安全。其实从很早以来大家就在讨论信息安全。很多年以前,就据传某世界级的网络设备制造商生产的交