自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 浅谈Tomcat系统架构

一、Tomcat顶层架构先上一张Tomcat的顶层结构图(图A),如下:Tomcat中最顶层的容器是Server,代表着整个服务器,从上图中可以看出,一个Server可以包含至少一个Service,用于具体提供服务。Service主要包含两个部分:Connector和Container。从上图中可以看出 Tomcat 的心脏就是这两个组件,他们的作用如下:1、Connector...

2019-07-23 13:56:45 141

转载 生产环境下到底该如何部署Tomcat?

一、前言小伙伴们在网上看到的很多文章,都是对Tomcat的一些介绍,什么配置啊,怎么启动。其实在生产环境中怎么部署,和网上介绍的有很大区别!这篇文章老顾就带着大家分享一些如何在生产环境下部署。这里不介绍Tomcat的一些线程数的配置了,网上一大堆,核心介绍网上没有的。另外,每个公司的业务场景不一样,Tomcat的部署方案可能有所不能,所以请大家轻喷!二、Tomcat组件我们先回...

2019-07-23 11:04:07 196

转载 正确访问Redis中的海量数据

一、前言有时候我们需要知道线上的Redis的使用情况,尤其需要知道一些前缀的key值,让我们怎么去查看呢?并且通常情况下Redis里的数据都是海量的,那么我们访问Redis中的海量数据?如何避免事故产生!今天就给大家分享一个小知识点,希望大家轻喷。二、事故产生因为我们的用户token缓存是采用了【user_token:userid】格式的key,保存用户的token的值。我们运维为了帮...

2019-07-23 09:58:15 251

原创 项目中的单点登录是如何实现的?

一、单系统登录机制1、http无状态协议web应用采用browser/server架构,http作为通信协议。http是无状态协议,浏览器的每一次请求,服务器会独立处理,不与之前或之后的请求产生关联,这个过程用下图说明,三次请求/响应对之间没有任何联系。但这也同时意味着,任何用户都能通过浏览器访问服务器资源,如果想保护服务器的某些资源,必须限制浏览器请求;要限制浏览器请求,必须鉴别浏...

2019-05-09 19:06:22 3811 1

原创 spring session redis解决分布式登录问题

之前部署的服务都是单机服务,登录用户名校验和权限校验采用的是spring security,配置及实现步骤见另一个博文:http://blog.sina.com.cn/s/blog_6b8518810102xeld.html随着服务请求量的增加及防单点考虑,将服务由单机改为分布式系统。程序里解决了队列处理、事务控制等问题开始上线,上线后发现登录一直有问题,原因是服务由vanish+4台tomc...

2019-04-18 16:57:38 1149 1

转载 非阻塞同步算法与CAS(Compare and Swap)无锁算法

锁(lock)的代价锁是用来做并发最简单的方式,当然其代价也是最高的。内核态的锁的时候需要操作系统进行一次上下文切换,加锁、释放锁会导致比较多的上下文切换和调度延时,等待锁的线程会被挂起直至锁释放。在上下文切换的时候,cpu之前缓存的指令和数据都将失效,对性能有很大的损失。操作系统对多线程的锁进行判断就像两姐妹在为一个玩具在争吵,然后操作系统就是能决定他们谁能拿到玩具的父母,这是很慢的。用户态...

2019-04-13 16:10:47 93

转载 若何解决高并发下秒杀问题

一、秒杀业务为什么难做?1)im系统,例如qq或者微博,每个人都读自己的数据(好友列表、群列表、个人信息);2)微博系统,每个人读你关注的人的数据,一个人读多个人的数据;3)秒杀系统,库存只有一份,所有人会在集中的时间读和写这些数据,多个人读一个数据。例如:小米手机每周二的秒杀,可能手机只有1万部,但瞬时进入的流量可能是几百几千万。又例如:12306抢票,票是有限的,库存一份,瞬时流...

2019-04-09 17:20:03 139

转载 java中的垃圾回收机制面试题

任何语言在运行过程中都会创建对象,也就意味着需要在内存中为这些对象在内存中分配空间,在这些对象失去使用的意义的时候,需要释放掉这些内容,保证内存能够提供给新的对象使用。对于对象内存的释放就是垃圾回收机制,也叫做gc,对于java开发者来说gc是一个双刃剑 我们这里找了两张搞笑图片分别来表示c语言的垃圾回收和 java的垃圾回收。 注意:并不是说谁好谁坏,只是一个调侃图c的垃圾回收是人...

2019-04-04 15:53:21 520

转载 MySQL优化技巧

