自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(85)
  • 收藏
  • 关注

原创 动态规划常用方法以及例题(Dynamic Programing)②

一、引入前面简单的讨论了动态规划的基本原理,以及实现步骤,当然简单的理论是完全不够的,现在我们就从一个我们很早就接触过的 斐波那契数列(Fibonacci Sequence) 开始来引入动态规划的基本实现思路。二、问题一(斐波那契数列)这是我们常见的一个斐波那契数列斐波那契的递推公式这里我们假设求斐波那契第六个数字,那么他的递归图如下,我们可以从图中发现在递归中会重读的计算某个值,也...

2019-08-28 14:39:15 464

原创 动态规划(Dynamic Problem)①

一、概述动态规划(dynamic programming)是运筹学的一个分支,是求解决策过程(decision process)最优化的数学方法。20世纪50年代初美国数学家R.E.Bellman等人在研究多阶段决策过程(multistep decision process)的优化问题时,提出了著名的最优化原理(principle of optimality),把多阶段过程转化为一系列单阶段问题...

2019-08-28 11:30:43 366

原创 堆排序详解(升序和降序Java版本)

1.概述堆排序的思路主要就是建堆和排序两部分组成。2.建堆算法Williams算法建堆法【Wil64】时间复杂度为O(nlogn),空间为O(1)Floyd算法建堆法【Floo64】一种更为高效的建堆方法,可以在O(时间)和O(1)空间内完成建堆任务。...

2019-08-23 23:30:51 1704

原创 MySQL中的InnoDB和MyISAM的区别与联系

1.前言前面虽然学习了MySQL,我们最常用的操作可能就是增删该查,但是对于底层的原理知道的不多,当看了一篇文章解释了InnDB和MyISAM的区别与联系之后,才真正了解到它们之间的联系与区别。因此有必要深入的了解一下数据库的底层。2.概述InnoDB和MyISAM都是MySQL 的两个存储引擎,那么在知道它们是干什么之前,我们得知道数据库存储引擎是干什么的?  数据库存储引擎是数据库底层...

2019-08-14 22:38:08 214

原创 1-初识Spring

1.Spring简介2002年,Rod Johnson首次推出了Spring框架的前身 interface21矿建。2003年,Spring框架以interface21框架为基础,重新设计,发布1.0正式版。Spring官网:https://spring.io/Spring下载:https://spring.io/projects/spring-framework#learn版本说明我...

2019-08-07 12:57:54 183

原创 SpringMVC-拦截器详解

一、SpringMVC拦截器1.1拦截器简介SpringMVC的拦截器,类似于Servlet中的过滤器Filter,都是用来对处理器进行预处理和后处理。开发者可以通过拦截器自定义一些功能。1.2、拦截器和过滤器的联系与区别联系拦截器和过滤器都是用来处理某个东西,例如一个请求在其之前或者之后所进行的某些操作。拦截器拦截器是SpringMVC框架自己的,只用使用了SpringMVC的项...

2019-08-04 16:22:27 203

原创 SpringMVC-上传文件与下载

一、概述SpringMvc可以用来进行上传文件,但是在SpringMvcContext中没有配置MultipartResolver,因此为了使用文件上传,我们需要在上下文中配置MultipartResolver。二、上传文件第一步为了可以上传文件,必须将表单的method设置为post,并将enctype设置为multipart/form-data。只有在这种情况下,浏览器才可以把用户选择...

2019-08-03 21:53:03 122

原创 MyBatis使用注解进行开发

一、概述在早期的MyBatis中都是使用xml进行配置的,直到注解的出现,注解可以替代一些xml中的配置。也就是注解中不需要xml配置CRUD的注解@insert()@delete()@update()@select()二、使用注解进行开发练习在前面的博客中,我们每次出了查询,增删改都需要提交事务,因此MyBatis开发人员也设计了一个构造器,它可以实现事务自动提交。ope...

2019-07-29 14:05:11 153

原创 MyBatis-实现日志(LOG4J)以及MySQL中的分页

一、 LOG4J实现log4java:java日志的实现实现日志—>控制台log4j依赖<!-- https://mvnrepository.com/artifact/log4j/log4j --><dependency> <groupId>log4j</groupId> <artifactId>log4j...

2019-07-29 12:54:30 176

原创 MyBatis基础2-解决属性与字段名不一致以及配置文件

一、MyBatis配置文件详解<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">...

2019-07-29 11:27:06 153

原创 MyBatis基础以及使用MyBatis实现简单增删该查

一、MyBatis概述MyBatis是一款优秀的持久层框架。MyBatis几乎避免了所有的JDBC代码手动设置参数以及获取结果集。MyBatis可以使用简答的XML或注解来配置和映射原生类接口和java中的POJO(Plain Old Java Objects,普通老式java对象)为数据库中的记录。MyBatis原来不叫MyBatis ,叫ibatis1、2MyBatis被托管在Git...

