当前位置: 首页 > news >正文

【区块链】以太坊

学习视频源链接:
https://www.bilibili.com/video/BV1Vt411X7JF/
本文是根据肖老师的视频进行的笔记记录

bitcoin 1.0 区块链 以太坊 2.0区块链

以太坊 设置了 memory hard mining puzzle ,这造成了asic resistance,
后续 proof of work (工作证明)将改成 proof of stake (权益证明)

Mining Puzzle (挖矿谜题)

还增加了对智能合约的支持: 智能合约 (Smart Contract)
bitcoin : decentralized currency 去中心化的货币 ——取代了政府的发币权力
ethereum : decentralized contract 去中心化的协议 —— 取代了合同权力

btc: satoshi
eth: wei
去中心化的货币有什么好处? 跨过转账 快,手续少,交易费少
为什么有去中心化的合同?如果合同的签署方来自世界各地,用司法维护合同可用性比较困难。
1 eth 账户
bitcoin 为了维护隐私,打一枪换一个地方
Eth 使用了 account- based ledger ,对double spending attack 有天然的防范作用,也不用记录币的来源。
有人篡改账户余额怎么办? 发布交易的时候,不需要说明自己的余额,余额是状态树维护的。
但是对应double spending attack (是付款方不诚实 —— 在bitcoin能出现, eth不能出现)
replay attack (是收款方不诚实,在bitcoin能出现,eth 上需要加一个计数器,交易次数 nonce ,记录这个账户有史以来发布过多少次数)
交易次数 nonce 受到发布者签名保护,

重放攻击 (Replay Attack)

1.1 externally owned account
类似 bitcoin : 用公私钥 控制
组成:
balance 余额
nonce 计数器(应该叫counter)
1.2 smart contract account
合约账户不能主动发起交易
组成:
code
storage

合约: 要求有比较稳定的身份。

  1. Eth 状态树

以太坊的区块链结构与比特币有一些不同。以太坊不是使用简单的二叉树,而是采用了一种称为"区块头"(block header)的结构来连接区块。
在以太坊中,每个区块头包含以下关键字段:
parentHash: 父区块的哈希,这是区块链的主要连接方式
ommersHash: 叔块(uncle blocks)列表的哈希
stateRoot: 状态树(state trie)的根哈希
transactionsRoot: 交易树(transaction trie)的根哈希
receiptsRoot: 收据树(receipts trie)的根哈希
以太坊的区块头哈希(也就是区块的标识符)是通过对上述区块头字段以及其他字段(如nonce, difficulty, number等)进行Keccak-256(也称为SHA-3)哈希计算得出的。
以太坊不像比特币那样使用简单的链式结构,而是使用了一种称为"Patricia Merkle Trie"的数据结构来管理状态、交易和收据。这些"树"的根哈希被包含在区块头中。
在以太坊的代码实现中,可以查看core/types/block.go文件,其中定义了区块头的结构和哈希计算方法。

addr -> state的 映射
地址是 160 bits 40个 16进制的数
区块链删除东西比较难,不合适。

数据结构: trie(branching factory) Trie 数据结构详解
branching factory 0-f
查找效率取决于key的长度
不会出现碰撞(hash肯定会有冲突,但是这个不会)
在健值稀疏时,如果可以合并key,就可以提高效率,引入了 patricia trie (tree) 路经压缩后的 trie

以太坊中的MPT (Merkle Patricia Trie)

为啥要把账户地址弄这么稀疏? 2的 160次方 。
防止碰撞
每次出现一个区块,都要新建一个mtp,但是很多都是共享的。

智能合约是图灵完备的,

Bitcoin与以太坊区块链回滚机制对比
单笔交易回滚

以太坊状态树与RLP编码详解
3. 交易树 & 收据树
交易数和收据树 节点一一对应。 他们都是mpt ,支持查找操作,而且数据结构得到了统一。
mpt 也是一种merkler tree 但是
收据树为了智能合约比较复杂,可以快速查询一些结果

每个交易树和 收据树都是独立的,不会像状态树一样共享节点。
交易树/收据树 可以证明 merkle proof

布隆过滤器在以太坊中的应用
bloom filter 有可能出现 false positive ,可能出现误报,但是不可能出现漏报

bloom filter。不支持删除操作,如果支持删除的话,那个位置不能是0、1 ,需要变成计数器,但是计数器也要防止越界。

先查一下哪个块头在不在bloom filter,如果有的话,再去对交易树,到底有没有。

三棵树的根hash值都在块头里

以太坊运行过程,可以看成是交易驱动的状态机 transaction- driven state machine,这个状态机的状体就是所有账户的状态,就是状态树。交易是什么? 每次发布的区块里包含的交易。
通过执行这些交易,可以通过系统从当前状态驱动到下一个状态。

