自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(65)
  • 收藏
  • 关注

转载 springMVC操作cookie和session

cookie相关说明:1、cookie由服务器端创建,然后添加到HttpServletResponse中发送给客户端(浏览器)。2、可以添加多个cookie键值对。3、cookie由键值名和键值组成。“相同domain和path”中的键值名不能重复,添加键值名重名的键值对会覆盖上一个同名的键值对。4、添加cookie时要指定cookie所在域(setPath...

2019-09-18 10:30:00 211

转载 HTTP常见响应状态码及解释、常用请求头及解释

1、HTTP常见响应状态码及解释2XX Success(成功状态码) 200 表示从客户端发来的请求在服务器端被正常处理204 该状态码表示服务器接收的请求已成功处理,但在返回的响应报文中不含实体的主体部分206 该状态码表示客户端进行了范围请求,而服务器成功执行了这部分的GET请求3XX Redirection(重定向状态码) 301 永久性重定向302 临时性重定向4XX Clien...

2019-09-18 10:04:00 211

转载 Spring afterPropertiesSet方法

1、init-method方法,初始化bean的时候执行,可以针对某个具体的bean进行配置。init-method需要在applicationContext.xml配置文档中bean的定义里头写明。例如:<bean id="TestBean" class="nju.software.xkxt.util.TestBean" init-method="init"></be...

2019-09-15 16:45:00 548

转载 用spring的 InitializingBean 的 afterPropertiesSet 来初始化

void afterPropertiesSet() throws Exception;这个方法将在所有的属性被初始化后调用。但是会在init前调用。但是主要的是如果是延迟加载的话,则马上执行。所以可以在类上加上注解:import org.springframework.context.annotation.Lazy;@Lazy(fals...

2019-09-15 16:44:00 268

转载 把线程池比作装修公司

以运营一家装修公司做个比喻。公司在办公地点等待客户来提交装修请求;公司有固定数量的正式工以维持运转;旺季业务较多时,新来的客户请求会被排期,比如接单后告诉用户一个月后才能开始装修;当排期太多时,为避免用户等太久,公司会通过某些渠道(比如人才市场、熟人介绍等)雇佣一些临时工(注意,招聘临时工是在排期排满之后);如果临时工也忙不过来,公司将决定不再接收新的客户,直接拒单。线程池就是...

2019-09-14 15:10:00 95

转载 字符串常量池

作为最基础的引用数据类型,Java 设计者为 String 提供了字符串常量池以提高其性能,那么字符串常量池的具体原理是什么,我们带着以下三个问题,去理解字符串常量池:字符串常量池的设计意图是什么?字符串常量池在哪里?如何操作字符串常量池?字符串常量池的设计思想字符串的分配,和其他的对象分配一样,耗费高昂的时间与空间代价,作为最...

2019-09-12 16:58:00 130

转载 如何理解多租户架构?

  1.什么是多租户架构?  2.多租户架构的优缺点?  3.多租户架构的适用场景?一、对多租户的理解  多租户定义:多租户技术或称多重租赁技术,简称SaaS,是一种软件架构技术,是实现如何在多用户环境下(此处的多用户一般是面向企业用户)共用相同的系统或程序组件,并且可确保各用户间数据的隔离性。简单讲:在一台服务器上运行单个应用实例,它为多个租户(客户)...

2019-09-10 16:25:00 443

转载 Redis的List的删除

Redis的List命令里没有根据index删除元素的命令,但有的时候业务会需要这个功能。先上命令:LSET ListKey index "__deleted__"LREM ListKey 0 "__deleted__"也可以用事务管道合并成一次请求MULTILSET ListKey index "__deleted__"LREM ListKey 0 "__deleted...

2019-09-03 16:46:00 569

转载 MySQL Explain详解

在日常工作中,我们会有时会开慢查询去记录一些执行时间比较久的SQL语句,找出这些SQL语句并不意味着完事了,些时我们常常用到explain这个命令来查看一个这些SQL语句的执行计划,查看该SQL语句有没有使用上了索引,有没有做全表扫描,这都可以通过explain命令来查看。所以我们深入了解MySQL的基于开销的优化器,还可以获得很多可能被优化器考虑到的访问策略的细节,以及当...

2019-09-03 15:19:00 57

转载 如何保证缓存与数据库的双写一致性?

只要用缓存,就可能会涉及到缓存与数据库双存储双写,只要是双写,就一定会有数据一致性的问题,那么如何解决一致性问题?一般来说,如果允许缓存可以稍微的跟数据库偶尔有不一致的情况,也就是说如果你的系统不是严格要求“缓存+数据库” 必须保持一致性的话,最好不要做这个方案,即:读请求和写请求串行化,串到一个内存队列里去。串行化可以保证一定不会出现不一致的情况,但是它也会导致系...

2019-09-01 18:46:00 54

转载 MySQL实现分页查询

limit 基本实现方式一般情况下,客户端通过传递 pageNo(页码)、pageSize(每页条数)两个参数去分页查询数据库中的数据,在数据量较小(元组百/千级)时使用 MySQL自带的limit来解决这个问题:收到客户端{pageNo:1,pagesize:10}select * from table limit (pageNo-1)*pageSize...

2019-09-01 18:34:00 85

转载 Redis思维导图

Redis基本数据结构1、String 1.1 数据结构 long len byte数组长度 long free 可用数组长度 char buff[] 数据内容 1.2 命令 键值:设置值通过字符串名 set:设置键值 ...

2019-09-01 16:09:00 141

转载 多进程多线程的选择

多进程多线程的选择关于多进程和多线程,教科书上最经典的一句话是“进程是资源分配的最小单位,线程是CPU调度的最小单位”,这句话应付考试基本上够了,但如果在工作中遇到类似的选择问题,那就没有这么简单了,选的不好,会让你深受其害。经常在网络上看到有的XDJM问“多进程好还是多线程好?”、“Linux下用多进程还是多线程?”等等期望一劳永逸的问题,我只能说:没有最好,只有更好。根...

2019-08-30 21:27:00 92

转载 PUT和POST区别

POST是用来提交数据的。提交的数据放在HTTP请求的正文里,目的在于提交数据并用于服务器端的存储,而不允许用户过多的更改相应数据(主要是相对于在url 修改要麻烦很多)。PUT操作是幂等的。所谓幂等是指不管进行多少次操作,结果都一样。比如我用PUT修改一篇文章,然后在做同样的操作,每次操作后的结果并没有不同POST操作既不是安全的,也不是幂等的,比如常见的POST重复加载问题:当我们多...

2019-08-29 23:24:00 104

转载 什么是高可用?

一、什么是高可用高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。假设系统一直能够提供服务,我们说系统的可用性是100%。如果系统每运行100个时间单位,会有1个时间单位无法提供服务,我们说系统的可用性是99%。很多公司的高可用目标是4个9,也就是99.99%,这就意味着,系统的年停机...

2019-08-23 09:21:00 139

转载 Java内存中的常量池

1,java内存模型简介《深入理解java虚拟机》里将java内存分为如下五个模块:堆-堆是所有线程共享的,主要用来存储对象。其中,堆可分为:新生代和老年代两块区域。使用NewRatio参数来设定比例。对于年轻代,一个Eden区和两个Suvivor区,使用参数SuvivorRatio来设定大小;Java虚拟机栈/本地方法栈-线程私有的,主要存放局部变量表...

2019-08-21 15:04:00 85

转载 JVM-Jinfo命令

jinfoJVM Configuration info这个命令作用是实时查看和调整虚拟机运行参数。 之前的jps -v口令只能查看到显示指定的参数,如果想要查看未被显示指定的参数的值就要使用jinfo口令。【JVM配置参数调整查看】1234567891011121314151617...

2019-08-21 14:39:00 177

转载 Lambda表达式

Lambda表达式的结构: Lambda表达式可以具有零个、一个或多个参数。 可以显式声明参数的类型,也可以由编译器自动从上下文推断参数的类型,如(int a)与(a)相同。 参数用小括号括起来,多个参数用逗号隔开,如(a, b)。 空括号表示一组空的参数,如() -> 11。 当且仅当一个参数时,如果不显式指明类型,则不必使用小括...

2019-08-21 14:35:00 93

转载 jstack命令的使用

jstackjstack用于生成java虚拟机当前时刻的线程快照。线程快照是当前java虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等。 线程出现停顿的时候通过jstack来查看各个线程的调用堆栈,就可以知道没有响应的线程到底在后台做什么事情,或者等待什么资源。 如果java程序崩...

2019-08-21 14:12:00 138

转载 JVM垃圾回收GC

1.堆的分代和区域(年轻代)Young Generation(eden、s0、s1 space) Minor GC(老年代)Old Generation (Tenured space) Major GC|| Full GC(永久代)Permanent Generation (Permanent space)【方法区(method area)】 Majo...

2019-08-21 13:53:00 57

转载 JVM内存

JAVA能够实现跨平台的一个根本原因,是定义了class文件的格式标准,凡是实现该标准的JVM都能够加载并解释该class文件,据此也可以知道,为啥Java语言的执行速度比C/C++语言执行的速度要慢了,当然原因肯定不止这一个,如在JVM中没有数据寄存器,指令集使用的是栈来保存中间数据…等,尽管Java的贡献者们为执行速度的提高想了各种办法,如JIT、动态编译器等,以下是Leetcode...

2019-08-21 10:47:00 74

转载 项目中关于AJAX的使用总结

一、使用情况:AJAX 是与服务器交换数据并更新部分网页的艺术,在不重新加载整个页面的情况下使用。AJAX的核心:向服务器发送多个请求而无需用户等待来至服务器的响应。二、AJAX的优势 1.异步加载数据,无需切换页面,不需要刷新 2.更佳的用户体验:局部刷新、及时验证、操作步骤简化等 3.节省流量 4.JS控制数据的加载,更加灵活多用三、使用步骤...

2019-08-18 08:49:00 109

转载 同步方法与同步代码块的区别

在面试中,我们经常遇到的一个问题是,同步方法与同步代码块的区别。或者另一种提问方式,在实际开发中,是使用同步代码块好,还是使用同步方法好。这个考验的是实际上是读者对java同步和锁的理解深刻程度。结论是很明显的,同步代码块比同步方法好。原因如下:1、我们只需要对临界区的代码进行同步因为多线程只会对临界区的代码访问顺序敏感,因此在执行同步操作...

2019-08-13 17:13:00 117

转载 锁的深入理解

关于“互斥”和“同步”的概念互斥就是线程A访问了一组数据,线程BCD就不能同时访问这些数据,直到A停止访问了同步就是ABCD这些线程要约定一个执行的协调顺序。比如D要执行,B和C必须都得做完,而B和C要开始,A必须先得做完。这是两种典型的并发问题。恰当的使用锁,可以解决同步或者互斥的问题。锁的目的就是避免多个线程对同一个共享的数据并发修改带来的数据...

2019-08-13 17:13:00 93

转载 数据库事务:脏读、幻读、不可重复读。

1、Serializable (串行化):最严格的级别,事务串行执行,资源消耗最大;2、REPEATABLE READ(重复读) :保证了一个事务不会修改已经由另一个事务读取但未提交(回滚)的数据。避免了“脏读取”和“不可重复读取”的情况,但不能避免“幻读”,但是带来了更多的性能损失。3、READ COMMITTED (提交读):大多数主流数据库的默认事务等级,保证了一个事务不会...

2019-08-08 14:29:00 82

转载 Redis缓存设计及常见问题

缓存能够有效地加速应用的读写速度,同时也可以降低后端负载,对日常应用的开发至关重要。下面会介绍缓存使用技巧和设计方案,包含如下内容:缓存的收益和成本分析、缓存更新策略的选择和使用场景、缓存粒度控制法、穿透问题优化、无底洞问题优化、雪崩问题优化、热点key重建优化。缓存的收益和成本分析下图左侧为客户端直接调用存储层的架构,右侧为比较典型的缓存层+存储层架构。缓存加入后...

2019-08-02 16:34:00 92

转载 Nginx 安装与部署配置

下载官方网站:https://nginx.org/en/download.htmlWindows下安装安装下载后解压(切记不能含有中文路径!!),文件结构如图(我解压的路径就有中文,记得拷贝放置于英文目录下即可!):启动两种方法:1) 直接双击该目录下的"nginx.exe",即可启动nginx服务器;2) 命令行进入该文件夹,执行start...

2019-08-02 16:19:00 90

转载 【分布式】缓存穿透、缓存雪崩,缓存击穿解决方案

一、什么样的数据适合缓存二、缓存穿透缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时需要从数据库查询,查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到数据库去查询,造成缓存穿透。在流量大时,可能DB就挂掉了,要是有人利用不存在的key频繁攻击我们的应用,这就是漏洞。解决方案:1)有很多种方法可以有效地解决缓存穿透问题,最常见的则是采用布隆过滤器...

2019-08-02 15:49:00 53

转载 Nginx与Tomcat实现请求动态数据与请求静态资源的分离

一、认识访问静态资源与访问动态资源的区别  静态资源:指存储在硬盘内的数据,固定的数据,不需要计算的数据。  如:图片、字体、js文件、css文件等等。在用户访问静态资源时,服务器会直接将这些资源返回到用户的计算机内。    动态资源:指需要服务器根据用户的操作所返回的数据,以及存储在数据库的数据,经过一系列逻辑计算后返回的数据。  如:请求明天的天气信息数据、请求查...

2019-08-02 15:33:00 269

转载 Cache Aside Pattern

在讨论这三种情况之前,先说明一下我使用缓存的策略,也是大多数人使用的策略,叫做 Cache Aside Pattern。简而言之,就是1. 首先尝试从缓存读取,读到数据则直接返回;如果读不到,就读数据库,并将数据会写到缓存,并返回。2. 需要更新数据时,先更新数据库,然后把缓存里对应的数据失效掉(删掉)。读的逻辑大家都很容易理解,谈谈更新。如果不采取我提到的这种更新方法,你还...

2019-08-01 18:49:00 75

转载 mysql 数据库信息常用命令

Mysql查询数据库状态及信息使用MySQL时,需要了解当前数据库的情况,例如当前的数据库大小、字符集、用户等等。下面总结了一些查看数据库相关信息的命令1:查看显示所有数据库mysql> show databases;+--------------------+| Database |+-----------...

2019-07-18 14:52:00 110

转载 Linux 目录详细介绍

【常见目录说明】目录/bin存放二进制可执行文件(ls,cat,mkdir等),常用命令一般都在这里。/etc存放系统管理和配置文件/home存放所有用户文件的根目录,是用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示...

2019-07-18 14:20:00 90

转载 RPC调用和HTTP调用的区别

很长时间以来都没有怎么好好搞清楚RPC(即Remote Procedure Call,远程过程调用)和HTTP调用的区别,不都是写一个服务然后在客户端调用么?这里请允许我迷之一笑~Naive!本文简单地介绍一下两种形式的C/S架构,先说一下他们最本质的区别,就是RPC主要是基于TCP/IP协议的,而HTTP服务主要是基于HTTP协议的,我们都知道HTTP协议是在传输层协议TCP之上的,所...

2019-07-17 14:48:00 73

转载 maven 常见命令

mvn clean package依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)等7个阶段。mvn clean install依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)、install等8个阶段。mvn cle...

