![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 54
墨染枫林
一路风景,一路歌
展开
-
Docker的作用
Docker 提供轻量的虚拟化,你能够从Docker获得一个额外抽象层,你能够在单台机器上运行多个Docker微容器,而每个微容器里都有一个微服务或独立应用,例如你可以将Tomcat运行在一个Docker,而MySQL运行在另外一个Docker,两者可以运行在同一个服务器,或多个服务器上。未来可能每个应用都要Docker化。容器的启动和关闭是非常快速的。Docker目前能够有以下八种用途:...原创 2018-07-23 13:57:57 · 599 阅读 · 0 评论 -
修改Tomcat默认的端口号
1、问题在默认情况下,tomcat的端口是8080,使用了两个tomcat,那么就需要修改其中的一个的端口号才能使得两个同时工作。2、方法改动一那么,如何修改tomcat的端口号呢?首先到安装目录(或者解压目录)下找到conf文件夹,在里面找到server.xml的文件,找到 <Connector port="8080" protocol="HTTP/1.1" ...原创 2018-09-06 11:57:58 · 379 阅读 · 0 评论 -
循环体中break、continue、return、goto、exit的详解
1. breakbreak语句的使用场合主要是switch语句和循环结构。在循环结构中使用break语句,如果执行了break语句,那么就退出循环,接着执行循环结构下面的第一条语句。如果在多重嵌套循环中使用break语句,当执行break语句的时候,退出的是它所在的循环结构,对外层循环没有任何影响。如果循环结构里有switch语句,并且在switch语句中使用了break语句,当执行switc...原创 2018-09-07 09:09:50 · 1917 阅读 · 3 评论 -
浅谈HTTP断点续传原理
断点续传就是从文件上次中断的地方开始重新下载或上传,当下载或上传文件的时候,如果没有实现断点续传功能,那么每次出现异常或者用户主动的暂停,都会去重头下载,这样很浪费时间。所以断点续传的功能就应运而生了。要实现断点续传的功能,需要客户端记录下当前的下载或上传进度,并在需要续传的时候通知服务端本次需要下载或上传的内容片段。下面来简单介绍 HTTP 断点续传的原理:其实断点续传的原理很简单,就是...原创 2018-09-18 10:52:11 · 33579 阅读 · 3 评论 -
LRU算法的实现方式
LRU(least recently used)是将近期最不会访问的数据给淘汰掉,也就是说,当限定的空间已存满数据时,应当把最久没有被访问到的数据淘汰。因为LRU算法简单,存储空间没有被浪费,所以还是用的比较广泛的。实现LRU1.用一个数组来存储数据,给每一个数据项标记一个访问时间戳,每次插入新数据项的时候,先把数组中存在的数据项的时间戳自增,并将新数据项的时间戳置为0并插入到数组中。每次...原创 2018-09-18 11:17:01 · 1332 阅读 · 0 评论 -
Java11的8个新特性
Java11又出新版本了,我还在Java8上停着。不过这也挡不住我对他的热爱,忍不住查看了一下他的新性能,由于自己知识有限,只总结了以下八个特性;1、本地变量类型推断什么是局部变量类型推断?var javastack = "javastack";System.out.println(javastack);大家看出来了,局部变量类型推断就是左边的类型直接使用 var 定义,而不用...原创 2018-09-27 13:30:52 · 49421 阅读 · 51 评论 -
常用的服务发现对比(Consul、zookeeper、etcd、eureka)
本文参考了,下面这篇文章,自己水平有限,请多多交流共同提高。原文:https://www.cnblogs.com/jasontec/p/9651789.html这里就平时经常用到的服务发现的产品进行下特性的对比,首先看下结论:Feature Consul Zookeeper Etcd Eureka 服务健康检查 服务状态,内存,硬盘等 (弱)...原创 2018-11-16 14:38:20 · 4338 阅读 · 0 评论 -
剖析Spring Cloud底层原理
Spring Cloud是目前微服务架构领域的翘楚,给大家谈谈Spring Cloud微服务架构的底层原理。实际上,Spring Cloud是一个全家桶式的技术栈,包含了很多组件。本文先从其最核心的几个组件入手,来剖析一下其底层的工作原理。也就是Eureka、Ribbon、Feign、Hystrix、Zuul这几个组件一、业务场景介绍先来给大家说一个业务场景,假设咱们现在开发一个电商网站,...原创 2018-12-05 19:43:33 · 404 阅读 · 0 评论 -
Bean的加载原理
0. Bean 加载原理加载过程: 通过 ResourceLoader和其子类 DefaultResourceLoader完成资源文件位置定位,实现从类路径,文件系统,url等方式定位功能,完成定位后得到 Resource对象,再交给 BeanDefinitionReader,它再委托给 BeanDefinitionParserDelegate完成bean的解析并得到 BeanDefiniti...原创 2018-12-30 14:20:20 · 803 阅读 · 0 评论 -
分布式、高并发、多线程的区别
当提起这三个词的时候,是不是很多人都认为分布式=高并发=多线程?确实,在一开始接触的时候,不少人都会将三者混淆,误以为所谓的分布式高并发的系统就是能同时供海量用户访问,而采用多线程手段不就是可以提供系统的并发能力吗?实际上,他们三个总是相伴而生,但侧重点又有不同。 什么是分布式?分布式更多的一个概念,是为了解决单个物理服务器容量和性能瓶颈问题而采用的优化手段。该领域需要解决的问题极...原创 2019-01-11 08:31:52 · 441 阅读 · 0 评论 -
Java 12 正式发布
JDK 12 reachedGeneral Availabilityon 19 March 2019. Production-ready binaries under the GPL areavailable from Oracle; binaries from other vendorswill follow shortly.美国当地时间 3 月 19 日,也就是北京时间 20 号 ...原创 2019-03-21 09:12:22 · 316 阅读 · 0 评论 -
Java读取指定文件夹下所有文件路径
最近有一个合作的大型项目准备上线,需要罗列文件清单。为了提高效率,决定编写一个JAVA程序去读取所有的文件路径。写入指定的文件中,代码及测试截图如下。将代码copy到工程中启动main方法直接测试即可。package demoFile;import java.io.File;import java.io.FileInputStream;import java.io.FileOutput...原创 2019-05-12 15:51:53 · 7527 阅读 · 1 评论 -
springBoot学习笔记(二,快速入门)
Spring Boot快速入门(构建web项目)创建一个maven工程,注意是jar包 导入spring boot相关的依赖 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-par...原创 2019-09-07 23:03:44 · 347 阅读 · 0 评论 -
SpringBoot学习笔记(一,简介)
springBoot简介:Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。快速的将一些常用的第三方依赖整合(原理:通过Maven子父工程的方式)简化XML配置全部采用注解形式,内置Http服务器(Jetty和Tomcat),最终以java应用程...原创 2019-08-13 11:29:02 · 740 阅读 · 0 评论 -
Spring Boot 配置加载顺序
使用 Spring Boot 会涉及到各种各样的配置,如开发、测试、线上就至少 3 套配置信息了。Spring Boot 可以轻松的帮助我们使用相同的代码就能使开发、测试、线上环境使用不同的配置。在 Spring Boot 里面,可以使用以下几种方式来加载配置。本章内容基于 Spring Boot 2.0 进行详解。1、properties文件;2、YAML文件;3、系统环境变量;...原创 2018-09-06 09:10:07 · 228 阅读 · 0 评论 -
maven的作用及优势
作用一:个人理解maven主要是用来解决导入java类依赖的jar,编译java项目主要问题。(最早手动导入jar,使用Ant之类的编译java项目)以pom.xml文件中dependency属性管理依赖的jar包,而jar包包含class文件和一些必要的资源文件。当然它可以构建项目,管理依赖,生成一些简单的单元测试报告,像现在公司的持续集成都广泛的使用maven,当你接触一些项目以后...原创 2018-07-24 10:29:22 · 44924 阅读 · 3 评论 -
事务的四个属性
事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。 一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。 隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的...原创 2018-07-09 11:18:58 · 6996 阅读 · 0 评论 -
中文乱码及解决方案
当sevlet返回js脚本时显示中文乱码的解决方案:可以在servlet中加上response.setContentType(“text/html;charset=utf-8”);servlet中用response有3种设置输出内容的编码方式:1.response.setCharacterEncoding(“UTF-8”); 只能用来设置out输出流中所采用的编码,但是他的优先权最高,可以...原创 2018-06-14 10:55:10 · 264 阅读 · 0 评论 -
Java双亲委派模式及优势
双亲委派模式的工作原理的是;如果一个类加载器收到了类加载请求,它并不会自己先去加载,而是把这个请求委托给父类的加载器去执行,如果父类加载器还存在其父类加载器,则进一步向上委托,依次递归,请求最终将到达顶层的启动类加载器,如果父类加载器可以完成类加载任务,就成功返回,倘若父类加载器无法完成此加载任务,子加载器才会尝试自己去加载,这就是双亲委派模式,即每个儿子都不愿意干活,每次有活就丢给父...原创 2018-05-02 16:17:45 · 20866 阅读 · 5 评论 -
内存溢出和内存泄漏的区别即解决方案
1、内存泄漏:是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄漏似乎不会有大的影响,但内存泄漏堆积后的后果就是内存溢出。2、内存溢出 :指程序申请内存时,没有足够的内存供申请者使用,或者说,给了你一块存储int类型数据的存储空间,但是你却存储long类型的数据,那么结果就是内存不够用,即所谓的内存溢出。3、二者的关系内存泄漏的堆积最终会导致内存溢出 内存溢出就是你要的内存空...原创 2018-05-02 13:41:05 · 633 阅读 · 0 评论 -
理解MVC,MVP和MVVM设计模式
MVC模式:MVC即Model-VIew-Controller。他是1970年代被引入到软件设计大众的。MVC模式致力于关注点的切分,这意味着model和controller的逻辑是不与用户界面(View)挂钩的。因此,维护和测试程序变得更加简单容易。MVC设计模式将应用程序分离为3个主要的方面:Model,View和Controller01.ModelModel代表了描述业务路逻...原创 2018-04-25 10:02:35 · 144 阅读 · 0 评论 -
Nginx -基本功能
Nginx是一个轻量级、高性能、稳定性高、并发性好的HTTP和反向代理服务器。也是由于其的特性,其应用非常广。主要功能反向代理 正向代理:某些情况下,代理我们用户去访问服务器,需要用户手动的设置代理服务器的ip和端口号。 反向代理:是用来代理服务器的,代理我们要访问的目标服务器。 代理服务器接受请求,然后将请求转发给内部网...原创 2018-07-20 18:01:20 · 162 阅读 · 0 评论 -
权限控制框架Shiro的使用
一. Shiro入门ApacheShiro是一个功能强大且易于使用的Java安全框架,提供了认证,授权,加密,和会话管理。Shiro有三大核心组件:Subject:即当前用户,在权限管理的应用程序里往往需要知道谁能够操作什么,谁拥有操作该程序的权利,shiro中则需要通过Subject来提供基础的当前用户信息,Subject 不仅仅代表某个用户,与当前应用交互的任何东西都是Subjec...原创 2018-07-27 10:39:22 · 519 阅读 · 0 评论 -
缓存击穿、缓存并发和缓存雪崩
缓存击穿、缓存并发和缓存雪崩是常见的由于并发量大而导致的缓存问题。缓存击穿通常是由恶意攻击或者无意造成的;缓存并发是由设计不足造成的;缓存雪崩是由缓存同时失效造成的,三种问题都比较典型,也是难以防范和解决的。 缓存击穿缓存击穿指的是使用不存在的key进行大量的高并发查询,这导致缓存无法命中,每次请求都要击穿到后端数据库系统进行查询,使数据库压力过大,甚至使数据库服务被压死。解决...原创 2018-07-23 09:08:11 · 320 阅读 · 0 评论 -
maven与 IDEA 结合
使用 IDEA 时,有的会自带的 Maven,有部分工具会需要你自己去集成,下面就整个集成过程分享一下。 1. 基础配置IDEA 中配置 Maven 的位置如图:指定 Maven home directory 为 E:\Java\apache-maven-3.3.9,即 Maven 所安装的位置。 指定 User settings file 为 E:\Java\a...原创 2018-08-01 13:48:15 · 381 阅读 · 0 评论 -
线程的阻塞、同异步、并行
1. 阻塞,非阻塞 首先,阻塞这个词来自操作系统的线程/进程的状态模型中,如下图: 一个线程/进程经历的5个状态,创建,就绪,运行,阻塞,终止。各个状态的转换条件如上图,其中有个阻塞状态,就是说当线程中调用某个函数,需要IO请求,或者暂时得不到竞争资源的,操作系统会把该线程阻塞起来,避免浪费CPU资源,等到得到了资源,再变成就绪状态,等待CPU调度运行。阻塞调用是指调用结果...原创 2018-08-06 13:44:06 · 241 阅读 · 0 评论 -
进程和线程的理解
一、进程是cpu资源分配的最小单位,线程是cpu调度的最小单位。以前进程既是资源分配也是调度的最小单位,后来为了更合理的使用cpu(实际上是cpu性能越来越好),才将资源分配和调度分开,就有了线程。线程是建立在进程的基础上的一次程序运行单位。进程是应用程序的执行实例。比如说,当你双击的Microsoft Word的图标,你就开始运行的Word的进程。线程是执行进程中的路径。另外,一个过程可...原创 2018-08-06 11:20:25 · 499 阅读 · 0 评论 -
Java类加载器与双亲委派模式的详解
类加载器--加载类的开放性类加载器(ClassLoader)是Java语言的一项创新,也是Java流行的一个重要原因。在类加载的第一阶段“加载”过程中,需要通过一个类的全限定名来获取定义此类的二进制字节流,完成这个动作的代码块就是类加载器。这一动作是放在Java虚拟机外部去实现的,以便让应用程序自己决定如何获取所需的类。虚拟机规范并没有指明二进制字节流要从一个Class文件获取,或者说根本...原创 2018-08-03 10:04:20 · 10088 阅读 · 9 评论 -
Java ArrayList 工作原理及实现
先来一段官方的解释:Resizable-array implementation of the List interface. Implements all optional list operations, and permits all elements, including null. In addition to implementing the List interface, thi...原创 2018-08-12 11:33:42 · 120 阅读 · 0 评论 -
秒杀系统设计时应该考虑的技术点
面对类似秒杀这样在复杂情况下运行的系统,需要考虑很多因素,大概的解决思路从下面几点考虑就可以了。1. 独立部署和原有业务部署在不同服务器,防止高并发拖垮整个网站。2. 页面静态化将商品详情、描述静态化到页面。3. 租借秒杀网络带宽向运营商租借带宽。4. 动态生成随机下单页面URL无法在秒杀前访问下单页面的URL:加入服务器端生成的随机数作为参数,在秒杀开始前才能得到...原创 2018-06-14 17:58:12 · 1071 阅读 · 0 评论 -
简单理解面向切面编程(AOP)
简单理解面向切面编程(AOP) AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。 AOP与OOP是面向不同领域的两种设计思想。 OOP(面向对象编程)针对业务处理过程的实体及其属性和行为进行抽象封装,以获得更加清晰高效的逻辑单元划分。 AOP则是针对业务处理过程中...原创 2018-08-30 16:24:31 · 206 阅读 · 1 评论 -
springBoot学习笔记(三,自动配置的原理)
使用spring Boot开发很方便他会自动配置你需要的组件,那么它是怎么实现自动配的,Spring Boot的项目一般都会有*Application的入口类,入口类中会有main方法,这是一个标准的Java应用程序的入口方法。SpringBoot会自动扫描@SpringBootApplication所在类的同级包以及下级包中的bean(如果是jpa项目还会自动扫描标注@Entity的实体类)...原创 2019-09-08 21:01:31 · 426 阅读 · 0 评论