Lemon

爱世界,爱代码

  • 博客(211)
  • 资源 (25)
  • 收藏
  • 关注

原创 基础算法——排序算法(冒泡排序,选择排序,堆排序,插入排序,希尔排序,归并排序,快速排序,计数排序,桶排序,基数排序,Java排序)

其中说明:两个相同的数排序后没有发生改变,说明是稳定的以数组 3、2、1 的冒泡排序为例,第一轮冒泡第二轮冒泡未排序区域内就剩一个元素,结束优化手段:每次循环时,若能确定更合适的右边界,则可以减少冒泡轮数以数组 3、2、1、4、5 为例,第一轮结束后记录的 x,即为右边界3.选择排序每一轮选择,找出最大(最小)的元素,并把它交换到合适的位置以下面的数组选择最大值为例4.堆排序建立大顶堆每次将堆顶元素(最大值)交换到末尾,调整堆顶元素,让它重新符合大顶堆特性建堆交换,下潜

2024-11-02 12:06:37 831

原创 数据结构与算法——(Hash)哈希表与哈希算法

哈希算法(Hash Algorithm)是一种将任意长度的输入(称为预映射或消息)转换成固定长度输出(称为哈希值或散列值)的函数。哈希值通常是一个较短的、固定长度的数字串,它几乎唯一地对应于原始数据。

2024-10-30 16:29:06 845

原创 基础数据结构及算法——红黑树(右旋,左旋,插入,删除)

红黑树的名字来源于红色节点和黑色节点的交替出现,它们的颜色是用来维护树的平衡性的关键。它们的颜色具有特殊的意义,黑色节点代表普通节点,而红色节点代表一个新添加的节点,它们必须满足一些特定的规则才能维持树的平衡性。然而,最初的树形结构不是现在的红黑树,而是一种称为B树的结构,它是一种多叉树,可用于在磁盘上存储大量数据。case 2:插入节点的父亲若为黑色⚫️,树的红黑性质不变,无需调整。case 2:删的是黑⚫️,剩下的是红🔴,剩下这个红节点变黑⚫️。删除节点和剩下节点都是黑⚫️,触发双黑,双黑意思是,

2024-10-28 16:40:08 975

原创 基础数据结构及算法——AVL树【自平衡二叉搜索树】解决失衡

在二叉搜索树中,如果插入的元素按照特定的顺序排列,可能会导致树变得非常不平衡,从而降低搜索、插入和删除的效率。为了解决这个问题,AVL 树通过在每个节点中维护一个平衡因子来确保树的平衡。平衡因子是左子树的高度减去右子树的高度。如果平衡因子的绝对值大于等于 2,则通过旋转操作来重新平衡树。AVL 树是用于存储有序数据的一种重要数据结构,它是二叉搜索树的一种改进和扩展。它不仅能够提高搜索、插入和删除操作的效率,而且还能够确保树的深度始终保持在 O(log n) 的水平。

2024-10-27 21:43:40 416

原创 基础算法——查找算法,二叉搜索树(获取,最小值,最大值,添加,前任,后任,范围,删除)

在编写程序时,我们需要选择适合数据集大小和其他要求的最佳查找算法。例如,如果数据集很小,则线性查找可能是最快的选择;如果数据集已经排序,则二分查找是非常有用的。然而,在大型数据集中,哈希表查找通常是最好的选择。了解不同类型的查找算法及其特点可以帮助我们在编写程序时做出明智的选择。不管是数组、链表、队列、还是栈,这些线性结构中,如果想在其中查找一个元素,效率是比较慢的,只有OnO(n)On,因此如果你的需求是实现数据的快速查找,那么就需要新的数据结构支持。还记得最先介绍的那个二分查找算法吗?

2024-10-26 22:11:17 997

原创 基础数据结构——二叉树(深度优先遍历,前序遍历,中序遍历,后序遍历)

二叉树是这么一种树状结构:每个节点最多有两个孩子,左孩子和右孩子重要的二叉树结构。

2024-10-25 16:10:03 1035

原创 基础数据结构——堆(弗洛伊德建堆算法,堆排序,增,删,替换)

一些规律2h−1h323−170size/2−1算法时间复杂度分析下面看交换次数的推导:设节点高度为 3推导出2h−h−1其中2h≈nh≈log2​n,因此有时间复杂度On。

2024-10-24 18:42:10 1008

原创 基础数据结构——队列(双端队列,优先级队列,阻塞队列)

双端队列、队列、栈对比注2:不同语言,操作双端队列的方法命名有所不同,参见下表定义接口。

