自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 leetcode动态规划(持续更新)

5. 最长回文子串 思路分析: 先看一个成功的例子:abba,A[1]和A[4]匹配,A[2]和A[3]匹配,更符合实际来看,当我们不看A[4]时,abb,最长回文串为bb,当我们更新到abba时候,最长回文串更新到abba,所以整个的循环不变量是相应的最长回文串 j i a b b a dp: 初始化: 0 0 0 0 0 0 0 0 0 0 0 0 ...

2020-02-20 18:55:34 138

原创 day05(约束,标识列,TCL,视图)

约束 -- 约束 /* 含义:一种限制,用于限制表中的数据,为了保证表中的数据的准确和可靠性 分类:六大约束 NOT NULL:非空,用于保证该字段的值不能为空 比如姓名、学号等 DEFAULT:默认,用于保证该字段有默认值 比如性别 PRIMARY KEY:主键,用于保证该字段的值具有唯一性,并且非空 比如学号、员工编号等 UNIQUE:唯一,用于保证该...

2020-03-30 20:31:33 189

原创 day04(联合查询,DML,DDL)

联合查询 union 联合 合并:将多条查询语句的结果合并成一个结果 语法: 查询语句1 union 查询语句2 union ... 应用场景: 要查询的结果来自于多个表,且多个表没有直接的连接关系,但查询的信息一致时 特点:★ 1、要求多条查询语句的查询列数是一致的! 2、要求多条查询语句的查询的每一列的类型和顺序最好一致 3、union关键字默认去重,如果使用union all 可以包...

2020-03-30 12:05:29 254

原创 day03(连接查询,子查询,分页查询)

sql99标准 -- sql99 #一、内连接 /* 语法: SELECT 查询列表 FROM 表名1 别名 【INNER】 JOIN 表名2 别名 ON 连接条件 WHERE 筛选条件 GROUP BY 分组列表 HAVING 分组后筛选 ORDER BY 排序列表; SQL92和SQL99的区别: SQL99,使用JOIN关键字代替了之前的逗号,并且将连接条件和筛选条件进行...

2020-03-25 21:28:20 168

原创 day02(排序函数,常见函数,分组查询,连接查询)

排序函数 语法: select 查询列表 from 表名 where 筛选条件 order by 排序列表 ; 特点: ①排序列表可以是 单个字段、多个字段、函数、表达式、别名、列的索引,以及以上的组合 ②升序,通过asc ​ 降序,通过desc #1.查询员工的姓名和部门号和年薪,按年薪降序 按姓名升序 select last_name,department_id,salary from...

2020-03-24 16:09:32 157

原创 day01(基础查询,条件查询,模糊查询)

数据库概述 什么是数据库 数据库是持久化数据的一种介质,可以理解成用来存储和管理数据的仓库! 持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用。持久化的大多数时候是将内存中的数据存储在数据库中,当然也可以存储在磁盘文件、XML数据文件中。 数据库的优点: 可将数据持久化到硬盘 可存储大量数据 方便检索 保证数据的一致性、完整性 安全,可共享 通过组合分析,可以产生新数...

2020-03-23 19:56:53 417

原创 day21

IO流 File类的使用 java.io.File类:文件和文件目录路径的抽象表示形式,与平台无关 File 能新建、删除、重命名文件和目录,但 File 不能访问文件内容本身。如果需要访问文件内容本身,则需要使用输入/输出流。 想要在Java程序中表示一个真实存在的文件或目录,那么必须有一个File对 象,但是Java程序中的一个File对象,可能没有一个真实存在的文件或目录。 File对象可以...

2020-03-17 10:40:00 97

原创 day20

泛型 概念:所谓泛型,就是允许在定义类、接口时通过一个标识表示类中某个属性的类型或者是某个方法的返回值及参数类型。这个类型参数将在使用时(例如,继承或实现这个接口,用这个类型声明变量、创建对象时)确定(即传入实际的类型参数,也称为类型实参)。 从JDK1.5以后,Java引入了“参数化类型(Parameterized type)”的概念,允许我们在创建集合时再指定集合元素的类型,正如:List &...

2020-03-13 10:36:51 130

原创 day19

Map接口 Map与Collection并列存在。用于保存具有映射关系的数据:key-value Map 中的 key 和 value 都可以是任何引用类型的数据 Map 中的 key 用Set来存放,不允许重复,即同一个 Map 对象所对应的类,须重写hashCode()和equals()方法 常用String类作为Map的“键“ key 和 value 之间存在单向一对一关系,即通过指定的...

2020-03-12 17:07:54 98

原创 day18

Java集合框架概述 集合、数组都是对多个数据进行存储操作的结构,简称Java容器。 说明:此时的存储,主要指的是内存层面的存储,不涉及到持久化的存储(.txt,.jpg,.avi,数据库中) 数组在内存存储方面的特点: 数组初始化以后,长度就确定了。 数组声明的类型,就决定了进行元素初始化时的类型 数组在存储数据方面的弊端: 数组初始化以后,长度就不可变了,不便于扩展 数组中提供的属性和方...

2020-03-11 15:22:06 129

原创 day17

枚举类的使用 枚举类的属性 枚举类对象的属性不应允许被改动,所以应该使用 private final 修饰 枚举类的使用 private final 修饰的属性应该在构造器中为其赋值 若枚举类显式的定义了带参数的构造器, 则在列出枚举值时也必须对应的传入参数 枚举类的使用: 枚举类的理解:类的对象只有有限个,确定的。我们称此类为枚举类 当需要定义一组常量时,强烈建议使用枚举类 如果枚举类中只...

2020-03-10 11:26:38 165

原创 day16

字符串相关的类 String 代表字符串,Java程序中的所有字符串字面值(如“abc”)都作为此类的实例出现 String是一个final类,代表不可变的字符序列 字符串是常量,用引号引起来表示。他们的值在创建之后不能更改。 String对象的字符内容是存储在一个字符数组value[]中,private final char value[]; String:字符串,使用一对""引起来表示。 S...

2020-03-06 12:02:31 153 1

原创 day15

线程的同步 问题的提出 卖票:现有三个窗口共同卖出100张票,模拟这个场景 package java2; public class Window implements Runnable{ private int ticket = 100; @Override public void run() { while (true){ if ...

2020-03-05 18:16:37 82

原创 day14

多线程 基本概念:程序、进程、线程 程序:是为完成特定任务、用某种语言编写的一组指令的集合。即指一段静态的代码,静态对象 进程(process):是程序的一次执行过程,或是正在运行的一个程序。是一个动态的过程:有它自身的产生、存在和消亡的过程。——生命周期。比如:运行中的QQ,运行中的MP3播放器 线程(thread):进程可进一步细化为线程,是一个程序内部的一条执行路径。 若一个进程同一时间并...

2020-03-05 16:36:04 91

原创 day13

异常 在使用计算机语言进行项目开发的过程中,即使程序员把代码写得尽善尽美,在系统的运行过程中仍然会遇到一些问题,因为很多问题不是靠代码能够避免的,比如:客户输入数据的格式,读取文件是否存在,网络是否始终保持 通畅等等 异常:在Java语言中,将程序执行中发生的不正常情况称为“异常”。 (开发过程中的语法错误和逻辑错误不是异常) Java程序在执行过程中所发生的异常事件可分为两类: Error:J...

2020-03-02 15:05:06 129

原创 day12

抽象类与抽象方法 类的设计应该保证父类和子类能够共享特征。有时将一个父类设计得非常抽象,以至于它没有具体的实例,这样的类叫做抽象类。 abstract关键字的使用 * 1.abstract:抽象的 * 2.abstract可以用来修饰的结构:类、方法 * * 3. abstract修饰类:抽象类 * > 此类不能实例化 * > 抽象类中一定有构造器,便于子...

2020-03-01 20:32:22 375

原创 day11

static关键字 有时候希望无论是否产生了对象或无论产生了多少对象的情况下,某些特定的数据在内存空间里只有一份。 简单使用: package cap14; public class StaticTest { public static void main(String[] args) { System.out.println(Circle.getTotal());//0 Circl...

2020-02-29 17:41:02 141

原创 day10

多态性 理解多态性:可以理解为一个事物的多种形态。 何为多态性:对象的多态性:父类的引用指向子类的对象(或子类的对象赋给父类的引用) 多态的使用:虚拟方法调用,有了对象的多态性以后,我们在编译期,只能调用父类中声明的方法,但在运行期,我们实际执行的是子类重写父类的方法。 总结:编译,看左边;运行,看右边。 多态性的使用前提: ① 类的继承关系 ② 方法的重写 对象的多态性,只适用于方法,不适用...

2020-02-26 12:30:54 98

原创 day09

继承 上述图中,存在的类,我们在构造时,可能有一些共同的属性或者方法,比如,age,name,在每一个类中,我们都需要去定义,这样代码重复性就很高了,这时,我们引入了继承了概念。 继承的好处 ① 减少了代码的冗余,提高了代码的复用性 ② 便于功能的扩展 ③ 为之后多态性的使用,提供了前提 继承的格式 class A extends B{} A:子类、派生类、subclass B:父类、超类、基类...

2020-02-26 11:40:39 147

原创 day08

封装 当我们创建一个类的对象以后,我们可以通过"对象.属性"的方式,对对象的属性进行赋值。这里,赋值操作要到 属性的数据类型和存储范围的制约。除此之外,没有其他制约条件。但是,在实际问题中,我们往往需要给属性赋值 加入额外的限制条件。这个条件就不能在属性声明时体现,我们只能通过方法进行限制条件的添加。 同时,我们需要避免用户再使用"对象.属性"的方式对属性进行赋值。则需要将属性声明为私有的(pri...

2020-02-24 20:31:55 81

原创 day07

再谈方法 方法的重载 在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。 与返回值类型无关,只看参数列表,且参数列表必须不同。(参数个数或参数类型)。调用时,根据方法参数列表不同来区别。 例如: System.out.println()方法就是典型的重载方法,其内部的声 明形式如下: public void println(byte x) public voi...

2020-02-24 16:56:10 155

原创 day06

Java类及类的成员 **面向过程(POP)**与 面向对象(OOP) 二者都是一种思想,面向对象是相对于面向过程而言的。面向过程,强调的是功能行为,以函数为最小单位,虑怎么做。面向对象,将功能封装进对象,强调具备了功能的对象,以类/对象为最小单位,考虑谁来做。 属性:对应类中的成员变量,Field = 属性 = 成员变量(到web学习的时候,属性和字段名会有一点区别,不过,只要你遵守良好的书写习...

2020-02-22 09:37:58 119

原创 day05

数组练习 获取arr数组中所有元素的和。 int arr[] = {3,4,5,6,723,23,1,3243,545}; int sum = 0; for(int i = 0;i < arr.length;i++) { sum += arr[i]; } System.out.println(sum);//4553 int sum1 = 0; int...

2020-02-21 20:46:26 85

原创 day04

数组 是多个相同类型数据按一定顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理。 数组的常见概念: 数组名 下标 元素 数组的长度 数组本身是引用数据类型,而数组中的元素可以是任何数据类型,包括基本数据类型和引用数据类型。 创建数组对象会在内存中开辟一整块连续的空间,而数组名中引用的是这块连续空间的首地址。 数组的长度一旦确定,就不能修改。 我们可以直接通过下标(或索...

2020-02-20 13:52:16 101

原创 day03

day03 循环结构 分类: for循环 while循环 do while循环 组成: 初始化部分 循环条件部分 循环体部分 迭代部分 for循环 流程:初始化部分–>循环条件部分–>循环体部分–>迭代部分 语法格式: for(初始化部分;循环条件部分;迭代部分){ 循环体部分; } //初始化部分-->循环条件部分-->循环体部分-->迭代部...

2020-02-19 11:23:32 186

原创 day02

运算符 运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。 算术运算符 赋值运算符 比较运算符(关系运算符) 逻辑运算符 位运算符 三元运算符 算数运算符 System.out.println(+168);//168 System.out.println(-168);//-168 System.out.println(3+2);//5 System.out.print...

2020-02-18 11:11:04 132

原创 day01

关于Java的一些术语 术语 缩写 解释 Java Development Kit JDK 编写Java程序的程序员使用的软件 Java Runtime Environment JRE 运行Java程序的用户使用的软件 Server JRE — 在服务器上运行的Java程序的软件 Standard Edition SE 用于桌面或简单服务器应用的Java平台 Ent...

2020-02-17 15:38:30 285 1

原创 Request

HTTP: * 概念:Hyper Text Transfer Protocol 超文本传输协议 * 传输协议:定义了,客户端和服务器端通信时,发送数据的格式 * 特点: 1. 基于TCP/IP的高级协议 2. 默认端口号:80 3. 基于请求/响应模型的:一次请求对应一次响应 4. 无状态的:每次请求之间相互独立,不能交互数据 * 历史版本: * 1.0:每一次请求响应...

2020-02-16 19:31:42 103

原创 10.CAS基本概念

CAS(Compare and Swap) 原理:指令级别去保证这是一个原子操作,利用了现代处理器都支持的CAS的指令循环这个指令(自旋) CAS包含三个运算符: 一个内存地址v 一个期望值A 一个新值B 如果地址v对应的值为A,则将值换成B,如果不是A,则不进行任何操作,直到操作成功。 很多人不理解上面的话,我来写一段代码演示一下CAS的操作 private AtomicInteger at...

2020-02-02 21:34:00 200

原创 9.semaphore

semaphore信号量 控制同时访问某个特定资源的线程数量,用在流量控制 这像是一种锁的机制,acquire()像是获取锁的机制,这里我们叫他许可证,如果获取不到则阻塞,但是一般锁只允许一个线程同时访问,而semaphore可以同时多个(只要有许可证的存在),当业务执行完毕,你需要增加许可证的个数,当然了,你也可以不增加,但是这样的业务需求似乎不存在,release()可新增一个许可证。 下面模...

2020-02-02 15:40:04 81

原创 8.CountDownLatch和CyclicBarrier

CountDownLatch CountDownLatch类似一个计数的工具,是等待其他线程完成工作以后,相当于加强版的join(),和join()又有所不同,join()是等待一个线程完成,而CountDownLatch只要你在进行countDown操作到0的时候,就会完成初始化,并不代表其他线程关闭了,而join()是等待其他线程执行完了才行,这一点有所不同 import java.util....

2020-02-02 14:13:41 83

原创 7. Fork-Join分而治之

Fork-Join分而治之 分而治之:大问题化为小问题,小问题合并为大问题的解。fork分解,join合取 举个例子,吃饭时,一共有40只虾,本来一个人去剥,现在8个人平均去剥虾,一人5只,本来是40个的大任务,化成了8*5的小任务,这就是比较另类一点的分而治之,其次,因为剥虾有快慢之分,可能你剥的很快,你的弟弟还没剥完,这时候你会去帮他剥,但是最后成果还是你弟的,最后每个人完成的时候都是5只虾,...

2020-02-02 13:31:15 224

原创 6.wait()和notify()

线程间协作 轮询:难以保证及时性,资源开销很大。 等待和通知 wait() notify()/notifyAll() 标准范式 等待方 获取对象的锁 循环里判断是否满足,不满足调用wait() 通知方 ​ 获取对象的锁 改变条件 通知所有等在对象的线程 代码演示: package tets; import java.util.Scanner; public class waitandn...

2020-02-02 12:11:44 91

原创 5.volatile和ThreadLocal

volatile关键字 读操作时,获取到的都是最新的值 代码演示 public class testThread { private static class VolatileVar implements Runnable { private volatile int a = 0; @Override public void run()...

2020-02-01 20:38:01 120

原创 4.守护线程和synchronized

守护线程 守护线程,当我们在新启动一个线程之前,如果将新建的线程对象setDaemon()设为true,那么该线程同时消亡。 看下面的例子,在DemoThread01里面,我做了一个类似死循环的打印。在main线程里面,设置为守护线程,启动,结果并不是不停的打印“你好漂亮啊”,当main线程结束,t1也就结束了,值得注意的一点,在finally中的语块也没有执行,以前我们强调,finally中的一...

2020-02-01 19:56:57 107

原创 1.基础概念

cpu核心数与线程数的关系 核心数:线程数 = 1:1 超核心技术 =>1:2 一个cpu只能处理一个线程 cpu时间片轮转机制 指定时间片该谁使用 上下文切换–>状态切换–>阻塞和非阻塞之间的切换–>少切换 进程和线程 进程:程序运行资源分配的最小单位,进程内部有多个线程,会共享这个进程的资源 线程:cpu调度的最小单位 个人理解:cpu分配时间给了进程A,设时间片为B,...

2020-02-01 16:25:17 73

原创 2.创建线程的方式

Thread类本身是一个实现了Runnable接口的类 大致上看下构造方法 方式一:继承Thread类重写Run()方法 方式二:实现Runable接口重写Run()方法 方式三:实现Callable接口重写call()方法 import java.lang.management.ManagementFactory; import java.lang.management.ThreadInfo...

2020-02-01 16:24:53 95

原创 3.线程之间的状态转换,interrupt中断标志位等

线程状态 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZUZihrEU-1580545388362)(C:\Users\xiao-liu\Desktop\图片\未命名文件 (2)].png) 解读 1.start() ≠ run() /** * 比较start()与run()的不同 */ public class testThread { public...

2020-02-01 16:24:22 442

空空如也

空空如也

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

TA关注的人

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