记录精彩的程序人生
https://github.com/calmlism/Conflux-wallet/blob/master/app/src/main/java/pro/conflux/wallet/utils/CFXWalletUtils.java
目前有Java SDK有两个: java-sdk-官方版:https://github.com/Conflux-Chain/java-conflux-sdk java-sdk-社区版:https://github.com/calmlism/java-conflux-sdk 本文使用官方版进行开发。 创建钱包,申请测试CFX 钱包的创建参考https://juejin.im/post/5ef562c8f265da22dc3fccfe 编写/测试/部署智能合约
一、 什么是 web3j web3j是一个高度模块化、响应式、类型安全的Java和Android库,用于与智能合约交互,并与Ethereum网络的客户端(节点)集成。 二、准备工作 1.新建java项目,引入 Maven 包 <dependency> <groupId>org.web3j</groupId> <artifactId>core</artifactId> <version>3.3.1</version> </dependency> 2.打开客户端 注意:开私有链的时候需要加上 --rpc 参数。否则无法调用。并且需要打开你的矿工,来完成智能合约部署调用等工作。 geth --rpc --datadir "./chain" --nodiscover console 2>>ouput.log miner.start() 3.生成智能合约的封装器 (1) 下载 web3j 的 Command Line Tool: brew tap web3j/web3j brew in....
操作系统:win7 64位 ahk版本:autohotkey_L1.1.24.03 今天安装了AutoHotkey_1.1.24.03、SciTE、PuloversMacroCreator,重新开始我的ahk之路。 先写了一个一直想在windows下实现的功能——窗口置顶,在linux下用习惯了这个功能,还真是离不开了。代码很简单: 1 #t:: 2 WinSet AlwaysOnTop,On,A 3 return 4 5 #b:: 6 WinSet AlwaysOnTop,Off,A 7 return 1~3行实现了win+t使窗口置顶 5~6行实现win+b取消置顶 编译成.exe后加入开机启动套餐~ 收获: 1、ahk对大小写不敏感 2、#代表win,^代表ctrl https://www.cnblogs.com/yaohunzhanyue/p/6155857.html
传送门 官方:http://www.jfree.org/jfreechart/ 最新版本2017年,版本号1.5 API:http://www.jfree.org/jfreechart/api/javadoc/index.html 解决: //柱形图设置数值显示 CategoryItemRenderer renderer = plot.getRenderer(); renderer.setDefaultItemLabelGenerator(new StandardCategoryItemLabelGenerator()); renderer.setDefaultItemLabelsVisible(true); plot.setRenderer(renderer); 网上答案 - 补充 3.1 BarRenderer3D 在1.5版本中没有。 3.2 以前的答案失效 BarRenderer renderer=new BarRenderer(); renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabe....
Pro Apache NetBeans.pdf ProApacheNetBeans.zip ProApacheNetBeans.z01.zip
jfreechart1.0.19.zip jfreechart0198d4961090fc00c93880fe4c5a66d7c1fef3ef.zip
Provides a convenient set of Java classes to enumerate, take control and use IEEE488-compliant devices. These classes hide the platform-dependant pieces of code, allowing one to write once and deploy anywhere any virtual instrumentation program. https://sourceforge.net/projects/jpib/
https://www.cnblogs.com/sowhat4999/p/4572720.html http://usb4java.org/
Java中元组的使用 元组在计算机领域有着特殊的意义,这个名字听起来似乎有些陌生, 平时在写代码也基本没什么应用场景, 然而, 出人意料的是, 元组跟程序设计密切相关, 可能有的同学不知道, 关系数据库中的「纪录」的另一个学术性的名称就是「元组」, 一条记录就是一个元组, 一个表就是一个关系, 纪录组成表, 元组生成关系, 这就是关系数据库的核心理念。 元组是关系数据库不可脱离的部份, 但是在程序设计中, 元组并不显得那么不可或缺。 有一些编程语言本身就自带元组的语法, 比如说python、F#、haskell、scala等,另一些更为流行的编程语言却不带元组语法, 如Java、JavaScript、c++、c#等。 元组并不像数组、对象那样是不可缺少的编程元素,但是, 使用它却能对编写代码带来很多的便利,尤其是当一个函数需要返回多个值的情况下。对于这种情况, 普遍的做法是定义一个对象,把函数需要返回的值作为对象的属性设置,然后把函数的返回值类型设为这个对象的类型, 函数直接返回这个对象就相当于返回多个值了。或者可以让这个函数返回一个map数据结构,具体的数据存在这个map里面。 然而....
equals在Java中含义 首先要解释清楚这个,equals方法在Java中代表逻辑上的相等,什么叫逻辑上的相等?这个就涉及到Java本身的语法特性。 我们知道,Java中存在着==来判断基本数据类型的相等,但是对于对象,==只能判断内存地址是否相等,也就是说是否是同一个对象: int a = 10000; int b = 10000; // 对于基本数据类型, == 可以判断逻辑上的相等 System.out.println(a == b); Integer objA = 10000; Integer objB = 10000; Integer objA1 = objA; // 对于类实例, == 只能判断是否为同一个实例(可以视为内存地址是否相等) System.out.println(objA == objB); System.out.println(objA == objA1); 注:这里我们不讨论Integer对于-128~127的缓存机制。 结果显而易见: 但是明明objA和objB逻辑上是相等的,凭什么你就返回fals?这时就诞生了一种需求,对于Java中的对象,....
1.导入reflectasm的依赖 <dependency> <groupId>com.esotericsoftware</groupId> <artifactId>reflectasm</artifactId> <version>1.11.7</version> </dependency> 2.浅复制代码 import java.lang.reflect.Field; import java.lang.reflect.Modifier; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import com.esotericsoftware.reflectasm.MethodAccess; public class BeanCopyUtils { private static Map<Class<?>, MethodAcc....
field = new JFormattedTextField(); field.getDocument().addDocumentListener(new DocumentListener() { @Override public void insertUpdate(DocumentEvent e) { Runnable format = new Runnable() { @Override public void run() { String text = field.getText(); if(!text.matches("\\d*(\\.\\d{0,2})?")){ field.setText(text.substring(0,text.length()-1)); } } }; SwingUtilities.invokeLater(format); } @Override public void removeUpdate(DocumentEvent e) { } @Override public void changedUpdate(DocumentEvent e) { } }....
You can save time and reduce other costs associated with Java development by taking advantage of open source Java projects. In this new series, Jeff Friesen introduces a variety of lesser known open source Java projects that can benefit your Java software. Jeff begins the series by looking at Bernhard Pauler's balloontip project, which you can use to add Windows XP-style informational "balloons" to your Swing-based Java applications. | Open source licenses | | Open source software is usually sub....
https://blogs.oracle.com/geertjan/farewell-to-space-consuming-weird-tabs https://blogs.oracle.com/geertjan/farewell-to-space-consuming-weird-tabs-part-2 https://github.com/GeertjanWielenga/AwesomeApp/tree/master/Core/src/org/aa/core
1.沪市市值大大的超过深市。 2.沪市权重股多,对宏观经济运行状态更有代表作用。 3.沪市成交量大。 4.上海是中国经济中心,上交所又在深交所前成立,一开始就占有主动。 由于上述原因,大盘一般是指上证指数。 所谓大盘为什么是上证指数而不是深证成指呢 所谓大盘是指沪市的“上证综合指数”和深市的“深证成份股指数”的股票。大盘指数是运用统计学中的指数方法编制而成的,反映股市总体价格或某类股价变动和走势的指标。 上证综指,顾名思义是在上海市场交易的股票。而中国还有在深圳市场交易的股票,所以大盘不是单指上证综指。 但是一般来说,上证综指和深成指涨跌幅相似,所以就直接用上证综指的点数来代表所有股票走势的情况。。
很多股民在选股时期都忌讳买高价股,他们认为一只股票价格高就存在着风险,随时可能出现股票持续大跌的行情,但是他们并不了解一只股票高价有高价的理由,低价有低价的问题,贵有贵的道理,便宜的股票也有存在便宜的原因,尤其在A股市场大部分的股民投资首要可考虑的就是股票价格不能太贵,又要价格处在较低的位置,既然如此为何不去买低于三元的个股不是更好吗?这些股票经过前期持续下跌之后股价低,下方的跌幅已不深,适合对于担心股票跌又不喜欢高价股的股民投资,但为什么低于三元以下的股票慢慢的越来越不受资金喜欢了? 随着注册制的推进,市场上股票的数量越来越多,在有限的增量资金情况下资本市场不断地从发展阶段走向成熟时期,好的股票就越来越受到资金追捧,股价会越涨越高,越涨越贵,差的股票除了自身存在问题也会遭到资金的抛弃,这种股票只会不断的创造新低甚至面临着推迟的风险,低于3元以下的股票在不断的增多,但是这种低于3元以下的个股随着关注的资金开始减少,后期反而上涨存在难度,也存在着各种爆雷的风险,买入这些股票并不是投资。 第一、低价股风险更高。 我们可以从3700多只股票中发现大部分的低价股之所以处在低价主要在于上市公司业....
前面三章介绍了Netty的一些基本用法,这一章介绍怎么使用Netty来实现一个简单的长连接demo。 Netty入门教程——认识Netty Netty入门教程2——动手搭建HttpServer Netty入门教程3——Decoder和Encoder 关于长连接的背景知识,可以参考《如何使用Socket实现长连接》 一个简单的长连接demo分为以下几个步骤: 创建连接(Channel) 发心跳包 发消息,并通知其他用户 一段时间没收到心跳包或者用户主动关闭之后关闭连接 看似简单的步骤,里面有两个技术难点: 如何保存已创建的Channel 这里我们是将Channel放在一个Map中,以Channel.hashCode()作为key 其实这样做有一个劣势,就是不适合水平扩展,每个机器都有一个连接数的上线,如果需要实现多用户实时在线,对机器的数量要求会很高,在这里我们不多做讨论,不同的业务场景,设计方案也是不同的,可以在长连接方案和客户端轮询方案中进行选择。 如何自动关闭没有心跳的连接 Netty有一个比较好的Feature,就....
前言: 集群之间的主节点与从节点之间实现数据的最终一致性。节点与节点之间实现数据的异步同步。节点与节点之间怎样才能感知对应节点状态。这就要求节点每隔一段时间定时的发送心跳包去感知对方的服务健康状态。一般在设置几个心跳包之后我们就可以认为对方节点已经挂了,我们就可以将该节点从集群中踢出去。 我们有个疑问,比如说之前的多客户端通信demo,当客户端断开与服务器连接的时候会触发handlerRemoved方法,那么我们就知道该服务的状态了。为什么还需要心跳包去感知呢? 真实情况远比我们想象中的复杂,比如我们的客户端是移动手机并且已经建立好了连接,当打开飞行模式(或者强制关机)的时候我们就无法感知当前连接已经断开了(handlerRemoved不会触发的), 当我们客户端和服务器端进行通信的时候,关闭网络或者打开飞行模式,此时通过handlerAdded方法和handlerRemoved是无法判断服务是否已经宕掉的。那么就引出了本文的内容。 什么是心跳检测? 判断对方(设备,进程或其它网元)是否正常动行,一般采用定时发送简单的通讯包,如果在指定时间段内未收到对方响应,则判断对方已经宕掉。用于....
使用netty实现多客户端连接并且互相通信的需求: 1.服务器启动,n多个客户端与服务器进行连接,一个客户端上线之后,服务器端控制台会打印xx上线了,其他的客户端控制台打印xx上线了。如果一个客户端下线了,服务器端的控制台上打印,xx下线了,其他的客户端控制台打印xx下线了。 2.多个客户端都上线之后,一个客户端(比如说A)给服务端发送消息,那么客户端(比如说A,B,C,包括自己本身)都会收到消息,对于A来说,会标志此消息是自己发送自己的,其他的客户端则会收到具体的消息。 服务器代码: import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.ChannelFuture; import io.netty.channel.EventLoopGroup; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.nio.NioServerSocketChannel; public class MyChatSer....