自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(76)
  • 收藏
  • 关注

转载 Java集合之Collections 剖析

  Collections工具类位于 java.util 包下,是一个比较常用的工具类,关于这个工具类,主要介绍其在使用过程中遇到的大坑!!!    【事故现场】  在实际项目开发过程中,在前人代码的基础上,对于一个集合添加元素,抛出java.lang.UnsupportedOperationException异常,对于一个List 集合,常见的添加元素就报错了,很让人费解。...

2019-09-30 17:55:00 152

转载 Java集合之Arrays 剖析

  Arrays工具类位于 java.util 包下,是一个比较常用的工具类,其可以针对数组进行各种操作,比如赋值、排序、搜索等等。在项目过程中我们针对数组的有关操作,如果不方便直接操作,均可通过调用此类的某些方法转换成 list 集合进行操作。下面首先介绍 Arrays 类的几种常用方法。1. Arrays.asList此方法是将一个数组直接转换为集合,返回结果为 L...

2019-09-29 15:26:00 164

转载 关于Java8中的Comparator那些事

  在前面一篇博文中,对于java中的排序方法进行比较和具体剖析,主要是针对 Comparator接口和 Comparable接口,无论是哪种方式,都需要实现这个接口,并且重写里面的 方法。Java8中对其进行了优化,直接调用Comparator类即可实现一些自定义的排序功能,比如按照某个字段升序,并且按照某个字段降序排列;还有如果出现null 的情况怎么处理等等。下面是针对常见的 基础...

2019-09-22 16:58:00 471

转载 关于Comparable和Comparator那些事

  在实际项目开发过程中,我们经常需要对某个对象或者某个集合中的元素进行排序,常用的两种方式是实现某个接口。常见的可以实现比较功能的接口有Comparable接口和 Comparator接口,那么这两个又有什么区别呢?关于Comparable接口  关于Comparable接口,其位于 java.lang.Comparable 中,实现这个接口,可以通过重写其 compar...

2019-09-21 18:20:00 123

转载 浅析Thread的join() 方法

  Thread中的 join() 方法在实际开发过程中可能用的不是很多,但是在面试中作为考察基本功知识的扎实与否,经常会被用到。因此,对于 Thread 的 join() 方法进行了一定的研究。  常见的一种情景是如何保证创建多个线程保证其按照指定的顺序执行,最简单的一种方法是采用Thread.join() 方法来实现。以下是写的创建若干个线程的示例代码,通过采用创建一个实体...

2019-09-14 18:14:00 152

转载 多线程的具体实现

  多线程在实际代码开发中使用频率非常高,熟练的掌握多线程对于提高工作效率以及代码的水平具有很大的帮助。因此本文对于常见的多线程中的一些问题进行理论知识以及实际代码的演示。  创建一个线程有两种方式,一种是继承Thread类,另外一种是实现Runnable接口。这两者的区别是:继承Thread类的本质是多个线程分别完成自己的任务,实现Runnable接口的本质是多个线程共同完成一个任...

2019-09-12 19:50:00 100

转载 如何实现 List 集合的线程安全

  在实际项目开发中,List 集合较为常用,相比于数组,其提供了更多的方法,便于遍历、搜索、添加与移除。常见的有 ArrayList、Vector等。  关于ArrayList  中所周知,ArrayList不是线程安全的,在多线程开发时,我们不能采取多个线程同时操作 ArrayList,比如我们不能一个线程向 ArrayList中添加元素,一个线程从其中 删除元素,这时会抛...

2019-09-10 20:00:00 180

