自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 2021-04-25

本文,也是对于Java中字符串相关知识的一个补充,主要来介绍一下字符串拼接相关的知识。本文基于jdk1.8.0_181。一、字符串拼接的方式1、字符串拼接字符串拼接是我们在Java代码中比较经常要做的事情,就是把多个字符串拼接到一起。我们都知道,String是Java中一个不可变的类,所以他一旦被实例化就无法被修改。不可变类的实例一旦创建,其成员变量的值就不能被修改。这样设计有很多好处,比如可以缓存hashcode、使用更加便利以及更加安全等。但是,既然字符串是不可变的,那么字符

2021-04-25 14:25:14 92

转载 SQL语句执行顺序

查询语句中select from where group by having order by的执行顺序 1.查询中用到的关键词主要包含六个,并且他们的顺序依次为 select--from--where--group by--having--order by  其中select和from是必须的,其他关键词是可选的,这六个关键词的执行顺序 与sql语句的书写顺序并不是一样的

2017-09-19 16:41:06 399

转载 MySQL中的存储引擎讲解(InnoDB,MyISAM,Memory等各存储引擎对比)

MySQL中的存储引擎:1、存储引擎的概念2、查看MySQL所支持的存储引擎3、MySQL中几种常用存储引擎的特点4、存储引擎之间的相互转化一、存储引擎1、存储引擎其实就是如何实现存储数据,如何为存储的数据建立索引以及如何更新,查询数据等技术实现的方法。2、MySQL中的数据用各种不同的技术存储在文件(或内存)中,这些技术中的每一种技术都使用不同的存储机制,索引技巧,锁

2017-09-19 15:15:21 351

转载 Excption与Error包结构。OOM你遇到过哪些情况,SOF你遇到过哪些情况

一道很经典的Java开发面试题,答案写的很全面,大部分内容都来自《深入理解Java虚拟机--JVM高级特性与最佳实践》,很推荐大家看这本书,在看这本书的时候,赞叹作者的写作功底,深入浅出!但是很多一开始看这本书的人感觉并不知道在讲什么,很推荐大家在看书的同时,多多上网查资料,看看网友们的总结,多多实践!会帮助你理解JVM.原文地址:http://www.mamicode.com/info-

2017-09-19 14:19:55 405

转载 Java的四种引用,强弱软虚,用到的场景

http://droidyue.com/blog/2014/10/12/understanding-weakreference-in-java/java中的4种reference的差别和使用场景(含理论.代码和执行结果)我们知道java语言提供了4种引用类型:强引用、软引用(SoftReference)、弱引用(WeakReference)和幽灵引用(Phantom

2017-09-18 16:37:37 425

转载 Spring MVC和Struts2的比较的优点

