Dapp
发表于|更新于|区块链
|总字数:127|阅读时长:1分钟|浏览量:
HelloWorld合约

1 | // SPDX-License-Identifier: MIT |

发行代币
在闲鱼,淘宝上买些测试币,也可以通过水龙头获取(只是有点要求和门槛,不如直接买),这里我买了两笔
新建合约文件

1 | // SPDX-License-Identifier: MIT |




相关推荐

2022-11-19
Excel
行和列隐藏或显示行和列在电子表格中隐藏或取消隐藏列,以仅显示需要查看或打印的数据 📌 不影响计算 隐藏列 选择一个或多个列,然后按 Ctrl 选择不相邻的其他列。 右键单击选定的列,然后选择隐藏。📌 两列之间的双线表示隐藏了一个列。 ✅ 参考:微软官方文档 取消隐藏列 选择隐藏列的相邻左列和相邻右列。 右键单击选定的列,然后选择“取消隐藏”。 或双击隐藏列所存在的两列之间的双线。 自定义列的格式比如这里要设置列的格式是 年月日星期几 默认的日期和时间是没有符合要求的 自定义设置 📌 这样设置之后,比如在单元格里值设置的是 2021-01-02实际上显现的会是 2021年1月2日 星期几 ✅ 参考:微软官方文档

