自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 OOM 9种常见原因及解决方案

当 JVM 内存严重不足时,就会抛出 java.lang.OutOfMemoryError 错误。本文总结了常见的 OOM 原因及其解决方法,如下图所示。如有遗漏或错误,欢迎补充指正1、Java heap space当堆内存(Heap Space)没有足够空间存放新创建的对象时,就会抛出 java.lang.OutOfMemoryError:Javaheap space 错误(根据实际生产经验,可以对程序日志中的 OutOfMemoryError 配置关键字告警,一经发现,立即处理)。原因分

2021-08-24 15:26:32 6020

原创 并发编程基础概念

进程(Process) 是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。 在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。程序是指令、数据及其组织形式的描述,进程是程序的实体。线程(thread) 是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线

2021-03-06 15:32:51 279

原创 java类实现Serializable的作用

Serializable接口是Java中的一个接口,一个类只有实现了该接口,其对象才能被序列化。那什么是序列化呢?就是将一个对象及状态转化为可存储或可传输的形式的过程,在序列化期间对象将其当前状态写入到临时存储区或持久性存储区,之后便可以从存储区中读取或反序列化该对象的状态信息来重新创建该对象。什么时候需要序列化?当我们需要把对象的状态信息持久保存或通过网络传输时需要序列化,以便使用时进行反序列化...

2020-07-23 15:43:15 635

原创 设计模式之--工厂模式

一概述:属于创建型设计模式,需要生成的对象叫做产品 ,生成对象的地方叫做工厂 。二 简单(静态)工厂:一个例子:我喜欢吃面条,抽象一个面条基类,(接口也可以),这是产品的抽象类。public abstract class INoodles { /** * 描述每种面条啥样的 */ public abstract void desc();}...

2020-01-14 17:49:24 75

原创 设计模式之--装饰器模式

装饰器模式是指允许对一个现有的对象加入其它额外的功能并且不改变其原来的结构,属于结构型模式。这种模式通常会创建一个装饰类来包装原有的类以达到装饰的效果。装饰器模式,顾名思义,就是对已经存在的某些类进行装饰,以此来扩展一些功能。其结构图如下:Component为统一接口,也是装饰类和被装饰类的基本类型。ConcreteComponent为具体实现类,也是被装饰类,他本身是个具有一些功...

2020-01-13 15:41:26 232

原创 分布式锁(redis/zookeeper)

现在面试,一般都会聊聊分布式系统这块的东西。通常面试官都会从服务框架(Spring Cloud、Dubbo)聊起,一路聊到分布式事务、分布式锁、ZooKeeper 等知识。所以咱们就来聊聊分布式锁这块的知识,先具体的来看看 Redis 分布式锁的实现原理。说实话,如果在公司里落地生产环境用分布式锁的时候,一定是会用开源类库的,比如 Redis 分布式锁,一般就是用 Redisson 框架就...

2019-09-19 11:52:55 575

转载 分布式锁的实现方式

三种实现分布式锁的方式一、为什么要使用分布式锁我们在开发应用的时候,如果需要对某一个共享变量进行多线程同步访问的时候,可以使用我们学到的Java多线程的18般武艺进行处理,并且可以完美的运行,毫无Bug!注意这是单机应用,也就是所有的请求都会分配到当前服务器的JVM内部,然后映射为操作系统的线程进行处理!而这个共享变量只是在这个JVM内部的一块内存空间!后来业务发展,需要做集群,一...

2019-09-19 11:37:12 143

原创 接口的幂等性

面试支付公司时候,问了一道接口幂等性的题目,支付请求中途失败,再次请求时,只扣一存款。或者时生成订单的时候,只生成一个订单信息。想深入了解下,于是学习总结,记录下来。1. 接口调用存在的问题现如今我们的系统大多拆分为分布式SOA,或者微服务,一套系统中包含了多个子系统服务,而一个子系统服务往往会去调用另一个服务,而服务调用服务无非就是使用RPC通信或者restful,,既然是通信,那么就有...

2019-09-19 11:21:14 127

原创 数据库事务和隔离级别

前几天面试,问道了数据库事务的相关问题,回答的不是特别好,现在整理一下关于数据库事务和分布式事务的相关问题。什么是事务事务(Transaction):访问并可能更新数据库中各种数据的程序执行单元(unit),它通常由高级数据库操作语言或编程语言(如SQL,c++或Java)书写的用户程序的执行所引起。当数据酷中更改数据成功时,在事务中更改的数据便会提交,不再改变。否则,事务就取消或者回滚,...

2019-09-19 11:10:30 161

翻译 Redis分布式锁的正确实现方式

Redis分布式锁的正确实现方式前言分布式锁一般有三种实现方式:1. 数据库乐观锁;2. 基于Redis的分布式锁;3. 基于ZooKeeper的分布式锁。本篇博客将介绍第二种方式,基于Redis实现分布式锁。虽然网上已经有各种介绍Redis分布式锁实现的博客,然而他们的实现却有着各种各样的问题,为了避免误人子弟,本篇博客将详细介绍如何正确地实现Redis分布式锁。可靠性首先,为了...

