- 博客(24)
- 收藏
- 关注
原创 Container With Most Water
Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, ai). n vertical lines are drawn such that the two endpoints of line i is at (i, ai) and (i, 0). Find two...
2019-06-10 14:04:03
97
原创 ZigZag_Conversion
The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern in a fixed font for better legibility)P A H NA P L S I I ...
2019-06-10 13:36:42
181
原创 longestPalindrome
Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.Example 1:Input: "babad"Output: "bab"Note: "aba" is also a valid answer.Exampl...
2019-06-09 20:08:11
320
原创 Longest Substring Without Repeating Characters
Given a string, find the length of the longest substring without repeating characters.Example 1:Input: "abcabcbb"Output: 3Explanation: The answer is "abc", with the length of 3.Example 2:In...
2019-06-08 21:31:18
98
原创 Java线程(4)---死锁
死锁死锁是多个线程同时被阻塞,他们中的一个或者全部线程在等待某些资源的释放,由于这些线程可能会无限期的阻塞,因此程序不可能正常地运行,只能同构终止或重启来让程序重新执行。死锁产生的原因(1)系统的资源不足,资源分配不当。(2)线程的执行顺序不当。死锁产生的条件(1)互斥:当某一个资源被一个线程占用时,该资源无法被其他的线程使用。(2)非抢占:资源的请求者不能够强制地从资源占...
2019-04-27 15:25:52
102
原创 java线程(3)---线程同步
线程同步之前我们说过,java中允许多线程并发执行,那么当多个线程改变一个共享的内存量时,可能会存在冲突,此时就要进行线程同步的处理了。synchronzied锁synchronzied可以修饰方法和代码块,synchronized不能继承。同步方法由于java对象的内置一个互斥锁,当使用该关键字修饰方法时,这个方法称为同步方法。在调用该方法时需要先获得锁,否则会处于阻塞状态。...
2019-04-27 13:38:14
102
原创 java线程(2)---线程池
线程池在上一篇文章中,我们说到可以使用多线程去实现并发运行的操作,在我们每次需要一个线程时,便去创建一个线程,使用完毕后销毁这个线程。但是如果一个线程只执行一个很短很短的任务时,这样频繁的创建和销毁就显得没那么经济,会大量地消耗系统的资源。这时我们就想:如果某个线程执行完后不被销毁,而是等待执行其他工作呢?这就是线程池的作用了。线程池可以这样理解:在内存中开辟一块内存空间,里面存放了众多未...
2019-04-16 21:34:32
121
原创 Java线程(1)---多线程
面试时热门问题之一.......线程同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换开销小。线程是cpu调度的最小单位。线程状态:线程状态和进程相同,也有5个状态:创建、就绪、运行、阻塞、终止,生命周期如下图:图源:http://www.runoob.com/java/java-multithreading.html多线程多线程指的是在...
2019-04-13 15:18:19
211
原创 操作系统之 进程
进程进程是指运行中的程序,是系统进行资源分配和调用的单位,当这个程序进入系统内存中时即为线程。每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销(及上下文切换),一个进程包含1--n个线程。进程是资源分配的最小单位。进程状态:进程在执行的过程中会改变状态,进程状态有:新的(new):进程正在创建运行(running):指令正在执行等待(waiting):...
2019-04-13 00:23:18
149
原创 常见的排序算法总结(JAVA实现)
本篇共介绍一下几种排序:插入排序:直接插入排序、希尔排序。选择排序:直接选择排序、堆排序。交换排序:冒泡排序、快速排序。归并排序。基数排序。直接插入排序:思路:对于一组数据,先将第一个和第二个数排序,再将第三个数插入之前已经有序序列中形成新的有序序列,以此类推。也就是对于第n个数的排序,是将这第n个数插入到前n-1个数的有序序列中,从而得到一个n个数的有序序列。代码实现:...
2019-04-11 23:36:52
112
原创 深入理解HashMap
HashMap简介:HashMap是一个散列表,是我们常用的集合类之一。HashMap是基于哈希表的Map接口实现的,以键值对的形式存储数据。我们可以根据自己的需求在HashMap中存储key值以及其对应的value值,当然也可以根据key值从HashMap中取出相应的value值。接下来我们将深入地解析一下HashMap:HashMap的数据结构存储结构如下图:基本的HashMa...
2019-03-31 22:44:20
147
原创 java关键字之 final
final在我们实际编程中,出于效率、安全等原因,有时我们想要一个值无法被更改,这时就需要用到final关键字了。final表示“这部分是不允许修改的!”。final可修饰数据、方法和类。final数据final修饰的数据在使用时是无法被更改的,也就是我们常说的常量。常量对于程序而言是有很大作用的,它可以减少程序运行的消耗。常量可分为编译期常量和运行期常量。编译期常量在类加载时便完...
2019-03-29 17:38:02
128
原创 java关键字之static
static我们知道在java中并没有全局变量这个概念,但是如果想要使用类似于全局变量时,我们可以使用static来实现一个模拟的全局变量的效果。static表示“全局”或者“静态”的意思,可以用来修饰成员变量和成员方法。首先来了解一下java的内存分布:java的内存分为堆内存和栈内存,栈内存主要用来存放一些基本数据类型的变量、数组和对象引用;堆内存主要用于存放一些对象。在JVM加载一...
2019-03-29 15:29:35
271
原创 JAVA中抽象类与接口介绍及其异同
抽象类简单地说,就是被abstract 修饰的类就是抽象类。关于abstract修饰符:1)被abstract修饰的类为抽象类,该类不能有对象,即不能通过new来进行实例化。2)被abstract修饰的方法称为抽象方法,该方法不能有方法体,不能实现任何具体的功能,即一个空的方法,连{}都不能有。3)有抽象方法的类一定是抽象类,抽象类内的方法不一定都是抽象方法。那么,可能就会有疑...
2019-03-27 15:55:42
121
原创 JAVA设计模式之 代理模式
代理模式为另外一个对象提供一个替身或者占位符以控制对这个对象的访问。当我们不想直接调用这个对象时,使用代理模式来创建代表对象,让这个代表对象控制对某个对象的访问,被代理的对象可以使远程的对象创建开销大的对象或者需要安全控制的对象。比如当我们需要购买一张火车票时,我们可以前往就近的代售点购买而不需要到火车站购买,代售点就是一个代理,这样可以避免不必要的开销。示意图如下:一、静态代理...
2019-03-26 16:39:07
97
原创 JAVA设计模式之 工厂模式
工厂模式在我们平常编程过程中,声明一个对象最常用的方法就是new一个对象实例,但是在一些情况下只用New来构造一个实例对象是不太理想的,这样会将创建对象的代码和逻辑功能的代码混在一起,不太美观。我们希望将对象的创建封装到一个接口中,当我们需要实例化一个对象时,只需要调用这个接口即可,更加简洁方便,而且使得代码更加有逻辑,更具有可读性。这种封装的方法也就是这里要介绍的工工厂模式。工厂模式一般...
2019-03-24 15:41:19
120
原创 JAVA设计模式之 单例模式
单例模式单例模式是JAVA设计模式中较为简单的一种,属于创建型模式,这种模式提供了一种创建对象的方式。单例模式涉及到一个单一的类,这个类负责创建自己的对象同时也确保只有单一的对象被创建,并且提供了唯一的一种访问该对象的方法,可以直接调用来访问,不需要再实例化这个对象。特点:单例模式中的单例类只能有一个实例,并且必须是自己创建的唯一的实例,还要提供方法来访问这个实例。例子:...
2019-03-07 00:21:23
77
原创 Java集合框架介绍
一、集合框架图:从上图我们可以看到,JAVA的集合架构主要分为两条线:Collections和Map。1.Collections是一个接口,是一个抽象的集合,它包含了集合中的一些属性和相关操作,其中包含了List、Set Queue三个接口:List接口:是一个有序的Collections,与数组类似,可通过索引来访问List中的元素,第一个索引值为0且允许有相同的元素。List用于存...
2019-03-05 22:40:52
105
原创 【LeetCode】53 最大子序和
给定一个整数数组nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释:连续子数组[4,-1,2,1] 的和最大,为6。超级经典的一题动态规划的题目,我们假设dp[i]是以nums[i]结尾的连续序列中最大的和,那么对于整个数组就只有两种情况:1、如果最大的连...
2019-02-28 19:11:37
82
原创 【LeetCode】-9 回文数
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文...
2019-02-27 15:57:50
102
原创 【LeetCode】-7 整数反转
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为[−231, 231− 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。...
2019-02-27 15:23:22
110
原创 基于UDP通信的简单实现
一、UDP简介UDP通信也叫作数据包通信,与我们熟知的TCP/IP相比,UDP通信是更加不可靠的。因为UDP通信在进行数据发送时,发送的一方只需要知道目标方在某个子网下的IP地址,便可以进行发送,发送后便完成了一次的发送操作,并不会关心是否接受方能否接受到这个数据包。二、代码实现实现通信需要编写UDP的发送端和接收端,也就是Client和Server。数据包的发送与接受需要通过一个Dat...
2019-01-26 13:44:04
1014
原创 JAVA中 类的继承
5、类的继承5.1定义前面说过,类是一系列拥有相同属性和方法的对象的抽象描述。那么如果两个类之间也存在着一些相同的属性和方法,它们应该怎样处理呢?例如:一个学生类,它的属性有姓名、学号、学校等等,方法有学习;而一个大学生类它也应该拥有了学生类中的属性和方法,那么这个大学生类能否在不定义这些属性的情况下也调用它们呢?答案是可以的。这就是继承。继承:一个类(子类)继承另一个类(父类)...
2018-11-08 00:09:31
512
原创 JAVA 中的类与对象
1、面向过程与面向对象面向过程:是一种以过程为核心的编程思想,为了解决一个问题,将这个问题自上而下地分为许多个步骤,根据需要实现的场景,按照步骤进行拆分,之后按照步骤一步一步地完成以此达到完成整个任务的目的。面向对象:是一种以事情为中心的编程思想,为了解决一个问题,将问题中设计到的一些物体抽象成对象,每个对象都有自己的属性和方法,之后再调用这些对象来解决问题。以汽车运行为例面向过程在考虑的是...
2018-11-07 17:40:48
205
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人