首页 技术 正文
技术 2022年11月21日
0 收藏 963 点赞 5,093 浏览 8981 个字

【概念】

做服务的时候main里面不能单独有东西,都得包起来。

<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 22.0px; font: 15.0px ‘Helvetica Neue’; color: #000000}
–>

Identifier expected是因为没有main函数

<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 22.0px; font: 15.0px ‘Helvetica Neue’; color: #000000}
–>

雾草,task3还要加proxy, add再干别的。难受!妈的,什么代理模式设计的要求都没注意到,太粗心了。

<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 22.0px; font: 15.0px ‘Helvetica Neue’; color: #000000}
–>

main函数client里面不能丢,保证基本功能,其他的额外方法丢进proxy。

constructor在main方法外面,main调用constructor来形成object https://blog.csdn.net/caohaicheng/article/details/14147099

public class Platypus {
String name; Platypus(String input) {
name = input;
} Platypus() {
this("John/Mary Doe");
} public static void main(String args[]) {
Platypus p1 = new Platypus("digger");
Platypus p2 = new Platypus();
System.out.println(p1.name + "----" + p2.name);
}
}
---------------------
作者:hai_cheng001
来源:CSDN
原文:https://blog.csdn.net/caohaicheng/article/details/14147099
版权声明:本文为博主原创文章,转载请附上博文链接!

构造函数里就是原来的变量,后面还要用。不是全是0,新建的时候全是0就行了。

多做了一次json,就会出现斜线。看来第打印数组用普通数组就行了。

<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 22.0px; font: 15.0px ‘Helvetica Neue’; color: #000000}
–>

字符串连接只能用加号,不能用append。

override是重写,名字一样,重新写一遍。

<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 22.0px; font: 15.0px ‘Helvetica Neue’; color: #000000}
–>

static的nonce是全局的,这个类中都一样,所以类产生的每个block中都是一样的了。所以此处不能用static全局变量。当初学的时候不理解全局变量的意思啊。static 方法可以直接调用方法名。static的方法里面不能够调用instance变量。谁用谁知道。

<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 22.0px; font: 15.0px ‘Helvetica Neue’; color: #000000}
–>

mostRecentBlock全局化以后,hash value就都一样了。所以要小心使用全局化了之后的东西,特别是计算不一样的值的时候。或者更新一下全局化变量。

<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 22.0px; font: 15.0px ‘Helvetica Neue’; color: #000000}
–>

target不是全局变量的话,重新求一遍就行了。

<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 22.0px; font: 15.0px ‘Helvetica Neue’; color: #000000}
–>

genesis hash的nonce也是需要根据难度来更新的,不能不遵守规定。

currentHash 定义和检验的时候时间戳其实是一样的:block创建的时候调用constructor, 两者同时计时。

一个改了好久的错:nonce应该是算好之后在给hash去用,因为hash里要用nonce。并列变量中如果有函数关系,就要先求出其中的自变量。

<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 22.0px; font: 15.0px ‘Helvetica Neue’; color: #000000}
–>

修复的时候也是先修复nonce,再修复hash。

<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 22.0px; font: 15.0px ‘Helvetica Neue’; color: #000000}
–>

nonce是根据数据来哈希,用工作量来匹配哈希的一个东西。所以数据变了,对应的工作量要改变。看Javadoc的时候只注意了函数实现,硬凑着能写就行。没真正理解概念的意思。还是要尽量第一遍理解得透彻一些。

卧槽,main函数里没有调用constructor,新建一个object。因为构造、赋值都在constructor里面。太智障了,哎。

当有service里包括blockchain时,在长的service函数里面初始化,constructor里面可以加第一个值。不要在短的blockchain函数里再初始化一次,容易混乱。

【方法论】

妈的,看来还是要先懂lab啊,不懂lab没法写啊。

<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 22.0px; font: 15.0px ‘Helvetica Neue’; color: #000000}
–>

出现exception的时候可以.tostring()打印出来,如org.json.JSONException: JSONObject[“duration”] not found.