Btc 也可以认为是transaction- driven state machine ,但是状态是utxo ,发布的区块驱动现在的状态转移到下一个状态。

btc 和以太坊中的状态转移都必须是确定性的,因为所有的矿工都要执行相同的状态转移。

收据就是这个,

区块块头数据结构

这个bloom是由每个收据的bloom 合并得到的

createbllom :合并每个收据的bloom ,生成区块的bloom
logsbloom :生成每个收据的bloom,
bloom9: bloomfilter 中使用的hash 函数,

  1. GHOST 共识协议
    出块速度快的好处是什么? 提高系统的throughput(吞吐) ,降低系统反应时间 。
    bitcoin和 以太坊本质上都是应用层的共识协议,底层运行在 overlay network ,底层运行时间比较长,十几秒出一个新块,且底层运行的网络比较慢,所以分支是常态,这对共识协议有什么挑战呢?
    会出现以下问题:
    挖矿中心化(Mining Centralization)
    中心化偏见 (Centralization Bias)
    如何解决呢? 采用基于ghost 协议的机制
    bitcoin :只有在最长合法链 才有初块奖励,其他的分叉的初块奖励是作废的。

ghost: 挖到矿,这个链条作废了,我们给你一定的补偿(uncle block )
uncle block 得到 7/8 *3 的初块奖励, 一个主链块 最多合并两个uncle block,他能得到2(两个) x 1/32 x 3 + 3 个初块奖励
他合并的是uncle block,挖的时候,已经知道uncle block 的存在, 然后把它们包在 block header 上 。

有没有什么缺陷?
如果矿工处于竞争关系,就不包含
仅能包含叔叔辈的

怎么办呢?
不论资排辈,不管是叔叔辈、爷爷辈、只要能合并就合并,只要给钱就合并。只在当前这个区块在七代内有共同 主线,才能算uncle 为什么这么设计? 如果不限制叔叔的备份,这个实现起来对全节点来说,维护的东西太多了。 而且,设计最多隔着七代,而且奖励对前面的逐步减少,所以鼓励出现分叉之后尽早合并 。不管你包含的是哪一个辈分的叔叔,

以太坊中的区块奖励与燃料费
gas fee (tx fee)—— 比较低 (曾经约为1%)

以太坊中没有规定定期初块奖励 减半。
以太坊中的5个以太币,变成3个亿台币,是为了挖矿难度调整,挖矿炸弹难度大幅下降,然后block 从5->3

以太坊的燃烧机制详解

需要查uncle block是不是符合挖矿难度要求的,符合就认为是合法的叔叔区块。至于这个叔叔区块里面的交易是否合法,我们是不检查的,因为可能和主链交易是冲突的。
以太坊防止分叉攻击的综合机制
只有分叉后的第一个区块才能得到uncle reward,所以降低了分叉攻击的风险。

  1. 挖矿算法
    对于基于工作量证明的区块链系统 来说,挖矿是保证安全的:block chain is secured by mining.

bug bounty。 bitcoin 的 bug bounty 经受了考验,但是bitcoin 有个漏洞是,只有专业设备才能挖到矿,也与最开始bitcoin 论文 one cpu,one vote 背道而驰。
所以bitcoin 出现了很多加密货币,包括以太坊,一个设计原则就是 asic resistance 。
如何实现 这个设计原则呢? 要实现 memory hard mining puzzle
eg. liteCoin , puzzle 基于 scrypt 。开设很大数组,增加对内存读取,特别像普通计算机对内存的需求。
好的:mining 的时候是 memory hard
坏的: 对轻节点 验证时 也是 memory hard。。。。
导致: litecoin真正使用时, 对内存设置不能太大。。。所以实际上litcoin使用时,seed 仅有128k
但是,对冷启动的时候是很有帮助的。早期的设计理念对于聚集人气是很重要的。。。

与bitcoin 的对比:除了出块速度 两分半,是bitcoin 的四倍,

5.2 以太坊怎么设计的?
小的 16 m cache (轻节点用这个就行):从seed 节点运算,把整个数组从前往后填满整个伪随机数。
然后生成一个更大的数组。按照伪随机的原则从小的cache 读取一些元素,

大的 1gb dataset DAG (由小的生成)
以太坊如何生成 Dataset (DAG)
部分伪代码

5.3 转向 pow -> pos
从工作量证明转向权益证明
类似股份制公司。对于asic 的厂商是个严重的威胁。
转入权益证明后就不挖矿了。
以太坊上采用了预挖矿 —— pre-mining 预留一部分给以太坊的开发者。
pre-sale : 类似风投