2024-10-24 12:07:36 977

原创 基础数据结构——栈(链表实现,数组实现,逆波兰表达式)

计算机科学中,stack是一种线性的数据结构,只能在其一端添加数据和移除数据。习惯来说,这一端称之为栈顶,另一端不能操作数据的称之为栈底,就如同生活中的一摞书//向栈顶压入元素//从栈顶弹出元素E pop();//返回栈顶元素,不弹出E peek();//判断是否为空//判断是否已满。

2024-10-23 09:32:20 280

原创 基础数据结构——队列(链表实现,数组实现)

计算机科学中,queue 是以顺序的方式维护的一组数据集合,在一端添加数据,从另一端移除数据。习惯来说,添加的一端称为尾,移除的一端称为头,就如同生活中的排队买商品接口信息如下//向队列尾部添加值//从队列头部获取值并移除E poll();//从队列头部获取值不移除E peek();//判断队列是否为空//判断队列是否已满。

2024-10-22 16:53:34 748

原创 初始算法——递归(二分查找,冒泡排序,插入排序,斐波那契,汉诺塔,杨辉三角)

计算机科学中,递归是一种解决计算问题的方法,其中解决方案取决于同一类问题的更小子集return;自己调用自己,如果说每个函数对应着一种解决方案,自己调用自己意味着解决方案是一样的(有规律的)每次调用,函数处理的数据会较上次缩减(子集),而且最后会缩减至无需继续递归内层函数调用(子集处理)完成,外层函数才能算调用完成假设链表中有 3 个节点,value 分别为 1,2,3,以上代码的执行流程就类似于下面的伪码return;思路确定能否使用递归求解。

2024-10-21 15:42:02 913

原创 基础数据结构——链表(单向链表,双向链表,循环链表,环检测算法-弗洛伊德的龟与兔)

在计算机科学中,链表是数据元素的线性集合,其每个元素都指向下一个元素,元素存储上并不连续。

2024-10-19 11:50:06 965

原创 基础数据结构——数组(动态数组,二维数组,缓存与局部性原理)

在计算机科学中,数组是由一组元素(值或变量)组成的数据结构,每个元素有至少一个索引或键来标识因为数组内的元素是连续存储的,所以数组中元素的地址,可以通过其索引计算出来,例如:知道了数组的数据起始地址BaseAddressBaseAddress,就可以由公式BaseAddressi∗sizeBaseAddressi∗size计算出索引iii元素的地址iii即索引,在 Java、C 等语言都是从 0 开始s。

2024-10-18 13:51:00 1061

原创 初识算法——二分查找

渐进上界(asymptotic upper bound):从某个常数。二分查找算法也称折半查找,是一种非常高效的工作于有序数组的查找算法。进行化简,应当抓住主要矛盾,找到一个变化趋势与之相近的表示法。是用来衡量:一个算法的执行,随数据规模增大,而增长的时间成本。表示法来衡量:一个算法执行随数据规模增大,而增长的。与时间复杂度类似,一般也使用大。假设算法要处理的数据规模是。,代码总的执行行数用函数。下面分析二分查找算法的性能。大于等于中间值,都要向右找。如何表示时间复杂度呢?按时间复杂度从低到高。

2024-10-17 16:55:58 908 1

原创 Spring 源码解析(五):容器的功能扩展

一、

2022-05-14 13:55:42 611

原创 Spring 源码解析(四):bean的加载

一、

2022-05-14 13:53:49 851

原创 Spring 源码解析(三):自定义标签的解析

一、

2022-05-14 13:51:10 520

原创 Spring 源码解析(二):默认标签的解析