2019-07-29 10:19:13 138

原创 java发送邮件

概述我们使用代码完成邮件的发送,这个在实际项目中的应用非常广泛,比如注册需要发送邮件进行账号激活。在进行Java的发送邮件之前,我们最好了解电子邮件的工作机制,这样可以使我们更好的理解使用Java实现的每个步骤的含义。在开始Java发送邮件之前,我们需要两个jar包mail.jaractivation.jarJavaMail是sun公司为方便开法人员在应用程序中实现发送邮件和接收而提供...

2019-07-25 23:52:59 197

原创 使用IDEA创建Maven项目

创建项目的步骤1.打开IDEA2.创建一个新项目3.填写项目信息4.选择Maven路径以及配置文件和仓库,如果没有自动生成的话,我们就自己选择就可以,要知道我们的Maven安装到了哪里。5.配置项目名称6。选择自动导包7.创建成功了我们现在可以查看我我们的仓库会发现里面有很多jar包,这些以后就不用再下载了项目中需要的注意事项注意事项就是约定大于配置Maven中规定...

2019-07-25 21:34:17 213

原创 Maven的下载和安装详解

一、引入  在下载安装Maven之前,我们的知道为什它可以干什么,在JavaWeb中,我们遇到的烦恼就是每次都要导入jar包,忘记了就会很麻烦,那么有没有一种可以自动下载jar包的东西,所以Maven随之产生,Maven并不是最早的管理项目的工具二、Maven的核心思想  约定大于配置,Maven会给你规定怎么取书写Java代码,并且必须按照这个规范来。三、下载安装Maven和Tomca...

2019-07-25 20:21:17 127

原创 Jsp概述

首先什么是JSP(java Service Page)java Service Pagejava服务器页面,用来处理一些java前后端交互的数据,主要用来显示数据,不建议大量代码写在JSP里面。特点:简单和HTML差别不大书写页面会很乱,HTML代码和java交错JSP的执行过程1.动态请求会被分发到Web服务器中2.容器会去执行字节码文件,就是.class文件3.Servle...

2019-07-25 15:26:49 257

原创 Servlet中的会话(cookie和session)以及注销会话

一、会话所谓会话字面意思就是指一次交流会交谈。但是在Web中,会话表示从浏览器打开某个网站,在这个网站中无论操作了什么,直到关闭浏览器,这一个过程称之为一个会话。怎样算会话结束客户端关闭了服务端关闭了为什么要处理会话长期保持会话,无论用户关闭多少次浏览器,这个会话都要存在。比喻:你前天来了图书馆,我今天想要知道你昨天来了图书馆。解决方法:1.你留下了一个标记,让我知道你来过...

2019-07-25 14:16:31 1147

原创 Servlet中的请求转发和重定向以及乱码问题

转发重定向编写Servlet类package org.westos.servlet;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.Htt...

2019-07-24 23:04:54 575

原创 ServletContext介绍以及用法

一、ServletContext概述  ServletContext也被称为servlet上下文。WEB容器再启动时,它会为每个WEB应用程序都创建一个ServletContext对象,他代表当前web应用,并且这个对象是全局唯一,多个Servlet都共享这个对象。功能多个Servlet通过ServletContext对象实现数据共享获取WEB 应用的初始化参数使用ServletCon...

2019-07-22 14:44:46 217

原创 JDBC连接数据库中的-MySQL中的事务处理

一、 事务(Transaction)事务是一个最小的不可再分的工作单元,通常一个事务对应了一个完整的业务,事务就是保证操作的一致性,要么操作同时成功,要么同时失败。事务只和DML(insert,update,delete)语句有关系我们通常遇见的事务就是银行转钱,如果如果转钱成功那么显然双方的金额都应该更改,反之双发的金额不会发生变化,这里面就使用到了事务。这里MySQL处理事务只支持Inno...

2019-07-22 09:55:36 230

原创 PreparedStatement和statement的区别

一、PreparedStatement概述  PreparedStatement是statement的子类,它的实例对象可以通过调用Connection.preparedStatement()方法来获得,相对于Statement对象,PreparedStatement可以防止SQL注入。  另外Statement会使得数据库频繁编译SQL,有可能会造成数据库缓冲区溢出。PreparedSta...

2019-07-21 21:57:46 5094

原创 sql注入详解

sql注入  所谓sql注入就是,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器的恶意SQL命令。当应用程序使用输入内容来构造动态sql语句以访问数据库时,会发生sql注入攻击。如果代码使用存储过程,而这些存储过程作为包含未筛选的用户输入的字符串来传递,也会发生sql注入。案列...