工作量证明导致asic 才能挖矿,这样不公平?
但是另一个角度来说,通用计算机挖矿可能导致云厂商被租用,导致大面积攻击,也有可能不公平。

6 难度调整算法。

当难度炸弹开始发挥的时候,正好是工作量证明转向权益证明的时机

权益证明不那么完美,所以工作量证明还是继续挖,(想转没法转)但

北京时间9月15日,OKLink数据显示,世界上最活跃的区块链网络以太坊在区块高度15537393触发合并机制,并产出首个PoS区块(高度为15537394),自此以太坊共识正式从PoW转为PoS机制,完成了此次“The Merge”升级。 最新行情数据显示,以太坊报价来到了1630美元,合并升级对其价格没有立刻产生影响。

比特币改进提案 (BIP: Bitcoin Improvement Proposal)

  1. 权益证明 proof of stake

矿工为什么要挖矿? 初块奖励,收益
为什么要给他们这些收益: 为了激励矿工,挖矿去维护区块链
采用权益证明的加密货币,会采用virtual mining
虚拟挖矿(Virtual Mining)详解
infanticiside :如果一个加密货币采用工作证明,如果恶意算力攻击,很容易对初创货币造成infanticiside

pos 必须首先搞到足够多的币,才能发动攻击。所以pos是一个闭环。
有的加密货币 pow和 pos 甚至是结合的。

casper the friendly finality gadset (ffg)

Casper FFG (Friendly Finality Gadget): 以太坊最终性机制详解
区块链中的 Epoch(纪元)详解

包含在finality的交易是不会被推翻的吗?

8 智能合约
智能合约是运行在区块链上的一段代码,代码的逻辑定义了合约的内容
智能合约账户保存了合约当前的运行状态
balance:当前余额
nonce:交易次数
code:合约代码
storage:存储,数据结构是一棵mpt
solidity 是智能合约最常用的语言,语法上与javascript很接近

拍卖的时候,也得上交锁定的保证金。

外部账户如何调用智能合约?
创建一个交易,接受地址为要调用的那个智能合约的地址,data域填写要调用的函数及其参数的编码值。

一个合约调用另一个合约

以太坊智能合约中的函数
以太坊智能合约的创建与运行
以太坊Gas费用详解

evm和 jvm类似,也是加一层虚拟机,为智能合约的运行提供一层同一环境。
evm 寻址空间: 256位

汽油费不够的话, 执行的状态会回滚,但是gas fee 是不退的。
因为担心造成 恶意攻击。

公共数据是免费的。

智能合约中的连锁回调问题

bitcoin 的每一个交易最多1m

但是以太坊的很复杂,所以根据操作复杂度
gaslimit :这个区块所有交易能消耗的上限。
每一个矿工可以对gaslimit 进行微调 1/1024

以太坊交易收据(Transaction Receipt)数据结构

所有的全节点都需要在本地执行转账交易。(分布式共识机制)

所以汽油费是怎么扣的?
三棵树在全节点在本地维护的树
状态树:每个账户的状态(包括余额) : 收到
先挖矿还是先执行? 先执行,没有办法先挖矿。
问题:如果执行完了,没挖到矿,有啥补偿?
汽油费是给挖到矿的。 所有的都是免费的,有点像陪太子读书,挖矿慢的就很吃亏。

就不会出现因为没有汽油费,而不验证的情况? —— 危害区块链安全。(区块链安全——所有全节点独立验证。)
如果他跳过验证步骤,以后就没法挖矿了。因为不验证,本地的三棵树状态就不对了,自己算出来的根hash值别人认为是不对的。
为什么必须执行验证步骤才能更新这三棵树,因为发布出来的东西没有这三棵树的内容,真是块头里面有根hash值,只有通过验证步骤,才能更新三棵树

发布到区块链上的交易是不是全都成功进行的? 如果智能合约执行中出现了错误,要不要也发不到区块链上?
因为要扣掉汽油费,所以需要发布到区块链上,形成共识。

以太坊,就是交易驱动的状态机(共识),因为所有全节点需要到达同一个状态。
所以以太坊不支持多核,除了多线程外,所有可能有不确定性的结果的,都不支持

以太坊的智能合约,不能产生真正意义上的随机数。

多线程的问题:多个核对内存访问顺序不同,执行结果有可能不确定

地址类型:

addr.balance :这个地址的余额
addr.transfer(12345) :当前这个合约,往address上转入的钱

以太坊中的随机性问题
发送eth 的三种方法:

以太坊转账ETH的三种方法及其区别

写完一个智能合约,发布到区块链里,
智能合约的发布与调用流程
写一个solidy 的程序,然后线下宣传,然后

