Spring cloud Alibaba Nacos Config 不会自动刷新问题

前提:

1、Spring Cloud 2020.1.x

2、Spring Cloud Alibaba 2021.0.x

问题:

1、Nacos 发布配置,应用没有做出反应

2、应用日志也没有提示收到配置更新的日志

细节:

1、spring.config.cloud.nacos.config.shared-dataids 配置项已过时

2、spring.config.cloud.nacos.config.shared-configs 这是新的代替配置项

3、而后config每项不是单纯的字符串表达式,而是一个对象,里面有三个属性

1)spring.cloud.nacos.config.shared-configs[x].dataid 对应nacos里的 dataid

2) spring.cloud.nacos.config.shared-configs[x].group 对应 dataid的group

3) spring.cloud.nacos.config.shared-configs[x].refresh 是否开启刷新

尝试/解决:

1、spring.config.cloud.nacos.refresh-enabled = true ,但是这个默认值是 true的,感觉也没啥鸟用

2、看到官方文档配置项目:

3、而后就有了

4、而后神奇的只要修改了配置,应用日志就提示收到配置了,嗯…

分析:

1、不做统一配置的目的可能就是因为整体刷新带来的问题

2、因此自然而然默认就应该是不自动刷新的

3、把控制权交给编程人员,某些角度上说

因为网站备案问题关闭了一年的站,今天用Oracle Cloud,站在羊毛上从新站起来了

之前因为备案过期,懒得再备案。开了进10年的(虽然没几篇文)个人站关了一年。服务器还是在,阿里云的,但是备案太麻烦了!!!

(后来发现个问题,Oracle Cloud 的所有IP 都被封!!!,用Cloudflare 代理,总算可以访问。总的来说还是很有价值的羊毛)

前天看到很多youtuber 羊毛党 用 Oracle Cloud 单间 梯子。而且比google cloud的爽,因为没有一年期限。

有始终免费的都是可以用的,当然要始终免费,那么肯定是标记了“符合始终免费 ” 的资源,否则过了30天试用期就被收回了。

主要是用的是 VM 实例,始终免费的肯定是配置最低的,1 CPU 1G 内存。但是可以建2台。

原来我也是打算搭梯子,可是…可是… 我估计晚了一步。反正搭建服务是能搭建成功。成功后,我用客户端一连接,立马整个VM 就断开了,怎么都连接不上,SSH都连接不上,只能销毁(终止)。尝试了各种版本。最后还是放弃了。

重点来了。做不了梯子!也不能浪费啊,两台 1CPU 1G内存 的虚拟机。搭个我个人博客都可以吧。因此网站备案也省略了。

我觉得大家也可以用起来的。加入羊毛党!!!

后期可以用其他的一些内容,比如有对象存储,提供了20G 呢。目前也是我需要的,但是没有国内的腾讯云和阿里云 的方便,国内的都提供各种语言的SDK。oracle 好像只提供OCI的一个程序,需要自己通过这个程序实现操作,不太方便。

还有负载均衡,提供了两台主机,其实可以做成负载均衡的。负载均衡也有始终免费的份额!

情商——当有人骂你煞笔的时候

什么是情商呢?情商的心理学术语是情绪智力。而我们大多数人理解的情商和媒体肆意宣扬的情商都是片面的。现在很多的网络课程都教你怎么样提高情商,实际上课程内容和情商并无关系。所谓情商高不是会说话,讨好别人。也不是别人说了你不爱听的话,你怎么去回怼别人。那都不是高情商的表现。情商不能和聪明、反应快、办事圆滑、见机行事划等号。这是我们大家认知上的常见的一个误区。


情绪智力是指监控自己和他人的情感及情绪,并识别、利用这些信息指导自己的行为的能力。‍‍这些能力包括为五个方面:识别自己的情绪、掌控自己的情绪、自我激励、识别他人的情绪和处理好人际关系的能力。我们要抓住这两个字“情绪”。当别人嘲讽你的时候,你可以感受到自己的情绪是愤怒的,这个时候你要知道控制自己的情绪,因为情绪失控的时候是很容易做出冲动的事情,或者说出让自己后悔的话。我们经常看到的社会新闻就是两个人因为小事争吵,情绪失控,动起手来,一人失手将另外一个人杀死。最终因刑事犯罪进入监狱的大门,去采访的时候都说自己真的很后悔,当时只是一时冲动,就落下不可挽回的后果。这样的新闻比比皆是。

