自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(149)
  • 资源 (1)
  • 收藏
  • 关注

原创 Spring数据库事务管理

1. Spring数据库事务管理器的设计在Spring中数据库事务是通过PlatformTransactionManager进行管理的。TransactionTemplate源码:事务的创建、提交和回滚都是通过PlatformTransactionManager接口来完成,当事务产生异常时会回滚事务。在默认的实现中所有的异常都会回滚,我们可以通过配置去修改在某些异常发生时回滚或者不回滚事务。当无异常时会提交事务。PlatformTransactionManager接口的源码:1.配置事务管理器

2021-04-19 11:51:53 808

原创 Spring与数据库编程

1. 传统JDBC的缺点一般的JDBC代码如下:传统的JDBC代码中含有大量的异常处理语句,使得代码繁杂。2. 配置数据库资源在实际工作中,大部分会配置成为数据库连接池,我们既可以使用 Spring 内部提供的类,也可以使用第3方数据库连接或者从Web服务器中通过 JNDI 获取数据源。1.使用简单数据库配置配置SimpleDriverDataSource:这样就能够配置一个最简单的数据源。这个配置一般用于测试,因为它不是一个数据库连接池,只是一个很简单的数据库连接的应用。在更多的时候,

2021-04-09 17:29:09 420

原创 面向切面编程

1. SpringAOP基本概念1.AOP概念和使用原因现实中有 些内容并不是面向对象 (OOP )可以解决的,比如数据库事务,它对于企业级的 Java EE 应用而言是十分重要的 又如在电商网站购物需要经过交易系统、财务统,对于交易系统存在一个交易记录的对象,而财务系统则存在账户的信息对象。从这个角度而 ,我 需要对交易记录和账户操作形成一个统一的事务管理。交易和账户的事务,要么全部成功,要么全部失败。从上图可知,交易和账户都是对象,两个对象需要在同一个事务中控制,因此需要面向切面的方法,切面就是

2021-04-08 08:48:25 863

原创 装配SpringBean

1.依赖注入的三种方式实际环境中实现 IoC 容器的方式主要分为两大类, 一类是依赖查找,依赖查找是通过资源定位,把对应的资源查找回来。另一类则是依赖注入,Spring主要使用的是依赖注入。依赖注入可分为3种方式:构造器注入setter注入接口注入构造器注入和 setter 注入是主要的方式,而接口注入是从别的地方注入的方式。(1)构造器注入构造器注入依赖于构造方法实现,构造方法可以是含参或无参数的。一般情况下,通过类的构造方法创建类对象,Spring可以采用反射,通过使用构造方法完成注入

2021-04-01 15:27:57 177

原创 Spring IoC

1. Spring概述Spring 中,它会认为 Java 类都是资源,而资源都 Bean ,容纳这些 Bean 的是 Spring 所提供的 IoC 容器,所以 Spring 种基于 Bean的编程。2.SpringIoC概述有如下的例子:现实中系统的开发者是个团队,团队由许多开发者组成。现在假设你在一个电商网站负责开发工作,你熟悉商品交易流程,但是对财务却不怎么熟悉,而团队中有些成员对于财务处理分熟悉,在交易的过程中,商品交易流程需要调度财务的相关接口,才能得以实现,那么你的期望应该是:熟

2021-03-29 17:00:16 119

原创 MyBatis的解析和运行原理

MyBatis运行过程分为两步:读取配置文件缓存到Configuration对象,用以创建SqlSessionFactory;SqlSession的执行过程1. 构建SqlSessionFactory过程SqlSessionFactory是MyBatis的核心类之一,提供创建MyBatis的核心接口SqlSession,所以要先创建SqlSessionFactory,因此要提供配置文件和相关参数。MyBatis使用Builder模式创建SqlSessionFactory,可以通过SqlSessi

2021-03-29 11:21:37 343 2

原创 动态SQL

1. 概述MyBatis的动态SQL包括如下几种元素:2. if元素例如:根据角色名称roleName 去查找角色,但是角色名称是一个选填条件,不填时,就不要用它作为条件查询。使用if构建动态SQL:当参数 roleName 传递进映射器时,如果参数不为空,则采取构造对 ro leName 的模糊查询。3. choose、when、otherwise元素上面的例子相当于java中的if语句,不是这个就是那个。在映射器的动态语句choose、when、otherwise这三个元素承担这样的功

