数据结构与算法之美(二叉树)

数据结构与算法之美(二叉树)一、树1.树的常用概念2.概念解释二、二叉树1.概念①什么是二叉树?②什么是满二叉树?③什么是完全二叉树?2.完全二叉树的存储①链式存储②顺序存储3.二叉树的遍历三、二叉查找树1.要求2.二叉查找树支持快速查找、插入、删除操作1.二叉查找树的查找操作2.二叉查找树的插入操作3.二叉查找树的删除操作4.二叉查找树的其他操作3.支持重复数据的二叉查找树4.时间复杂度一、树1.树的常用概念根节点、叶子节点、父节点、子节点、兄弟节点,还有节点的高度、深度以及层数,树的高度。2.概
分类: 编程语言 发布时间: 04-27 15:23 阅读次数: 0

数据结构与算法之美(散列表)

数据结构与算法之美(散列表)一、散列表的由来二、如何设计散列函数?三、散列冲突的解决方法开放寻址法①核心思想②线性探测法(Linear Probing)一、散列表的由来1.散列表来源于数组,它借助散列函数对数组这种数据结构进行扩展,利用的是数组支持按照下标随机访问元素的特性。2.需要存储在散列表中的数据我们称为键,将键转化为数组下标的方法称为散列函数,散列函数的计算结果称为散列值。3.将数据存储在散列值对应的数组下标位置。二、如何设计散列函数?散列函数计算得到的散列值是一个非负整数;如果ke
分类: 编程语言 发布时间: 04-27 15:23 阅读次数: 0

mybatis-plus学习(狂神说)

CRUD插入update:
分类: 编程语言 发布时间: 04-27 15:23 阅读次数: 0

备战蓝桥杯(枚举、排序、模拟专项练习)

备战蓝桥杯(枚举、排序、模拟专项练习)蓝桥杯2020年第十一届省赛真题-回文日期蓝桥杯2017年第八届真题-日期问题蓝桥杯2015年第六届真题-移动距离蓝桥杯2013年第四届真题-错误票据蓝桥杯2018年第九届真题-递增三元组蓝桥杯2019年第十届省赛真题-特别数的和蓝桥杯历届试题-连号区间数蓝桥杯2020年第十一届省赛真题-回文日期题目链接:https://www.dotcpp.com/oj/problem2571.html题目描述2020 年春节期间,有一个特殊的日期引起了大家的注意:2020
分类: 编程语言 发布时间: 04-27 15:23 阅读次数: 0

备战蓝桥杯(计数)

蓝桥杯备战(搜索+计数)计数什么是计数题真题蓝桥杯2020年第十一届省赛真题-分类计数蓝桥杯2019年第十届国赛真题-矩阵计数计数什么是计数题真题蓝桥杯2020年第十一届省赛真题-分类计数题目链接:https://www.dotcpp.com/oj/problem2580.html题目描述输入一个字符串,请输出这个字符串包含多少个大写字母,多少个小写字母,多少个数字。输入输入一行包含一个字符串。输出输出三行,每行一个整数,分别表示大写字母、小写字母和数字的个数。样例输入
分类: 编程语言 发布时间: 04-27 15:23 阅读次数: 0

C++ STL容器总结(vector+map+list+栈stack+队列queue)

C++ STL容器总结万能标签头C++ 万能头文件 <bits/stdc++.h> 的用法和优缺点优点:缺点:STLvector一、什么是vector?二、特点1.顺序序列2.动态数组3.能够感知内存分配器的(Allocator-aware)三、基本函数实现常用方法注意事项map什么是map?常用方法插入函数查找元素刪除与清空元素map的大小其余常用方法:list什么是list?基本函数实现常用方法栈和队列栈stack容器适配器支持的成员函数队列queue容器适配器支持的成员函数万能标签头C++ 万能头
分类: 编程语言 发布时间: 04-27 15:23 阅读次数: 0

蓝桥杯题解day3(搜索DFS+BFS+二分+递归+博弈)

备战蓝桥杯(搜索DFS+BFS+二分+递归+博弈)
分类: 编程语言 发布时间: 04-27 15:23 阅读次数: 0

彻底搞懂 SpringBoot jar 可执行原理

