自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 设计模式

创建型模式: 简单工厂模式 工厂模式 抽象工厂模式 单例模式 建造者模式 原型模式结构型模式 代理模式 适配器模式 桥梁模式 外观模式 组合模式 享元模式行为型模式 策略模式 观察者模式 责任链模式 模板方法模式 状态模式...

2019-09-19 18:56:43 108

原创 java算法求一个字符串的倒序(单词不变)

public static void main(String[] args) { System.out.println(reverse("Hello the world")); System.out.println(reverse("a sdfsdf sdfsadf sdfsdfsadf sdf中")); } public static String reverse(Str...

2019-08-15 02:13:07 211

原创 单链表倒序输出第K个元素

一开始,两个指针都指向第一个元素,但是如果它们之间的距离小于K,那么只移动第一个指针。而当他们之间的距离等于K后,两个指针一起后移,这样在第一个指针指向链表最后一个元素的时候,第二个指针就指向的是倒数第K个元素。只需要一次遍历,不需要额外空间。代码:typedef int ElemType;typedef struct LNode{ ElemType data; s...

2019-08-15 02:07:55 316

转载 递减数列

非递减数列题目:给定一个长度为 n 的整数数组,你的任务是判断在最多改变 1 个元素的情况下,该数组能否变成一个非递减数列。我们是这样定义一个非递减数列的: 对于数组中所有的 i (1 <= i < n),满足 array[i] <= array[i + 1]。输入:[4,2,3]、[4,2,1]输出:”true”、”false”解释:1、对于[4,2,3],你可以通过...

2019-08-15 02:03:36 2780

转载 合并区间

合并区间(Merge Intervals)java题干给出一个区间的集合,请合并所有重叠的区间。示例 1:输入: [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例 2:输入: [[1,4],[4,5]]输出: [[1,5]]...

2019-08-15 02:02:03 99

转载 某银行有4个柜台,假设某天有若干位客户来办理业务,每个客户到达银行的时间和取款需要的 时间分别用两个数组arrvie_time(已经按到达时间排序)和process_time来描述。

某银行有4个柜台,假设某天有若干位客户来办理业务,每个客户到达银行的时间和取款需要的 时间分别用两个数组arrvie_time(已经按到达时间排序)和process_time来描述。假设每个客户在取款之前先拿号排队,然后在任意一个 柜台有空闲的时候,号码数最小的客户上去办理,假设所有的客户拿到号码之后都不会失去耐心走掉 , 请写程序计算所有客户的平均等待时间。那么这道题的解决思路是怎样的...

2019-08-15 01:54:36 1576

转载 十进制转为二十六进制

private static StringBuffer DecimalToTwentysix(int n) { StringBuffer result = new StringBuffer(); while(n > 0) { int remainder = n % 26; result.append((char)(remainder + 64));//大写A的AS...

2019-08-15 00:46:35 751 1

转载 要求给定一个数组,获取数组的一个分界点的下标,使得该分界点的两侧子数组的和相等。如果存在多个分界点,只返回第一个分界点的下标,如果没有则返回-1。 要求:时间复杂度不得超过O(n)。

分析:正常的计算思路应该是,用一个index标记当前计算的下标,从数组第二个元素(即index为1开始)开始计算,将这个元素左边的相加求和,然后右边相加求和,对比是否相等。然后index++依次遍历,知道index 遍历到数组倒数第二个元素,都没有找到则返回-1。 static int middleIndexWithArray(Integer[] array) { if (...

2019-08-15 00:37:37 2678

原创 CountDownLatch

https://blog.csdn.net/qiuhao9527/article/details/80776505https://blog.csdn.net/huang_wu_yao_xin/article/details/82704257

2019-08-12 00:37:27 99

原创 通过反射获取对象的值

public static void main(String[] args) { Day day= new Day(); day.setDay01a(111); day.setDay01b(1); day.setDay02a(2); day.setDay02b(3); day.setDay03a(4); ...

2019-08-11 11:21:36 1563

原创 Java从本地读取json文件

public static String getDatafromFile(String fileName) { String Path="src/" + fileName+ ".json"; BufferedReader reader = null; String laststr = ""; try...

2019-08-11 11:19:53 264

原创 快速排序

public static void quickSort(int[]a,int left,int right){ int i=left; int j=right; if(left>right){ return;} int temp=a[left]; while(i!=j){ while(a[j]>=temp&&i&...

2019-08-09 18:58:35 199

原创 List属性排序

public class UserName implements Comparable<UserName> { String name; int age; public UserName(String name, int age) { super(); this.name = name; this.age = age; ...

2019-08-09 18:56:19 236

原创 单例模式

public class Singleton { private static Singleton instance=new Singleton(); private Singleton(){} public static Singleton getInstance() { return instance; } public void showMessage(){ ...

2019-08-09 18:53:10 142

原创 十进制与十六进制互相转换

public class HEXTODE {//十进制转换为十六进制 public static String toHex(int num) { if(num==0){ return "0"; } String hex=new String("0123456789abcdef"); String...

2019-08-09 18:51:25 962

原创 数据库:Redis

一,概述Redis是速度非常快的非关系型(NoSQL)内存键值数据库,可以存储键和五种不同类型的值之间的映射。键的类型只能为字符串,值支持五种数据类型:字符串,列表,集合,散列表,有序集合。Redis支持很多特性,例如将内二,数据类型数据类型 可以存储的值 操作 串 字符串,整数或者浮点数 整个对字符串或者字符串的其中一部分执行操作 对整数浮点...

2019-08-08 20:49:04 152

原创 数据库:MySQL

一、索引B+ Tree 原理1. 数据结构B Tree 指的是 Balance Tree,也就是平衡树。平衡树是一颗查找树,并且所有叶子节点位于同一层。B+ Tree 是基于 B Tree 和叶子节点顺序访问指针进行实现,它具有 B Tree 的平衡性,并且通过顺序访问指针来提高区间查询的性能。在 B+ Tree 中,一个节点中的 key 从左到右非递减排列,如果某个指针的左右...

2019-08-08 20:05:00 121

原创 数据库:SQL语句

一,基础模式定义了数据如何存储、存储什么样的数据以及数据如何分解等信息,数据库和表都有模式。主键的值不允许修改,也不允许复用(不能将已经删除的主键值赋给新数据行的主键)。SQL(Structured Query Language),标准 SQL 由 ANSI 标准委员会管理,从而称为 ANSI SQL。各个 DBMS 都有自己的实现,如 PL/SQL、Transact-SQL 等。...

2019-08-07 16:40:22 235

原创 数据库:数据库系统原理

一,事务事务指的是满足 ACID 特性的一组操作,可以通过 Commit 提交一个事务,也可以使用 Rollback 进行回滚。ACID1. 原子性(Atomicity)事务被视为不可分割的最小单元,事务的所有操作要么全部提交成功,要么全部失败回滚。回滚可以用回滚日志来实现,回滚日志记录着事务所执行的修改操作,在回滚时反向执行这些修改操作即可。2. 一致性(Consiste...

2019-08-07 16:26:44 180

原创 HTTP

HTTP 状态码服务器返回的响应报文中第一行为状态行,包含了状态码以及原因短语,用来告知客户端请求的结果。状态码 类别 含义 1XX Informational(信息性状态码) 接收的请求正在处理 2XX Success(成功状态码) 请求正常处理完毕 3XX Redirection(重定向状态码) 需要进行附加操作以完成请求...

2019-08-07 01:48:36 98

原创 计算机网络

TCP和UDP的区别 用户数据报协议 UDP(User Datagram Protocol)是无连接的,尽最大可能交付,没有拥塞控制,面向报文(对于应用程序传下来的报文不合并也不拆分,只是添加 UDP 首部),支持一对一、一对多、多对一和多对多的交互通信。 传输控制协议 TCP(Transmission Control Protocol)是面向连接的,提供可靠交付,有流量控制,拥塞...

2019-08-07 01:27:19 178

原创 Java虚拟机:虚拟机专题

一,JVM的内存布局 布局图程序计数器:记录正在执行的虚拟机字节码指令的地址(如果正在执行的是本地方法则为空)。虚拟机栈:每个 Java 方法在执行的同时会创建一个栈帧用于存储局部变量表、操作数栈、常量池引用等信息。从方法调用直至执行完成的过程,对应着一个栈帧在 Java 虚拟机栈中入栈和出栈的过程。...

2019-07-31 18:11:57 133

原创 Java集合5:集合中的设计模式

迭代器模式Collection 继承了 Iterable 接口,其中的 iterator() 方法能够产生一个 Iterator 对象,通过这个对象就可以迭代遍历 Collection 中的元素。从 JDK 1.5 之后可以使用 foreach 方法来遍历实现了 Iterable 接口的聚合对象。List<String> list = new ArrayList...

2019-07-31 17:49:58 1337

原创 Java集合 4:ConcurrentHashMap的原理

在ConcurrentHashMap中,键值都不允许为null;ConcurrentHashMap使用分段锁技术,把区间按并发级别分成了若干个sagement,给每个segment配锁,当线程占用锁访问其中一个segment时其他segment内数据也能被其他线程访问,读操作大部分时间不用上锁,只有在size等操作时才需要锁住整个hash表。ConcurrentHashMap使用Reent...

2019-07-30 20:41:45 126

原创 Java集合 3:HashMap,HashTable的实现和区别

一,先说说HashMapHashMap的数据结构transient Entry[] table;static class Entry<K,V> implements Map.Entry<K,V>{ final K key; V value; Entry<K,V> next; ...

2019-07-30 20:35:40 98

原创 Java集合 2:ArrayList,LinkedList,Vector的区别

一,线程安全ArrayList和LinkedList都是线程不安全的,用在单线程环境中。如果一定在并发环境下使用,需要雍Collections类的synchronized()方法来调用。Vector则是线程安全的,它的大部分方法都有关键字synchronized,但是效率没有前两者高。二,扩容机制ArrayList和Vector底层都是由Object的数组形式实现的,当进行扩容时,...

2019-07-29 22:31:53 89

原创 Java集合 1:List,Set,Map的区别

List: 1.可以允许重复的对象。   2.可以插入多个null元素。 3.是一个有序容器,保持了每个元素的插入顺序,输出的顺序就是插入的顺序。 4.常用的实现类有ArrayList、LinkedList 和 Vector。ArrayList 最为流行,它提供了使用索引的随意访问,而 LinkedList 则对于经常需要从 List ...

2019-07-29 19:16:21 101

原创 Java基础 10.序列化与反序列化

无论何种类型的数据,都是以二进制的形式在网络上传送,为了由一个进程把Java对象发送给另一个进程,需要把其转换为字节序列才能在网络上传送,把JAVA对象转换为字节序列的过程就称为对象的序列化,将字节序列恢复成Java对象的过程称为对象的反序列化。序列化的实现:将需要被序列化的类实现Serializable接口,然后使用一个输出流(如:FileOutputStream)来构造一ObjectOut...

2019-07-28 22:39:09 62

原创 Java基础 9.equals和hashcode的联系以及和==的区别

equals与==的区别==比较的是2个对象的地址,而equals比较的是2个对象的内容,显然,当equals为true时,==不一定为true。==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。  equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。hashCode和equals方法的区别...

2019-07-28 22:32:50 88

原创 Java基础 8.反射的作用与原理

1.反射机制是在运行时对于任一类,都能获取到这个类的属性和方法,对任一对象,都可以调用它的方法。只要给出类的名字,都可以使用反射机制来获取到这个类的所有信息。2.反射提供的功能:在运行时判定对象所属的类;在运行时创建对象;在运行时判定一个类的成员变量和方法;运行时调用任一对象的方法;生成动态代理。3.实现反射的方法Class.forName("类的路径"); 类名.class;...

2019-07-28 22:29:23 131

原创 Java基础 7.抽象类和接口的区别

语法层面:1.抽象类可以提供成员方法的实现细节,而接口中只能 存在抽象方法(默认 public abstract)2.抽象类中的成员变量可 以是多种类 型,而接口中的成员变量必须用public static final(常量)修饰3.一个类只能继 承一个抽象类(单继承),但可以实现多个接口(多继承)4.抽象类中允许含有静态代码块和静态方法,而接口类不能。设计层面:1.抽象类...

2019-07-28 22:20:52 270

原创 Java基础 6.String、StringBuilder、StringBuffer

1.可变性String是不可变的,因为底层是final修饰的char数组。StringBuffer和StringBuilder对象是可变的所以每次对String类型改变的时候,都会重新生成对象,然后指针指向新的对象,多次这样会产生很多无引用对象,JVM的GC就会启动,导致系统性能下降。修改String对象的原理:首先创建一个StringBuffer对象,调用append()方法,最...

2019-07-28 17:24:56 71

原创 Java基础 5.Int和Integer的区别与联系,Integer中值的缓存范围

Integer是int的包装类;int是基本数据类型; Integer变量必须实例化后才能使用;int变量不需要; Integer实际是对象的引用,指向此new的Integer对象;int是直接存储数据值 ; Integer的默认值是null;int的默认值是0。包装类是不可变类。包装类作为参数传递时,仍是按值传递。深入对比:两个通过new生成的Integer变量永远是不相等的 ...

2019-07-28 17:16:27 97

原创 Java基础 4.Exception和Error以及常见的运行时异常

所有的异常都是由Throwable类,下一层分解为两个分支:Error和Exceprion。 Error层次结构描述了java运行时系统的内部错误和资源耗尽错误。大多数错误与代码编写者执行的操作无关,而表示代码运行时 JVM(Java 虚拟机)出现的问题。应用程序不应该抛出这种类型的对象。 Exceprion这个层次结构又分解为两个分支:一个分支派生RuntimeException;另一...

2019-07-28 17:10:43 163

原创 Java基础 3.final, finally, finalize 的区别

final 修饰类时,该类不能被其他类继承。final类中所有的成员都是final。用final方法的原因主要有两个:(1) 把方法锁定,以防止继承类对其进行更改。(2) 效率,在早期的java版本中,会将final方法转为内嵌调用。但若方法过于庞大,可能在性能上不会有多大提升。注意:若父类中final方法的访问权限为private,将导致子类中不能直接继承该方法,可在子类中定义相同方法名的...

2019-07-28 16:59:38 208

原创 Java基础 2.重载和重写的区别

在1中说到重载和重写是Java多态性的不同表现方式重载是在一个类中多态的表现,指在一个类中定义了多个同名的方法,但是参数个数和参数类型不同。注意:1.重载只能通过不同的方法参数来区分(个数,类型,顺序)。 2.不能通过访问权限,返回类型,异常等进行重载。重写是子类方法重写父类中的方法。注意:1.重写方法的方法名和参数必须完全与父类相同,返回值类型必须相同,抛...

2019-07-28 16:56:29 123

原创 Java基础 1.面向对象的三大特性 实现原理

封装 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。例如将属性定义为私有的,只能由get(),set()方法访问。好处:只能通过规定的方法访问数据。隐藏类的实例细节,方便修改和实现 继承 是类与类的一种关系,是一种“is a”的关系。比如“狗”继承“动物”,这里动物类是狗类的父类或者基类,狗类是动物类的子类或者派生类。特性:1.单...

2019-07-28 16:47:37 316

空空如也

空空如也

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

TA关注的人

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