Python 能做很多无聊,但有意思的事情,例如接下来的一些案例。
以下程序,不要发代码,要不实现不了你整蛊的目的。
要打包成一个 exe 程序,发给朋友才有意思。
使用 pip install pyinstaller。
打包命令如下:
pyinstaller -F 文件名.py 过程中如果出现 BUG(一般是编码错误),文末有解决方案
无聊程序之一 while True: n = input("猜猜我在想啥?") print("猜错喽") 你的朋友将永远无法知道你在想什么。 当然我安装 360 之后,程序没了。有兴趣研究免杀的,可以在给本文点个赞,点赞过 100,我出套 Python 免杀教程。
无聊程序之二 死命弹窗
import tkinter.messagebox while True: tkinter.messagebox.showerror('Windows 错误','你的电脑正在被攻击!') 运行之后,很就刺激了,如果对方不会杀进程,更刺激。
无聊程序之三 调用默认浏览器,无限打开 CSDN ,让他爱上学习。
import webbrowser while True: webbrowser.open('www.csdn.net') 额,使用之后,我自己的电脑死机了。
瞬间 CPU…
无聊程序之四 这个程序就动感多了,会随机出现弹窗。
1.import tkinter as tk 2.import random 3.import threading 4.import time 5.def boom(): 6. window = tk.Tk() 7.
🌈个人主页:聆风吟
🔥系列专栏:数据结构、网络奇遇记
🔖少年有梦不应止于心动,更要付诸行动。
文章目录 📋前言一. 什么是人工智能?二. 人工智能的关键技术2.1 机器学习2.2 深度学习2.1 计算机视觉2.4 自然语言处理技术2.5 脑机接口技术2.6 知识图谱2.7 人机交互2.8 自主无人系统技术 三. 人工智能如何运作?3.1 步骤一:数据收集和处理3.2 步骤二:学习和训练3.3 步骤三:推理和决策3.4 步骤四:反馈和改进 四. 人工智能三大核心要素五. 人工智能的应用领域六. 未来发展前景📝结语 📋前言 人工智能是一种模拟人类智能的技术,目的是让计算机可以像人类一样进行学习、推理、感知、理解和创造等活动。近年来,人工智能技术已经在各个领域取得了显著进展,包括自然语言处理、计算机视觉、机器学习、自动驾驶等。
一. 什么是人工智能? 人工智能(Artificial Intelligence),英文缩写为AI,是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。它的目标是使机器能够胜任一些通常需要人类智能才能完成的复杂工作。人工智能的基本方法包括符号推理、机器学习、进化算法和神经网络。
符号推理:是一种基于逻辑推理的方法,使用符号和规则来表示和处理知识。机器学习:是一种让计算机从数据中学习的技术,包括监督学习、无监督学习和强化学习等。进化算法:是一种基于生物进化理论的优化方法,模拟了进化过程中的选择、遗传和变异等机制。神经网络:是一种基于类比人类神经系统的模型,由多个神经元构成。通过多层神经网络的组合,可以实现复杂的任务和决策。 二. 人工智能的关键技术 2.1 机器学习 机器学习是AI的核心技术之一,也是训练计算机识别和理解数据的方法。机器学习涉及大量的数据处理和分析,以便学习能够从这些数据中发现规律和模式。机器学习可以被分为三个主要类别,分别是监督学习、无监督学习和强化学习。
2.2 深度学习 深度学习是一种利用复杂的神经网络来开发AI系统的技术。它可以模拟人脑的认知能力,将复杂的数据进行分类和分析,并生成准确的结果。它的应用范围很广,可以用于图像识别、自动驾驶、语音识别等。
2.1 计算机视觉 计算机视觉,简称CV(Computer Vision),是指通过把图像数据转换成机器可识别的形式,从而实现对视觉信息的建模和分析,并作出相应的决策。
此技术主要用于空间和环境地理信息采集和处理,如图像定位、图像分类和图像变换等。它的应用范围十分广泛,可用于识别制造业中的机器、配件、零部件等。
2.4 自然语言处理技术 自然语言处理技术是一门通过建立计算机模型、理解和处理自然语言的学科。是指用用计算机对自然语言的形、音、义等信息进行处理并识别的应用,大致包括机器翻译、自动提取文本摘要、文本分类、语音合成、情感分析等。
目前,自然语言处理主要应用于机器翻译、舆情监测、自动摘要、观点提取、文本分类、问题回答、文本语义对比、语音识别、中文OCR等方面。
2.5 脑机接口技术 脑机接口是在人或动物脑与外部设备间建立的直接连接通道。通过单向脑机接口技术,计算机可以接受脑传来的命令,或者发送信号到脑,但不能同时发送和接收信号;而双向脑机接口允许脑和外部设备间的双向信息交换。
脑机接口信号来自中枢神经系统,传播中不依赖于外周的神经与肌肉系统。常用于辅助、增强、修复人体的感觉–运动功能或提升人机交互能力。
2.6 知识图谱 知识图谱本质上是结构化的语义知识库,是一种由节点和边组成的图数据结构,以符号形式描述物理世界中的概念及其相互关系,其基本组成单位是 “实体—关系—实体” 三元组,以及实体及其相关 “属性—值” 对。不同实体之间通过关系相互联结,构成网状的知识结构。
2.7 人机交互 人机交互是一门研究系统与用户之间的交互关系的学问。系统可以是各种各样的机器,也可以是计算机化的系统和软件。人机交互界面通常是指用户可见的部分。用户通过人机交互界面与系统交流,并进行操作。
2.8 自主无人系统技术 自主无人系统是能够通过先进的技术进行操作或管理,而不需要人工干预的系统,可以应用到无人驾驶、无人机、空间机器人,无人车间等领域。
无人系统是由平台、任务载荷、指挥控制系统及天-空-地信息网络等组成,它集系统科学与技术、信息控制科学与技术、机器人技术、航空技术、空间技术和海洋技术等一系列高新科学技术为一体的综合系统,多门类学科的交叉融合与综合是无人系统构建的基础。
三. 人工智能如何运作? 人工智能是一种模拟人类智能的技术,它通过设计和开发算法和模型来使机器能够模拟人类的思维和行为。人工智能的运作可以分为以下几个步骤:
type (规定数据类型) String 字符串 Number 数字 Boolean 布尔 Array 数组 Object 对象 Date 日期 Function 函数 Symbol 独一无二的值(es6) default default : (默认值) 基础数据类型: 直接赋值 对象数据类型: 用函数赋值 ()=>[] required required: (必填项) 默认为false,说明父级必须传入,否则会报错 validator validator: 校验(验证传入的值是否符合规定) props 可以是基础数据或对象,用于接收来自父组件的数据。 数组语法(比较简单) props: ['size', 'myMessage'] //不限制数据类型 2.对象语法
props: { // 基础的类型检查 (`null` 和 `undefined` 会通过任何类型验证) propA: Number, // 多个可能的类型 propB: [String, Number], // 必填的字符串 propC: { type: String, required: true, }, // 带有默认值的数字 propD: { type: Number, default: 100, }, // 数组写法 propK: { type: Array, // 对象或数组默认值必须从一个工厂函数获取 default: function () { return ["
前言 模拟键盘操作执行自动化任务,我们常用的有 pyautowin 等自动化操作模块。但是这些模块有一个很大的缺点,编译的时候非常依赖 windows 的C语言底层模块。(文末送福利)
今天介绍的这个模块叫做 keyboard 它有一个最大的优点:纯Python原生开发,编译时完全不需要依赖C语言模块。一行命令就能完成安装,非常方便。
1.准备 开始之前,你要确保Python和pip已经成功安装在电脑上,如果没有,可以访问这篇文章:超详细Python安装指南 进行安装。
(可选1) 如果你用Python的目的是数据分析,可以直接安装Anaconda:Python数据分析与挖掘好帮手—Anaconda,它内置了Python和pip.
(可选2) 此外,推荐大家用VSCode编辑器,它有许多的优点:Python 编程的最好搭档—VSCode 详细指南。
请选择以下任一种方式输入命令安装依赖:
Windows 环境 打开 Cmd (开始-运行-CMD)。MacOS 环境 打开 Terminal (command+空格输入Terminal)。3. 如果你用的是 VSCode编辑器 或 Pycharm,可以直接使用界面下方的Terminal. pip install keyboard
2.基本使用 按下并释放:模拟键盘按下某些键或组合键后释放,比如shift + S, 并增加空格:
import keyboard
keyboard.press_and_release(‘shift+s, space’)
输入文字:
import keyboard
keyboard.write(‘Python 实用宝典’)
等待触发按键并响应:
#公众号:Python实用宝典
import keyboard
keyboard.add_hotkey(‘ctrl+shift+a’, print, args=(‘宝典哥触发了热键’))
keyboard.wait()
这样程序就会监控 “ctrl+shift+a” 组合键的触发情况,一旦组合键触发,就会执行第二个参数的函数,并将第三个参数传入第二个函数的参数中。
等待触发某个按键:
#公众号:Python实用宝典
import keyboard
keyboard.add_hotkey(‘ctrl+shift+a’, print, args=(‘宝典哥触发了热键’))
keyboard.wait(‘esc’)
这样,按下 ESC 就会终止等待,继续往下运行程序。
计算机基础-知识点总结整理 (一)基础理论考试内容1.信息、数据及通信的概念,计算机的发展历史与分类等。2.进制的概念及换算。3.信息安全基本知识、病毒及防治基本知识、社会信息道德及版权与知识产权的知识等。4.计算机硬件及相关设备的基础知识。5.数据存储及换算等。6.各种常用文件扩展名的意义等。 (二)应用能力考试内容1.操作系统的使用2.网络基础知识及因特网的应用3.文字处理(Word)基本知识4.电子表格(Excel) 基本知识5.幻灯片(PowerPoint) 基本知识 (三)声明 (一)基础理论考试内容 1.信息、数据及通信的概念,计算机的发展历史与分类等。 1、信息、数据及通信的概念
信息:
信息是对客观事物特征和运动状态的描述,其形式有数字、文字、声音、图形、图像等等
数据:
数据是传递信息的实体。通信的目的是传达信息,传达之前必须先将信息用数据表示出来。
数据又分为两种类型:模拟数据;数字数据。
用于描述连续变化量的数据称之为模拟数据,如声音、温度等;用于描述不连续的变化量的数据称之为数字数据,如文本信息,整数等等。
信号:
信号指数据在传输过程中的电磁波表示形式,也分为模拟信号和数字信号两种。模拟信号指一种连续变化的信号,其波形可以表示为一种连续性的正弦波;数字信号为一种离散信号,通常是由最简单的二进制信号,用数字“1”和“0”表示,是一种不连续的方波。
信道:
信道就是传输信号的通道,由传输介质及对应的信号设备组成。信道也可以分为逻辑信道和物理信道。一条线路是一条信道这条信道为物理信道,但这一条物理信道上可以存在很多逻辑信道进行通信,如一条光纤可以让一户人家中的很多人使用。
带宽:
在数据信号传输时,其信号功率的使用情况,或者其数据通信时所消耗的能量资源就可称之为带宽。
2、计算机发展历史:
第1代:电子管数字机(1946—1958年)
硬件方面:逻辑元件采用的是真空电子管,主存储器采用汞延迟线、阴极射线示波管静电存储器、磁鼓、磁芯;外存储器采用的是磁带。
软件方面:采用的是机器语言、汇编语言。
应用领域:以军事和科学计算为主。
特点是:体积大、功耗高、可靠性差、速度慢(一般为每秒数千次至数万次)、价格昂贵,但为以后的计算机发展奠定了基础。
第2代:晶体管数字机(1958—1964年)
硬件方面:逻辑元件采用的是晶体管,主存储器采用磁芯;外存储器已开始使用更先进的磁盘。
软件方面:软件有了很大发展,出现了各种各样的高级语言及其编译程序,还出现了以批处理为主的操作系统。
应用领域:以科学计算和各种事务处理为主,并开始用于工业控制。
特点是:体积缩小、能耗降低、可靠性提高、运算速度提高(一般为每秒数10万次,可高达300万次)、性能比第1代计算机有很大的提高。
第3代:集成电路数字机(1964—1970年)
硬件方面:逻辑元件采用中、小规模集成电路(MSI、SSI),主存储器仍采用磁芯。
软件方面:出现了分时操作系统以及结构化、规模化程序设计方法。
应用领域:开始进入文字处理和图形图像处理领域。
特点是:速度更快(一般为每秒数百万次至数千万次),而且可靠性有了显著提高,价格进一步下降,产品走向了通用化、系列化和标准化等。
第4代:大规模集成电路机(1970年至今)
硬件方面:逻辑元件采用大规模和超大规模集成电路(LSI和VLSI)。
软件方面:出现了数据库管理系统、网络管理系统和面向对象语言等。
应用领域:从科学计算、事务管理、过程控制逐步走向家庭。
特点是:1971年世界上第一台微处理器在美国硅谷诞生,开创了微型计算机的新时代。
3、计算机分类
计算机可以根据其规模、用途、功能等多个方面进行分类:
按用途分类:
个人计算机(PC):用于个人或小型办公室使用,包括台式机、笔记本电脑、平板电脑等。服务器:用于提供服务,如网页托管、数据库管理、文件存储等。超级计算机:用于高性能计算,处理大规模数据和复杂计算任务,例如科学研究、天气预报、模拟等。 按规模分类:
超级计算机:具有极高的计算能力和处理速度,通常用于科学和工程领域的大规模计算任务。迷你计算机:介于个人计算机和大型计算机之间,用于中小型企业的数据处理和控制。嵌入式计算机:嵌入在各种设备中,如智能手机、汽车电子、家用电器等。 按性能和功能分类:
主机:指大型计算机系统中的主要计算和处理单元。工作站:用于科学和工程计算,具备较高性能和图形处理能力。微型计算机:通常指个人计算机,用于个人日常任务和办公应用。 按处理器架构分类:
x86 架构:主要用于个人计算机和服务器,例如Intel和AMD处理器。ARM 架构:常用于移动设备和嵌入式系统,如智能手机、平板电脑等。 按工作方式分类:
并行计算机:同时执行多个指令或任务,提高计算速度。串行计算机:按照指令序列顺序执行,逐步完成任务。 按数据处理方式分类:
数字计算机:处理数字数据,执行数字化运算和逻辑操作。模拟计算机:用于处理模拟信号和模拟数据,如模拟电路仿真等。 按操作系统分类:
Windows系统:微软开发的操作系统,广泛用于个人计算机。macOS系统:苹果公司开发的操作系统,用于苹果品牌的计算机。Linux系统:开源操作系统,可适用于多种类型的计算机,包括服务器和个人计算机。 这些分类方法涵盖了计算机根据不同标准进行的分类方式。不同类型的计算机适用于不同的应用场景,并具有各自的特点和优势。
《练习题 - 信息、数据及通信》 1. 以下哪个最好描述了“信息”? a) 单个数字或字符的集合 b) 有用的数据解释 c) 数据库中的记录 d) 媒体文件的存储方式 2.
什么是网络安全? 网络安全是指用于防止网络攻击或减轻其影响的任何技术、措施或做法。网络安全旨在保护个人和组织的系统、应用程序、计算设备、敏感数据和金融资产,使其免受简单而不堪其绕的计算机病毒、复杂而代价高昂的勒索软件攻击,以及介于两者之间的各种攻击
网络攻击能够扰乱企业经营,损害企业利益,甚至让企业瘫痪,而且受害者付出的代价还在不断上升。例如,根据 IBM 2023 年数据泄露成本报告,2023 年数据泄露的平均成本为 445 万美元,比过去几年增长了 15%;2023 年与勒索软件相关的数据泄露平均成本甚至更高,达到 513 万美元。这还不包括赎金支付的费用,赎金平均增加了 1,542,333 美元,比上一年增长了 89%。据估计,到 2025 年,网络犯罪每年将给世界经济造成 10.5 万亿美元的损失
过去几年,信息技术 (IT) 发展趋势迅猛,诸如云计算的采用、网络的复杂性、远程办公和在家办公、自带设备 (BYOD) 计划以及从门铃、汽车到装配线的联网设备和传感器,均带来了巨大的商业优势和科技进步,但也为网络罪犯创造了成倍增加的攻击途径。也许并不奇怪,最近的一项研究发现,全球网络安全人员缺口(现有网络安全人员与需要填补的网络安全职位之间的缺口)为 340 万人。资源紧张的安全团队正在专注于开发全面的网络安全策略,利用先进的分析、人工智能和自动化来更有效地应对网络威胁,最大限度地减少网络攻击发生时造成的影响。
网络安全的类型 有力的网络安全策略可保护所有相关 IT 基础架构层或域免受网络威胁和网络犯罪的破坏。以下是一些常见的网络安全类型:
关键基础设施安全:保护社会在国家安全、经济健康和公共安全方面所依赖的计算机系统、应用程序、网络、数据和数字资产。在美国,国家标准与技术研究院 (NIST) 制定了一个网络安全框架,以帮助信息技术提供商开展这方面的工作,美国国土安全部的网络安全和基础设施安全局 (CISA) 也提供了更多指导。网络安全:防止未经授权访问网络资源,检测并阻止正在进行的网络攻击和网络安全漏洞,同时确保授权用户能够在需要时安全访问所需的网络资源。端点安全:保护端点(服务器、台式机、笔记本电脑、移动设备)及其用户免受攻击,还可以保护网络免受利用端点发起攻击的对手的侵害。端点(服务器、台式机、笔记本电脑、移动设备)仍然是网络攻击的主要切入点。应用程序安全:保护在本地部署和云中运行的应用程序,防止未经授权访问和使用应用程序及相关数据,并防止黑客利用应用程序设计中的缺陷或漏洞渗透网络。现代应用程序开发方法,即 DevOps 和 DevSecOps ,会将安全和安全测试构建到开发过程中。云安全:保护组织基于云的服务和资产,包括应用程序、数据、存储、开发工具、虚拟服务器和云基础架构等。一般而言,云安全采用责任共担模式:云提供商负责保护所提供的服务和用于提供服务的基础架构,而客户则负责保护自己在云中存储或运行的数据、代码和其他资产。详细信息因使用的云服务而异。信息安全:涉及保护组织的所有重要信息(数字文件和数据、纸质文档、物理媒体,甚至人类语音)免受未遭授权的访问、披露、使用或篡改。数据安全,即保护数字信息,是信息安全的子集,也是大多数网络安全相关信息安全措施的重点。移动安全:包括许多特定于智能手机和移动设备的原则和技术,包括移动应用程序管理 (MAM) 和企业移动管理 (EMM)。最近,移动安全作为统一终端管理 (UEM) 解决方案的一部分提供,该解决方案支持从单个控制台对所有端点(不仅是移动设备,还包括台式机、笔记本电脑等)进行配置和安全管理。 网络安全的重要性 网络安全对于个人和组织来说都是至关重要的,因为它可以保护以下方面:
个人隐私:网络安全可以防止个人信息(如姓名、地址、电话号码、电子邮件、银行账户、社会保障号等)被窃取或泄露,从而避免身份盗用、信用卡欺诈、勒索软件等风险。企业利益:网络安全可以保护企业的商业机密、专利、客户数据、财务数据等,从而避免竞争对手的窃取、黑客的破坏、法律的追究等风险。国家安全:网络安全可以保护国家的关键基础设施、政府机构、军事部门、公共服务等,从而避免敌对势力的攻击、恐怖主义的威胁、间谍活动的渗透等风险。 网络安全的挑战 网络安全面临着许多挑战,其中一些是:
网络攻击的复杂性和多样性:网络攻击的类型和手段不断变化,网络犯罪分子利用各种技术和策略来发动攻击,如社会工程学、恶意软件、僵尸网络、零日漏洞等,难以预测和防御。网络安全的成本和资源:网络安全需要投入大量的资金和人力,以建立和维护有效的安全措施和工具,如防火墙、入侵检测系统、加密、认证、备份等,同时还要应对不断增长的网络威胁和法规要求。网络安全的人才缺乏:网络安全是一个高度专业化和技术化的领域,需要具备丰富的知识和经验的专业人才,但目前网络安全人才的供应远远不能满足需求,导致网络安全人员的招聘和培养困难。网络安全的意识和文化:网络安全不仅是技术问题,也是人的问题,需要提高所有网络用户的安全意识和责任感,培养良好的安全习惯和文化,避免因为疏忽或无知而造成安全漏洞或风险。 网络安全的解决方案 网络安全的解决方案需要综合考虑技术、管理和教育三个方面,其中一些是:
网络安全的技术解决方案:利用各种硬件和软件工具来实现网络安全的功能,如防火墙、入侵检测系统、加密、认证、备份等,同时利用人工智能、云计算、大数据等先进技术来提高网络安全的智能性、灵活性和效率。网络安全的管理解决方案:制定和执行网络安全的政策和规范,如网络安全法、网络安全标准、网络安全框架、网络安全流程等,同时建立和完善网络安全的组织和机制,如网络安全部门、网络安全委员会、网络安全应急响应中心等。网络安全的教育解决方案:提高网络安全的意识和文化,通过各种方式和渠道,如培训、宣传、演练、评估等,来提升网络安全的知识和技能,增强网络安全的责任感和自律性,形成网络安全的共识和共治。 总结 网络安全是指用于防止网络攻击或减轻其影响的任何技术、措施或做法,它涉及多种类型,如关键基础设施安全、网络安全、端点安全、应用程序安全、云安全、信息安全、移动安全等,它对于个人和组织来说都是至关重要的,因为它可以保护个人隐私、企业利益和国家安全。网络安全面临着许多挑战,如网络攻击的复杂性和多样性、网络安全的成本和资源、网络安全的人才缺乏、网络安全的意识和文化等,网络安全的解决方案需要综合考虑技术、管理和教育三个方面,利用各种工具和方法来实现网络安全的功能和目标。
雷池社区版是一款免费的WAF,由长亭科技开发和维护,基于业界领先的智能语义分析算法驱动,作为反向代理接入,保护网站不受黑客攻撃。雷池社区版的特点有以下几点:
简单好用:雷池社区版的安装和配置非常简单,只需几分钟就可以完成。雷池社区版的界面清爽,操作方便,用户可以轻松地查看和管理自己的网站安全状况。强大高效:雷池社区版的核心检测能力由长亭科技首创的智能语义分析算法驱动,可以有效地识别和防御各种Web攻击,包括未知的零日攻击。雷池社区版的性能优异,可以处理高并发的Web流量,不影响网站的正常运行。开源免费:雷池社区版的语义分析算法的核心引擎和相关安全插件都是开源的,用户可以自由地使用和修改。雷池社区版是完全免费的,用户无需支付任何费用,就可以享受雷池社区版的所有功能和服务。 搜索雷池社区版即可免费安装
0. 基础环境 ubuntu22.04 kvm虚拟机模板搭建 小白篇 1. 背景 Centos操作系统停止维护,线上老业务统一采用Centos7.9 升级内核4.20.10+版本的规范运行。但对于一些系统依赖较高的应用如分布式集群/深度学习/算法等集群,centos默认的基础组件版本仍然较低。考虑到后续操作系统的选型,决定预使用ubuntu最新LTS版本做测试。本次制作KVM虚拟化下 ubuntu22.04 kvm虚拟机模板搭建。
2. 物理服务器环境和依赖 2.1. 服务器配置: 型号: R720xdcpu: E5-2620 v2 24C内存: 246GOS: Centos7.9 服务器配置详情:
[root@bj-test-kvm-2-122 ~]# dmidecode -t system |grep Product Product Name: PowerEdge R720xd [root@bj-test-kvm-2-122 ~]# lscpu |head -n 30 Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 24 On-line CPU(s) list: 0-23 Thread(s) per core: 2 Core(s) per socket: 6 Socket(s): 2 NUMA node(s): 2 Vendor ID: GenuineIntel CPU family: 6 Model: 62 Model name: Intel(R) Xeon(R) CPU E5-2620 v2 @ 2.
Python的字典类为此提供了三种方法。的方法items(),keys()和values()仅分别仅包括键-值对,键和值的元组的返回查看对象。内置列表方法将这些视图对象转换为列表对象。
>>> d1 = {'name': 'Ravi', 'age': 23, 'marks': 56} >>> d1.items() dict_items([('name', 'Ravi'), ('age', 23), ('marks', 56)]) >>> l1 = list(d1.items()) >>> l1 [('name', 'Ravi'), ('age', 23), ('marks', 56)] >>> d1.keys() dict_keys(['name', 'age', 'marks']) >>> l2 = list(d1.keys()) >>> l2 ['name', 'age', 'marks'] >>> l3 = list(d1.values()) >>> l3 ['Ravi', 23, 56]
千寻的结论:
如果有房无贷,另一半也有工作收入,父母身体健康且均有不错的退休金,
满足这些条件的话,在西安月入1.5W是相当不错。
目录
一、项目
二、项目功能
怪物
人物
快捷键
分数
游戏说明
提示信息
三、学习视频
UI制作
游戏教程
四、总结
一、项目 视频演示:Godot4爬虫小游戏简单制作_哔哩哔哩bilibili
游戏教程:【小猫godot4入门教程 C#版 已完结】官方入门案例 第12期:音频和期末作业_哔哩哔哩_bilibili 很感谢小猫up(*^▽^*) 游戏项目备份:
1、我自己修改的版本: https://wwwf.lanzout.com/iOWWf1jugvng 2、根据教程制作的版本:https://wwwf.lanzout.com/icg9X1jugwmb 二、项目功能 怪物 自动生成怪物(沿着边界生成,角度随机)
自动销毁(跑出屏幕外后)
生成的速度,数量(随着时间增大而变多)
被击杀后,分数+1
人物 自带一把旋转的剑
ASWD——自由移动(无法移动到屏幕外)
快捷键 空格键(开始游戏)
分数 分数排行榜(点击按钮跳转场景,用文件保存分数数据)
分数随着时间增加,并且每击杀一个敌人,也可以加分
游戏说明 操作等(点击按钮跳转场景)
提示信息 根据游戏进度,显示信息
这个项目是一个简单的游戏项目,主要包括怪物、人物、快捷键、分数、游戏说明和提示信息等功能。通过学习相关视频,你可以了解如何进行UI制作和游戏教程。
通过学习相关的UI制作和游戏教程视频,你将能够掌握制作游戏界面的技巧和设计原则。这些视频将向你展示如何创建漂亮的游戏界面,并提供有关游戏开发的实用技巧和建议。
这个项目将帮助你了解游戏开发的基础知识和技术,以及如何创建一个简单而有趣的游戏。通过学习相关视频和教程,你将能够更好地理解游戏开发的流程,并掌握相关的技能和工具。
三、学习视频 UI制作 https://www.bilibili.com/video/BV17y4y1K7CU
https://www.bilibili.com/video/BV1K84y1X7Yc
https://www.bilibili.com/video/BV1cj411H7Yy 【间补动画】
游戏教程 【小猫godot4入门教程 C#版 已完结】官方入门案例 第12期:音频和期末作业_哔哩哔哩_bilibili终于完结啦!总共12期教程希望大家都能跟上,那我们下个系列见啦~~, 视频播放量 1219、弹幕量 1、点赞数 71、投硬币枚数 58、收藏人数 20、转发人数 1, 视频作者 小猫学游戏, 作者简介 独立游戏小学生,相关视频:【小猫godot4入门教程 C#版 已完结】官方入门案例 第2期:安装和配置(重要),【小猫godot4入门教程 C#版 已完结】官方入门案例 第8期:敌人完善(计时器,路径节点),【小猫godot4入门教程 C#版 已完结】官方入门案例 第1期:前言,【小猫godot4入门教程 C#版 已完结】官方入门案例 第5期:脚本控制人物移动(超多细节),【小猫godot4入门教程 C#版 已完结】官方入门案例 第3期:案例预告,21天六爻从入门到成精,喂饭级教程 | 大型易学公益课(建议收藏),【Godot4】2维平面3维跳跃 | 通用版,【Visual Shader】详细入门教程 第七期:法阵指示器 | 旋转UV,【小猫godot4入门教程 C#版 已完结】官方入门案例 第11期:延迟消息框(延迟的用法和填坑),21天六爻入门成精最强体系课 | 大型公益周易课程(四)https://www.
#ifndef TUMBLERWIDGET_H #define TUMBLERWIDGET_H #include <QWidget> class TumblerWidget : public QWidget { Q_OBJECT public: TumblerWidget(QWidget *parent = nullptr); ~TumblerWidget(); protected: void paintEvent(QPaintEvent *event) override; void resizeEvent(QResizeEvent*event) override; void mousePressEvent(QMouseEvent *event) override; void mouseReleaseEvent(QMouseEvent *event) override; void mouseMoveEvent(QMouseEvent *event) override; private: struct TumblerWidgetPrivate * d_ptr; }; #endif // TUMBLERWIDGET_H #include "tumblerwidget.h" #include <QPainter> #include <QPaintEvent> #include <QDebug> struct TumblerWidgetPrivate { QStringList list; QVector<QRect> rectVector; QRect centerRect; int currentIndex{0}; TumblerWidget * q_ptr; int itemHeight{60}; bool needResetSize{false}; int isPressed : 1; QPoint pressPos; void findCurrentIndex(); void alignRectangle(); void changeInMoveing(int change_Y); void resetRects(); }; TumblerWidget::TumblerWidget(QWidget *parent) : QWidget(parent) { auto font = this->font(); font.
阿赵UE学习笔记目录
大家好,我是阿赵。
继续学习虚幻引擎的使用。这次将会把一个带动作和贴图的钢铁侠模型,导入的UE的项目中。
1、准备的资源 这里有2个fbx文件,都是带着网格和动画的,模型网格和骨骼是一样的,只是动作不一样。然后这个模型带了4张贴图。
2、导入文件 在UE的工程里面新建一个文件夹,然后把刚才那些文件复制进去,会发现,这些资源并不会显示在UE的内容管理器里面。
但在引擎界面的右下角,会弹出一个提示,说有6项源内容文件变更,这里可以选择导入。
选择导入之后,由于资源里面有FBX文件,所以会弹出FBX的导入选项:
由于我这个模型是带动画的,所以要选择导入动画
由于我这两个FBX文件导出的时候带有的贴图信息重复了,所以会询问是否导入到已有的纹理。
最后,在消息日志里面,会看到这次的导入期间,出现了哪些问题。
等导入过程都结束后,这个时候,在UE的内容浏览器里面,就能看到多了很多东西。
再回到外面的文件看看,会发现多了一些uasset文件。这是因为,不管我们放的原始文件是什么,格式是什么,导入了UE之后,都会统一变成UE的uasset格式的资源。
这一点和Unity引擎的差别还是挺大的,Unity文件导入资源的时候,会生成在资源旁边生成meta文件记录导入数据,并且在Library里面生成对应的资源。这也是Unity很多问题产生的根本原因,在团队协作的时候,很多美术同事由于对meta文件的不了解,经常造成冲突。而UE是直接把使用资源从原始资源里面分离出来,变成了一个独立的uasset文件。
3、导入后的文件 可以看到,导入后生成了几个类型的文件:
1.骨骼网格体
2.动画序列
3.物理资产
4.骨骼
5.纹理
6.材质
对于纹理和材质,我们可能都很容易理解,但前面4个,究竟是什么东西?
把它们拖到场景里面看看:
可以看到,它们几乎是一样的,只有两个动画序列是带着动作,其他都是蒙皮的标准姿势。
这涉及到UE的动画使用机制,这个之后会说。
这里可以逐个文件双击打开看看,会发现不同类型的资源,会有不同的设置:
1.网格体 这个骨骼网格体,是有蒙皮信息的网格体,有点类似于Unity的SkinnedMeshRenderer
我导入了之前从quixel下载的旧书本,因为不带动画,所以它的模型是静态网格体,有点类似于Unity引擎的MeshRenderer
2.动画序列 这里会看到时间轴,和一些与动画相关的东西。这个动画序列,有点类似于Unity引擎的AnimationClip。
3.物理资产 这是针对于该模型的碰撞体了,UE默认会用各种胶囊体把角色想办法尽量包裹起来,不过我们也可以自己进行调节。
4.骨骼 这是该模型的骨骼列表,我们可以进行编辑
5.贴图 贴图导入设置里面也可以进行很多针对贴图的设置
6.材质 UE的材质概念,会和Unity有比较大的区别,这个之后再专门说。打开材质的编辑器,会看到一个可以编辑节点的东西,非常像我之前介绍的Unity的ASE节点编辑器。
4、简单调整效果 导入了之后,由于没有仔细的调整材质,4张贴图也只用了漫反射贴图和法线贴图,所以看起来模型比较的没有质感。
这里我把高光贴图和自发光贴图赋上
模型看起来的质感稍微强了一点
再添加一个后期处理体积,然后开一下Bloom效果:
这个时候,模型稍微有了一点感觉了。
这次的导入模型介绍就先到这里结束。介绍的比较笼统,因为UE的每一种资源类型的导入,细节都非常多,所以很多部分需要以后单独列出来介绍。
MySQL如何查询和筛选存储的JSON数据? 一、背景介绍二、支持的JSON数据类型三、基础数据3.1 创建表3.2 插入 JSON 数据3.3 查询 JSON 数据 四、操作函数4.1 JSON_OBJECT4.2 JSON_ARRAY4.3 JSON_EXTRACT 一、背景介绍 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,在现代应用程序中得到了广泛的应用。处理和存储非结构化数据变得越来越重要。MySQL 是一种常用的关系型数据库管理系统,为了支持非结构化数据的存储和查询,于是 MySQL引入了对JSON数据类型的支持。
MySQL从5.7.8版本开始添加了对JSON的支持,使得我们可以在MySQL数据库中存储和查询JSON格式的数据。本文将介绍如何使用MySQL查询和筛选存储的JSON数据,并提供相应的代码示例。
二、支持的JSON数据类型 从MySQL 5.7.8版本开始,MySQL引入了对JSON数据类型的支持。MySQL可以存储任意的JSON数据,包括对象、数组、字符串等。并且MySQL还对JSON数据类型还提供了一系列的操作函数和运算符,以便于对JSON数据进行查询和操作。
三、基础数据 3.1 创建表 DROP TABLE IF EXISTS `my_table`; CREATE TABLE `my_table` ( `id` int NOT NULL, `message` json NULL, PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; SET FOREIGN_KEY_CHECKS = 1; 上述示例创建了一个名为 my_table 的表,包含一个名为 message 的JSON列。message列可以存储任意的JSON数据。
Flink 中的时间语义 时间语义: EventTime:事件创建时间;Ingestion Time:数据进入Flink的时间;Processing Time:执行操作算子的本地系统时间,与机器无关。不同的时间语义有不同的应用场合,我们往往更关系事件时间Event Time。数据生成的时候就会自动注入时间戳,Event Time可以从日志数据的时间戳timestamp)中提取。
设置 Event Time 我们可以直接在代码中,对执行环境调用setStreamTimeCharacteristic方法,设置流的时间特性。具体的时间,还需要从数据中提取时间戳timestamp。
val env = StreamExecutionEnvironment.getExecutionEnvironment //从调用时刻开始给 env 创建的每一个 stream 追加时间特性 env.setStreamTimeCharacteristic(TimeCharacteristic.EventTime) 乱序数据的影响 当Flink以Event Time模式处理数据流时,它会根据数据里的时间戳来处理基于时间的算子。由于网络、分布式等原因,会导致乱序数据的产生。如上图所示,理想情况与实际情况会存在差异,乱序数据会让窗口计算不准确。解决方案是让窗口等几分钟。
水位线 Watermark 怎么避免乱序数据带来计算不正确?
遇到一个时间戳到达了窗口关闭时间,不应该立刻触发窗口计算,而是等待一段时间,等迟到的数据来了再关闭窗口。Watermark是一种衡量Event Time进展的机制,可以设置延迟触发。Watermark是用于处理乱序事件的,而正确的处理乱序事件,通常用Watermark机制结合window来实现。数据流中的Watermark用于表示timestamp小于Watermark的数据,都已经达到了,因此,window的执行也是由Watermark触发的。Watermark用来让程序自己延迟和结果正确性。
Watermark 的特点: Watermark是一条特殊的数据记录,必须单调递增,以确保任务的事件时间时钟在向前推进,而不是在后退。Watermark与数据的时间戳有关。
watermark 的传递、引入和设定 watermark的传递: 一个Task输入可以并行多个,如下有4个并行度,输出也可能存在多个并行,如下有3个。每个任务Task内部都有一个事件时钟,且每个分区也维护了对应的WM,如下的Partition WM。当事件流流进Partition时会判断新事件流的WM是否大于当前的Partition WM,当大于时就更新Partition的时间戳WM为新流入的WM(取最大值),如下1->2象限Partition WM的变化。同时,如下Task也维护了一个全局的WM表示事件时钟,该值取分区中最小的WM作为输出的时间戳,如下第二象限的输出选择最小的WM=3向下传递。当第二个(横线)分区Partition WM流进来WM=7的事件流时,就会出现第三象限的情景,但是最小的WM还是=3,因此不更新Task全局的WM。当第三个分区Partition WM流进来WM=6的事件流时,就会出现第四象限的情景,此时分区Partition WM的最小值=4,因此Task全局WM就=4。
watermark的引入: Event Time的使用一定要指定数据源中的时间戳。对于排好序的数据,只需要指定时间戳就够了,不需要延迟触发。
import org.apache.flink.streaming.api.windowing.time.Time //同时分配时间戳和水位线 dataStream.assignTimestampsAndWatermarks( //无序数据 Time.milliseconds(1000)=延迟时间 new BoundedOutOfOrdernessTimestampExtractor[SensorReading](Time.milliseconds(1000)) { //提取事件戳 = timestamp * 1000是因为出入的毫秒 override def extractTimestamp(t: SensorReading): Long = { t.timestamp * 1000 } }) 【1】对于排好序的数据,不需要延迟触发,可以只指定事件戳就行了
前言 本文简单的介绍一下vue3框架的搭建和有关vue3技术栈的使用。通过本文学习我们可以自己独立搭建一个简单项目和vue3的实战。
随着前端的日月更新,技术的不断迭代提高,如今新vue项目首选用vue3 + typescript + vite + pinia+……模式。以前我们通常使用Vue2时,使用的是选项式API进行vue项目的开发,当vue3的出现,组合式API进行对项目实例化和构建。另外需要注意vue项目需要nodeJS环境的支持,而vue3需要nodeJS的版本最低是node14.18版本,目前最新是node20的版本(奇数版本一般不用),所以在开发vue3项目之前首先需要安装对应的nodeJS环境。
一、安装Node.js 1- 官网上面我们找到node.js的安装: Node.js
在这里,我下载的是最新版20.10.0
如果要安装其他的版本,页面往下拉找到 Previous Releases 点击进入选择下载安装
下载完成后直接双击进行安装,一直Next下去就好,正常软件的安装就好了。【这里注意一下,安装完成node同时npm也会顺便帮我们给安装好的】
2- 接下来验证是否安装成功
在cmd控制台输入node -v和npm -v(注意中间有个空格)验证是否安装成功。
// 查看node安装的版本: node -v // 查看npm安装的版本: npm -v 输出了对应的版本号就说明Node.js已经安装成功。
二、环境的配置 1- 找到安装的目录,在安装目录下新建两个文件夹【node_global】和【node_cache】
2- 创建完毕后,必须使用管理员身份打开cmd命令窗口
输入①npm config set prefix “你的路径\node_global” (复制你刚刚创建的“node_global”文件夹路径)
npm config set prefix "D:\develop\Node.js\node_global" ②npm config set cache “你的路径\node_cache” (复制你刚刚创建的“node_cache”文件夹路径)
npm config set cache "D:\develop\Node.js\node_cache" 2-配置环境变量
①【此电脑】-单击右键-【属性】-【高级系统设置】-【环境变量】
② 在【系统变量】中点击【新建】
变量名:NODE_PATH
变量值:C:\Program Files\nodejs\node_global\node_modules
然后你就会发现【node_global】里多出了一个【node_modules】文件夹
注意点:【 如果输入变量值之后没有自动创建【node_modules】文件夹,就在【node_global】下手动创建一个【node_modules】文件夹,再复制你创建的【node_modules】文件夹的路径地址到变量值】
系列文章 node.js express框架开发入门教程 express+mongoDB开发入门教程之mongoDB安装express+mongoDB开发入门教程之mongoose使用讲解 文章目录 系列文章前言一、mongoDB安装1.下载2.安装3. 设置全局环境变量4.启动mongoDB服务 二、可视化管理工具 前言 MongoDB是一个基于分布式文件存储的数据库。是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型,可为WEB应用提供可扩展的高性能数据存储解决方案。
传统关系型数据库由数据库、表、记录、3个层次概念组成,而MongoDB由数据库、集合、文档组成。换句话说集合相当表,文档相当于记录,但是没有关系型数据库行列概念,MongoDB是一个面向文档的数据库,数据结构为键值对构成类似json格式的数据。
一、mongoDB安装 1.下载 官网下载
点击 select package - Download下载
2.安装 选择Custom(自定义安装)
点击Browse设置安装目录(记住目录位置后续用到)
默认可视化工具不好用,我们选择安装第三方的
最后install等待安装完成
3. 设置全局环境变量 mongodb加入全局环境变量方便任何目录使用mongod命令
win+i搜索高级系统设置进入系统属性设置窗口 系统变量-找到Path-点击编辑 浏览——选择mongoDB安装路径下bin目录——确定-——确定——确定关闭
4.启动mongoDB服务 打开windows Powershell命令窗口(或cmd窗口)
输入:
mongod --dbpath 数据库路径(数据库默认在mongoDB安装目录\data)
例如安装目录为D:\soft\mongodb,输入命令:
mongod --dbpath D:\soft\mongodb\data 出现如下图,打印一堆东西
在浏览器访问http://localhost:27017出现 It looks like you are trying to access MongoDB over HTTP on the native driver port.
表明数据库服务启动成功
ps:
Powershell命令窗口始终保持未关闭,否则服务将被关闭
二、可视化管理工具 常见的mongoDB可视化管理工具有
Navicat 下载地址 收费Robo 3T 下载地址 免费Studio 3T 收费Mongo Management Studio 免费adminMongo 免费 任选一种安装即可
华为认证的HCIE Datacom(数据通信)是网络工程师们向往的顶级认证之一。对于即将参加HCIE Datacom笔试的考生们,你们一定想知道笔试会考多少道题目。下面将为大家揭秘HCIE Datacom笔试的题目数量,并分享一些优秀的培训机构,帮助大家顺利通过考试。
hcie datacom笔试考多少道题目? HCIE Datacom笔试到底考多少道题目呢?答案是120道。这120道题目涵盖了网络通信领域的各个方面,包括路由、交换、安全、数据中心等。考试时间为140分钟,需要考生在短时间内快速准确地回答问题。
除了选择题外,HCIE Datacom笔试还有30道场景题。这些题目通常会模拟真实的网络环境,要求考生根据实际情况进行分析和解决。每道场景题的分值为2分,因此这也是考试中得分的关键部分。
为了顺利通过HCIE Datacom笔试,考生需要充分了解考试大纲和考试要求,制定合理的备考计划。同时,还需要注重理论与实践的结合,通过大量的练习和实践,提高自己的技能和应试能力。
hcie哪个方向含金量高 数通方向:网络基础设施的核心
数通,作为网络基础设施的重要组成部分,其技术是构建稳定、高效网络的关键。在当今这个高度依赖网络的时代,数通方向的HCIE认证无疑具有极高的含金量。它不仅涵盖了网络架构设计、运维和故障排除等核心技能,还要求持证者持续学习,紧跟网络技术的最新发展。
安全方向:保障网络安全的关键
随着网络安全问题的日益突出,安全方向的HCIE认证受到了越来越多的关注。这个方向的认证专注于网络安全架构设计、安全审计和故障排除等方面,对于保障企业和组织的数据安全具有至关重要的作用。持有安全方向的HCIE认证,意味着持证者具备了解决网络安全问题的专业能力。
云计算方向:云计算时代的必备技能
随着云计算技术的广泛应用,云计算方向的HCIE认证也越来越受到重视。这个方向的认证专注于云计算架构设计、云计算平台搭建和管理等方面,对于从事云计算相关工作的专业人士来说,具有极高的实用价值。通过云计算方向的HCIE认证,持证者将掌握云计算的核心技术和管理方法,为企业提供更高效、更稳定的云计算服务。
存储方向:存储系统稳定与安全的保障
存储系统作为企业数据的重要载体,其稳定性和安全性至关重要。存储方向的HCIE认证专注于存储系统架构设计、存储资源管理和故障排除等方面,对于保障企业数据安全具有不可替代的作用。持有存储方向的HCIE认证,意味着持证者具备了解决存储系统问题的专业能力,能够为企业提供更稳定、更安全的存储服务。
https://blog.csdn.net/qq_34018840/article/details/100884317
前言: 使用size_t可能会提高代码的可移植性、有效性或者可读性,或许同时提高这三者。
在标准C/C++的语法中,只有int、float、char、bool等基本的数据类型,至于 size_t 或 size_type 都是以后的编程人员为了方便记忆所定义的一些便于理解的由基本数据类型的变体类型。
一、实现 size_t是标准C库中定义的,它是一个基本的与机器相关的无符号整数的C/C + +类型, 它是sizeof操作符返回的结果类型,该类型的大小可选择。其大小足以保证存储内存中对象的大小(简单理解为 unsigned int就可以了,64位系统中为 long unsigned int)。通常用sizeof(XX)操作,这个操作所得到的结果就是size_t类型。
类似的还有wchar_t, ptrdiff_t。
wchar_t就是wide char type,“一种用来记录一个宽字符的数据类型”。ptrdiff_t就是pointer difference type,“一种用来记录两个指针之间的距离的数据类型”。 通常,size_t和ptrdiff_t都是用typedef来实现的,如下你可能在某个头文件里找到类似的语句。而wchar_t在一些旧的编译器中可能是用typedef来实现,但是新的标准中wchar_t已经是C/C++语言的关键字,其地位与char、int等同。
typedef unsigned int size_t; 二、为什么需要size_t 在标准C库中的许多函数使用的参数或者返回值都是表示的用字节表示的对象大小,比如malloc(n) 函数的参数n指明了需要申请的空间大小、memcpy(s1, s2, n)的最后一个参数表明需要复制的内存大小、strlen(s)函数的返回值表明了以’\0’结尾的字符串的长度(不包括’\0’)。
或许你会认为这些参数或者返回值应该被申明为int类型(或者long或者unsigned),但是事实上并不是。C标准中将他们定义为size_t。标准中记载malloc、memcpy和strlen的声明:
//malloc() void *malloc(size_t n); //memcpy() void *memcpy(void *s1, void const *s2, size_t n); //strlen() size_t strlen(char const *s); size_t还经常出现在C++标准库中,此外C++库中经常会使用一个相似的类型size_type。
size_t是全局定义的类型;size_type是STL类中定义的类型属性,用以保存任意string和vector类对象的长度string::size_type 制类型一般就是unsigned int, 但是不同机器环境长度可能不同 win32 和win64上长度差别;size_type一般也是unsigned int 三、可移植性问题 早期的C语言并没有提供size_t类型,C标准委员会为了解决移植性问题将size_t引入,从而让程序有良好的可移植性。举例如下:
对于一个可移植的标准memcpy(s1, s2, n)函数,其将s2指向地址开始的n个字节拷贝到s1指向的地址并返回s1。这个函数可以拷贝任何数据类型,所以参数和返回值类型应为void*。而源地址不应被改变,所以第二个参数s2类型应该为const void*。
问题在于我们如何声明第三个参数,它代表了源对象的大小:
一.题目 二.分析与思路 问题要先读懂,并不是,这是错误的,更不是仅仅乘完之后取个位,而是如果大于十,将结果拆开,十位做下一项,个位做下两项,而且此时,计算的项不会因此也向后推动两项,仍然只会向后推一位。也就是说,计算是挨计算的,结果拆开直接加到数列末尾(不管加1个还是2个)。
那我们干脆也是这样,计算和结果的拼接分开来:首先定义作为我们用来计算的位,记作计算位,由于我们要将结果加到末尾,就要有一个指向末尾的量,再定义一个偏移位,使得是最后一位。一开始就是最后一位,我们初始化,这样就是最后一位,在计算出结果后,用赋值,如果遇到计算结果是两位数,那么我们就要一次性加两个数,此时,使得也会多加一位,就仍然是指向最后一位。
注意由于有可能一次循环加两项,所以最后出来的数列很有可能比原来多几项,但是无伤大雅,我们只需输出前n项即可。
最后注意,前两项先读入再放进数列的数组,因为数组长度在后面,只有先读入之后才能创建数组!
三.代码实现 #include<bits/stdc++.h>//万能头 int main() { int a,b,n; scanf("%d%d%d",&a,&b,&n); int num[n]; num[0]=a;num[1]=b;//初始化前两个 int j=0;//推进位 for(int i=2;i+j<n;i++){ int t=num[i-1]*num[i-2];//计算位 if(t<10){ num[i+j]=t; } else if(num[i]>=0){ num[j+i]=t/10; j++; num[j+i]=t%10; }//保证推进位+计算位等于当前数列长度 } for(int i=0;i<n;i++){ printf("%d ",num[i]); } return 0; } 四.评价 这道题已经有难度了,考察了程序员思维和非常规的读入,仔细研究!
目录
一、独立性检验函数
二、相关性分析函数和相关性检验函数
三、绘图函数
四、参考
一、独立性检验函数 1.独立性检验函数
独立性检验是根据频数信息判断两类因子彼此相关或相互独立的假设检验。所谓独立性就是指变量之间是独立的,没有关系。
独立性检验算法:卡方检验、Fisher检验、Cochran-Mantel-Haenszel检验
2.假设检验
假设检验(Hypothesis Testing)是数理统计学中根据一定假设条件由样本推断总体的一种方法。
原假设——没有发生
备择假设——发生了
具体做法:根据问题的需要对所研究的总体作某种假设,记作H0;选取合适的统计量,这个统计量的选取要使得在假设H0成立时,其分布为已知;由实测的样本,计算出统计量的值,并根据预先给定的显著性水平进行检验,做出拒接或接受假设H0的判断。
3.p-value
p-value就是Probability的值,它是一个通过计算得到的概率值,也就是在原假设为真时,得到最大的或者超出所得到的检验统计量值的概率。
一般将p值定位到0.05,当p<0.05时拒绝原假设,p>0.05时,不拒绝原假设。
4.实例1——卡方检验
(1)
library(vcd) mytable <- table(Arthritis$Treatment,Arthritis$Improved) chisq.test(mytable) 解析:chisq.test函数中的参数p默认每个量的概率是1/length(mytable),即所有概率都相等,是独立的。在这种情况下,检验的假设是总体概率是否等于p中的概率。这里结果是p-value值小于0.05,即Treatment与Improved是相关的,不是独立的。
(2)
mytable <- table(Arthritis$Sex,Arthritis$Improved) chisq.test(mytable) 解析:结果显示p-value值大于0.05,即Sex与Improved是独立不相关的,也就是药物没有性别差异。
5.实例2——Fisher检验
Fisher精确检验的原理是边际固定的列联表中行和列是相互独立的。
mytable <- xtabs(~Treatment+Improved,data=Arthritis) fisher.test(mytable) 解析:这里的结果与卡方检验的结果类似。
6.实例3——Cochran-Mantel-Haenszel检验
原理是两个名义变量在第三个变量每一个水平中都是条件独立的。根据定义这个检验需要三个变量。
mytable <- xtabs(~Treatment+Improved+Sex,Arthritis) mantelhaen.test(mytable) 解析:结果得到的p-value值非常小,说明药物治疗和改善情况在性别的每一个水平上不独立。需要注意的是,这里函数中的变量顺序很重要。
二、相关性分析函数和相关性检验函数 1.相关性分析
相关性分析是指对两个或多个具备相关性的变量元素进行分析,从而衡量两个变量因素的相关密切程度。相关性的元素之间需要存在一定的联系或者概率才可以进行相关性分析。简单来说就是变量之间是否有关系。
相关性可能是正相关,也可能是负相关,需要根据相关系数决定。相关系数的大小表示相关程度的强弱。
2.相关性衡量指标
Pearson相关系数、Spearman相关系数、Kendall相关系数、偏相关系数、多分格(polychoric)相关系数和多系列(polyserial)相关系数。
和独立性检验不同,相关性当中每种方法都没有独立的函数,这里计算相关系数都使用同一个函数cor。cor函数可以计算三种相关系数:pearson、kendall、spearman。具体使用哪种方法,可以通过函数中的method参数指定。函数中的use参数表示如何处理缺失值,是不处理还是删除等等。
3.实例(使用数据集state.x77)
cov函数:计算协方差,衡量两个变量的总体误差,在计算偏相关的时候需要用到协方差的结果。
cor(state.x77) 如果只想计算一组变量与另一组变量之间的关系,而不想将两两变量之间都计算一次,cor函数也可以很方便的实现。
x <- state.x77[,c(1,2,3,6)] y <- state.x77[,c(4,5)] cor(x,y) 4.描述相关性的其他指标
如偏相关系数、多分格相关系数和多系列相关系数等等,可以通过R的扩展包来实现。
ggm包中的pcor可以用来计算偏相关系数。偏相关是指在控制一个或多个变量时,剩余其他变量之间的相互关系。
pcor(u,s) #u是一个向量,向量中的前两个值是要计算的相关系数的下标,其余数值为条件变量的下标;s是cov函数计算出来的协方差结果。