区块链知识体系fisco-bcos实战

news2024/11/14 18:45:20

文章目录

  • 一、区块链发展概述及类型和特征
    • 1.1 区块链的概念
    • 1.2 区块链的起源
    • 1.3 区块链的发展历程
    • 1.4 区块链的类型和特征
  • 二、区块链的常见技术架构
    • 2.1 技术架构
    • 2.2 核心技术
  • 三、区块链的常见应用
    • 3.1 生态环境监测
    • 3.2 医疗废弃物追踪解决
    • 3.3 区块链在电子政务领域的应用
    • 3.4 在物流与物流金融上的应用
    • 3.5 在大数据物联网结合的应用
  • 四、区块链的应用系统价值和趋势
    • 4.1 区块链应用系统的价值
    • 4.2 区块链的核心商业模式
    • 4.3 区块链的发展趋势和挑战
  • 五、密码学基础
    • 5.1 对称密码体系
    • 5.2 公钥密码体系
    • 5.3 哈希算法
  • 六、区块链中的英文专业术语
  • 七、FISCO BCOS 实战
    • 7.1 搭建单群组网络FISCO BCOS联盟链
    • 7.2 搭建星型拓扑网络FISCO BCOS联盟链
    • 7.3 搭建并行多组网络FISCO BCOS联盟链
    • 7.4 RPC 调用和配置及使用控制台
    • 7.5 区块链扩容和退出
    • 7.6 基于mysql分布式存储区块链
    • 7.7 基于控制台理解账户和角色
    • 7.8 共识异常模拟
    • 7.9 WeBASE管理平台

节选自b站内容和公司内部培训内容,并通过fisco-bcos实战,可初步了解区块链的一些技术体系

一、区块链发展概述及类型和特征

1.1 区块链的概念

在这里插入图片描述

在这里插入图片描述

区块链是黑科技,其实并没有发明新技术,是一系列技术的组合。区块链:信任的机器.

在这里插入图片描述在这里插入图片描述

1.2 区块链的起源

在这里插入图片描述

1.3 区块链的发展历程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.4 区块链的类型和特征

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、区块链的常见技术架构

2.1 技术架构

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.2 核心技术

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

三、区块链的常见应用

3.1 生态环境监测

在这里插入图片描述

3.2 医疗废弃物追踪解决

在这里插入图片描述

3.3 区块链在电子政务领域的应用

在这里插入图片描述

3.4 在物流与物流金融上的应用

在这里插入图片描述

3.5 在大数据物联网结合的应用

在这里插入图片描述

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、区块链的应用系统价值和趋势

4.1 区块链应用系统的价值

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.2 区块链的核心商业模式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.3 区块链的发展趋势和挑战

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
挑战
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

五、密码学基础

5.1 对称密码体系

对称密码是一种加密方法,其中使用相同的密钥进行加密和解密。这种加密方法的优点是速度快,适合大量数据的加密。但是,它的主要缺点是密钥的分发和管理非常困难,因为每个通信双方需要共享一个唯一的密钥,而且这个密钥必须保密。如果密钥被泄露,那么加密的数据就可能被破解。常见的对称加密算法有DES、AES、RC4等。谍战片中的密码

在这里插入图片描述

5.2 公钥密码体系

公钥密码体系是一种加密方法,其中使用一对密钥进行加密和解密。这对密钥由一个公钥和一个私钥组成,公钥用于加密数据,私钥用于解密数据。这种加密方法的优点是密钥的分发和管理相对容易,因为公钥可以公开,而私钥只需要保密。此外,它还提供了数字签名的功能,可以验证消息的来源和完整性。但是,它的主要缺点是加密和解密的速度相对较慢,不适合大量数据的加密。常见的公钥加密算法有RSA、ECC等

在这里插入图片描述

5.3 哈希算法

哈希算法是一种将任意长度的数据映射为固定长度的输出的算法,通常用于数据的完整性验证和密码存储。哈希算法的主要特性是:

确定性:相同的输入总是产生相同的输出。
快速计算:对任意给定的数据能够快速计算出其哈希值。
抗碰撞性:难以找到两个不同的输入,使得它们有相同的输出。
雪崩效应:输入的微小变化会导致输出的巨大变化。
哈希算法在密码学中有着广泛的应用,例如在数字签名、数据完整性验证和安全存储密码等领域。常见的哈希算法有MD5、SHA-1、SHA-256等

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