MySQL优化三大方向① 优化MySQL所在服务器内核(此优化一般由运维人员完成)。② 对MySQL配置参数进行优化(my.cnf)此优化需要进行压力测试来进行参数调整。③ 对SQL语句以及表优化。MySQL参数优化1:MySQL 默认的最大连接数为 100,可以在 mysql 客户端使用以下命令查看mysql> show variables like 'max_connecti...

2019-04-02 15:35:02 272

原创 Redis性能优化方案总结

一、优化的一些建议1、尽量使用短的key当然在精简的同时,不要为了key的“见名知意”。对于value有些也可精简,比如性别使用0、1。2、避免使用keys * keys *, 这个命令是阻塞的,即操作执行期间,其它任何命令在你的实例中都无法执行。当redis中key数据量小时到无所谓,数据量大就很糟糕了。所以我们应该避免去使用这个命令。可以去使用SCAN,来代替。3、在存到...

2019-04-02 15:00:13 6892

转载 Mysql自带profiling性能分析工具使用分享

1. show variables like '%profiling%';(查看profiling信息)2. set profiling=1;(开启profiling)3. 执行SQL查询例:select goods_name from ecs_goods where goods_id <5000;show profiles;4...

2019-04-01 20:59:11 109

转载 MySQL 性能优化神器 Explain 使用分析

简介MySQL 提供了一个 EXPLAIN 命令, 它可以对 SELECT 语句进行分析, 并输出 SELECT 执行的详细信息, 以供开发人员针对性优化.EXPLAIN 命令用法十分简单, 在 SELECT 语句前加上 Explain 就可以了, 例如:EXPLAIN SELECT * from user_info WHERE id < 300;准备为了接下来方便演示...

2019-04-01 20:44:32 129

原创 如何实现动静分离

一、动静分离我们的网站简单来说分为 2 种数据资源,一种是动态的数据,即 PHP 等程序语言实时吐出来的数据,在网页内容上主要是 HTML 代码,另一种则是静态资源,比如图片、css、js、视频等(当然,图片等资源也可能是实时动态生成的,比如 PHP 缩略图,这里就不展开讨论了)。一般网站初建,因为流量小、业务简单等原因,都默认将两种数据放到一台服务器上提供服务。访问量大到一定程度之后,就...

2019-04-01 16:28:11 6388

转载 Java7/8 中的 HashMap 和 ConcurrentHashMap 全解析

网上关于 HashMap 和 ConcurrentHashMap 的文章确实不少,不过缺斤少两的文章比较多,所以才想自己也写一篇,把细节说清楚说透,尤其像 Java8 中的 ConcurrentHashMap,大部分文章都说不清楚。终归是希望能降低大家学习的成本,不希望大家到处找各种不是很靠谱的文章,看完一篇又一篇,可是还是模模糊糊。阅读建议:四节基本上可以进行独立阅读,建议初学者可按照 Ja...

2019-04-01 14:11:37 80

转载 jdk8十大新特性

1. 简介毫无疑问,Java 8是Java自Java 5(发布于2004年)之后的最重要的版本。这个版本包含语言、编译器、库、工具和JVM等方面的十多个新特性。在本文中我们将学习这些新特性,并用实际的例子说明在什么场景下适合使用。这个教程包含Java开发者经常面对的几类问题:语言 编译器 库 工具 运行时(JVM)2. Java语言的新特性Java 8是Java的一个...

2019-03-29 22:56:35 310

转载 Dubbo面试18问

dubbo是什么dubbo是一个分布式框架,远程服务调用的分布式框架,其核心部分包含: 集群容错:提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持。 远程通讯: 提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。 自动发现:基于注册中心目录服务,使服务消费方能动态的查找服务提供方...

2019-03-29 22:43:24 87

原创 Java面试题

操作系统中 heap 和 stack 的区别什么是基于注解的切面实现什么是 对象/关系 映射集成模块什么是 Java 的反射机制什么是 ACIDBS与CS的联系与区别Cookie 和 Session的区别fail-fast 与 fail-safe 机制有什么区别get 和 post请求的区别Interface 与 abstract 类的区别IOC的优点是什么IO 和 NIO的...

2019-03-29 22:40:15 295

转载 JAVA面试题

List和Set比较,各自的子类比较对比一:Arraylist与LinkedList的比较1、ArrayList是实现了基于动态数组的数据结构,因为地址连续,一旦数据存储好了,查询操作效率会比较高(在内存里是连着放的)。2、因为地址连续, ArrayList要移动数据,所以插入和删除操作效率比较低。3、LinkedList基于链表的数据结构,地址是任意的,所以在开辟内存空间的时候不...

2019-03-29 22:36:54 97

转载 你了解HTTP协议吗?

