您正在查看: 2020年5月

Elements in iteration expect to have 'v-bind:key' directives错误的解决办法

在用vscode编写vue代码时,因为安装的有vetur插件,所以当代码中有v-for语法时,会提示,Elements in iteration expect to have 'v-bind:key' directives.这个错误
这是ESLint的功能,对vue进行了eslint检查。那么我们就把eslint对该插件的检查关闭,

更改vetur配置vscode->首选项->设置->搜索(vetur)

"vetur.validation.template": true  //改成  false

保存,我们再看一下vue文件,发现不报错了。

Vue vscode 格式化配置

打开vscode 插件,找到已安装的 Vetur(提前安装),点击设置

会自动打开settings.json文件,编辑内容

"vetur.format.defaultFormatterOptions": {
    "prettyhtml": {
        "printWidth": 300, // No line exceeds 300 characters
        "singleQuote": false // Prefer double quotes over single quotes
    }
}

然后保存,就可以在打开Vue文件的编辑框中快乐的右键格式化文档了。

让 el-dialog 居中,并且内容多的时候内部可以滚动

.el-dialog {
    position: absolute;
    top: 50%;
    left: 50%;
    margin: 0 !important;
    transform: translate(-50%, -50%);
    max-height: calc(100% - 30px);
    max-width: calc(100% - 30px);
    display: flex;
    flex-direction: column;
}

.el-dialog__body {
    overflow: auto;
}

转载自https://www.cnblogs.com/wbyixx/p/11937106.html

Maven打jar包的三种方式

不包含依赖jar包

该方法打包的jar,不包含依赖的jar包,也没有指定入口类。

<build>
    <plugins>
        <plugin>
            <!-- 指定项目编译时的java版本和编码方式 -->
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.7.0</version>
            <configuration>
                <target>1.8</target>
                <source>1.8</source>
                <encoding>UTF-8</encoding>
            </configuration>
        </plugin>
    </plugins>
</build>

将依赖jar包输出到指定目录

该方法打包的jar,指定了入口类,可以直接使用java -jar project.jar执行,
但是第三方依赖存在一个指定的外部目录下,迁移时需将jar和依赖目录一起迁移。

<build>
    <plugins>
        <plugin>
            <!-- 指定项目编译时的java版本和编码方式 -->
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.7.0</version>
            <configuration>
                <target>1.8</target>
                <source>1.8</source>
                <encoding>UTF-8</encoding>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>3.1.0</version>
            <configuration>
                <archive>
                    <manifest>
                        <mainClass>com.netty.client.SignalClient</mainClass> <!-- 指定入口类 -->
                        <addClasspath>true</addClasspath> <!-- 在jar的MF文件中生成classpath属性 -->
                        <classpathPrefix>lib/</classpathPrefix> <!-- classpath前缀,即依赖jar包的路径 -->
                    </manifest>
                </archive>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>3.1.1</version>
            <executions>
                <execution>
                    <id>copy</id>
                    <phase>install</phase>
                    <goals>
                        <goal>copy-dependencies</goal>
                    </goals>
                    <configuration>
                        <!-- 指定依赖包的输出路径,需与上方的classpathPrefix保持一致 -->
                        <outputDirectory>${project.build.directory}/lib</outputDirectory>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

将项目依赖和项目打成一个jar包

该方法打包的jar,指定了入口类,可以直接使用java -jar project.jar执行,
并且将第三方依赖打到了项目jar包中。

<build>
    <plugins>
        <plugin>
            <!-- 指定项目编译时的java版本和编码方式 -->
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.7.0</version>
            <configuration>
                <target>1.8</target>
                <source>1.8</source>
                <encoding>UTF-8</encoding>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>3.1.0</version>
            <configuration>
                <archive>
                    <manifest>
                        <mainClass>com.netty.client.SignalClient</mainClass> <!-- 指定入口类路径 -->
                    </manifest>
                </archive>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef> <!-- jar包后缀,生成的jar包形式为:project-1.0-SNAPSHOT-jar-with-dependencies.jar -->
                </descriptorRefs>
            </configuration>
            <!-- 添加此项后,可直接使用mvn package | mvn install -->
            <!-- 不添加此项,需直接使用mvn package assembly:single -->
            <executions>
                <execution>
                    <id>make-assembly</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

转载自:https://www.cnblogs.com/jinjiyese153/p/9374015.html

比特币多签和脚本调研

调研背景

公司有个针对比特币的资产使用场景,

一个比特币的账户有5个多签见证人控制,满足3个人签名就可以修改其中一个人的签名权限,和转移50%的资产,满足5个人同时签名就可以转移100%的资产。

之前一直All in EOS,所以先查下相关的资料吧。

参考资料

https://www.qunfengshe.com/articles/QXJ0aWNsZTo4MA==
https://zhuanlan.zhihu.com/p/25461051
https://m.8btc.com/article/350625
https://juejin.im/post/5aa60e65518825557005a7f6
https://en.bitcoin.it/wiki/Script#Opcodes
https://github.com/bitcoin/bitcoin/blob/master/src/script/interpreter.cpp
https://gist.github.com/gavinandresen/3966071
https://siminchen.github.io/bitcoinIDE/build/editor.html

对比EOS

按需求我们等价到EOS链图灵完备的智能合约实现方式,需要以下几步

  1. 准备一个资产账户,5个管理账户,并将资产账户active和owner的权限按权重(5)和阈值(3)设置成5个管理账户(set account permission),且能满足达到3/5权重,再次修改账户权限。
  2. 编写智能合约,Table中记录当前资产总额和已转出的资产,合约“监听”转账通知 [[eosio::on_notify("eosio.token::transfer")]],当有新转入,累加到资产总额。当已转出的资产超过50%时,验证当前执行是否同时有5个账户的签名 require_auth(1) - require_auth(5),如果不满足则失败assert,没超过50%前,无需合约判断,链本身会在第一步设置的资产账户的权重和阈值那里自行判断,也就是至少满足3/5才会执行到此合约里。
  3. 将上面的合约部署到资产账户,就能满足需求场景了。

调研针对比特币的需求结论

  1. 针对权重和阈值分配,比特币多重签名可以支持。但相对EOS权限管理,只能等份分割,某个人想拥有多大比例的权重,就拥有对应个数的私钥。
  2. 比特币脚本不是图灵完备的,无法实现数据存储,只能做一些简单的堆栈方式的运算,且当合约执行时,它没办法指定被影响到的比特币金额,要么全部解锁,要么就完全不解锁,因为比特币上的智能合约只是一个锁定脚本,成功解锁前后,没有中间状态,导致实现复杂协议很困难。

考虑到使用场景,比特币简单粗暴临时方案

使用权重和阈值 分别是5-5,以及5-3,创建两个比特币地址。5-5账户地址存放100%资金,由5个人同时签名后将资金的 50%转移到 5-3账户地址。这样能满足 5-5可使用100%资金,5-3使用50%资金。相对资产单一账户来说,超过单个账户余额边界时,会导致2笔手续费。