🍭 Yongbo' Blog
🌈 🌤 🍩 💡 💭 🍭 ⏰
AI绘画的软件和平台有很多种,不同的平台对AI绘画的限制也不同,现在主要介绍Google的一个开源项目
注意:需要google drive
colab
这个可以通过描述来绘画,害可以设置图片分辨率,图片大小。 英语不好的同学可以通过google翻译来翻译自己想说的话,放在上面
没错,肉眼不可见的速度
生成画作的流程大概分为这几步:
打开程序; 设置图片尺寸 过程图张数 生成图张数等参数 用英文写好描述词(Prompts),格式大致为“画作类型 + 对象(可以有多个)+ 画风设定 + 一些起限定作用的修辞词” 开始运行,等待 AI 渲染画作。 执行run all
我给 AI 写的描述词:“A beautiful painting of a starry night, shining its light across a sunflower sea by James Gurney, Trending on artstation.”
扩展 还有其他推荐的网站/app,有兴趣的可以试试
https://www.chinaz.com/2022/0825/1437982.shtml
在操作系统提供的内核线程之上,Go搭建了一个特有的两级线程模型。goroutine机制实现了M:N的线程模型,goroutine机制是协程(coroutine)的一种实现,golang内置的调度器,可以让多核CPU中每个CPU执行一个协程。
调度器是如何工作的 有了上面的认识,可以开始真正的介绍Go的并发机制了,先用一段代码展示一下在Go语言中新建一个“线程“(Go语言中称为Goroutine)的样子:
1 2 3 4 5 //1用go关键字加上一个函数(这里用了匿名函数) //调用就做到了在一个新的“线程”并发执行任务 go func() { }() 理解goroutine机制的原理,关键是理解Go语言scheduler的实现。
Go语言中支撑整个scheduler实现的主要有4个重要结构,分别是M、P、G、Sched,前三个定义在runtime.h中,Sched定义在proc.c中。
MPG:都是go语言运行时系统抽象出来的概念和数据结构的对象,包括内存分配器,并发调度器,垃圾收集器等等(可以理解为Java的jvm)
M结构是Machine,系统线程,它由操作系统管理的,goroutine就是跑在M之上的;M是一个很大的结构,里面维护小对象内存cache(ncache)、当前执行的goroutine、随机数发生器等等非常多的信息。
M是Machine的缩写 ,利用系统调用创建的操作系统线程实体,作用是执行G当中包装的并发任务,可以理解为一个M代表一个内核线程,它是由操作系统来管理的。goroutine就跑在M上面的。
G是goroutine实现的核心结构,它包含了栈,指令指针,以及其他对调度goroutine很重要的信息,例如其阻塞的channel。
G是goroutine的缩写,go关键字+函数就可以创建G的对象,是对一个并发任务的封装,可以认为是用户态的线程,属于用户资源,对操作系统是透明的,属于轻量级资源。可以大量创建,上下文切换成本比较低
P结构是Processor,(逻辑)处理器,它的主要用途就是用来执行goroutine的,它维护了一个goroutine队列,即runqueue。Processor是让我们从N:1调度到M:N调度的重要部分。
P是Processor的缩写,主要是管理G对象,并且为G在M上运行提供一些本地化的资源,主要用途就是用来执行goroutine的font>。P可以理解为执行一个go代码片段所必需的资源,所以有一些资料会叫上下文环境。Processor的数量是在启动时被设置为环境变量GOMAXPROCS的值,或者通过运行时调用函数GOMAXPROCS0进行设置。Processor数量固定意味着任意时刻只有GOMAXPROCS个线程在运行go代码.
Sched:结构就是调度器,它维护有存储M和G的队列以及调度器的一些状态信息等等。
闭包 闭包就是一个函数和与其相关的引用环境组合的一个整体
闭包就是返回的匿名函数+匿名函数以外的变量sum
感受:匿名函数中引用的那个变量会一直保存在内存中,可以一直使用
函数在创建的时候会创建两个对象,一个是函数对象本身,另一个是作用域链对象 函数在调用的时候会创建一个执行环境对象(活动对象)
返回值是内存函数(实际是内层函数地址) 内层函数涉及到方法中的i 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 import "fmt" func main() { f := getSum() fmt.Println(getSum()) fmt.Println(f(100)) fmt.Println(f(2)) fmt.Println(f(3)) } func getSum() func(int) int { var sum = 0 return func(num int) int { sum = num+sum return sum } } //===-== 0x49aa70 100 102 105 注意 1、中使用的变量/参数会一直保存在内存中,所以会一直使用—>意味着闭包不可滥用
mac/linux好用的工具
crontab 1、Linux和Mac下操作crontab都是一致的
2、配置文件都在/etc/crontab下,如果没有就创建。
3、crontab参数
crontab [-u user] file crontab [-u user] [ -e | -l | -r ]
-u user:用来设定某个用户的crontab服务; file:file是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab。如果在命令行中没有指定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将它们载入crontab。 -e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。 -l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。 -r:从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。 -i:在删除用户的crontab文件时给确认提示。 4、配置环境变量,打开open ~/.bash_profile文件添加以下内容;
EDITOR=vim crontab -e;export EDITOR
5、crontab的文件格式
1 eg:* * * * * sh /xxxxx/davecron.sh >>/xxxxx/davecron.log 查看当前的cron job 1 2 sudo crontab -l 35 22 * * * /Users/xxx/shell/openSafari.sh 添加cron job 1 2 3 4 5 6 7 8 9 10 11 sudo crontab -e 35 22 * * * /Users/xxx/shell/openSafari.
SmartContract
中文名称智能合约
了解智能合约签,现需要了解以太坊。
以太坊中重要概念 账户(Account)
包含地址,余额和随机数,以及可选的存储和代码的对象。
普通账户(EOA) ,存储和代码均为空
合约账户(Contract),包含存储和代码
地址(Address)
般来说,这代表一个EOA或合约,它可以在区块链上接收或发送交易。更具体地说,它是ECDSA公钥的keccak散列的最右边的160位。
交易(Transaction)
可以发送以太币和信息
向合约发送的交易可以调用合约代码,并以信息数据为函数参数
向空用户发送信息,可以自动生成以信息为代码块的合约账户
gas
以太坊用于执行智能合约的虚拟燃料。以太坊虚拟机使用核算机制来衡量 gas的消耗量并限制计算资源的消耗。
以太坊特点 以太坊是“世界计算机”,这代表它是一个开源的、全球分布的计算基础设施
执行称为智能合约(smart contract)的程序
使用区块链来同步和存储系统状态以及名为以太币(ether)的加密货币,以计量和约束执行资源成本
本质是一个基于交易的状态机(transaction-based state machine)
以太坊平台使开发人员能够构建具有内置经济功能的强大去中心化应用程序(DApp);在持续自我正常运行的同时,它还减少或消除了审查,第三方界面和交易对手风险
名词解释 ERC: Ethereum Request for Comments的缩写,以太坊征求意见.些EIP被标记为ERC,表示试图定义以太坊使用的特定标准的提议
EOA: External Owned Accoupt,外部账户。由以太坊网络的人类用户创建的账户
Keccak256:以太坊中使用的密码哈希函数。Keccak256被标准化为 SHA-3
Nonce:在密码学中,术语nonce用于指代只能使用一次的值。以太坊使用两种类型的随机数,账户随机数和POW随机数
Smart Contract etherscan.io可以看到现在主网络上的合约交易记录。
Remix 合约开发工具Remix(基于浏览器的Solidity在线编辑器)
合约都是solidity编写的,有必要学习一下solidity语法。
VS code 下载Remix插件
http://remix.ethereum.org/ 在线
docker启动
1 docker run -p 10330:80 remixproject/remix-ide:latest 其他合约开发工具 MetaMask - 浏览器插件钱包
Geth - 以太坊客户端(go语言)
web3.js - 以太坊 javascipt API库
区块链上的东西本来就是概念上的东西偏多,这偏都是一些概念类比性的东西,有兴趣可以看看。待更新…
区块链 区块链是什么?
(1)数据角度:一种几乎不可能被更改的分布式数据库。
“分布式”特点:
1、数据的分布式存储:存储在所有参与记录数据的节点中, 并非集中存储在中心化的机构节点中。
2、数据的分布式记录:系统参与者共同维护。去中心化数据库
三、区块链技术涉及关键点
(1)去中心化
(2)去信任
(3)集体维护
(4)可靠数据库
(5)时间截
(6)非对称加密
区块链概述 区块链定义: 区块链 是一个共享的、不可篡改的账本,旨在促进业务网络中的交易记录和资产跟踪流程。 资 产 可以是有形的(如房屋、汽车、现金、土地),也可以是无形的(如知识产权、专利、版权、品牌)。 几乎任何有价值的东西都可以在区块链网络上进行跟踪和交易,从而降低各方面的风险和成本。
**为什么说区块链很重要:**业务运行依靠信息。 信息接收速度越快,内容越准确,越有利于业务运营。 区块链是用于传递这些信息的理想之选,因为它可提供即时、共享和完全透明的信息,这些信息存储在不可篡改的账本上,只能由获得许可的网络成员访问。 区块链网络可跟踪订单、付款、帐户、生产等信息。 由于成员之间共享单一可信视图,因此,您可以端到端地查看交易的所有细节,从而赋予您更大的信心和机会,并提高效率
区块链的关键元素 分布式账本技术 所有网络参与者都有权访问分布式账本及其不可篡改的交易记录。 使用此共享账本,交易仅需记录一次,从而消除了传统业务网络中典型的重复工作。
不可篡改的记录 在交易被记录到共享账本之后,任何参与者都不可以更改或篡改交易。 如果交易记录中 有 错误,则必须添加新交易才能撤消该错误,这两个交易随后都是可视的。
智能合同 为了加快交易速度,区块链上存储了一系列自动执行的规则,称为 “智能合约” 。 智能合约可以定义公司债券转让的条件,包括要支付的旅行保险条款等等。
区块链的运作方式 每个交易发生时,都会被记录为一个数据"块" 这些交易表明资产的流动,资产可以是有形的(如产品),也可以是无形的(如知识产权)。 数据块可以记录您的首选信息项:谁、什么、何时、何地、多少甚至条件 — 例如食品运输温度。
每个块都连接到位于它前后的块 随着资产位置的改变或所有权的变更,这些数据块形成了数据链。 数据块可以确认交易的确切时间和顺序,通过将数据块安全地链接在一起,可以防止任何数据块被篡改或在两个现有数据块之间插入其他数据块。
交易被封闭在不可逆的链中:区块链 每添加一个数据块都会加强前一个块的验证,从而增强整条区块链。 这使得区块链能够防止篡改,提供不可更改的关键优势。 这不但消除了恶意人员进行篡改的可能性,而且还建立了您和其他网络成员可以信任的交易账本。
区块链的优点 **需要变更的地方:**运营人员经常在重复保存记录和第三方验证上浪费精力。 记录保存系统容易受到欺诈和网络攻击的影响。 有限的透明度会减慢数据验证速度。 随着物联网的到来,交易量激增。 所有这些问题都会影响开展业务的速度和最终的盈利,因此我们需要更好的方法。 进入区块链。
更高的信任度 使用区块链,作为会员制网络中的一员,您可以确信自己收到的数据是准确的、及时的,并且您的机密区块链记录只能与您特别授予访问权限的网络成员共享。
更出色的安全性 所有的网络成员都需要就数据准确性达成共识,并且所有经过验证的交易都将永久记录在案,不可篡改。 没有人可以删除交易,即使是系统管理员也不例外。
更高的效率 通过在网络成员之间共享分布式账本,您可以避免在记录对账上浪费时间。 为了加快交易速度,区块链上存储了一系列自动执行的规则,称为"智能合约"。