自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(55)
  • 资源 (4)
  • 收藏
  • 关注

原创 oss对zip包中的所有文件进行上传并且对每个获取文件md5值

 上传zip包方法 public static List<String> uploadZipMultiFile(MultipartFile fileData) { List<String> urls = new ArrayList<>(); ZipInputStream zip = new ZipInputStream(fi...

2019-01-10 15:34:47 2431

原创 dubbo-2.6.5解决 启动java.lang.NoClassDefFoundError: org/apache/curator/RetryPolicy 问题

dubbo-2.6.5 依赖pom.xml  <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version...

2018-12-28 11:21:00 27384 8

原创 java 使用subList痛彻心扉的领悟

背景  刚开始截取List集合时使用笨的方法自己截取,后来发现Java api 有方法使用 subList方法,但是由于不清楚原理拿来就用,做项目就掉坑里了List<UclassUser> subList = list.subList(0, GameRoom.CAPACITY / 2); subList.forEach(item -> {...

2018-12-25 14:28:40 1623

原创 Java中forEach使用lambda表达式,数组和集合区别

1.数组怎么使用lambda数组不能直接在forEach中使用lambda表达式 PartnerType[] values = PartnerType.values(); //提示Cannot resolve method 'forEach(<method reference>) values.forEach(System.out...

2018-09-14 11:27:10 18583 1

原创 jkd1.8 lambda 表达式之函数式接口

函数式接口(也叫SAM接口,Single Abstract Method)的对象可以作为函数的参数,这样参数在引用时,可以以lambda表达式的方式出现。 每个函数式接口里仅允许有一个抽象方法,这个方法叫做函数式方法,lambda表达式的参数和返回类型必须和该函数的参数和返回类型保持一致。你无须去创建这个类,编译器会帮你实现。函数式接口仅允许有一个抽象方法,用注解@FunctionalInt...

2018-09-13 14:58:16 289

原创 Java 类初始化顺序

静态属性:static 开头定义的属性 静态方法块: static {} 圈起来的方法块 普通属性: 未带static定义的属性 普通方法块: {} 圈起来的方法块 构造函数: 类名相同的方法 方法: 普通方法 父类静态变量 > 父类静态初始块 > 子类静态变量 > 子类静态初始块 > 父类成员变量 > 父类非静态初始块 > 父类构造器 ...

2018-09-11 18:56:04 156

原创 java 建造者Builder设计模式解析

Builder模式介绍        1.用户使用简单,不需要知道内部怎么创建的         2.解耦,将构建的过程和表示分离开来Builder模式的使用场景        1.相同的方法,不同的执行顺序,产生不同的时间结果时。        2.多个部件或零件,都可以装配到一个对象中,但是产生的运行结果又不同时。        3.产品类非常复杂,或者产品类中的调用顺...

2018-09-11 16:35:32 171

原创 java 中ServiceLoader的使用即SPI

ServiceLoader也像ClassLoader一样,能装载类文件,但是使用时有区别,具体区别如下:(1) ServiceLoader装载的是一系列有某种共同特征的实现类,而ClassLoader是个万能加载器;(2)ServiceLoader装载时需要特殊的配置,使用时也与ClassLoader有所区别;(3)ServiceLoader还实现了Iterator接口。作用:...

2018-09-11 14:52:16 410

原创 java中枚举enum在项目中实际应用

可以把 enum 看成是一个普通的 class,它们都可以定义一些属性和方法,不同之处是:enum 不能使用 extends 关键字继承其他类,因为 enum 已经继承了 java.lang.Enum(java是单一继承),但可以继承接口下面是自定义构造方法的使用情况,项目中也经常这么使用public enum Day{ MONDAY("星期一"), TUESDAY("星...

2018-09-11 14:27:42 2176 1

原创 jdk1.8中map中compute,computeIfAbsent,computeIfPresent方法介绍

 1.computecompute:V compute(K key, BiFunction < ? super K, ? super V, ? extends V> remappingFunction)compute的方法,指定的key在map中的值进行操作 不管存不存在,操作完成后保存到map中 HashMap<String,Integer&gt...

2018-09-11 11:06:27 23110 3

原创 final关键字的4种用法

final的用法在java的关键字中,static和final是两个我们必须掌握的关键字。不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构。下面我们来了解一下final关键字及其用法。final关键字在java中,final的含义在不同的场景下有细微的差别,但总体上来说,它指的是“这是不可变的”。下面,我们来讲final的四种主要用法。...

2018-08-08 17:12:35 22117

原创 尾递归

 什么是尾递归什么是尾递归呢?(tail recursion), 顾名思议,就是一种“不一样的”递归,说到它的不一样,就得先说说一般的递归。对于一般的递归,比如下面的求阶乘,教科书上会告诉我们,如果这个函数调用的深度太深,很容易会有爆栈的危险。 // 先不考虑溢出问题int func(int n){ if (n <= 1) return 1; retu...

2018-08-01 20:13:06 182

原创 ConcurrentHashMap原理和机制

一、背景:线程不安全的HashMap    因为多线程环境下,使用Hashmap进行put操作会引起死循环,导致CPU利用率接近100%,所以在并发情况下不能使用HashMap。 效率低下的HashTable容器     HashTable容器使用synchronized来保证线程安全,但在线程竞争激烈的情况下HashTable的效率非常低下。因为当一个线程访问HashTabl...

2018-08-01 19:32:58 309

原创 volatile关键字的作用、原理

volatile关键字的作用、原理在只有双重检查锁,没有volatile的懒加载单例模式中,由于指令重排序的问题,我确实不会拿到两个不同的单例了,但我会拿到“半个”单例。而发挥神奇作用的volatile,可以当之无愧的被称为Java并发编程中“出现频率最高的关键字”,常用于保持内存可见性(随时见到的都是最新值)和防止指令重排序。保持内存可见性内存可见性(Memory Visibi...

2018-08-01 17:44:54 643

原创 java中atomic原子类的原理介绍

atomic原子类导图无锁即无障碍的运行, 所有线程都可以到达临界区, 接近于无等待.无锁采用CAS(compare and swap)算法来处理线程冲突, 其原理如下CAS原理CAS包含3个参数CAS(V,E,N).V表示要更新的变量, E表示预期值, N表示新值.仅当V值等于E值时, 才会将V的值设为N, 如果V值和E值不同, 则说明已经有其他线程做了更新, 则当前线程...

2018-08-01 17:40:14 3758

转载 redis分布式锁

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

2018-08-01 17:33:24 179

原创 mysql数据库锁的产生原因及解决办法

数据库和操作系统一样,是一个多用户使用的共享资源。当多个用户并发地存取数据 时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。加锁是实现数据库并 发控制的一个非常重要的技术。在实际应用中经常会遇到的与锁相关的异常情况,当两个事务需要一组有冲突的锁,而不能将事务继续下去的话,就会出现死锁,严 重影响应用的正常执行。在数据库...

2018-08-01 17:26:39 321

原创 jvm调优具体参数配置

jvm调优具体参数配置3.JVM参数    在JVM启动参数中,可以设置跟内存、垃圾回收相关的一些参数设置,默认情况不做任何设置JVM会工作的很好,但对一些配置很好的Server和具体的应用必须仔细调优才能获得最佳性能。通过设置我们希望达到一些目标:GC的时间足够的小 GC的次数足够的少 发生Full GC的周期足够的长  前两个目前是相悖的,要想GC时间小必须要一个更小的堆,要...

2018-07-31 10:33:31 216

原创 memcached和redis的区别

1、Redis和Memcache都是将数据存放在内存中,都是内存数据库。不过memcache还可用于缓存其他东西,例如图片、视频等等;2、Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储;3、虚拟内存--Redis当物理内存用完时,可以将一些很久没用到的value 交换到磁盘;4、过期策略--memcache在set时就指定,例如set ...

2018-07-28 16:11:47 181

原创 Java虚拟机详解

Java的性能优化,整理出一篇文章,供以后温故知新。JVM GC(垃圾回收机制)在学习Java GC 之前,我们需要记住一个单词:stop-the-world 。它会在任何一种GC算法中发生。stop-the-world 意味着JVM因为需要执行GC而停止了应用程序的执行。当stop-the-world 发生时,除GC所需的线程外,所有的线程都进入等待状态,直到GC任务完成。GC优化很多时...

2018-04-27 16:52:39 253

原创 Java反射机制--是什么,为什么,怎么用

1.反射是什么首先看书要理解反射,很难完全理解,这关系到Java的语言特性,jvm的内存细节,当初我看反射,就像高票答案那样,照着写一遍,结果是你并没有理解,你只是照猫画虎,要想真正理解,我建议题主,不断深入探究,当你踩得足够深回过头来,你会柳暗花明!这里我不打算像别的答案上来就上代码,给你讲怎么用,是啥是啥,老实说那样比较像培训java程序员的感觉,一点对知识的好奇心都没有,如果是想速成...

2018-04-27 16:09:40 2228 3

原创 linux下配置mysql主从详解

Linux下MySQL数据库的主从同步配置的好处是可以把这个方式当做是一个备份的方法,用来实现读写分离,缓解一个数据库的压力。让运行海量数据的时候无论是从速度还是效率上都大大提高,Mysql的主从复制至少是需要两个Mysql的服务,当然Mysql的服务是可以分布在不同的服务器上,也可以在一台服务器上启动多个服务。这个就是MySQL主从备份原理。下面我们来看下具体同步配置的流程。我们先来看下小编测试...

2018-04-26 16:15:56 645

原创 Java如何防止单例模式被反射攻击

如何防止JAVA反射对单例类的攻击?  在我的上篇随笔中,我们知道了创建单例类有以下几种方式:  (1).饿汉式;  (2).懒汉式(、加同步锁的懒汉式、加双重校验锁的懒汉式、防止指令重排优化的懒汉式);  (3).登记式单例模式;  (4).静态内部类单例模式;  (5).枚举类型的单例模式。在上面的5种实现方式中,除了枚举类型外,其他的实现方式是可以被JAVA的反射机制给攻击的,即使他的构造方...

2018-04-25 15:22:00 550

原创 Java中的异常

简介程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常。异常发生时,是任程序自生自灭,立刻退出终止,还是输出错误给用户?或者用C语言风格:用函数返回值作为执行状态?。 Java提供了更加优秀的解决办法:异常处理机制。 异常处理机制能让程序在异常发生时,按照代码的预先设定的异常处理逻辑,针对性地处理异常,让程序尽最大可能恢复正常并继续执行,且保持代码的清晰。Java中...

2018-04-25 14:23:20 178

原创 TCP/IP协议与Http协议的区别

 TPC/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据。关于TCP/IP和HTTP协议的关系,网络有一段比较容易理解的介绍:“我们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如果没有应用层,便无法识别数据内容,如果想要使传输的数据有意义,则必须使用到应用层协议,应用层协议有很多,比如HTTP、FTP、TELNET等,也可以自...

2018-04-25 13:32:41 292

原创 http协议

1.HTTP简介     1.HTTP协议,即超文本传输协议(Hypertext transfer protocol)。是一种详细规定了浏览器和万维网(WWW = World Wide Web)服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。     2.HTTP协议作为TCP/IP模型中应用层的协议也不例外。HTTP协议通常承载于TCP协议之上,有时也承载于TLS或SSL协议层...

2018-04-25 12:55:43 179

原创 RESTful接口标准

RESTful 接口实现简明指南在前后端分离的 Web 应用架构中,前端专注于页面,同时与后端进行数据交互;而后端则专注于提供 API 接口。在这样的结构下,REST 是一个很流行的前后端交互形式的约定。这只是一套约定,并不是某个技术标准,所以在实际的应用中,对器实现程度完全取决于后端开发者;一些号称 RESTful 的接口并没有那么RESTful。在我所见过的 RESTful 接口的实现中,以 ...

2018-04-24 17:53:46 1765

转载 java之IO学习

Java IO流学习总结一:输入输出流Java流类图结构:流的概念和作用流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。IO流的分类根据处理数据类型的不同分为:字符流和字节流根据数据流向不同分为:输入流和输出流字符流和字节流字符流的由来: 因为数据编码的不同,而有了对字...

2018-04-19 17:18:25 124

转载 Java多线程

引如果对什么是线程、什么是进程仍存有疑惑,请先Google之,因为这两个概念不在本文的范围之内。用多线程只有一个目的,那就是更好的利用cpu的资源,因为所有的多线程代码都可以用单线程来实现。说这个话其实只有一半对,因为反应“多角色”的程序代码,最起码每个角色要给他一个线程吧,否则连实际场景都无法模拟,当然也没法说能用单线程来实现:比如最常见的“生产者,消费者模型”。很多人都对其中的一些概念不够明确...

2018-04-19 17:10:02 128

原创 springboot集成activeMq实战

1.首先搭建好activeMq服务器参考我的上一篇文章:Linux搭建activMq服务2. 创建springboot项目参考我的文章:springboot实战3. maven依赖引入<!-- activemq start -->    <!-- mq依赖 --> <dependency> <groupId>org....

2018-04-14 16:18:14 1602

原创 linux安装Apache ActiveMQ 5.15.3

1.下载Apache ActiveMQ 5.15.3 下载地址 :http://activemq.apache.org/download.html2. 安装把下载好的activemq-5.15.3-bin.tar.gz文件上传到 /usr/local 目录下,然后解压tar -zxvf activemq-5.15.3-bin.tar.gz 后切换到 /usr/local/apache-active...

2018-04-14 14:03:32 2096

原创 CentOS7系统firewalld添加开放端口和操作命令

1、firewalld的基本使用启动: systemctl start firewalld查看状态: systemctl status firewalld 停止: systemctl disable firewalld禁用: systemctl stop firewalld2.systemctl是CentOS7的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。启...

2018-04-14 13:40:29 796

转载 消息队列实际应用

消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题实现高性能,高可用,可伸缩和最终一致性架构使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ二、消息队列应用场景以下介绍消息队列在实际应用中常用的使用场景。异步处理,应用解耦,流量削锋和消息通讯四个场景2.1异步处理场景说明:用户注册后,需要发注册邮件和注...

2018-04-14 12:39:23 1530

原创 linux下安装mysql5.7步骤

在线下mysql文件wget http://mirrors.sohu.com/mysql/MySQL-5.7/mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz1.解压下载好的.tar.gz文件,并将解压后的文件拷贝到/usr/local/目录下,注意:-C,而不是小写的-ctar -xzvf mysql-5.7.19-linux-glibc2.12-x86_64....

2018-04-07 17:44:27 346

原创 如何搭建maven父子项目

现在开发springcloud轻量级服务,父子maven正好合适,还可以少引maven依赖,这样的看起来也美观简洁舒服。1.建立父项目我用的开发工具是eclipse这样父项目就建成了2. 建立子项目建立子项目有2种方式,下面来展示1. 在父项目pom文件中建立2.是new project到此父子maven项目创建完毕...

2018-04-04 17:15:26 680

转载 十大java人物

James Gosling : Java之父文/陶文作 为Java之父,James Gosling的名字可谓是耳熟能详。当人们评论一种编程语言时,总喜欢捎带着把下蛋的母鸡一起带上。Java做为中国的编程语言学习者餐桌上有限的那么 几样餐点中的流行款式,自然是让James Gosling风光不已。虽然James Gosling现在已经不是领导Java发展潮流的领军人物了,做为Sun的开发者产品组的C...

2018-04-03 18:31:06 6979

原创 如何离线安装postman

1. 先下载插件参考下面经验"如何离线安装Chrome插件?",离线安装PostMan应用。最新版本:5.2.0更新日期:2017-8-30下载地址:http://pan.baidu.com/s/1pKJDURL2.安装插件    下载好的.crx文件打开扩展程序管理界面点击Chrome浏览器右上角的自定义及控制按钮,在下拉框中选择更多工具选项,然后点击扩展程序来启动Chrome浏览器的扩展管理器...

2018-03-27 10:51:45 12290

原创 共享session的几种方式

1、为什么需要共享session假设某个网站是由多台服务器提供服务,nginx采用轮询机制做负载均衡,那么同一个IP访问该网站时,请求就可能会被分配到不同的服务器上,如果session没有实现共享,就会出现重复登陆授权的情况。2、共享session的几种方式1)、基于NFS的session共享NFS(Net FileSystem),顾名思义,也就是网络文件系统,即将session存储目录挂载到所有...

2018-03-23 12:29:27 2629

原创 mysql性能优化

1、为查询优化你的查询大多数的MySQL服务器都开启了查询缓存。这是提高性最有效的方法之一,而且这是被MySQL的数据库引擎处理的。当有很多相同的查询被执行了多次的时候,这些查询结果会被放到一个缓存中,这样,后续的相同的查询就不用操作表而直接访问缓存结果了。这里最主要的问题是,对于程序员来说,这个事情是很容易被忽略的。因为,我们某些查询语句会让MySQL不使用缓存。CURDATE(), NOW()...

2018-03-23 12:25:30 181

原创 SpringBoot统一异常处理

我们在做Web应用的时候,请求处理过程中发生错误是非常常见的情况。Spring Boot提供了一个默认的映射:/error,当处理中抛出异常之后,会转到该请求中处理,并且该请求有一个全局的错误页面用来展示异常内容。启动应用,访问一个不存在的URL,或是修改处理内容,直接抛出异常,如:@RequestMapping("/hello")public String hello() throws Exc...

2018-03-22 11:02:43 158

springcloud负载均衡

springcloud负载均衡和zuul路由功能,zuul的过滤功能等

2018-03-12

spring boot项目

springboot分环境配置文件,分环境日志,集成redis,springSecurity,webservice等

2018-03-12

springboot入门项目

spring boot 架构入门,集成redis ,分环境日志配置,以及分环境配置文件

2018-03-05

spring-cloud实战源码

spring cloud框架入门,注册中心,路由功能,普通服务项目搭建

2018-03-05

空空如也

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

TA关注的人

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