自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 动态规划(常见背包问题)

01背包问题问题简述:在 N 件物品中选中若干件放入背包中,在不超过背包体积 V 的情况下,使得背包的价值最大条件:每个物品只能选一次每个物品的状态只有选或者不选两种状态举个例子:有 N 件商品和体积为 V 的背包,物品的体积和价值 vi 和 wi,(i表示第几件物品)求解将哪些物品放进去使得在不超过背包容量时的价值最大思路:定义状态表达式dp[i][j]表示在只有前i个物品的状态下,体积为j的的情况下的背包的最大价值,则当前物品就存在选或者不选两种状态,不选:dp[i][j] = dp[i -

2020-10-24 19:24:25 369

原创 代理模式(SpringAOP底层)

代理模式代理模式就是通过代理方直接操作目标对象,不是自己直接调用。就像生活中的中介,代购等等这样的例子就用房东通过中介出租房子来说代理特点代理特点:中介和代理需要做的事情是一样的(出租房子)中介的房东代理,房东则是目标对象租客和中介(租客直接访问中介)中介是代理,需要收取费用租客想要直接访问的对象是房东(目标对象),但是真正可以访问的是中介(代理对象),租客对房东(目标对象)的访问是通过中介(代理对象)来实现的为什么使用代理?功能增强:在原有的功能上,增加了额外的功能,目标对象的操

2020-09-22 10:29:41 195

原创 Synchronized同步锁实现机制

Synchronized同步锁实现机制在开始学习多线程的时候,Synchronized关键字可以解决线程的安全问题,也就是在同一时间只有一个线程可以执行代码块其实现依赖于JVM虚拟机,虚拟机也对其进行了优化,不同的情况下,给对象头加不同的锁。对象头:java对象在内存中存储的时候为了增加对象的一些功能,这些标记形成了对象头,由两部分组成class pointer和type。在大多数情况下,虽然我们加了Synchronized同步锁,但是或许在一个时间段,只有一个线程去执行这段代码,在此,jvm虚拟机

2020-09-15 00:56:27 435

原创 优先级队列(PriorityQueue)

队列就是一种先进先出的数据结构,优先级队列就是在队列的基础上增加了对其中的数据增加了优先级这种情况,在某些特定的情况下,我们需要对优先级高的数据进行出队列。优先级队列(PriorityQueue)优先级队列在集合框架中的位置,从图中,可以清楚的知道,PriorityQueue是一个类,并且继承Queue这个接口对于这种数据结构,我们需要注意的是插入的数据必须要可以进行大小的比较,不能插入无法比较大小的对象,否则会抛出ClassCastException异常不能插入null对象,否则会抛出Nul

2020-07-13 10:30:18 644

原创 UDP协议和TCP协议

UDP协议和TCP协议都是传输层的协议,TCP协议提供可靠的通信传输,而UDP则是常常被用于让广播和细节控制的交给应用的通信传输UDP协议:不保证安全,但是性能比较好UDP的传输过程类似于寄信,仅仅在乎的是信件有没有发送,不在乎是否接收特点:无连接:仅仅知道接收一方的IP地址和和端口号就可以进行发送不可靠:没有确认的机制,没有重传的机制面向数据报:不能够灵活的控制读写数据的次数和数量,应用层交给UDP多长的报文, UDP原样发送, 既不会拆分, 也不会合并,倘若我们需要传输的数据超过64K,

2020-07-03 18:26:45 13532

原创 Http协议和Https协议

Http协议超文本传输协议,是一个基于请求与响应的,无状态的应用层协议,常基于IP/TCP传输数据,互联网应用上最为防范广泛的一种网络协议,所有的网络文件都必须遵守这个标椎。Http报文格式Http方法get和put方法的区别1、缓存:get方法是获取一个资源,可以反复的读取,这时就可以对请求到的数据缓存,而post是提交一个form表单,点击提交按钮会发出一个post请求让服务器做某一件事,返回这件事成功的一个页面,但是这个页面是不能缓存的。2、数据长度:GET和POST都可以使用URL传

2020-06-30 23:18:15 396

原创 虚拟机类加载机制(Java)

类加载机制:虚拟机把class文件加载到内存,并且对数据进行校验、转换解析和初始化,经过这些步骤最终形成可以被虚拟机直接使用的Java类型。类加载的时机类从加载到虚拟机内存中到最终卸载出内存,它的整个生命周期包括:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用 (Using)和卸载(Unloading)7个阶段。加载、验证、准备、初始化和卸载这5个阶段的顺序是确定的,类的加载过程必须

2020-06-27 17:13:48 151

原创 Java内存区域

Java虚拟机在运行的时候会将其所管理的内存划分为几个区域,由下图可以清楚地看到有的区域是线程共有的,有的区域是线程私有的线程私有的内存区域程序计数器这部分是一块小的内存空间,它是用来记录当前线程所执行的字节码指令的地址。我们知道线程是占用CPU执行时间的基本单位,线程间的切换是采用时间片轮转调度的方式,当时间片再次切换回来的时候,就可以从当时切换出去的位置继续执行,这个位置的地址就是程序计数器来记录的。但是我们需要注意的是,如果线程执行的是一个Java代码,程序计数器记录的就是正在执行的虚拟机字节

2020-06-26 21:32:17 125

原创 理解堆的操作并实现优先级队列

堆的操作,最主要的就是向调整和向下调整,用这个两个操作来保证堆的性质,最主要的应用有两个。一个是排序算法——堆排序,另一个就是数据结构——优先级队列什么是堆?堆其实就是一个完全二叉树,但是它存储在数组里面,利用数组的下标来进行操作结点,数组和堆就是相对应的性质最大堆:每个结点都大于或者等于其两个子结点最小堆:每个结点都小于或者等于其两个子结点向上调整和向下调整这两种操作都是为了维护最大堆或者最小堆的的结构这里倘若是最大堆向上调整:某个结点的值大于它的父结点,这时应该将父结点与这个结点进行

2020-06-25 11:51:58 452

原创 单例模式理解

单例模式:简单来说就是一个类只能构建一个对象的一种设计模式1、饿汉模式class Singleton { private static Singleton instance = new Singleton(); private Singleton() {}//私有的构造函数 public static Singleton getInstance() { return instance; }}2、懒汉模式class Singleton { private static Single

2020-06-24 23:04:43 144

原创 理解JVM垃圾回收机制(GC)

Garbage Collection(GC),Java进程在启动之后就会自动创建垃圾回收线程,来对无用的内存空间进行回收。这个时候就要考虑是三件事:哪个部分的内存需要回收,什么时候进行回收,怎样回收这块内存内存回收时机1、显式的调用System.gc(),这个方式仅仅是告诉垃圾收集器打算进行垃圾收集(FGC),而垃圾收集器进不进行收集是不确定的,但是大多数情况下会进行FGC。但是一般不使用这个方法,让JVM自己管理它的内存2、JVM垃圾回收机制自己决定1)进行对象的创建,需要分配内存空间,内存空间

2020-06-24 14:45:45 941

原创 顺序表和链表的区别

顺序表:顺序表是采用顺序的存储结构在计算机内存中存储方式,是将数据元素放在一段物理地址连续的内存空间中,逻辑和物理相统一。优点:1)空间的利用率较高,存储空间连续2)支持随机访问,通过下标来进行存储,时间复杂度为O(1)缺点:1)插入和删除的效率较低,需要遍历整个数组。时间复杂度为O(n)2) 增容的代价比较大。增容需要申请新的空间,拷贝数组,释放旧空间,这些操作都有不小的消耗,增容一般是呈2倍的增长,就会存在空间的浪费。插入和删除的时间复杂度为O(n),查找的时间复杂度为O(1)链表:单链