Spring 中的标签包括两种:默认标签,包含 import、alias、bean、beans自定义标签默认标签的解析是在 parseDefaultElement(ele, delegate); 进行的。DefaultBeanDefinitionDocumentReader.parseDefaultElement() /** * 默认标签解析 */ private void parseDefaultElement(Element ele, BeanDefinitionParserDe

2022-05-14 13:49:30 402

原创 Spring 源码解析(一):bean容器的基本实现

一、bean 容器的基本用法bean 是 Spring 中最核心的东西,因为 Spring 就想是一个大水桶,而 bean就是容器中的水。示例:MyTestBean.javapackage cn.lemon.demo.bean;public class MyTestBean { private String testStr = "test Spring"; public String getTestStr() { return testStr; }

2022-05-14 13:46:48 704

原创 Java中常用的加密与解密

一、对称加密与非对称加密1、对称加密2、非对称加密3、对称加密与非对称加密的区别

2021-12-23 10:28:36 8831

原创 Java 实现数组的全排列 递归法

import java.util.ArrayList;import java.util.List;public class TestDemo { public static void main(String[] args) { String[] array = {"1", "2", "3", "4"}; List<String> list = new ArrayList<>(); fullArrangement(array

2021-10-15 11:27:24 786

原创 ElasticSearch学习笔记(一)基础配置、基本操作、整合JavaAPI

一、环境配置官网:https://www.elastic.co/cn下载地址:https://www.elastic.co/cn/downloads/elasticsearch开启:双击elasticsearch-7.14.0\bin\elasticsearch.bat 访问:http://localhost:9200/ 出现下图提醒:POST 请求是非幂等性的,也就是:同一个请求,发送一次和发送 N 次效果是不一样的!二、ES基本操作ES 存储格式是倒排索引的格式,下面是ES和MySQ

2021-08-14 18:54:06 590

原创 JVM学习笔记(九):方法区(Method Area)

一、

2021-06-05 15:55:20 530

原创 JVM学习笔记(八):堆(Heap)

一、

2021-06-05 15:54:15 466

原创 JVM学习笔记(七):本地方法栈(Native Method Stack)

一、

2021-06-05 15:53:18 350

原创 JVM学习笔记(六):本地方法接口 JNI(Java Native Interface)

一、

2021-06-05 15:52:15 397

原创 JVM学习笔记(五):虚拟机栈(Java Vritual Machine Stacks)

一、

2021-06-05 15:51:28 525

原创 JVM学习笔记(四):程序计数器(PC寄存器)Program Counter Register

一、

2021-06-05 15:50:36 476

原创 JVM学习笔记(三):运行时数据区(Runtime Data Area)概述与线程(Thread)

2021-06-05 15:49:35 341

原创 JVM学习笔记(二):类加载子系统(Class Loader)

2021-06-05 15:48:20 458

原创 JVM学习笔记(一):JVM与Java体系结构

一、

2021-06-05 15:21:00 619 3

原创 360面试题、智力题:小明得到一个只包含a,b两个字符的字符串

题目答案package com.example.demo.common.test;import java.util.ArrayList;import java.util.List;import java.util.Scanner;public class Test { public static void main(String args[]) { Scanner sc = new Scanner(System.in); System.out.pri

2021-05-18 14:21:18 1439

原创 腾讯面试题、智力题、Java:小Q的父母要出差N天,走之前给小Q留下了M块巧克力

题目答案import java.util.Arrays;import java.util.Scanner;public class Demo { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入出差天数N(N<=50000)、巧克力数M(N<=M<=100000)(中间用空格隔

2021-05-12 18:34:05 635

原创 腾讯面试题、智力题、Java:某商店规定:三个空汽水瓶可以换一瓶汽水

题目答案import java.util.Scanner;public class Demo { public static void main(String[] args) { for (int i = 0; i <= 10; i++) { Scanner scanner = new Scanner(System.in); System.out.println("请输入一个1到100的整数:");

2021-05-12 18:29:28 1198

原创 JVM虚拟机学习笔记(二):Java虚拟机堆的存储原理

一、堆二、为什么要垃圾回收当Eden元区满时,触发 minor gc 垃圾回收,minor gc 根据根的可达性判断或者GC Roots(就是这个对象有没有被引用),如果没有就会被标记为垃圾,回收掉,如果有被引用,对象+1并进入s0,s0满时,进入s1,以此类推,当重复多次以后,对象仍然被引用时,该对象进入老年代,当老年代内存不够用时,会触发 full gc,full gc 会把新生代和老年代(整个堆)一起垃圾回收,此时会触发STW(Stop-The-World)二、Visual GC 插件监控

2021-04-03 19:37:43 251

原创 JVM虚拟机学习笔记(一):Java虚拟机运行原理

一:Java完整体系结构图二:执行流程1、App.javapackage com.lemon.employee.common.test;public class App { //类的属性:常量、变量、成员属性 private Object object = new Object(); private static int i = 0; private static String s = "Demo"; private String name; p

2021-04-03 13:50:36 168

转载 MySQL索引背后的数据结构及算法原理

摘要本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MySQL时主要打交道的索引,至于哈希索引和全文索引本文暂不讨论。文章主要内容分为三个部分:第一部分主要从数据结构及算法理论层面讨论MySQL数据库索引的数理基础。第二部分结合MySQL数据库中MyISAM和

2020-11-10 17:09:44 384

原创 SpringBoot 使用 AOP 环绕通知、前置通知、后置通知来测试一个方法的运行时间

要测试的方法(为了测试特意向MySQL 数据库中添加了几十万条数据,看完后请给个赞,谢谢了)package com.example.demo.controller;import com.alibaba.fastjson.JSONObject;import com.example.demo.entity.User;import com.example.demo.service.UserService;import org.springframework.beans.factory.annotati

2020-11-07 19:11:21 3021

原创 SpringBoot + Lombok + MyBatis + Ajax请求 + JSON数据交互,实现单表的增删改查(单页面)Demo

一、数据库二、项目结构三、Java代码1、配置文件 pom.xml、application.properties2、实体类 User.java3、数据访问层 IUserDao.java、映射文件 IUserDao.xml**4、业务逻辑层接口 IUserService.java、实现类 UserServiceImpl.java **5、业务逻辑层测试类 UserServiceImplTest.java6、控制层 UserController.java四

2020-07-23 15:15:26 1695 1

原创 SpringBoot(四):SpringBoot集成多数据源

一、多数据源1、多数据库源就是指在web项目中链接多个数据库2、好处:我要用到A数据库(mysql)中 的某些数据进行数据验证,并且要将数据插入B数据库中。这样做的好处是,不需要改变A中数据库的结构,就算是连接更多数据库的话,都不需要考虑其中结构问题,但是这就需要一个web项目跟多个数据库进行连接操作的技术。二、操作步骤1、配置多数据库源spring.datasource.datasourceA.url=jdbc:mysql://localhost:3306/db_user?serverTimez

2020-07-19 21:25:46 483

SpringCloud-Gateway demo.rar

SpringCloud-Gateway demo.rar

2021-07-31

Object_SpringBoot-Ajax_CRUD.rar

SpringBoot + Lombok + MyBatis + Ajax请求 + JSON数据交互,实现单表的增删改查(单页面)Demo

2020-07-23

Git-2.18.0-64-bit.rar

Git-2.18.0-64-bit,是2.18版本,windows 64位系统的,是2.18版本,windows 64位系统的

2019-10-08

MyBatis 多表查询之一对多、多对一、多对多以及数据库资料.rar

MyBatis 多表查询之一对多、多对一、多对多以及数据库资料

2019-09-28

MyBatis-3-User-Guide-Simplified-Chinese.rar

MyBatis-3-中文开发文档——MyBatis-3-User-Guide-Simplified-Chinese

2019-09-23

user_test.rar

user_test代码下载

2019-08-17

JSTL需要的JAR包.rar

JSTL需要的JAR包

2019-08-16

FiddlerSetup抓包工具.zip

FiddlerSetup抓包工具

2019-08-03

Spring_JdbcTemplete代码包.zip

Spring_JdbcTemplete代码包Spring_JdbcTemplete代码包

2019-07-28

DBCP、C3P0、Druid 第三方类库的jar包.zip

DBCP、C3P0、Druid 第三方类库的jar包 。DBCP、C3P0、Druid 第三方类库的jar包

2019-07-27

mysql-connector-java-5.1.7.zip

mysql-connector-java-5.1.7mysql-connector-java-5.1.7

2019-07-22

SQLyog安装包及破解密码.zip

SQLyog安装包及破解密码

2019-07-16

Mysql数据库文件.zip

Mysql数据库文件,官网也可以下载,Mysql数据库文件Mysql数据库文件

2019-07-16

bootstrap.zip

bootstrapbootstrapbootstrapbootstrapbootstrapbootstrap

2019-07-14

Bootstrap3中文参考手册.zip

Bootstrap3中文参考手册

2019-07-14

jQuery1.10.3 中文完全参考手册.zip

jQuery1.10.3 中文完全参考手册

2019-07-12

jQuery 3.3.1 版本.zip

jQuery 3.3.1 版本

2019-07-12

jQuery 2.1.0 版本.zip

jQuery 2.1.0 版本

2019-07-12

jQuery 1.11.0 版本.zip

jQuery 1.11.0 版本

2019-07-12

jQuery 1.8.3 版本.zip

jQuery 1.8.3 版本

2019-07-12

jQuery 1.4.2 版本.zip

jQuery 1.4.2 版本

2019-07-12

jdk1.8中文完全参考手册.zip

jdk1.8中文完全参考手册

2019-07-12

Javascript完全参考手册.zip

Javascript完全参考手册

2019-07-12

CSS中文完全参考手册.zip

CSS中文完全参考手册

2019-07-12

HTML中文完全手册.zip

HTML中文完全手册

2019-07-12

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除