auctionEnd 只有某个人调用,才能执行
没办法设置为拍卖调用结束,自动调用。
但是不存在ended 并发执行,因为没有并发执行
答案:

红框中通过循环退款有问题: 调用时忘记 fullback函数了
code is law : 智能合约的规则是由代码决定的,一旦发布到区块链上就无法修改了——无人能修改规则,但是规则中有漏洞也改不了了。
智能合约如果设计不好,容易拿不出去。
智能合约锁仓是个常用操作。。。
有点类似于不可撤销信托。

需要多次测试,在专门测试网站上测试好了再来。

这个递归重复取钱会持续到什么时候? gas不够、钱包不够、调用栈溢出了。
这个如何修改呢? 先清零,在转账。

重放攻击

decentralized 不等于 distribute

大部分的分布式基本都是为了更快。但是以太坊、比特币要求的是state machine (状态机)
状态机不是为了块,而是为了容错。 最初的状态机应用是 mission critical application

9 . ETH-TheDAO
通用概念:
DAO: decentralized Autonomous Organization
DAC: decentralized Autonomous Corporation .

案例:
The DAO :运行在以太坊上的智能合约
一共存活三个月。
怎么取回收益呢?
splitDAO 拆分完后得到 childDAO,极端的就是一个人的childDAO,然后就是取回
有七天的讨论期
有28天锁定期。
但是问题在哪? splitDAO代码有问题

这个代码先赚钱,然后再把余额减去相应数量,再把调用者账户清零。

应该先把调用者账户清零,再转账

splitDAO代码漏洞分析

10 eth 反思
智能合约其实不智能,就是一个代码合同
智能合约发布后,没办法阻止被调用。
nothing is irrevoable
用脚投票——区块链用挖矿投票

分叉恰恰是去中心化的,存在分叉,恰恰是民主的体现。

decentralized 不等于 distribute

状态机的目的不是比速度快,而是为了容错。
这个不是分布式系统的常态。
不要把智能合约当成是大规模计算/大规模存储的服务,智能合约是用来编写控制逻辑的,只有那些需要在互不信任的实体之间建立信任,才需要智能合约。

  1. 美链 beauty chain

有可能红框部分会栈溢出,导致扣了很少的货币,但是发了正常数量的代币。
所以代币直接通货膨胀了

预防措施: safemath库

12 总结:
应用:

比特币虽然是非中心化的,但是采用比特币这个非中心化支付模式,不一定只能用在非中心化的领域。比方说亚马逊是中心化的,但是可以采用bitcoin

1 . bitcoin 不应该和已有支付方式竞争。
bitcoin : world wide currency
新的加密货币在支付效率已经大大提高了
bitcoin 1m 字节,10分钟一个块
评价支付方式效率好坏,要放到时代背景下看

物理世界中的智能合约 ATM

不是一种最完美的制度,但是是一种进步。

相关文章:

【区块链】以太坊

学习视频源链接: https://www.bilibili.com/video/BV1Vt411X7JF/ 本文是根据肖老师的视频进行的笔记记录 bitcoin 1.0 区块链 以太坊 2.0区块链 以太坊 设置了 memory hard mining puzzle ,这造成了asic resistance, 后续 proof of work &a…...

MCU的工作原理:嵌入式系统的控制核心

MCU的工作原理可以概括为以下几个步骤: 1. 初始化 上电后,MCU从Flash存储器中加载程序代码,并初始化外设和寄存器。 2. 任务执行 根据程序逻辑,MCU执行数据处理、外设控制和通信等任务。通过中断系统实时响应外部事件。 3. 低…...

离线服务器ollama新增qwen2:0.5b模型

离线服务器ollama新增qwen2:0.5b模型 Dify集成ollama前面已经介绍过离线服务器CentOS使用的docker安装的ollama,其中在ollama中已经安装了deepseek-r1:1.5b。目前的需求是需要再安装一个qwen2:0.5b的模型,那么如何安装呢? 1.首先在有网的服…...

Ubuntu20.04安装运行DynaSLAM

目录 一、安装Anaconda 二、相关依赖库安装 1、boost安装 2、Eigen 3安装 3、opencv安装 4、Pangolin安装 三、配置Mask_RCNN环境 四、DynaSLAM编译 五、DynaSLAM运行 一、安装Anaconda 打开以下链接: Index of / 下载和自己系统匹配的安装包。这里下…...

Apache Shiro反序列化漏洞深度剖析:从原理到利用

引言 在Web安全的世界里,反序列化漏洞一直是最危险的漏洞类型之一。今天,我们将深入探讨Apache Shiro框架中的两个著名反序列化漏洞.通过通俗易懂的解释和详细的实例,帮助你理解这类漏洞的本质和危害。 Shiro框架与"记住我"功能简…...

