焦虑
焦虑… 人与人最怕比较,比较就容易产生焦虑。 为了每个月几千块钱的工资,每天忙前忙后,加班加点,下班还要为了预期几十u的收益继续干,突然有点心累… 朋友打个土狗撸个毛,就能抵过我这一年的收入 当然也知道土狗里面的风险,可能知道了也不一定会冒着风险去尝试,还是格局不够打开… 然而如果不去尝试,不去承担风险,也许只能干着无感的工作,拿着勉强生存的工资度日,这并不是我想要的 选择,永远比努力更重要 有时间多思考思考,如何选择赚钱的方式,也许这波brc20自己认真去研究,也能喝口汤呢?靠人不如靠己,用玩游戏的时间来调查研究,也许会有意想不到的收获
焦虑
焦虑… 人与人最怕比较,比较就容易产生焦虑。 为了每个月几千块钱的工资,每天忙前忙后,加班加点,下班还要为了预期几十u的收益继续干,突然有点心累… 朋友打个土狗撸个毛,就能抵过我这一年的收入 当然也知道土狗里面的风险,可能知道了也不一定会冒着风险去尝试,还是格局不够打开… 然而如果不去尝试,不去承担风险,也许只能干着无感的工作,拿着勉强生存的工资度日,这并不是我想要的 选择,永远比努力更重要 有时间多思考思考,如何选择赚钱的方式,也许这波brc20自己认真去研究,也能喝口汤呢?靠人不如靠己,用玩游戏的时间来调查研究,也许会有意想不到的收获
青年危机
青年危机,何况中年

My First Solidity Contract
contract Faucet { // Give out ether to anyone who asks function withdraw(uint withdraw_amount) public { // Limit withdrawal amount 1 eth = 1 * 10的18次方 require(withdraw_amount <= 100000000000000000); // Send the amount to the address that requested it payable(msg.sender).transfer(withdraw_amount); } // Accept any incoming amount fallback () external payable {} }

My First Solidity Contract
contract Faucet { // Give out ether to anyone who asks function withdraw(uint withdraw_amount) public { // Limit withdrawal amount 1 eth = 1 * 10的18次方 require(withdraw_amount <= 100000000000000000); // Send the amount to the address that requested it payable(msg.sender).transfer(withdraw_amount); } // Accept any incoming amount fallback () external payable {} }
Solidity 学习笔记(一)
pragma solidity ^0.4.19; import "./zombiefactory.sol"; contract KittyInterface { function getKitty(uint256 _id) external view returns ( bool isGestating, bool isReady, uint256 cooldownIndex, uint256 nextActionAt, uint256 siringWithId, uint256 birthTime, uint256 matronId, uint256 sireId, uint256 generation, uint256 genes ); } contract ZombieFeeding is ZombieFactory { address ckAddress = 0x06012c8cf97BEaD5deAe237070F9587f8E7A266d; KittyInterface kittyContract = KittyInterface(ckAddress); // 这里修...
Solidity 学习笔记(一)
pragma solidity ^0.4.19; import "./zombiefactory.sol"; contract KittyInterface { function getKitty(uint256 _id) external view returns ( bool isGestating, bool isReady, uint256 cooldownIndex, uint256 nextActionAt, uint256 siringWithId, uint256 birthTime, uint256 matronId, uint256 sireId, uint256 generation, uint256 genes ); } contract ZombieFeeding is ZombieFactory { address ckAddress = 0x06012c8cf97BEaD5deAe237070F9587f8E7A266d; KittyInterface kittyContract = KittyInterface(ckAddress); // 这里修...
Redis:双写一致性
| 背景Redis作为缓存可以极大的提升应用查询速度,对于一些实时性、精确性要求不高,读多写少的数据可以进行缓存,提高查询速度。 但引入缓存就必然存在数据同步的问题,因为数据缓存在Redis内存中,一旦数据库的数据发生变更,就会造成缓存与数据库数据不一致的问题。| 解决方案先更新缓存,再更新数据库其实对于更新缓存这种操作都是不建议的,为什么呢?因为有些业务场景的缓存并不是直接从数据库中查出来就放入缓存的,可能还要经过一下计算,这中间存在不小的代价,不如直接删除缓存。 或许有人说了,我的缓存就是从数据库中查出来后就放入缓存的,不存在其他计算代价,那我也可以直接更新缓存啊。 这种做法也是不建议的,举个例子,用户对一个数据做了10个写操作,中间并没有任何读取操作,如果每次更新数据库的操作都要更新缓存,那其实这些更新缓存的操作是没有意义的,所以还是建议直接删除缓存,在需要读取的时候再缓存到内存中。先更新数据库,再更新缓存更新缓存的弊端上面已经说清楚了,这种方案都不考虑先删除缓存,再更新数据库先说结论,改方案也可能会出问题:1、用户A更新了数据,先删除redis缓存,缓存删除成功 2、此时...
Redis:双写一致性
| 背景Redis作为缓存可以极大的提升应用查询速度,对于一些实时性、精确性要求不高,读多写少的数据可以进行缓存,提高查询速度。 但引入缓存就必然存在数据同步的问题,因为数据缓存在Redis内存中,一旦数据库的数据发生变更,就会造成缓存与数据库数据不一致的问题。| 解决方案先更新缓存,再更新数据库其实对于更新缓存这种操作都是不建议的,为什么呢?因为有些业务场景的缓存并不是直接从数据库中查出来就放入缓存的,可能还要经过一下计算,这中间存在不小的代价,不如直接删除缓存。 或许有人说了,我的缓存就是从数据库中查出来后就放入缓存的,不存在其他计算代价,那我也可以直接更新缓存啊。 这种做法也是不建议的,举个例子,用户对一个数据做了10个写操作,中间并没有任何读取操作,如果每次更新数据库的操作都要更新缓存,那其实这些更新缓存的操作是没有意义的,所以还是建议直接删除缓存,在需要读取的时候再缓存到内存中。先更新数据库,再更新缓存更新缓存的弊端上面已经说清楚了,这种方案都不考虑先删除缓存,再更新数据库先说结论,改方案也可能会出问题:1、用户A更新了数据,先删除redis缓存,缓存删除成功 2、此时...