- 博客(324)
- 资源 (10)
- 收藏
- 关注
原创 静态代码自动扫描p3c的使用
当一家公司上了一定的规模,项目越来越多,代码也越来越庞大,然后就是各种五花八门的代码格式、代码规范,通过主程们code review 耗时耗力,很多主程也缺少主观能动性和精力去cover code review这事项,如果有东西能自动化去检查团队成员的编码规范,这样就可以大大的提高代码质量,也可以让核心人员从code review 中解脱出来,本文提到的P3C-PMD就是这种神器。
2022-02-07 16:31:21 2850
原创 链路跟踪Jaeger使用总结
Jaeger是一款广受欢迎的开源分布式链路跟踪系统,兼容OpenTracing API,且已加入CNCF开源组织。主要功能是聚合来自各个异构系统的实时监控数据。对一些常用的框架通过插件可以达到无侵入式跟踪,比如Apache HttpClient,Elasticsearch,JDBC,Kafka,Memcached,Mongo,OkHttp,Redis,Spring Boot,Spring Cloud,要通过Jaeger将Java应用数据上报至链路追踪控制台,首先需要完成埋点工作。
2022-02-07 15:25:56 8709
原创 如何用 APT(Annotation Processing Tool)自动生成代码
我们很多人都写过代码自动生成的工具,比如用python结合moko模板引擎,或者java 结合freemarker模板引擎,protoc 等,实现解析策划数据类,proto协议类,或者数据库层的实体类。大大节省了我们开发的时间,让我们可以懒得光明正大。那么,有没有办法当你写好协议后,只要一保存编译,相关的协议接收和发送类的接口就自动实现了呢?答案是有的。注解处理器是(Annotation Processor)是javac的一个工具,用来在编译时扫描和编译,处理注解并生成锁期望的代码,提高生产效率。
2022-02-05 21:23:25 1271
原创 Java基准测试工具JMH使用
JMH,即Java Microbenchmark Harness,这是专门用于进行代码的微基准测试的一套工具API。JMH 由 OpenJDK/Oracle 里面那群开发了 Java 编译器的大牛们所开发 。何谓 Micro Benchmark 呢? 简单地说就是在 方法层面上的 benchmark,精度可以精确到微秒级。本文主要介绍了性能基准测试工具 JMH,它可以通过一些功能来规避由 JVM 中的 JIT 或者其他优化对性能测试造成的影响。
2022-02-05 17:52:30 9939
原创 Prometheus的使用总结
Prometheus 是一套开源的系统监控报警框架。它受启发于 Google 的 Brogmon 监控系统,由工作在 SoundCloud 的前 google 员工在 2012 年创建,作为社区开源项目进行开发,并于 2015 年正式发布。2016 年,Prometheus 正式加入 Cloud Native Computing Foundation(CNCF)基金会的项目,成为受欢迎度仅次于 Kubernetes 的项目。2017 年底发布了基于全新存储层的 2.0 版本,能更好地与容器平台、云平台配
2021-12-29 12:11:21 2992
原创 吐槽下Nacos服务发现
1.注销实例的API或者SDK(deregisterInstance),会导致该条记录消失,如果只是modifyinstance,会导致永远驻留在数据中2.游戏区做了迁移或者IP漂移的话,老的脏数据还是会在服务器列表里,没法通过zoneid去覆盖,只能通过人工去把该节点下线3.目前为了减少线程占用,dir和game的底层用的是nacos API,基于http client封装,但为了实时同步(subscribe),dir服又同时用了nacos SDK4.用Nacos SDK 的话,进程会新增10几个线
2021-11-26 10:57:33 3920
原创 k8s及常用指令使用总结
Kubernetes (K8S) 是由Google设计的用于自动化部署、大规模可伸缩、管理容器化应用程序的开源的容器编排引擎,目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。 传统的应用部署方式是通过插件或脚本来安装应用。这样做的缺点是应用的运行、配置、管理、所有生存周期将与当前操作系统绑定,这样做并不利于应用的升级更新/回滚等操作,当然也可以通过创建虚拟机的方式来实现某些功能,但是虚拟机非常重,并不利于可移植性。
2021-10-26 17:31:50 1627 1
原创 我眼中的OpenTracing
分布式链路跟踪最先由 Google在 Dapper论文中提出的一套链路追踪的 API 规范,支持多种编程语言,与平台无关、与厂商无关,使得开发人员能够方便的添加(或更换)链路跟踪系统的实现,虽然OpenTracing不是一个标准规范,但现在大多数链路跟踪系统都在尽量兼容OpenTracing。目前符合这API标准的就有 SkyWalking,Jaeger,Zipkin,Open Telemetry,Pinpoint、CAT等等
2021-10-22 15:47:42 790
原创 VirtualThread Pin的处理总结
Pin的状态指的是VirtualThread在freeze时无法让出Carrier Thread(协程执行时挂载的物理线程)。主要有两种情况下会导致Pin:VirtualThread的调用栈包含JNI frame。因为JNI调用的实现是C++代码,可以做的事情非常多,例如它可以保存当前Carrier Thread的Thread ID,如果这时切换出去,那么下一次执行时,如果另一个Carrier Thread来执行这个协程,将会产生逻辑错误(Carrier Thread的ID不一致);VirtualThr
2021-09-10 21:02:40 523
原创 LOG4J2-MDC-全链路跟踪等功能研究
MDC(Mapped Diagnostic Context,映射调试上下文)是 log4j 、logback及log4j2 提供的一种方便在多线程条件下记录日志的功能。MDC 可以看成是一个与当前线程绑定的哈希表,内部是基于threadLocal实现,可以往其中添加键值对。MDC 中包含的内容可以被同一线程中执行的代码所访问。当开启isThreadContextMapInheritable属性后,当前线程的子线程会继承其父线程中的 MDC 的内容。当需要记录日志时,日志框架会自动从 MDC中获取所需
2021-08-10 14:54:38 2317
原创 谈谈对Angular,Vue,React 的认识
Vue和React两个JavaScript框架都是当下比较受欢迎的。不同点:Angular (74.8K star)是基于 TypeScript 的 Javascript 框架。由 Google 进行开发和维护,它被描述为“超级厉害的 JavaScript MVW 框架”。React (172K star) 被描述为 “用于构建用户界面的 JavaScript 库”,是Facebook创建的JavaScript UI框架,它支撑着包括Instagram在内的大多数Facebook网站。React与当时
2021-07-22 14:32:01 407 1
原创 Docker使用总结
Docker 是一个能够把开发的应用程序自动部署到容器的开源引擎。也就是说Docker跟Vmware等虚拟机软件相比,它是开源的。一个原生的Linux容器格式,Docker中称为libcontainerLinux内核的命名空间(namespace),用于隔离文件系统、进程和网络文件系统隔离,进程隔离,网络隔离,资源隔离与分组,写时复制,交互式shell...
2021-07-07 15:40:32 498
原创 酷炫的IDEA启动图黑客主题来了
2021年4月份的某一天,IDEA提示我版本更新,我更新完,在等待移动的过程中,我期待有个酷炫的画面出来,就像幻视绚丽登场。期待中的画面:实际等来的画面:眼花缭乱的让我仿佛感觉到期待的幻视穿上了东北花棉袄妖娆而来。让点泪奔~~~忍了他好几个月了,端午节闲来没事,今天终于有点时间换上了大师级启动图。先上图,那么,我们如何去替换呢?1.先退出正在运行的 IDEA, 避免出现冲突2.找到文件 idea 安装路径/lib/resources.jarmacOS IntelliJ IDEA.a
2021-06-14 13:42:26 926 2
原创 Tcaplus使用总结
一、Tcaplus是什么?游戏数据库 TcaplusDB 是专为游戏设计的 NoSQL 分布式数据存储服务,支持 Protobuf 接口访问,Tcaplus 将 Cache 与硬盘结合,追求高性能的同时,也节省成本,很好地支持全区全服和分区分服,并针对游戏爆发增长和长尾运维特点提供不停机扩缩容、备份容灾、快速回档等全套解决方案,安全可信赖。目前应用于《王者荣耀》、《穿越火线》、《火影忍者》等数百款流行游戏。二、使用步骤特别要注意的是,在购买时,连接协议里选择TDR,这样就支持xml表定义了。如何定义
2021-06-11 17:40:24 1151 4
原创 《万国觉醒》之游戏战报FreeMarker模板引擎实现
这两天在玩《万国觉醒》,看了下战报,每一回合伤害,技能,buf明细都写的很详尽,如果自己去实现,该怎么做呢?想想,只要有个记录战斗明细的对象+模板引擎,一整合,需要的结果就出来了,就拿接口很丰富的freemarker练手。好,我们先来学习下这个模板引擎的基础知识。
2021-06-09 10:39:44 1568
原创 上标下标汇总
0到9小数字符号:上标:º ¹ ² ³ ⁴⁵ ⁶ ⁷ ⁸ ⁹ ⁺ ⁻ ⁼ ⁽ ⁾ ⁿ ′ ½下标:₀ ₁ ₂ ₃ ₄ ₅ ₆ ₇ ₈ ₉ ₊ ₋ ₌ ₍ ₎
2021-04-22 18:11:11 68427 8
原创 Nacos使用总结
官网 :http://nacos.io下载地址 本文下载的为2.0.0版本:https://github.com/alibaba/nacos/releasesLinux/Unix/Mac启动命令(standalone代表着单机模式运行,非集群模式):sh startup.sh -m standalone打开页面http://127.0.0.1:8848/nacos/index.html[root@VM-0-15-centos logs]# jps -l30601 sun
2021-04-08 11:21:29 10401 2
原创 游戏服务器设计-脚本系统设计
本文对脚本引擎beanshell 和groovy做了技术选型,给出了优劣对比结果,并设计了脚本系统UI界面。游戏项目中都会遇到以下的一些需求:1.从内存里查询数据2.修复个别玩家的异常数据如何能最快捷的方式去实现,目前有两种脚本引擎可以选择:beanshell 和groovy.
2021-03-17 15:59:18 691
原创 markdown语法使用总结
1.上标### 2. 数据结构和算法* 寻路算法 * NavMesh * A<sup>*</sup>* 推荐算法 * Collaborative Filtering * Factor Analysis
2021-03-11 19:24:01 213 2
原创 谈谈用统一网关gate的利与弊
在架构设计中,在网关这块,很多公司喜欢用统一网关,特别是电子商务,金融,团购等等日常生活中会用到的互联网产品,但多服多区模式下的游戏是否也适用统一网关呢?那么,统一网关带来的好处是什么呢?1.安全性,所有终端请求都需要经过网关层,再分发给各种微服务,这样,如果我们保证了网关层的安全性,高可用性(HA),负载均衡(LB),那么,很多业务的运行就不会直接暴露在公网上。2.节省资源,IP段的资源(特别是IPV4段目前越来越少的现状)和带宽资源(针对一台云主机分配一定带宽的购买方式,而非共享
2021-02-08 16:14:17 1697 1
原创 Google Guava EventBus使用
Guava是Google开源的一个Java基础类库,它在Google内部被广泛使用。Guava提供了很多功能模块比如:集合、并发库、缓存等,EventBus是其中的一个module,本篇主要讲一下EventBus的使用。简单介绍EventBus:核心类,代表了一个事件总线。Publish事件也由它发起。 AsyncEventBus:异步事件总线,在分发事件的时候,将其压入一个全局队列的异步分发模式。 Subscriber:对某个事件的处理器抽象,封装了事件的订阅者以及处理器,并负责事件处理。
2021-01-30 19:11:41 815
原创 在linux系统上搭建egret编译环境
为了能在服务器自动化编译打包H5项目,需要在测试服搭建一套环境系统:CentOS release 6.9 (Final)安装nodejswget https://nodejs.org/download/release/v9.11.2/node-v9.11.2-linux-x64.tar.gz解压到/usr/local/下,在/etc/profile.d/extend.sh下配置环境变量export NODE_HOME=/usr/local/node-9.11.2export PATH
2021-01-23 20:54:04 541
原创 Redis主从配置总结
IP:192.168.1.100主节点 6379从节点 6380从6380节点里要加slaveof 192.168.1.100 6379把主节点停掉,6380从节点输入slaveof no one主节点恢复后,现将6379设置为从节点,6380的数据也就恢复过来了,6379的节点如下操作slaveof 192.168.1.100 63806...
2020-12-18 18:21:44 138
原创 selenium使用总结
web自动化测试第6步:模拟鼠标操作(ActionChains)selenium webdriver 实现Canvas画布自动化测试ChromeDriver设置有密码的代理(Java版本)解决Selenium 调用IEDriverServer打开IE浏览器用 canvas 的 getImageData 做点有趣的事https://docs.opencv.org/java/...
2020-12-18 18:19:55 255
原创 腾讯云如何挂载数据盘
执行以下命令,对 “/dev/vdb” 裸设备直接创建文件系统格式。 mkfs -t <文件系统格式> /dev/vdb 不同文件系统支持的分区大小不同,请根据实际需求合理选择文件系统。以设置文件系统为EXT4为例: mkfs -t ext4 /dev/vdb 注意: 格式化需要等待一段时间,请观察系统运行状态,不要退出。 执行以下命令,新建挂载点。 mkdir <挂载点> 以新建挂载点/data为例: mkdir /data ...
2020-11-08 17:02:40 1475
原创 源码系列-LongAdder和AtomicLong对比
相当于一个AtomicLong数组,初始化时,初始化大小为2的数组,并初始化相对应位置的一个元素Cell,当每次去尝试获取时,根据当前线程获得的随机值threadLocalRandom取模(大小为cell的数组容量)获得索引值,然后回去找相应位置的元素,找不到则插入新的cell, 然后进行CAS操作(比如compareAndSwapLong),与AtomicLong原理相同,操作成功则结束,操作失败,会尝试扩容为原先cell数组大小的两倍,然后重新初始化要更新的索引值(threadLocalRando...
2020-10-29 19:51:09 389
原创 RocketMQ使用总结
Topic可以理解为在rocketMq体系当中作为一个逻辑消息组织形式,一般情况下一类业务消息会申请一个topic来实现业务之间隔离。Topic是一个逻辑上的概念,实际上在每个broker上以queue的形式保存,也就是说每个topic在broker上会划分成几个逻辑队列,每个逻辑队列保存一部分消息数据,但是保存的消息数据实际上不是真正的消息数据,而是指向commit log的消息索引。...
2020-08-28 16:13:30 403
原创 IntelliJ IDEA 使用总结
1.如何申请IntelliJ IDEA -->通过开源项目免费申请 IntelliJ IDEA <--2.如何切换成中文版Settings -> Plugins-->下载 chinese language package3.IntelliJ IDEA设置快捷键为Eclipse风格File-->setting-->keyMap4设置成eclipse的主题File -> Settings -> .................
2020-08-21 15:59:15 2622
原创 Zstandard (zstd)压缩算法在JAVA上的使用
Zstandard是facebook厂商提供的一种高压缩率的实时压缩算法,他在压缩比和压缩速度上做了很好的平衡,同时还提供高速的解码器,针对小数据,也提供了一种叫做字典压缩算法,从样本中可以创建出字典集合数据,Zstandard库以BSD协议方式开源。以下是基准测试数据对比:压缩算法 压缩比 压缩速度 解压缩速度 zstd 1.4.5 -1 2.884 500 MB/s 1660 MB/s zlib1.2.11 -1 2.743 90 MB..
2020-07-28 17:37:41 8920 1
原创 JUnit5使用总结
看一下几个注解在junit4和junit5版本不同的写法:junit4 junit5 使用场景 @BeforeClass @BeforeAll 在当前类的所有测试方法之前执行。注解在【静态方法】上 @AfterClass @AfterAll 在当前类中的所有测试方法之后执行。注解在【静态方法】上 @Before @BeforeEach 在每个测试方法之前执行。注解在【非静态方法】上 @After @AfterEach ...
2020-07-27 18:31:32 1052
原创 如何检测出redis的哪些key在消耗内存
今天发现测试环境Redis进程被OOM killer了,所以,直觉就是优先找出消耗内存的罪魁祸首key。redis-rdb-tools是专门用来干这活的,我们先来了解下:一、rdbtools工具介绍源码地址:https://github.com/sripathikrishnan/redis-rdb-tools/redis-rdb-tools 是一个用python开发的用于解析 rdb 文件的工具,在解析的时候,它会生成类似于xml sax解析器的事件,在内存检测方面非常有效它主要有...
2020-07-16 22:25:45 870
原创 Jenkins极速入门
Jenkins简介 Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。官网地址为http://jenkins-ci.org/Jenkins部署环境 1.jdk环境,Jenkins是java语言开发的,因需要jdk环境。 2.git/svn客户端,因一般代码是放在git/svn服务器上的,我们需要拉取代码。 3.gradle或者ant打包 以上是自动化部署j..
2020-06-06 18:51:23 446
原创 Ansible极速入门
官方定义:"Ansible is Simple IT Automation"——简单的自动化IT工具Ansible 为运维自动化工具,一种集成 IT 系统的配置管理、应用部署、执行特定任务的开源平台,是 AnsibleWorks 公司名下的项目,该公司由 Cobbler 及 Func 的作者于 2012 年创建成立。Ansible 基于 Python 语言实现,由 Paramiko 和 PyYAML 两个关键模块构建。Ansible 特点:部署简单,只需在主控端部署 Ansible 环境,被控端无需做
2020-06-05 18:15:30 371
原创 Saltstack极速入门
saltstack介绍Salt,一种全新的基础设施管理方式,部署轻松,在几分钟内可运行起来,扩展性好,很容易管理上万台服务器,速度够快,服务器之间秒级通讯,主要功能有远程执行,配置管理。Saltstack官方文档Saltstack原理Salt使用server-agent通信模型,服务端组件被称为Salt master,agent被称为Salt minionSalt master主要负责向Salt minions发送命令,然后聚合并显示这些命令的结果。一个Salt master可以管理多个mi
2020-06-03 20:37:56 516
原创 如何用JAVA调用服务器系统指令
java在企业级项目开发中,无论是强制性的功能需要,还是为了简便java的实现,需要调用服务器命令脚本来执行。在java中,RunTime.getRuntime().exec()就实现了这个功能。用法: public Process exec(String command)//在单独的进程中执行指定的字符串命令。 public Process exec(String [] cmdArray)//在单独的进程中执行指定命令和变量 public Process exec(String ...
2020-05-13 18:07:29 1059
原创 如何在linux搭建FTP服务
安装yum -y install vsftpd创建个用户useradd -s /sbin/nologin -d /data/client/chess ooxxpasswd -l ooxx然后编辑vsftpd配置文件,位置是:vim /etc/vsftpd/vsftpd.conf找到anonymous_enable这个配置项,默认是YES,修改成NO,表示不允许匿名用户登录找到chroot_local_user=YES这个配置,默认是注释的,这里去掉注释,表示只让用户在自己的目录
2020-05-12 15:40:10 315
protobuf-java-3.3.0.jar
2017-10-13
精简版JRE7 64位 (6MB)
2013-09-29
MINA NIO 高性能异步并发网络通讯框架
2008-07-23
commons-io-1.4.jar
2008-05-16
jakarta-oro-2.0.8.jar
2008-05-16
commons-net-1.4.1.jar
2008-05-16
commons-io-1.4.jar等
2008-05-16
SQL如何做交集查询
2023-09-22
vs code 环境下VUE vite mock api文件能设置断点调试嘛?
2022-08-30
TA创建的收藏夹 TA关注的收藏夹
TA关注的人