程序员数学基础【六、枚举 区块链,虚拟币种、币包约束,内环版本】(Java版本)
生活随笔
收集整理的這篇文章主要介紹了
程序员数学基础【六、枚举 区块链,虚拟币种、币包约束,内环版本】(Java版本)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
本案例為幣包的實際技術應用:
做區塊鏈幣包的可以看看,當年老師付我也是想了很久的。
虛擬幣幣包的工具有很多,那么他們使用的是什么技術實現的呢。咱們利用就將數學【枚舉】的虛擬幣內環實際應用給大家講一講。
測試使用語言:【Java】
?
1、創建幣種類(我就寫了4個,方便測試)
基礎結構【BaseWallet】
package com.item.btype;import java.math.BigDecimal; import java.util.Date;public class BaseWallet {private String Id;private String UserId;private Date LastDate;private BigDecimal AllCount;private BigDecimal DisCount;/*** 錢包ID*/public String getId() {return Id;}public void setId(String id) {Id = id;}/*** 用戶編號*/public String getUserId() {return UserId;}public void setUserId(String userId) {UserId = userId;}/*** 最后修改時間*/public Date getLastDate() {return LastDate;}public void setLastDate(Date lastDate) {LastDate = lastDate;}/*** 錢包總數量*/public BigDecimal getAllCount() {return AllCount;}public void setAllCount(BigDecimal allCount) {AllCount = allCount;}/*** 凍結數量*/public BigDecimal getDisCount() {return DisCount;}public void setDisCount(BigDecimal disCount) {DisCount = disCount;} }交易幣【BG】
package com.item.btype;public class BGWallet extends BaseWallet { }比特幣【BTC】
package com.item.btype;public class BTCWallet extends BaseWallet { }以太坊【ETH】
package com.item.btype;public class ETHWallet extends BaseWallet { }嫩模幣【OMG】
package com.item.btype;public class OMGWallet extends BaseWallet { }2、創建幣種枚舉
package com.item.btype;/*** @author TeacherFu* @date 2021年2月28日12:07:09*/ public enum WalletEnum {BG(1, "BG", "市場幣"),BTC(1000, "BTC", "比特幣"),ETC(1001, "ETC", "以太坊"),OMG(1002, "OMG", "嫩模幣"),;/*** 根據名字換編號** @param Name* @return*/public static int GetId(String Name) {WalletEnum[] values = WalletEnum.values();for (WalletEnum c : WalletEnum.values()) {if (c.getName().equals(Name)) {return c.getId();}}return -1;}/*** 根據ID換名字* @param Id* @return*/public static String GetName(int Id) {for (WalletEnum c : WalletEnum.values()) {if (c.getId() == Id) {return c.getName();}}return null;}/*** 編號*/private int Id;/*** 幣種英文名*/private String Name;/*** 幣種中文名*/private String Info;/*** 構造方法** @param Id* @param Name* @param Info*/WalletEnum(int Id, String Name, String Info) {}public int getId() {return Id;}public void setId(int id) {Id = id;}public String getName() {return Name;}public void setName(String name) {Name = name;}public String getInfo() {return Info;}public void setInfo(String info) {Info = info;} }3、幣包選擇器
package com.item.btype;import java.math.BigDecimal;/*** 幣包操作選擇器*/ public class SwitchWallet {/*** 接口層獲取移動端的操作幣種編號<br/>** @param WalletEnumId* @param UserId* @return 用戶當前所查詢幣種的信息*/public static BaseWallet UserWalletById(int WalletEnumId, String UserId) {/*** 根據WalletEnumId標識進行case選擇*/switch (WalletEnumId) {case 1:return new BGWallet();case 1001:return new BTCWallet();case 1002:return new ETHWallet();case 1003:return new OMGWallet();default:return null;}} }4、Controller承接數據
package com.item.btype;import java.math.BigDecimal;public class WalletController {/*** 充當接口層* @return*/public Resful AddChange(int WalletEnumId, String Token, BigDecimal ChangeCount){if(WalletEnum.GetName(WalletEnumId)==null){return new Resful("幣種不符");}/*** Token兌換UserId* String UserId=redis.TokenToUserId(Token);*/String UserId="asd2asdzpasodospasodpaos";/*** 獲取用戶某幣種錢包信息,使用父類表承接*/BaseWallet bw=SwitchWallet.UserWalletById(WalletEnumId,UserId);//已經獲取到對應表的信息,其它功能在業務邏輯層完成即可。return new Resful("成功",bw.getAllCount());} }5、總結:
a)、幣包的思路就是利用枚舉的方式作為幣包約束,在集合父子類關系進行簡化代碼操作。
?
下篇內容:【】:【】
萬丈高樓平地起,程序員數學基礎,從小學的【什么是數學】至【離散數學】(主要是圖論)咱們一步步成長,共同加油。
總結
以上是生活随笔為你收集整理的程序员数学基础【六、枚举 区块链,虚拟币种、币包约束,内环版本】(Java版本)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据库面试题【七、InnoDB索引和My
- 下一篇: 数据库面试题【十、【非关系型数据库】和【