<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 22.0px; font: 15.0px ‘Helvetica Neue’; color: #000000}
–>

XML先执行,再执行URL注释的pattern,妈的,这谁知道啊。不过学到一个方法:把URL输入到浏览器里看。

如何找出别的TA不会改的bug:先看输入哪个操作没错,然后值得怀疑的地方一个个打。

       Blockchain.blockList = new ArrayList<Block>();
//System.out.println("链长1 = " + Blockchain.blockList.size());
//System.out.println("genesis nonce = " + genesis.nonce);
Blockchain.blockList.add(genesis);
//System.out.println("链长2 = " + Blockchain.blockList.size()); //get the genesis block's hash as the chain hash
String genesisHash = genesis.calculateHash();
Blockchain.hashOfNewBlock = genesisHash;
//这里改了,括号里的Blockchain.blockList忘了指定是哪个,乱了
mostRecentBlock = Blockchain.blockList.get(Blockchain.blockList.size() - 1);
//System.out.println("链长3 = " + Blockchain.blockList.size());

两行new了一个class,明明不空,却有NPE:把变量全都打印出来,好狠!

client走不到,client没有得到初始化的东西,真尴尬。要思考调用的流程。

<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 22.0px; font: 15.0px ‘Helvetica Neue’; color: #000000}
–>
<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 22.0px; font: 15.0px ‘Helvetica Neue’; color: #000000}
–>

网豆可以右键格式化,我擦。

妈的,这次没注意前后几个project的联系。后面要大改,艹。

一个task没有全部想清楚就动笔写是很不好的,可能导致后面全都要改。

<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 22.0px; font: 15.0px ‘Helvetica Neue’; color: #000000}
–>

设计的时候想法很自然,但是真的没有想到一些细节上的bug。

<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 22.0px; font: 15.0px ‘Helvetica Neue’; color: #000000}
–>

搜索stackoverflow,然后看英文

debug 的F8:step over直接跳过了,step in 才会执行具体的细节。

在循环的之前之中之后都可以打印,哪里不对打哪里。

<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 22.0px; font: 15.0px ‘Helvetica Neue’; color: #000000}
–>

genesis block可以先定义,再修改。这是一个重要的思维。如:结束的时间定义在外面,循环之后更新结果。

<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 22.0px; font: 15.0px ‘Helvetica Neue’; color: #000000}
–>

另一个class调用的时候不打印,说明函数里面有问题。这时候需要在函数里面打印,发现了nonce计算的没有加1.

有错的时候就要立刻Return false,不要犹豫,会忘了。

<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 22.0px; font: 15.0px ‘Helvetica Neue’; color: #000000}
–>

第一层输入的字符串必须要处理不是123456的情况,否则很容易测试的时候不小心全盘崩掉。在while(true)里面加一层大的try catch。

<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 22.0px; font: 15.0px ‘Helvetica Neue’; color: #000000}
–>

一个类的代码很长,就很烦,鼠标滚来滚去都很烦。不如多分几个,切身体会!

重启IDE后先把glassfish打开,再做后面的部署。

【细节】

<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 22.0px; font: 15.0px ‘Helvetica Neue’; color: #000000}
–>

从网上引用的时候,变量名没改,客户端和服务器都写的一样的,哭了。代码粘过来以后一定要全都改了。

<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 22.0px; font: 15.0px ‘Helvetica Neue’; color: #000000}
–>

URL加斜线才能访问

<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 22.0px; font: 15.0px ‘Helvetica Neue’; color: #000000}
–>

json里面要单独加。没有赋值错了啊,不能这样加!

println就是换行了,不需要再加/n

加两次https://www.shuzhiduo.com/A/xl56eZakJr/system.in就能输入两个变量了,不用连接之后的。

成员变量如果非得写,可以设置初始值。不过一般不写

    //可以先设为全局的吧?如果要用,后面会改
static Integer blockID = 0;
static Integer difficulty = 0;
static String transaction = "";
static Integer operationID;

import一个包,最后要加*

