
Java基础
文章平均质量分 89
第二颗大白菜
每天写点什么,不是为了得到一些什么,也不是向谁证明一些什么,更不是为了存在感,而是让自己知道每天都做了些什么。
展开
-
三级缓存(不是CPU的概念,而是一种技术上逻辑容错处理方案)
三级缓存(不是CPU的概念,而是一种技术上逻辑容错处理方案)相信硬件出生的同学,对这个一眼就认为是CPU的三级缓存。百科上解释的三级缓存三级缓存是为读取二级缓存后未命中的数据设计的—种缓存,在拥有三级缓存的CPU中,只有约5%的数据需要从内存中调用,这进一步提高了CPU的效率。其运作原理在于使用较快速的储存装置保留一份从慢速储存装置中所读取数据且进行拷贝,当有需要再从较慢的储存体中读写数据时,缓存(cache)能够使得读写的动作先在快速的装置上完成,如此会使系统的响应较为快速。它这个三.原创 2021-02-10 17:12:01 · 3497 阅读 · 0 评论 -
0拷贝浅析
0拷贝浅析话不多说,先上维基翻译一下吧:“零复制”描述了计算机操作,其中CPU不执行将数据从一个存储区域复制到另一个存储区域的任务。 通过网络传输文件时,通常用于节省CPU周期和内存带宽。再看看详细描述零组件版本的操作系统元素(例如设备驱动程序,文件系统和网络协议栈)极大地提高了某些应用程序的性能,并更有效地利用了系统资源。通过允许CPU继续执行其他任务,同时在计算机的另一部分中并行进行数据复制,可以提高性能。同样,零拷贝操作减少了用户空间和内...原创 2021-01-18 17:40:01 · 443 阅读 · 0 评论 -
@FeignClient 中使用 “Patch”方法报错 “Invalid HTTP method: PATCH executing PATCH xxxx”
@PatchMapping("/api/v1/xxxxx")void xxxXXX(@RequestBody XxxXx request);上述写法报错“Invalid HTTP method: PATCH executing PATCH xxxx”@RequestMapping(value = "/api/v1/xxxxxx", method = RequestMethod.PATCH)void xxxxXXXX(@RequestBody XxxxXx request);...原创 2020-11-27 15:36:29 · 4306 阅读 · 0 评论 -
【论代码踩坑】使用AOP 获取请求 方法对应的注解信息
如题,为什么是坑呢?其实就是获取method对象上的 注解信息,那么肯定得找到对应的方法 对象笔者之前的做法是,通过pjp.getSignature().getName()获取上下文的方法名,然后通过pjp.getTarget().getClass()去找到类中的所有方法,再通过方法名去挨个匹配,找到对应的方法对象(方法如下) private Method currentMethod(Class<?> clazz, String methodName) {.原创 2020-10-25 20:52:57 · 1671 阅读 · 0 评论 -
关于项目中集成Elasticsearch中间件,使用Page工具分页,调用getTotalPages()方法始终结果为1.
断点分析:getSize()方法是否为0? /* * (non-Javadoc) * @see org.springframework.data.domain.Page#getTotalPages() */ @Override public int getTotalPages() { return getSize() == 0 ? 1 : (int) Math.ceil((double) total / (double) getSize()); }应该是0......不想纠结原创 2020-09-11 18:06:05 · 2684 阅读 · 2 评论 -
关于实现 List<Node> 转 Tree,未知根节点条件 集合 树化
背景,树存在文件及文件夹。(例如操作系统中的资源管理器)1.首先定义两个实体/** * 文件夹 实体 */ @Data private static class Folder { private int id; private String name; private int fId; public Folder(int id, String name, int fId) {原创 2020-09-10 17:45:19 · 1232 阅读 · 0 评论 -
二叉树遍历 规则?你懂了吗?我之前没懂
笔者不知道为啥,老容易忘四种二叉树遍历顺序。。。。。。。。。。。。。。此处特地写个笔记!!!!!!!!不能再忘了!!!必须一写就会知道;层级遍历:这个简单一些,比较容易理解,就是从根节点开始,依次从左到右遍历过去!就是了。画图!!这个不多说。12345678 10 111.先序遍历:先根再左再右这个就是从根节点出发,一直先左,再右,如果左节点有子节点,那么就把当前节点当做根节点,再执行先根再左再右 依次递归。答案是:1 2 4 ...原创 2020-08-21 17:28:09 · 1386 阅读 · 0 评论 -
今天唠唠HashMap
切入点,说说几个典型的:HashMap/ Hashtable/TreeMap其中HashMap其实都被讲烂了,但是呢,咱还是说一说。说道HashMap,我个人觉得,先从构造入手,毕竟先new,才不会空指针。也可以从静态入手。先看看HashMap中有哪些常量/*** The default initial capacity - MUST be a power of two.*/static final int DEFAULT_INITIAL_CAPACITY =...原创 2020-08-14 08:36:53 · 880 阅读 · 0 评论 -
使集合A按照集合B的顺序进行排序(Java)
话不多说,直接上代码 //对标签进行自定义排序 int size = listA.size(); listA.sort(((o1, o2) -> { int io1 = listBIds.indexOf(o1.getId()); int io2 = listBIds.indexOf(o2.getId()); io1 = (io1 != -1) ? (size - io1) : io1; io2 = (io2 != -1) ? (size - io2) :原创 2020-07-09 08:49:20 · 2259 阅读 · 0 评论 -
关于线程的使用问题,使用(ThreadPoolExecutor)
int NUMBER_OF_CORES = Runtime.getRuntime().availableProcessors();int KEEP_ALIVE_TIME = 1;TimeUnit KEEP_ALIVE_TIME_UNIT = TimeUnit.SECONDS;BlockingQueue<Runnable> taskQueue = new LinkedBlockingQueue<Runnable>();ExecutorService executorServi.原创 2020-05-25 14:33:10 · 1003 阅读 · 0 评论 -
解决谷歌浏览器访问其他路径静态资源报错:Provisional headers are shown
网络上查了一番,记个笔记:此为跨域了。至于为什么突然产生跨域了。通常为访问你的域名,然后你有调用了其他网站的路径的资源。直接上解决方案。服务端声明配置即可。本人网站比较猛,直接全部允许即可。大家可按需配置@Configurationpublic class CorsConfig { private CorsConfiguration buildConfig() { ...原创 2020-03-21 17:28:54 · 2537 阅读 · 0 评论 -
字符在对应编码占用的字节数
英文字母:字节数 : 1;编码:GB2312字节数 : 1;编码:GBK字节数 : 1;编码:GB18030字节数 : 1;编码:ISO-8859-1字节数 : 1;编码:UTF-8字节数 : 4;编码:UTF-16字节数 : 2;编码:UTF-16BE字节数 : 2;编码:UTF-16LE中文汉字:字节数 : 2;编码:GB2312字节数 : ...原创 2020-03-20 13:34:50 · 1450 阅读 · 0 评论 -
局部变量与成员变量的对比区别(从各个角度对比)
局部变量与成员变量的对比声明的位置 局部变量:方法体{}中,形参,代码块{}中 成员变量:类中方法外 类变量:有static修饰 实例变量:没有static修饰 修饰符 局部变量:final 成员变量:public、protected、private、final、static、volatile、transient 值存储的位置 局部变量:栈(线程私有的...原创 2019-10-19 12:11:53 · 2411 阅读 · 0 评论 -
解读递归和迭代的区别(实例说明)
话不多说,我们先用偏官方的语言来讲解一下什么是递归和迭代方法调用自身称为递归;利用变量的原值退出新值称之为迭代。那么各自都有什么优缺点呢?递归优点:大问题转换为小问题,可以减少代码量,同时在代码精简的基础上,造成可读性好。 缺点:递归调用浪费了空间,而且递归太深的时候容易造成堆栈溢出。迭代优点:代码运行效率好,因为时间只是与循环次数呈一个线性关系,而且没有额外的...原创 2019-10-19 11:16:33 · 4397 阅读 · 0 评论 -
类初始化过程和实例初始化过程
1.类初始化过程一个类要创建实例需要先加载并初始化该类 main方法所在的类需要先加载和初始化 一个子类要初始化需要先初始化父类 一个类初始化就是执行<clinit>()方法 <clinit>()方法由静态类变量显示赋值代码和静态代码块组成 2.实例初始化就是执行<init>()方法<init>()方法可能重载有多个,...原创 2019-10-17 20:45:27 · 2343 阅读 · 0 评论