- 博客(315)
- 资源 (6)
- 收藏
- 关注
原创 【异常处理】java: java.lang.NoSuchFieldError: Class com.sun.tools.javac.tree.JCTree$JCImport does not have
在项目中原本使用的是JDK17,随后升级到JDK21,提示以下报错:解决方案在中引入的版本比较低。需要升级参考文献stackoverflow
2024-07-02 11:37:10
267
原创 启动 WSL 2时报错“参考的对象类型不支持尝试的操作”
启动 WSL 2时报错“参考的对象类型不支持尝试的操作”。或者是:占位程序接收到错误数据一番搜索 发现说和代理有关。
2023-08-17 23:08:31
986
原创 【探讨】Java POI 处理 Excel 中的名称管理器
最近遇到了一些导表的问题。原本的导表工具导不了使用名称管理器的Excel。首先我们有两个Sheet。B1用的是名称管理器中的AAA, 而B2用的对应的公式。第二个sheet,名为Test2:这意味着无法解析这个命名统计后的值。为啥公式可以执行。但是从名称管理器拿不到?是否可以通过拿名称对应的公式来计算出相应的结果?这么看来RichString可以拿到我们想要的值。但是当我把Sheet2中对应的值改为数字:这里我想拿到一个可以区分是Name还是Formula的属性。
2023-07-28 10:05:02
1796
原创 fastutil简单测试下性能
简单测试一下fastutil的实现和Java类库实现的速率。使用jmh进行测试。简单解释一下,每轮测试预热2次,每次1s;实测2次,每次1秒。进行5轮测试。数组大小3种。
2023-07-27 11:56:55
387
原创 Github中Contribution activity不展示commit相关的信息
Github中Contribution activity不展示commit相关的信息
2023-04-19 16:01:56
477
1
原创 Vim文本对象中的句子s、段落p
引言使用了快半年的ideaVim了,是时候反馈社区了~~vim文本对象中大部分的文本对象都很容易理解。本文主要针对的是其中比较少用和比较难理解的句子和段落,进行代码的展示和理解。参考文献vim帮助文档正文这里我们需要先了解他们的定义:句子s一个句子以 ‘.’、’!’ 或者 ‘?’ 结尾并紧随着一个换行符、空格或者制表符。结束标点和空白字符之间可以出现任何数量的闭括号和引号: ‘)’、’]’、’"’ 和 ‘’’。段落和小节的边界也视为句子的边界。如果 ‘cpoptions’ 包含 ‘J
2022-02-28 11:12:47
699
原创 Vim快速选中一段方法/函数
引言使用了快半年的ideaVim了,是时候反馈社区了~~正文在方法中跳到方法开始的地方:[m进入行选中模式:shift + v匹配整个方法:%后言如果有更好的方法请留言赐教~~
2022-02-25 18:04:08
1607
原创 JAVA热更新
引言知识储备先看这篇文章:JAVA Instrument在这个案例中我们会利用Instrument机制实现一个简单的热更新案例。总体来说,步骤如下:创建一个带permain方法的jar包。这个方法定时检测某个文件然后进行热更新。命令行启动业务类时使用参数-javaagent,例如java -javaagent:jarpath[=选项] Main。网上有很多案例都是用Maven打jar包的,但是这里我讲的是纯命令行的做法。代码实现结构如下这个是编译后的结构,这里先从逻辑实现说起。1.
2021-11-02 13:46:33
3767
翻译 【翻译】JAVA Instrument
概述Package java.lang.instrument: 提供允许Java编程语言代理检测JVM上运行的程序的服务。检测机制是修改方法的字节码。其中包含两个接口:ClassFileTransformerInstrumentation一个类:ClassDefinition以及几个异常类:IllegalClassFormatExceptionUnmodifiableClassException使用方式命令行启动:java -javaagent:jarpath[=选项]
2021-10-29 16:27:32
512
原创 【案例】Netty客户端从控制台读取内容发送到服务端
引言最近在看《Netty实战》,其中一个案例是一个回显的客户端/服务端实现。这个以前在用原生jdk时是经典的案例。但是唯一的区别在于以前是从控制台读取输入。这个就是一个实现从控制台读取输入的案例。服务端import io.netty.bootstrap.ServerBootstrap;import io.netty.buffer.ByteBuf;import io.netty.channel.*;import io.netty.channel.nio.NioEventLoopGroup;i
2021-10-28 09:03:58
623
原创 【异常处理】rocketmq /lib/ext is not supported. Use -classpath instead.【rocketmq】
前言JAVA的版本是11的,在安装rocketmq时会报错,当下报了这个错:wyw@weiyuwang-ubuntu:~/Downloads/rocketmq-all-4.9.1-source-release/distribution$ sh bin/mqnamesrv-Djava.ext.dirs=/jre/lib/ext:/home/ligang/Downloads/rocketmq-all-4.9.1-source-release/distribution/bin/../lib:/lib/ext
2021-08-29 14:45:36
760
原创 一次SpringBoot定时任务优化
前言有些以前工作时写的博文,没有同步到博客过来。这一篇可能是1年多前写的,希望能给读者一些启示。我们是多款游戏公用一个数据后台,通过不同的配置区分不同的游戏和环境。通过指定application.properties的spring.profiles.active来决定读取哪套配置。例如我们需要发布到代号为sfish下的prd环境就选择spring.profiles.active=sfishlyprd,同时我们的配置文件在resources/config下有application-sfishlyprd.
2021-08-24 18:03:56
698
原创 一次JAVA内存泄露排查
前言有些以前工作时写的博文,没有同步到博客过来。这一篇可能是1年多前写的,希望能给读者一些启示。首先要介绍下项目的背景。我们的项目是部署到tomcat的,一个tomcat下有若干的Java项目在跑,我们发现在每次重新部署(把war包直接丢进webapps目录下)项目时经常会出现长时间卡顿等现象,并且后续的解决方案一般是重启tomcat。这个是我做的一次排查尝试。1. 首先开启tomcat manager界面。具体步骤为:/tomcat/conf/tomcat-users.xml添加:<
2021-08-24 10:58:37
383
原创 Java获取对象的内存地址
前言我们知道在Java中对于synchronized对于同步方法锁的是当前的实例对象。例如以下这段代码:import java.util.concurrent.TimeUnit;public class Test { public static void main(String[] args) { Test test = new Test(); test.helper(); } public synchronized void helper
2021-08-02 21:51:17
6087
3
原创 synchronized锁定的对象
前言现在在复看一遍《Java并发编程的艺术》,其中有段话如下:Java中的每一个对象都可以作为锁。具体为:普通同步方法,锁是当前实例对象。静态同步方法,锁是当前类的Class对象。同步方法块,锁是括号内配置的对象。一直没有验证,今天验证下。正文测试代码很简单,就是打印一句话,然后休眠5s。分3中情况看看不同的dump信息。普通同步方法import java.util.concurrent.TimeUnit;public class Test { public stati
2021-08-02 21:07:00
737
3
原创 skynet源码分析 make
文章目录skynet源码分析 make前言正文platform.mkMakefilejemallocskynet附录skynet源码分析 make前言本文的版本选择的是skynet v1.4.0。编译skynet不可以避免的就是make。本文就具体看看make相关的实现。关于make可以参考 阮一峰的网络日志。另外本文只涉及最上层的Makefile,对于子目录下的Makefile就不做分析了。附录是一些GCC的参数。正文当我们在skynet目录下执行make linux实际上我们就是在执行
2021-07-23 23:25:11
593
原创 Makefile |
Makefile |前言在学习skynet项目中的Makefile时,遇到以下这个语句时不是很明白:3rd/jemalloc/Makefile : | 3rd/jemalloc/autogen.sh cd 3rd/jemalloc && ./autogen.sh --with-jemalloc-prefix=je_ --enable-prof百度时也搜不到相关的消息,现在大概了解了相关的意思,写个博文记录下。正文谷歌中发现了官方的文档:https://www.gnu.org/
2021-07-22 22:55:11
198
原创 LUA实现数据结构:定长队列
前言之前发过一篇博文是关于双端队列的。这次的定长队列就基于上次的结构进行改造。LUA实现数据结构:双端队列这种数据结构在游戏可见各种记录。例如抽奖记录会不断的更替,后面产生的记录会替代先前的记录。客户端展示的时候可能需要展示10条,但是你这边存应该存20条之类的。代码定长队列实际上是个FIFO的队列,一端进一端出,同时队列的大小固定:在原本的基础上我们增加了length表示队列当前的长度,一个max_length表示队列的最大长度。当入队时判断是否大于max_length,大于的话就把先进
2021-04-08 10:36:40
475
原创 LUA实现数据结构:双端队列
前言lua内置的数据结构总的来说就一个:table。然而很多时候我们的业务需要各种各样的结构,这些结构都能基于table来写。双端队列的方法双端队列提供的方法主要有几种:左进左出右进右出在《programmer in lua》中提供了这样的结构:function listNew() return {first = 0, last = -1}endfunction pushFirst(list, value) local first = list.first - 1 l
2021-04-02 16:01:06
365
原创 ImportError: DLL load failed while importing _sqlite3: 找不到指定的模块
前言在学习Django遇到了上面这个问题。需要交代下背景python用的anaconda安装的。查阅结论查阅了相关的资料可以得出这个结论:python 内置了这个模块,而anaconda没有解决方法是将一个名为sqlite3.dll的文件放到DDLs目录下:D:\anaconda\DLLs衍生出了这些解决方案。解决方案plan A:在目录D:\anaconda\Library\bin下我发现了这个文件 复制到上述的目录下,程序可以正常启动。plan B:下载一个。网址:htt
2021-03-07 00:28:47
11569
22
原创 LUA在列表的循环中移除元素
前言在code的时候想到这个案例:local t = {1, 2, 3, 4, 5}for i = 1, #t do if i == 3 then table.remove(t, i) end endfor i = 1, # t do print(t[i])end不知道在LUA程序表现的效果是怎么样的。因为通常是不支持在循环中进行元素的删除操作。这种操作放到其他语言可能会抛异常。例如在JAVA中这种操作是不支持的,在迭代器中才能正确的删除。结论跑了一下,发现能正常跑:1
2021-02-02 10:19:16
1866
原创 声明变量的好处
前言最近在复读《C Primer Plus》其中有一部分内容给出了声明变量的好处。了解我的读者应该知道我之前使用的主语言是JAVA,要使用一个变量那必然需要事先声明,这是毫无疑问的事情。所以当然从来也没有思考过为什么要声明变量~现在流行的语言Python允许不声明变量直接使用。类型有强弱之分,这里也思考下强弱类型在声明的时候有哪些好处。正文C Primer Plus的原文提炼把所有变量放在一起可以让读者更容易掌握程序的内容。给变量起个有意义的名称。例如次数times会比一个a更加容易
2020-12-27 18:31:56
595
原创 第一次运行skynet
前言说实话,skynet我从来没有接触过,就连lua也只是看了些基础,C也是五年前上课的时候学过一学期。但是我相信我能完成这些挑战。前一节已经是安装完skynet了。这一节摸索下skynet的启动。在项目README.md中我们可以看到作为安装成功后的测试步骤为:Run these in different consoles:./skynet examples/config # Launch first skynet node (Gate server) and a skynet-master
2020-12-08 15:21:01
488
原创 安装skynet以及一些异常的处理
安装skynetstep1 : 克隆git库:git clone https://github.com/cloudwu/skynet.git这一步可选。切换版本,项目使用的版本是:fd1b230,也就是:V1.0.0 rc5git checkout `fd1b230`step2 : 进入目录skynet-1.0.0,执行命令:make linux原本的目录为:安装完成后:比较发现多了cservice和luaclib和skynet这三个。可能遇到的异常:/bin/sh: .
2020-12-08 15:05:50
1433
原创 windows consul的安装
第一步:官网下载https://www.consul.io/downloads第二步:解压安装第三步:运行打开当前路径下的命令行:一个方式是这样:另一个是按住shift右键打开。再或者添加到环境变量PATH中。尝试以下命令查看版本:consul --version跑起来:consul agent -dev...
2020-09-24 16:38:47
158
原创 IDEA 删除SVN文件
前言昨天发生了一个比较悲剧的事情。有一个需求是删除掉项目中的一些模块,主要是两个工作,一个是大块的删除文件,一个是删除这些文件的引用。我在IDEA/PyCharm删除完本地的文件后修改一些文件然后进行了SVN的提交。然后进行了一次更新。(这里我提交前知道没有其他人会提交)然后悲剧的发现我删除掉的文件全部回来了。。。问题原因在IDEA中直接删除是删除掉了本地的文件,而SVN发现这些东西缺失就下载回来了。解决方案摸索了一下,找到了这样的解决方案(不确定是否最佳):打开最下面的版本控制窗口,查
2020-09-22 09:49:31
4179
原创 记录一个LUA时间相关的坑
前言最近在做游戏里的活动配置需求,上线后有一天运营和我说配置的时间没有失效,而在QA时明明测试过功能是正常开启的。为此我查询了一番log,发现其中的奥秘,并直呼:坑。事故现场其实就是一个LUA里的时间转 Unix时间戳的问题,先看以下这段代码:date = os.time({year=2020,month=8,day=31,hour=0,min=0,sec=0})print(date)-- 1598803200然鹅,如果不了解LUA的源码可能就会踩到以下的这个坑:local date =
2020-09-08 22:38:32
851
原创 -bash: /usr/bin/java: /lib/ld-linux.so.2: bad ELF interpreter: 没有那个文件或目录
前言在vmvare虚拟机下通过 rpm安装jdk,首次安装的时候选错了jdk类型导致后续安装失败。首次下载的安装包为:jdk-8u261-linux-i586.rpm安装时报错,后下载:jdk-8u261-linux-x64.rpm安装时没有提示错误,但是安装后调用:-bash: /usr/bin/java: /lib/ld-linux.so.2: bad ELF interpreter: 没有那个文件或目录解决办法:先重新安装第一个包,发现相关的提示是 xxx 已经安装,这时候用r
2020-07-15 09:05:52
899
原创 lua实现堆排序
堆排序:local function swap(t, i, j) local temp = t[i] t[i] = t[j] t[j] = tempendlocal function heapInsert(t, i) -- i 下标的 父下标为 i / 2 while i > 1 and t[i] > t[i // 2] do swap(t, i, i // 2) i = i // 2 endend
2020-06-12 16:33:31
683
原创 lua string.split 类似JAVA中的string方法
function string.split(s, delimiter, limit) limit = limit or math.maxinteger local res = {} local pos = 0; for vstart, vend in function() return string.find(s, delimiter, pos, true) end do if #res >= limit then return res end
2020-06-11 10:37:00
309
原创 lua string.trim 类似JAVA中的string方法
lua中没有string.trim函数,实现上用模式匹配进行替换。这里gsub返回的是两个值,用括号可以只返回一个数据。function string.trim(s) return (s:gsub("^%s+", ""):gsub("%s+$", ""))endprint( string.trim(" abcdef gabegs "))...
2020-06-10 16:18:37
1058
1
原创 svn打开仓库慢
SVN打开仓库很慢,显示 svn please wait while the repository browser is initializing在 settings中 → Log Caching → Power user defaults
2020-06-10 10:42:01
1169
原创 lua string.indexOf
在lua中没有string.indexOf方法,取而代之的是一个string.find方法,string.find是一个很强大的函数,但是在这里我只展示一个可以直接用的。需要注意的是lua中字符下标是从1开始。function string.indexOf(s, pattern, init) init = init or 0 local index = string.find(s, pattern, init, true) return index or -1;endprin
2020-06-08 18:09:56
2694
原创 linux手动安装ldoc
下载包:https://github.com/stevedonovan/LDoc/releases安装:tar -xzvf LDoc-1.4.6cd LDoc-1.4.6sudo make install# 测试Penlight和LDoc是否成功lua ldoc.lua tests/example/tests/modtest.lua注意安装LDoc需要先安装Penlight:...
2020-05-06 13:46:49
263
手动安装ldoc需要的安装包
2020-05-06
微信小程序数学题库
2018-04-27
设计模式期末作业(要求5个以上的设计模式的模拟系统)
2018-01-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人