自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 idea生成SpringBoot项目和拦截器设置

maven创建springBoot工程很简单:File-->new-->project-->Spring Initializr-->next-->next-->web-->web里面自动生成了一个启动类SpringbootExampleApplication:import org.springframework.boot.SpringAppl...

2018-06-20 15:32:25 1841

原创 maven的pom文件已导入依赖,但是无法引入该包

在idea项目--settings--plugins--Browse resporities中下载lombok,并在maven工程的pom文件中已添加相关依赖,如:<dependency> <groupId>org.projectlombok</groupId> <art...

2018-06-19 23:29:58 50693 15

转载 SpringMVC注解@RequestParam

在SpringMVC后台控制层获取参数的方式主要有两种,一种是request.getParameter("name"),另外一种是用注解@RequestParam直接获取。这里主要讲这个注解 一、基本使用,获取提交的参数 后端代码: Java代码  @RequestMapping("testRequestParam")       public String filesUpload(@Reques...

2018-06-19 21:03:08 326

转载 @RequestBody, @ResponseBody 注解详解

简介:@RequestBody作用:       i) 该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上;      ii) 再把HttpMessageConverter返回的对象数据绑定到 controller中方法的参数上。使用时机:A) GET、POST方式提时, 根据request ...

2018-06-19 20:19:33 359

原创 Git学习原理总结

新建本地仓库两种方式:1.项目工作目录下,运行git bash后,执行init命令,生成.git目录。2.项目工作目录下,运行git bash后,clone远程仓库连接,拷贝每个文件的每个版本。了解两种协议 https或者ssh。工作目录(文件所在位置)+暂存区(.git目录下)工作目录下所有文件只有两种状态:已跟踪和未跟踪。已跟踪分为三种状态:未修改、已修改和已放入暂存区。clone下来的均为已...

2018-06-18 22:16:23 256

转载 Error running Tomcat8: Address localhost:8080 is already in use

有时候运行web项目的时候会遇到 Error running Tomcat8: Address localhost:8080 is already in use 的错误,导致web项目无法运行。这明显是8080端口已经被占用,解决办法如下:第一步,命令提示符号,执行命令:netstat -ano12可见,占用8080端口的进程的PID是3964。 **第二步,命令...

2018-05-28 21:37:12 10165

原创 IDEA左侧的project目录中,看不到项目的文件结构图

按下列步骤操作:1. 关闭IDEA, 2.然后删除项目文件夹下的.idea文件夹3.重新用IDEA工具打开项目

2018-05-28 21:17:45 5959 1

原创 Redis事务源码解析

事务定义:将多个命令打包,然后一次性、按顺序执行多个命令。在执行命令期间(EXEC),不会中断事务而去执行其他客户端的命令请求。满足ACID中的原子性、一致性和隔离性。举个例子:redis 127.0.0.1:6379> MULTI --------------事务开始命令OKredis 127.0.0.1:6379> SET name wqh ...

2018-05-24 13:23:45 254

原创 Redis时间事件源码解析

Redis的时间事件分为两类:1、定时事件:让一段程序在指定的时间之后执行一次。2、周期性事件:让一段程序每隔指定的时间就执行一次。(比如serverCron函数,每秒执行次数通过redis.conf/hz设置)目前版本的Redis只使用周期性事件,而没有使用定时事件。具体源码参考ae.c/ae.h文件中。文中的源码注释参考于黄建宏。在介绍时间事件结构之前,先看表征事件处理器的状态的结构:type...

2018-05-17 20:14:32 1045

转载 Redis的AOF持久化深入解析

Redis提供两种持久化方式,RDB和AOF;与RDB不同,AOF可以完整的记录整个数据库,而不像RDB只是数据库某一时刻的快照; 那么AOF模式为什么可以完整的记录整个数据库呢? 原理:在AOF模式下,Redis会把执行过的每一条更新命令记录下来,保存到AOF文件中;当Redis需要恢复数据库数据时,只需要从之前保存的AOF文件中依次读取命令,执行即可 eg. Shell代码  我们执行了以下命...

2018-05-15 15:32:46 4379

转载 linux 同步IO: sync、fsync与fdatasync