所以,当别人嘲讽你的时候,不要去和他对骂,以暴制暴,这样只会让你们双方的情绪都更加不好,就算你吵赢了他又怎么样,你还是很愤怒。你的目的是让自己开心和快乐,过好自己的生活。所以不要去做让你恼火的事情。表面上不要去计较,撕破脸总是不好的。但是自己心里要清楚谁是朋友,谁是敌人。微笑面对敌人才是高手,培养敌人的缺点,总有一天他自己的火会烧到自己。

控制好自己的情绪才是情商高的真正表现。

以太坊钱包项目EthWallet

项目背景

  • 本项目为自发组织的DApp开发者为了学习区块链而创建
  • 项目源代码开源 github地址

项目描述

  • 项目是一个以太坊钱包
  • 目标是用各种语言实现服务器端,而后实现多种平台的客户端
  • 本次介绍为本人负责的java版本服务器端和微信小程序客户端的实现
  • 服务器端维护用户的keystore,并让用户自己保存密码,相当于支付密码由用户自己保存

功能描述

  • 多账户管理
  • 基于ERC20的token 管理
  • 实现以太坊交易,token转账
  • 实现以太币,token的余额刷新
  • 支持助记词,私钥导入账户及随机新建账户

模块示意图

模块示意图

模块介绍

服务器端

网关

负责api总入口,权限管理

账户/权限服务

不重要略过

钱包核心服务

钱包创建
  • 支持BIP32,BIP39,BIP44
  • 当然BIP32 只用到第一组,master key ,方便后期扩展
  • BIP39 支持 助记词的功能
  • BIP44 支持路径的方式定义钱包结构树,可以从一组助记词派生不同虚拟币的地址,也是方便后期扩展
多网络支持
  • 项目并没有搭建自己的节点而是通过 infura节点
  • 支持 MAINNET,ROPSTEN,KOVAN,RINKEBY
  • 因为项目没有节点的功能,不是一个节点,只是实现了交易签名和广播,因此以上4个节点支持应该没问题(不完全测试^_^)
查询余额/交易
  • 项目使用了web3j这个项目作为辅助实现
  • 实现以太币余额查询,erc20 Token 接口的余额查询
  • 实现交易的离线签名,这里智能合约的调用(token交易)也属于交易只要涉及到gas 消耗都属于交易,所以都需要签名
离线签名
  • 服务器端保存用户私钥的方案:keystore 和geth一样
  • keystore 是 存储在数据库表的一个字段中的json字符串
  • geth 中有unlockAccount的感念,其实就是解密keystore而后缓存
  • 而本项目 是每次签名的时候临时unlock,用完当场销毁
  • unlock密码通过api传递,而api用https协议,也相对提高了安全性

服务器结构说明

钱包数据服务(核心服务)
  • 负责数据维护,并不负责交易的直接实现
  • 对于和节点通讯过程中非常耗费CPU时间以及内存占用
  • 和节点通讯很容易导致客户端长时间等待以及超时的可能性
  • 所以把通讯任务直接交由 通讯模块来异步完成
  • 弊端是客户端在提交交易后,需要多次刷新或者等待比较长的时间交易状态/余额状态才会发生改变
节点通讯模块
  • 因为基于消息队列模式(消息中间件RabbitMQ)
  • 相当于多个相同功能的模块排队等待处理业务,因此在业务提升的时候很方便扩容
  • 在业务返回结果后,也通过消息队列 通知 核心服务更新数据

对于web3j的坑点说明

  • 在交易发送完成后查询交易结果,99% 是获取不到结果的,并且判断是否有错误,提示没错误… 坑了我1天半
  • 这个不算是web3j的坑,是网上资料的坑,所有的介绍都是直接查询,从来不提及没结果的可能性
  • 解决方案是发送完成后直接查询,如果没有直接返回,核心模块发现没有交易结果,再发送一个查询任务到通讯模块,通讯模块循环查询判断是否有 result数据,没有间隔多少时间继续查
  • web3j对于以太币离线交易提供了一个专用的对象,这个对象内应该是实现了死循环查询,知道有结果了返回的

客户端说明

控制台

  • 用来后台管理的用的,管理员专用

小程序客户端

  • 基于微信小程序实现的客户端(因为内容原因,不让上线…)
  • 主界面介绍 

其他客户端

  • web端目前由其他组员在实现
  • android