涉及的知识点主要包括Maven的生命周期以及自定义插件,JDK提供关于jar包的工具类以及Springboot如何扩展,最后是自定义类加载器。spring-boot-maven-pluginSpringBoot 的可执行jar包又称fat jar ,是包含所有第三方依赖的 jar 包,jar 包中嵌入了除 java 虚拟机以外的所有依赖,是一个 all-in-one jar 包。普通插件maven-jar-plugin生成的包和spring-boot-maven-plugin生成的包之间的直接区
分类: 编程语言 发布时间: 04-27 15:23 阅读次数: 0

跨Mysql、Redis、Mongo的分布式事务

Mysql、Redis、Mongo都是非常流行的存储,并且各自有自己的优势。在实际的应用中,常常会同时使用多种存储,也会遇见在多种存储中保证数据一致性的需求,例如保证数据库中的库存和Redis中的库存一致等。本文基于分布式事务框架https://github.com/dtm-labs/dtm给出了一个跨Mysql、Redis、Mongo多种存储引擎的一个可运行的分布式事务实例,希望能够帮助大家解决这方面的问题。这种灵活的组合多个存储引擎形成一个分布式事务的能力,也是dtm首创做到的,目前未看到其..
分类: 编程语言 发布时间: 04-27 15:23 阅读次数: 0

【多线程与高并发原理篇:3_java内存模型】

1. 概述Java 内存模型即 Java Memory Model,简称 JMM。从抽象的角度来看,JMM 定义了线程和主内存之间的抽象关系,线程之间的共享变量存储在主内存中,每个线程都有一个私有的工作内存,工作内存中存储了该线程以读/写共享变量的副本。工作内存是 JMM 的一个抽象概念,并不真实存在。它涵盖了缓存、写缓冲区、寄存器以及其他的硬件和编译器优化。Java内存模型是跟cpu缓存模型是类似的,基于cpu缓存模型来建立的Java内存模型,只不过Java内存模型是标准化的,屏蔽掉底...
分类: 编程语言 发布时间: 04-27 15:23 阅读次数: 0

JVM内存管理面试常见问题全解

目录 2、为什么要双亲委派机制 3、双亲委派机制的核心源码 5、自定义加载器实现双亲委托机制 6、自定义加载器打破双亲委派机制 1、运行时数据区的介绍(也叫JVM的内存模型 JMM、内存区域) 2、程序在执行时运行数据区的内存变化 1、对象成为垃圾的判断依据 2、 对象中的finalize方法 1、标记清除算法、复制算法、标记整理算法、分代回收法 3、对象进⼊到⽼年代的条件 十、JV
分类: 编程语言 发布时间: 04-27 15:23 阅读次数: 0

java自带的四种线程池

java预定义的哪四种线程池?newSingleThreadExexcutor:单线程数的线程池(核心线程数=最大线程数=1) newFixedThreadPool:固定线程数的线程池(核心线程数=最大线程数=自定义) newCacheThreadPool:可缓存的线程池(核心线程数=0,最大线程数=Integer.MAX_VALUE) newScheduledThreadPool:支持定时或周期任务的线程池(核心线程数=自定义,最大线程数=Integer.MAX_VALUE)四种线程池有什么区
分类: 编程语言 发布时间: 04-27 15:23 阅读次数: 0

Java 8的18个常用日期处理

Java 8的18个常用日期处理一、简介伴随lambda表达式、streams以及一系列小优化,Java 8 推出了全新的日期时间API。Java处理日期、日历和时间的不足之处:将 java.util.Date 设定为可变类型,以及 SimpleDateFormat 的非线程安全使其应用非常受限。然后就在 java8 上面增加新的特性。全新API的众多好处之一就是,明确了日期时间概念,例如:瞬时(instant)、长短(duration)、日期、时间、时区和...
分类: 编程语言 发布时间: 04-27 15:23 阅读次数: 0

spring事务失效的几种场景以及原因

