单向链表链表(Linked List)介绍 链表在内存中的存储 特点 链表是以节点的方式来存储,是链式存储 每个节点包含 data 域 和 next 域。next域用来指向下一个节点 链表的各个节点不一定是连续存储的 链表分带头节点的链表和没有头节点的链表,根据实际的需求来确定 带头结点的单列表逻辑示意图 单向链表的优缺点 和普通的线性结构(如数组)相比,链表结构有以下特点: (1)单个结点创建非常灵活,普通的线性内存通常在创建的时候就需要设定数据的大小 (2)结点的删除、插入非常方便,不需要像线性结构那样移动剩下的数据 (3)结点的访问方便,可以通过循环或者递归的方法访问到任意数据,但是平均的访问效率低于线性表 实现思路(实现链表的增删改查)创建(添加) 先创建一个Head头节点,表示单链表的头 后面我们每添加一个节点,就放在链表的最后 遍历 通过一个辅助变量,来遍历整个链表 有序插入 先遍历链表,找到应该插入的位置 要插入的节点的next指向插入位置的后一个节点 插入位置的前一个节点的next指向要插入节点 插入前要判断是否在队尾插入 ...
循环队列是 队列的一种特殊形式。首先介绍队列,然后引申出循环队列。队列又称为“先进先出”FIFO线性表限定插入操作只能在队尾进行,而删除操作只能在队首进行队列也可以采用顺序存储结构或链表结构来实现,分别称为顺序队列和链队列 队列的顺序表示—顺序队列 用一组连续的存储单元依次存放从队首到队尾的元素,附设两个指针 head 和 tail 分别指向队首元素和队尾元素的位置,(有的地方用 front 和 rear 表示) 当 head = tail = 0 时表示空队列 当插入新元素到队尾时,tail 加 1 当删除队首元素时,head 加 1,上图如果把 C 也删掉,那么就 head = tail 了 tail 始终指向队列元素的下一个位置 对应的操作:队空:head=tail求队长:tail - head入队:新元素按 tail 指示位置加入,再将队尾指针加 1 ,即 tail = tail + 1出队:将 head 指示的元素取出,再将队头指针加 1,即 head = head + 1 下面引入循环队列 入队,tail 指针变化: >tail = (tail + 1) ...
什么是 AOP AOP(Aspect-OrientedProgramming,面向切面编程),可以说是 OOP(Object-Oriented Programing,面向对象编程)的补充和完善。OOP 引入封装、继承和多态性等概念来建立一种对象层次结构,用以模拟公共行为的一个集合。当我们需要为分散的对象引入公共行为的时候,OOP 则显得无能为力。也就是说,OOP 允许你定义从上到下的关系,但并不适合定义从左到右的关系。例如日志功能。日志代码往往水平地散布在所有对象层次中,而与它所散布到的对象的核心功能毫无关系。对于其他类型的代码,如安全性、异常处理和透明的持续性也是如此。这种散布在各处的无关的代码被称为横切(cross-cutting)代码,在 OOP 设计中,它导致了大量代码的重复,而不利于各个模块的重用。 而 AOP 技术则恰恰相反,它利用一种称为“横切”的技术,剖解开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块,并将其名为“Aspect”,即方面。所谓“方面”,简单地说,就是将那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系统的 ...
前言 最近在看 B 站颜群老师的课程,Javaweb>spring>springMVC>mybatis>spring 高级,一路走来,跌跌撞撞,发现 spring 也不过尔尔,说白了,spring 就是想尽办法将 new 做的更简单,更完美,更可配置。 Spring 的一个核心功能是 IOC,就是将 Bean 初始化加载到容器中,Bean 是如何加载到容器的,可以使用 Spring 注解方式或者 Spring XML 配置方式。 Spring 注解方式减少了配置文件内容,更加便于管理,并且使用注解可以大大提高了开发效率! 注解本身是没有功能的,和 xml 一样,注解和 xml 都是一种元数据,元数据即解释数据的数据,也就是所谓的配置。 xml 和注解的最佳实践: xml 用来管理 bean; 注解只负责完成属性的注入; 使用注解唯一需要注意的就是,必须开启注解的支持:123//扫描指定包下的全部的标有@Component的类,并注册成bean.<context:component-scan base-package="com.guo&qu ...
SpringDI(依赖注入) DI 概述 Dependency Injection即为依赖注入,简称 DI 。简单来说,在 Spring 创建对象的同时,为其属性赋值,称之为依赖注入。 形象来说,组件之间依赖关系由容器在运行期决定的,即由容器动态的将某个依赖关系注入到组件之中。 什么是 DI了解 DI 的思想 简单了解了 DI(依赖注入),在看依赖注入这个词,我们也可以将依赖注入以 IOC(控制反转)的形式拆分它。 顾名思义,依赖注入是由“依赖”和“注入”两个词汇组合而成,那么我们再一次顺藤摸瓜,分别分析这两个词语! 依赖 依赖一词,可以拆分成很多元素。比如说,达成依赖条件必须是两个对象 ,谁依赖谁 ,某一个对象依赖另一个对象的什么 。这里我们可以根据这几个条件列举出这几种情况: 关于谁依赖与谁,当然是应用程序依赖于 IOC 容器。因为应用程序依赖于 IOC 容器提供的对象所需外部资源,所以就产生了这种依赖关系。(可以理解为入口,虽然不是这么严谨吧!) 注入 注入一次,可以也可以拆分成很多元素。比如说,注入可以分解成谁注入谁 ,注入了什么 。这里我们也可以根据这两个条件来列 ...
相关推荐 Spring 官网 Spring Framework 官方文档 spring-framework Github SpringIOC 详解 SpringAOP 详解 什么是动态代理 动态代理其实就是Java中的一个方法,这个方法可以实现: 动态创建一组指定的接口的实现对象(在运行时,创建实现了指定的一组接口的对象)例如: 1234interface A {}interface B {}//obj对象的类型实现了A和B两个接口Object obj = 方法(new Class[]{A.class, B.class}) 动态代理初体验 我们根据上面的思路来体验一下 Java 中的动态代理吧,首先我们要先写两个接口。 12345interface A { public void a();}interface B { public void b(); } 然后我们就先来看一下动态代理的代码: 1234567891011 ...
首先需要到官网进行下载 破解安装的是 15 版本的别下错了 官网目前最高版本是V16版本,如果找不到 15 版的话,对应的下载链接已经安利在下面了 下载安装的步骤就不多说了,直接 next 下一步 —跳过~ Windows10 64bit: http://download.navicat.com/download/navicat150_premium_cs_x64.exe 免责声明:本人学生党一枚,本篇博客是从网络中搜集借鉴整理的,仅供个人学习使用,未用于商业用途,对于产生的一切不良后果概不负责,进来借鉴学习的朋友也仅供个人学习,如果侵害了您的权益请立即联系博主,博主会立即删除本文,谢谢(O ^ ~ ^ O)。 Navicat Premium15 破解过程首先需要下载注册工具 注册工具: https://pan.baidu.com/s/1nsYWtBmnBa4Y25ntK-AQ6A?pwd=yyds 直接双击运行注册工具(本人在未断网未关闭防火墙情况下成功),选择对应的 navicat 版本,此处为 v15,点击 Path 选择刚才安装 navicat 目录下的 navica ...
前言: 前段时间电脑重装了,于是去 Intellij 官网下了一个 IntelliJ IDEA Edu 版本,但是 Edu 的这个版本好想没有 Spring config,经过我一番查询,发现只有 Ultimate 版本才有…..而且不管是社区版还是 Edu 版很多功能都是不齐全的,所以索性就弄个终极版算了 在网上找了半天发现很多破解的都不行,什么注册码,什么破解器,而且有的套路都好深….让你加公众号回复 6666 领取破解码…..一次就算了,没想到他把破解码分两次,第二段破解码在另外一个公众号,害,真是一言难尽,后面终于还是通过不懈的努力给破解了,今天就把这个方法分享给大家 破解过程:是通过屏蔽官方的网络校验,达到永久激活的目的。亲测有效,方法也比较简单,下面是详细的图文教程 声明:本 IntellIj IDEA 激活破解教程,用到的激活补丁均来自网络,请勿商用,仅供个人使用,如有侵权,请联系作者删除。大家如果资金允许的话,最好购买正版 教程适用 2021.3.2 版本,更新日期在文本头部,后面如果出了 3.3 的版本就不知道能不能适用了,但目前最高版本是 3.2 idea ...
后端技术
未读一、MyBatis 简介 1. MyBatis 历史MyBatis 最初是 Apache 的一个开源项目 iBatis, 2010 年 6 月这个项目由 Apache Software Foundation 迁 移到了 Google Code。随着开发团队转投 Google Code 旗下, iBatis3.x 正式更名为 MyBatis。代码于 2013 年 11 月迁移到 Github。 iBatis 一词来源于“internet”和“abatis”的组合,是一个基于 Java 的持久层框架。 iBatis 提供的持久层框架 包括 SQL Maps 和 Data Access Objects(DAO)。 2. MyBatis 特性1) MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架 2) MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集 3) MyBatis 可以使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJO(Plain Old Java Objects,普通的 Java 对象)映射成数据库 ...