2020-06-20 17:01:37 976

原创 Java异常处理机制

异常机制的本质就是当程序出现错误时,程序安全退出的机制 .Java中所有的异常对象都是派生于Throwable类的在一个实例,我们先来看看具体的结构层次,对其有一个大概的认知.1、CheckedException是受查异常,是编译器需要处理的,会给我们报错2、UnCheckedException是非受查异常,也就是运行时异常,在代码运行时才会报出异常3、Error是程序无法处理的错误,一般是代码运行时的环境出现问题,我们不需要去管这个Java是采用面向对象的方式类处理异常,抛出异常:当虚拟机在

2020-06-19 16:56:10 144

原创 Java泛型的了解

一般情况下,类或者方法,只能使用具体的类型,倘若要编写适用于各种类型的代码,如果还使用一个类型编写一个类或者方法,这样代码会更冗余。 在Java中,提出了多态的概念,可以说是大大的提高了代码的灵活性 但是还是有一些局限,继承只能单继承,接口倒是可以解决单继承的问题,但是一旦指定了某一个接口,它就要求你的代码必须使用特定的接口,这样看来也觉得有些被限制。我觉得 型就是在这个基础之上,做的改变,可以使代码能够应用于“某种不确定的类型”泛型泛型,这个术语的意思是:适用于各种各样的类型。因为它实现了参数化类

