自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

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

转载 MySQL和Oracle的区别

由于SQL Server不常用,所以这里只针对MySQL数据库和Oracle数据库的区别(1) 对事务的提交 MySQL默认是自动提交,而Oracle默认不自动提交,需要用户手动提交,需要在写commit;指令或者点击commit按钮(2) 分页查询 MySQL是直接在SQL语句中写"select... from ...where...limit x, y",有limi...

2019-09-16 15:52:00 260

转载 SpringCloud面试题

1.SpringCloud和DubboSpringCloud和Dubbo都是现在主流的微服务架构SpringCloud是Apache旗下的Spring体系下的微服务解决方案Dubbo是阿里系的分布式服务治理框架从技术维度上,其实SpringCloud远远的超过Dubbo,Dubbo本身只是实现了服务治理,而SpringCloud现在以及有21个子项目以后还会更多所以其实很多人都会说Dub...

2019-09-14 23:48:00 238

转载 synchronized 底层实现原理

线程在获取锁的时候,其指针指向的是一个monitor对象(由C++实现)的起始地址。每个对象实例都会有一个 monitor。其中monitor可以与对象一起创建、销毁;亦或者当线程试图获取对象锁时自动生成。而monitor是添加Synchronized关键字之后独有的。synchronized同步块使用了monitorenter和monitorexit指令实现同步,这两个指令,本质上都是...

2019-09-14 15:38:00 228

转载 SpringBoot项目的限流

开发访问量比较大的系统是,爬虫的目的就是解决访问量大的问题;缓存穿透是为了保护后端数据库查询服务;计数服务解决了接近真实访问量以及数据库服务的压力。架构图限流就拿十万博客来说,如果存在热点文章,可能会有数十万级别的并发用户参与阅读。如果想让这些用户正常访问,无非就是加机器横向扩展各种服务,但凡事都有一个利益平衡点,有时候只需要少量的机器保证大部分用户在大部分时间可以正常访...

2019-09-03 10:23:00 475

转载 如何优化网站?(集群、限流、缓存)

看到一篇博客觉得很有用,就把它转载一下,https://blog.52itstyle.vip/archives/4330/优化版本一系统开始是这样子的,一个 Tomcat 拖着一个 MySql 服务,跑在一个 2C 4G 的Linux服务器上,所有的请求都走 Tomcat,所有的查询都走 MySql,看起来像一句废话?资源是有限的,那么如何有效的利用资源,提升服务性能?T...

2019-08-29 10:26:00 89

转载 http GET 和 POST 请求的优缺点和误区

(1)post更安全(不会作为url的一部分,不会被缓存、保存在服务器日志、以及浏览器浏览记录中) (2)post发送的数据更大(get有url长度限制) (3)post能发送更多的数据类型(get只能发送ASCII字符) (4)post比get慢 (5)post用于修改和写入数据,get一般用于搜索排序和筛选之类的操作(淘宝,支付宝的搜索查询都是get提交),目的是资源的获取,读取数据...

2019-08-28 16:49:00 302

转载 B树,B+树的原理及区别

如图所示,区别有以下两点:  1. B+树中只有叶子节点会带有指向记录的指针(ROWID),而B树则所有节点都带有,在内部节点出现的索引项不会再出现在叶子节点中。  2. B+树中所有叶子节点都是通过指针连接在一起,而B树不会。B树的原理:  就是为了存储设备或者磁盘设计的一种平衡查找树;通过对树高度的降低可以提升查找效率,尤其是在大量数据进行存储的时候会存储到...

2019-07-29 15:44:00 242

转载 手写一个生产者消费者模式

