并发笔记- 并发工具之JUC包 简介java.util.concurrent(JUC) 本篇文章仅仅是对JUC包下的工具做一些简单的阐述,其每一项都可以更加的具体深入理解。 该包下是在并发编程中常用的实用程序类。这个包包括一些小型的标准化可扩展框架,以及一些提供有用功能的类。 Atomic(原子类) 该包下主要提供一些数据类型的原子类,如AtomicBoolean、AtomicInteger、AtomicIntegerA 2022-04-27 编程语言 > Java > 并发相关 #JUC
算法篇-Reservoir Sampling 蓄水池抽样 简介水库抽样是一系列随机算法,用于从 n 个项目的列表中随机选择k个样本,其中n是一个非常大或未知的数字。通常n足够大,以至于列表不适合主内存。例如,Google 和 Facebook 中的搜索查询列表。所以我们得到了一个大的数字数组(或流),我们需要编写一个有效的函数来随机选择k个数字,其中1 <= k <= n。让输入数组为stream[]。 一个简单的解决方案是创建一个最大大小 2022-04-25 基础算法 > 算法笔记 #蓄水池抽样
数据结构-Segment Tree 线段树 简介 线段树(Segment Tree)主要用于维护区间信息(要求满足结合律)。与树状数组相比,它可以实现 O(logn)的区间修改,还可以同时支持多种操作(加、乘),更具通用性。 应用线段树 segmentTree 是一个二叉树,每个结点保存数组 nums 在区间 [s,e] 的最小值、最大值或者总和等信息。线段树可以用树也可以用数组(堆式存储)来实现。对于数组实现,假设根结点的下标为 0 2022-04-19 数据结构 #线段树
源码学习-Dubbo SPI 源码分析 背景 今天我们来聊一聊Dubbo 的 SPI Java 的 SPI 见 https://mikeygithub.github.io/2021/07/21/yuque/coahg1/ 简介SPI : Service Porvider Interface 服务提供接口。使我们的应用程序具有可扩展的服务(微内核架构)、使用者能够添加服务提供者,而无需修改原始应用程序即可实现其适配,像JDBC、一些 2022-04-17 编程语言 > Java > 源码分析 #Dubbo-SPI
MySQL篇-MySQL查询优化 简单案例接口查询列表在公司的系统中有一个接口查询耗时非常久大概每次查询十多秒看了一下该数据库表的记录只有八十多万行,理论上不应该这么慢,开始查看对应的查询SQL 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636 2022-03-09 数据库组 > MySQL #SQL优化
学习笔记-GraphQL 背景 在开发过程中可能你会遇到这样的情况,打开你的应用主页,需要去加载个人信息,签到记录,你发表的文章列表,文章里面的评论记录,评论里面的用户头像等一系列关联的数据。一次性需要发送很多次请次,你可能会问那我把这些数据全部放在一个接口里不就好了嘛整那么多花里胡哨的干嘛?确实是可以,但是这无疑增加了后端的工作量且降低接口的稳定性,而现有的接口也能满足你的需求。 简介基于上面存在的问题GraphQL 2022-03-01 学习笔记 #graphql
源码学习-Spring 源码分析 简介 spring 是一款轻量级的框架,主要包含的功能有AOP、IOC(DI),包含的模块如下 123456789101112131415161718spring├── aopalliance-1.0.jar├── commons-logging-1.2.jar├── spring-aop-5.2.3.RELEASE.jar├── spring-aspects-5.2.3.RELEASE.ja 2022-02-28 编程语言 > Java > 源码分析 #Spring
数据结构-Skip List 跳表 背景 跳表其实是基于排序链表进行建立每一层和段索引的一种数据结构,包括但不限于redis、lucene都有采用的跳表的数据结构来存储数据。 在了解跳表之前我们需要知道链表,链表也是一种常用的数据结构,其节点主要的结构是由节点值+下一个节点的指针组成。结构体 1234class Node{ int val; Node next;} 跳表 基于上面的链表当我们需要查询链 2022-02-20 数据结构 #跳表
Linux篇-Linux相关笔记 1.history 查看命令输入时间 1234#设置格式化export HISTTIMEFORMAT='%F %T '#查看历史输入命令history 2.查看历史输入命令 123456789101112131. !!:重复执行上一条指令2. !a:重复执行上一条以a为首的指令3. !number:重复执行上一条在history表中记录号码为number的指令4. !-nu 2022-02-07 服务器篇 > Linux服务器 #Linux
Java Agent 独立于应用程序的代理程序 背景 Java Agent是一种特殊类型的类,通过使用Java Instrumentation API,可以拦截在JVM上运行的应用程序,修改它们的字节码。Java代理非常强大,但也很危险。 简介Java Agent 是基于工具的,来自Java平台,存在于Java.lang工具包,它提供了允许代理检测运行在JVM上的程序的服务。这个包非常简单且自包含,因为它包含一对异常类、一个数据类、类定义和 2021-12-29 编程语言 > Java > Java基础 #Agent