2019-07-20 23:58:49 321

原创 使用JDBC实现增删该查

JDBC实现增删改查的详细步骤一、使用JDBC的过程一般为:1.数据库驱动2.获取数据库连接3.执行SQL语句4.获取查询结果二、详细步骤1.首先导入连接数据库的jar包,jar包我们可以在MySQL官网进行下载,然后在项目下面新建一个文件夹命名为lib,将jar包导入到这里。2.依赖jar包2.接下来就可以使用jdbc来实现简单的增删该查了。  首先我是在数据库中已经建...

2019-07-18 22:31:45 303

原创 Servlet概述以及IDEA搭建web环境

一.首先使用IDEA搭建Web环境1.打开IDEA2.创建一个Web项目3.4.配置Tomcat服务器5.二.HTTP协议请求:请求方式请求参数请求内容响应常用值200:OK302:重定向404:请求的文件不存在,路径写错了500:服务器代码写错了,写的Java程序有问题三.Servlet1.简介Servlet是Sun公司提供的一门用于...

2019-07-18 21:21:42 110

原创 JDBC概述

一、概述:  JDBC全称是Java Database Connectivity,是java数据库连接,是SUN公司为了简化 、统一对数据库的操作从而定义了一套java操作数据库的规范(接口),称之为JDBC。这套接口由 数据库厂商去实现,这样我们只需要学习jdbc接口,并通过jdbc加载具体的驱动,就可连接数据库实现JDBC的固定步骤1.加载驱动2.获取与数据库的连接3.获取用于向数据...

2019-07-18 16:01:47 147

原创 安装Tomcat服务器

一. 为何要搭建JavaWeb开发环境无论什么Web资源,想要被计算机访问就需要一个与之对应的网络通信程序。二.安装Tomcat服务器下载Tomcat: http://tomcat.apache.org/找到download4.下载完成之后,解压到文件夹6.解压完成后的目录三.Tomcat目录结构四.启动和关闭Tomcat显示这样的后就是启动成功。这里需要注...

2019-07-16 16:36:53 100

原创 MySQL数据管理(增删改查)

一.主键外键1.什么是主键外键:主键  某个属性可以唯一标识某一个元组,那么就称这个属性为主键外键  如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系中的外键。由此可以知道,外键建立了两个关系表之间的关联。以另一个关系的外键作为主关键字的表称为主表,具有此外键的表称为主表的从表。外键作用  保证数据一致性,完整性,主要目的是控制存储在外键表中的数据约束。使得两...

2019-07-16 15:45:29 999

原创 初识MySQL

一.概述在学习MySQL之前先学习什么是数据库以及数据库的定义等等   数据库是长期存储在计算机内有组织、大量、共享的数据集合。它可以供各种用户共享,具有最小的冗余度和较高的数据独立性。 数据库的四个基本概念数据,数据库,数据库系统,数据库管理系统。数据(data)   数据是数据库中存储的基本对象,我们一般就认为为数据是数字,例如93,12,等。广义的理解认为数据的种类很多,例如文本,...

2019-07-15 13:56:36 133

原创 无重复字符的最长子串(最容易理解的Java版本)

力扣中的题题目描述给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。来源:力扣(LeetCode)链接:https://leetcode-cn....

2019-06-24 23:01:37 2265 1

原创 初识CSS

1. 什么是CSSCascading Style Sheet 层叠样式表 表现HTML文件样式的语言:包括对字体、颜色、变距、高度、宽度 、背景图片、网页定位等设定。2. CSS的优势内容与表现分离网页的表现统一,容易修改丰富的样式,使得页面布局更加灵活减少网页的代码量,增加网页定的浏览速度,节省网络带宽运用独立于页面的CSS,有利于网页被搜索引擎收录等等3. CSS的基础语法...

2019-06-21 22:08:00 87

原创 Java中的可重入锁ReentrantLock以及synchronized实现多人抢票

在前面的抢票中出现了多个人抢到了同一张票,还有负数。可以发现多线程出现了问题。这是由于同一进程的多个线程共享一块存储空间,在带来方便的时候,也带来了访问冲突问题,为了保证数据在方法中被访问时的正确性,在访问时加入了锁机制synchronized当一个线程获得对象的排它锁,独占资源,其他线程必须等待,使用后释放锁。判断一个多线程是否有问题的标准:是否是多线程环境是否存在共享数据是否存在多条语...

2019-06-18 21:31:36 809 4

原创 java中的死锁

何谓死锁  死锁就是多个线程各自占有一些共享资源,并且互相等待其他线程占有的资源才能运行,从而导致两个或多个线程都在等对方释放资源,此时,若无外力作用,那么系统就会产生死锁。死锁现象  多个同步代码块互相嵌套,多个线程互相持有对方的锁,而不释放就会发生死锁现象。产生死锁的四个必要条件互斥条件:即在一段时间内,某资源只能被一个进程使用。如果此时还有其它进程请求该资源,则请求进程只能等待,...