我们用struts2时采用的传统的配置文件的方式,并没有使用传说中的0配置。spring3 mvc可以认为已经100%零配置了(除了配置spring mvc-servlet.xml外)。Spring MVC和Struts2的区别:1. 机制:spring mvc的入口是servlet,而struts2是filter(这里要指出,filter和servlet是不同的。以前认为fi

2017-09-15 10:13:36 287

转载 ServletContext与Web应用以及Spring容器启动

一、ServletContext对象获取DemoServlet容器在启动时会加载Web应用,并为每个Web应用创建唯一的ServletContext对象。可以把ServletContext看作一个Web应用的服务器端组件的共享内存。在ServletContext中可以存放共享数据,有4个读取或者设置共享数据的方法:方法名描述setAttr

2017-09-15 10:13:07 302

转载 BeanFactory 与 FactoryBean的区别

首先要分辨BeanFactory 与 FactoryBean的区别, 两个名字很像,所以容易搞混BeanFactory: 以Factory结尾,表示它是一个工厂类,是用于管理Bean的一个工厂FactoryBean:以Bean结尾,表示它是一个Bean,不同于普通Bean的是:它是实现了FactoryBean接口的Bean,根据该Bean的Id从BeanFactory中获取的实际上

2017-09-15 10:11:41 224

转载 SpringMVC @RequestBody 接收Json对象字符串

Spring MVC中,有两个注解比较重要:1: @RequestBody@RequestBody接收的是一个Json对象的字符串,而不是一个Json对象。然而在ajax请求往往传的都是Json对象,后来发现用 JSON.stringify(data)的方式就能将对象变成字符串。同时ajax请求的时候也要指定dataType: "json",contentType:"appli

2017-09-15 10:10:19 875

转载 spring <context:component-scan>使用说明

在xml配置了这个标签后,spring可以自动去扫描base-pack下面或者子包下面的java文件,如果扫描到有@Component @Controller@Service等这些注解的类,则把这些类注册为bean注意:如果配置了那么标签就可以不用再xml中配置了,因为前者包含了后者。另外还提供了两个子标签1.        2.       在说明这两个子标签前,

2017-09-15 10:04:29 190

转载 SpringMVC Controller 原理简介

http://haohaoxuexi.iteye.com/blog/1753271SpringMVC Controller 介绍一、简介         在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model 返回给对

2017-09-15 10:00:10 2295 1

转载 Redis过期机制介绍

在实际开发过程中经常会遇到一些有时效性数据,比如限时优惠活动,缓存或者验证码之类的。过了一段时间就需要删除这些数据。在关系型数据库中一般都要增加一个字段记录数据的到期时间,然后周期性地检查过期数据然后删除。Redis本身就对键过期提供了很好的支持。Redis过期机制在Redis中可以使用EXPIRE命令设置一个键的存活时间(ttl: time to live),过了这段时间,该键就会自动被

2017-09-14 15:14:35 265

转载 Redis五种数据类型介绍

Redis的键值可以使用物种数据类型:字符串,散列表,列表,集合,有序集合。本文详细介绍这五种数据类型的使用方法。本文命令介绍部分只是列举了基本的命令,至于具体的使用示例,可以参考Redis官方文档:Redis命令大全字符串类型字符串是Redis中最基本的数据类型,它能够存储任何类型的字符串,包含二进制数据。可以用于存储邮箱,JSON化的对象,甚至是一张图片,一个字符串允许存储的最

2017-09-14 15:13:53 253

转载 redis数据持久化

redis数据持久化redis数据持久化分为两种方式:RDB持久化和AOF持久化。RDB持久化rdb持久化的基本原理是用.rdb文件保存当前数据库中的所有键值,redis服务重启的时候如果发现.rdb文件则自动加载文件数据到内存,回复数据库数据。     创建edb文件的方式有两种:手动和自动     1. 手动创建rdb文件         在客户端使用save命令或者b

2017-09-14 15:11:53 317

转载 Redis数据库存储和过期键实现原理

redis数据库切换数据库Redis是一个键值对数据库,读写效率很高,又有过期机制,所以经常被用来做缓存。很多人不知道,其实Redis和mysql一样,也是分数据库的,只不过我们一般使用的都是默认数据库而已。redis默认有16个数据库,编号分别为0,1,2...15,可以在redis客户端使用select命令切换数据库。如图所示:       执行了“

2017-09-14 15:11:05 428

转载 SpringMVC Controller介绍及常用注解

一、简介         在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model 返回给对应的View 进行展示。在SpringMVC 中提供了一个非常简便的定义Controller 的方法,你无需继承特定的类或实现特定的接口,只需使用@Controll

2017-09-14 10:16:04 148

原创 springMVC 的工作原理和机制

工作原理上面的是springMVC的工作原理图:1、客户端发出一个http请求给web服务器,web服务器对http请求进行解析,如果匹配DispatcherServlet的请求映射路径(在web.xml中指定),web容器将请求转交给DispatcherServlet.2、DipatcherServlet接收到这个请求之后将根据请求的信息(包括URL、Http方法、请求报文头和请求参

2017-09-14 10:12:26 279

转载 在一个千万级的数据库查寻中,如何提高查询效率?

在一个千万级的数据库查寻中,如何提高查询效率?1)数据库设计方面: a. 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 b. 应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null 可以在num上设置默认

2017-09-13 11:10:30 179

转载 为什么要重写hashCode()方法和equals()方法以及如何进行重写

本篇文章主要探讨的问题有三个:1、首先我们为什么需要重写hashCode()方法和equals()方法? 2、在什么情况下需要重写hashCode()方法和equals()方法? 3、如何重写这两个方法?二、为什么需要重写hashCode()方法和equals()方法首先,为什么要重写equals()方法。我们在定义类时,我们经常会希望两个不同对象的某些属性值相同时就认为他们相

2017-09-13 10:34:33 275

原创 在Java中如何高效判断数组中是否包含某个元素

如何检查一个数组(无序)是否包含一个特定的值?这是一个在Java中经常用到的并且非常有用的操作。同时,这个问题在Stack Overflow中也是一个非常热门的问题。在投票比较高的几个答案中给出了几种不同的方法,但是他们的时间复杂度也是各不相同的。本文将分析几种常见用法及其时间成本。检查数组是否包含某个值的方法1、使用Listpublic static boolean useList(

2017-09-13 10:23:34 267

转载 java 异常及异常使用总结

一:RuntimeException和checked Exception的区别:       1、所有方法都可以在不声明throws的情况下抛出RuntimeException及其子类;      不可以在不声明的情况下抛出非RuntimeException       例如:eg1       -------------------------------------------

2017-09-11 11:04:26 244

原创 String、StringBuffer、与StringBuilder的区别

相信大家都知道StringBuffer、StringBuilder,但是这两个的用法都差不多,到底有什么区别呢,这也是面试的时候问的比较多的一道题,这里我就来说说,这两个的区别结合String来说~  String:查看源码得知,String类的声明是:public final,所以可以很清楚的知道,fianl的话是改变不了的,所以,如果我们用String来操作字符串的时候,一旦我们字符串的值

2017-09-05 11:01:02 161

原创 String类和StringBuffer类的区别

首先,String和StringBuffer主要有2个区别:(1)String类对象为不可变对象,一旦你修改了String对象的值,隐性重新创建了一个新的对象,释放原String对象,StringBuffer类对象为可修改对象,可以通过append()方法来修改值(2)String类对象的性能远不如StringBuffer类。关于以上具体解释如下:在java中有3个类来负责字符的操

2017-09-05 10:59:23 325

转载 Java并发编程与技术内幕:消费者-生产者模式研究

消费者=生产者模式是Java并发编程中一个很好的应用实例,一般要求会如下: 1、生产者仅仅在仓储未满时候生产,仓满则停止生产。2、消费者仅仅在仓储有产品时候才能消费,仓空则等待。3、当消费者发现仓储没产品可消费时候会通知生产者生产。4、生产者在生产出可消费产品时候,应该通知等待的消费者去消费。      光看要求的话,应该不复杂。但是真正编程起来时,还是要考虑不少东西,本文

2017-09-04 11:18:25 236

转载 Java并发编程与技术内幕:聊聊锁的技术内幕(中)

摘要:本文主要讲了读写锁。一、读写锁ReadWriteLock       在上文中回顾了并发包中的可重入锁ReentrantLock,并且也分析了它的源码。从中我们知道它是一个单一锁(笔者自创概念),意思是在多人读、多人写、或同时有人读和写时。只能有一个人能拿到锁,执行代码。但是在很多场景。我们想控制它能多人同时读,但是又不让它多人写或同时读和写时。(想想这是不是和数据库的可重复读有点类

2017-09-04 11:17:45 128

转载 Java并发编程与技术内幕:聊聊锁的技术内幕(上)

一、基础知识       在Java并发编程里头,锁是一个非常重要的概念。就如同现实生活一样,如果房子上了锁。别人就进不去。Java里头如果一段代码取得了一个锁,其它地方再想去这个锁(或者再执行这个相同的代码)就都得等待锁释放。锁其实分成非常多。比如有互斥锁、读写锁、乐观锁、悲观锁、自旋锁、公平锁、非公平锁等。包括信号量其实都可以认为是一个锁。 1、什么时需要锁呢?     其实非常多

2017-09-04 11:17:10 141

转载 Java并发编程与技术内幕:Callable、Future、FutureTask、CompletionService

在上一文章中,笔者介绍了线程池及其内部的原理。今天主要讲的也是和线程相关的内容。一般情况下,使用Runnable接口、Thread实现的线程我们都是无法返回结果的。但是如果对一些场合需要线程返回的结果。就要使用用Callable、Future、FutureTask、CompletionService这几个类。Callable只能在ExecutorService的线程池中跑,但有返回结果,也可以通过

2017-09-04 11:16:11 192

转载 Java并发编程与技术内幕:线程池深入理解

摘要: 本文主要讲了Java当中的线程池的使用方法、注意事项及其实现源码实现原理,并辅以实例加以说明,对加深Java线程池的理解有很大的帮助。         首先,讲讲什么是线程池?照笔者的简单理解,其实就是一组线程实时处理休眠状态,等待唤醒执行。那么为什么要有线程池这个东西呢?可以从以下几个方面来考虑:其一、减少在创建和销毁线程上所花的时间以及系统资源的开销 。其二、2将当前任务与主线程隔

2017-09-04 11:15:26 178

转载 java多线程学习总结

一扩展javalangThread类二实现javalangRunnable接口三Thread和Runnable的区别四线程状态转换五线程调度六常用函数说明使用方式为什么要用join方法七常见线程名词解释八线程同步九线程数据传递本文中主要讲了java中多线程的使用方法、线程同步、线程数据传递、线程状态及相应的一些线程函数的用法、概述。    首先讲一下线程的进程和线程的区别:

2017-09-04 11:12:10 182

原创 三大框架面试题

Struts谈谈你对Struts的理解。答:1.struts是一个按MVC模式设计的Web层框架,其实它就是一个大大的servlet,这个Servlet名为ActionServlet,或是ActionServlet的子类。我们可以在web.xml文件中将符合某种特征的所有请求交给这个Servlet处理,这个Servlet再参照一个配置文件(通常为/WEB-INF/strut

2017-09-04 09:56:15 393

转载 Spring源码深度解析(八)解析及注册BeanDefinitions

从下面开始说:这段代码还比较清晰,在Spirng的配置里面有两大类Bean声明,一个是默认的,如:另一类就是自定义的,如:两种方式解析差别还挺大的,如果采用spring默认配置,Spring自然知道怎么做,而如果使用自定义的方式需要增加一些接口和配置了。

2017-09-01 11:33:05 129

转载 Spring源码深度解析(七)获取Document

经过了验证模式准备的步骤就可以进行Document加载了,XmlBeanFactoryReader类对于文档读取并没有亲历亲为,而是委托给了DocumentLaoder去执行,DocumentLoader是个接口,真正调用的是DefaultDocumentLoader,解析代码如下:ddzaidf  在这里提及下EntityResolver,对于参数entityResolver

2017-09-01 11:32:31 138

转载 Spring源码深度解析(六)获取XML的验证模式

了解XML文件的都知道,XML文件的验证模式保证了XML文件的正确性,而比较常用的验证模式有两种:DTD和XSD.它们之间区别是:DTD与XSD验证模式的区别地方DTD(Document Type Definition)即文档类型定义,是一种XML约束模式语言,是XML文件的验证机制,属于XML文件组成的一部分。DTD是一种保证XML文档格式正确的有效方法,可以通过比较XML文档和

2017-09-01 11:31:58 167

转载 Spring源码深度解析(五)加载Bean

之前提到的在XmlBeanFactory构造函数中调用了XmlBeanDefinitionReader类型的reader属性提供的方法this.reader.loadBeanDefinitions(resource),而这句代码则是整个资源加载的切入点,我们先来看看这个方法的时序图,如图2-9所示:看到图2-9我们才知道,原来饶了这么久还没有切入正题,还一直在为加载XML文件和解析

2017-09-01 11:29:27 182

转载 Spring源码深度解析(四)容器的基础XmlBeanFactory

现在我们已经对Spring的容器有了一个大概的了解,尽管很多地方还很迷糊,但是不要紧,下面我们开始探讨每个步骤的详细实现。接下来我们要深入分析以下代码的实现:BeanFactory bf = new XmlBeanFactory(new ClassPathResource("beanFactoryTest.xml"));通过XmlBeanFactory初始化时序图,图2—7,我们看

2017-09-01 11:22:17 205

转载 Spring源码深度解析(三)Spring的结构组成

(1)beans包的层级结构阅读源码最好的方式是通过示例跟着操作走一遍,大多数时候可能会被复杂源码绕来绕去,绕到自己不知道身在何处,如果配合UML还是可以搞定的。我们先来spring-beans包的源码结构beans包中各个源码的功能如下。src/main/java用于展现Spring的主要逻辑src/mian/resources用于存放系统的配置文件src

2017-09-01 11:00:17 167

转载 Spring源码深度解析(二)容器的基本用法

bean是spring中最核心的东西,我们看看bean的定义。public class MyTestBean{       private String testStr="testStr";       public String getTestStr(){              return testStr;        }       

2017-09-01 10:59:20 151

转载 Spring源码深度解析(一)Spring的整体架构

spring框架是一个分层架构,它包含一系列的功能要素,被分为大约20个模块,如下图所示:这些模块被总结为以下几个部分:(1)Core ContainerCore Container(核心容器)包含有Core,Beans,Context,Expression Language模块。Core 和 Beans模块是框架的基础部分,提供IOC(控制反转)和依赖

2017-09-01 10:58:40 225

原创 线程基础知识

1、线程安全与非线程安全的区别?线程安全:获得的实例变量的值是经过同步处理的,不会出现脏读的现象。非线程安全:多个线程对同一对象中的实例变量进行并发访问的时候,产生脏读,就是读取到的数据是被更改过的。* 线程安全的问题存在于实例变量中,如果为方法内部的私有变量,则不会出现非线程安全问题。2、synchorized关键字加到static方法上是给Class类上锁,加到非static方

2017-08-28 16:26:46 172

原创 sleep(),wait(),yield()和join()方法的区别

sleep()   sleep()方法需要指定等待的时间,它可以让当前正在执行的线程在指定的时间内暂停执行,进入阻塞状态,该方法既可以让其他同优先级或者高优先级的线程得到执行的机会,也可以让低优先级的线程得到执行机会。但是sleep()方法不会释放“锁标志”,也就是说如果有synchronized同步快,其他线程仍然不能访问共享数据。   wait()   wait()方法需要

2017-08-28 15:44:50 151

空空如也

空空如也

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

TA关注的人

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