2019-03-20 12:04:32 287

转载 PreparedStatement的用法

PreparedStatement的用法jdbc(java database connectivity,java数据库连接)的api中的主要的四个类之一的java.sql.statement要求开发者付出大量的时间和精力。在使用statement获取jdbc访问时所具有的一个共通的问题是输入适当格式的日期和时间戳:2002-02-05 20:56 或者 02/05/02 8:56 pm。通...

2019-03-20 12:02:12 4021

转载 MySQL锁详解

一、概述数据库锁定机制简单来说,就是数据库为了保证数据的一致性,而使各种共享资源在被并发访问变得有序所设计的一种规则。对于任何一种数据库来说都需要有相应的锁定机制,所以MySQL自然也不能例外。MySQL数据库由于其自身架构的特点,存在多种数据存储引擎,每种存储引擎所针对的应用场景特点都不太一样,为了满足各自特定应用场景的需求,每种存储引擎的锁定机制都是为各自所面对的特定场景而优化设计,所以各...

2019-03-15 23:21:59 150

原创 数据库索引内部数据结构

摘要:本文内容主要来源于互联网上主流文章,只是按照个人理解稍作整合,后面附有参考链接。本文内容主要来源于互联网上主流文章,只是按照个人理解稍作整合,后面附有参考链接。一、摘要本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索...

2019-03-15 22:45:50 183

原创 MySQL索引类型

一、简介MySQL目前主要有以下几种索引类型:1.普通索引2.唯一索引3.主键索引4.组合索引5.全文索引二、语句CREATE TABLE table_name[col_name data type][unique|fulltext][index|key][index_name](col_name[length])[asc|desc]1.unique|fulltext...

2019-03-15 22:44:46 291

转载 TreeMap实现原理 红黑树

TreeMap的实现是红黑树算法的实现,所以要了解TreeMap就必须对红黑树有一定的了解,其实这篇博文的名字叫做:根据红黑树的算法来分析TreeMap的实现,但是为了与Java提高篇系列博文保持一致还是叫做TreeMap比较好。通过这篇博文你可以获得如下知识点:1、红黑树的基本概念。2、红黑树增加节点、删除节点的实现过程。3、红黑树左旋转、右...

2019-03-13 17:17:45 298

转载 MySQL数据库优化的八种方式(经典必看)

MySQL数据库优化的八种方式(经典必看)引言: 关于数据库优化,网上有不少资料和方法,但是不少质量参差不齐,有些总结的不够到位,内容冗杂 偶尔发现了这篇文章,总结得很经典,文章流量也很大,所以拿到自己的总结文集中,积累优质文章,提升个人能力,希望对大家今后开发中也有帮助 1、选取最适用的字段属性MySQL可以很好的支持大数据量的存取,但是一般说来,数据库...

2019-03-13 15:48:28 131130 13

原创 MySQL和Oracle的区别

一、MySQL和Oracle的主要区别(1) 对事务的提交 MySQL默认是自动提交,而Oracle默认不自动提交,需要用户手动提交,需要在写commit;指令或者点击commit按钮(2) 分页查询 MySQL是直接在SQL语句中写"select... from ...where...limit x, y",有limit就可以实现分页;而Oracle则是需要用到伪列ROWN...

2019-03-13 15:40:42 265 1

翻译 优化数据库对象

优化数据库对象有这四种:1、优化表的数据类型,每个字段选择合适的数据类型匹配。2、通过拆分表提高表的访问速度2.1 垂直拆分表 把主码和一些列放到一张表,然后主码和另外的列放另外一张表,把常用的列放一张表,不常用的放另外一张表。 优点:数据行变小,一个数据页存储数据更多,在查询时减少I/O ...

2019-03-13 15:33:18 185

转载 HashMap原理和底层实现(转载一篇写的很好的)

HashMap原理和底层实现最近研究了一下java中比较常见的map类型,主要有HashMap,HashTable,LinkedHashMap和concurrentHashMap。这几种map有各自的特性和适用场景。使用方法的话,就不说了,本文重点介绍其原理和底层的实现。文章中的代码来源于jdk1.9版本。HashMap特点及原理分析特点HashMap是java中使用最为频...

2019-03-11 15:18:53 167

转载 HashTable原理和底层实现

HashTable原理和底层实现1. 概述上次讨论了HashMap的结构,原理和实现,本文来对Map家族的另外一个常用集合HashTable进行介绍。HashTable和HashMap两种集合非常相似,经常被各种面试官问到两者的区别。对于两者的区别,主要有以下几点:HashMap是非同步的,没有对读写等操作进行锁保护,所以是线程不安全的,在多线程场景下会出现数据不一致的问题...

2019-03-11 15:15:23 352

翻译 HashMap 的底层原理

1. HashMap的数据结构数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。数组数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难;链表链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,达O(N)。链表的特点是:寻址困难,插入和删除容易。哈希表...

2019-03-11 12:04:32 200

翻译 activemq、rabbitmq、kafka原理和比较