Android UI 组件系列(二):Button 进阶用法

引言 在上一篇博客中,我们介绍了 Button 的基本用法和常见属性,掌握了 Button 的基础知识。然而,在实际开发中,Button 远不止于简单的点击功能,它还可以支持不同的变体、丰富的自定义样式,以及更灵活的状态…...

CentOS-7安装Docker(更新时间:2025-03-12)

CentOS-7安装Docker 该文章记录在CentOS 7上安装Docker的过程和步骤,以及在安装过程中遇到的困难和解决方案。 目录 CentOS-7安装Docker一、环境准备二、安装Docker1.验证服务器是否接入互联网2. 检查CentOS内核版本3.使用root权限登录CentOS。确保yum包更新到最新…...

网络空间安全(31)安全巡检

一、定义与目的 定义: 安全巡检是指由专业人员或特定部门负责,对各类设施、设备、环境等进行全面或重点检查,及时发现潜在的安全隐患或问题。 目的: 预防事故发生:通过定期的安全巡检,及时发现并解决潜在的…...

Kubernetes学习笔记-移除Nacos迁移至K8s

项目服务的配置管理和服务注册发现由原先的Nacos全面迁移到Kubernetes上。 一、移除Nacos 移除Nacos组件依赖。 <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <…...

Docker 构建 nginx-redis-alpine 项目详解

Docker 构建 nginx-redis-alpine 项目详解 一、课程概述 嘿&#xff0c;朋友们&#xff01;今天咱们要深入探索一个超级实用的项目 ——nginx-redis-alpine&#xff01;这个项目可不简单&#xff0c;它包含了好多重要的知识点&#xff0c;像文件目录结构、核心文件的作用及配…...

【教学类-43-26】20240312 数独4宫格的所有可能(图片版 576套样式,空1格-空8格,每套65534张*576小图=3千万张小图)

背景需求&#xff1a; 之前做了三宫格所有可能图片 510小图*12套6120图&#xff0c;所以3分钟就生成了 【教学类-43-25】20240311 数独3宫格的所有可能&#xff08;图片版 12套样式&#xff0c;空1格-空8格&#xff0c;每套510张&#xff0c;共6120小图&#xff09;-CSDN博客…...

ChromeOS 134 版本更新

ChromeOS 134 版本更新 一、ChromeOS 134 更新内容 1. ChromeOS 自助终端&#xff08;Kiosk&#xff09;模式支持隔离 Web 应用&#xff08;Isolated Web Apps&#xff09; 从 ChromeOS 134 开始&#xff0c;自助终端&#xff08;Kiosk&#xff09;模式支持 隔离 Web 应用&a…...

Redis面试篇

目录 Redis面试篇 1.什么是Redis&#xff1f;作用是什么&#xff1f; 2.什么是缓存穿透、缓存击穿、缓存雪崩 2.1缓存穿透 2.2缓存击穿 2.3缓存雪崩 3.redis如何持久化 1. RDB&#xff08;快照存储&#xff09; 2. AOF&#xff08;追加日志&#xff09; 4.Redis 的过…...

C#中通过Response.Headers设置自定义参数

一、基础设置方法 1. 直接添加自定义头 // ASP.NET Core方案 Response.Headers.Append("X-API-Version", "2.3.1"); Response.Headers.Append("Custom-Auth-Token", Guid.NewGuid().ToString());• 底层原理&#xff1a;通过IHeaderDictionary…...

C++标准模板库学习--函数模板返回值参数类型

template<typename T1, typename T2> 2 T1 max (T1 a, T2 b) 3 { 4 return b < a ? a : b; 5 } 6 ... 7 auto m ::max(4, 7.2); // OK, 不过返回类型与第一个参数类型一样 如何解决模板的返回类型 法一&#xff0c;使用decltype进行类型推断&#xff0c;在编译时…...

BUG修复 | 一次钉钉工作台应用远程调试实战(开发者工具)

#1 ℹ️背景故事 最近用户反馈&#xff0c;钉钉工作台的应用无法正常使用&#xff0c;卡在自动登录页面。 天&#xff0c;这是运行10年的老程序&#x1f631;&#xff0c;我当时真是吓得不轻。这老古董完全不记得怎么改了&#x1f602;。 #2 &#x1f41e;开启远程调试 钉钉…...

[目标检测] 训练之前要做什么

背景&#xff1a;训练一个Yolo8模型&#xff0c;在训练之前&#xff0c;数据集的处理是影响效果的关键因素。 Step1 定义规则 什么是人/车&#xff0c;比如人的话可能是站着的人&#xff0c;如果是骑电动车/自行车就不算是人。 Step2 收集数据集 1. 自己标注。如果是自己标…...