2019-07-17 11:44:00 66

转载 SpringCloud微服务常见组件理解

概述毫无疑问,Spring Cloud是目前微服务架构领域的翘楚,无数的书籍博客都在讲解这个技术。不过大多数讲解还停留在对Spring Cloud功能使用的层面,其底层的很多原理,很多人可能并不知晓。因此本文将通过大量的手绘图,给大家谈谈Spring Cloud微服务架构的底层原理。实际上,Spring Cloud是一个全家桶式的技术栈,包含了很多组件。本文先从其最核心的几...

2019-07-16 15:05:00 1614

转载 Java实现CORS跨域请求

使用前后端分离模式开发项目时,往往会遇到这样一个问题 -- 无法跨域获取服务端数据这是由于浏览器的同源策略导致的,目的是为了安全。在前后端分离开发模式备受青睐的今天,前端和后台项目往往会在不同的环境下进行开发,这时就会出现跨域请求数据的需求,目前的解决方案主要有以下几种:JSONP、iframe、代理模式、CORS等等前面几种方式在这里不讲,网上有很多资...

2019-07-12 17:23:00 71

转载 Java 静态代理和动态代理例子

代理模式:Proxy代理模式是一种结构型设计模式,主要解决的问题是:在直接访问对象时带来的问题代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问。代理类负责为委托类预处理消息,过滤消息并转发消息,以及进行消息被委托类执行后的后续处理。 为了保持行为的一致性,...

