【Java学习笔记-并发编程】Treiber stack 详解
最近在看 Java 并发编程的相关源码。发现了一个词 —— Treiber stack。这篇文章介绍一下什么是 Treiber stack 以及其核心算法 CAS。
【Java学习笔记-并发编程】关键字 volatile 详解
最近项目中,写到了很多多线程的东西。其中有个多任务轻型阻断器的实现,牵出了 volatile 关键词的应用,顺便学习一下原理和相关的基础知识。
【日常问题】离线手动全局安装npm包
前言在做一个新目的时候要npm安装包@graphprotocol/graph-cli,但是发现科学上网也连不到库,于是就向同事要了依赖,自己研究了一下,全局手动安装了。安装前提需要安装好npm要安装的包。安装步骤查看本机npm -g的包路径npm root -g将包复制到该路径下执行命令安装包,以本例为例:npm i -g @graphprotocol/[email protected]安装成功注意一定要执行步骤三,不然执行npm list -g --dept
【合约开发工具】基于 hardhat 新建一个 Solidity 项目
安装新建 npm 项目npm init新建 hardhat 项目npm install --save-dev hardhatnpx hardhat添加 typescript支持npm install --save-dev ts-node typescriptnpm install --save-dev chai @types/node @types/mocha @types/chai添加必要项目mv hardhat.config.js hardhat.config.
【合约开发工具】如何使用 hardhat 在本地测试合约
前言本文介绍如何使用 hardhat 在 solidity 项目中本地测试智能合约,并介绍一些简要的写法。基本配置在本地测试与部署前,需要认识与安装一些 hardhat 的插件。
【Solidity 开发】访问可见性 - internal & private & external & public
本文按照访问可见范围由大到小,简要介绍以上4( internal、private、external、public)个关键字。
【Solidity 开发】合约函数返回 struct 或 struct 数组
在solidity 0.4 时代,是不支持返回struct的。但现在solidity已经进入了0.8的版本,这个版本是支持直接返回struct与struct array的,以下为具体做法。
【合约检测工具】使用 Slither 检测合约中的 “坏味道”
在合约开发中,重中之重是合约的安全。在开发中,我时常会疑惑,除了自己写的单元测试,还有没有别的方法可以像 sonar 一样检测 solidity 中的 “坏味道” 呢?咱们不用收费的 MythX ,可以试一试开源的 Silther。...
【合约开发工具】合约的开源与验证
前言在我们部署完合约后,可以将合约的源码上传到各链的浏览器上开源并验证,一来是方便前后端调试代码,二来是方便其他人查看合约代码。ETH 的合约建议在 Remix 进行验证;BSC 的合约建议在 Hardhat 里进行验证;OKC 的合约建议在 Explorer 里进行验证;Explorer验证在 Scan 里先注册,申请 API key 。点击浏览器上的 Verify and Publish,按配置操作。一定要注意 Compile Type 以及 编译器版本 的选择。如果 constr
BroadcastReceiver牛刀小试
Broadcast直译广播,我们举个形象的例子来帮我理解下BroadcastReceiver,记得以前读书的时候,每个班级都会有一个挂在墙上的大喇叭,用来广播一些通知,比如,开学要去搬书,广播:"每个班级找几个同学教务处拿书",发出这个广播后,所有同学都会在同一时刻收到这条广播通知,收到,但不是每个同学都会去搬书,一般去搬书的都是班里的"大力士",这群"大力士"接到这条广播后就会动身去把书搬回可是!嗯,上面我们都是接收系统的广播,系统发我们收,我们不能老这么被动,总得主动点是吧!下面我们就来看下怎么实现!
Socket学习网络基础
Client收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给Server,Server检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了。:可以理解为数据通道,主要功能是如何在不可靠的物理线路上进行数据的可靠传递,改层作用包括:物理地址寻址,数据的成帧,流量控制,数据检错以及重发等!
深入理解AQS之ReentrantReadWriteLock详解
1.ReentrantReadWriteLock介绍应用场景:读读操作不存在并发问题,读写,写写,写读场景下需要互斥,需要一把锁锁住需要的资源。针对上述场景java实现了reentrantReadWriteLock,并且在java中实现了锁降级(写锁到读锁),公平与非公平选择,可重入。设计一把锁如何实现:继承AQS,实现抽象方法tryRelease和tryAcquire方法,其他方法可以使用AQS已经封装好的。管程:synchronizedAQS:cas+同步队列(获取锁失败阻塞)
今日推荐
周排行