![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
计算机
文章平均质量分 79
Thunder_C
喜欢计算机行业
展开
-
MySQL设计与实践学习笔记(三)
一、企业级数据库Sharding Sphere分库分表应用设计实战 数据扩展带来的问题 请求路由 分表规则 写入路由 查询路由 分页查询怎么解决:混合模式 1、Sharding ...原创 2021-10-13 22:21:25 · 95 阅读 · 0 评论 -
MySQL设计与实践学习笔记(二)
一、千亿级海量数据高并发场景主键设计选择 索引原理分析 聚簇索引: 数据存储在主键索引中 数据按主键顺序存储 二级索引: 除主键索引以外的索引 叶子中存储主键值 一次查询需要走...原创 2021-10-12 22:27:40 · 97 阅读 · 0 评论 -
MySQL设计与实践学习笔记(一)
MySQL架构体系设计深入剖析架构:平衡能力一、MySQL InnoDB存储引擎原理拆解以及设计深度剖析 1、数据组织MySQL记录存储以Page(页)来划分每个数据页的大小为16KB页头:56个字节 记录页面的控制信息 包括页的左右兄弟页面指针、页面空间使用情况 双相链表 虚记录:最小虚记录:比页内最小主键还小 最大虚记录:比页内最大主键还大 记录堆:行记录存储区,包括有效记录和已删除记录两种...原创 2021-10-12 16:05:30 · 172 阅读 · 0 评论 -
为什么JDK1.8的ConcurrentHashMap 的读操作不需要加锁?
我们知道,在JDK1.8中ConcurrentHashmap这个并发集合框架是线程安全的,当你看到源码的get操作时,会发现get操作全程是没有加任何锁的,为什么它不需要加锁呢?ConcurrentHashMap的简介在JDK1.7中是采用Segment + HashEntry + ReentrantLock的方式进行实现的,而JDK1.8中放弃了Segment臃肿的设计,取而代之的是采用Node + CAS + Synchronized来保证并发安全进行实现。...转载 2021-08-06 09:29:39 · 469 阅读 · 0 评论 -
Java项目高CPU占用排查
下列操作在服务器中进行(运行环境 linux)1、通过 "top" 命令查询出JAVA项目进程的 PID2、通过 "top -Hp 进程PID" 命令查询当前进程的线程使用情况 获取线程的 PID3、通过 "printf '%x' 线程PID " 命令把线程PID 转换为16进制4、通过 "jstack 进程PID > 输出文件名" 输出jvm使用信息5、查询第三部获取的线程的使用信息6、通过代码信息排查业务代码问题...原创 2021-07-18 10:24:56 · 93 阅读 · 0 评论 -
数据结构和算法学习(三)-树
一、树和二叉树 1、什么是树树(tree)是n(n≥0)个节点的有限集。当n=0时,称为空树。在任意一个非空树中,有如下特点。1. 有且仅有一个特定的称为根的节点。2. 当n>1时,其余节点可分为m(m>0)个互不相交的有限集,每一个集合本身又是一个树,并称为根的子树。 没有子节点的节点成为叶子节点(leaf)...原创 2021-06-29 15:16:33 · 228 阅读 · 0 评论 -
数据结构和算法学习(二)-数据结构基础
基本数据结构:数组、链表、栈和队列相关知识原创 2021-06-25 16:44:21 · 391 阅读 · 1 评论 -
数据结构和算法学习(一)-概述
打算开始学习下JAVA的数据结构与算法,找到了 《漫画算法:小灰的算法之旅》一书,此组文章记录一些学习的内容原创 2021-06-23 11:57:46 · 606 阅读 · 1 评论 -
Java虚拟机学习-认识JAVA及其虚拟机
一、Java技术体系JCP(Java Community Process,就是人们常说的“Java社区” )官方定义的Java技术体系包括:Java程序设计语言 各种硬件平台上的Java虚拟机实现 Class文件格式 Java类库API 来自商业机构和开源社区的第三方Java类库 二、Java历史1991-04:由James Gosling博士领导的绿色计划(Green Project)开始启动 Java语言前身Oak(得名于James Gosling办公室外的一棵橡树)1原创 2020-09-16 14:09:29 · 274 阅读 · 0 评论 -
JAVA知识整理(一)-JVM
一、基本概念JVM 是可运行 Java 代码的虚拟机 ,包括一套字节码指令集、一组寄存器、一个栈、 一个垃圾回收,堆 和 一个存储方法域。JVM 是运行在操作系统之上的,它与硬件没有直接的交互。二、运行过程我们都知道 Java 源文件,通过编译器,能够生产相应的.Class 文件,也就是字节码文件,而字节码文件又通过 Java 虚拟机中的解释器,编译成特定机器上的机器码 。 也就是如下: Java 源文件—->编译器—->字节码文件—->JVM—->机器码转载 2022-03-12 11:13:57 · 101 阅读 · 0 评论 -
JAVA知识- java中 += 与 =+ 的区别,代码编写中 良好格式的重要
+= 是简写,a += b 就是a = a+b=+ 并不是简写,a = +b 即是直接对a进行赋值为b,±符号代表的是正负,即a = +b其实就是a = b。同理也可以理解 a=-b 及为 a = -b;如果有良好的编码习惯 就不会出现 =+ 这种不明显的理解/** * @author wanglei * @Description: Thunder_C * @date 2020/9/1 09:38 */public class Test { public static v.原创 2020-09-01 09:52:56 · 2963 阅读 · 0 评论 -
Spring-JavaConfig与常见Annotation
一、JavaConfig我们知道bean是Spring IOC中非常核心的概念,Spring容器负责bean的生命周期的管理。在最初,Spring使用XML配置文件的方式来描述bean的定义以及相互间的依赖关系,但随着Spring的发展,越来越多的人对这种方式表示不满,因为Spring项目的所有业务类均以bean的形式配置在XML文件中,造成了大量的XML文件,使项目变得复杂且难以管理。后...转载 2019-03-05 11:24:32 · 302 阅读 · 0 评论 -
JAVA中逻辑运算符“|”和“&”与“||”和“&&”的用法
1.使用规则:(1)& 可以用作逻辑与的运算符,表示逻辑与(and) a、当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false b、无论第一个判断条件是否成立,逻辑运算符前后两个条件都会进行判断(2)&& 可以用作逻辑与的运算符,表示逻辑与(and) a、当运算...转载 2019-05-21 16:06:17 · 900 阅读 · 0 评论 -
Docker
Docker的应用场景 Web 应用的自动化打包和发布。 自动化测试和持续集成、发布。 在服务型环境中部署和调整数据库或其他的后台应用。 从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。 Docker 的优点 1、简化程序: Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后...转载 2019-05-22 10:15:29 · 98 阅读 · 0 评论 -
JVM运行时区域详解
我们知道的JVM内存区域有:堆和栈,这是一种泛的分法,也是按运行时区域的一种分法,堆是所有线程共享的一块区域,而栈是线程隔离的,每个线程互不共享。线程不共享区域每个线程的数据区域包括程序计数器、虚拟机栈和本地方法栈,它们都是在新线程创建时才创建的。程序计数器(Program Counter Rerister)程序计数器区域一块内存较小的区域,它用于存储线程的每个执行指令,...转载 2019-06-05 10:35:08 · 116 阅读 · 0 评论 -
深入浅出 Java 中 JVM 内存管理
Java岗位面试,JVM是对程序员基本功考察,通常会问你对JVM了解吗?可以分几部分回答这个问题,首先JVM内存划分 | JVM垃圾回收的含义 | 有哪些GC算法 以及年轻代和老年代各自特点等等。1) JVM内存划分:① 方法区 (线程共享) 常量 静态变量 JIT(即时编译器)编译后代码也在方法区存放② 堆内存(线程共享) 垃圾回收的主要场地③...转载 2019-06-05 13:06:04 · 124 阅读 · 0 评论 -
【设计模式学习】一、简介
1、什么是设计模式设计模式是指在软件开发中,经过验证的,用于解决在特定环境下、重复出现的、特定问题的解决方案。2、如何学习设计模式准确理解每个设计模式的功能、基本结构、标准实现,了解适合使用它的场景及使用的效果 实际的开发中,尝试着使用这些设计模式,并反复思考和总结是否使用得当,是否需要做一些变化 再回头去看设计模式的理论,有了实际的模式应用经验再看设计模式,会有不同的感悟,一边看...转载 2019-06-03 11:16:32 · 118 阅读 · 0 评论 -
JVM-图解 Java 垃圾回收机制
什么是自动垃圾回收?自动垃圾回收是一种在堆内存中找出哪些对象在被使用,还有哪些对象没被使用,并且将后者删掉的机制。所谓使用中的对象(已引用对象),指的是程序中有指针指向的对象;而未使用中的对象(未引用对象),则没有被任何指针给指向,因此占用的内存也可以被回收掉。在用 C 之类的编程语言时,程序员需要自己手动分配和释放内存。而 Java 不一样,它有垃圾回收器,释放内存由回收器负责。本文...转载 2019-06-05 09:19:16 · 242 阅读 · 0 评论 -
JVM 与 Linux 的内存关系详解
在一些物理内存为8g的服务器上,主要运行一个Java服务,系统内存分配如下:Java服务的JVM堆大小设置为6g,一个监控进程占用大约 600m,Linux自身使用大约800m。从表面上,物理内存应该是足够使用的;但实际运行的情况是,会发生大量使用SWAP(说明物理内存不够使用 了),如下图所示。由于SWAP和GC同时发生会致使JVM严重卡顿,所以我们要追问:内存究竟去哪儿了?...转载 2019-06-05 09:48:13 · 169 阅读 · 0 评论 -
分布式
要点:数据一致性 在任意时间、任意位置看到的同一个事物是完全一致的。 对不同级别的一致性汇总概述如下: 共识 一致性问题是结果,共识是为达到这个结果所要经过的过程,或者说一种手段。 想要更严谨的一致性,那么就需要增加相互通讯确认的次数,但是这会导致性能低下,正如PBFT和Paxos一样。但是分布式系统就是这样,到处都需要Balance,找到最适合的才是最重要的。 事务...转载 2019-06-17 14:16:07 · 278 阅读 · 0 评论 -
JAVA面试-JAVA基础知识
1. 面向对象和面向过程的区别面向过程 优点:性能比面向对象高。因为类调用时需要实例化,开销比较大,比较消耗资源,所以当性能是最重要的考量因素的时候,比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发 缺点:没有面向对象易维护、易复用、易扩展 面向对象 优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵...转载 2019-06-17 15:02:05 · 308 阅读 · 0 评论 -
List与set集合,Map集合的区别以及它们的实现类有哪些?
List 是可重复集合,Set 是不可重复集合,这两个接口都实现了 Collection 父接口。Map 未继承 Collection,而是独立的接口,Map 是一种把键对象和值对象进行映射的集合,它的每一个元素都包含了一对键对象和值对象,Map 中存储的数据是没有顺序的, 其 key 是不能重复的,它的值是可以有重复的。List 的实现类有 ArrayList,Vector 和 Link...转载 2019-05-21 13:29:38 · 3282 阅读 · 0 评论 -
List,Set,Map用法以及区别
List,Set,Map是否继承自Collection接口?答:List,Set是,Map不是。Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素。一些Collection允许相同的元素而另一些不行。一些能排序而另一些不行。Java JDK不能提供直接继承自Collection的类,Java JDK提供的类都是继承自Collec...转载 2019-05-20 16:33:59 · 150 阅读 · 0 评论 -
Spring Boot-自动配置原理
典型的Spring Boot应用的启动类一般均位于src/main/java根路径下,比如MoonApplication类:@SpringBootApplicationpublic class MoonApplication { public static void main(String[] args) { SpringApplication.run(MoonA...转载 2019-03-06 13:58:02 · 289 阅读 · 0 评论 -
Spring-Spring中的aware接口
Spring中有很多继承于aware中的接口,这些接口到底是做什么用到的。Awareaware,翻译过来是知道的,已感知的,意识到的,所以这些接口从字面意思应该是能感知到所有Aware前面的含义。Spring的依赖注入的最大亮点就是你所有的Bean对Spring容器的存在是没有意识的。即你可以将你的容器替换成别的容器,例如Goggle Guice,这时Bean之间的耦合度很低。但...转载 2019-03-06 13:22:45 · 347 阅读 · 0 评论 -
Spring-Spring容器的事件监听机制
过去,事件监听机制多用于图形界面编程,比如:点击按钮、在文本框输入内容等操作被称为事件,而当事件触发时,应用程序作出一定的响应则表示应用监听了这个事件,而在服务器端,事件的监听机制更多的用于异步通知以及监控和异常处理。Java提供了实现事件监听机制的两个基础类:自定义事件类型扩展自java.util.EventObject、事件的监听器扩展自java.util.EventListener。来看一个...转载 2019-03-05 15:55:18 · 472 阅读 · 0 评论 -
Spring-SpringFactoriesLoader详解
JVM提供了3种类加载器:BootstrapClassLoader、ExtClassLoader、AppClassLoader分别加载Java核心类库、扩展类库以及应用的类路径(CLASSPATH)下的类库。JVM通过双亲委派模型进行类的加载,我们也可以通过继承java.lang.classloader实现自己的类加载器。何为双亲委派模型?当一个类加载器收到类加载任务时,会先交给自己的父加载器...转载 2019-03-05 13:00:17 · 1482 阅读 · 0 评论 -
JAVA-Java数组
1、数组1.数组概念数组是存储同一种数据类型多个元素的集合。也可以看成是一个容器。数组既可以存储基本数据类型,也可以存储引用数据类型。2.数组的定义格式格式1:数据类型[]数组名;格式2:数据类型数组名[];...原创 2019-02-28 18:03:57 · 93 阅读 · 0 评论 -
JAVA-Eclipse
1、Java开发常见工具介绍 A:操作系统自带的记事本软件 B:高级记事本软件 C:集成开发环境 IDE (Integrated Development Environment) 2、Eclipse和MyEclipse介绍 Eclipse是一种可扩展的开放源代码的IDE。原创 2016-04-24 09:11:23 · 318 阅读 · 0 评论 -
JAVA-面向对象
1、面向对象思想 1.面向对象思想概述 面向对象是基于面向过程的编程思想 2.面向对象思想特点 是一种更符合我们思想习惯的思想 可以将复杂的事情简单化 将我们从执行者变成了指挥者原创 2016-04-24 09:07:02 · 323 阅读 · 0 评论 -
JAVA-Java基础语法
1、关键字 1.关键字概述 被Java语言赋予特定含义的单词 2.关键字特点 组成关键字的字母全部小写 3.关键字注意事项 goto和const作为保留字存在,目前并不使用 2、标识符 1.标识原创 2016-04-24 08:52:25 · 224 阅读 · 0 评论 -
Spring Boot-Spring Boot应用启动
一、SpringApplication初始化SpringBoot整个启动流程分为两个步骤:初始化一个SpringApplication对象、执行该对象的run方法。看下SpringApplication的初始化流程,SpringApplication的构造方法中调用initialize(Object[] sources)方法,其代码如下:private void initialize(O...转载 2019-03-06 15:03:45 · 248 阅读 · 0 评论 -
Java-类加载器
类加载器是 Java 语言的一个创新,也是 Java 语言流行的重要原因之一。它使得 Java 类可以被动态加载到 Java 虚拟机中并执行。类加载器从 JDK 1.0 就出现了,最初是为了满足 Java Applet 的需要而开发出来的。Java Applet 需要从远程下载 Java 类文件到浏览器中并执行。现在类加载器在 Web 容器和 OSGi 中得到了广泛的使用。一般来说,Java 应用...转载 2019-03-06 17:31:32 · 211 阅读 · 0 评论 -
[转]推荐:深入研究ITL阻塞与ITL死锁
1、什么是ITLITL(Interested Transaction List)是Oracle数据块内部的一个组成部分,用来记录该块所有发生的事务,一个itl可以看作是一个记录,在一个时间,可以记录一个事务(包括提交或者未提交事务)。当然,如果这个事务已经提交,那么这个itl的位置就可以被反复使用了,因为itl类似记录,所以,有的时候也叫itl槽位。如果一个事务一直没有提交,那么,这个事务将一...转载 2019-03-14 11:48:04 · 284 阅读 · 0 评论 -
List 和 Set 的区别
Java中的集合包括三大类,它们是Set(集)、List(列表)和Map(映射),它们都处于java.util包中,Set、List和Map都是接口,它们有各自的实现类。Set的实现类主要有HashSet和TreeSet,List的实现类主要有ArrayListCollection是最基本的集合接口,声明了适用于JAVA集合的通用方法,list和set都继承自collection接口。Co...转载 2019-05-20 16:16:43 · 317 阅读 · 0 评论 -
Redis-介绍
Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内置了 复制...转载 2019-03-12 14:17:59 · 161 阅读 · 0 评论 -
JAVA-幂等性(二):高并发的系统如何保证幂等性
转载自:https://www.cnblogs.com/geyifan/p/6128425.html一、什么是幂等性幂等概念来自数学,表示N次变换和1次变换的结果是相同的。这里讨论在某些场景下,客户端在调用服务没有达到预期结果时,会进行多次调用,为避免多次重复的调用对服务资源产生副作用,服务提供者会承诺满足幂等。HTTP/1.1中对幂等性的定义是:一次和多次请求某一个资源对于资源本身应...转载 2019-03-07 14:27:29 · 18584 阅读 · 2 评论 -
Java-system.exit(0) system.exit(1) 含义与区别
s首先他俩都是退出程序的意思:区别在于:system.exit(0):正常退出,程序正常执行结束退出 system.exit(1):是非正常退出,就是说无论程序正在执行与否,都退出, System.exit(0)是将你的整个虚拟机里的内容都停掉了 ,而dispose()只是关闭这个窗口,但是并没有停止整个application exit() ...转载 2019-03-14 15:53:47 · 1243 阅读 · 0 评论 -
Java中clone()与new的区别
区别:(1)在java中clone()与new都能创建对象。(2)clone()不会调用构造方法;new会调用构造方法。(3)clone()能快速创建一个已有对象的副本,即创建对象并且将已有对象中所有属性值克隆;new只能在JVM中申请一个空的内存区域,对象的属性值要通过构造方法赋值。注意:(1)使用clone()类必须实现java.lang.Cloneable接口并重写Obj...转载 2019-03-14 15:07:41 · 807 阅读 · 0 评论 -
JAVA-幂等性(一):http幂等性
一、什么是幂等性?什么是幂等操作?幂等:是一个数学概念,表示N次变换和1次变换的结果相同。幂等操作:其特点是任意多次执行所产生的影响均与一次执行的影响相同(不会改变资源状态,对数据没有副作用)。幂等性:一系列操作都是幂等操作。幂等接口:幂等接口认为,外部调用者会存在多次调用的场景,为了防止重试对数据状态的改变,需要将接口的设计为幂等的HTTP方法的幂等性是指一次和多次请求某一个...转载 2019-03-07 11:08:51 · 5044 阅读 · 0 评论