一窥DeepSeek开源EPLB项目:揭开技术背后的面纱

摘要 在DeepSeek开源DualPipe项目的同一天&#xff0c;EPLB项目也正式对外公开。EPLB&#xff08;Enhanced Pipeline Balancing&#xff09;并非一蹴而就的奇迹&#xff0c;而是经过长时间的研发与优化。该项目旨在通过改进管道平衡机制&#xff0c;提升系统的稳定性和效率。本…...

达梦数据库中插入导出图片的方法与应用

达梦数据库中插入导出图片的方法与应用 在数据库的实际应用场景中&#xff0c;图片存储是一项常见且重要的需求。以电商平台为例&#xff0c;商品展示图片是吸引消费者的关键元素&#xff1b;而在社交软件里&#xff0c;用户头像更是个人形象的直观体现。针对达梦数据库&#…...

问deepseek: OpenFOAM并行分区后,是如何实现ldumatrix矩阵向量乘法计算逻辑的?

在OpenFOAM中&#xff0c;lduMatrix 是用于存储稀疏矩阵的类&#xff0c;支持并行计算。并行分区后&#xff0c;lduMatrix 的矩阵向量乘法通过以下步骤实现&#xff1a; 1. 矩阵分区 分区&#xff1a;将矩阵和向量分配到多个处理器上&#xff0c;每个处理器负责一部分。接口&…...

linux(ubuntu)中Conda、CUDA安装Xinference报错ERROR: Failed to build (llama-cpp-python)

文章目录 一、常规办法二、继续三、继续四、缺少 libgomp库&#xff08;最终解决&#xff09;在 Conda 环境中安装 libgomp 如果符合标题情况 执行的&#xff1a; pip install "xinference[all]"大概率是最终解决的情况。 一、常规办法 llama-cpp-python 依赖 CMak…...

蓝耘携手通义万象 2.1 图生视频:开启创意无限的共享新时代

在科技飞速发展的今天&#xff0c;各种新奇的技术不断涌现&#xff0c;改变着我们的生活和工作方式。蓝耘和通义万象 2.1 图生视频就是其中两项非常厉害的技术。蓝耘就像是一个超级大管家&#xff0c;能把各种资源管理得井井有条&#xff1b;而通义万象 2.1 图生视频则像是一个…...

04 1个路由器配置一个子网的dhcp服务

前言 这是最近一个朋友的 ensp 相关的问题, 这里来大致了解一下 ensp, 计算机网络拓扑 相关基础知识 这里一系列文章, 主要是参照了这位博主的 ensp 专栏 这里 我只是做了一个记录, 自己实际操作了一遍, 增强了一些 自己的理解 当然 这里仅仅是一个 简单的示例, 实际场景…...

Android studio运行报错处理

没装HAXM报错&#xff1a; Intel HAXM 7.6.5 下载 下载链接&#xff1a; https://www.filehorse.com/download-intel-haxm/54766/download/#google_vignette 运行时弹窗提示&#xff1a;Device manager The emulator process for AVD Pixel_3a_API_34_extension_level_7_x86_6…...

【CXX】6.7 SharedPtr<T> — std::shared_ptr<T>

std::shared_ptr 的 Rust 绑定称为 SharedPtr。 限制&#xff1a; SharedPtr 不支持 T 为不透明的 Rust 类型。对于在语言边界上传递不透明 Rust 类型的所有权&#xff0c;应改用 Box&#xff08;C 中的 rust::Box&#xff09;。 示例 // src/main.rsuse std::ops::Deref; …...

NocoBase 本周更新汇总:双因素身份认证(2FA)

原文链接&#xff1a;https://www.nocobase.com/cn/blog/weekly-updates-202503013 汇总一周产品更新日志&#xff0c;最新发布可以前往我们的博客查看。 本周我们发布了 NocoBase 1.6.0 版本&#xff0c;带来集群模式部署、安全策略优化和迁移管理等多项新特性。 NocoBase …...

【Go学习】04-1-Gin框架-路由请求响应参数

【Go学习】04-1-Gin框架 初识框架go流行的web框架GinirisBeegofiber Gin介绍Gin快速入门 路由RESTful API规范请求方法URI静态url路径参数模糊匹配 处理函数分组路由 请求参数GET请求参数普通参数数组参数map参数 POST请求参数表单参数JSON参数 路径参数文件参数 响应字符串方式…...

DataX的python3使用

datax这东西本身是python2写的&#xff0c;这导致python3&#xff0c;就各种语法报错&#xff0c;问题是&#xff0c;现在的工程都是python3搞的&#xff0c;这就很难受.... 网上找到一篇帖子&#xff0c;可以解决这个问题&#xff1a; 原帖&#xff1a;python3执行datax报错…...