nonce = nonce.add(new BigInteger(“1”)); 得写等号,这也是无奈了

<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 22.0px; font: 15.0px ‘Helvetica Neue’; color: #000000}
–>

tostring必须要指定是这个class来用,让数组来用的没有,只有Java自带的tostring。

注意下细节:修改完整个链以后,chain hash也要跟着改。indexStartToError不要忘记及时更新

每次创造一个block出来以后,必须要加到数组中,别忘了更新。

<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 22.0px; font: 15.0px ‘Helvetica Neue’; color: #000000}
–>

要比较的字符串变量不要加双引号,不然是比较字符串名字。好吧,智障了。

<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 22.0px; font: 15.0px ‘Helvetica Neue’; color: #000000}
–>

nonce是类里通用的,是成员变量。不能在方法中重新定义,值会错。

您应该包装输出,以便在屏幕截图中更好地显示它,并且它将更容易调试。你可以通过以下方式包装:右键单击NetBeans控制台并选择Wrap text。可以把输出结果包起来。

<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 22.0px; font: 15.0px ‘Helvetica Neue’; color: #000000}
–>

注意client里连接的端口号是不是和serverproject打开的URL一样的,否则连不上

默认方法hello要删掉,后面部署之后再删更麻烦。

<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 22.0px; font: 15.0px ‘Helvetica Neue’; color: #000000}
–>
<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 22.0px; font: 15.0px ‘Helvetica Neue’; color: #000000}
–>
<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 22.0px; font: 15.0px ‘Helvetica Neue’; color: #000000}
–>
<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 22.0px; font: 15.0px ‘Helvetica Neue’; color: #000000}
–>
<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 22.0px; font: 15.0px ‘Helvetica Neue’; color: #000000}
–>
<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 22.0px; font: 15.0px ‘Helvetica Neue’; color: #000000}
–>
<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 22.0px; font: 15.0px ‘Helvetica Neue’; color: #000000}
–>
<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 22.0px; font: 15.0px ‘Helvetica Neue’; color: #000000}
–>
<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 22.0px; font: 15.0px ‘Helvetica Neue’; color: #000000}
–>
<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 22.0px; font: 15.0px ‘Helvetica Neue’; color: #000000}
–>
<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 22.0px; font: 15.0px ‘Helvetica Neue’; color: #000000}
–>
<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 22.0px; font: 15.0px ‘Helvetica Neue’; color: #000000}
–>
<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 22.0px; font: 15.0px ‘Helvetica Neue’; color: #000000}
–>
<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 22.0px; font: 15.0px ‘Helvetica Neue’; color: #000000}
–>
<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 22.0px; font: 15.0px ‘Helvetica Neue’; color: #000000}
–>
<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 22.0px; font: 15.0px ‘Helvetica Neue’; color: #000000}
–>
<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 22.0px; font: 15.0px ‘Helvetica Neue’; color: #000000}
–>
<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 22.0px; font: 15.0px ‘Helvetica Neue’; color: #000000}
–>
<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 22.0px; font: 15.0px ‘Helvetica Neue’; color: #000000}
–>
<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 22.0px; font: 15.0px ‘Helvetica Neue’; color: #000000}
–>
<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 22.0px; font: 15.0px ‘Helvetica Neue’; color: #000000}
–>
<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 22.0px; font: 15.0px ‘Helvetica Neue’; color: #000000}
span.s1 {color: #118eff}
–>
<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 22.0px; font: 15.0px ‘Helvetica Neue’; color: #000000}
–>
<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 22.0px; font: 15.0px ‘Helvetica Neue’; color: #000000}
–>
<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 22.0px; font: 15.0px ‘Helvetica Neue’; color: #000000}
–>
<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 22.0px; font: 15.0px ‘Helvetica Neue’; color: #000000}
–>
<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 22.0px; font: 15.0px ‘Helvetica Neue’; color: #000000}
–>
<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 22.0px; font: 15.0px ‘Helvetica Neue’; color: #000000}
–>

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,104
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,581
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,428
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,200
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,835
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,918