java学习
|Ringleader|
对游戏非常感兴趣的前Java后端程序员。
记录学习Unity过程,一步一个脚印成为游戏开发大佬,做出我心中的游戏,完成我的小说。
感兴趣的不妨关注一波。
展开
-
Mockito.when refEq精确匹配
今天在补单测时有个需求,对不同id返回不同数据,以前是通过写多个thenReturn()按请求顺序返回。找了半天没找到什么详细的,只有关键词refEq,试了下,好像确实可以。简单示意了下,这里写法是id匹配上就返回,忽略deviceName。今天还是想看看有没有方法能精确匹配。别耽误了时间,赶紧完成工作。原创 2022-10-20 17:06:39 · 899 阅读 · 0 评论 -
NoSuchBeanDefinitionException: No qualifying bean of type ‘xxx‘ available
NoSuchBeanDefinitionException: No qualifying bean of type ‘xxx’ available检查命名 扫包 等情况 搜索才知道 是spring-boot-devtools依赖造成的classLoader不同https://www.programminghunter.com/article/1573309353/转载 2022-05-12 22:48:00 · 180 阅读 · 0 评论 -
2021.1.25 git revert、kafka
没想到今天又学到一些东西git revert操作上午干了两件事,第一个是昨晚一直在做的,修改遗漏返回码的问题,兜兜转转,发现之前的做法是对的,需要回退上次的提交,那么问题来了,是手动改还是学一下git操作呢,当然一步到位啊。正好这次改动比较小,学一下,以后改动多的时候revert操作就方便多了。查了一下回退有两种操作,git revert和git reset,大概区别如下git revert:回滚某次提交,相当于本次操作的反操作。不影响这个commit之后提交,会生成新的提交记录,不过可能会有提交原创 2022-01-25 15:34:39 · 951 阅读 · 0 评论 -
2022.1.17 elastic
今天主要是页面根据一字段查询没有结果,我去kibana查发现报错:Cannot search on field [xxx] since it is not indexed-遂准备深入一下,以及这个elasticsearch-rest-level-client是怎么个用法,需要配置es么。es index template 使用elasticsearch-rest-level-clientCannot search on field [xxx] since it is not indexed:没对原创 2022-01-19 17:47:05 · 1459 阅读 · 0 评论 -
2022.1.17 服务与组件 pom继承与聚合(parent modules标签)
今天突然对服务和依赖的基础组件产生疑惑,比如rpc服务调用,为什么还需要服务与组件参考:微服务时代组件化和服务化的抉择 (https://www.cnblogs.com/vivotech/p/14592370.html)看了这个大概了解组件和服务的区别,但还是不太明白,为什么都是要调用第三方的东西,有的是依赖share包,有的是依赖client,也许是我不明白为什么rpc调用那个share包属不属于组件。未完待续…pom继承与聚合聚合主要是为了方便快速构建项目,继承主要是为了消除重复配置原创 2022-01-17 19:17:05 · 360 阅读 · 0 评论 -
随记20220104 99 95线
今天团队做一个mongo分片性能测试,同事贴出测试结果,响应时间有平均,95,99,我不知道什么意思,遂查了一下大概意思是平均响应时间有时不能很好反应性能问题,比如平均下来很好,但很多响应时间超时,这就需要95或者99响应时间,来表示95%或者99%的请求响应时间低于此值。还有qps:每秒查询的处理量参考:https://blog.csdn.net/lluozh2015/article/details/100527332...原创 2022-01-14 16:13:24 · 446 阅读 · 0 评论 -
20220109 docker起不来
之前安装docker总是起不来,也不知怎么找到了一篇方法,就成功就觉了前两天一个同事问起我装了docker,说他起不来,我就把之前的方法给了他,确实搞定了,遂记录一下其实就是hyper那个计算服务无法启动...原创 2022-01-10 10:25:08 · 355 阅读 · 0 评论 -
2022.1.6 线上问题记录( dubbo不可用、服务熔断)
元旦前,平台大量服务出现熔断,A等一些服务未能自动重启,导致服务一直不可用,返回500,经过同事排查,是基础鉴权服务出现一段时间非滚动部署造成的服务不可用,服务A在60s内1000请求 50%失败,触发熔断,请求直接返回500,不可用原因:DNS 变更 dubbo zk 获取不到对应服务的 provider解决方法:重启服务暂时解决晚上Boss拉着开了个复盘会,我也跟着听了听,好多概念都不太清楚,遂查询记录下。 服务熔断 熔断恢复方案简单了解就是服务熔断是防止服务雪崩的措施,而熔断是一种原创 2022-01-06 21:46:30 · 720 阅读 · 0 评论 -
随记20211231 log4j
昨天我把高并发反序列化测试结果给提出问题的团队看了,我认为反序列化缺少某个类造成hessian打印日志,对性能的影响不大,但他们测试发现会有几十倍的差距,并给了个博客表明高并发log4j同步日志输出的性能瓶颈,我看了确实有道理,但我测试并发还不够大吗,都100线程20次查询,也进行1000线程10次查询,并没有出现文章所说的竞争同步锁的现象,我突然发现是不是我用的是log4j2,而不是log4j的原因。之前log4j2因为远程代码执行漏洞,我和同事还加班把20多个服务log4j2升级到2.16.0,期间还原创 2022-01-04 10:06:44 · 181 阅读 · 0 评论 -
随记20211229 dubbo依赖注入失败
今天脱离项目,整dubbo,老是报NPE,一直依赖注入失败,就算是本地的服务也老是NPE,整的有些崩溃想好好搞一下spring依赖注入和dubbo案例,记录下spring依赖注入dubbo简单案例原创 2021-12-29 14:37:06 · 383 阅读 · 0 评论 -
类加载器、双亲委派机制与打破(Driver、TCCL、Tomcat等)
类与类加载器、Class< T>对于任意一个类,都必须由加载它的类加载器和这个类本身一起共同确立其在Java虚拟机中的唯一性,每 一个类加载器,都拥有一个独立的类名称空间。这句话可以表达得更通俗一些:比较两个类是否“相 等”,只有在这两个类是由同一个类加载器加载的前提下才有意义,否则,即使这两个类来源于同一个 Class文件,被同一个Java虚拟机加载,只要加载它们的类加载器不同,那这两个类就必定不相等。这里所指的“相等”,包括代表类的Class对象的equals()方法、isAssigna原创 2020-08-08 02:19:40 · 578 阅读 · 0 评论 -
try、catch、finally以及包含return的执行顺序与返回值问题
try catch finally执行顺序public void tryFinally(){ try { tryIt(); } catch (Exception e) { handle(); } finally { wrap(); } }对应字节码:变量表:异常表:解释:注意EndPC不包括所指行,[Start PC,End PC)异常测试:p原创 2020-08-07 01:38:32 · 227 阅读 · 0 评论 -
JVM学习笔记-执行引擎(尚硅谷宋红康JVM)
文章目录执行引擎概述Java代码编译和执行过程机器码、指令、汇编语言解释器JIT编器执行引擎概述执行引擎是Java虚拟机核心的组成部分之一。“虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和操作系统层面上的,而虚拟机的执行引擎则是由软件自行实现的,因此可以不受物理条件制约地定制指令集与执行引擎的结构体系,能够执行那些不被硬件直接支持的指令集格式。JVM的主要任务是负责装载字节码到其内部,但字节码并不能够直接运行在原创 2020-08-01 01:24:02 · 529 阅读 · 0 评论 -
JVM学习笔记-直接内存(尚硅谷宋红康JVM)
文章目录直接内存概述直接内存概述不是虚拟机运行时数据区的一部分,也不是《Java虚拟机规范》中定义的内存区域。直接内存是在Java堆外的、直接向系统申请的内存区间。来源于NIO,通过存在堆中的DirectByteBuffer操作Native内存通常,访问直接内存的速度会优于Java堆。即读写性能高。因此出于性能考虑,读写频繁的场合可能会考虑使用直接内存。Java的NIO库允许Java程序使用直接内存,用于数据缓冲区private static final int BUFFER =原创 2020-07-31 18:00:31 · 264 阅读 · 0 评论 -
JVM学习笔记--对象实例化内存布局与访问定位(尚硅谷宋红康JVM)
文章目录对象的实例化**创建对象步骤:**对象的内存布局对象的访问定位面试题对象的实例化对象创建方式:创建对象步骤:判断对象对应的类是否加载、链接、初始化虚拟机遇到一条new指令,首先去检查这个指令的参数能否在Metaspace的常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已经被加载、解析和初始化。(即判断类元信息是否存在)。如果没有,那么在双亲委派模式下,使用当前类加载器以ClassLoader+包名+类名为Key进行查找对应的.class文件。如果没有找到文件,则抛原创 2020-07-31 17:28:57 · 393 阅读 · 0 评论 -
JVM学习-方法区(尚硅谷JVM笔记)
文章目录1、栈、堆、方法区的交互关系2、方法区概述3、方法区的内部结构3.1 运行时常量池4、方法区使用举例5、方法区的演进细节6、方法区的垃圾回收总结1、栈、堆、方法区的交互关系运行时数据区结构从线程共享与否的角度来看:其他结构:2、方法区概述《Java虚拟机规范》中明确说明:“尽管所有的方法区在逻辑上是属于堆的一部,,但一些简单的实现可能不会选择去进行垃圾收集或者进行压缩。”但对于HotSpotJVM而言,方法区还有一个别名叫做Non-Heap(非堆),目的就是要和堆分开。所以,方原创 2020-07-31 15:47:41 · 236 阅读 · 0 评论 -
JVM学习笔记-堆空间
文章目录堆空间堆的核心概述堆-内存细分堆空间大小的设置年轻代与老年代对象分配过程(==待修改完善==)Minor GC、MajorGC、Full GC最简单的分代式GC策略的触发条件内存分配策略(或对象提升(Promotion)规则)对象分配过程:TLAB堆空间参数设置小结**逃逸分析——堆是分配对象存储的唯一选择吗?逃逸分析:代码优化**栈上分配:****同步省略(锁消除):****分离对象或标量替换:**总结堆空间堆的核心概述一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域。原创 2020-07-30 12:09:30 · 495 阅读 · 0 评论 -
java学习-File类知识点小结
File类java.io.File类 :文件和目录路径名的抽象表示形式。java把电脑中的文件和文件夹(目录)封装为了一个File类,我们可以使用File类对文件和文件夹进行操作,我们可以使用File类的方法:创建一个文件/文件夹删除文件/文件夹获取文件/文件夹判断文件/文件夹是否存在对文件夹进行遍历获取文件的大小File类是一个与系统无关的类,任何的操作系统都可以使用这个类中的方法重点:记住这三个单词file 文件director:文件夹/目录path:路径静态变量原创 2020-06-29 00:05:00 · 179 阅读 · 0 评论 -
JUC学习笔记 3-JMM、Volatile、单例模式
JMM谈谈对 volatile 的理解Volatile是java虚拟机提供轻量级的同步机制保证可见性不保证原子性禁止指令重排什么是JMMJMM:Java内存模型,不存在的东西、概念/模型关于JMM的一些同步约定:线程解锁前,必须把共享变量立刻刷回主存。线程加锁前,必须读取主存中的最新值到工作内存中!加锁和解锁是同一把锁8种操作线程 工作内存、主内存内存交互操作有8种,虚拟机实现必须保证每一个操作都是原子的,不可在分的(对于double和long类型的变量来说,l原创 2020-06-26 21:21:36 · 127 阅读 · 0 评论 -
JUC学习笔记-2 阻塞队列、线程池、四大函数式接口、stream流式计算、forkJoin、异步回调
阻塞队列什么时候使用:多线程并发处理、线程池四组API方式抛出异常有返回值、不抛异常阻塞 等待超时等待添加addoffer()put()offer(E e,long timeout,TimeUnit timeUnit)移除removepoll()take()poll(long timeout,TimeUnit timeUnit)检查队首元素elementpeek()--/**抛异常*/ private static void原创 2020-06-26 21:21:07 · 206 阅读 · 0 评论 -
JUC学习笔记4-CAS、原子引用、自旋锁、死锁
CASCAS :compare and set 比较并交换比较当前工作内存中的值和主内存中的值,如果这个值是期望的,那么则执行操作!如果不是就一直循环(自旋锁)Unsafe类缺点循环会耗时一次只能保证一个共享变量的原子性ABA问题CAS:ABA问题(狸猫换太子)原子引用解决ABA问题,引入原子引用带版本号的原子操作static AtomicStampedReference<Integer> atomicInteger = new AtomicStampe原创 2020-06-26 16:26:17 · 240 阅读 · 0 评论 -
JUC学习-1 进程与线程、Lock
进程与线程进程是操作系统资源分配的基本单位; 线程是任务调度和执行的基本单位。(1)进程进程是程序的一次执行过程,是一个动态概念,是程序在执行过程中分配和管理资源的基本单位,每一个进程都有一个自己的地址空间,至少有 5 种基本状态,它们是:初始态,执行态,等待状态,就绪状态,终止状态。(2)线程线程是CPU调度和分派的基本单位,它可与同属一个进程的其他的线程共享进程所拥有的全部资源。(3)联系线程是进程的一部分,一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。(4)原创 2020-06-24 01:00:50 · 96 阅读 · 0 评论 -
java自定义注解的简单应用
Annotation(注解)是 Java 提供的一种对元程序中元素关联信息和元数据(metadata)的途径和方法。Annatation(注解)是一个接口,程序可以通过反射来获取指定程序中元素的 Annotation对象,然后通过该 Annotation 对象来获取注解中的元数据信息。自定义定义注解import java.lang.annotation.*;/** * @author ringleader * @Description 自定义注解 * @date 2020/6/10 */.原创 2020-06-11 15:37:16 · 130 阅读 · 0 评论 -
java反射知识点简析
在 Java 中的反射机制是指在运行状态中,对于任意一个类都能够知道这个类所有的属性和方法;并且对于任意一个对象,都能够调用它的任意一个方法;这种动态获取信息以及动态调用对象方法的功能成为 Java 语言的反射机制。反射的应用场合编译时类型和运行时类型在 Java 程序中许多对象在运行是都会出现两种类型:编译时类型和运行时类型。 编译时的类型由声明对象时实用的类型来决定,运行时的类型由实际赋值给对象的类型决定 。如:Person p=new Student();其中编译时类型为 Person,.原创 2020-06-11 15:27:42 · 150 阅读 · 0 评论 -
Map遍历(for、for-each、Iterator、Collection.forEach()、stream流)
几种Map遍历操作private void mapTraversal(){ HashMap<Integer, Integer> map = new HashMap<>(); for (int i = 0; i < 5; i++) { map.put(i,-i); } // 1、在for-each循环中遍历keys或values for (Integer key : m原创 2020-06-06 21:29:56 · 336 阅读 · 0 评论