部署项目至服务器:响应时间太长,无法访问此页面?

在我们部署项目到服务器上的时候&#xff0c;一顿操作猛如虎&#xff0c;打开页面..... 这里记录一下这种情况是怎么回事。一般就是服务器上的安全组没有放行端口。 因为我是用宝塔进行项目部署的。所以遇到这种情况&#xff0c;要去操作两边&#xff08;宝塔and服务器所属平台…...

Map<String,Object>中Fastjson提取entrys对应的值

今天在处理接口数据时&#xff0c;需要解析出对方传入的json数据&#xff0c;并需要取出其中一个字段的值来判断&#xff0c;记录下我的步骤&#xff0c;提供参考&#xff1a; 1.json数据准备 {"hrOrgUnit": "00000000-0000-0000-0000-000000000000CCE7AED4&q…...

【毕业论文格式】word分页符后的标题段前间距消失

文章目录 【问题描述】 分页符之后的段落开头&#xff0c;明明设置了标题有段前段后间距&#xff0c;但是没有显示间距&#xff1a; 【解决办法】 选中标题&#xff0c;选择边框 3. 选择段前间距&#xff0c;1~31磅的一个数 结果...

Android,Java,Kotlin 确保线程顺序执行的多种实现方式

在多线程编程中&#xff0c;有时需要确保一个线程必须等待另一个线程执行完毕后再执行。本文将介绍几种常见的方法来实现这一需求&#xff0c;并提供详细的代码示例。 1. 使用 Thread.join() Thread.join() 是最简单直接的方法&#xff0c;它会让当前线程等待目标线程执行完毕…...

AWK 入门教程:强大的文本处理工具

AWK 是一种强大的文本处理工具&#xff0c;广泛用于 Linux/Unix 系统中对文本文件或数据流进行操作。它能够基于条件筛选、统计字段、重新排列数据等。主要特点包括&#xff1a; 2. AWK 的基本语法 2.1 AWK 程序的结构 AWK 程序的结构: awk pattern { action } file 2.2 常…...

【Linux】在VMWare中安装Ubuntu操作系统(2025最新_Ubuntu 24.04.2)#VMware安装Ubuntu实战分享#

今天田辛老师为大家带来一篇关于在VMWare虚拟机上安装Ubuntu系统的详细教程。无论是学习、开发还是测试&#xff0c;虚拟机都是一个非常实用的工具&#xff0c;它允许我们在同一台物理机上运行多个操作系统。Ubuntu作为一款开源、免费且用户友好的Linux发行版&#xff0c;深受广…...

基于yolov8+streamlit实现目标检测系统带漂亮登录界面

【项目介绍】 基于YOLOv8和Streamlit实现的目标检测系统&#xff0c;结合了YOLOv8先进的目标检测能力与Streamlit快速构建交互式Web应用的优势&#xff0c;为用户提供了一个功能强大且操作简便的目标检测平台。该系统不仅具备高精度的目标检测功能&#xff0c;还拥有一个漂亮且…...

安装 Powerlevel10k 及 Oh My Zsh 的使用

1. 简介 Powerlevel10k 是 Oh My Zsh 最流行的终端主题&#xff0c;它不仅美观&#xff0c;还提供 Git 状态显示、命令执行时间、网络状态、Python 虚拟环境指示等 实用功能。相比其他主题&#xff0c;Powerlevel10k 速度更快、可定制性更强。 本教程将详细介绍如何安装 Powe…...

虚拟机下ubuntu进不了图形界面

6.844618] piix4_smbus 0000:07.3: SMBus Host ContrFoller not enabled! 7.859836] sd 2:0:0:0:0: [sda] Assuming drive cache: wirite through /dev/sda1: clean, 200424/1966080 files, 4053235/7864064 blocks ubuntu启动时&#xff0c;卡在上面输出位置 当前遇到的原因…...

从 root 一滴水看 Spring Data JPA 的汪洋大海

&#x1f525; 从 root 一滴水看 Spring Data JPA 的汪洋大海 &#x1f30a; 在 Spring Data JPA 的世界里&#xff0c;Specification 是个让人又爱又恨的家伙 &#x1f4a1;。它能帮你动态构建查询&#xff0c;但那个神秘的 Root<T> root 却总让人摸不着头脑&#xff1…...

二进制安装指定版本的MariaDBv10.11.6

一、官网下载mariadb安装包 Download MariaDB Server - MariaDB.org 找到对应的版本 下载安装包后上传到服务器这里不再赘述。 二、安装二进制包 1、解压安装包 2、查看安装包内的安装提示文档根据提示文档进行安装 # 解压安装包 tar xf mariadb-10.11.6-linux-systemd-x8…...

