![](https://img-blog.csdnimg.cn/20190918140158853.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
JAVA
文章平均质量分 91
JAVA技术
小小角色熊
横看成岭侧成峰,远近高低各不同
展开
-
localStorage、sessionStorage、Cookie
知识点1:localStorage和sessionStorage的区别; localStorage生命周期是永久,这意味着除非用户显示在浏览器提供的UI上清除localStorage信息,否则这些信息将永远存在。 sessionStorage生命周期为当前窗口或标签页,一旦窗口或标签页被永久关闭了,那么所有通过sessionStorage存储的数据也就被清空了。 localStorage的方...原创 2019-01-24 10:04:14 · 122 阅读 · 0 评论 -
单体架构,SOA架构,微服务架构,分布式架构,集群架构
单体架构什么是单体架构一个归档包(例如war格式或者Jar格式)包含了应用所有功能的应用程序,我们通常称之为单体应用。架构单体应用的方法论,我们称之为单体应用架构,这是一种比较传统的架构风格。。单体架构示例图QQ截图20180517151958.png单体架构的缺陷1.复杂性高整个项目包含的模块非常多,模块的边界模糊,依赖关系不清晰,代码质量参差不齐,整个项目非常复杂...原创 2019-01-20 19:46:21 · 11584 阅读 · 1 评论 -
ActiveMQ
一.背景介绍1.1 java消息服务:不同系统之间的信息交换,是我们开发中比较常见的场景,比如系统A要把数据发送给系统B,这个问题我们应该如何去处理? 1999年,原来的SUN公司领衔提出了一种面向消息的中间件服务--JMS规范(标准);常用的几种信息交互技术(httpClient、hessian、dubbo、jms、webservice 五种).1.2JMS概述:JMS即Java...原创 2019-01-23 15:50:20 · 151 阅读 · 0 评论 -
ActiveMQ---知识点整理
一.背景介绍1.1 java消息服务:不同系统之间的信息交换,是我们开发中比较常见的场景,比如系统A要把数据发送给系统B,这个问题我们应该如何去处理? 1999年,原来的SUN公司领衔提出了一种面向消息的中间件服务--JMS规范(标准);常用的几种信息交互技术(httpClient、hessian、dubbo、jms、webservice 五种).1.2JMS概述:JMS即Java...原创 2019-02-20 10:31:08 · 1558 阅读 · 0 评论 -
redis分布式锁(高并发)
redis分布式锁(高并发)redis是天生单线程特性,的内存缓存服务器,当有多个线程同时访问一台redis服务器时,redis会在内部对线程进行排队。所以redis可以用此特性进行分布式锁。 高并发的场景下,redis分布式锁很可能永久失效。 redis分布式锁使用了cas算法原理。 synchronized时jvm级别的锁,当项目采用集群部署的时候必须采用分布式锁。才能保证线程安全。...原创 2019-09-14 21:10:17 · 1539 阅读 · 0 评论 -
Git、GitHub、GitLab
在讲区别以及联系之前先简要的介绍一下,这三者都是什么(本篇文章适合刚入门的新手,大佬请出门左转)1.什么是 Git?Git 是一个版本控制系统。版本控制是一种用于记录一个或多个文件内容变化,方便我们查阅特定版本修订情况的系统。以前在没有使用版本控制的时候,我们通常在我们的项目根目录下这样命名项目:project_v1、project_v1.1、project_v2等等,通过这种...原创 2019-01-23 10:07:58 · 119 阅读 · 0 评论 -
安装docker
Docker从1.13版本之后采用时间线的方式作为版本号,分为社区版CE和企业版EE。社区版是免费提供给个人开发者和小型团体使用的,企业版会提供额外的收费服务,比如经过官方测试认证过的基础设施、容器、插件等。社区版按照stable和edge两种方式发布,每个季度更新stable版本,如17.06,17.09;每个月份更新edge版本,如17.09,17.10。一、安装docker...原创 2019-03-19 14:09:55 · 90 阅读 · 0 评论 -
Lombo使用
1 Lombok背景介绍官方介绍如下:Project Lombok makes java a spicier language by adding 'handlers' that know how to build and compile simple, boilerplate-free, not-quite-java code.大致意思是Lombok通过增加一些“处理程序”,可以让...原创 2019-04-14 12:46:06 · 1437 阅读 · 0 评论 -
RPC服务和HTTP服务对比
很长时间以来都没有怎么好好搞清楚RPC(即Remote Procedure Call,远程过程调用)和HTTP调用的区别,不都是写一个服务然后在客户端调用么?这里请允许我迷之一笑~Naive!本文简单地介绍一下两种形式的C/S架构,先说一下他们最本质的区别,就是RPC主要是基于TCP/IP协议的,而HTTP服务主要是基于HTTP协议的,我们都知道HTTP协议是在传输层协议TCP之上的,所以效率来看...原创 2019-01-20 16:49:29 · 151 阅读 · 0 评论 -
SOA总线架构
前一阵换了份工作,来到新公司,恰好新同事问起SOA是什么,我随口说了几点,其实自己以前研究过,不过并没有详细的整理过,说的比较模糊,恰好周末,拿出点时间整理下以前对SOA的认知。 SOA是什么?SOA全英文是Service-Oriented Architecture,中文意思是中文面向服务编程,是一种思想,一种方法论,一种分布式的服务架构(具体可以百度)。 用途:SOA...原创 2019-01-29 19:11:59 · 1307 阅读 · 0 评论 -
跨域的相关概念
什么是跨域跨域是指从一个域名的网页去请求另一个域名的资源。比如从www.baidu.com 页面去请求 www.google.com 的资源。跨域的严格一点的定义是:只要协议,域名,端口有任何一个的不同,就被当作是跨域为什么浏览器要限制跨域访问呢?原因就是安全问题:如果一个网页可以随意地访问另外一个网站的资源,那么就有可能在客户完全不知情的情况下出现安全问题。比如下面的操作就有安全问...原创 2019-03-13 10:28:50 · 398 阅读 · 0 评论 -
SpringBoot2.0 用WebServerFactoryCustomizer 设置端口号
//SpringBoot1.5.x@Beanpublic EmbeddedServletContainerCustomizer embeddedServletContainerCustomizer(){ return new EmbeddedServletContainerCustomizer() { @Override public void cus...原创 2019-03-11 11:26:25 · 2005 阅读 · 0 评论 -
SpringBoot整合Swagger2
相信各位在公司写API文档数量应该不少,当然如果你还处在自己一个人开发前后台的年代,当我没说,如今为了前后台更好的对接,还是为了以后交接方便,都有要求写API文档。手写Api文档的几个痛点:文档需要更新的时候,需要再次发送一份给前端,也就是文档更新交流不及时。 接口返回结果不明确 不能直接在线测试接口,通常需要使用工具,比如postman 接口文档太多,不好管理Swagg...原创 2019-04-14 20:35:46 · 149 阅读 · 0 评论 -
EmbeddedServletContainerCustomizer in spring boot 2.0
Spring Boot2.0以上版本EmbeddedServletContainerCustomizer被WebServerFactoryCustomizer替代https://stackoverflow.com/questions/49406779/embeddedservletcontainercustomizer-in-spring-boot-2-0原创 2019-03-10 16:29:15 · 522 阅读 · 0 评论 -
SpringBoot配置项目访问路径server.context-path不起作用
启动项目可以看到控制台信息:设置的端口号起作用了,但是项目访问路径却不起作用。上下文的配置改为了server.servlet.context-path属性文件中将server.context-path改为server.servlet.context-path重启项目,这时配置起作用了,如下图所示:查看官方文档,项目访问路径配置为server.servlet.context-path...原创 2019-03-04 20:48:48 · 4613 阅读 · 0 评论 -
Spring Data JPA
Spring Data是什么Spring Data是一个用于简化数据库访问,并支持云服务的开源框架。其主要目标是使得对数据的访问变得方便快捷,并支持map-reduce框架和云计算数据服务。 Spring Data 包含多个子项目:Commons - 提供共享的基础框架,适合各个子项目使用,支持跨数据库持久化JPA - 简化创建 JPA 数据访问层和跨存储的持久层功能Hadoop ...原创 2019-03-13 17:00:56 · 142 阅读 · 0 评论 -
spring cache 详解
缓存简介缓存,我的理解是:让数据更接近于使用者;工作机制是:先从缓存中读取数据,如果没有再从慢速设备上读取实际数据(数据也会存入缓存);缓存什么:那些经常读取且不经常修改的数据/那些昂贵(CPU/IO)的且对于相同的请求有相同的计算结果的数据。如CPU--L1/L2--内存--磁盘就是一个典型的例子,CPU需要数据时先从L1/L2中读取,如果没有到内存中找,如果还没有会到磁盘上找。还有如用过M...原创 2019-03-15 16:18:29 · 1235 阅读 · 0 评论 -
Spring的EL表达式
SpEL简介在Spring3中就已经支持EL表达式了,Spring Expression Language(SpEL)是类似于OGNL和JSF EL的表达式语言, 能够在运行时构建复杂表达式, 存取对象属性、调用对象方法等, 而且所有的SpEL都支持XML和Annotation两种方式, 使用的格式均为:#{SpEL expression}. 比如在XML中使用的例子:<bean...原创 2019-03-15 10:18:53 · 558 阅读 · 0 评论 -
Mybatis逻辑分页原理解析RowBounds
Mybatis提供了一个简单的逻辑分页使用类RowBounds(物理分页当然就是我们在sql语句中指定limit和offset值),在DefaultSqlSession提供的某些查询接口中我们可以看到RowBounds是作为参数用来进行分页的,如下接口: public <E> List<E> selectList(String statement, Object pa...原创 2019-09-26 16:05:09 · 505 阅读 · 0 评论 -
Spring cloud 2下使用Feign找不到@EnableFeignClients的解决办法
最近在实践Spring Boot 2+Spring Cloud(Finchley.M9),在用到Feign的时候发现@EnableFeignClients注解开不了,独立使用Feign是可以的,但就是开启不了Spring对Feign的支持.经过一番摸索终于把问题解决了,在这里分享一下解决方案和思路.解决思路写得较繁琐,可以选择性阅读,结论和解决方案写在前面0. 结论和解决方案Spring C...原创 2019-04-12 16:32:58 · 795 阅读 · 0 评论 -
关于synchronized、wait、notify已经notifyAll的使用
前言:关于synchronized、wait、notify已经notifyAll大家应该不陌生,现在我大致说一下我的理解。一:synchronizedsynchronized中文解释是同步,那么什么是同步呢,解释就是程序中用于控制不同线程间操作发生相对顺序的机制,通俗来讲就是2点,第一要有多线程,第二当多个线程同时竞争某个资源的时候会有先后顺序。在java中有三种写synchroniz...原创 2019-08-04 16:19:59 · 264 阅读 · 0 评论 -
springSecurity原理
最近在公司的项目中使用了springsecurity框架,所以有机会来学习一下,公司的项目是使用springboot搭建springBoot版本1.59spring security版本4.2.3(个人理解可能会有偏差,希望有不正确之处,大家能够指出来,共同探讨交流。)一、Spring security框架简介1、简介一个能够为基于Spr...原创 2019-05-16 14:07:26 · 2199 阅读 · 0 评论 -
Spring Security OAuth 2.0
续·前一篇《OAuth 2.0》OAuth 2.0 Provider 实现在OAuth 2.0中,provider角色事实上是把授权服务和资源服务分开,有时候它们也可能在同一个应用中,用Spring Security OAuth你可以选择把它们分成两个应用,当然多个资源服务可以共享同一个授权服务。获取token的请求由Spring MVC的控制端点处理,访问受保护的资源由标准的Spri...原创 2019-05-12 19:12:38 · 289 阅读 · 0 评论 -
OAuth 2.0
The OAuth 2.0 Authorization FrameworkOAuth 2.0授权框架支持第三方支持访问有限的HTTP服务,通过在资源所有者和HTTP服务之间进行一个批准交互来代表资源者去访问这些资源,或者通过允许第三方应用程序以自己的名义获取访问权限。为了方便理解,可以想象OAuth2.0就是在用户资源和第三方应用之间的一个中间层,它把资源和第三方应用隔开,使得第三方应用无...原创 2019-05-12 19:14:52 · 244 阅读 · 0 评论 -
java中的“回车”与“换行”
回车和换行 '\r'是回车,'\n'是换行,前者使光标到行首,后者使光标下移一格。通常用的Enter是两个加起来。今天,我总算搞清楚“回车”(carriage return)和“换行”(line feed)这两个概念的来历和区别了。 在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0....转载 2018-02-13 10:21:47 · 1205 阅读 · 1 评论 -
Java内存和GC机制
Java垃圾回收概况 Java GC(Garbage Collection,垃圾收集,垃圾回收)机制,是Java与C++/C的主要区别之一,作为Java开发者,一般不需要专门编写内存回收和垃圾清理代 码,对内存泄露和溢出的问题,也不需要像C程序员那样战战兢兢。这是因为在Java虚拟机中,存在自动内存管理和垃圾清扫机制。概括地说,该机制对 JVM(Java Virtual Machine)中的内存...原创 2018-02-13 11:05:22 · 129 阅读 · 0 评论 -
java四类八种基本数据类型
java基本数据类型就8种。除了这些都是引用型的了。 java四类八种基本数据类型第一类:整型 byte short int long 第二类:浮点型 float double第三类:逻辑型 boolean(它只有两个值可取true false)第四类:字符型 char 在栈中可以直接分配内存的数据是基本数据类型。 引用数据类型:是数据的引用在栈中,但是他的对象在堆中。 要想学好Java必须知道各...原创 2018-02-21 15:20:01 · 172 阅读 · 0 评论 -
java 内部类和静态内部类的区别
下面说一说内部类(Inner Class)和静态内部类(Static Nested Class)的区别:定义在一个类内部的类叫内部类,包含内部类的类称为外部类。内部类可以声明public、protected、private等访问限制,可以声明 为abstract的供其他内部类或外部类继承与扩展,或者声明为static、final的,也可以实现特定的接口。外部类按常规的类访问方式使用内部 类,唯一...原创 2019-01-20 14:32:46 · 170 阅读 · 0 评论 -
详细讲解JAVA中的IO流
一、流的概念 流(stream)的概念源于UNIX中管道(pipe)的概念。在UNIX中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备、外部文件等。 一个流,必有源端和目的端,它们可以是计算机内存的某些区域,也可以是磁盘文件,甚至可以是Internet上的某个URL。 流的方向是重要的,根据流的方向,流可分为两类:输入流和输出流。用户可...原创 2018-02-12 10:23:40 · 239 阅读 · 0 评论 -
TCP和UDP的区别和优缺点
1、TCP与UDP区别总结:1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付Tcp通过校验和,重传控制,序号标识,滑动窗口、确认应答实现可靠传输。如丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制。3、...原创 2019-04-09 10:16:35 · 166 阅读 · 0 评论 -
Synchronized的原理及自旋锁,偏向锁,轻量级锁,重量级锁的区别
在多线程并发编程中Synchronized一直是元老级角色,很多人都会称呼它为重量级锁,但是随着Java SE1.6对Synchronized进行了各种优化之后,有些情况下它并不那么重了,Java SE1.6中为了减少获得锁和释放锁带来的性能消耗而引入的偏向锁和轻量级锁,以及锁的存储结构和升级过程。锁从宏观上分类,分为悲观锁与乐观锁。乐观锁乐观锁是一种乐观思想,即认为读多写少,遇...原创 2019-09-17 17:37:17 · 813 阅读 · 0 评论 -
Java中的ThreadLocal
ThreadLocal介绍&跳出误区看看源码线程独享变量?ThreadLocal介绍&跳出误区 ThreadLocal一般称为线程本地变量,它是一种特殊的线程绑定机制,将变量与线程绑定在一起,为每一个线程维护一个独立的变量副本。通过ThreadLocal可以将对象的可见范围限制在同一个线程内。跳出误区 需要重点强调的的是,不要拿ThreadLocal和s...原创 2018-12-06 17:18:32 · 129 阅读 · 0 评论 -
java内存管理
java内存管理简介 首先我们要了解我们为什么要学习java虚拟机的内存管理,不是java的gc垃圾回收机制都帮我们释放了内存了吗?但是在写程序的过程中却也往往因为不懂内存管理而造成了一些不容易察觉到的内存问题,并且在内存问题出现的时候,也不能很快的定位并解决。因此,了解并掌握Java的内存管理是我们必须要做的是事,也只有这样才能写出更好的程序,更好地优化程序的性能。概述 Java虚...原创 2019-01-23 10:52:10 · 263 阅读 · 0 评论 -
JAVA的Random类
Random类 (java.util) Random类中实现的随机算法是伪随机,也就是有规则的随机。在进行随机时,随机算法的起源数字称为种子数(seed),在种子数的基础上进行一定的变换,从而产生需要的随机数字。相同种子数的Random对象,相同次数生成的随机数字是完全相同的。也就是说,两个种子数相同的Random对象,第一次生成的随机数字完全相同,第二次生成的随机数字也完全相同。...原创 2018-02-23 11:18:06 · 306 阅读 · 0 评论 -
java深拷贝浅拷贝
将一个对象的引用复制给另外一个对象,一共有三种方式。第一种方式是直接赋值,第二种方式是浅拷贝,第三种是深拷贝。所以大家知道了哈,这三种概念实际上都是为了拷贝对象啊。 1、直接赋值好,下面我们先看第一种方式,直接赋值。在Java中,A a1 = a2,我们需要理解的是这实际上复制的是引用,也就是说a1和a2指向的是同一个对象。因此,当a1变化的时候,a2里面的成员变量也会跟着变化。各位,...原创 2018-12-06 17:47:00 · 121 阅读 · 0 评论 -
java中转义字符和路径符
在Java的实际开发中,经常会遇填写一个文件的相对路径或者是绝对路径的问题,对于初学者来说,经常犯难的是到底是用\ 还是用/的问题,本文将彻底解决这个问题的困扰.先来看要下路径符号在windows系统和再Linux系统写的显示使用的区别: Windows下的路径: Linux下的路径: 对比可以发现:windows使用的是\ linux使用的是/ 然而在java的代码开发中\...原创 2019-01-27 12:39:43 · 4841 阅读 · 1 评论 -
java内部类总结 问题:内部类、静态内部类区别、使用场景?
问题:内部类、静态内部类区别、使用场景?1.静态内部类可以有静态成员(方法,属性),而非静态内部类则不能有静态成员(方法,属性)。2.静态内部类只能够访问外部类的静态成员,而非静态内部类则可以访问外部类的所有成员(方法,属性)。3.实例化方式不同:(1)实例化成员内部类“”通过外部类对象创建OutClassTest oc1 = new OutClassTest();OutClassT...原创 2019-01-20 14:59:54 · 1376 阅读 · 0 评论 -
Java中==和equals的区别(详细)
要想充分了解==和equals的区别需要对java的内存有所了解:Java内存模型中存在这两种内存区域:一种是栈内存,一种是堆内存。(注:程序计数器,运行时数据区,永久代,直接内存这里不讨论,因为java对象保存在栈内存(基本数据类型)和堆内存(引用数据类型和包装类)中) 在函数中定义的一些基本类型的变量和对象的引用变量(变量名)都在函数的栈内存中分配。 当在一段代码块定义一个...原创 2019-09-12 21:16:48 · 218 阅读 · 0 评论 -
Java 多线程 并发编程
1、操作系统有两个容易混淆的概念,进程和线程。进程:一个计算机程序的运行实例,包含了需要执行的指令;有自己的独立地址空间,包含程序内容和数据;不同进程的地址空间是互相隔离的;进程拥有各种资源和状态信息,包括打开的文件、子进程和信号处理。线程:表示程序的执行流程,是CPU调度执行的基本单位;线程有自己的程序计数器、寄存器、堆栈和帧。同一进程中的线程共用相同的地址空间,同时共享进进程锁拥有的内...原创 2019-03-18 20:14:45 · 125 阅读 · 0 评论 -
JAVA中的static
static修饰的成员字段:static修饰的成员字段也叫类字段或全局字段,在类被加载时static修饰的成员字段被初始化,与类关联,只要类存在,static字段就存在。一个static字段单独划分一块存储空间,不与具体的对象绑定在一起,该存储空间被类的各个对象所共享。也就是说当声明一个对象时,并不产生static字段的拷贝,而是该类所有的实例对象共用同一个static字段。static修饰的成员...原创 2018-02-21 15:20:52 · 101 阅读 · 0 评论