2022-11-19
DataGrip
查看ddl和复制为insert语句 显示设置数据库颜色 显示树状结构 显示表的commnet 显示数据库DDL最后一次更新的时间 同步/比较两个表的数据结构用command 选中 两个想要比较的表,然后在其中一个表,选择 只显示不一样的字段 显示全部字段,绿色表示不一样 也可以比较两个库,还是刚才的方法,选中两个库,再比较 相当于Navicat的这个功能 复制功能标记1,选中表,Command + c 就是复制的表名 标记2,选中库,Command + c 就是复制的库名 右边的选项,让你复制出的SQL格式是什么样的,比如复制出insert的sql,或者update的sql,或者导出xml 或者,多条记录复制出一条sql语句,简单使用可以尝试 build-in: sql inserts sql updates scripted: sql-insert-multirow Sql-insert-statements 导出的功能使用mysqldump,导出整个库 Mac电脑需要安装,mysql-client 1234brew install mysql-client# 二进制目录(需要手动复制到上图的路径):/opt/homebrew/opt/mysql-client/bin/mysqldump 导入SQL要在库名上点右键 这个功能类似于
2026-05-26
macOS IDEA部署Docker到本机Docker Desktop
说明在macOS上使用IDEA开发项目时,可以直接通过IDEA的Run配置,把项目打包成Docker镜像,然后部署到本机的Docker Desktop里运行. 这个方式适合本地调试Docker环境,不用每次手动执行docker build和docker run. 前提条件 macOS已经安装并启动Docker Desktop IDEA已经安装Docker插件 项目里有可用的Dockerfile Java项目已经可以正常打包,比如Maven或Gradle打包成功 整体流程IDEA部署服务到本机Docker Desktop,本质上就是把手动命令配置到IDEA的Run里. 手动执行时一般是这样: 123mvn clean package -DskipTestsdocker build -t my-app:latest .docker run --name my-app -p 8080:8080 my-app:latest 配置到IDEA之后,点击Run就可以自动完成打包,构建镜像,启动容器. 配置Docker连接打开IDEA设置: Settings | Build, Execution, Deployment | Docker 点击+,选择Docker for Mac. 然后点击Test Connection,看到连接成功就说明IDEA已经能连接到本机Docker Desktop. 准备DockerfileSpring Boot项目可以在项目根目录准备一个简单的Dockerfile. 123456789FROM eclipse-temurin:17-jreWORKDIR /appCOPY target/*.jar app.jarEXPOSE 8080ENTRYPOINT ["java", "-jar", "app.jar"] 如果项目端口不是8080,这里的EXPOSE和后面的端口映射都要换成实际端口. 配置Run打开: Run | Edit Configurations 点击+,这里常用有两个选择: Docker | Dockerfile适合项目里有Dockerfile,需要IDEA先构建镜像,再运行容器的场景. 它会执行类似下面的流程: 12docker build -t my-app:latest .docker run --name my-app -p 8080:8080 my-app:latest 也就是说,代码改了以后,可以让IDEA重新build镜像,再启动容器. Spring Boot项目,前端项目,或者自己写了Dockerfile的项目,一般选这个. Docker | Docker Image适合镜像已经存在,只需要运行这个镜像的场景. 它会执行类似下面的流程: 1docker run --name mysql-test -p 3306:3306 mysql:8 比如运行mysql,redis,nginx,nacos这类现成镜像,或者已经手动build好了镜像,只想让IDEA帮忙启动容器,就选这个. 简单记: 12有Dockerfile,需要构建镜像 -> Docker | Dockerfile已有镜像,只想运行容器 -> Docker | Docker Image Dockerfile配置项如果选择Docker | Dockerfile,关键配置如下: 配置项 说明 Server 选择前面配置好的Docker for Mac Dockerfile 选择项目里的Dockerfile Context folder 一般选择项目根目录 Image tag 镜像名称,比如my-app:latest Container name 容器名称,比如my-app Run built image 勾选,表示构建完成后直接运行镜像 Bind ports 端口映射,比如本机8080映射容器8080 Environment variables 按需配置环境变量 常用配置可以这样填: 123456Server: Docker for MacDockerfile: ./DockerfileContext folder: 项目根目录Image tag: my-app:latestContainer name: my-appBind ports: 8080:8080 Before launch如果是Spring Boot项目,建议在Before launch里加打包任务. Maven项目可以配置: 1clean package -DskipTests Gradle项目可以配置: 1bootJar 这样点击Run时,IDEA会先打包项目,再根据Dockerfile构建镜像并启动容器. 启动后验证启动成功后,可以在Docker Desktop里看到容器. 也可以在终端检查: 1docker ps 如果服务端口是8080,可以访问: 1http://localhost:8080 如果需要看日志,可以在IDEA的Run窗口查看,也可以执行: 1docker logs -f my-app 常见问题端口被占用修改Bind ports里的本机端口. 比如容器内部还是8080,本机可以改成18080. 118080 -> 8080 容器需要访问宿主机服务macOS的Docker Desktop里,容器访问宿主机可以使用: 1host.docker.internal 比如容器里的程序要连接本机MySQL,可以把数据库地址配置成: 1host.docker.internal:3306 挂载本机目录失败检查Docker Desktop是否允许访问这个目录. 可以在Docker Desktop里查看: Settings | Resources | File Sharing 总结本地项目通过IDEA部署到macOS的Docker Desktop,核心就是两步: 在IDEA里配置Docker for Mac 在Run配置里选择Docker | Dockerfile 如果只是运行已有镜像,才选择Docker | Docker Image.

2022-11-19
Jenkins
Root用户权限启动Jenkins适用于Ubuntu环境下通过apt-get install -y jenkins命令在线安装的Jenkins 1.修改配置文件 123456789vim /etc/default/jenkins# 将下面两个参数修改为root# 修改前JENKINS_USER=$NAMEJENKINS_GROUP=$NAME# 修改后JENKINS_USER=rootJENKINS_GROUP=root 2.更改目录权限 不知道这步有没有起作用 12345cd /var/lib/chown -R root:root ./jenkins# 重启systemctl restart jenkins.service Jenkins使用教程配置JDKManage Jenkins –> Global Tool Configuration 自动安装 手动安装要注意,JAVA_HOME的输入框下面,不要有警告或者错误信息,否则就是路径不正确,取消勾选自动安装 配置Maven 安装Maven Integration 插件 通常自动安装maven就行了,如果手动安装,MAVEN_HOME 输入框下面,不要有警告或者错误信息,否则就是路径不正确 获取当前项目名称在脚本中输入 $JOB_NAME就能获取到了 卸载jenkins12345678910//服务sudo apt-get remove jenkins//安装包,注意这里如果不是ubuntu那就yumsudo apt-get remove --auto-remove jenkins//配置和数据sudo apt-get purge jenkinssudo apt-get purge --auto-remove jenkins 升级jenkins12# 适用于ubuntu安装的apt-get upgrade jenkins 同时构建任务的个数系统管理–>系统设置–>执行者数量 构建成功才继续发包只是个不大不小的功能,很容易忽略了,在 任务的配置–>Post Steps –> Run only if build succeeds 修改时区 WebHook使用的场景,Github Push代码之后,自动构建 第一步.jenkins的配置 第二步.Github的配置 第三步.返回jenkins设置 第四步.push代码,查看有没有正常构建 Jenkins+Docker部署Maven聚合工程安装Jenkins 1234567891011docker run \ -v /var/run/docker.sock:/var/run/docker.sock \ -v $(which docker):/usr/bin/docker \ -v /root/jenkins:/var/jenkins_home \ --name jenkins \ --user=root \ -p 8080:8080 \ -p 50000:50000 \ -d \ -u 0 \ jenkins/jenkins:jdk11 第2行是将宿主机的/var/run/docker.sock映射到容器中,这样在容器中运行的docker命令,就会在宿主机上来执行。 第3行是将宿主机的docker程序映射进容器中,这样本身没有安装docker的jenkins容器就可以执行docker命令了(事实上容器里是没有运行docker的服务的,我们只是用这个映射进容器的docker来作为客户端发送docker的指令到/var/run/docker.sock而已,而/var/run/docker.sock已经被链接到宿主机了) Dockerfile 1234FROM openjdk:8-jdk-alpineVOLUME /tmpADD admin-server-0.0.1-SNAPSHOT.jar app.jarENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] Maven的pom.xml配置 12345678910111213141516<plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>0.4.13</version> <configuration> <imageName>springboot/${project.artifactId}</imageName> <dockerDirectory>src/main/docker</dockerDirectory> <resources> <resource> <targetPath>/</targetPath> <directory>${project.build.directory}</directory> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration></plugin> imageName打的镜像名称,这里的镜像名称是:springboot/admin-server dockerDirectory指定docker文件夹的位置 Job配置 • -e “SPRING_PROFILES_ACTIVE=prerelease” ,可以看成是启动jar的时候的,java -jar admin-server.jar –spring.profiles.active=prerelease ,指定运行环境 脚本检测容器的运行1234567891011121314# "=" 两边不能有空格count=`docker ps -a | grep sabong-admin-controlfront |awk '{print $1}'`if [ -n "$count" ]; then docker stop $count docker rm $count echo "停止并删除容器"fidocker run \ -itd \ -p 9011:9011 \ -e “SPRING_PROFILES_ACTIVE=prerelease” \ --name admin-server \ springboot/admin-server 推送镜像到harbor12345678910# 打标签# sabong/sabong-controller-manager:latest 已经build成功了的镜像名字# 10.0.0.7/library/sabong/sabong-controller-manager:latest 新的镜像名字docker tag sabong/sabong-controller-manager:latest 10.0.0.7/library/sabong/sabong-controller-manager:latest# 登录私有仓库docker login -u admin -p 123456 10.0.0.7# 推送镜像docker push 10.0.0.7/library/sabong/sabong-controller-manager:latest Vue打包成镜像123456789101112131415npm installnpm run build:prod# build# sabong/sabong-admin-controlfront 随便起的docker build -t sabong/sabong-admin-controlfront --no-cache . # 打标签docker tag sabong/sabong-admin-controlfront:latest 10.0.0.7/library/sabong/sabong-admin-controlfront:latest# 登录私有仓库docker login -u admin -p 123456 10.0.0.7# 推送镜像docker push 10.0.0.7/library/sabong/sabong-admin-controlfront:latest Dockerfile 123From nginxCOPY dist/ /usr/share/nginx/html/ ⛔ 这里用的是nginx容器里默认的nginx配置文件,所以这里没有使用自定义的nginx配置 SpringBoot项目脚本适用于ssh传输文件,启动脚本 1234567891011121314151617181920#!/bin/bash# 具体不知道是干啥的,加上这个,这个看情况加# BUILD_ID=DONTKILLMEAPP_NAME=xxx.jar# 杀进程pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}' ` if [ -n "${pid}" ]; then kill -9 $pidfiecho '准备启动jar包'nohup java -jar /root/$APP_NAME --spring.profiles.active=prod &sleep 3echo '启动成功' Maven多模块打包指定打包项目名 1clean package -pl 模块名 -am 配置SSH server 在系统管理–>System—>SSH Server配置 配置SSH Over FTP publish 这里Verbose output in console的作用是把远程的步骤,和远程的shell执行的结果也打印出来 这里Exec in pty 要勾选,不然项目启动完成了,也不会停止SSH链接 前端打包选择已经配置的node版本 构建环境 Build Steps 选择执行shell 12345npm installnpm run build:prodpwd# 删除上一次构建打的包,然后dist文件夹打包成dist.zip文件rm -f dist.zip && zip -r dist.zip dist 各种问题报错1.HTTP ERROR 403 No valid crumb was included in the request 解决办法:网上都是要去关闭CSRF,很明确的是我这里的全局安全配置里面根本就没有选项,我的版本是jenkins 2.293。所以百度出来的都是一堆垃圾,无奈自己解决,尝试一番之后,找到了方法,如 下图所示:还是在全局安全配置里面,勾选上这个参数即可。 2.Jenkins配置中安装插件时提示No such plugin: cloudbees-folder 1sudo systemctl start jenkins 2.Jenkins和Github personal access token 登录到您的 Jenkins 服务器。 选择“Jenkins”>“Manage Jenkins”>“Configure System”。 滚动到“GitHub”部分。 点击“Add GitHub Server”按钮。 在“API URL”字段中输入您的 Github API URL(例如 api.github.com)。 在“Credentials”字段中选择“Add”。 选择“Kind”为“Username with password”。 在“Username”字段中输入您的 Github 用户名。 在“Password”字段中输入您的 Github 个人访问令牌。 点击“Verify credentials”按钮以验证凭据是否有效。 如果验证成功,请点击“Save”按钮保存更改。 3.jenkins映射docker 12345# 如果docker run jenkins 没有指定# 这里就不能打包,就是因为在jenkins里的容器中,没有安装对象,使用了-v # 就是把jenkins里所需要的docker映射到宿主docker中-v /var/run/docker.sock:/var/run/docker.sock \-v $(which docker):/usr/bin/docker 4.安装插件没有成功 需要到插件中心,在可更新和可选插件里,一个一个手动去搜索安装,如果还有问题,就需要更新jenkins 5.npm install需要权限 1Unable to save binary /var/lib/jenkins/workspace/mymanager-/node_modules/node-sass/vendor/linux-x64-83 : Error: EACCES: permission denied, mkdir '/var/lib/jenkins/workspace/lottery-web-24kai-ausk3/node_modules/node-sass/vendor' 修改端口123456789101112131415161718192021222324252627282930# 第一步sudo vim /etc/init.d/jenkins# 8088改成想要的check_tcp_port "http" "$HTTP_PORT" "8088" || return 1# 第二步sudo vim /etc/default/jenkins# 8088改成想要的HTTP_PORT=8088# 第三步vim /lib/systemd/system/jenkins.serviceEnvironment="JENKINS_PORT=80"# 执行sudo systemctl daemon-reloadsudo systemctl start jenkinssudo systemctl status jenkins# 这个时候就启动报错,然后接着修改vim /lib/systemd/system/jenkins.service# 本来是jenkins的,改成rootUser=rootGroup=root# 执行,就可以了,不知道为啥sudo systemctl daemon-reloadsudo systemctl start jenkinssudo systemctl status jenkins jenkins使用root账号登录设置1 设置2 权限管理1.安装插件,Role-based Authorization Strategy 2.点击 管理系统–>安全段落下的–>全局安全配置,选中 3.管理系统–>安全段落下的 就会多一个功能

2022-11-19
IDEA
教程IDEA查看方法被调用 修改光标所在行背景颜色 断点判断条件在断点上点右键,正常的写判断代码就行 插件Rabinbow Brackets作者:Zhihao Zhang 使用方法 Command+右键,高亮选中部分 Alt+右键,高亮选中部分,其余的代码变暗 CommitMessage作者:郭翰林 使用方法,提交的时候,点击✈️的图标 Codeium作者:Codeium 写代码的时候会有自动提示,按tab确定使用AI生成的代码 Key Promoter XTranslation作者:Yii.Guxing 选中要翻译的内容,右键选择翻译 IDEA 2025恢复旧版Commit弹窗从IntelliJ IDEA 2025版本开始,JetBrains默认启用了非模态提交界面(Non-modal Commit),提交操作会显示在Commit工具窗口里,不再是以前独立弹出的Commit窗口. 如果更习惯旧版弹窗式Commit窗口,可以通过官方插件恢复. 安装插件 打开Settings,macOS是Preferences 进入Plugins 搜索Modal Commit 安装JetBrains官方插件Modal Commit Interface 重启IDEA 开启旧版提交窗口 打开Settings 进入Advanced Settings 搜索commit 在Version Control区域勾选Use modal commit interface for Git and Mercurial 点击Apply或者OK保存 配置完成后,Git和Mercurial提交时会恢复成旧版独立弹窗式Commit对话框.

2023-12-20
Tron
波场官方trident-java文档 m1 mac Android protobuf 遇到的问题 tron中文文档 trc20离线签名的demo,有trxdent-java,就不需要这个了,使用http的方式可以看看 trc20离线签名的demo,有trxdent-java,就不需要这个了,使用http的方式可以看看,另外一个demo 要继续学习tron可以看看 打包依赖 下载源文件trident-java 这里选择main分支 进入trident-java文件夹,可以看到有build.gradle,如果是mac系统,修改一下依赖 1234567891011121314protoc { // 原来的依赖 artifact = 'com.google.protobuf:protoc:3.12.0' // 修改之后的依赖 artifact = 'com.google.protobuf:protoc:3.12.0:osx-x86_64' } plugins { grpc { // 原来的依赖 artifact = 'io.grpc:protoc-gen-grpc-java:1.31.0' // 修改之后的依赖 artifact = 'io.grpc:protoc-gen-grpc-java:1.31.0:osx-x86_64' } } IDEA打包 打包之后,在每个子模块的build/libs/xxx-jar 下面的操作就可以跟着开发文档了,创建项目 pom.xml 123456789101112131415161718192021222324252627<dependency> <groupId>org.tron.trident</groupId> <artifactId>abi</artifactId> <version>0.8.0</version> <scope>system</scope> <systemPath>${project.basedir}/src/main/resources/jar/abi-0.8.0.jar</systemPath></dependency><dependency> <groupId>org.tron.trident</groupId> <artifactId>utils</artifactId> <version>0.8.0</version> <scope>system</scope> <systemPath>${project.basedir}/src/main/resources/jar/utils-0.8.0.jar</systemPath></dependency><dependency> <groupId>org.tron.trident</groupId> <artifactId>core</artifactId> <version>0.8.0</version> <scope>system</scope> <systemPath>${project.basedir}/src/main/resources/jar/core-0.8.0.jar</systemPath></dependency><dependency> <groupId>io.grpc</groupId> <artifactId>grpc-all</artifactId> <version>1.48.1</version></dependency> 查询余额的代码 123456789101112131415public static String privateKey = "私钥"; public static String apiKey = "apiKey";//波场申请 @Test public void getCount() { //生成密钥对 KeyPair keyPair = new KeyPair(privateKey); //地址转换 System.out.println(keyPair.toHexAddress()); ApiWrapper wrapper = ApiWrapper.ofMainnet(privateKey,apiKey); //账号查询 Account account = wrapper.getAccount("账户地址"); //查询余额 System.out.println(account.getBalance()); System.out.println(account.getCreateTime()); } 转账示例 123456789101112131415161718192021public static String transferTrc(String fromAddress, String toAddress, String amount, String contractAddress, String privateKey) { ApiWrapper wrapper = ApiWrapper.ofNile(privateKey); String ret = ""; try { //根据合约地址获取封装好的合约 Contract contract = wrapper.getContract(contractAddress); //创建一个TRC20合约对象 Trc20Contract token = new Trc20Contract(contract, fromAddress, wrapper); //获取想要转移的数量 BigInteger sunAmountValue = Convert.toSun(amount, Convert.Unit.TRX).toBigInteger(); //设置最大手续费 long maxTrx = Convert.toSun("17", Convert.Unit.TRX).longValue(); ret = token.transfer(toAddress, sunAmountValue.longValue(), 0, "", maxTrx); System.out.println("哈希:" + ret); } catch (Exception e) { System.out.println("转移失败:" + e.getMessage().toString()); } finally { wrapper.close(); } return ret;}
评论