2021-03-27 17:36:49 99

原创 映射器

映射器是 MyBatis 最复杂且最重要的组件。它由 1个接口加上 XML 文件(或者注解)组成。在映射器中可以配置参数、各类的 SQL 语句、存储过程、缓存、级联等复杂的内容,并且通过简易的映射规则映射到指定的 POJO 或者其他对象上。1. 概述映射器配置元素:2. select元素在映射器中 select 元素代表 SQL select 语旬,用于查询。配置如下:(1)select元素的应用统计用户中同一个姓氏的用户数量:id 配合 Mapper 的全限定名,联合成为唯一的标识

2021-03-27 10:44:16 1563

原创 MyBatis配置

1.概述MyBatis的所有元素如以下代码:2.properties属性properties属性给系统配置运行参数, 放在 XML 或者 propertie 文件,而不是放在 Java 码中, 这样 的好处在于方便参数修改,而不会引起代码 重新编译。2.1 property子元素使用 property 子元素将数据库连接的相关配置进行改写:这里使用了元素<properties>下 子元素<property>定义,用字符串 database. usemame 定义数据库用户名, 然后就可以

2021-03-25 12:00:07 188 1

原创 认识Mybatis核心组件

持久层可以将业务数据存储到磁盘,具备长期存储能力,只要磁盘不损坏(大部分的重要数据都会有相关的备份机制),在断电或者其他情况下,重新开启系统仍然可以读取这些数据。Mybatis 最大的成功主要有三点:·不屏蔽 SQL 意味着可以更为精确地定位 SQL 语句,可以对其进行优化和改造,·提供强大、灵活的映射机制 ,方便 Java 开发者使用 。提供了使用 Mapper 的接口编程,只要 个接口和 XML 就能创建映射器1. Mybatis的核心组件核心组件分为四个部分:SqlSessionFa

2021-03-24 11:33:03 1696

原创 Java设计模式(建造者模式)