主要是如何使用wait notify/notifyAll先定义生产和消费的方法(同步问题)public class Storage { /** * 仓库最大容量 */ private static int MAX_VALUE = 100; /** * 储存产品 */ priv...

2019-07-23 17:34:00 118

转载 Spring循环依赖的三种方式以及解决办法

一. 什么是循环依赖?循环依赖其实就是循环引用,也就是两个或者两个以上的bean互相持有对方,最终形成闭环。比如A依赖于B,B依赖于C,C又依赖于A。如下图:注意,这里不是函数的循环调用,是对象的相互依赖关系。循环调用其实就是一个死循环,除非有终结条件。Spring中循环依赖场景有:(1)构造器的循环依赖(2)field属性的循环依赖其中,构造器的循环依赖...

2019-07-22 17:04:00 171

转载 Ioc和Aop底层原理

Spring中主要用到的设计模式有工厂模式和代理模式。IOC:Inversion of Control控制反转,也叫依赖注入,通过sessionfactory去注入实例;IOC就是一个生产和管理bean的容器就行了,原来需要在调用类中new的东西,现在都是通过容器生成,同时,要是产生的是单例的bean,他还可以给管理bean的生命周期;通过注解配置或者进行xml配置实现,如@Co...

2019-07-18 11:39:00 586

转载 写一个死锁

形成死锁的原因:1,互斥条件:线程使用的资源必须至少有一个是不能共享的;2,请求与保持条件:至少有一个线程必须持有一个资源并且正在等待获取一个当前被其它线程持有的资源;3,非剥夺条件:分配资源不能从相应的线程中被强制剥夺;4,循环等待条件:第一个线程等待其它线程,后者又在等待第一个线程。因为要产生死锁,这4个条件必须同时满足,所以要防止死锁的话,只需要破坏其中一个条件即可。思想为:定义两...

2019-07-18 10:23:00 69

转载 Java Jersey的详情概述

Jersey是一个RESTFUL请求服务JAVA框架,与常规的JAVA编程使用的struts框架类似,它主要用于处理业务逻辑层。与springmvc 的区别:1. jersey同样提供DI,是由glassfish hk2实现,也就是说,如果想单独使用jersey一套,需要另外学习Bean容器;2. MVC出发点即是WEB,但jersey出发点确实RESTFull,体现...

2019-07-12 16:02:00 285

转载 新的任务提交到线程池,线程池是怎样处理

第一步 :线程池判断核心线程池里的线程是否都在执行任务。如果不是,则创建一个新的工作线程来执行任务。如果核心线程池里的线程都在执行任务,则执行第二步。第二步 :线程池判断工作队列是否已经满。如果工作队列没有满,则将新提交的任务存储在这个工作队列里进行等待。如果工作队列满了,则执行第三步。第三步 :线程池判断线程池的线程是否都处于工作状态。如果没有,则创建一个新的工作线...

2019-07-11 14:55:00 829

转载 可以用for循环直接删除ArrayList的特定元素吗?可能会出现什么问题?怎样解决?...

for循环直接删除ArrayList中的特定元素是错的,不同的for循环会发生不同的错误,泛型for会抛出 ConcurrentModificationException,普通的for想要删除集合中重复且连续的元素,只能删除第一个。错误原因:打开JDK的ArrayList源码,看下ArrayList中的remove方法(注意ArrayList中的remove有两个同名方法,只是入参不同,...

2019-07-11 14:13:00 873

转载 cpu 100%怎样定位

先用top定位最耗cpu的java进程 例如: 12430工具:top或者 htop(高级)方法:top -c 显示进程运行详细列表键入 P (大写P),按照cpu进行排序然后用top -p 12430 -H 定位到最耗cpu的线程 的ID 例如:12483工具:top方法:top -Hp 1865 ,显示一个进程的线程运行信息列表键入P (大写p),线程按照CPU使用率排序...

2019-07-11 11:28:00 102

转载 Semaphore拿到执行权的线程之间是否互斥

java线程之间的控制,使用Semaphore 实现 互斥下面我们通过Semaphore来实现一个比较好的互斥操作:package com.zhy.concurrency.semaphore; import java.util.concurrent.Semaphore; /** * 使用信号量机制,实现互斥访问打印机 * * ...

2019-07-11 11:18:00 546

转载 ReadWriteLock读写之间互斥吗

开发中遇到并发的问题一般会用到锁,Synchronized存在明显的一个性能问题就是读与读之间互斥;ReadWriteLock是JDK5中提供的读写分离锁。读写分离锁可以有效地帮助减少锁竞争,以提升系统的性能。ReadWriteLock管理一组锁,一个是只读的锁,一个是写锁。Java并发库中ReetrantReadWriteLock实现了ReadWriteLock接口并添加了可重入的...

2019-07-11 10:39:00 433

转载 局部变量为什么需要显式赋值,否则编译不了

1、成员变量(全局变量)是可以不经初始化的,在类加载过程的准备阶段即可给它赋予默认值,但局部变量使用前需要显示赋予初始值,javac不是推断不出不可以这样做,而是没有这么做,对于成员变量而言,其赋值和取值访问的先后顺序具有不确定性,对于成员变量可以在一个方法调用前赋值,也可以在方法调用后进行,这是运行时发生的,编译器确定不了,交给jvm去做比较合适。2、而对于局部变量而言,其赋值和取值访...

2019-07-10 17:41:00 295

转载 一个java文件中有几个类,编译后有几个class文件?

在一个源文件中用class关键字定义了几个类,编译的时候就会产生几个字节码文件转载于:https://www.cnblogs.com/liuqing576598117/p/11165244.html

2019-07-10 17:19:00 2983

转载 java类初始化顺序

一个类中包含如下几类东西,他们前后是有顺序关系的静态属性:static 开头定义的属性静态方法块: static {} 圈起来的方法块普通属性: 未带static定义的属性普通方法块: {} 圈起来的方法块构造函数: 类名相同的方法方法: 普通方法实例代码:public class LifeCycle { // 静态属性 p...

2019-07-10 15:18:00 50

转载 private修饰的方法可以通过反射访问,那么private的意义是什么?

反射代码:package test;public class Person { private String userName= "Tom"; private void playGame() { System.out.println(userName+ "悄悄玩儿游戏"); }}p...

2019-07-10 15:06:00 593

转载 为什么单线程的Redis却能支撑高并发

Redis的高并发和快速原因redis是基于内存的,内存的读写速度非常快;核心是基于非阻塞的IO多路复用机制;redis是单线程的,反而省去了很多上下文切换线程的时间;为什么Redis是单线程的  Redis是基于内存的操作,CPU不是Redis的瓶颈,Redis的瓶颈最有可能是机器内存的大小或者网络带宽。单线程容易实现。  性能指标  redis的性能,基于...

2019-07-03 15:24:00 191

转载 多线程上传和下载大文件(当文件服务器对上传文件大小有限制)

public class UploadAndDownloadBigFileUtil { private static final Logger LOGGER = LoggerFactory.getLogger(UploadAndDownloadBigFileUtil.class); private static final int SIZE = 16 * ...

2019-06-28 15:09:00 200

转载 http和https的区别?

HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。1、https协议需要到ca申请证书...

2019-05-15 15:14:00 66

转载 将数据导出到 excel ,然后下载下来

private static final String SHEET_NAME = "培养计划表";/** * @param response * @param trainingName * @return */@RequestMapping("/exportTrainingPlanMessageToExcel.do_")@ResponseBodyp...

2019-05-13 16:06:00 135

转载 注解@Transactional(rollbackFor = Exception.class) 的用法

由于业务需求要求,在一个Service的一个方法A中有一个for循环,每次循环里面的业务逻辑有可能发生异常,这个时候就需要将这个循环内的所有数据库操作给回滚掉,但是又不能影响到之前循环里数据的更改,并且后面的循环里不发生异常的情况下也需要正常操作数据库for (int i = 0; i < educationInfoArrayList.size(); i++) { ...

2019-04-28 14:32:00 247

转载 浅谈 MongoDB

MongoDB是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。转载于:h...

2019-04-04 16:35:00 85

转载 浅谈负载均衡

负载均衡是用反向代理的原理实现的。1、轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。2、weight 指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的 情况。(权重越高,在被访问的概率越大)3、ip_hash指令4、fair(第三方) 按后端服务器的响应时间来分配请求,响应时间短的优先分配。5...

2019-03-27 17:43:00 83

转载 join,left join,inner join,full join的区别?

left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录inner join(等值连接) 只返回两个表中联结字段相等的行,等于joinfull join,在两张表进行连接查询时,返回左表和右表中所有没有匹配的行;即查询结果是left join和right join的并集表A记录...

2019-03-27 16:43:00 375

转载 js和jQuery的互相转换

//jQuery => DOM对象var a=$(“#id”)var b=document.getElementById(“id”)var c=a[0] 或 var c=a.get(0)//相反var a=$(“#id”)var b=document.getElementById(“id”)var c =$(b)转载于:https://www.cnb...

2019-03-27 16:27:00 99

转载 Spring的回滚问题

再说下声明式事务和注解事务回滚的原理:当被切面切中或者是加了注解的方法中抛出了RuntimeException异常时,Spring会进行事务回滚。默认情况下是捕获到方法的RuntimeException异常,也就是说抛出只要属于运行时的异常(即RuntimeException及其子类)都能回滚;但当抛出一个不属于运行时异常时,事务是不会回滚的。下面说几点保证事务能回滚的方法:① ...

2019-03-27 16:23:00 70

转载 Spring的事务

spring支持编程式事务管理和声明式事务管理两种方式。对于编程式事务管理,spring推荐使用TransactionTemplate。声明式事务管理建立在AOP之上的。声明式事务最大的优点就是不需要通过编程的方式管理事务,这样就不需要在业务逻辑代码中掺杂事务管理的代码,只需在配置文件中做相关的事务规则声明(或通过基于@Transactional注解的方式。声明式事务管理也有两种常用的方...

2019-03-27 16:20:00 37

转载 分布式锁的实现

基于数据库实现分布式锁基于缓存(redis,memcached,tair)实现分布式锁基于Zookeeper实现分布式锁转载于:https://www.cnblogs.com/liuqing576598117/p/10600435.html...

2019-03-26 15:27:00 47

转载 xml是什么

XML(Extensible Markup Language)是可扩展标记语言,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言,主要应用于Web项目。可以用于配置信息,同时也可作为一个小型的数据库。转载于:https://www.cnblogs.com/liuqing576598117/p/10600425.h...

2019-03-26 15:26:00 72

转载 ajax的4个字母分别是什么意思

Asynchronous JavaScript and XML 的缩写,异步的JavaScript和XML。在不重新加载整个页面的情况下 ,AJAX 与服务器交换数据并更新部分网页。转载于:https://www.cnblogs.com/liuqing576598117/p/10600398.html...

2019-03-26 15:23:00 507

转载 try、catch、finally都有return语句时执行哪个

任何执行try 或者catch中的return语句之前,都会先执行finally语句,如果finally存在的话。如果finally中有return语句,那么程序就return了,所以finally中的return是一定会被return的,编译器把finally中的return实现为一个warning。转载于:https://www.cnblogs.com/liuqing576598...

2019-03-26 15:22:00 580

转载 静态变量、实例变量、局部变量线程安全吗,为什么

静态变量:线程不安全。静态变量即类变量,前面加static,位于方法区,为所有对象共享,共享一份内存,一旦静态变量被修改,其他对象均对修改可见,故线程不安全。实例变量:单例模式(只有一个对象实例存在)线程不安全,非单例线程安全。实例变量为不加static的变量,在虚拟机的堆中分配,若在系统中只存在一个此对象的实例,在多线程环境下,“犹如”静态变量那样,被某个线程修改后,其他线...

2019-03-26 15:21:00 1244

转载 重载和重写的区别

重写方法的规则:1)、参数列表必须完全与被重写的方法相同,否则不能称其为重写而是重载。2)、返回的类型必须一直与被重写的方法的返回类型相同,否则不能称其为重写而是重载。3)、访问修饰符的限制一定要大于被重写方法的访问修饰符(public>protected>default>private)4)、重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛...

2019-03-26 15:19:00 51

转载 String和StringBuilder、StringBuffer的区别

String对象一旦创建之后该对象是不可更改的,但后两者的对象是变量,是可以更改的。String:适用于少量的字符串操作的情况StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况转载于:https://www.cnblogs.com/liuqing576598117/p/106...

2019-03-26 15:19:00 40

转载 ==和equals的区别

== 是一个运算符,Equals则是string对象的方法,可以.(点)出来。    基本数据类型比较  ==和Equals都比较两个值是否相等。相等为true 否则为false;引用对象比较  ==和Equals都是比较栈内存中的地址是否相等 。相等为true 否则为false;    需注意几点:  1、string是一个特殊的引用类型。对于两个字符串的比较,...

2019-03-26 15:18:00 58

空空如也

空空如也

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

TA关注的人

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