六、区块链中的英文专业术语

4a3e48f8b53c260ca10d824b.png)

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

七、FISCO BCOS 实战

FISCO BCOS 2.0 技术文档
https://fisco-bcos-documentation.readthedocs.io/zh-cn/latest/
WeBASE 技术文档
https://webasedoc.readthedocs.io/zh-cn/latest/index.html
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7.1 搭建单群组网络FISCO BCOS联盟链

 openssl version
 wget --version
 sudo apt install -y openssl curl
 mkdir fisco && cd fisco
 curl -#LO https://github.com/FISCO-BCOS/FISCO-BCOS/releases/download/v2.11.0/build_chain.sh && chmod u+x build_chain.sh
 ls0f -i:30300-30303
 lsof -i:20200-20203
 lsof -i:8545-8548
 bash build_chain.sh -l 127.0.0.1:4 -p 30300,20200,8545
pkill -9 fisco-bco
./nodes/127.0.0.1/start_all.sh 
ps -ef | grep -v grep | grep fisco-bcos
ss -ntlp |grep fisco-bcos
# 查看节点连接数
tail -f nodes/127.0.0.1/node0/log/log*  | grep connected
# 查看节点共识
tail -f nodes/127.0.0.1/node0/log/log*  | grep +++

7.2 搭建星型拓扑网络FISCO BCOS联盟链

区块链是一种分布式数据库技术,它通过去中心化的方式记录和验证交易信息。在区块链网络中,节点是参与网络的计算机或服务器,它们共同维护着整个区块链的状态。

机构通常指的是组织、公司或政府等实体,它们可以作为区块链网络中的参与者,拥有自己的节点,并参与到区块链的交易和共识过程中。这些机构可以通过区块链技术实现去中心化的数据交换、智能合约执行等功能。

群组是指一组具有共同目标或兴趣的人或实体,他们可以在区块链网络上形成一个子网络,共享信息和资源。群组可以是公开的,任何人都可以加入;也可以是私有的,只有特定的成员才能加入。群组的成员可以通过共识机制来达成共识,共同管理和维护群组内的区块链网络。

总的来说,区块链节点是区块链网络的基本组成部分,机构和群组则是区块链网络中的参与者和组织形式。通过这些参与者和组织,区块链可以实现去中心化的信任机制,确保数据的安全性和可靠性。

在这里插入图片描述

vim ipconf
......
127.0.0.1:1 A 1,2,3
127.0.0.1:1 B 1,
127.0.0.1:1 C 2
127.0.0.1:1 D 3
......
#p2p channel jsonrpc
bash build_chain.sh -f ipconf -p -30300,20200,8545
# 启动
bash nodes/127.0.0.1/start_all.sh 
# 查看进程
ps -ef | grep -v grep | grep fisco-bcos
# 查看节点连接数
tail -f nodes/127.0.0.1/node0/log/log*  | grep connected
# 查看节点共识
tail -f nodes/127.0.0.1/node0/log/log*  | grep +++

7.3 搭建并行多组网络FISCO BCOS联盟链

# -o 指定生成文件所在目录
bash build_chain.sh -l 127.0.0.1:4 -o multi_nodes -p 30300,20200,8545
bash multi_nodes/127.0.0.1/start_all.sh
# 查看节点共识
tail -f nodes/127.0.0.1/node0/log/log*  | grep +++
# 将群组2加入区块链.
# nodes/127.0.0.1/node0/conf/
# 并行多组区块链中,每个群组的ini文件相同,但genesisi中【group.id】不同,
# 减少路径输入麻烦,先进入路径
cd multi_nodes/127.0.0.1
# cp
cp node0/conf/group.1.genesisi node0/conf/group.2.genesisi
sed -i "s/id=1/id=2/g" node0/conf/group.2.genesisi
cp node0/conf/group.2.genesisi node1/conf/group.2.genesisi
cp node0/conf/group.2.genesisi node2/conf/group.2.genesisi
cp node0/conf/group.2.genesisi node3/conf/group.2.genesisi

cp node0/conf/group.1.ini node0/conf/group.2.ini
cp node0/conf/group.2.ini node1/conf/group.2.ini
cp node0/conf/group.2.ini node2/conf/group.2.ini
cp node0/conf/group.2.ini node3/conf/group.2.ini

