![](https://img-blog.csdnimg.cn/20190927151026427.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
javase
java基础
.net core game
致力于.net core全栈游戏服务器开发
展开
-
IDEA远程Debug java程序
1)服务器启动时就要打开远程debug端口。2)在idea中添加一个远程debug命令。3)点击调试按钮进行运行即可。原创 2024-05-16 18:47:13 · 86 阅读 · 0 评论 -
字符串拼接性能对比(Double.compare存一个类最快,不要存String)
因此推荐: new StringBuilder().append(x)....toString()方式。原创 2024-04-29 15:37:18 · 330 阅读 · 0 评论 -
定点数: 用于浮点数的精确比较(左移16位)
定点数: 用于浮点数的精确比较(左移16位)int x = (int)(dir.x * (1 << 16));乘以65536倍,这样就ok了原创 2021-03-14 17:42:10 · 681 阅读 · 0 评论 -
0xff到底是多少(0x是16进制,f对应11111,因此是11111111,也就是2的8次方-1=255)
var a = 0xff;console.log(a); // 255/*ff也就是8个111111111 ->2的8次方-1*/分析:0x其实就是16进制,15*16 + 15 = 255或者:转化为2进制,就是8个1,因此也是255...原创 2019-07-29 11:07:58 · 28493 阅读 · 0 评论 -
win下:1.下载jdk 2.修改maven镜像 环境搭建
1)阿里云镜像<mirror> <id>nexus-aliyun</id> <mirrorOf>central</mirrorOf> <name>Nexus aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public</url></mirror>...原创 2021-03-14 16:08:46 · 91 阅读 · 0 评论 -
AtomicBoolean的使用
【代码】AtomicBoolean的使用。原创 2023-12-29 14:55:00 · 373 阅读 · 0 评论 -
【支持双向绑定的Map之BiMap】 1.forcePut 2.inverse
理解:我觉得还是用forcePut比较好。原创 2023-12-21 11:10:42 · 392 阅读 · 0 评论 -
通过泛型+接口实现多变的参数
【代码】通过泛型+接口实现多变的参数。原创 2023-11-30 15:14:18 · 413 阅读 · 0 评论 -
Table和HashBasedTable的使用案例
【代码】Table和HashBasedTable的使用案例。原创 2023-11-21 11:38:21 · 373 阅读 · 0 评论 -
体会jdk17对于空指针的增强
jdk17jdk11。原创 2023-10-07 15:11:50 · 723 阅读 · 0 评论 -
Java Unsafe类学习笔记
正如其名字,是不安全的,因为java语言层面是不允许直接操作内存的,为了扩展这个能力,引入了Unsafe类。4.class对象相关。6.对象操作,获取对象属性偏移,再操作。3.线程调度中Park和Unpark。2.cas中比较交换的cpu的指令。原创 2023-08-05 15:38:17 · 47 阅读 · 0 评论 -
巧妙使用System.exit(1)实现关服流程
【代码】巧妙使用System.exit(1)实现关服流程。原创 2023-08-03 16:38:02 · 61 阅读 · 0 评论 -
xdb和CompletableFuture学习笔记 死锁的思考
并不是真的把任务取消了,而是仅仅是一个标记,任务是否执行不一定,很可能执行了。标记完后,去拿结果,就会触发CancellationException。父任务再等待子任务执行,但是:有很多个父任务,把线程池占满了,但是又在等待子任务执行。子任务又没线程可执行,就死锁了。CompletionStage // 实现编排接口。解决办法:父任务 和 子任务 要用线程池进行隔离。4)runAsync 和 supplyAsync。如果任务已经完成了,那取消也没用了。1)可组合 + 异步。3)构建依赖树的过程。原创 2023-07-24 18:24:54 · 108 阅读 · 0 评论 -
Arrays.copyOf是浅拷贝
可见对于dst的修改,src也变了。原创 2023-07-17 10:24:16 · 56 阅读 · 0 评论 -
死循环排查
可以看出:一个线程在关服时,一直处于:运行状态。可以看出:cpu很高。原创 2023-04-17 15:53:11 · 63 阅读 · 0 评论 -
使用JavaAssist获取方法参数名
【代码】使用JavaAssist获取方法参数名。原创 2023-04-07 14:44:18 · 328 阅读 · 0 评论 -
理解弱引用
【代码】理解弱引用。原创 2023-04-06 21:21:57 · 221 阅读 · 0 评论 -
简单的链表
【代码】简单的链表。原创 2023-03-25 14:35:30 · 58 阅读 · 0 评论 -
BufferedReader进行文件一次读取一行字符串
【代码】BufferedReader进行文件一次读取一行字符串。原创 2022-12-31 11:48:44 · 652 阅读 · 0 评论 -
奇怪的文件路径问题(\ \\ / //等) getAbsolutePath与getCanonicalPath
不断地修改SERVER_PATH 和 PROTO_PATH,发现构造出来的路径千奇百怪,但是最终构造出来的File,发现都是存在的。其实,File内部有一定的纠错能力,如果不是标准的路径,会进行一定的处理。// 这种是报错的,\是特殊符号,因此需要写成 "\\"转义下才行。原创 2022-12-20 15:38:39 · 242 阅读 · 0 评论 -
Runtime 执行命令与StringTokenizer的知识
总结:StringTokenizer构造方法默认传入要处理的字符串,分隔符的话,默认使用 \t \n 空格等,这样子就可以解析出来了。在Runtime run = Runtime.getRuntime();进入exec内部,就可以看到对于命令会先进行分割。原创 2022-12-20 15:31:22 · 57 阅读 · 0 评论 -
【通过arthas实战Java线程的6种状态】
Java线程的6种状态及切换(透彻讲解)_潘建南的博客-CSDN博客_线程状态原创 2021-10-09 10:44:55 · 162 阅读 · 0 评论 -
【java黑科技之-字节码的2种应用】1.javassist 2.agent(监控与调试)
毫无疑问,java最实用的一个就是“热更新”机制了,go语言再好,这点很难实现,java这一点就是非常牛逼的,不管你性能再高,热更新实现不了,在游戏服务器这里,绝对是硬伤。我觉得这就是java最牛逼的地方了,有了字节码这个中间层,我们能做的东西实在太多太多了,像go这种,我认为就只能适合写中间件了,做游戏这块,抽象能力差,热更新机制很难实现,那就不太适合了。比如:统计方法耗时,或者做任何你想到的增强功能,都是可以。自己手写的话,可以用于实现动态代理,动态增强类的功能。原创 2022-11-25 23:46:21 · 620 阅读 · 0 评论 -
深入理解类加载机制
【代码】深入理解类加载机制。原创 2022-09-05 00:46:57 · 194 阅读 · 0 评论 -
关于Exception e日志的打印
2.其它类型的需要打印详细信息的,则使用:void error(java.lang.String s, java.lang.Object... objects);1.对于异常的打印,使用:logger.error(String s, Throwable e),而且第1个参数写:""原创 2022-11-01 16:25:45 · 683 阅读 · 0 评论 -
使用位运算实现权限管理的数据存储
【代码】使用位运算实现权限管理的数据存储。原创 2022-10-20 15:29:52 · 220 阅读 · 0 评论 -
Object转泛型的坑
【代码】Object转泛型的坑。原创 2022-09-29 11:40:49 · 314 阅读 · 0 评论 -
构造方法引用
【代码】构造方法引用。原创 2022-09-22 14:57:33 · 82 阅读 · 0 评论 -
Serialiable接口和serialVersionUID的作用及其在redisson中的应用
2.serialVersionUID如果不指定,修改了代码后,如果直接读取class文件,可能会出现序列号冲突。1.Serialiable接口是标记型接口,是给人看的。原创 2022-08-22 10:41:37 · 738 阅读 · 0 评论 -
config文件夹+BufferedReader实现配置文件的读取
结论:1.直接运行java,则是位于项目路径下2,。打包后运行jar,则是和jar包同级目录下原创 2022-06-05 00:12:11 · 184 阅读 · 0 评论 -
jd-gui的使用
1)直接在github中下载jd-gui对应的jar包。2)搞好目录3)编写好运行脚本 jd-gui.sh#!/bin/bashcd `dirname $0`cd ..java -jar jd-gui-1.6.6.jarpause思考 :可以直接查看 jar包中的代码。可以实现代码的跳转。......原创 2022-04-29 17:07:06 · 5282 阅读 · 0 评论 -
汉字和英文字符对齐
package org.example.basic;public class Test3 { public static void main(String[] args) { info(1, "rtert书rterrterrterrtererterterrterr", 33.3f); info(22, "r书编te编书r", 45.5f); info(10000000, "哈f书编书编书编书书编书编编tererter", 20.3f); .原创 2022-04-13 18:38:54 · 566 阅读 · 0 评论 -
移位和10进制(用于游戏中互斥的状态表示)
public class Test16 { public static void main(String[] args) { int LOGIC_INVISIBLE1 = 0x10; int LOGIC_INVISIBLE2 = 0x0010; int LOGIC_INVISIBLE3 = 1 << 8; System.out.println(LOGIC_INVISIBLE1); System.out..原创 2022-04-02 11:27:20 · 3158 阅读 · 0 评论 -
@Data @AllArgsConstructor标记在Model上实现hash和equals和get set方法、构造函数
package org.example.testEqualsAndHashCode;import com.google.common.collect.Sets;import lombok.AllArgsConstructor;import lombok.Data;import java.util.Set;public class Main { public static void main(String[] args) { Set<ItemModel> .原创 2022-03-31 20:09:46 · 221 阅读 · 0 评论 -
System.getProperty(“user.dir“) 项目所在的路径
package org.example.testUserDir;public class Main { public static void main(String[] args) { System.out.println(System.getProperty("user.dir")); }}/*D:\TestJava\test_java */这样子比如:自己不想把资源放在resources下,如:放在上一级的conf文件夹下,那就可以直接以这样子 的方式查.原创 2022-03-25 17:28:57 · 653 阅读 · 0 评论 -
【双亲委派机制】1.向上委托查找,向下加载 2.防止应用中自己的类把java最顶层的同名类给覆盖掉
1.向上委托查找,向下加载2.防止自己的类把系统的类覆盖掉。-----------------打破:可以修改默认的加载规则,如:先加载自己的。原创 2022-02-27 21:48:42 · 336 阅读 · 0 评论 -
【Optional(作用是:可以有警惕程序员此处值可能会是空)】1.map和ifPresent 2.ofNullable和orElse
package org.example.testOptional;import lombok.Data;import lombok.ToString;import java.util.Optional;public class Main { public static Optional<A> getOpA() { return Optional.ofNullable(null); } public static void main(St.原创 2022-02-25 14:47:10 · 1246 阅读 · 0 评论 -
用java代码调用jmx中的函数
package org.example.testJmx;import javax.management.*;import java.lang.management.ManagementFactory;public class Main { public static void main(String[] args) throws Exception { MBeanServer mbs = ManagementFactory.getPlatformMBeanServer(.原创 2022-02-19 17:58:42 · 208 阅读 · 0 评论 -
[多个线程对一个变量共享] 1.继承Runnable接口实现共享变量当做属性 2.内部类(直接可以操作共享变量)
1)公共变量容易放到Runnable类中,实现Thread共用2)继承Thread,可以在类中加一个成员变量,这样多个Thread类持有这个变量,也可以共同访问原创 2020-02-24 17:21:03 · 456 阅读 · 0 评论 -
Reflections类实现接口和注解的扫描
pom.xml <dependency> <groupId>org.reflections</groupId> <artifactId>reflections</artifactId> <version>0.9.10</version> </dependency>加了某个注解和实现某类接口的扫描packa原创 2021-07-05 10:34:18 · 647 阅读 · 0 评论