一、activemq 虽然是java写的消息队列,但是提供Java, C, C++, C#, Ruby, Perl, Python, PHP各种客户端,所以语言上是没什么问题的。配置和使用,基本上是java xml这一套。同时对jms、spring之类的支持很友好。 而且因为是Java写的,所以可以作为一个jar包,放到java项目里,用代码启动和配置,这个对于java开发者而...

2019-03-11 10:59:27 231

翻译 RESTful 架构风格概述

RESTful 架构风格概述在移动互联网的大潮下,随着docker等技术的兴起,『微服务』的概念也越来越被大家接受并应用于实践,日益增多的web service逐渐统一于RESTful 架构风格,如果开发者对RESTful 架构风格不甚了解,则开发出的所谓RESTful API总会貌合神离,不够规范。本文是我对RESTful 架构风格的一些理解,和大家分享一下,如果有问题,欢迎讨论。O...

2019-03-09 18:01:13 123

原创 异地(异浏览器)登录后登录挤掉先登录的账号 java应用

方法一:比较复杂,在项目比较小没引用消息中间件的情况下且没有redisMyMapSessionId类(采用单例模式,对象有且只有一个,存在的时候不用创建,为空的时候创建对象) 用于用户登入时保存sessionId , 作为后期对同一帐号是否多地登入作工具(如果项目中引用了redis做缓存这个类可以省略)public class MyMapSessionId { private st...

2018-09-06 17:36:00 1909

转载 ORM框架简介及优缺点

一、ORM简介        对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。那么,到底如何实现持久化呢?一种简单的方案是采用硬编码方式,为每一种可能的数据库访问操作提供单独的方法。        这...

2018-09-06 11:57:02 63894 3

原创 泛型基础小结

一 泛型 的好处:     1. 把运行时出现 的问题提前至了编译时。     2. 避免了无谓的强制类型转换。 泛型在集合中的应用:     ArrayList<String> list = new ArrayList<String>();  true    true     true          ArrayList<Object> list = new...

2018-03-01 16:15:03 118

原创 多线程基础(实际开发实例)

线程:多线程的好处: 多线程解决了在一个进程中同时可以执行多个任务代码的问题。自定义线程的创建方式: 方式一:继承Thread. 1. 自定义一个类继承Thread类。 2. 重写Thread的run方法,把自定义线程的任务代码定义在run方法上。 3. 创建Thread子类的对象,并且调用start方法启动一个线程。 方式二: ...

2018-03-01 16:00:56 250

原创 集合基础知识小结

集合: 存储对象数据 的集合容器。单例集合----------| Collection  单例集合 的根接口----------------| List 如果是实现了List接口的集合类,具备的特点: 有序,可重复。-------------------| ArrayList ArrayList底层是使用了Object数组实现 的。 特点: 查询速度快,增删慢。------------------...

2018-03-01 15:57:46 155

原创 IO流(字节流,字符流和转换流的小结)

IO解决问题: 解决设备与设备之间 的数据传输问题。  比如: 硬盘--->内存            内存----->硬盘字节流:输入字节流:---------| InputStream 所有输入字节流的基类。 抽象类。------------| FileInputStream 读取文件的输入字节流。------------| BufferedInputStream 缓冲输入字节流。...

2018-03-01 15:30:54 154

转载 项目中的防止同用户异地登录问题

来公司两个月了, 进组也有1个多月,这是我的第一份工作, 也是第一个项目, 所以决定留下文字记录还是好些,由于入组相对晚,我负责的也相对独立些 -- 系统管理, 首先要做的就是登录, 既然是应用系统肯定不允许同一账号异地重复登录, 就这个问题我查了很多资料, 想做的完美些, 可谓是听取了百家之言。         我目前所知的方法可分为两种, 一是数据库来记录用户在线情况, 在登录把该

2018-01-27 11:21:48 1201

转载 Js--AJAX的小知识(一):ajax的五种状态

一、ajax的五种状态(readyState )  0 - (未初始化)还没有调用send()方法  1 - (载入)已调用send()方法,正在发送请求  2 - (载入完成)send()方法执行完成,已经接收到全部响应内容  3 - (交互)正在解析响应内容  4 - (完成)响应内容解析完成,可以在客户端调用了readyState 状态说明(0)未初始化 

2017-11-17 15:27:50 177

转载 java基础2 面向对象三等基本特征,五大基本特性

透切理解面向对象三大基本特性是理解面向对象五大基本原则的基础.三大特性是:封装,继承,多态  所谓封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。封装是面向对象的特征之一,是对象和类概念的主要特性。 简单的说,一个类就是一个封装了数据以及操作这些数据的代码的逻辑实体。在一个对象内部,某些代码或某些数据可以是私有的,不能

2017-11-13 14:40:43 198

原创 Javase基础知识(1)

Javase基础语法一关键字Java 赋予了特殊含义的单词...        public class static void  if else while do for  break continue switch case return        final  new this  private super  extends  abstract interface

2017-10-23 23:24:24 199

空空如也

空空如也

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

TA关注的人

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