日志Python安全之SSTI——Flask/Jinja2

ssti的概念和模板引擎介绍等基础知识前面已经学过了&#xff0c;接下来直接进入正题 先了解flask/jinja2&#xff1a; flask&#xff1a; 用python编写的一个框架&#xff0c;集成 Jinja2 模板引擎&#xff08;用于动态生成 HTML 内容&#xff09;。 Flask 的核心组件&…...

梯度下降法以及随机梯度下降法

梯度下降法就是在更新weight的时候&#xff0c;向函数值下降的最快方向进行更新&#xff0c;具体的原理我就不再写了&#xff0c;就是一个求偏导的过程&#xff0c;有高数基础的都能够很快的理解过程。我在我的github里面会一直更新自己学习pytorch的过程&#xff0c;地址为&am…...

从零基础到能独立设计单片机产品,一般需要经历哪些学习阶段?

相信很多人&#xff0c;内心都有“钢铁侠”的幻想&#xff0c;成为能写程序&#xff0c;能设计硬件&#xff0c;能设计结构&#xff0c;能焊接的全能型人才。 上次徐工问我&#xff0c;如果你财富自由了&#xff0c;想去做啥&#xff1f; 我说出来&#xff0c;可能大家都不信&a…...

ORACLE 19.8版本遭遇ORA-600 [kqrHashTableRemove: X lock].宕机的问题分析

客户反馈单机环境的一个数据库半夜突然宕机了&#xff0c;这是一个比较重要的系统&#xff1b;接到通知后分析对应日志&#xff0c;发现ALERT日志中有明显报错&#xff1a;ORA-600 [kqrHashTableRemove: X lock]. 600报错我简单的分为2类&#xff0c;一类不会导致宕机&#x…...

OpenCV实现图像分割与无缝合并

一、图像分割核心方法 1、阈值分割 #include <opencv2/opencv.hpp> using namespace cv; int main() {Mat img imread("input.jpg", IMREAD_GRAYSCALE);Mat binary;threshold(img, binary, 127, 255, THRESH_BINARY); // 固定阈值分割imwrite("binary.…...

《AI浪潮中的璀璨新星:Meta Llama、Ollama与DeepSeek的深度剖析》:此文为AI自动生成

《AI浪潮中的璀璨新星&#xff1a;Meta Llama、Ollama与DeepSeek的深度剖析》&#xff1a;此文为AI自动生成 引言&#xff1a;AI 大模型的群雄逐鹿时代 在科技飞速发展的当下&#xff0c;AI 大模型领域已成为全球瞩目的焦点&#xff0c;竞争激烈程度堪称白热化。从 OpenAI 推出…...

如何搭建个人静态住宅IP:从零开始

你好&#xff01;今天我们将一起探索如何从头开始搭建个人静态住宅IP。无论您是为了远程办公、在线教育还是游戏加速&#xff0c;静态住宅IP都能带给您更稳定的网络体验。 一、准备阶段 1. 明确需求 首先&#xff0c;您需要清楚自己为什么需要静态住宅IP。可能是为了实现远程…...

机器人触觉的意义

机器人触觉的重要性 触觉在机器人领域至关重要&#xff0c;尤其是在自主操作、精细操控、人机交互等方面。虽然视觉和语音技术已高度发展&#xff0c;但机器人在现实世界中的操作仍然受限&#xff0c;因为&#xff1a; 视觉有局限性&#xff1a;仅凭视觉&#xff0c;机器人难…...

【赵渝强老师】达梦数据库的目录结构

达梦数据库安装成功后&#xff0c;通过使用Linux的tree命令可以非常方便地查看DM 8的目录结构。 tree -L 1 -d /home/dmdba/dmdbms#输出的信息如下&#xff1a; /home/dmdba/dmdbms ├── bin 存放DM数据库的可执行文件&#xff0c;例如disql命令等。 ├── bin2 ├── d…...

centos7使用gpu加速的MinerU

https://mineru.readthedocs.io/zh-cn/latest/user_guide/install/boost_with_cuda.html 由于官方只有ubantu的安装教程&#xff0c;并没有基于centos7的&#xff0c;故需要自己修改命令安装并使用。 在运行此 Docker 容器之前&#xff0c;您可以使用以下命令检查您的设备是否…...

反射、反射调用以及修改成员变量,成员方法,构造函数、反射的应用

DAY11.2 Java核心基础 反射&#xff08;第二弹&#xff09; 第一弹请访问链接&#xff1a; 反射&#xff08;第一篇&#xff09; getMethod(String name, Class… parameterTypes)getMethods()getDeclaredMethod(String name,Class… parameterTypes)getDeclaredMethods() …...