前言spring事务失效场景可能大家在很多文章都看过了,所以今天就水一篇,看大家能不能收获一些不一样的东西。直接进入主题2spring事务失效场景以及原因1、场景一:service没有托管给springpublic class TranInvalidCaseWithoutInjectSpring { private UserService userService; public TranInvalidCaseWithoutInjectSpring(UserSer
分类: 编程语言 发布时间: 04-27 15:23 阅读次数: 0

十分钟掌握JVM垃圾回收核心知识点

垃圾回收随着程序的运行,内存中的实例对象、变量等占据的内存越来越多,如果不及时进行回收,会降低程序运行效率,甚至引发系统异常,JVM会自动完成垃圾回收工作,主要包括:Minor GC/Young GC:针对新生代的垃圾收集。 Major GC/Old GC:针对老年代的垃圾收集。 Full GC:针对整个Java堆以及方法区的垃圾收集。Java堆区可以划分为新生代和老年代,新生代又可以进一步划分为Eden区、Survivor 1区、Survivor 2区。具体比例参数的话,可以看一下这张...
分类: 编程语言 发布时间: 04-27 15:23 阅读次数: 0

微服务架构实践及应用:深入掌握SpringCloud让你面试如鱼得水

最近几年,微服务架构一跃成为 IT 领域炙手可热的话题,大量一线互联网公司因为庞大的业务体量和业务需求,纷纷投入了微服务架构的建设中,像阿里巴巴、百度、美团等大厂,很早就已经开始了微服务的实践和应用。一线大厂的带动,让微服务成为了 Java 系程序员面试的必备考点。其中是否具有 Spring Cloud 技术能力的程序员,也是企业招聘中影响薪资的核心要素之一。Spring Cloud 作为所有微服务治理中最优秀的方案,其基于 Spring Boot 可实现快速集成,开发效率极高的特性,堪称中小型互联
分类: 编程语言 发布时间: 04-27 15:23 阅读次数: 0

如何使用mysql binlog 恢复数据

如果想通过 mysql 的 binlog 恢复数据,首先要开启 binlog 。这里搭建一个测试的环境,了解一下 mysql binlog 是如何恢复数据库的。原理比较简单,binlog 会存储mysql中变化的数据,比如你创建了一个数据库,写入了一些数据,这些都会存储在 mysql 的 binlog 中。需要恢复的时候就找到,两个位置,一个起始位置,一个结束的位置。结束的位置,一半是数据被破坏或者删除前的位置。mysql 8 默认已经开启了 binlogmysql> show variab
分类: 编程语言 发布时间: 04-27 15:23 阅读次数: 0

说说你对 MySQL 死锁的理解

1、什么是死锁?死锁指的是在两个或两个以上不同的进程或线程中,由于存在共同资源的竞争或进程(或线程)间的通讯而导致各个线程间相互挂起等待,如果没有外力作用,最终会引发整个系统崩溃。◆2、Mysql出现死锁的必要条件 资源独占条件 指多个事务在竞争同一个资源时存在互斥性,即在一段时间内某资源只由一个事务占用,也可叫独占资源(如行锁)。 请求和保持条件 指在一个事务a中已经获得锁A,但又提出了新的锁B请求,而该锁B已被其它事务b占有,此时该事务a则会阻塞,但又对自己已获得的锁A...
分类: 编程语言 发布时间: 04-27 15:22 阅读次数: 0

每个 Java 开发人员都应该知道的关于线程、Runnable和线程池的知识

多线程是Java 中最复杂和最强大的部分多线程章节是 Java 中最难理解和使用的章节。不幸的是,没有多少资源可以让您获得所有答案。同时,并发知识至关重要。在本文中,我解释了每个 Java 开发人员都必须了解的多线程的核心方面。在这一部分中,我们从 Thread 和 Runnable 主题开始。为什么并发知识如此重要?如果没有良好的多线程知识,您将无法获得高级 Java 工作几乎可以肯定,多线程知识是 Java 高级职位面试的主题。如果没有对多线程的清晰理解,无论是否有实践经验,你很可能会失
分类: 编程语言 发布时间: 04-27 15:22 阅读次数: 0

java 从零开始实现消息队列 mq-02-如何实现生产者调用消费者?

消费者实现启动类的调整ServerBootstrap serverBootstrap = new ServerBootstrap();serverBootstrap.group(workerGroup, bossGroup) .channel(NioServerSocketChannel.class) .childHandler(new ChannelInitializer<Channel>() { @Override
分类: 编程语言 发布时间: 04-27 15:22 阅读次数: 0