自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(59)
  • 资源 (4)
  • 收藏
  • 关注

原创 TypeScript Agenda异常 undefined (reading ‘collection‘)

可以明确的是agendash 4.0.0的版本是没有解决这个问题的,估计是agenda的数据结构发生了变动,但是agendash这边还没有更新导致的,断点进去看了报错的地方,以下是其中一处在agenda.js中。断点可以看到与collection类似的属性实际上为db.collection 全局批量替换,可以修复该异常。在项目中使用agenda执行一些周期性任务,初始化项目集成agendash时候遇到一个问题。该异常显示没有_collection,使用的版本如下package.json。

2024-09-06 17:42:25 274

原创 Loki配置存储有效期

公司的向上服务是使用的Grafana+Promptail+Loki,Grafana负责数据呈现,Promptail负责日志的收集,Loki负责日志存储。相对于ELK的模式,要小不少,部署也非常容易,每日日志产生量100G以下的项目,都可以使用单例的Loki进行支持。Loki的配置部分相对还是蛮简单的,我所使用的Loki版本是 2.9.0。最新版本已经到3.1.0了,需要注意的是如果是搭建,最好是确保grafana+promptail+loki的版本兼容。,是不是就应该填写的是。我所遇到的坑是这里的。

2024-08-05 15:07:48 581

原创 springcloud-config客户端启用服务发现报错找不到bean EurekaHttpClient

在对已有项目进行改造的时候,集成SpringConfigStarter,编写完bootstrap.yml,在idea 启动项中编辑并新增VM options,该版本不加spring不会从configService获取信息,官方建议引入一个starter,但是在我的项目中并没有用处,点击运行,报错信息如下根据堆栈信息缺失EurekaHttpClient,很容易联想到是不是依赖问题,确认了pom.xml之后发现确实引入了

2024-07-20 16:43:58 581

原创 设置Docker中时区不生效的问题

我对此产生了疑问为什么,标准第二种方式可以但是第一种却不行,且大家并未对此产生怀疑,还有另外一种方式 就是在Dockerfile 构建镜像的时候 使用RUN 向 /etc/timezone 中写入具体时区,比如下面这样,代码引用自另外一篇博文。seo 第一,不代表就是SET_CONTAINER_TIMEZONE的出处,所以利用时间工具,验证了docker 出品时间2013年到2015年期间所有的搜搜记录,仅仅两条,根据信息显示,我直接搜索了SET_CONTAINER_TIMEZONE,弹出的第一篇文章是。

2024-07-01 18:06:00 502

原创 springcloud-config服务器,同样的配置在linux环境下不生效

这里有个需要注意的东西,spring.cloud.config.server.git.basedir=file:///E:/config-repo 在windows下需要是 file:/// 在linux下是file:/罪魁祸首出现了,问题就是出现在这里,windows的文件系统与linux的差异导致了,他们表现上的差异,我的处理方式是,将git url的地址改成和服务一样的驼峰大小写,再删除掉config client中配置的name。然后神奇的事情来了 同样的配置,和git仓库地址。

2024-06-28 16:05:54 1121

原创 springcloud-config 客户端启用服务发现client的情况下使用metadata中的username和password

可以看到只要metadata中包含password就会启动对应的replace逻辑,但是我配置的metadata中的key值为 user.name user.password 晕死。难道要重复配置两次?为了让spring admin 能正确获取到 spring config的actuator的信息,在eureka的metadata中添加了metadata.user.user metadata.user.password。这就不合理,遂断点查看源码,发现确实有相应的机制来提供 替换逻辑,具体代码如下。

2024-06-27 17:53:32 424

原创 springcould-config git源情况下报错app仓库找不到

不过一想,确实有存在的必要,比如仓库中提供的配置被不小心删除了,微服务那边自己本身有一套默认配置,默认配置也可以让微服务成功启动,但是提供的服务存在差异,此时从服务状态上是很难直接预警的,但是如果有这个能力之后,endpoint 就能提供对应监视仓库文件是否存在,且配合Grafana Prometheus 提供预警能力,另外config server完全可以给客户端提供配置服务,比如游戏的配置服务,还自带版本管理,是一个有效的使用场景。真是奇怪这个需要进一步探究,又或者在启动的时候直接吧app这个给移除?

2024-06-26 22:19:30 437

原创 springcloud-gateway 路由加载流程