传统的UNIX实现在内核中设有缓冲区高速缓存或页面高速缓存,大多数磁盘I/O都通过缓冲进行。当将数据写入文件时,内核通常先将该数据复制到其中一个缓冲区中,如果该缓冲区尚未写满,则并不将其排入输出队列,而是等待其写满或者当内核需要重用该缓冲区以便存放其他磁盘块数据时,再将该缓冲排入输出队列,然后待其到达队首时,才进行实际的I/O操作。这种输出方式被称为延迟写(delayed write)(Bach ...

2018-05-05 16:26:22 262

转载 Redis过期键删除机制(主键失效)

作为一种定期清理无效数据的重要机制,主键失效存在于大多数缓存系统中,Reids也不例外。在Redis提供的诸多命令中,EXPIRE、EXPIREAT、PEXPIRE、PEXPIREAT以及SETEX和PSETEX均可以用来设置一条Key-Value对的失效时间,而一条Key-Value对一旦被关联了失效时间就会在到期后自动删除(或者说变得无法访问更为准确)。可以说,主键失效这个概念还是比较容易理解...

2018-04-25 20:13:58 2799

原创 Redis跳跃表源码解析

跳跃表是一种有序的数据结构,支持平均O(logN)、最坏O(N)复杂度的节点查找。跳跃表应用在有序集合键和集群节点的场景上。本文参考Redis3.0版本的源码,注释参考了黄建宏的注释,并加上自己的理解。对于跳跃表和节点的定义是在redis.h中,而常用API的实现是在t_zset.c中。定义:/* * 跳跃表 */typedef struct zskiplist { // 表头节点...

2018-04-23 21:51:14 979

原创 SpringMVC学习小结

<mvc:annotation-driven/>启动注解,自动注册DefaultAnnotationHandlerMapping,AnnotationMethodHandlerAdapter。RequestMapping有五种URL映射方式:1、标准URL映射 2、Ant风格的URL映射?:匹配单个字符*:匹配0个或者多个字符**:匹配0个或者多个/分隔符3、占位符映射:可以通过一个或...

2018-03-11 17:31:44 195

原创 java.sql.SQLException: Access denied for user 'wqh'@'localhost' (using password: YES)

在利用Spring+SpringMVC+Mybatis搭建web系统时,出现了上述bug,一直想不通。数据库链接参数设置为(jdbc.properties文件):driver=com.mysql.jdbc.Driverurl=jdbc:mysql://localhost:3306/seckillusername=rootpassword=seuwqh在整合spring和mybtais中的配置...

2018-03-09 15:23:38 742

转载 Redis在windows下安装过程

一、下载windows版本的Redis去官网找了很久,发现原来在官网上可以下载的windows版本的,现在官网以及没有下载地址,只能在github上下载,官网只提供linux版本的下载官网下载地址:http://redis.io/downloadgithub下载地址:https://github.com/MSOpenTech/redis/tags二、安装Redis(zip形式)...

2018-01-12 09:39:15 359

转载 反射如何破坏单例模式

一个单例类:public class Singleton { private static Singleton instance = new Singleton(); private Singleton() {} public static Singleton getInstance() { return instance;

2017-09-20 18:12:35 560 2

转载 聚集索引和非聚集索引(整理)

聚集索引  一种索引,该索引中键值的逻辑顺序决定了表中相应行的物理顺序。   聚集索引确定表中数据的物理顺序。聚集索引类似于电话簿,后者按姓氏排列数据。由于聚集索引规定数据在表中的物理存储顺序,因此一个表只能包含一个聚集索引。但该索引可以包含多个列(组合索引),就像电话簿按姓氏和名字进行组织一样。          聚集索引对于那些经常要搜索范围值的列特别有效。使用聚集索引找到

2017-09-20 13:45:29 233

转载 TCP 为什么是三次握手,为什么不是两次或四次?

TCP作为一种可靠传输控制协议,其核心思想:既要保证数据可靠传输,又要提高传输的效率,而用三次恰恰可以满足以上两方面的需求!TCP可靠传输的精髓:TCP连接的一方A,由操作系统动态随机选取一个32位长的序列号(Initial Sequence Number),假设A的初始序列号为1000,以该序列号为原点,对自己将要发送的每个字节的数据进行编号,1001,1002,1003…,并把自己的初

2017-09-20 13:30:43 1064

原创 一组数中如果只有一个数是1个,其他数是3个,找出这个数?

思想:模拟3进制不进位加法运算,所有数相同位相加对3取余,得到的结果要么为1,要么为0,最终结果即为那个出现一次的数。代码: public int getSingle(int[] arr, int k){ int res = 0; int sum = 0; for (int i = 0; i < 32; i++) {

2017-09-20 10:19:39 609

转载 BigDecimal用法详解

一、BigDecimal介绍      Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数。在实际应用中,需要对更大或者更小的数进行运算和处理。float和double只能用来做科学计算或者是工程计算,在商业计算中若需要精确的计算结果则要用java.math.BigDecimal

2017-09-19 22:58:56 615

转载 为什么只需要一个eden而需要两个survivor?

在JVM的新生代内存中,为什么除了Eden区,还要设置两个Survivor区?1 为什么要有Survivor区先不去想为什么有两个Survivor区,第一个问题是,设置Survivor区的意义在哪里? 如果没有Survivor,Eden区每进行一次Minor GC,存活的对象就会被送到老年代。老年代很快被填满,触发Major GC(因为Major GC一般伴随着Minor GC,也

2017-09-19 18:51:50 5170 6

原创 Mysql两种存储引擎的区别

InnoDB:(1)具有事务(commit)、回滚(rollback)和崩溃修复能力(crash recovery capabilities)的事务安全(transaction-safe (ACID compliant))型表。(2)支持外键。(3)InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计

2017-09-19 14:59:36 6108 1

转载 怎么知道索引是否生效

explain显示了MySQL如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。使用方法,在select语句前加上explain就可以了:如:explain select surname,first_name from a,b where a.id=b.id EXPLAIN列的解释:table:显示这一行的数据是关于哪张

2017-09-19 14:36:17 3297

转载 数据库创建索引的注意事项

出于对作者的尊重和感谢,原文地址为 http://www.studyofnet.com/news/449.html索引可以提高数据的访问速度,但同时也增加了插入、更新和删除操作的处理时间。所以是否要为表增加索引、索引建立在那些字段上,是创建索引前必须要考虑的问题。解决此问题就是分析应用程序的业务处理、数据使用,为经常被用作查询条件、或者被要求排序的字段建立索引。索引是建立在数据库表中的某些

2017-09-19 14:27:30 2562

原创 死锁的例子以及解决办法

给个死锁的例子:public class TestDeadLock implements Runnable{ public int flag = 0; static Object o1 = new Object(); static Object o2 = new Object(); @Override public void run() {

2017-09-19 10:18:56 2311 1

转载 操作系统中锁的实现原理

在多线程编程中,为了保证数据操作的一致性,操作系统引入了锁机制,用于保证临界区代码的安全。通过锁机制,能够保证在多核多线程环境中,在某一个时间点上,只能有一个线程进入临界区代码,从而保证临界区中操作数据的一致性。所谓的锁,说白了就是内存中的一个整型数,拥有两种状态:空闲状态和上锁状态。加锁时,判断锁是否空闲,如果空闲,修改为上锁状态,返回成功;如果已经上锁,则返回失败。解锁时,则把锁状态修

2017-09-19 09:54:38 5945

原创 Iterator原理(jdk1.8)

Iterator用于遍历集合中的元素,适用于不知道集合内部结构的情况。用户不再与集合类交互,而是与Iterator交互,其清楚知道集合类的内部状态,通过控制iterator达到遍历集合的目的。Iterator接口:public interface Iterator { boolean hasNext(); E next(); default void remov

2017-09-18 22:26:50 1078

转载 数据库索引之稠密索引和稀疏索引

(搜索码:用于在文件中查找记录的属性或属性集)稠密索引:如果记录是排好序的,我们就可以在记录上建立稠密索引。如上图所示:在稠密索引中文件中的每个搜索码值都对应一个索引值。索引项包括索引值以及指向该搜索码值的第一条数据记录的指针。由于该索引符合聚集索引,因此记录根据相同的码值排序。稀疏索引:如上图所示:在稀疏索引中,只为索引码的某些值建立索引项。同理因为稀疏索引也是聚集索引。

2017-09-18 17:13:33 2083

原创 Spring的事务管理机制和传播机制

问:Spring的事务管理是怎么搞的?Spring 的事务,可以说是 Spring AOP 的一种实现。AOP面向切面编程,即在不修改源代码的情况下,对原有功能进行扩展,通过代理类来对具体类进行操作。Spring声明式事务让我们从复杂的事务处理中得到解脱。使得我们再也无需要去处理获得连接、关闭连接、事务提交和回滚等这些操作。再也无需要我们在与事务相关的方法中处理大量的try…catch

2017-09-18 10:15:15 979

原创 TCP 与 UDP 的区别及应用场景

TCP(Transmission Control Protocol),又叫传输控制协议。UDP(User Datagram Protocol),又叫用户数据报协议。它们都是传输层的协议,但两者的机制不同,它们的区别和应用场景如下:TCP的可靠性理解:TCP的可靠性应该是相对于UDP不可靠传输来说的,因为UDP提供的是不可靠的数据报服务,不保证数据报能到达接收端,可能

2017-09-18 09:23:41 704

原创 Java四种引用类型

强引用:当内存不够时,宁愿抛出OutOfMemoryError错误,也不会去回收。Object object = new Object();String str = "hello";显示的置null或者脱离其作用域范围,不存在任何引用时即可以被回收。应用:ArrayList源码:remove+clear public E remove(int index) {

2017-09-16 21:49:20 252

转载 设计模式之适配器模式

现实生活中的适配器本文讨论适配器模式。适配器模式是23中设计模式之一,它的主要作用是在新接口和老接口之间进行适配。它非常像我们出国旅行时带的电源转换器。为了举这个例子,我还特意去京东上搜了一下电源转换器,确实看到了很多地方的标准不一样。我们国家的电器使用普通的扁平两项或三项插头,而去外国的话,使用的标准就不一样了,比如德国,使用的是德国标准,是两项圆头的插头。如果去德国旅游,那么我们使

2017-09-16 19:35:43 203

原创 DNS域名解析过程

DNS:域名系统,一个用来维护主机名和IP地址之间对应关系的“数据库”。DNS域名解析过程可以参考下图:参考博客:http://369369.blog.51cto.com/319630/812889/

2017-09-16 10:28:07 242

原创 Redis的五种数据结构类型

Redis的五种数据结构类型:(值的类型)STRING(字符串):值可以为字符串、整数或者浮点数LIST(列表):链表结构(双端),可以存储多个字符串(可以重复)SET(集合):与列表类似,但存储的字符串不可以相同HASH(散列):存储多个简直对的映射。散列存储的键各不相同,无序排列,值可以为字符串或者数字值。----看成一个微缩版的Redis/关系数据库里面的行ZSET(有序

2017-09-15 10:23:16 457

转载 JAVA反射机制详解

关于JAVA反射我觉得是我看过的写的最好一篇博客,地址:https://www.daidingkang.cc/2017/07/18/java-reflection-annotations/前言现在在我们构建自己或公司的项目中,或多或少都会依赖几个流行比较屌的第三方库,比如:Butter Knife、Retrofit 2、Dagger 2、GreenDao等,如果你没用过,那你需要找时间

2017-09-13 22:51:30 272

转载 MySQL排序原理与案例分析

之前碰到一个Mysql的order by是什么排序算法,上网查询了以下,转载了这篇博客。http://www.cnblogs.com/cchust/p/5304594.html前言      排序是数据库中的一个基本功能,MySQL也不例外。用户通过Order by语句即能达到将指定的结果集排序的目的,其实不仅仅是Order by语句,Group by语句,Distinct语句都会

2017-09-13 10:34:38 217

转载 Java finally语句到底是在return之前还是之后执行?

网上有很多人探讨Java中异常捕获机制try...catch...finally块中的finally语句是不是一定会被执行?很多人都说不是,当然他们的回答是正确的,经过我试验,至少有两种情况下finally语句是不会被执行的:(1)try语句没有被执行到,如在try语句之前就返回了,这样finally语句就不会执行,这也说明了finally语句被执行的必要而非充分条件是:相应的try语句一定被

2017-09-12 22:13:42 192

原创 序列化与反序列化

定义把Java 对象转换为字节序列的过程称为对象的序列化。把字节序列恢复为Java 对象的过程称为对象的反序列化。应用场景(1)实现了数据的持久化,通过序列化可以把数据永久地保存到硬盘上(通常存放在文件里)(2)利用序列化实现远程通信,即在网络上传送对象的字节序列。实现方式所有实现序列化的类都必须实现Serializable 接口,它是一种标记接口,里面没有任何方法。当

2017-09-12 15:34:45 199

原创 String和StringBuilder作为方法参数的区别

String作为方法参数:public class StringTest { public static void main(String[] args) { String s1 = new String("string"); change(s1); System.out.println(s1); } public sta

2017-09-11 22:34:53 700

空空如也

空空如也

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

TA关注的人

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