JavaScript基础
JavaScript 是一门动态的,弱类型的,解释型的,基于对象的脚本语言。 动态: 程序执行的时候才会确定数据类型。 静态: 书写代码的时候提前确定数据类型。 弱类型: 数据类型可以自动转换。 强类型: 数据类型无法自动转换。 解释型: 边解释,边运行,开发效率更高。 编译型: 编译后运行二进制文件。 脚本: 一般都是可以嵌在其它计算机语言当中执行。 ◆javaScript 的运行环境(解释器): 浏览器,如Chrome浏览器中的V8引擎。 Node.js。 ◆浏览器端的 JavaScript 组成部分: 基本代码语法, ECMAScript,ECMA指定。 BOM, 浏览器提供的API,W3C指定。 DOM, 文档提供的API,W3C指定。 ◆其他特点: 指令结束符(语句结束符)是分号或者换行。 严格区分大小写。 开始JavaScript 在 HTML 中使用的三种方式: ① 行内式(内联脚本) 1<元素 onclick="代码.." ondblclick="代码.."></元素> ② 内嵌式...
HTML+CSS
开始开发工具:VsCodectrl + z 撤销ctrl + s 保存alt + shift + f 代码自动格式化Emmet快捷键: https://docs.emmet.io/abbreviations/syntax/在本地开发,在服务器共享。 HTML5W3C 官网: https://html.spec.whatwg.org/multipage/MDN: https://developer.mozilla.org/zh-CN/docs/Web/HTML 基础标签排版标签 标签名 语义和功能 单标签还是双标签 h1 ~ h6 一级标题~六级标题 双标签 p 段落 双标签 hr 分隔线 单标签 br 换行 单标签 pre 原格式显示 双标签 div 无语义,用于页面布局 双标签 文本标签 标签名 语义和功能 单标签还是双标签 ins 表示增加的内容,默认添加下划线 双标签 del 表示删除的内容,默认添加删除线 双标签 sub 下标字 双标签 sup 上标字 双标签 em 强调,默认表现斜体字 双标签 stron...
Web应用开发(Java)
概述Web 应用架构示意图◆Web 浏览器:就是你电脑 / 手机上的 Chrome这些,是用户的 “窗口”。用户在浏览器里输入网址、点击按钮,就会向服务器发出 “请求”,等服务器处理完再接收 “响应” 并展示内容。◆红色防火墙:它是整个系统的 “保安”,所有进出的网络流量都要经过它检查。它会拦截恶意攻击(比如黑客的非法请求),只把合法的请求放行到后面的 Web 服务器,同时也保护内部服务器不被直接暴露在公网上。◆Web 服务器:网站服务器,负责接收浏览器的请求,然后把请求分发给对应的 Web 应用来处理。处理完后,再把结果打包成 “响应” 发回给浏览器。◆Web 应用:是具体干活的 “办事员”,比如处理用户登录、生成动态页面、计算课程成绩等。它们会根据需要去数据库里读写数据,完成业务逻辑。◆数据库:是系统的 “档案库”,用来存储用户信息、课程数据、交易记录等。Web 应用需要数据时就来这里查,有新数据时也存在这里。 浏览器和服务器之间一次完整的 HTTP 请求 - 响应过程访问过程:通过浏览器,请求IP地址或域名,返回网页(html代码)。Web服务器:一种软件或硬件系...
区块链安全基础
概述信息安全,没有公认和统一的定义,但国内外对信息安全的论述大致可以分成两大类:◆一是指具体的信息系统的安全;◆二是指某一特定信息体系(比如一个国家的金融系统、军事指挥系统等)的安全。 网络安全,从本质上讲就是网络上信息的安全,即网络上信息保存、传输的安全,指网络系统的硬件、软件及其系统中的数据受到保护,不受偶然和或者恶意的原因而遭到破坏、更改、泄露,系统连续可靠正常地运行,网络服务不中断。 网络安全应包含4层含义:◆运行系统安全,即信息处理和传输系统的安全。◆网络上系统信息的安全,包括用口令鉴别、数据加密等。◆网络上信息传播的安全,即信息传播后的安全。◆网络上信息内容的安全,本质是保护用户的利益和隐私。 信息安全或网络安全的特征:◆保密性:保密性是指信息不泄漏给非授权的个人、实体和过程,或供其使用的特性。◆完整性:完整性是指信息未经授权不能被修改、不被破坏、不被插入、不延迟、不乱序和不丢失的特性。对网络信息安全进行攻击其最终目的就是破坏信息的完整性。◆可用性:可用性是指合法用户访问并能按要求顺序使用信息的特性,即保证合法用户在需要时可以访问到信息及相关资产。◆可控性:可控性是指...
数据库
概述描述事物的符号记录称为数据,其特点是数据与其语义是不可分的。 四个基本概念◆数据库(Database,DB):长期储存在计算机内有组织、可共享的大量数据的集合。◆数据库管理系统(Database ManagementSystem,DBMS):位于用户与操作系统之间的一层数据管理软件。它和操作系统一样是计算机的基础软件,也是一类大型复杂的软件系统。◆数据库系统(DataBaseSystem,DBS):引入数据库后的计算机系统。一般是指由数据库、数据库管理系统(及其应用开发工具)、应用系统和数据库管理员组成的存储、管理、处理和维护数据的系统。 数据库系统架构图(图源:March) 数据库的本质:它是由DBMS创建的逻辑数据集合,没有安装DBMS的话,电脑中不存在可被管理的数据库;只有通过安装的MySQL/Oracle这种软件,才能在电脑的存储介质(硬盘、内存)上创建、存储和维护数据库。 一句话:先装MySQL(DBMS),再用它创建数据库,数据库是DBMS运行后产生的产物,而非电脑自带的内容。 数据管理技术数据管理是指对数据进行分类、组织、编码、存储、检索和维护。...
密码学
基础概念研究信息加密和解密方法的科学与技术统称为密码学,是研究信息保密与破译的基本规律为对象的学科。 ◆经典密码学:密码分析学、密码编码学。◆现代密码学:密码分析学、密码编码学、密钥管理学。 经典密码学主要以实现信息的保密性为目的,现代密码学不仅可以实现信息的保密性,而且还可以实现信息的真实性、完整性、可用性、可审查性和可靠性等。 现代密码学最重要的原则是“一切秘密寓于密钥之中”。即算法是公开的,但密钥必须是保密的。当加密完成后,可以将密文通过不安全的渠道发送给收信人,只有拥有密钥的收信人才可以对密文进行解密(即反变换得到明文)。 保密通信模型:香农 -> 概率统计观点 -> 通信系统 12信源->编码器->信道->解码器->接收者干扰源->信道 保密通信系统:(不赘述) 在私钥密码体制和公钥密码体制下,保密通信模型的差别主要体现在加密密钥的分发或传递上。私钥密码体制下,接收方和发送方的共享密钥必须通过安全信道传递。而在公钥密码体制下,发送方只需要认证所使用的加密密钥是接收方的。 柯克霍夫原则:密码分析者->密码算法-x->...
Java
开始项目里面放模块,模块里放包。main方法快捷键 psvm+enter: 12public static void main(String[] args) { } 控制台原样输出 sout+enter: 1System.out.println(); ctrl+y:删除一行ctrl+d:复制一行注释:单行//,多行/*+enter 文档注释 无论主方法main在哪个类里,只要文件中存在public类,文件名就由那个类决定。 Java概述诞生:Java是1995年6月由Sun公司引进到我们这个世界的革命性的编程语言。1990年Sun公司成立了由James Gosling领导的开发小组,开始致力于开发一种可移植的、跨平台的语言Java。 Java,一门很好的面向对象语言,其平台无关性让Java成为编写网络应用程序的佼佼者,而且Java也提供了许多以网络应用为核心的技术,使得Java特别适合于网络应用软件的设计与开发。 Java特点:简单、面向对象、平台无关、多线程、动态。 简单:C++需要手动管理内存,而Java采用自动垃圾回收机制。 面向对象:通过封装数...
合约测试
Testing Smart Contract with Ethers and Mocha:[https://hardhat.org/docs/guides/testing/using-ethers]Hardhat-Ethers-Chai[https://hardhat.org/docs/plugins/hardhat-ethers-chai-matchers]Ether.js V6 文档:[https://docs.ethers.org/v6/]Hardhat Ethers:[https://hardhat.org/docs/plugins/hardhat-ethers] 开始写测试代码其实就是在做科学实验。每一个测试用例(it)都遵循AAA模式: Arrange (准备):准备环境、部署合约、准备测试账户。 Act (执行):调用合约的某个函数(比如 mint 或 transfer)。 Assert (断言):验证结果是否符合预期(比如余额变了吗?报错了吗?)。 MochaMocha是一个测试框架。提供了一个结构来组织和运行你的测试代码。它定义了测试的骨架。 1234567...
Rust
学习网站:【官方文档】[https://doc.rust-lang.org/book/title-page.html]【HOH共学营】[https://github.com/gpteth/lets-rust/blob/main/tutorial/02_memory_management.md] 开始先搭建环境,太久远了,这里不赘述了,可去官网下载。以下命令最好在GitBash里面执行。创建新项目: 1cargo new <hello-rust> 有可能: 1cargo new --lib my_lib 编译并运行: 12cargo buildcargo run 基础编程概念关于变量一旦将值绑定到名称,就无法更改该值。 1234567fn main() { let x = 5; println!("The value of x is: {x}"); //错误! x = 6; println!("The value of x is: {x}");...
Foundry框架
Foundry 的优势是完全使用 Solidity 进行开发与测试,且Foundry 构建、测试的执行速度非常快。 对比HardHat 维度 Foundry Hardhat 开发语言 纯 Solidity(测试、部署、脚本都用 Solidity) JavaScript/TypeScript(测试、脚本)+ Solidity(合约) 学习曲线 对 Solidity 开发者更友好,上手快 需掌握 JS/TS,适合全栈背景开发者 测试效率 原生支持多线程,测试速度极快 基于 Node.js,测试速度较快但略逊于 Foundry 生态集成 生态较新,工具链集成度高(铸币、Fuzz 测试等) 生态成熟,插件丰富(如 Hardhat Etherscan、Hardhat Deploy) 部署流程 部署脚本用 Solidity 编写,简洁直接 部署脚本用 JS/TS,灵活性高 Fuzz 测试 原生支持,内置模糊测试工具 需依赖第三方插件(如hardhat-fuzz) 调试体验 调试功能较弱,主要依赖日志输出 内置调试器,支持断点、单...