这里两处找到了其定义,一个是为reactive非阻塞io准备的,一个是为阻塞io准备的,根据源代码可知,具体执行提供那个Locator取决于spring.cloud.discovery.reactive.enabled,我的项目中是通过VM Options参数的形式传入的。真的是笑死,出这个问题的原因是因为最开始的代码使用的出c4o老师生成的,一开始并不明确该代码的作用,后面查看文档才知道用于微服务发现。的目的是混合 多个来源的Routers定义比如配置文件,接口,注册中心,通过@Bean形式定义的路由。

2024-06-25 17:51:14 1106

原创 springcloud-config git配置源加载(部署公钥问题)

gitee 或者github 中有类似于发布密钥的功能,允许通过私钥只读访问指定的仓库,文档中说的是 限制了git的操作为pull 和 clone。然后对应平台的公钥管理中,添加公钥,将对应的.pub文件中的内容复制进去,选择好对应的仓库。私钥内容地址,这里有一个坑,如果使用的是properties格式的配置文件在配置的时候需要保留输出格式。需要注意的一点是使用这种方式生成的privatekey进行配置的时候。出来的内容,在复制到配置文件中的时候需要在每一行的末尾追加。这部分的字符串是没有RSA的。

2024-06-24 18:31:23 458

原创 springcloud-gateway include-expression 配置说明

参数允许接收一个 spel表达式,用于判定当前的service instance是否允许进行自动路由,我所遇到的问题是不清楚可以依靠那些字段进行判断,根据报错信息,可以定位到,spel表达式执行的上下文是。的逻辑和include-expression类似,排除那些服务不用自动添加,使用的不同服务发现具体得到的ServiceInstance会不一致,比如eureka的支持。在依赖eureka 服务发现并自动将发现服务器加入到router中的时候,需要指定对应的服务进行添加,根据文档描述可以使用。

2024-06-21 18:13:59 443

原创 SpringAdminClient如何将Httpbasic账号密码告知SpringAdminServer

具体原理还没有深究,等有时间了再来看,为什么这样可以,configService,通过eureka的形式也注册到微服务中,微服务通过discovery,服务发现的形式找到configService,开启这个能力需要在获取configService的微服务配置文件中开启。SpringAdmin会从metaData中自动获取,并在访问对应client的时候加上,其他的发现服务也有类似的实现,在官方文档此处有描述。

2024-05-28 17:21:10 253

原创 Unity Mirror 从入门到入神(三)

这个是所有的NetworkBehavior类都有的方法,新增的方法以 $"USER_CODE_{MethodName}"这样的名字作为方法名,然后这里有个细节就是在生成之后会将新生成方法的,内部的递归调用修改为调用新方法,在Command方法内递归调用Command方法并不会持续的触发远程调用,如果在Command方法中调用其他方法,这里将会执行原有方法的调用逻辑,以下是替换生成代码的相关逻辑Command部分。在前面我们了解了,Mirror是如何同步生成对象的,接下来我们来看看如何控制生成的对象。

2024-05-21 22:52:16 1526

原创 Unity Mirror 从入门到入神(二)

通过查看identity的初始代码,可以明白这里就是首次identity生成执行的逻辑代码,注释也有说明 ,代码不做过多说明,这里跳转到NetworkIdentity.OnStartServer 然后会遍历所有的NetworkBehaviour的comp.OnStartServer方法,注意到目前为止所有的逻辑都是服务端执行的即执行环境是在服务器上,所以在服务器上Start的时间是在OnStartServer之前的,不过此时客户端上还没有执行一句有关Spawn的代码。

2024-05-15 18:25:31 1204

原创 Unity Mirror 从入门到入神(一)

Mirror是一个unity网络同步框架,基于MonoBehaviour生命周期的回调的基础上进行数值的同步,将通讯方式和协议剥离,顶层业务只需关注写入读取流,具体传输协议由底层不同协议实现模块完成,使用Mirror编写网络联网游戏,需要掌握分布式编程,要习惯异步的思维,一个方法执行之后无法立刻拿到结果,可以利用协程来检查或者依托特定对象生命周期,也可以使用服务器回调的形式来做,先来看看unity原本的生命周期,关键是easy to use,国外倒是挺火的,国内没啥声响,我们团队在鉴于自己的实际情况,看重的

2024-05-14 21:46:28 2196

原创 Visual studio 2022 导入外部库

在"Configuration Properties" -> "C/C++" -> "General"中的"Additional Include Directories",添加你的头文件所在的目录。在弹出的对话框中,选择"Configuration Properties" -> "VC++ Directories"。:接下来,在"Configuration Properties" -> "Linker" -> "Input"中的"Additional Dependencies",添加你的库文件名,例如。

2023-05-13 14:32:40 1745