来自微信公众号:码上实战面试一年多,每当我问起面试者对HTTP的了解时,个个回答令我瞠目结舌,这些开发者都有3-5年的经验。请不要让我叫你野生程序员,是时候了解HTTP了,让我们当个正规军。起因面试官:请问你了解HTTP协议吗?前端开发:这不是应该后端清楚的吗?后端开发:这不是前端知道的吗?面试官:……我们先一本正经的来了解下HTTP(不包含传输层TCP),然后总结其中...

2019-03-29 21:54:44 347

原创 redis性能优化——生产中实际遇到的问题排查总结

背景redis-K,V数据库,因其高性能的操作性和支持丰富的数据结构,目前大量被用于衔接应用层和关系数据库中间的缓存层。随着使用的场景越来越多,和数据量快速的递增,在生产环境中经常会遇到相关的性能瓶颈问题。这时候就需要借助一些外部的手段来分析瓶颈根源在哪,对症下药提升性能。常见性能问题及问题分析过程1、生产系统刚开始运行阶段,系统稳定。但是运行一段时间后,发现部分时间段系统接口响应变慢...

2019-03-29 21:41:58 280

转载 sql优化的几种方式

在sql查询中为了提高查询效率,我们常常会采取一些措施对查询语句进行sql优化,下面总结的一些方法,有需要的可以参考参考。1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id fr...

2019-03-29 17:04:53 84

转载 B树和B+树的插入、删除图文详解

简介:本文主要介绍了B树和B+树的插入、删除操作。写这篇博客的目的是发现没有相关博客以举例的方式详细介绍B+树的相关操作,由于自身对某些细节也感到很迷惑,通过查阅相关资料,对B+树的操作有所顿悟,写下这篇博客以做记录。由于是自身对B+树的理解,肯定有考虑不周的情况,或者理解错误的地方,请留言指出。1. B树的定义B树也称B-树,它是一颗多路平衡查找树。我们描述一颗B树时需要指定它的阶数,阶...

2019-03-29 14:57:24 488 1