建造者模式属于对象的创建模式。可以将一个产品的内部表象(属性〉与产品的生成过程分割开来,从而使 建造过程生成具有不同的内部表象的产品对象。Builder 模式是种分步构建对象的模式。实例:首先,创建一个 TicketHe per 对象,它是配置类,能帮我们一步步完成构建对象。随后建立一个构建类:显然 Builder 方法很简单,它只有个配置类的参数,通过它就可以得到所有套票的信息,从而构建套票对象。有了这两个类,就可以完成一套对象的构建。这就是构建模式 使用,构建分成若干步,通过 步步构建信

2021-03-23 16:16:28 78

原创 Java设计模式(工厂模式和抽象工厂模式)

1.普通工厂模式有个IProduct 产品接口 ,它下面有 5个实现类Product1、Product2、 Product3 、Product4、Product5。它们属于1个大类,可以通过1个工厂去管理它们的生成,但是由于类型不同,所以初始化有所不同 。为了方便使用产品工厂( ProductFactory )类来创建这些产品的对象,用户可以通过产品号来确定需要哪种产品。ProductFactory类的伪代码:对于程序调用者而言,它只需要知道通过工厂的 createProduct 方法,指定产品编

2021-03-23 15:53:22 172

原创 Java设计模式(观察者模式)

观察者模式又称为发布订阅模式,是对象的行为模式。观察者模式定义了一对多的依赖关系,让多个观察者对象同时监视着被观察者的状态,当被观察者的状态发生变化会通知所有观察者 并让其自动更新自己。观察者模式示例:类似这样,一个对象(电商接口)会去监昕另外一个对象(产品列表〉,当被监昕对象(产品列表)发生变化,对象(电商接口)就会触发一定的行为,以适合变化的逻辑模式,我们称为观察者模式,电商接口被称为观察者或者监听者,而产品对象被称为被观察者或者被监听者。被观察者(产品列表)代码:构建方法私有化,避免通过

2021-03-23 15:02:38 166

原创 Java设计模式(动态代理模式和责任链模式)

动态代理的意义在于生成一个占位,代理真实对象,从而控制正式对象的访问。代理的作用是在真实对象访问之前或者之后加入对应的逻辑,或者根据其他的规则控制是否使用真实对象。代理不需分为两步:代理对象和真实对象建立代理关系;实现代理对象的代理逻辑方法。在java中有多种动态代理机制,如JDK、CGLIB、Javassist等。1. JDK动态代理该方法需要借助一个接口才能产生代理对象,首先定义接口:随后提供实现类来实现接口:在JDK动态代理中,实现代理逻辑类必须实现java.lang.reflect.In

2021-03-23 11:38:01 309

原创 Java设计模式(反射技术)

java反射技术应用广泛,能够配置:类的全限定名、方法和参数、完成对象的初始化、反射一些方法。java反射内容繁多,包括对象构建、反射方法、注解、参数、接口等。1 通过反射构建对象java中允许通过反射配置信息构建对象。例如:通过反射的方法去构建它,如下所示。以上的构造方法都是无参构造,含参构造方法的反射构造如下所示。先通过forName加载到类的加载器,然后通过getConstuctor方法,它的参数可以是多个,定义为String.class,为有且只有一个参数类型为String的构建方

2021-03-22 21:52:51 301

原创 1.1Spring-SpringMVC-Mybatis框架简介

一.Spring框架1.1SpringIOCIOC是一个容器,Spring中,一切java资源都是java Bean容器,容器的目标是管理Bean和他们之间的关系。在SpringIOC里装载着各种Bean,包含Java Bean的建立、事件、行为等都是由IOC容器管理。Spring依靠描述完成对象的创建以及依赖关系。例子:插座依赖国家标准(可以定义为一个接口,Socket)去定义,目前有两种插座(Scoket1和Socket2)。当使用插座1时,有如下代码:Socket socket = ne

2021-03-22 21:11:14 475

原创 操作系统专题

一,进程间通信方式有哪些,进程调度方法有哪些?1.共享内存可以说这是最有用的进程间通信方式。它使得多个进程可以访问同一块内存 空间,不同进程可以及时看到对方进程中对共享内存中数据得更新。这种方式 需要依靠某种同步操作,如互斥锁和信号量等。2.消息队列“消息队列”是在消息的传输过程中保存消息的容器。具有写权限得进程可 以按照一定得规则向消息队列中添加新信息;对消息队列有读权限得进程则可 以从消息队列中读取信息。3.信号信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。

2020-09-04 11:08:27 248

原创 数据库专题(有关索引引擎/数据库连接池的问题)

一,mysql 中 MyIsam 与 InnoDB 的区别1.事务处理上方面MyISAM 强调的是性能,查询的速度比 InnoDB 类型更快,但是不提供事务支持。 InnoDB 提供事务支持事务。2.外键MyISAM 不支持外键,InnoDB 支持外键。3.锁MyISAM 只支持表级锁,InnoDB 支持行级锁和表级锁,默认是行级锁,行锁大幅 度提高了多用户并发操作的性能。innodb 比较适合于插入和更新操作比较多的情况, 而 myisam 则适合用于频繁查询的情况。另外,InnoDB 表的

2020-09-03 15:02:43 230

原创 数据库专题(有关索引的问题)

一,什么是数据库索引?索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。如果想按特定职员的姓来查找他或她,则与在表中搜索所有的行相比,索引有助于更快地获取信息。索引的一个主要目的就是加快检索表中数据,亦即能协助信息搜索者尽快的找到符合限制条件的记录ID的辅助数据结构。例如这样一个查询:select * from table1 where id=10000。如果没有索引,必须遍历整个表,直到ID等于10000的这一行被找到为止;有了索引之后(必须是在ID这一列上

2020-09-03 10:52:35 478

原创 数据库专题(关于连接/存储过程/锁/范式/事务的问题)

一,内连接和外连接为区别?有如下两个表:内连接只显示符合连接条件的记录外连接分左外连接、右外连接、全外连接三种:1)左外连接:即以左表为基准,到右表找匹配的数据,找不到匹配的用 NULL 补齐。2)右外连接即以右表为基准,到左表找匹配的数据,找不到匹配的用 NULL 补齐。 显示右表的全部记录及左表符合连接条件的记录。3)全外连接除了显示符合连接条件的记录外,在 2 个表中的其他记录也显示出来。二.inner join 和 left join 的性能比较1.在解析阶段,左连接

2020-09-02 11:25:54 552

原创 数据库专题(sql注入问题)