2020-05-26 11:10:26 211 1

原创 了解Java中String类中的intern()方法

String类中的intern()方法是手动把String对象加入到字符串常量池中先来看一个简单的代码:示例1: @Test public void test1(){//测试通过 String str1 = new String("hello").intern() ; String str2 = "hello" ; Assert.assertTrue(str1 == str2); }第一句:首先在堆中创建对象"hello",也会在常

2020-05-19 12:20:52 211

原创 对HashMap的认识了解

HashMap是Map的一个实现类,Map没有继承自Collection。关于Map1、 Map是一个接口,不能进行实例化,如果要进行实例化,只能通过它的两个实现类TreeMap和HashMap2、 Map中存放键值对的Key是唯一的,value是可以重复的3、在Map中插入键值对时,Key不能为null,否则会报出NullPointerException异常,但是value可以为nul...

2020-05-03 09:41:33 271

原创 关于Java中对象的比较

Java对象的比较有这三种,第一种equals 方法是对象值的比较,这是Object类提供的方法,第二种,第三种分别是实现Comparable,Comparator接口Object.equalsComparableComparatorObject类equals方法JAVA当中所有的类都是继承于Object这个基类的,在Object中的基类中定义了一个equals的方法,这个方法的...

2020-05-02 09:07:52 233

原创 深入理解String类

String类代表的就是字符串,String类对象创建之后不可变。常用的构造方法 String str = "Hello";//方式1 String str2 = new String("Hello");//方式2 char[] array = {'a', 'b', 'c'};//方式3 String str3 = new String(array);字符串比较Stri...

2020-04-29 22:12:09 249

原创 IP地址和MAC地址介绍及区别

1、IP地址IP地址,IP协议提供的统一的地址格式,它为互联网上的每一个主机(路由器)的每一个接口分配一个逻辑地址。目前IP地址使用32位二进制的地址格式(分类的IP地址编码方式),由两部分组成:一部分是标识该地址所从属的网络号;另一部分是标明该网络号的某一个特定主机的主机号,网络号由因特网权利机构进行分配,一个网络号在整个因特网范围内必须是唯一的,主机地址则是由各个网络的管理员进行分配,一个...

2020-04-29 10:51:47 3509

原创 网络数据的传输流程

IP和MAC地址MAC地址也叫做物理地址,硬件地址,它是在网卡出厂的时候就决定了,不能修改,MAC地址通常是唯一的。长度为48位,一般由16进制的数字加上冒号(A4:02:B9:91:01:7C)IP地址,IP协议提供的统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,由四个数字组成,每个在0-255之间,前三个代表网络号,最后一个代表主机号,(例如:192.168.0.1...

2020-04-28 18:47:36 1320 1

原创 TCP/IP五层(四层)模型

OSI七层模型七层模型即,应用层,表示层,会话层,传输层,网络层,数据链路层,物理层OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范把网络从逻辑上分成了七层,每一层都有相关的协议和物理设备它的最大优点是将服务、接口和协议这三个概念明确地区分开来,通过七个层次化的结构模型使不同的系统不同的网络...

2020-04-28 16:35:13 401

原创 深入理解Java中的包装类

我们知道Java中所有的类都继承Object类,那也就是说,Object引用可以指向任意类型的对象,但是这时会出现一个问题,8种基本的数据类型不是对象。为了解决这个问题,java中引入了一个特殊类,就是这8中基本类型的包装类。对象的包装器类是不可变的,一旦进行了包装,就不允许更改包装在其中的值,与此同时,对象包装类还是final,因此不能有他们的子类装箱和拆箱int i = 1;//...

2020-04-27 14:52:15 216

原创 Java中StringBuffer和StringBuilder的区别

StringBuilder和StringBuffer这两者都是可变的字符序列参考文档尽管如此。做题的时候,还是搞不清使用场景是什么,害我们先来看源码:StringBuilder类StringBuffer类我们看上面的源码,都会发现它继承了一个抽象类AbstractStringBuilder1、线程安全的角度:StringBuffer:线程安全StringBuff...

2020-04-20 19:40:55 412

原创 Java中synchronized 关键字和volatile关键字

synchronized 语法使用1、静态方法2、实力方法3、代码块synchronized(对象){//TODO}1、介绍synchronized关键字是Java提供的一种原子性内置锁,线程的执行代码在进入synchronized代码块前会自动获取内部锁,这时候其他线程访问该同步代码块的时会被阻塞挂起。也就是说,各个线程竞争同一把锁,如果竞争成功,就继续往下执行,否则...

2020-04-09 16:54:37 402 2

原创 进程及进程间的切换(操作系统)

进程1、认识进程:对于操作系统来说,一个任务就是一个进程,本质上是正在执行的一个程序。我们可以通过查看“windows任务管理器”中的列表,我们可以完全认为在内存中的每一个exe文件理解为进程。但是并不是进程与程序是一个概念,进程是动态的(进程是担当分配系统资源(CPU时间,内存)的实体,是具有动态特性的),而程序是一个静态的资源。进程:通过程序运行,表现在操作系统执行的,被操作...

2020-03-27 11:49:47 2490 1

原创 MySQL事务的四个特征及其隔离级别

目录1、事务概念2、事务使用3、事务的四大特征(ACID)3.1 原子性(atomicity)3.2 一致性(Consistency)3.3 隔离性(Isolation)3.3.1 read uncommitted(读未提交的);3.3.2 read committed(读已提交的);3.3.3 repeatable read(可以重复化);3.3.4 serializable(串行化);3.4 ...

2020-03-04 16:08:53 1381

原创 正则表达式(Java)

正则表达式1、概念正则表达式是对字符串操作的一种的一种逻辑公式,就是用事先定义好的一些特定字符、及这些这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。正则表达式是一种文本模式,该模式描述在搜索文本时要匹配的一个或多个字符串,主要用于搜索、编辑或处理文本。2、基本语法在其他语言中,\\ 表示:我想要在正则表达式中插入一个普通的(字面上的)...

2020-01-27 17:19:59 238

原创 PreparedStatement预编译对象

PreparedStatement我们知道PreparedStatement对象是从Statement对象继承而来的,同样拥有executeQuery(),executeUpdate(),execute()方法,但是包含于PreparedStatement对象中的SQL语句可以使用IN参数(传入PreparedStatement的SQL语句的变量),因此可以动态的向SQL命令传入不同的参数值,从...

2020-01-07 20:11:39 515 1

原创 关系型数据库

首先我们来说说数据库管理系统(Database Management System)具备的特点:1、提供简单的方式存储及获取数据2、在数据访问时,提供权限控管的能力3、提供多人同时访问数据的能力4、提供数据同步的机制5、提供数据备份与恢复的能力6、保持数据的一致性和完整性数据库的模型:1、文件模式(flat-file):这种模式是将数据存放在文件内,这是早期的数据库方式,已...

2020-01-05 18:04:31 331

原创 Android studio布局文件

首先先看下布局成果界面的设置都是利用UI布局来进行实现图片背景的设计,加在mipmap中先来看看上面代码:<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:...

2020-01-03 20:05:42 1568

原创 JDBC Driver介绍

JDBC Driver的四种Type的运作方式:Type1:JDBC-ODBC Bridge plus ODBC DriverType2:A native-API partly Java technology-enabled driverType3:Pure Java Driver for Database MiddlewareType4:Direct- to- Database Pur...

2020-01-02 13:43:32 4624 1

原创 JDBC编程(Java)

JDBC主要的功能:1、与数据库创建连接2、传送SQL命令给数据库,操作数据库和数据表3、接收及处理数据库所执行的结果JDBC有相应的组件类来完成以上的功能1、利用Connection类来创建数据库连接2、利用Statement类来传送SQL命令给数据库、操作数据库及操作表3、利用ResultSet来接收及处理数据库所执行的结果但是在创建数据库连接之前,我们必须找到合适的D...

2020-01-01 17:34:58 120 2

原创 图的遍历——深度优先遍历(DFS)

深度优先搜索其实有点类似于树的先根遍历深度优先搜索的遍历过程如下:1、将图中的所有顶点作“未访问”标记2、任选图中未访问的结点vvv作为遍历结点3、访问vvv结点,然后深度访问vvv的第一个未被访问的邻接点w1w_1w1​4、从w1w_1w1​再出发重新深度访问w1w_1w1​的未被访问的邻接点w2w_2w2​ …,直到到达的下一个结点的所有的邻接点都被访问过为止5、然后依次退回,查...

2019-12-20 23:23:33 552

原创 堆排序

了解堆排序,我们首先来了解树形选择排序树形选择排序也称作锦标赛排序基本思想就是:将待排序的n个数,两两进行比较,取出较小的,也就是⌊n/2⌋\lfloor n/2\rfloor⌊n/2⌋)个数。然后采用同样的方法,选择每两个数较小的数,直到选出最小的数。这里采用属树形结构,选出来的最小的数就是根节点,在将其输出后,为了再次输出次小的数,将根节点所对应的叶子结点的关键字置为∞\infty∞...

2019-12-11 20:53:46 153

原创 关于Java内部类介绍

内部类实例内部类静态内部类匿名内部类本地内部类内部类(nested classes),面向对象程序设计中,可以在一个类的内部定义另一个类。嵌套类分为两种,即静态嵌套类和非静态嵌套类。实例内部类静态内部类匿名内部类本地内部类...

2019-12-05 16:24:58 110

原创 二叉树的非递归遍历(先序 后序 中序)

在上一篇中,我们已经说过先序、中序、后序的递归实现非递归的遍历要怎么实现????先序和中序则较为简单,采用栈的结构(先进后出),先序是在入栈时将其数据域读出来,中序则是在出栈是将其数据域读出注意的是在入栈和出栈的时候要判断栈的情况//先序遍历二叉树(非递归):采用栈的形式void PreOrder_1(Node *root) { if (root==NULL) { retur...

2019-12-02 15:37:07 128

原创 使用scanf函数注意的问题

scanf函数注意点:函数参数必须一一对应数据类型也要一一对应scanf是缓冲输入的,也就是说从键盘输入的数据都会先存放在内存中的一个缓冲区,只有按回车键之后scanf才会进入缓冲区读取数据,所取数据的个数取决于 scanf 中“输入参数”的个数(因而我们说参数的个数必须一一对应),从键盘输入的一切数据,不管是数字、字母,还是空格、回车、Tab 等字符,都会被当作数据存入缓冲区。存储的顺...

2019-11-25 17:14:57 342

原创 数据结构——图

图是一种比树更复杂的数据结构,我们知道在数形结构中,数据元素之间的关系是一对多的,是有着上下层的关系,而图中,数据元素之间的关系是多对多的,不存在上下层的关系,因此,我们可以将树看做是图的一种特例。接下来,我们来介绍图的相关知识图1.1定义:网状的数据结构,是由一个顶点的有穷的非空集V(G)和一个边的集合E(G)组成,通常记作G=(V,E),1.2种类无向图:所有的边不带方向,边...

2019-11-20 19:34:06 275

原创 抽象类与接口

抽象类没有实际工作的方法(方法的具体功能在子类里面进行实现)可以设计为一个抽象方法,含有抽象方法的类称为抽象类语法:abstract关键字,表示这是一个抽象类abstract class Shape{ abstract public void draw();//抽象方法没有具体的功能的实现}注意:1.抽象方法不能进行实例化,通俗一点也就是不能new2.抽象方法不能是pr...

2019-11-18 20:43:55 116

原创 继承和多态

1.继承:继承,怎么说呢,就是可以在基类的基础上增加一些属于继承类独有的属性或者方法1.1格式//注意java中所有的继承都是公有的public class Manager extends Employee{}关键字:extends表明正在构造的新类派生于一个已经存在的类,已经存在的类叫做超类,基类,父类;新派生出来的类叫做子类,派生类,孩子类1.2注意:继承了除基类构...

2019-11-14 20:10:25 309

空空如也

空空如也

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

TA关注的人

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