原创 SOA面试题

  SOA代表了面向服务的架构。如果你正在准备采取SOA,以下SOA的面试问题和答案可能对你非常有用。基本上,这些SOA的面试题涵盖了整个SOA。涉及SOA的服务特点和原理,服务,合同,地址和绑定的松耦合,SOA对于业务和IT的主要优点,服务与组件的差别,SOA的业务需求等等。1. 什么是SOA的服务?  在现实世界中,服务是一种我们花费购买到的一种预期的服务。  例1 (来自真实世界...

2019-03-29 14:36:45 214

转载 RPC实现原理及运行流程

一、什么是RPC框架?RPC,全称为Remote Procedure Call,即远程过程调用,是一种计算机通信协议。比如现在有两台机器:A机器和B机器,并且分别部署了应用A和应用B。假设此时位于A机器上的A应用想要调用位于B机器上的B应用提供的函数或是方法,由于A应用和B应用不在一个内存空间里面,所以不能直接调用,此时就需要通过网络来表达调用的方式和传输调用的数据。也即所谓的远程调用。...

2019-03-29 09:01:56 3240

原创 Redis5种数据类型使用场景梳理

Redis在我们日常工作中使用的非常频繁,但是很多同学只会使用string类型,那么今天笔者梳理下redis中常用的5种数据类型,分别适用于哪些业务场景和基本操作,让大家以后能够在合适的缓存场景使用合适的数据类型。String字符串类型Redis支持的字符串类型不是定长分配的字符串,是动态变长字符串,修改字符串在没有增加特别多内容的情况下不需要重新分配内存空间,内部结构实现上有点类似于ja...

2019-03-19 20:55:18 2726

转载 电商产品之订单拆分规则与流程

什么是订单拆分用户提交的订单在物理上并不是一个不可拆分的单元,也即:它不是一个颗粒度最小的实体,可以进行多种形式的分解,具体如何分解根据不同的业务场景,可以进行不同形式的拆分。为什么要订单拆分之所以要订单拆分,一般会有以下几个原因:1. 仓库原因一些大型电商公司(京东、考拉等),都有自建仓库,商品会根据以往出货量数据在各个不同的仓库进行备货,用户的订单如果包含多个仓库的商品,那...

2019-03-18 22:26:36 7547

转载 java面试题及答案(基础题122道,代码题19道)

 JAVA相关基础知识  1、面向对象的特征有哪些方面   1.抽象:  抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。  2.继承:  继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个...

2019-01-24 20:03:43 198

原创 Java 多线程面试题及答案

这篇文章主要是对多线程的问题进行总结的,因此罗列了40个多线程的问题。这些多线程的问题,有些来源于各大网站、有些来源于自己的思考。可能有些问题网上有、可能有些问题对应的答案也有、也可能有些各位网友也都看过,但是本文写作的重心就是所有的问题都会按照自己的理解回答一遍,不会去看网上的答案,因此可能有些问题讲的不对,能指正的希望大家不吝指教。1、多线程有什么用?一个可能在很多人看来很扯淡...

2019-01-24 19:51:18 142

转载 Java Socket编程----通信是这样炼成的

前言:Java最初是作为网络编程语言出现的,其对网络提供了高度的支持,使得客户端和服务器的沟通变成了现实,而在网络编程中,使用最多的就是Socket。像大家熟悉的QQ、MSN都使用了Socket相关的技术。下面就让我们一起揭开Socket的神秘面纱。Socket编程一、网络基础知识(参考计算机网络)           关于计算机网络部分可以参考相关博客:          《...

2019-01-09 19:33:29 91

转载 Query注解的用法

@Query注解的用法(Spring Data JPA)参考文章:http://www.tuicool.com/articles/jQJBNv 1. 一个使用@Query注解的简单例子@Query(value = "select name,author,price from Book b where b.price&gt;?1 and b.price&lt;?2")List&l...

2019-01-04 15:57:47 1417

转载 Spring Boot常用注解小结

在Spring boot中,注解使用非常频繁,通过使用注解可以有效的提供开发效率,让项目代码看起来更简洁。之前做过一个项目后台是使用Spring boot框架的,本篇文章将项目中高频使用的一些注解总结出来,并从不同层面角度来了解不同注解的作用以及使用例子1、关于Controller层的一些注解。@ResponseBody 注解@RequestBody注解@RequestM...

2019-01-04 15:07:36 158

转载 Beetl学习笔记

Beetl学习笔记Beetl一、什么是Beetl1.1 概念Beetl是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,超过当前流行的模板引擎。而且还易学易用。1.2 优缺点1.2.1 优点:易整合、性能强1.2.2 缺点:文档蛋疼、用例少、与html标签结合略显混乱二、Bee...

2019-01-03 15:49:34 7483

转载 ioc 容器的基本原理

2.2.1  IoC容器的概念IoC容器就是具有依赖注入功能的容器,IoC容器负责实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。应用程序无需直接在代码中new相关的对象,应用程序由IoC容器进行组装。在Spring中BeanFactory是IoC容器的实际代表者。Spring IoC容器如何知道哪些是它管理的对象呢?这就需要配置文件,Spring IoC容器通过读取配置文件中的...

2019-01-03 15:07:26 270

转载 学习spring IOC

2.1.1  IoC是什么Ioc—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想。在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。如何理解好Ioc呢?理解好Ioc的关键是要明确“谁控制谁,控制什么,为何是反转(有反转就应该有正转了),哪些方面反转了”,那我们来深入分析一下: ●谁控制谁,控制什么:...

2019-01-03 14:42:04 76

转载 认识sql注入

SQL注入简介:SQL攻击(SQL injection),简称为注入攻击,是发生于应用程序数据库层的安全漏洞。简而言之,是在输入的字符串之中注入SQL指令,在设计不良的程序当中忽略了检查,那么这些注入进去的指令就会被数据库服务器误认为是正常的SQL指令而运行,因此遭到破坏或是入侵。简单的说,所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗...

2018-12-21 21:00:47 135

原创 p2p项目构思流程及相关知识

第一阶段:(一)项目安排介绍1,项目的总体安排;2,项目的重点:1,本项目的重点不是去制作完成这个P2P系统,重点是了解P2P平台的各个流程和需求,对这个项目有一个较为深刻的理解;2,掌握项目中的一些重要的第三方工具/框架;比如bootstrap;uploadify等的使用;3,掌握提升自我价值的知识点;比如redis,mysql主从,nginx配置;3,项目的学习方法:1,深入学...

2018-12-18 21:03:46 1400 1

转载 认识CDN

CDN是什么?谈到CDN的作用,可以用8年买火车票的经历来形象比喻:8年前,还没有火车票代售点一说,12306.cn更是无从说起。那时候火车票还只能在火车站的售票大厅购买,而我所住的小县城并不通火车,火车票都要去市里的火车站购买,而从县城到市里,来回就是4个小时车程,简直就是浪费生命。后来就好了,小县城里出现了火车票代售点,可以直接在代售点购买火车,方便了不少,全市人民再也不用在一个点苦逼的排...

2018-12-18 19:58:56 188

空空如也

空空如也

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

TA关注的人

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