stop_all.sh && start_all.sh
tail -f nodes/127.0.0.1/node0/log/log*  | grep +++

在这里插入图片描述

方法2

vim ipconf
.........
127.0.0.1:4 A 1,2
........
bash build_chain.sh  -o multi_nodes -f ipconf -p 30300,20200,8545

国密版FISCO BCOS联盟

bash build_chain.sh -l 127.0.0.1:4 -p 30300,20200,8545 -g -G

7.4 RPC 调用和配置及使用控制台

RPC(Remote ProcedureCall)是一种远程过程调用协议,它允许一台计算机上的程序调用另一台计算机上的程序的子程序或函数。
RPC的主要目的是让分布式系统中的各个节点能够像调用本地函数一样调用其他节点上的函数或服务

#创建一个 JSON-RPC 请求对象,包含以下字段: 
#jsonrpc: 协议版本,通常为 "2.0"。 
#method: 要调用的远程方法的名称。
#params: 传递给远程方法的参数(可选)
#2.0启用了多账本机制,本规范要求传入的第一个参数必须为群组ID。 
#id: 请求的唯一标识符(可选,但推荐使用)
#|jq:将curl命令的输出通过管道传递给jq命令进行处理。
#jq是一个轻量级且灵活的命令行JSON处理器,用于解析、过滤和格式化JSON数据。
# 获取节点版本信息
# 8545为node0的信息
curl  -X  POST --data '{"jsonrpc": "2.0",
"method": getClientVersion,"params":[1],"id":1}' 
http://127.0.0.1:8545 |jq
# 获取节点连接信息
getPeers
# 查看区块高度
getBlockNumber
# 查看区块信息
getBlockByNumber

配置和使用控制台