2019-07-03 17:07:00 85

转载 Mabatis中#{}和${}的区别

动态 sql 是 mybatis 的主要特性之一,在 mapper 中定义的参数传到 xml 中之后,在查询之前 mybatis 会对其进行动态解析。mybatis 为我们提供了两种支持动态 sql 的语法:#{} 以及 ${}。  在下面的语句中,如果 username 的值为 zhangsan,则两种方式无任何区别:select * from user where nam...

2019-06-23 17:01:00 86

转载 针对海量数据和高并发的主要解决方案

一、网站应用背景开发一个网站的应用程序,当用户规模比较小的时候,使用简单的:一台应用服务器+一台数据库服务器+一台文件服务器,这样的话完全可以解决一部分问题,也可以通过堆硬件的方式来提高网站应用的访问性能,当然,也要考虑成本的问题。当问题的规模在经济条件下通过堆硬件的方式解决不了的时候,我们应该通过其他的思路去解决问题,互联网发展至今,已经提供了很多成熟的解决方案,但并不是都具有适用...

2019-06-03 21:42:00 197

转载 逻辑运算符短路特性的应用

例如:对于A && B,如果A为假,那么就不执行B了;而如果A为真,就会执行B。   对于A || B,如果A为真,那么就会不执行B了;而如果A为假,就会执行B。用逻辑运算符&&或者||来代替判断语句。转载于:https://www.cnblogs.com/findbetterme/p/10950540.html...

2019-05-30 16:49:00 178

空空如也

空空如也

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

TA关注的人

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