一,sql 语句应该考虑哪些安全性?1.防止 sql 注入,对特殊字符进行过滤、转义或者使用预编译的 sql 语句绑定变量。2.当 sql 语句运行出错时,不要把数据库返回的错误信息全部显示给用户,以防止 泄漏服务器和数据库相关信息。二.什么叫做 SQL 注入,如何防止?举个例子: 你后台写的 java 代码拼的 sql 如下:public List getInfo(String ename){ StringBuffer buf = new StringBuffer(); buf.appe

2020-09-01 09:55:31 396

原创 数据库专题(优化查询)

一,优化查询的方法都有哪些?1.使用索引:应尽量避免全表扫描,首先应考虑在 where 及 order by ,group by 涉及的列上建立索引。2.优化sql语句:2.1 通过 explain(查询优化神器)用来查看 SQL 语句的执行效果, 可以帮助选择更好的索引和优化查询语句,写出更好的优化语句。2.2 任何地方都不要使用 select * from t ,用具体的字段列表代 替“*”,不要返回用不到的任何字段。2.3 不在索引列做运算或者使用函数。2.4 查询尽可能使用 limi

2020-09-01 09:17:40 208

原创 并发

网站的高并发,大流量访问如何解决?1、HTML页面静态化访问的频率较高但内容变动较小,使用网站HTML静态化方案来优化访问速度。优势:减轻服务器负担。加快页面打开速度,静态页面无需访问数据库,打开速度较动态页面有明显提高;很多搜索引擎都会优先收录静态页面,不仅被收录的快,还收录的全,容易被搜 索引擎找到;HTML 静态页面不会受程序相关漏洞的影响,减少攻击 ,提高安全性。2、图片和应用服务器相分离将网页上的图片另外使用一个或多个服务器进行存储,将图片放在一个虚拟目录中,网页上的图片都是

2020-08-14 20:59:14 111

原创 线程池

什么是线程池?其工作原理是什么,好处是什么?一个线程池管理了一组工作线程,同时它还包括了一个用于放置等待执行 任务的任务队列(阻塞队列)。默认情况下,在创建了线程池后,线程池中的线程数为 0。任务提交给 线程池之后的处理策略如下:如果此时线程池中的数量小于 corePoolSize(核心池的大小),即 使线程池中的线程都处于空闲状态,也要创建新的线程来处理被添加的任务(也 就是每来一个任务,就要创建一个线程来执行任务)。. 如果此时线程池中的数量大于等于 corePoolSize,但是缓冲队列 w

2020-08-11 10:01:14 239

原创 多线程与并发

1.缓存一致性问题,如何解决?当程序在运行过程中,会将运算需要的数据从主存复制一份到 CPU 的高速 缓存当中,那么 CPU 进行计算时就可以直接从它的高速缓存读取数据和向其中 写入数据,当运算结束之后,再将高速缓存中的数据刷新到主存当中。比如下面的这段代码: i = i+1比如同时有 2 个线程执行这段代码,假如初始时 i 的值为 0,那么我们希望 两个线程执行完之后 i 的值变为 2。可能存在下面一种情况:初始时,两个线程分别读取 i 的值存入各自所在的 CPU 的高速缓存当中,然后线程 1 进

2020-08-10 22:51:20 254

原创 计算机网络(运输层)

运输层1.运输层协议概述IP层中真正进行通信的实体是在主机中的进程,IP协议虽然将分组发送到目的主机,但是这个分组停留在主机的网络层而没有交付主机的应用进程。从运输层来看,通信的真正端点是主机中的进程。一个主机中经常有多个应用进程同时分别和另一台主机中的多个应用进程通信。表明运输层具有复用和分用的功能,服用时在发送方不同的应用进程都可以使用同一运输层协议传送数据,分用指接收方的运输层在剥离豹纹的首部后能够将这些数据正确交付目的应用进程。网络层为主机间提供逻辑通信,运输层为应用进程之间提供端到端的逻辑

2020-08-05 14:33:01 400

原创 计算机网络(网络层)

网络层1.虚电路与数据报服务2.网际协议IP下图是IP协议与其配套协议的关系1、虚拟互联网络将网络互相连接起来使用的一些中间设备根据所在的层次看:许多计算机网络通过一些路由器进行互联。参加互联的计算机网络使用相同的网际协议IP,可以将互联后的计算机网络作为一个虚拟互联网络。其逻辑互联,物理网络的异构是客观存在的,使用IP协议使得性能各异的网络在网络层看起来像一个统一的网络。IP网络好处:当ip网上的主机进行通信,好像在一个单个网络上通信。下图表示源主机H1将一个IP数据报发送给目的

2020-08-04 09:57:21 276

原创 计算机网络(数据链路层)

数据链路层1.点对点信道的数据链路层1.数据链路和帧链路:从一个节点到相邻节点的一段物理线路,中间没有其他交换节点。数据链路:在线路上传输数据时,除了要有一条物理线路,还要有通信协议控制数据传输。将这些协议的硬件和软件加到连路上,构成数据链路。数据链路层将网络层的数据构成帧给链路,将收到的帧中的数据取出交给网络层。点对点信道的数据链路层的通信步骤:(1)、点A的数据链路层将网络层的IP数据报加首部和尾部封装为帧(2)、点A将封装好的帧发给点B的数据链路层(3)、点B的数据链路层收到帧无差

2020-08-01 11:48:20 277

原创 计算机网络(物理层)

物理层基本概念物理层考虑的是如才能在链接各种计算机的传输媒体上传输数据比特流,而不是指具体的传输媒体。物理层的如下特性:数据通信知识一个数据通信系统可分为源系统、传输系统、目的系统。源系统包括如下:源点:产生要传输的数据发送器:源点产生的数字比特流通过发送器编码才能传输系统中进行传输。接收器:接收传送来的信号,将它转换为能够被目的设备处理的信息。终点:从接收器获取传送来的数字比特流,将信息输出。常用编码方式:不归零:正电平为1,负电平为0归零制:正脉冲为1,负脉冲为0

2020-07-31 14:59:08 162

原创 计算机网络(网络基础概念)

0. 网络基础1、互联网基础结构发展阶段从单个网络到互联网的发展三级结构的互联网,分为主干网、地区网、校园网多层次ISP结构的互联网2、互联网的组成边缘部分:由所有连接在互联网上的主机组成,用户直接使用,进行通信和资源共享核心部分:大量网络和连接在这些网络的路由器组成,为边缘部分提供服务(1)边缘部分该部分是连接在互联网上的所有主机,又称为端系统。有两种通信方式:客户端-服务器:客户端为服务请求方,服务器为提供方对等连接:双方都可以下载对方的已经存在硬盘上的

2020-07-31 11:06:45 349

原创 计算机网络(cookie与session)

5、其他相关5.1 Session原理session 可以放在文件、内存中或数据库都可以,是以键值对的形式存储。Session 也是一种 key-value 的属性对。当程序需要为某个客户端的请求创建一个 session 的时候,服务器首先检查这个客户 端的请求里是否已包含了一个 session 标识 - 称为 session id,如果已包含一个 session id 则说明以前已经为此客户端创建过 session,服务器就按照 session id 把这个 session 检索 出来使用(如果检索

2020-07-30 10:35:17 413

原创 计算机网络(Socket编程)

4. Socket编程4.1 socket的基本步骤创建 Socket 连接时,可以指定使用的传输层协议,Socket 可以支持不同的传输层协 议(TCP 或 UDP),当使用 TCP 协议进行连接时,该 Socket 连接就是一个 TCP 连接。 Server 端所要做的事情主要是建立一个通信的端点,然后等待客户端发送的请求。典型的处理步骤如下:(服务器端建立连接过程)。1、构建一个 ServerSocket 实例,指定本地的端口。这个 socket 就是用来监听指定端口的 连接请求的。2、重复

2020-07-29 10:58:51 332

原创 计算机网络(安全相关方面)

3. 安全相关方面3.1 攻击网站的方法和原理1、DDos攻击DDOS 是英文 Distributed Denial of Service 的缩写,意即“分布式拒绝服务”。当前主要有 2 种流行的 DDOS 攻击:(1)、SYN Flood攻击:这是一种利用 TCP 协议缺陷,发送大量伪造 的 TCP 连接请求,从而使得被攻击方资源耗尽(CPU 满负荷或内存不足)的攻击方式。(2)、TCP 全连接攻击:TCP 全连接攻击就是通过许多僵尸主机不断地与受害服务器建立大量的 TCP 连接, 直到服务器的

2020-07-29 10:04:24 199

原创 计算机网络(HTTP)

2. HTTP协议相关问题2.1 HTTP的请求报文结构和响应报文结构HTTP 请求报文主要由请求行、请求头、空行、请求正文(Get 请求没有请求正 文)4 部分组成。1、请求行由 3 部分组成,分别为:请求方法、URL 以及协议版本,之间由空格分隔;请求方法包括 GET、HEAD、PUT、POST、TRACE、OPTIONS、DELETE 以及扩展 方法,当然并不是所有的服务器都实现了所有的方法,部分方法即便支持,出 于安全性的考虑也是不可用的;协议版本的格式为:HTTP/主版本号.次版本号

2020-07-28 11:53:02 541 2

原创 计算机网络(TCP/IP)

1、TCP/IP1.1 OSI 与 TCP/IP 各层的结构与功能,都有哪些协议,协议 所占端口号。1、物理层为了建立、维护和查出物理链路所需的机械的、电气的、功能的和规程的特性,其作用是使原始的数据比特流能在物理媒体上传输。具 体涉及接插件的规格、“0”、“1”信号的电平表示、收发双方的协调等内容。2、数据链路层比特流被组织成数据链路协议数据单元(通常称为帧),并以其为单位进行传输,帧中包含地址、控制、数据及校验码等信息。数据链路层的主要作用是通过校验、确认和反馈重发等手段,将不可靠的物理链

2020-07-27 10:51:31 385

原创 设计模式

1. 单例模式保证一个类只有一个实例,并且提供一个访问该实例的全局访问点。优点:– 由于单例模式只生成一个实例,减少了系统性能开销,当一个对象的产生需要 比较多的资源时,如读取配置、产生其他依赖对象时,则可以通过在应用启动 时直接产生一个单例对象,然后永久驻留内存的方式来解决– 单例模式可以在系统设置全局的访问点,优化环共享资源访问,例如可以设计 一个单例类,负责所有数据表的映射处理1、懒加载(静态内部类)public class Singleton{ private Singletion{

2020-07-23 11:15:26 202

原创 数据结构与算法(查找)

7. 查找7.1 基本概念1、查找表:用于查找的数据集合,由同一类型的数据元素组成,经常进行的操作:2、静态查找表:无需动态修改查找表的操作,都是静态查找表。适合的查找方法有顺序查找、折半查找、散列查找。3、动态查找表:需要动态插入或删除的操作。适合的查找方法有二叉排序树查找、散列查找。4、关键字:数据元素中唯一表示该元素的某个数据项的值。5、平均查找长度:所有查找过程中进行关键字比较次数的平均值。7.2 顺序查找1、一般线性表的顺序查找从线性表的一端开始,逐个检查关键字,当查找的某

2020-07-18 17:00:43 303

原创 数据结构与算法(图)

6. 图6.1 基本概念1.定义有向图无向图简单图多重图完全图子图有两个图G=(V,E)和G’=(V’,E’),若V’是V的子集,且E’是E的子集,称G’是G的子图。若满足V(G’)=V(G)的子图G’,则称其为G的生成图。并不是V和E的任何子集都能构成G的子图,这样的子集可能不是图,E的子集中的某些边关联的顶点可能不在这个V的子集中。连通、连通图、连通分量强连通图、强连通分量生成树、生成森林顶点的度、入度、出度

2020-07-17 10:10:30 298

原创 数据结构与算法(树)

5. 树5.1 树的基本概念1、树的定义2、基本术语3、树的性质5.2 二叉树概念1、二叉树定义及特性二叉树与度为二的有序树区别:几种特殊二叉树二叉树的性质2、二叉树的存储结构顺序存储结构链式存储结构5.3 二叉树的遍历和线索二叉树1、 二叉树遍历先序遍历中序遍历后序遍历在递归遍历中,递归栈的深度恰好是树的深度,因此在最坏情况下,二叉树是有n个节点且深度为n的单支树。空间复杂度为O(n)。递归与非递

2020-07-14 15:56:22 210

原创 牛客网剑指offer习题(最小的k个数&里连续子数组的最大和)

输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。分析:首先是对数组进行排序,在筛选出值最小的k个数。import java.util.ArrayList;import java.util.Stack;import java.util.SortedSet;import java.util.Arrays;public class Solution { public ArrayList<Integer> G

2020-07-13 23:08:12 323

ReliefF.py

使用python实现的ReliefF算法,可以直接下载使用。ReliefF算法是一种经典的过滤式特征选择算法,优点是效率高,效果好。

2020-05-19

空空如也

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

TA关注的人

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