tar -xf consle.tar.gz
tree consle
#将节点sdk证书拷贝到控制台conf下
#-r 文件和文件夹
cp nodes/127.0.0.1/sdk/*  consle/conf/
cp -r nodes/127.0.0.1/sdk/* console/conf/
#将conf下config-example.toml文件重命名config.toml
#-n 不覆盖存在的
cp consle/conf/config.toml consle/conf/config.toml
cp -n console/conf/config-example.toml console/conf/config.toml
ls consle/conf/
# 启动控制台
bash console/start.sh

在这里插入图片描述

在FISCO-BCOS区块链系统中,有三种不同类型的节点,它们在网络中各自承担着不同的角色和功能。具体包括:

记账节点(共识节点):记账节点是网络中参与共识算法,并负责验证交易、打包区块的节点。这些节点通过共识算法来确认交易的有效性,并将有效的交易打包成区块添加到区块链上。记账节点的数量可以根据实际需求进行配置,但必须至少为一个。
观察节点:观察节点不参与共识流程,但它们可以同步区块信息和交易数据,起到观察和备份的作用。这种类型的节点适用于只需要查看链上数据,而不需要参与共识的场景。
群组节点:群组节点则是承载某个群组内多个相关联组织的节点集合,这些组织可能共享某些业务数据或需要在同一群组内进行协同工作。群组节点有助于实现跨组织的数据共享和业务合作。
在这里插入图片描述

#查看群组共识节点列表
getSealerList
#查看群组观察节点列表
getOberverList
#查看连接p2p节点的nodeID列表
getNodeIDList

# 查看node0的nodeid
cat fisco/nodes/127.0.0.1/node0/conf/node.nodeid
# 获取节点连接信息中有id和端口
getPeers

#设置共识节点
addSealer c1bd77e188cd07。。。。。。
#设置观察节点
addObserver c1bd77e188cd07。。。。。。
#设置游离节点
removeNode c1bd77e188cd07。。。。。。

# 验证游离节点 quit
vim console/conf/config.toml
.........
peers=["127.0.0.1:20201"]
.........
# 启动控制台游离节点登录失败
bash console/start.sh

在这里插入图片描述

7.5 区块链扩容和退出

# -c 指定机构证书及私钥所在路径
# -o 输出到指定文件夹,其中node4/conf 中会保存机构agency新签的发证和私钥
bash gen_node_cert.sh -c nodes/cert/agency -o nodes/127.0.0.1/node4
tree nodes/127.0.0.1/node4
# 准备节点配置文件
cd nodes/127.0.0.1
cp node0/conf/group.1.genesis node0/conf/group.1.ins node4/conf/
cp node0/config.ini node0/start.sh node0/stop.sh node4/
vim node4/config.ini
 .........
 [rpc]
 channel_listen_port=20204
 jsonrpc_listen_port=8549
 [p2p]
 node.4=127.0.0.1:30304
 .........
 # 将新节点加入区块链
 bash node4/start.sh
 tail -f node4/log/log*|grep connected
 # 将节点加入群组
 cat node4/conf/node.nodeid
 bash ../../console/start.sh
 #控制台输入
 addSealer  node.nodeid
 #查看
 getSealerList

#退出
removeNode node.nodeid
quit
#分号注释掉
vim node4/config.ini
..........
[p2p]
 ;node.1=127.0.0.1:30301
 ;node.2=127.0.0.1:30302
 ;node.3=127.0.0.1:30303
 ;node.4=127.0.0.1:30304
........
bash node4/stop.sh && bash node4/start.sh
# connect=0 退网成功
tail -f node4/log/log*|grep connected

7.6 基于mysql分布式存储区块链

# 安装nodes console后,安装配置mysql
apt install msyql-server mysql-client  libmysqlclient-dev
service mysql start 
systemctl start mysql.services
mysql -uroot -p
#用户密码存储在mysql数据库的user表中,对应的字段是authentication_string。authentication_string字段中存储的是经过加密的密码,不应直接对其进行修改。如果需要修改用户密码,请使用alter user命令进行修改
>ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
# 注意需要加WITH mysql_native_password
> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
>quit
vim /etc/msyql/my.cnf
.........
 22 [mysqld]
 23 max_allowed_packet = 1024M
 24 sql_mode = STRICT_TRANS_TABLES
 25 ssl = 0
 26 default_authentication_plugin = mysql_native_password
.........
> show variables like 'max_allowed_packet';
vim nodes/127.0.0.1/node0/conf/group.1.ini
.........
 19 [storage]
 
 21     type=mysql
 
 35     db_ip=127.0.0.1
 36     db_port=3306
 37     db_username=root
 38     db_passwd=123456
 39     db_name=db_node0
........
# 启动
bash nodes/127.0.0.1/start_all.sh
#使用控制台操作curd
bash consele/start.sh
create table t_demo(name varchar,it_name varchar,it_id varchar primary key(name))
insert into t_demo(name,it_name,it_id) values (fruit,orage,1)

7.7 基于控制台理解账户和角色

# 脚本生成账户
# 生成pem格式存储的账户私钥
bash  ./console/get_account.sh
# 从私钥文件计算账户地址
bash ./console/get_account.sh -k account/*.pem
# 生成pkcs12格式存储的私钥
bash  ./console/get_account.sh -p
# 从私钥文件计算账户地址
bash ./console/get_account.sh -P account/*.12

在这里插入图片描述

newAccount
newAccount p12 123456
listAccount
loadAccount ...*...
# 按某用户启动
bash console/start.sh 1 console/account/ecdsa/*.pem
bash console/start.sh 1 -p12 console/account/ecdsa/*.p12

在这里插入图片描述

角色

#增加委员
grantCommitteeMember id
listCommitteeMember id
#撤销委员
revokeCommitteeMember id
#修改权重
updateCommitteeMemberWeight id 2
#查询权重
queryCommitteeMemberWeight id
#查询阈值
queryThreshold
#mysql中查询
>select*from _sys_table_access_;
#新增运维账户
grantOperator id
listOperator
revokeOperator id
# 部署合约
deploy HelloWorld
# 调用合约
call HelloWorld contractaddress get

在这里插入图片描述

黑白名单

#
cat nodes/127.0.0.1/node1/conf/node.node.id
vim nodes/127.0.0.1/node0/config.ini
# 黑名单能够拒绝与指定节点的配置,
# 白名单不配置,可与任意节点连接
#混合设置会在白名单的基础上拒绝黑名单里的节点连接
.........
[certificate_blacklist]
crl.0=
crl.1=
[certificate_whitelist]
crl.0=
.........
bash nodes/127.0.0.1/node0/stop.sh && start.sh
curl  -X  POST --data '{"jsonrpc": "2.0",
"method": "getPeers","params":[1],"id":1}' 
http://127.0.0.1:8545 |jq
# 或设置控制台只运行连接node0

vim console/conf/config.toml
.........
 21 [network]
 22 #peers=["127.0.0.1:20200", "127.0.0.1:20201"]    # The peer list to connect
 23 peers=["127.0.0.1:20200"]    # The peer list to connect
.........
bash console/start.sh
getPeers
##SDK白名单设置
# 不通过
vim nodes/127.0.0.1/node0/conf/group.1.ini
.......
73 [sdk_allowlist]
77       public_key.0=b8acb51b9fe84f88d70646be36f31c52e67544ce56faf3dc8ea4cf1b0ebff0864c6b218fdcd9cf9891ebd414a995847911bd26a77of4293000    85f37e1131f36
.......
bash nodes/127.0.0.1/node0/scripts/reload_sdk_allowlist.sh
# 通过
cat nodes/127.0.0.1/node0/sdk/sdk.publikey
vim nodes/127.0.0.1/node0/conf/group.1.ini
bash nodes/127.0.0.1/node0/scripts/reload_sdk_allowlist.sh

7.8 共识异常模拟

关闭node2,node3后共识异常

在这里插入图片描述
将异常点改为观察点

# 关闭node0,node1
# 分别在node0 ,和node1上修改观察者。
update _sys_consensus_ set type='observer' where id ='10006'
# 重新再启动node0,node1后可以执行合约
#node2,node3恢复后,在node2,node3上将改为共识节点

在这里插入图片描述

7.9 WeBASE管理平台

#节点前置服务部署
unzip webase-front.zip
cp ../nodes/127.0.0.1/sdk/* ./conf/
bash start.sh
bash status.sh
tail -f log/WeBASE-Front.log |grep success
http://localhost:5002/WeBASE-Front
# 管理部署
unzip webase-deploy.zip
cd webase-deploy
vim common.properties
........
配置数据库
........
python3 deploy.py installALL
localhost:5800

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2068649.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端宝典十三:node网络详解Tcp/IP/Http及网络安全防御

讨论网络相关的问题前,我们首先看一下从浏览器输入 URL 到显示前端页面的流程,首先从TCP的应用层、传输层、网络层、数据链路层开始看: 一、应用层、传输层、网络层、数据链路层 以下是从浏览器输入 URL 到显示前端页面的流程顺序解析&…

android 实现简易音乐播放器

音乐App 源代码 : 简易音乐APP源代码 1、简介 一个简易的音乐APP,主要练习对四大组件的应用。感兴趣的可以看看。 播放界面如下: 歌曲列表界面如下: 项目结构如下: 接下来将对代码做详细介绍: 2、Musi…

class_3:数据类型/交互模式/ input输入

获取字符串长度 #获取字符串长度 s "hello world!" print(len(s)) print(len("hello")) #根据索引取字符 print(s[0]) print(s[11]) #type a 10 b True c 1.0 d None #空值类型 print(type(a)) print(type(b)) print(type(c)) print(type(d))命令行模…

大型物流运输无人机技术详解

随着科技的不断进步和电子商务的蓬勃发展,大型物流运输无人机作为未来物流体系的重要组成部分,正逐步从概念走向实际应用。这类无人机以其超大的载重能力、高效的运输效率和广泛的覆盖范围,为解决远距离、大批量货物运输难题提供了创新方案。…

【Datawhale AI夏令营第五期】 CV方向 Task01学习笔记 YOLO方案baseline

【Datawhale AI夏令营第五期】 CV方向 Task01学习笔记 YOLO方案baseline 第四期给我的体验相当不错,于是我又冲动报名了第五期。这次比第四期的AIGC和大模型应用都要上强度。 CV这边进度拉得快,Task01都发布了。一看,好家伙,老朋…

微知-PCIe配置空间中哪个字段表示设备类型?有哪三种类型?哪个字段表示厂商ID

pcie配置空间早期是246字节。由头部和设备相关部分两个region组成。其中头部64B,设备相关192B。 其中64B是header叫做预定义头部,存储设备基本信息和通用控制部分,比如说pcie的venderid就存在byte0和byte1。这个vendor id是PCI SIG组织统一管…

【mars3d-heatLayer】热力图在相机视角缩放时按新的raduis进行渲染

地图放大 地图缩小 代码: import * as mars3d from "mars3d"export let map // mars3d.Map三维地图对象// 需要覆盖config.json中地图属性参数(当前示例框架中自动处理合并) export const mapOptions {scene: {center: { lat: 25…

cloud compare 学习利用CC代码加快插件开发与总结(三)

建议看过前面的文章后,再开始本文的学习 cloud compare二次插件化功能开发详细步骤(一)_cloudcompare插件开发-CSDN博客 cloud compare PCA插件开发详细步骤(二)附代码-CSDN博客 本文完成一个点云变换的插件&#x…

HighConcurrencyCommFramework c++通讯服务器框架 :TCP粘包解决

服务器设计:原则综述: 通用服务器框架:游戏,网络交易,通讯框架,聚焦在业务逻辑上; 收发包:格式问题提出; 例子:第一条命令出拳【1abc2】,第二条…

Linux高性能服务器编程 总结索引 | 第1章:TCP/IP协议族

现在 Internet(因特网)使用的主流协议族是 TCP/IP 协议族,它是一个分层、多协议的通信体系。本章简要讨论 TCP/IP 协议族各层 包含的主要协议,以及它们之间是 如何协作完成网络通信的 1、TCP/IP 协议族体系结构 以及主要协议 1.1…

区块链变革:Web3时代的数字化前沿

随着科技的飞速发展,数字化正在深刻影响着我们生活的方方面面。区块链技术作为一种新兴的去中心化技术,正成为推动这一变革的重要力量。特别是在Web3时代,区块链的作用不仅仅局限于加密货币,而是延伸到了各个领域,成为…

代码随想录训练营 Day37打卡 动态规划 part05 完全背包理论基础 518. 零钱兑换II 377. 组合总和 Ⅳ 卡码70. 爬楼梯(进阶版)

代码随想录训练营 Day37打卡 动态规划 part05 一、完全背包理论基础 有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品都有无限个(也就是可以放入背包多次),求解将哪些物品装…

Postman【使用总结】--SpringBoot的Controller规范【重修】

【企业规范!!!】 【响应数据】

提升学术论文质量的智能助手:ChatGPT

提升学术论文质量的智能助手:ChatGPT 前言ChatGPT的核心功能ChatGPT的优势具体应用案例局限性与最佳实践结语 前言 在这个知识爆炸的时代,学术研究已成为推动社会进步和科技发展的重要力量。每一篇论文的撰写,都是对人类知识边界的一次探索和…

攻防世界-web题型-2星难度汇总-个人wp

command_execution 典型的SSRF,先用命令找一下flag在哪里 xff_referer 修改一下xff和refere就可以了 php_rce 经典的thinkphp框架,闭着眼睛拿工具梭 这款工具无法直接getshell换一个 拿蚁剑直接连 Web_php_include 先分析代码 while (strstr($page,…

搜索二叉树进阶之AVL树

前言 二叉搜索树(BST)是一种基础的数据结构,能够高效地进行搜索、插入和删除操作。然而,在最坏的情况下,普通的BST可能会退化成一条链表,导致操作效率降低。为了避免这种情况,出现了自平衡二叉…

C语言-输出菱形

题目要求&#xff1a; 输出以下图形 程序&#xff1a; #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> int main() {int i, j;for (i 0; i < 4; i){for (j i 1; j < 4; j)printf(" ");for (j 0; j < 2 * i 1; j)printf("*");…

虽迟但到:Midjourney推出网页端并限时免费!

大家好&#xff0c;我是木易&#xff0c;一个持续关注AI领域的互联网技术产品经理&#xff0c;国内Top2本科&#xff0c;美国Top10 CS研究生&#xff0c;MBA。我坚信AI是普通人变强的“外挂”&#xff0c;专注于分享AI全维度知识&#xff0c;包括但不限于AI科普&#xff0c;AI工…

【最长公共子序列】

题目 代码 #include <bits/stdc.h> using namespace std;const int N 1010; int f[N][N]; char A[N], B[N]; int main() {int n, m;cin >> n >> m;cin >> A1 >> B1;for(int i 1; i < n; i){for(int j 1; j < m; j){if(A[i] B[j]) f[…

Linux三剑客-sedawk

一、三剑客-sed命令 1、格式 sed 找谁干啥 文件 找谁:条件&#xff0c;匹配哪一行&#xff0c;哪些行. 干啥:动作&#xff0c;增删改查. #显示文件的第3行 sed -n 3p /etc/passwd选项说明-n取消默认输出-p查找-rsed支持扩展正则-i修改文件内容&#xff0c;这个选项放在最后…