转载 集合使用 Iterator 删除元素

  针对常见的数据集合,比如 ArrayList 列表,对其进行遍历,删除其中符合条件的某个元素,使用 iterator 迭代器进行迭代,代码如下: 1 public class PracticeController { 2 public static void main(String[] args) { 3 List<String> ...

2019-09-09 21:16:00 203

转载 Tomcat目录详解

最近在项目部署时,有时通过使用公司提供的Jdoc容器引擎部署上线项目,有时使用Jenkins自动化部署,甚至有的项目直接打war包上传到弹性云的tomcat中进行部署。虽然部署方式略有不同,但是归根结底主要是将war包上传到服务器中的tomcat中进行部署。因此,最近忙里偷闲,关于tomcat的目录结构进行了一定的深挖和研究。Tomcat 顶层结构 ...

2019-08-28 21:59:00 123

转载 一文读懂微服务架构

  最近在网上看到一篇微服务的相关文章,详细介绍了微服务架构的演变过程,不仅写的非常详细,并且十分生动形象。特将此文章转载于此,mark一下。原文链接如下:https://www.cnblogs.com/skabyy/p/11396571.html========================这是一条华丽的分割线========================  本文将介绍微服...

2019-08-27 22:07:00 73

转载 Thymeleaf的基本用法

  俗话说,不会前端的后端工程师不是一个合格的程序员。因为在项目中经常要和前端工程师打交道,并且偶尔也会涉及前端的简单开发,因此在闲暇之余学习了一点前端的知识,今天首先总结归纳一下 Thymeleaf 模板引擎。一、 Thymeleaf简介Thymeleaf 是 Web 和独立环境的现代服务器端 Java 模板引擎,能够处理HTML,XML,JavaScript,CSS 甚...

2019-08-26 00:45:00 172

转载 RBAC基于角色的权限管理模型

一、权限管理模型的必要性: a. 安全性:防止误操作,防止数据泄露,保证信息的安全。 b. 数据隔离:保持不同的角色具有不同的权限,只能看到自己权限范围内的数据二、权限管理模型的发展: a. 传统的权限管理:随着用户数量的增大和用户权限区别的增大,传统的权限管理需要针对每个用户依次管理,成...

2019-08-07 21:28:00 141

转载 Java中的实体类--Serializable接口、transient 关键字

  在java中,实体类是一个非常重要的概念,我们可以在实体类中封装对象、设置其属性和方法等。关于实体类,也经常涉及到适配器模式、装饰者模式等设计模式。那么在实际代码开发中,关于实体类的注意事项有哪些呢?1. Serializable接口  实现该接口可以实现序列化,Serializable接口没有方法或字段,仅用于标识可序列化的语义。但是,如果一个类没有实现这个接口,想要...

2019-07-15 20:50:00 229

转载 字符串问题----将整数字符串转换成整数值

将整数字符串转换成整数值    给定一个字符串str,如果str符合日常书写的规范,并属于32位整数的范围,返回str所代表的整数值,否则返回0。如 023, A13, 2147483648,均返回0。  【解题思路】  定义四个变量,flag表示正负,res表示结果,minq表示最小值除以10的商,minr表示最小值除以10 的余数。因为最小值是 -2147483...

2018-08-29 23:32:00 231

转载 字符串问题----判断两个字符串是否互为旋转词

判断两个字符串是否互为旋转词    如果一个字符串str,把字符串str前面的任意部分挪到后面形成的字符串叫做str的旋转词。给定两个字符串,判断是否互为旋转词。比如 a="abcd",b="cdab",true a="abcd",b="bcad",false    【解题思路】  如果长度不一样,肯定是false,如果长度一样,时间复杂度是O(N)。  方法一:...

2018-08-29 23:23:00 189

转载 字符串问题----去掉字符串中连续出现K个0的子串

去掉字符串中连续出现K个0的子串    给定一个字符串str,和一个整数k, 如果str中正好有连续K 个'0'字符出现,把连续的 k 个 '0'去掉,返回处理后的子串。  【解题思路】  1.定义两个变量,count表示'0'连续出现的次数,start表示连续出现的开始位置,  2.将去掉连续0 的时机放在了当前字符不是 0 的情况  3.因此对于最...

2018-08-29 23:17:00 168

转载 海量数据处理面试题与方法大总结

海量数据处理面试题与方法大总结    针对海量数据处理问题,是面试中的常见考点,发现一个不错的帖子,整理如下。=======================================================1. 给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url?方案1:可以估计每个文件安的大...

2018-08-15 23:32:00 93

转载 collection和map集合类知识点总结

collection和map集合类知识点总结    最近在准备java基础知识的总结,发现对于集合类的知识点很多很杂,借鉴网上的帖子,整理如下。一、定义集合框架是为表示和操作集合而规定的一种统一的标准的体系结构,在java中的集合框架主要分为两部分:Collection接口和Map接口。二、 用法(一)集合框架涉及的数据结构1.数据结...

2018-08-15 15:07:00 99

转载 字符串问题----字符串中数字子串的求和

字符串中数字子串的求和    给定一个字符串str,求其中全部数字串所代表的数字之和  1. 忽略小数点,“ A1.3 ” 表示的数字就是包含两个数字 1 和 3  2. 紧贴数字的左边出现 “-”,其连续出现的数量如果为奇数,就视为 负,如果为偶数,就视为 正 “ A-1BC--23” 表示的是 -1 和 23    【解题思路】  首先定义三个变量, re...

2018-08-14 23:38:00 173

转载 字符串问题----判断两个字符串是否互为变形词

判断两个字符串是否互为变形词    给定两个字符串 str1 和str2 ,如果两个字符串中出现的字符种类一样,次数也一样,则互为变形词,实现一个函数判断两个字符串是否互为变形词。例如 str1=“123”,str2=“132”,true; str1=“123”,str2=“1332”,false;    【解题思路】  1.首先比较两个字符串的长度,长度不同肯定是...

2018-08-14 23:08:00 191

转载 数据库分库分表

数据库分库分表  一、常见的主键生成策略  1. UUID:非常长,占用存储空间,建立索引和基于索引进行查询时都会存在性能问题。  2. Flickr的主键生成策略:建立两台以上的数据库ID生成服务器,每个服务器都有一张记录各表当前ID的Sequence表,但是Sequence中ID增长的步长是服务器的数量,起始值依次错开,这样相当于把ID的生成散列到了每个服务器节点上。...

2018-08-13 22:21:00 80

转载 单点登录原理与实现

单点登录原理与实现    关于单点登录,在项目中用到的是对于cookie中设置的domain 为二级域名,这样二级域名下的cookie都可以共享,将sessionId存储在cookie中,对于session信息,则是将sessionId 和session信息分别作为键值对存储在Redis中,这样可以简单实现单点登录。  最近看到一篇文章,里面对于单点登录进行较为深入的理解,觉...

2018-08-09 23:22:00 62

转载 Redis的持久化策略

Redis的持久化策略    Redis的持久化策略主要有两种,下面主要对每种策略的特点及应用简要总结。 ○ RDB   § RDB:是redis的默认持久化机制。相当于照快照。保存的不是数据,保存的是一种状态。20G数据----> 几kb快照   § 优点:快照保存数据速度极快,还原数据速度极快;适用于灾难备份,复制其中的dump.rdb文件即可。   §...

2018-08-06 23:16:00 82

转载 生产者-消费者模式

生产者-消费者模式  1. 阻塞队列    生产者消费者模式中,一般采用阻塞队列来实现。阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。2. 阻塞队列的运用  当队列中没有数据的情况下,消费者端的所有线程都会被自动阻塞(挂起),直到有...

2018-08-05 00:22:00 84

转载 单例模式

单例模式    设计目的:想在系统中只能出现一个类的实例  特点:私有构造函数;类内部维护一个实例;生成一个静态获取实例的方法(延迟加载实例)  实现方式:双重检测方式;静态内部类方式;枚举类实现双重检测方式package com.commonCode.singleton;/** * Created by Demrystv. */pu...

2018-08-05 00:11:00 63

转载 代理模式

代理模式    代理类和委托类有相同的接口,一个代理类的的对象与一个委托类的对象关联。代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法来提供特定的服务。代理类就像是明星,委托类就像是经纪人。关于代理模式的原理,不做过多的介绍,网上有很多帖子,本文主要侧重于代码的实现。    静态代理:  因为代理对象需要与目标对象实现一样的接口,所以会有很多代理类...

2018-08-05 00:06:00 85

转载 栈和队列----按照左右半区的方式重新组合单链表

按照左右半区的方式重新组合单链表    给定一个单链表的头部节点 head,链表长度为 N ,如果 N 为偶数,那么前 N/2 算作前半区,后 N/2 算作后半区,如果 N 为奇数,那么前 N/2 算作前半区,后 N/2 + 1算作后半区。左半区从左到右依次记为 L1->L2->...,右半区从左到右依次记为 R1->R2->...,将该链表调整为 L1-...

2018-08-01 23:31:00 122

转载 栈和队列----合并两个有序的单链表

合并两个有序的单链表    给定两个有序单链表的头节点 head1 和 head2,合并两个有序链表,合并后链表依然有序,并返回合并后的链表的头节点,例如:0->2->3->7->null 和 1->3->5->7->9->null,合并后的链表为 0->1->2->3->3->5-&gt...

2018-08-01 23:22:00 161

转载 Java中的线程池

Java中的线程池一、线程池的好处  1. 降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。  2. 提高响应速度。当任务到达时,任务可以不需要的等到线程创建就能立即执行。  3. 提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。二、线程池的种类...

2018-08-01 23:16:00 48

转载 SpringMVC中的参数绑定

SpringMVC中的参数绑定  参数绑定的定义  所谓参数绑定,简单来说就是客户端发送请求,而请求中包含一些数据,那么这些数据怎么到达 Controller。从客户端请求key/value数据(比如get请求中包含的数据),经过参数绑定,将key/value数据绑定到controller方法的形参上。springmvc中,接收页面提交的数据是通过方法形参来接收。而不是在c...

2018-07-31 15:43:00 100

转载 Mybatis常见面试题汇总

Mybatis常见面试题汇总  最近在复习整理Mybatis的相关知识,针对面试中的典型问题,结合相关书籍和网上相关帖子,做如下整理。=================================================================1、#{}和${}的区别是什么?答:${}是Properties文件中的变量占位符,它可以用于标签属性值和sq...

2018-07-30 15:08:00 72

转载 为什么索引可以提高效率?

为什么索引可以提高效率?  对于索引的应用比较常见,索引的底层数据结构也有一定的了解,但是一直在思考为什么索引会提高效率,后来,参考网上的文章,终于得到解释。============================================================  本文只针对mysql进行相关方面的说明。  首先我要问,“数据索引是有序无序的?”。答...

2018-07-27 13:52:00 1224

转载 Java内存模型

Java内存模型    首先,借用网上的一张图,该图对于Java内存模型进行了详细的划分,后面主要是自己在学习过程中的一些总结归纳与理解。    首先,应该认识到Java 中的堆是 JVM 所管理的最大的一块内存空间,主要用于存放各种类的实例对象。在 Java 中,堆被划分成两个不同的区域:年轻代 ( Young )、老年代 ( Tenured)。年轻代 ( Young ...

2018-07-25 23:26:00 92

转载 栈和队列----向有序的环形单链表中插入新节点

向有序的环形单链表中插入新节点    一个环形链表从头节点开始不会降序,同时最后的节点指向头节点。给定一个环形单链表的头节点head和一个整数num,生成新节点并将其插入到环形链表中,保证插入后的链表仍然有序。 package com.test;import com.test.ListNode;/** * Created by Demrystv....

2018-07-25 10:33:00 163

转载 栈和队列----单链表的选择排序

单链表的选择排序    给定一个无序单链表的头节点 head,实现单链表的选择排序,要求额外空间复杂度是 O(1)    【解析】  要求额外空间复杂度是 O(1),所以不能使用数组等容器进行排序,直接使用几个变量  选择排序是在从未排序部分选择最小值,然后放在排序部分的尾部,逐渐将未排序部分缩小,最后变成排好序的部分。package com.tes...

2018-07-25 09:39:00 122

转载 栈和队列----将搜索二叉树转换成双向链表

将搜索二叉树转换成双向链表    对于BST 来说,有本身的值域,有指向左孩子和右孩子的两个指针;对于双向链表来说,有本身的值域,有指向上一个节点和下一个节点的指针。将这个BST转换成双向链表,对于每一个节点来说,原来的right指针等价于转换后的next指针,原来的left指针等价于转换后的left指针,最后返回双向链表的头节点。    【解析】  用队列等容器收集...

2018-07-23 09:09:00 133

转载 栈和队列----在单链表中删除指定值的节点

在单链表中删除指定值的节点    给定一个链表的头节点head和一个整数num,实现一个函数删除链表中值为num的所有节点。例如,链表为 1->2->3->4->null ,num 为3,删除后,链表变为 1->2->4->null。   【解析】  方法一:使用栈或者其他容器收集节点的方法,其时间复杂度是 O(N),空间复杂...

2018-07-23 08:58:00 537

转载 深入理解Java内存模型中的虚拟机栈

深入理解Java内存模型中的虚拟机栈   Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域,这些区域都会有各自的用途,以及创建和销毁的时间,有的区域会随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁。Java虚拟机所管理的内存将会包括以下几个运行时数据区域。如下图所示(图片来自《深入理解Java虚拟机》一书)。...

2018-07-22 23:32:00 84

转载 栈和队列----删除无序单链表中值重复出现的节点

删除无序单链表中值重复出现的节点    给定一个无序单链表的头节点head,删除其中值重复的节点  例如: 1->2->3->3->4->4->2->1->1->null 删除之后变为 1->2->3->4->null  方法1:如果链表长度为N,时间复杂度达到O(N)  方法2:如果要求空...

2018-07-19 23:25:00 112

转载 栈和队列----将单链表的每K个节点之间逆序

将单链表的每K个节点之间逆序    给定一个单链表的头节点head,实现一个调整链表的函数,使得每K 个节点之间逆序,如果最后剩下不够K 个节点,则不调整最后几个。  例如:  链表:1—>2—>3—>4—>5—>6—>7—>8—>null,k=3。  调整好后:3—>2—>1—>6—>5—&gt...

2018-07-19 23:11:00 171

空空如也

空空如也

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

TA关注的人

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