原创 no matching manifest for linux/arm64/v8 in the manifest list entries

no matching manifest for linux/arm64/v8 in the manifest list entries

2023-01-18 00:43:29 242

原创 NewPendingTransactions始末

可以理解为一个二维数组[x,y]x表示的是订阅的类型,y表示rpc session的唯一标识.虽然他是个map,但是完全可以用二维数组的思维理解.下面是所有的Type,即订阅的类型.newPendingTransactions 对应的订阅事件类型是。创建一个新的PendingTxs订阅,该方法会将,创建好的subscription通过下面的subscribe方法发送给install,进行注册,即我们上文提到的index。监听新增的订阅事件ws连入的时候,通过install ...

2022-08-16 09:42:10 620

原创 Ethersjs human readable abi

Ethersjs human readable abiethersjs 使用可阅读的abi方式初始化合约rpc方法时,应该如何填写,以至于可以正确使用struct类型进行传参。填写方式如下,来源于ethers文档官网abi-formats–human-readable-abiconst humanReadableAbi = [ // Simple types "constructor(string symbol, string name)", "function transferFrom

2022-02-18 14:00:06 415 2

原创 Solidity 0.8.10 无法通过更改storage 数组长度改变数组大小

文章目录Solidity 0.8.10 无法通过更改storage 数组长度改变数组大小场景解决Solidity 0.8.10 无法通过更改storage 数组长度改变数组大小场景在写一个可便利,可以随机索引功能的ArraysList的时候,发现无法通过直接更改全局状态数组变量的长度来完成移除一个元素的操作。这让我十分疑惑,因为solidity的文档中描述的内容为基本类型-数组创建内存数组可使用 new 关键字在内存中创建变长数组。 与 存储storage 数组相反的是,你 不能 通过修改成员

2022-01-18 18:00:36 514

转载 evm opcode

看到有其他博主的转载的操作码的列表,但是还是不够直观。也有可能是直接从solidity的官方网获取过来的,导致描述部分并没有严格的给出参数的划分。一下内容转载至​​​​​​Opcodes for the EVM | ethereum.orgA list of all available opcodes for the Ethereum virtual machine.https://ethereum.org/zh/developers/docs/evm/opcodes这部分的内容对调试交易,和深入...

2022-01-06 14:20:16 434

翻译 eth_debugTransaction 官方文档(中文翻译)

debug namespance文章目录debug namespanceeth_debugTransaction客户端方法调用JavaScript-based tracingStepeth_debugTransactiontraceTransaction 调试方法将尝试以与在网络上执行的完全相同的方式运行事务。在最终尝试执行与给定散列对应的事务之前,它将重放在此事务之前可能已执行的任何事务。除了交易的哈希值之外,您还可以给它一个次要的可选参数,用于指定此特定调用的选项。可能的选项是:disabl

2021-12-06 17:41:34 1168

原创 使用truffle verify plugin 验证Eip1967代理合约

准备阶段依赖版本如下Truffle v5.4.21 //file /package.json "dependencies": { "@truffle/hdwallet-provider": "^1.7.0", "ganache-cli": "^6.12.2", "truffle-contract-size": "^2.0.1" }, "devDependencies": { "@openzeppelin/contracts": "^4.3.3", "

2021-11-24 11:11:30 13655

原创 The requested contract was not found

使用openzeppelin 部署可以升级的合约时,遇到了The requested contract was not found. Make sure the source code is available for compilation官网的常见问题给给出了答案Frequently Asked Questions - OpenZeppelin Docshttps://docs.openzeppelin.com/upgrades-plugins/1.x/faq#why-do-i-have-

2021-11-23 17:48:00 11047

原创 对黑客思维的一种思考

这周是两年来的的第一个双休,真舒服!下午爬完山之后还去吃了椰子鸡,美滋滋,不要太美丽。下面开始正题。黑客思维的能力在我看来是一种发现问题,分析问题。利用自己学习能力将满足解决问题的条件筹齐,然后解决问题的一种能力。最核心的点还是学习。对于不停的接受新知识是一种非常痛苦的过程,当处于舒适的环境中,没有一定的压力,在年开头和年结束做着一样的内容,处理一样的事情这是非常舒适的,同时也意味着这种状态下给自己带来的提升非常有限。公司里有同事做技术的,进来的时候肉眼可见的很优秀,和他们在一起沟通交流是一件愉快的...

2021-09-05 01:07:19 647

原创 如何使用Java 验证以太坊钱包签名?

如何使用Java 验证以太坊钱包签名?场景在dapp应用中需要用户进行签名某个文本,后台验证这个文本来源于这个账号,然后进行对应的登录操作,返回于服务器交互的token。代码js前端钱包工具类import {ethers,providers} from 'ethers';class WalletHolder{ provider:providers.Provider; signer:providers.JsonRpcSigner; accounts:Array<st

2021-08-25 22:52:05 13212

原创 为什么合约中需要的验签方法?

为什么合约种需要的验签方法?文章目录为什么合约种需要的验签方法?场景总结场景我一直有这么一个疑惑,疑惑来源于openzeppelin utilities当中的验签方法。代码如下using ECDSA for bytes32;function _verify(bytes32 data, address account) pure returns (bool) { return keccak256(data) .toEthSignedMessageHash()

2021-08-18 21:54:57 1059

原创 Solidity 生成不可重复随机数源码

场景在合约中某些时候需要生成不可重复的随机数,比如NFT的TokenId由已开始的自增序列改为散列随机出现在可允许的范围内。就像开盲盒一样,可以随机开出。同时以太坊的随机数安全性是未知的,因为生成随机数的所有数值在生成之前都是可见的。如果需要生成真随机数可以使用”预言机“。代码contract TestHash{ //散列随机数的范围,此处为6,表明最终的随机数范围 [1,6] uint constant public TOKEN_LIMIT = 6; //散列数组,用

2021-07-21 21:07:27 5655

原创 nuxt build后static文件夹丢失

场景根据nuxt的官方文档,运行起来的时候会把static映射到 / 路劲下。我是用的是 npm run start方式部署的王章。即本地运行npm run build。之后得到.nuxt的文件夹。直接上传到服务器后使用pm2 start npm --run start解决方案直接把static 文件拷贝到与.nuxt的同级目录即可参考文档nuxt文档地址...

2020-10-20 11:19:21 1592

原创 百万并发websocket 压测操作手册

使用netty+spring 写好websocket服务之后,想要看看实际的运行效果,和并发数。网上确实websocket百万并发性能测试,但是没有给出具体的websocket-client 链接方式。这个就很尴尬了,起初我们使用nodejs ws 包,做连接发现在windows上面单台电脑发起的总计链接数量死活超不过2 w。在1.6w左右。这个和系统使用的端口的数有关系。通过netstat查看发现45000后的端口全部被占用了,之前的有没有使用的也不会使用。然后我们把nodejs的脚本放到了linux的测

2020-09-01 16:48:56 5885

原创 如何在前端编写一个精确到毫秒的倒计时

思路我之前在掘金上看到,有小天才的想法直接在倒计时的后面加一个gif。反正都看不清楚,所以只需要有个gif在固定的位置不停的播放就可以达到毫秒倒计时的效果。真是小天才,我也是第一次看到竟然有这种解决途径,原本我们的前端找设计师要了一个gif,奈何倒计时的gif图片效果确实很差,模糊加上字体大小不等,一眼看过去就很拙劣。解决方式其实非常简单,已在线上项目中时候,且效果非常好,并且并不会过多的消耗性能。秘密就在于欺骗眼睛。在真实的倒计时环境中,我们的眼睛并不能看到每一帧的图片,也就是1000毫秒 1000

2020-09-01 16:10:14 1384

原创 编程技巧——回调请藏好

# 已被扫描的回调接口这类的接口,如支付回调等。由于没法对回调的接口做并发,鉴权控制。没法再接受参数前对请求的合法性进行验证。微信支付回调需要再接受完参数之后通过签名验证是否是合法请求。考虑到微信支付回调存在并发的可能。没法做请求限制。也没有办法知道微信支付回调的所有服务器ip做白名单。唯一能做的就是避免接口被扫描出来。容易记忆的接口,在没有请求限制的情况下,就是CC攻击的明确靶标。只要足够T...

2020-05-04 14:19:20 158

原创 OKHTTP sslsocketfactory 过期,解决方案

报错:clientBuilder.sslSocketFactory(SSLSocketFactory) not supported on JDK 9+原因是单参数的 构造函数 被弃用。 try { TrustManagerFactory trustManagerFactory = null; trust...

2020-01-18 18:20:05 20026 2

原创 如何在spring-data-mongo aggregate指定多个字段为_id

mongo在做聚合group操作的时候,经常会遇到 联合字段唯一的场景。这里记录一下,在java中如何写group语句 Fields fields = Fields.fields(); Fields and = fields.and(Fields.field("$userOrder.advisory", "adv")).and(Fields.field("$in...

2020-01-10 16:41:27 1665

原创 超简单的短链解决方案

场景 在生成二维码,发邀请连接,动态说说的时候,犹豫连接过长导致二维码像素点过密,文字不突出。这个时候想要把长连接改成短码。工具redis hashIds环境java springboot步骤下载好redis之后启动 编写hashIds 的短码生成规则,核心代码如下 // hashids构造函数的第一个参数为混淆 “盐” 第二个值表示最小的长度 不代表固定长度...

2019-12-20 16:54:02 3004

翻译 如何升级Mongodb——官方指南

今天看到有人在群里问如何从4.0 升级到4.2,网上说的云里雾里的。此处贴出官网的升级指南,底部有原网文档连接。像这种操作手册的话,如果网上没有人有详细的对应版本的教程,最全的文档第一时间应该想到官方。该内容范围来源于与Google,再次鸣谢Google translate将独立版本升级到4.2如果您需要有关升级到4.2的指导,则MongoDB提供主要版本升级服务,以确保平稳过渡而不会中断...

2019-12-13 09:56:22 3968 1

原创 微擎离线安装指南

场景微擎在最新的官网上已经不在提供离线安装的版本,给了一个在线安装的install.php。宝塔中的一键部署也改成了在线安装。但是在没有独立ip的开发环境中安装却安装不上微擎,在线安装会先判断本站点外网是否能够访问,意思是必须具备独立ip。从而无法下载微擎的包。我问过运维的客服,客服给的答案是不支持离线安装。解决step 1:下载离线包,目前网上能找到的离线安装的教程使用的是微擎v1稳定版的...

2019-12-11 19:46:19 5557

原创 如何让mongo 字典collection中数据直接映射为java对象

在开发过程中,使用spring-data-mongo时,遇到这样的一个很尴尬得问题。建立一个collection来存放字典数据,如系统得配置参数,启动初始化的功能。将各种各样的数据直接存在mongo当中,存进去的时候没有任何问题,但是当取出的时候,如果字典的某个字段时一个内嵌的对象或者数组,那么数组中的对象,或者内嵌对象会被解析成HashMap返回。解决方式是,在内嵌对象对应的json数据结构深度...

2019-11-08 09:52:14 562

原创 spring-data-mongo 终于等到了@Aggregate

好巧不巧翻了一下 spring-data-mongo的文档,一不小心被我发现了新东西。@Aggregate终于不用繁琐的写 mongoOperation.aggregate(Aggregate.newAggregate(Aggregate.match,Aggregate.group))版本是在springboot 2.2.0.RELEASE使用方式举例:来之spring-data...

2019-11-04 16:29:43 515

原创 kettle抽取mongodb数据时——时间查询的问题

kettle在查询mongodb的时候少不了会进行检索时间,查询某个时间段内的数据。比如~[{ $match : { "createTime": { $lt: { "$date": "2019-10-19T16:00:00.000Z" }, $gt: { "$date": "2019-10-18T00:00:00.000Z" }, } }...

2019-10-21 19:55:54 2445 1

原创 通过图片识别定位拍摄地点——微信小程序

原理——元数据通过提取jpg格式图片中携带的元数据获得gps的信息,再通过调用地图openApi将经纬信息反解析为对应的实际地理位置。测试小程序在这里必备工具1.微信小程序的云函数2.腾讯地图open-api3.nodejs 基础语法4.exifreader nodejs moudle背景手机相机设置中,默认开了gps位置信息。这是一切的出发点,至于为什么会默认开启这里不是我们...

2019-10-10 18:06:02 53482 6

Pix2Pix_promise_2019_09_05_08_55_21.zip

ml5.js 一个基于 TensorFlow.js封装的接口更加友好的深度学习框架。让前端开发人员也能了解到这门技术。压缩包中包含实例代码pix2pix 生成一只皮卡丘

2019-10-17

base-dex2jar.jar

都懂的,具体干什么的就不多描述了。我是一个技术爱好者,(滑稽)

2019-10-17

dubbo-admin-server-0.2.0.jar

JDK1.8 开箱即用的springboot-dubbo-admin。默认启动在8080端口,可使用vim 更改资源文件properties信息改变绑定端口。可访问/swagger-ui.html查看数据。注意dubbo-admin 0.2.0 版本为前后端分离的。github 地址在这里 https://github.com/apache/dubbo-admin

2019-09-10

docker-machine-linux v0.16.1 免费下载

docker 被墙 github docker-machine 下载失败,试试这个离线包。下载积分没法更改?怎么回事?链接: https://pan.baidu.com/s/1pBPcCCG_qTkxEDHTkg-QHw 提取码: pv3c

2019-01-25

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除