自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 【Java基础】三大特性

Java三大特性——封装、继承、多态一、封装二、继承三、多态一、封装封装就是隐藏对象的属性和实现细节,提供公共方法对其进行访问。常用之一:成员变量私有化(private),对外提供对应的set/get方法进行访问(构造方法)private:权限修饰符,修饰成员变量,将其私有化,仅本类中可以使用。public class Person { private int id; private String name; private Person person; public Person() {

2020-07-19 21:28:12 207

原创 Leetcode416.分割等和子集(01背包问题)

416.分割等和子集题目方法一——动态规划(01背包问题)方法二——背包问题(空间复杂度将为O(n))题目给定一个只包含正整数的非空数组。是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。注意:每个数组中的元素不会超过 100数组的大小不会超过 200示例 1:输入: [1, 5, 11, 5]输出: true解释: 数组可以分割成 [1, 5, 5] 和 [11].示例 2:输入: [1, 2, 3, 5]输出: false解释: 数组不能分割成两个元素和相等

2020-07-18 15:59:38 228 1

原创 背包问题

背包问题详解0-1背包问题1. 题目2.基本思路3. 优化空间复杂度为O(V)4. 初始化细节5. 还可以继续优化0-1背包问题1. 题目有N件物品和一个容量为V的背包,放入第i 件物品消耗费用为Ci,得到价值为Wi。求解将哪些物品放入背包使价值综合最大2.基本思路01背包问题的特点是每种物品仅有一件,可以选择放或者不放。用动态规划做。定义状态:dp[i][v]表示前i件物品恰好放入容量为V的背包中,可以获得的最大价值,状态转移方程:dp[i][v]= max(dp[i-1][v], dp[i

2020-07-18 15:51:43 172

原创 Leetcode206.反转链表

206.反转链表题目方法一——暴力解法方法二——迭代方法方法三——递归题目反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?方法一——暴力解法建立一个新链表,新链表是采用头插法建立的。时间复杂度与空间复杂度都是O(n)public class ReverseList {//Definition

2020-07-17 16:47:35 127

原创 在浏览器中输入URL地址到显示主页全过程

在浏览器中输入URL地址到显示主页全过程一、浏览器查找域名的IP地址——DNS解析二、与服务器建立连接三、发送HTTP请求1、http协议2、HTTP请求报文四、服务器处理请求并返回HTTP报文五、浏览器解析渲染页面六、断开TCP连接该过程一共有七个步骤:一、浏览器查找域名的IP地址——DNS解析DNS解析就是一个递归查询过程:比如域名:www.baidu.com.,1、先在本地域名服务器中查询IP地址,如果没有会向根服务器发送请求;2、根域名服务器不存在该域名时,给出对应的.com顶级域名服务

2020-07-03 16:23:12 1475

原创 【计算机网络】TCP三次握手四次挥手

TCP三次握手四次挥手TCP的报文格式关键字段:序号(sequence number)Seq序号:占4个字节,在建立连接时由计算机生成的随机数作为其初始值,通过 SYN 包传给接收端主,用来解决网络包乱序问题。确认号ack: 占4个字节,只有ACK标志位为1时,确认序号字段才有效, Ack=Seq+1,表示期望收到的下一个字节的序号,并且确认号之前的数据已经全部接收标志位(flag)同步SYN占1位,连接建立时用于同步序号。SYN=1时,表示这是一个连接请求或连接确认报文。当S

2020-07-03 15:41:16 306

原创 【计算机网络】OSI与TCP/IP

OSI:Open System Interconnect开放系统互连参考模型,是个灵活的、稳健的和可互操作的模型,并不是协 议,常用来分析和设计网络体系结构。1、应用层应用层的任务是通过进程间的交互来完成特定网络应用。应用层协议定义的是应用进程间的通信和交互规则,比如域名系统DNS(53)、支持万维网应用的HTTP(80)协议、支持电子邮件的SMTP(25)协议、邮局协议第三版POP3(110)、文件传输协议FTP等。应用层交互的数据单元是报文。域名域名系统DNS:作为一个可以将IP地址和域名(比.

2020-07-02 16:59:13 499

原创 【Java基础】重载和重写

重载(Overloading):位于同一个类之中,方法名相同,参数列表不同,参数的类型不同,返回值可以相同或不同;特征:方法名必须相同;参数列表一定不同;访问修饰符和返回值类型可以相同也可以不同;重写(Overriding):子类继承父类时需要重写父类的方法,方法名相同(返回值类型相同),参数相同,具体的实现不同,特征:方法名必须相同,参数列表必须相同,返回值类型必须相同;访问权限不能比父类中被重写的方法的访问权限低;子类与父类在同一个包中,那么子类可以重写父类所有方法,除了final和

2020-07-01 16:41:12 134

原创 【Java基础】JVM、JDK、JRE区别

JVM、JDK、JREJVMJREJDK参考:JDK与JRE区别JVMJVM(Java虚拟机)是运行Java字节码的虚拟机,有针对不同系统的特定实现(Window、Linux、macOS等),目的是使用相同的字节码,给出相同的结果。字节码和不同系统的JVM实现是Java语言“一次编译、处处运行”的关键。什么是字节码?字节码有什么好处?概念:在Java中,JVM可以理解的代码就叫做字节码文件,即.class文件,不面向任何特定的处理器,只面向虚拟机优点:1、由于字节码文件只面向虚拟机,不面向任

2020-07-01 16:26:01 281

原创 【Java基础】面向对象和面向过程的区别

面向对象和面向过程的区别面向过程: 分析出解决问题的所需要步骤,然后用函数把这些步骤一步一步实现,使用的时候 依次调用函数即可。强调的是步骤,最小的程序单元是函数。优点:性能比面向对象高。因为类调用时需要实例化,开销比较大,比较消耗资源,而面向过程的语言大多都是直接编译成二机制码在电脑上执行,可以减少资源的消耗。所以当性能是重要参考因素时,比如单片机,嵌入式开发等采用面向过程开发。缺点:⾯向过程没有⾯向对象易维护、易复⽤、易扩展面向对象:把构成问题事务分解成各个对象,建立对象的目的在于描述某个事物在

2020-07-01 15:53:54 177

原创 招银网络科技面经一

招银网络科技面经一1、python的数据结构2、python的参数传递是引用和值传递3、static关键字用法,可以修饰代码块4、String类可以被继承吗?5、Java重载和重写的区别6、Java虚拟机的堆、栈区别1、JVM栈(虚拟机栈)2、堆内存(Heap Memory)3、方法区4、本地方法栈5、程序计数器整个过程比较紧张,基本上都没有回答,这是事后整理的部分面试官问题。可能我太菜了,面试官问的简单。1、python的数据结构四种内置数据结构:列表list、元组tuple、字典dict、集合se

2020-06-30 18:49:06 8664

原创 Leetcode349:两个数组的交集

349:两个数组的交集题目思路一思路二题目给定两个数组,编写一个函数来计算它们的交集。示例 1:输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2]示例 2:输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出:[9,4]说明:输出结果中的每个元素一定是唯一的。我们可以不考虑输出结果的顺序。思路一迭代检查第一个数组的元素是否在第二个数组中,如果存在则将其添加到结果中,否则继续。import java.util

2020-06-23 16:47:39 215

原创 【MySql】安全管理/数据库维护

安全管理1、安全管理学习MySQL的访问控制和用户管理。1、安全管理MySQL服务器的安全基础是:用户应该对他们需要的数据具有适当的访问权,既不能多也不能少。访问控制:管理访问控制需要创建和管理用户账号。创建用户账号:CREATE USERCREATE USER ben IDENTIFIED BY 'p@wOrd′;CREATEUSER创建一个新用户账号。在创建用户账号时不一定需要口令,不过这个例子用IDENTIFIEDBY′p@wOrd';CREATE USER创建一个新用户账号。在创建用

2020-06-23 10:11:21 192

原创 【Java核心技术卷一】控制台输出

数组的传统输出方式:1、直接输出:for(int i = 0; i < nums1.length; i++) System.out.println(nums[i]);2、for each循环for(int n : nums1) System.out.println(nums[i]);3、调用Arrays.toString(),以数组的形式输出调用Array.toString(nums1),返回一个包含数组元素的字符串,这些元素被放置在括号内,并用逗号分开System.out.pr

2020-06-22 15:09:30 127

原创 【MySql】用正则表达式进行搜索

用正则表达式进行搜索REGEXP后所跟的东西作为正则表达式处理。**.**是正则表达式语言中一个特殊的字符,表示匹配任意一个字符SELECT prod_name FROM products WHERE prod_name REGXP ‘.000’ ORDER BY prod_name;**|**为正则表达式的OR操作符,表示匹配其中之一;SELECT prod_name FROM products WHERE prod_name REGXP ‘1000|2000’ ORDER BY prod

2020-06-21 21:48:18 147

原创 【MySql】过滤数据

过滤数据1、使用WHERE子句2 、WHERE子句操作符讲授如何使用SELECT语句的WHERE子句指定搜索条件。1、使用WHERE子句只检索所需数据需要指定搜索条件(search criteria),搜索条件也称为过滤条件(filter condition)。在SELECT语句中,数据根据WHERE子句中指定的搜索条件进行过滤。WHERE子句在表名(FROM子句)之后给出,如下所示:SELECT * FROM t_stu WHERE math = 60;分析:不返回所有行,只返回math =

2020-06-21 17:58:04 214

原创 【MySql】排序检索数据

排序检索数据1、排序数据2、按多个列排序3、指定排序方向如何使用SELECT语句的ORDER BY子句,根据需要排序检索出的数据。1、排序数据子句(clause): SQL语句由子句构成,有些子句是必需的,而有的是可选的。一个子句通常由一个关键字和所提供的数据组成。子句的例子有SELECT语句的FROM子句,我们在前一章看到过这个子句。ORDER BY子句:取一个或多个列的名字,据此对输出进行排序SELECT * FROM t_stu ORDER BY id;(默认升序)显示结果:2、按

2020-06-21 17:39:09 112

原创 【MySql】检索数据

检索数据一、SELECT语句1、检索列2、检索行3、限制结果4、使用完全限定的表名介绍如何使用SELECT语句从表中检索一个或多个数据列。一、SELECT语句SQL语句是由简单的英语单词构成的。这些单词称为关键字,每个SQL语句都是由一个或多个关键字构成的。最经常使用的SQL语句就是SELECT语句,用途是从一个或多个表中检索信息。为了使用SELECT检索表数据,必须至少给出两条信息——想选择什么,以及从什么地方选择1、检索列检索单个列如下:SELCT name FROM t_stu;分析:

2020-06-21 17:16:14 241

原创 【MySql】了解SQL

了解SQL一、数据库基础二、什么是SQL三、什么是MySQL一、数据库基础数据库(database):保存有组织的数据的容器(通常是一个文件或一组文件)数据库软件应称为数据库管理系统(DBMS),而数据库是通过DBMS创建和操作的容器。表(table) :某种特定类型数据的结构化清单,每个表名字唯一,用来标识自己模式(schema): 关于数据库和表的布局及特性的信息列(column) :表中的一个字段。所有表都是由一个或多个列组成的,每个列都有相应的数据类型,定义该列可以存储的数据种类。数据

2020-06-21 16:09:24 102

原创 数据结构之排序

排序一、基本概念二、插入类排序1、直接插入排序2、折半插入排序3、希尔排序(缩小增量排序)三、交换类排序1、起泡排序2、快速排序四、选择类排序1、简单选择排序2、树型选择排序3、堆排序五、归并排序六、基于比较的排序对比七、在线性时间内排序1、计数排序2、基数排序一、基本概念**排序(sorting)**的功能是将一个数据元素的任意序列,重新排列成一个按关键字有序的序列。其确切的定义为:假设有n个数据元素的序列{R1 , R2 , … , Rn},其相应关键字的序列是{K1 , K2 , … , Kn}

2020-06-18 23:26:10 737

原创 【Java核心技术卷一】对象与类:包

包1、类的导入2、静态导入3、将类放入包中4、包的作用域1、类的导入一个类可以使用所属包中的所有类, 以及其他包中的公有类( public class)。两种方式访问另一个包中的公有类:1)在每个类名之前添加完整的包名:java.time.LocalDate today = java.time.LocalDate.now();2)import 语句:一种引用包含在包中的类的简明描述。一旦使用了 import 语句,在使用类时,就不必写出包的全名。import语句应该位于源文件顶部(位于packag

2020-06-17 23:43:13 94

原创 【Java核心技术卷一】对象与类:静态域与静态方法/方法参数/对象构造

静态域与静态方法/方法参数/对象构造一、静态域与静态方法1、静态域2、静态常量3、静态方法4、工厂方法5、main方法二、方法参数三、对象构造1、重载2、默认域初始化3、无参数构造器4、显示域初始化5、参数名6、调用另一个构造器7、初始化块8、对象析构与finalize方法一、静态域与静态方法1、静态域如果将域定义为 static, 每个类中只有一个这样的域。而每一个对象对于所有的实例域却都有自己的一份拷贝。class Employee{ private static int nextId =

2020-06-17 23:27:44 176

原创 【Java核心技术卷一】对象与类:使用预定义类与用户自定义类

使用预定义类与用户自定义类一、预定义类1、对象与对象变量2、LocalData类3、更改器方法与访问器方法二、用户自定义类1、Employee类一、预定义类1、对象与对象变量使用对象两个步骤:首先构造对象,指定初始状态;然后对对象应用方法。使用构造器构造新实例。构造器是一种特殊方法,用来构造并初始化对象。构造器的名字应该与类名相同。以Data类为例,构造Data对象,new Data(),构造了一个新对象,并被初始化为当前的日期和时间。也可以将该对象应用toString()方法,返回字符串:St

2020-06-17 21:26:53 224

原创 Leetcode997:找到小镇的法官

997:找到小镇的法官题目思路一思路二题目在一个小镇里,按从 1 到 N 标记了 N 个人。传言称,这些人中有一个是小镇上的秘密法官。如果小镇的法官真的存在,那么:小镇的法官不相信任何人。每个人(除了小镇法官外)都信任小镇的法官。只有一个人同时满足属性 1 和属性 2 。给定数组 trust,该数组由信任对 trust[i] = [a, b] 组成,表示标记为 a 的人信任标记为 b 的人。如果小镇存在秘密法官并且可以确定他的身份,请返回该法官的标记。否则,返回 -1。示例 1:输

2020-06-17 16:48:08 112

原创 【Java核心技术卷一】对象与类:面向对象程序设计概述

面向对象程序设计概述1、类2、对象3、识别类4、类之间的关系面向对象的程序是由对象组成的, 每个对象包含对用户公开的特定功能部分和隐藏的实现部分。在 OOP 中, 不必关心对象的具体实现,只要能够满足用户的需求即可。![在这里插入图片描述](https://img-blog.csdnimg.cn/20200616220123237.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ib

2020-06-16 22:24:40 2194

原创 【Java核心技术卷一】控制流程

控制流程1、块作用域2、条件语句3、循环4、确定循环5、多重选择:switch语句6、中断控制流程语句1、块作用域块(即复合语句)是指由一对大括号括起来的若干条简单的 Java 语句。块确定了变量的作用域。一个块可以嵌套在另一个块中。不能在嵌套的两个块中声明同名的变量。2、条件语句条件语句格式:if (condition) statementJava 常常希望在某个条件为真时执行多条语句。在这种情况下, 应该使用块语句 (block statement), 形 式 为{statem

2020-06-16 21:55:44 109

原创 【Java核心技术卷一】输入输出

输入输出一、读取输入2、格式化输出3、文件的输入输出一、读取输入1、先构建一个Scanner对象,并与“标准输入流”System.in关联。Scanner in = new Scanner(System.in);2、可以使用Scanner类的各种方法实现输入操作(需要导入包:import java.util.*)nextLine方法输入一行(输入行中可能包含空格)System.out.println("what is your name?");String name = in.nextL

2020-06-16 21:30:34 131

原创 【Java核心技术卷一】Java应用程序

Java应用程序详解1、应用程序详解2、知识点1、应用程序详解public class FirstSample{ public static void main(String[] args) { System.out.println("Hello World!"); }}1、Java区分大小写2、关键字 public 称为访问修饰符(access modifier), 这些修饰符用于控制程序的其他部分对这段代码的访问级別。3、关键字 class 表明 Java 程序中的全部内容都包

2020-06-16 20:53:55 181

原创 Leetcode110.平衡二叉树

110:平衡二叉树题目思路一——暴力思路二题目给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。示例:给定二叉树 [3,9,20,null,null,15,7],3/ \9 20    / \    15 7返回true。思路一——暴力通过调用函数分别求解左右子树的最大深度,然后求解其高度绝对差值,如果不满足条件,返回fal

2020-06-16 17:09:52 97

原创 Leetcode104.二叉树的最大深度

104.二叉树的最大深度思路一——递归与分治思路二——广度优先搜索思路一——递归与分治递归终止条件:当前是否为空,是返回0;当前结点左右子树是否为空,是返回1;分解:递归求左/右子树最大深度合并:如果左右子树存在任一子树深度为0,或者都为0,返回两个值之和并+1;否则,返回其中最大值+1;/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode lef

2020-06-16 16:09:42 81

原创 Leetcode111.二叉树的最小深度

111:二叉树的最小深度题目思路一——递归思路二——深度优先搜索思路三——广度优先搜索题目给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7],3/ \9 20    / \    15 7返回它的最小深度 2.思路一——递归本题有一个关键点是题目是指根节点到叶子结点的最小

2020-06-16 15:37:35 179

原创 数据结构之栈和队列

栈一、栈的定义及抽象数据类型二、栈的顺序存储实现一、栈的定义及抽象数据类型栈(stack)又称堆栈,它是运算受限的线性表,其限制是仅允许在表的一端进行插入和删除操作,不允许在其他任何位置进行插入、查找、删除等操作。表中进行插入、删除操作的一端称为栈顶(top),栈顶保存的元素称为栈顶元素。相对的,表的另一端称为栈底(bottom)。基本名词概念:空栈:栈中没有数据元素进栈(入栈):向一个栈中插入元素出栈(退栈):从一个栈中删除元素LIFO(Last in First out后进先出表):

2020-06-15 21:47:05 185

原创 数据结构之递归法和分治法

递归法和分治法一、递归与堆栈二、基于归纳的递归三、递推关系求解四、分治法1、基本思想五、例题一、递归例题简单例题中等例题困难例题二、分治例题简单例题中等例题困难例题一、递归与堆栈1、递归(recursion)是指在定义自身的同时又出现了对自身的引用。如果一个算法直接或间接地调用自己,则称这个算法是一个递归算法。2、递归由两部分组成:递归调用与递归终止条件3、递归解决的应用问题:(1) 问题本身的定义就是递归,比如斐波那契数列、xn;(2)问题本身虽然不是递归定义,但是它所用到的数据结构是递归,比

2020-06-15 20:38:23 514

原创 剑指Offer面试题39. 数组中出现次数超过一半的数字

面试题39. 数组中出现次数超过一半的数字题目思路一思路二思路三题目数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入: [1, 2, 3, 2, 2, 2, 5, 4, 2]输出: 2限制:1 <= 数组长度 <= 50000思路一利用HashMap存储数组值及存在的次数。由于一个数组中有且仅有一个数字超过数组长度的一半,利用该特性不必遍历所有元素:1、先判断该元素是否在哈希表中,存

2020-06-15 20:33:32 88

原创 Leetcode894:所有可能的满二叉树

894: 所有可能的满二叉树题目思路一——递归题目满二叉树是一类二叉树,其中每个结点恰好有 0 或 2 个子结点。返回包含 N 个结点的所有可能满二叉树的列表。 答案的每个元素都是一个可能树的根结点。答案中每个树的每个结点都必须有 node.val=0。你可以按任何顺序返回树的最终列表。示例:输入:7输出:[[0,0,0,null,null,0,0,null,null,0,0],[0,0,0,null,null,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,nul

2020-06-14 21:55:43 124

原创 剑指Offer面试题16:数值的整数次方

面试题16:数值的整数次方题目思路一——二分法题目实现函数double Power(double base, int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。示例 1:输入: 2.00000, 10输出: 1024.00000示例 2:输入: 2.10000, 3输出: 9.26100示例 3:输入: 2.00000, -2输出: 0.25000解释: 2-2 = 1/22 = 1/4 = 0.25说明:-100

2020-06-14 20:18:41 125

原创 Leetcode面试题16.11:跳水板

面试题16.11:跳水板题目思路一——暴力题目你正在使用一堆木板建造跳水板。有两种类型的木板,其中长度较短的木板长度为shorter,长度较长的木板长度为longer。你必须正好使用k块木板。编写一个方法,生成跳水板所有可能的长度。返回的长度需要从小到大排列。示例:输入:shorter = 1longer = 2k = 3输出: {3,4,5,6}提示:0 < shorter <= longer0 <= k <= 100000思路一——暴力由于需要

2020-06-14 16:56:14 180

原创 Leetcode938.二叉搜索树的范围和

938:二叉搜索树的范围和题目思路一 ——递归思路二——栈题目给定二叉搜索树的根结点 root,返回 L 和 R(含)之间的所有结点的值的和。二叉搜索树保证具有唯一的值。示例 1:输入:root = [10,5,15,3,7,null,18], L = 7, R = 15输出:32示例 2:输入:root = [10,5,15,3,7,13,18,1,null,6], L = 6, R = 10输出:23提示:树中的结点数量最多为 10000 个。最终的答案保证小于 2^3

2020-06-14 15:42:39 160

原创 面试题08.06:汉诺塔问题

面试题08.06:汉诺塔问题题目思路一题目在经典汉诺塔问题中,有 3 根柱子及 N 个不同大小的穿孔圆盘,盘子可以滑入任意一根柱子。一开始,所有盘子自上而下按升序依次套在第一根柱子上(即每一个盘子只能放在更大的盘子上面)。移动圆盘时受到以下限制:(1) 每次只能移动一个盘子;(2) 盘子只能从柱子顶端滑出移到下一根柱子;(3) 盘子只能叠在比它大的盘子上。请编写程序,用栈将所有盘子从第一根柱子移到最后一根柱子。你需要原地修改栈。示例1:输入:A = [2, 1, 0], B = [],

2020-06-11 21:36:40 169

原创 Leetcode20:有效的括号

20:有效的括号题目思路一思路二题目给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: “()”输出: true示例 2:输入: “()[]{}”输出: true示例 3:输入: “(]”输出: false示例 4:输入: “([)]”输出: false示例 5:输入: “{

2020-06-11 20:26:00 65

空空如也

空空如也

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

TA关注的人

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