![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java技术
文章平均质量分 73
hello酷狗青春
你不勇敢,没人替你坚强。
展开
-
LVS集群中的IP负载均衡技术详解
1. 前言本文在分析服务器集群实现虚拟网络服务的相关技术上,详细描述了LVS集群中实现的三种IP负载均衡技术(VS/NAT、VS/TUN和VS/DR)的工作原理,以及它们的优缺点。2. 基于IP层负载均衡调度的解决方法用户通过虚拟IP地址(Virtual IPAddress)访问服务时,访问请求的报文会到达负载调度器,由它进行负...转载 2019-03-23 10:21:37 · 260 阅读 · 0 评论 -
IntelliJ Idea 常用快捷键列表
Alt+回车 导入包,自动修正Ctrl+N 查找类Ctrl+Shift+N 查找文件Ctrl+Alt+L 格式化代码Ctrl+Alt+O 优化导入的类和包Alt+Insert 生成代码(如get,set方法,构造函数等)Ctrl+E或者Alt+Shift+C 最近更改的代码Ctrl+R 替换文本Ctrl+F ...原创 2019-03-26 11:07:44 · 100 阅读 · 0 评论 -
深入解析ThreadLocal底层实现原理
学习Java中常用的开源框架,Mybatis、Hibernate中设计到线程通过数据库连接对象Connection,对其数据进行操作,都会使用ThreadLocal类来保证Java多线程程序访问和数据库数据的一致性问题。就想深入了解一下ThreadLocal类是怎样确保线程安全的!详解如下:一、对其Threa...原创 2019-03-26 11:03:21 · 183 阅读 · 0 评论 -
为什么要重载equal和hashCode方法
equals()是用来判断两个对象或变量具体的值是否相等。基础类型判断是否相等时,使用“==”来判断,按java的说话,“==”当用来判断是基础类型是判断内容的,而引用对象是判断内存地址的。hashCode()是用来产生哈希玛的,该方法返回该对象的哈希码值,而哈希玛是用来在散列存储结构中确定对象的存储地址的...原创 2019-03-22 10:01:25 · 545 阅读 · 0 评论 -
Nginx与apache比较
为什么Nginx的性能要比Apache高得多?这得益于Nginx使用了最新的epoll(Linux 2.6内核)和kqueue(freebsd)网络I/O模型,而Apache则使用的是传统的select模型。目前Linux下能够承受高并发访问的Squid、Memcac...原创 2019-03-22 09:37:42 · 329 阅读 · 0 评论 -
深入理解Servlet线程安全问题
前言 在上一篇关于Serlvet框架和Servlet生命周期的学习中,我们...转载 2019-03-22 09:22:14 · 192 阅读 · 0 评论 -
分布式存储系统设计的若干原则
1、CAP理论2000年Eric Brewer教授提出了著名的CAP理论,即:一个分布式系统不可能满足一致性,可用性和分区容错性这三个需求,最多只能同时满足两个。2002年MIT的Seth Gilbert 和 Nancy lynch两人证明了CAP理论的正确性。根据CAP理论,一致性(C),可用性(A),分区容错性(P),三者不可兼得,必须...转载 2019-03-22 09:15:54 · 290 阅读 · 0 评论 -
spring 五个事务隔离级别和七个事务传播行为
Spring在TransactionDefinition接口中定义了五个不同的事务隔离级别ISOLATION_DEFAULT 这是一个PlatfromTransactionManager默认的隔离级别,使用数据库默认的事务隔离级别.另外四个与JDBC的隔离级别相对应 ISOLATION_READ_UNCOMMITTE...转载 2019-03-22 09:07:35 · 103 阅读 · 0 评论 -
synchronized 和Lock 的异同
主要相同点: Lock能完成synchronized所实现的所有功能主要不同点:Lock有比synchronized更精确的线程语义和更好的性能。synchronized会自动释放锁,而Lock一定要求程序员手工释放,并且必须在finally从句中释放...原创 2019-03-22 09:04:53 · 143 阅读 · 0 评论 -
Ajax+Spring MVC实现跨域请求(JSONP)
背景:AJAX向后台(springmvc)发送请求,报错:已阻止交叉源请求:同源策略不允许读取 http://127.0.0.1:8080/DevInfoWeb/getJsonp 上的远程资源。可以将资源移动到相同的域名上或者启用 CORS 来解决这个问题。百度一下,发现是遇到了跨域请求请求问题。搜集资料如下JSONP解释在解释JSONP之前,我们需要了解下”同源策略“这个概念,这对理解...转载 2019-03-26 13:53:35 · 149 阅读 · 0 评论 -
String s=new String("abc")创建了几个对象?
String str=new String(“abc”); 紧接着这段代码之后的往往是这个问题,那就是这行代码究竟创建了几个String对象呢?相信大家对这道题并不陌生,答案也是众所周知的,2个。接下来我们就从这道题展开,一起回顾一下与创建String对象相关的一些JAVA知识。 我们可以把上面这行代码分成String str、=、”abc”和new String()四部分来看待。St...转载 2019-03-26 14:32:48 · 449 阅读 · 0 评论 -
Linux负载均衡LVS原理技术详细讲解
一. LVS主从工作原理LVS在基本的生产环境中,都会同时运行在二台硬件相近的服务器上:LVS Router(主 LVS ),一个作为备份LVS(备份 LVS )。主 LVS 服务器在网站的前端起二个作用:(1. 均衡负载压力到真实服务器(如apache)上.(2. 检查后面真实服务器提供的服务是否正常.备份LVS 用来监控主LV...转载 2019-03-23 10:19:22 · 168 阅读 · 0 评论 -
三大WEB服务器对比分析Apache、Lighttpd、Nginx
一、软件介绍(apache lighttpd nginx)1、lighttpd Lighttpd是一个具有非常低的内存开销,cpu占用率低,效能好,以及丰富的模块等特点。lighttpd是众多OpenSource轻量级的web server中较为优秀的一个。支持FastCGI,CGI,Auth,输出压缩(out...转载 2019-03-23 09:39:11 · 209 阅读 · 0 评论 -
负载均衡(LVS/HAProxy/Nginx)简介和对比
在网站发展的趋势对网络负载均衡的使用是随着网站规模的提升根据不同的阶段来使用不同的技术:一种是通过硬件来进行进行,常见的硬件有比较昂贵的NetScaler、F5、Radware和Array等商用的负载均衡器,它的优点就是有专业的维护团队来对这些服务进行维护、缺点就是花销太大,所以对于...转载 2019-03-23 09:30:13 · 267 阅读 · 0 评论 -
HTTP 状态码
在网站建设的实际应用中,容易出现很多小小的失误,就像MySQL当初优化不到位,影响整体网站的浏览效果一样,其实,网站的常规HTTP状态码的表现也是一样,Google无法验证网站几种解决办法,提及到由于404状态页面设置不正常,导致了Google管理员工具无法验证的情况,当然,影响的不仅仅是这一方面,影响的更是网站的整体浏览效果。因此,比较清...转载 2019-03-23 09:15:57 · 254 阅读 · 0 评论 -
浏览器缓存相关的HTTP头介绍:Expires,Cache-Control,Last-Modified,ETag
缓存对于Web开发有重要作用,尤其是大负荷Web系统开发中。缓存分很多种:服务器缓存,第三方缓存,浏览器缓存等。其中浏览器缓存是代价最小的,因为浏览器缓存依赖的是客户 端,而几乎不耗费服务器端的资源。让浏览器做缓存需要给浏览器发送指定的Http头,告诉浏览器缓存多长时间,或者坚决不要缓存。1.Expires(过期时间)HTTP头信息...转载 2019-03-23 09:12:50 · 722 阅读 · 0 评论 -
大话设计模式之设计模式遵循的七大原则
最近几年来,人们踊跃的提倡和使用设计模式,其根本原因就是为了实现代码的复用性,增加代码的可维护性。设计模式的实现遵循了一些原则,从而达到代码的复用性及增加可维护性的目的,设计模式对理解面向对象的三大特征有很好的启发,不看设计模式,很难深层地体会到面向对象开发带来的好处 。在刚开始学习中,很难做到将这些模式融汇贯通,所以这个需要我们在编码前多...转载 2019-03-23 09:07:53 · 151 阅读 · 0 评论 -
Java开源数据库连接池比较(c3p0,dbcp,druid)
DBCP DBCP是一个依赖Jakarta commons-pool对象池机制的数据库连接池.DBCP可以直接的在应用程序用使用可以设置最大和最小连接,连接等待时间等,基本功能都有,此连接池的持续运行的稳定性还是可以,不过速度稍慢,在大并发量的压力下稳定性有所下降,此外不提供连接池监控C3P0 C3P0是一个开放源代码的JDBC连接池,它在lib目录中与Hibernate一起发布,包括了实现j...转载 2019-03-23 09:07:30 · 501 阅读 · 1 评论 -
HashMap的工作原理详解-面试最佳答案
HashMap的工作原理是近年来常见的Java面试题。几乎每个Java程序员都知道HashMap,都知道哪里要用HashMap,知道HashTable和HashMap之间的区别,那么为何这道面试题如此特殊呢?是因为这道题考察的深度很深。这题经常出现在高级或中高级面试中。投资银行更喜欢问这个问题,甚至会要求你实现HashMap来考察你的编程...原创 2019-03-23 10:33:01 · 177 阅读 · 0 评论 -
阿里大神总结的分布式系统稳定性模式
小邪讲的培训的内容,对集群大访问量的应用很有针对性的一些注意点。1.隔离。 发生问题,能控制在一个小的范围。 物理隔离/虚拟(容器,实例,VM)隔离/流控2.内存溢出。 代码细节,数据量,进程数控制。3.预估数量,阀值控制。 远程获取的变量需谨慎处理4.超时 QPS = 1000ms / rt(timeOutAvg) * threa...转载 2019-03-23 10:24:59 · 401 阅读 · 0 评论 -
Collection 和 Collections的区别
Collection是集合类的上级接口,继承与他的接口主要有Set 和List.Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。...原创 2019-03-22 09:03:03 · 103 阅读 · 0 评论 -
Hashtable 和 HashMap之间的区别
Hashtable是继承了Dictionary,是线程安全的。HashMap实现了Map接口,不是线程安全的。HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。HashMap允许将null作为一个entry的key或者value,而Hashta...原创 2019-03-22 09:01:37 · 111 阅读 · 0 评论 -
ArrayList,LinkedList, Vector三者的区别
LinkedList内部以链表形式存储数据ArrayList内部以数组形式存储数据。Vector同ArrayList,不过它与ArrayList比较起来是线程安全的。ArrayList 和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使...原创 2019-03-22 08:59:39 · 88 阅读 · 0 评论 -
Tomcat Host组件
Tomcat Host组件Tomcat Host组件在Tomcat中代表一个“Virtual Host”,使Tomcat可以在单个Tomcat实例中支持多个“Virtual Host”,这样,我们也就可以知道一个Engine可以包含多个Host组件。Host组件包含两个主要的Valve,一个Valve决定请求由哪一个Context处理...转载 2019-03-25 09:49:10 · 396 阅读 · 0 评论 -
Tomcat Wrapper组件
Tomcat Wrapper组件一些基本概念1、ServletContext:作用:表示一个web应用的上下文;可以想象成一个Web应用程序的共享数据区域,该区域保存该Web应用程序的共享数据;生命周期:每个Web应用程序都对应一个ServletContext,保存在Context中,在Context初始化时创建,Context...转载 2019-03-25 09:48:39 · 232 阅读 · 0 评论 -
Java序列化的机制和原理
序列化是什么:序列化就是将一个对象的状态(各个属性量)保存起来,然后在适当的时候再获得。序列化分为两大部分:序列化和反序列化。序列化是这个过程的第一部分,将数据分解成字节流,以便存储在文件中或在网络上传输。反序列化就是打开字节流并重构对象。把Java对象转换为字节序列的过程称为对象的序列化。把字节序列恢复为Java对象的过程称为对象的...转载 2019-03-25 09:47:57 · 206 阅读 · 0 评论 -
Java多线程之线程池深入分析(下)
一、数据结构与线程构造方法由于已经看到了ThreadPoolExecutor的源码,因此很容易就看到了ThreadPoolExecutor线程池的数据结构。图1描述了这种数据结构。图1 ThreadPoolExecutor 数据结构其实,即使没有上述图形描述ThreadPoolExecutor的数据结构,我们根据线程池的要...转载 2019-03-25 09:46:51 · 139 阅读 · 1 评论 -
【JAVA秒会技术之秒懂HTTPS】白话图解HTTPS原理
白话图解HTTPS原理 【前言】最近看过几篇文章,内容是关于“全民HTTPS”的。为什么HTTPS,突然会受到如此多业内人士的青睐呢?HTTPS究竟是什么呢?它与HTTP又有怎样的区别呢? 带着这个问题,我查看了很多网上的资料,但是太多的专业词汇,让我感到头...转载 2019-03-21 17:45:12 · 215 阅读 · 0 评论 -
Maven项目中如何同时Install成JAR和WAR包
&nbs...转载 2019-03-20 10:41:42 · 1153 阅读 · 0 评论 -
Java多线程之线程池深入分析(下)
一、数据结构与线程构造方法由于已经看到了ThreadPoolExecutor的源码,因此很容易就看到了ThreadPoolExecutor线程池的数据结构。图1描述了这种数据结构。图1 ThreadPoolExecutor 数据结构其实,即使没有上述图形描述ThreadPoolExecutor的数据结构,我们根据线程池的要...转载 2019-03-21 08:56:58 · 148 阅读 · 0 评论 -
Java多线程之线程池深入分析(上)
线程池是并发包里面很重要的一部分,在实际情况中也是使用很多的一个重要组件。下图描述的是线程池API的一部分。广义上的完整线程池可能还包括Thread/Runnable、Timer/TimerTask等部分。这里只介绍主要的和高级的API以及架构和原理。大多数并发应用程序是围绕执行任务(Task)进行管理的。所谓任务就是抽象、离散...转载 2019-03-25 09:46:08 · 133 阅读 · 0 评论 -
深入理解ConcurrentHashMap原理分析以及线程安全性问题
ConcurrentHashMap与HashTable区别?HashTableput()源代码从代码可以看出来在所有put 的操作的时候 都需要用 synchronized 关键字进行同步。并且key 不能为空。这样相当于每次进行put 的时候都会进行同步 当10个线程同步进行操作的时候,就会发现当第一个线程进去 其他线程必须等待第一个线程执行完成,才可以进行下去。性能特别差。Cu...转载 2019-03-25 09:45:37 · 1127 阅读 · 0 评论 -
Tomcat Engine组件
Tomcat Engine组件Tomcat Engine组件是一个职责相当简单的组件,他的主要作用就是决定从Connecter过来的请求应该交给哪一个Host来处理。在本文中,我们将会简单介绍下Tomcat的Engine组件的功能,backgroundProcess()方法,以及和Engine组件相关的几个Valve。一、Engi...转载 2019-03-25 09:49:42 · 364 阅读 · 0 评论 -
Tomcat Connector组件
Tomcat Connector组件Tomcat Connector是Tomcat中的一个重要的组件,它负责监听到达Tomcat的请求,并将这些 请求转换成Servlet规范中所定义的Request,然后将转换后的请求交给Engine组件去处理,最后将Engine返回的Response返回给客户端。1.Connector组件的主要请求处...转载 2019-03-25 09:50:09 · 159 阅读 · 1 评论 -
String, StringBuffer, StringBuilder三者区别
String 字符串常量StringBuffer 字符串变量(线程安全)StringBuilder 字符串变量(非线程安全)简要的说,String 类型和 StringBuffer 类型的主要性能区别其实在于 String是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,...原创 2019-03-22 08:58:06 · 82 阅读 · 0 评论 -
深入讲解HashMap
HashMap先从构造函数讲起吧HashMap有很多个构造函数,不过我们比较常用的是不带参数的默认构造函数,其源代码如下:[java] view plaincopyprint?public HashMap() { &nb...转载 2019-03-21 19:49:49 · 95 阅读 · 0 评论 -
正则表达式语法介绍
字符集合 说明 ^ 匹配输入字符串的开始位置。要匹配 "^" 字符本身,请使用 "\^" $ &nb...转载 2019-03-21 19:39:45 · 151 阅读 · 0 评论 -
ThreadPoolExecutor线程池类工作原理详解
ThreadPoolExecutor的工作机制: 整个ThreadPoolExecutor的任务处理有4步操作: 第一步,初始的poolSize < corePoolSize,提交的runnable任务,会直接做为new一个Thread的参数,立马执行第二步,当提交的任务数超过了corePo...原创 2019-03-21 19:33:26 · 87 阅读 · 0 评论 -
详解UML中的6大关系(关联、依赖、聚合、组合、泛化、实现)
UML定义的关系主要有六种:依赖、类属、关联、实现、聚合和组合。这些类间关系的理解和使用是掌握和应用UML的关键,而也就是这几种关系,往往会让初学者迷惑。这里给出这六种主要UML关系的说明和类图描述,一看之下,清晰明了;以下就分别介绍这几种关系:继承【dependency】指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父...转载 2019-03-21 19:25:52 · 458 阅读 · 0 评论 -
Tomcat 工作原理
1 - Tomcat Server的组成部分 1.1 - Server A Server element represents the entire Catalina servlet container. (Singleton)1.2 - Service A Service element represents the comb...转载 2019-03-21 19:21:11 · 75 阅读 · 0 评论