2019-06-18 17:35:34 106

原创 Java多线程的优先级,礼让,睡眠,中断,守护,加入

一.线程设置以及获取优先级(1)线程的执行有两种调度模型分时调度模型   所有线程轮流使用 cpu 的使用权,平均分配每个线程占用 cpu 的时间片。抢占式调度模型   优先级高的线程先使用 cpu ,如果线程的优先级相同,那么会随机选取一个,另外优先级高的线程获取 cpu 的时间片会相对多一些,Java使用的是抢占式调度模型。(2) 线程设置优先级和获取优先级public ...

2019-06-18 16:24:08 445

原创 Java中的反射(Reflection)

1.在开始了解反射之前,首先了解一下静态语言和动态语言动态语言动态语言是一类运行时可以改变其结构的语言:例如新的函数,对象,甚至时代码,已有的函数可以被删除或者是其他结构上的变化,也就是说在代码运行时可以根据某些条件改变自身结构。动态语言有:C# , javaScript , PHP , Python等静态语言所谓静态语言就是运行时结构不可改变的语言就是静态语言,如Java,C ,...

2019-06-18 11:07:54 367

原创 Java中注解(Annotation)

注解(Annotation)注解的作用不是程序本身,可以对程序做出解释(类似于注释)可以被其他程序读取(例如编译器)注解的格式注解是以"@注释名"在代码中存在的 , 还可以添加一些参数值注解使用的地方可以在包,类,方法,代码块等上面,相当于添加了额外的辅助信息,可以通过反射机制实现对这些元数据的访问。注解的分类1.内置注解@Override:定义在Java.lan...

2019-06-17 20:30:01 118

原创 java中线程的三种创建方式以及特点

线程的概念首先了解进程与线程的区别与联系在操作系统中,通常将进程看作是系统资源的分配单位和独立运行的基本单位。一个任务就是一个进程。比如,正在运行的火狐浏览器,同时还可以打开一个网易云音乐,系统就会产生两个进程。通俗的说,一个进程既包含了它要执行的指令,也包括了执行指令时所需要的各种系统资源,如CPU,内存,输入输出端口。不同进程所占用的资源相对独立。进程具有动态性,并发行,独立性,异步性。...

2019-06-09 23:07:00 382

原创 Java中的TCP和UDP连接

运输层的两个主要协议UDP  - UDP 是无连接的,即发送数据之前不需要建立连接,(当然,发送数据结束时也没有连接可释放),因此减少了开销和发送数据的时延。  - UDP 使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的连接状态表  - UDP 是面向报文的,发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付 IP 层  - UDP 没有拥塞控制,因此网络出现...

2019-06-09 19:37:16 434

原创 java中的网络编程

InetAddress 类public class InetAddressextends Objectimplements Serializable  此类表示互联网协议(IP)地址。成员方法getAddress()  返回此 InetAddress 对象的原始IP地址getByName(String host)  在给定主机名的情况下确定主机的IP地址getHostA...

2019-06-09 18:23:47 149

原创 TCP协议中的三次握手和四次挥手以及常见问题

TCP的运输连接管理  首先TCP是面向连接的协议。运输连接是用来传送TCP报文的。TCP运输连接的建立和释放是每一次面向连接的通信中必不可少的过程。因此运输连接总共有三个阶段,分别是:连接建立,数据传送,连接释放。  在TCP连接建立的过程中要解决一下三个问题要使双方能够知道对方存在。要允许双方协商一些参数(如最大窗口值,时间戳选项等等)。能够对运输实体资源(如缓存大小,连接表中的项...

2019-05-28 17:53:28 360

原创 Java中的IO流(字符流)

字符流出现的原因  由于字节流操作中文不是很方便,所以Java就提供了字符流。字符流只能读写文本文件。字符流的抽象基类ReaderWriterString类中的编码和解码问题编码就是把字符串转换成字节数组String – byte[]解码就是把字符数组转换成字符串byte[] – String乱码编解码使用的码表不一致就会导致乱码import ...

2019-05-23 22:16:42 115

原创 java中的IO流(字节流)

IO流概述IO流用来处理设备之间的数据传输Java对数据的操作通过流的方式Java用于操作流的对象都在IO包中IO流分类按照数据流向输入流 读入数据输出流 写出数据按照数据类型字节流 可以读写任何类型的文件,例如音频,视频,文本文件字节输入流 InputStream 读字节输出流 OutputStream 写字符流 只能读写文本文件字符输入流 Reader 读...

2019-05-23 19:24:03 171

空空如也

空空如也

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

TA关注的人

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