自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

zp的博客

学而不思则罔,思而不学则殆

  • 博客(50)
  • 资源 (9)
  • 收藏
  • 关注

原创 Java NIO知识总结

 什么是NIO?Java NIO(New IO)是一个可以替代标准Java IO API的IO API(从Java 1.4开始),Java NIO提供了与标准IO不同的IO工作方式。Java NIO: Channels and Buffers(通道和缓冲区)标准的IO基于字节流和字符流进行操作的,而NIO是基于通道(Channel)和缓冲区(Buffer)进行操作,数据总是从通道读...

2018-08-30 00:27:24 940 1

原创 Java常用设计模式

什么是设计模式?设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。设计模式的分类?总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式...

2018-08-29 15:02:37 441

原创 设计模式的六大原则

1、开闭原则(Open Close Principle)开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。所以一句话概括就是:为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类,后面的具体设计中我们会提到这点。2、里氏代换原则(Liskov Substitution Principle)里氏代换原...

2018-08-29 12:27:17 155

原创 Java内置注解与自定义注解

什么是注解?Jdk1.5新增新技术,注解。很多框架为了简化代码,都会提供有些注解。可以理解为插件,是代码级别的插件,在类的方法上写:@XXX,就是在代码上插入了一个插件。注解不会也不能影响代码的实际逻辑,仅仅起到辅助性的作用。注解分类:内置注解(也称为元注解 jdk 自带注解)、自定义注解(Spring框架) 什么是内置注解 比如(1) @SuppressWarning...

2018-08-29 11:26:46 629

原创 Mysql主从复制与读写分离原理及配置教程

一、什么是主从复制?主从复制的原理 : 简而言之,MySQL-A在进行写操作时,都会更新数据库A的二进制sql日志,通过网络传输将二进制sql日志传递给数据库B,B再将二进制sql日志写入B数据库,完成主从复制。 影响MySQL-A数据库的操作,在数据库执行后,都会写入本地的日志系统A中。 假设,实时的将变化了的日志系统中的数据库事件操作,在MYSQL-A的3306端口,通过网络发给M...

2018-08-28 23:37:04 7415

原创 【面试】MyISAM 和 INNODB的区别是什么?

MyISAM存储: 如果表对事务要求不高,同时是以查询和添加为主的,我们考虑使用myisam存储引擎,比如bbs 中的 发帖表,回复表,还有批量添加MyISAM效率高INNODB 存储: 对事务要求高,保存的数据都是重要数据,我们建议使用INNODB,比如订单表,账号表。【面试重点】MyISAM 和 INNODB的区别?1. 事务安全(MyISAM不支持事务,INNODB支持事务)...

2018-08-28 21:31:47 16747 1

原创 Mysql索引原理及SQL优化

一、什么是索引?索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-tree的形式保存。如果没有索引,执行查询时MySQL必须从第一个记录开始扫描整个表的所有记录,直至找到符合要求的记录。表里面的记录数量越多,这个操作的代价就越高。如果作为搜索条件的列上已经创建了索引,MySQL无需扫描任何记录即可迅速得到目标记录所在的位置。如果表有100万条记录,通过索引查找记录至少要比顺序扫...

2018-08-28 19:53:26 5673 1

原创 Java程序员必须知道的Mysql优化方案

数据库优化的一些手段:1、表的设计合理化(遵循3大范式)2、添加适当索引(index) [四种: 普通索引、主键索引、唯一索引、全文索引]3、SQL语句优化4、分表技术(水平分割、垂直分割)5、读写[写: update/delete/add]分离6、存储过程 [模块化编程,可以提高速度]7、对mysql配置优化 [配置最大并发数my.ini, 调整缓存大小 ]8、m...

2018-08-28 15:44:36 650

原创 springboot整合多数据源及传统的分布式事务解决方法jta-atomikos

所谓的多数据源,简而言之就是:在一个项目中,有多个jdbc连接。那么我们在在实际项目中,应该怎么样搭建多数据源并区分数据源呢?举个例子 : 我们这个项目需要访问Test和Test1两个不同的数据库,我们可以采用分包结构,设置读取不同的数据源前缀,选择连接不同数据源。分包结构cn.itcats.test--- 访问Test数据库        dao        service...

2018-08-28 12:31:39 3930

原创 Springboot快速入门与整合

一.搭建一个springboot工程    1、创建一个Maven工程(打包方式为jar)    2、pom文件引入依赖 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artif...

2018-08-28 00:34:09 364

原创 springMVC返回数据的四种方式

1、通过request域request.setAttribute()返回@RequestMapping("/login")public String index(HttpServletRequest request){ request.setAttribute("name", "张三"); request.setAttribute("role", "管理员"); r...

2018-08-27 21:55:00 2926 1

原创 使用java反射机制+dom4j实现SpringIOC原理

SpringIOC的底层原理:1、解析xml文件——使用dom4j2、通过bean id查找到对象的xml节点,并获取该xml上class节点属性——获取根节点后遍历得到二级节点3、通过java的反射机制初始化类4、使用java的反射机制为私有属性赋值——遍历二级节点获得三级节点 API对应:List<Element> ele3 = element.elements(...

2018-08-27 19:03:27 699 1

转载 java中创建对象的几种方式

1.使用new关键字使用 new 关键字创建对象,实际上是做了两个工作,一是在内存中开辟空间,二是初始化对象。但是new 关键字只能创建非抽象对象。2. 使用反射创建对象反射是对于任意一个正在运行的类,都能动态获取到他的属性和方法。反射创建对象分为两种方式,一是使用Class类的new Instance() 方法,二是使用Constructor类的new Instatnce() 方法。...

2018-08-27 16:14:33 408

转载 什么是死锁,简述死锁发生的四个必要条件,如何避免与预防死锁

什么是死锁死锁是指多个进程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进。例如,在某一个计算机系统中只有一台打印机和一台输入 设备,进程P1正占用输入设备,同时又提出使用打印机的请求,但此时打印机正被进程P2 所占用,而P2在未释放打印机之前,又提出请求使用正被P1占用着的输入设备。这样两个进程相互无休止地等待下去,均无法继续执行,此时两个进程陷入死锁状态。...

2018-08-22 23:35:02 693

原创 Java多线程之守护线程与用户线程

 Java中有两种线程,一种是用户线程,另一种是守护线程。 用户线程是指用户自定义创建的线程,主线程停止,用户线程不会停止守护线程当进程不存在或主线程停止,守护线程也会被停止。 使用Thread类中的setDaemon(true)方法设置为守护线程...

2018-08-22 15:46:21 215

原创 使用solr进行高亮显示、过滤、分组、分页排序查询

public class HighlightAndFilterQueryDemo { @Autowired private SolrTemplate solrTemplate; public Map search(Map searchMap){ Map map = new HashMap(); //1、查询列表 "rows" : contentList map.putA...

2018-08-21 14:17:21 2479

原创 使用solr进行高亮显示【含angualarJS无法正常解析的解决方案】

废话不多说,直接贴代码,看完代码后,我们再解析:代码:/***通过关键词查询结果并高亮显示*/public class HighlightQueryDemo { @Autowired private SolrTemplate solrTemplate; public Map search(Map searchMap){ Map map = new HashMap(...

2018-08-20 23:32:13 753

转载 Maven 项目的 classpath 理解

    相信很多初学的新同学在Maven项目中配置Spring的配置文件时,总会遇到各种找不到的问题,其实理解Tomcat的加载机制,问题便会迎刃而解,那么我们来看Tomcat启动是怎么一步步加载的.    首先Tomcat启动时,jvm的bootstrapL...

2018-08-20 14:15:36 5667

原创 FastDFS的架构与上传图片使用步骤

1、什么是FastDFS?FastDFS 是用 c 语言编写的一款开源的分布式文件系统。FastDFS 为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用 FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。FastDFS 架构包括 Tracker server 和 Storage server。客户端请求 Tracke...

2018-08-19 01:27:36 3313

原创 通过Dubbo注解实现RPC调用

启动Dubbo服务有2个方式,1是通过xml配置,2是通过注解来实现,这点和Spring相似。1、采用XML配置如下: 提供方:<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://...

2018-08-18 12:52:22 4743

原创 form表单中如何使用a标签代替button或commit进行数据提交?

1、申明form的id2、在<a>标签内书写onclick="document:loginForm.submit()" 具体用例:<form class="sui-form" action="/login" method="post" id="loginForm"> <div class="input-p

2018-08-17 16:58:19 11827 1

原创 前端框架AngularJS入门与实战

1、AngularJS简介AngularJS  诞生于2009年,由Misko Hevery 等人创建,后为Google所收购。是一款优秀的前端JS框架,已经被用于Google的多款产品当中。AngularJS有着诸多特性,最为核心的是:MVC、模块化、自动化双向数据绑定、依赖注入等等。 本文简单介绍了AngularJS的四大特征,从0开始入门前端框架AngularJS,并结合几个...

2018-08-14 18:49:37 2494

原创 zookeeper的安装步骤(集群版)

zookeeper集群架构示意图:由于zookeeper的选举策略,zookeeper集群中机器数量为奇数台,且至少为3台1、下载zookeeper,我这里用的是3.4.6版本2、在安装zookeeper之前,必须安装jdk并配置好环境变量3、解压缩压缩包 tar -zxvf zookeeper-3.4.6.tar.gz -C /root/apps/4、进入co...

2018-08-13 14:35:06 243

转载 Mybatis分页插件——PageHelper使用与原理介绍

推荐一款Mybatis分页插件以前也写过一篇博文介绍Mybatis的插件,以及如何通过Mybatis的插件功能实现一个自定义的分页插件,但是那个插件的侵入性是比较大的。前段时间遇到了一款开源的Mybatis分页插件,叫PageHelper,github地址是https://github.com/...

2018-08-11 14:54:14 18754

转载 JUnit4 中@AfterClass @BeforeClass @after @before的区别对比

JUnit4使用Java5中的注解(annotation),以下是JUnit4常用的几个annotation: @Before:初始化方法   对于每一个测试方法都要执行一次(注意与BeforeClass区别,后者是对于所有方法执行一次)@After:释放资源  对于每一个测试方法都要执行一次(注意与AfterClass区别,后者是对于所有方法执行一次)@Test:测试方法,在这里可以测试期...

2018-08-11 14:50:51 642

转载 理解事务的4种隔离级别

数据库事务的隔离级别有4种,由低到高分别为Read uncommitted 、Read committed 、Repeatable read 、Serializable 。而且,在事务的并发操作中可能会出现脏读,不可重复读,幻读。下面通过事例一一阐述它们的概念与联系。Read uncommitted读未提交,顾...

2018-08-07 19:58:22 1991

转载 Spring各个jar包作用

Spring AOP:Spring的面向切面编程,提供AOP(面向切面编程)的实现Spring Aspects:Spring提供的对AspectJ框架的整合Spring Beans:Spring IOC的基础实现,包含访问配置文件、创建和管理bean等。Spring Context:在基础IOC功能上提供扩展服务,此外还提供许多企业级服务的支持,有邮件服务、任务调度、JNDI定位,EJB集成...

2018-08-07 17:39:08 240

原创 Spring框架总结【无比详细】

以下内容是我在初学spring时候做的笔记,当时是把比较放在了备忘录里面,如今把笔记重整到csdn上,为了复习也为了分析给大家,笔记写的算比较完整,回看自己做的还是有点羞涩。如有错误之处,欢迎指正,当我日后更强大的时候,我会不断的对内容进行补充和完善。当然学习也就是这么一个过程,学习-实践-总结-实践-总结... 转载请申明原文地址,希望大家支持,谢谢。1、IOC和DIIOC: ...

2018-08-07 15:33:17 249193 52

转载 Servlet的生命周期和工作原理

Servlet生命周期分为三个阶段: 1:初始化阶段,调用init()方法 2:响应客户请求阶段,调用service()方法 3:终止阶段,调用destory()方法1:Servlet的生命周期指的是 Servlet从被Web服务器加载到它被销毁的整个生命过程 Web服务器加载Servlet:Web服...

2018-08-07 00:49:52 308

原创 JSP内置对象和属性

1.request对象(javax.servlet.HttpServletRequest)     客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应。包括头信息、系统信息、请求方式以及请求参数等信息,作用域:一次请求中。2.response对象     response对象包含了响应客户请求的有关信息,但在JSP中很少直接用到它。它是HttpServ...

2018-08-06 23:34:18 294

转载 java的arrayCopy用法

先贴上语法:public static void arraycopy(Object src, int srcPos, Object dest, ...

2018-08-06 22:53:44 1530

原创 Java枚举类的底层实现

这题来自于牛客网,后了解了枚举类的实现原理,理解了这题的真正意思。 枚举类在后台实现时,实际上是转化为一个继承了java.lang.Enum类的实体类,原先的枚举类型变成对应的实体类型,上例中AccountType变成了个class AccountType,并且会生成一个新的构造函数,若原来有构造函数,则在此基础上添加两个参数,生成新的构造函数,如上例子枚举类中:枚举类的构造方法:...

2018-08-06 22:46:33 2863 2

原创 SpringMVC工作原理

SpringMVC的工作原理图:SpringMVC流程[面试回答]1、  用户发送请求至前端控制器DispatcherServlet。2、  DispatcherServlet收到请求调用HandlerMapping处理器映射器。3、  处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherS...

2018-08-06 16:40:02 645 1

原创 Java仅用队列结构实现栈结构和仅用栈结构实现队列结构【高频考点】

问题:1、如何仅用队列结构实现栈结构?2、如何仅用栈结构实现队列结构?  实现思路:1、使用两个队列结构Queue1和Queue2 ,push操作一样,添加push()到Queue1,pop()核心是把 Queue1 除最后添加的元素"剪切"到 Queue2 ,最后poll()剩下的第一个元素,即为最后添加的元素,最后 再交换Queue1和Queue2和引用。如:  ...

2018-08-05 20:10:22 393

原创 Java算法之设计栈并返回栈中最小元素【高频考点】

问题:实现一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作。【要求】 1.pop、push、getMin操作的时间复杂度都是O(1)。 2.设计的栈类型可以使用现成的栈结构。 思路: 具体代码实现:package cn.itcats.array;import java.util.Stack;/** * 实现一个特殊的栈,在实现栈的基...

2018-08-05 18:19:35 606

原创 使用Java数组结构实现大小固定的队列和栈【高频考点】

一、固定大小数组实现栈实现栈中的push(压栈)、pop(弹栈)、peek(返回栈顶第一个元素)。若压栈时将超过数组的最大容量,抛出异常信息,若弹栈时index = -1,同样抛出异常信息。核心思想:使用index作为指针,当进行压栈时候,判断index和arrSize的关系,且执行完压栈操作,index++,index指到元素下一个索引位置。当进行弹栈时候,同样判断index和arrSi...

2018-08-05 16:34:47 1077

原创 java用桶思想比较相邻元素最大差值【高频考点】

题目:给定一个数组,求如果排序之后,相邻两数的最大差值,要求时间复杂度O(N),且要求不能用非基于比较的排序。 什么是非基于比较的排序?如桶排序、计数排序、基数排序等1、非基于比较的排序,与被排序的样本的实际数据状况很有关系,实际中并不经常使用2、时间复杂度O(N),额外空间复杂度O(N)3、稳定的排序 核心思想:上一个(含值)桶的最大值和下一个(含值)桶的最小...

2018-08-05 14:38:05 1128

原创 Java工程中的综合排序算法选取

1、若你需要排序的是基本数据类型,则选择快速排序。若你需要排序的是引用数据类型,则选择归并排序。(基于稳定性考虑)因为基本数据类型之间无差异,不需要考虑排序算法稳定性,而归并排序则可以实现算法的稳定性。 2、当你需要排序的样本数量小于60,直接选择插入排序,虽然插入排序的时间复杂度为O(N²),我们是忽略常数项得出来的O(N²),但在魔数60以内,插入排序的时间复杂度为O(N²)的劣势...

2018-08-05 11:20:14 1662

原创 Java大根堆创建和重建及堆排序

什么是大根堆?数据结构中堆结构【完全二叉树】实际通过数组实现,关于《数据结构模型——优先队列与堆》。堆又分为大根堆和小根堆,大根堆:在完全二叉树中,任何一个子树的最大值都为该子树的父节点。 小根堆:在完全二叉树中,任何一个子树的最小值都为该子树的父节点。大根堆的创建与堆排序堆结构在Java中十分重要,堆的创建的排序也尤为重要,因为向大根堆中插入一个数据,时间复杂度仅为O(logN)   (即二叉树的深度,大根堆实为完全二叉树模型)。而大根堆的创...

2018-08-04 23:22:22 2773

原创 Java算法之经典快速排序和随机快速排序

经典快排代码: package cn.itcats.sort;import org.junit.Test;/** * (<R =R >R)归类快速排序,每次取数组最后一个数进行比较归类 * @author fatah */public class QuickSort { public void quickSort(int arr[]) { if(arr ...

2018-08-04 18:52:37 3245

ElasticSearch个人笔记【深入浅出,非常完整】.zip

这是我个人记录的ElasticSearch笔记,记录的非常完整,10万多字

2021-05-21

itcats.zip

Maven搭建SpringCloud项目(包含eureka、gateway、路由转发),下载即可使用,日志模块齐全

2020-06-15

fastdfs_client_v1.20.jar

<!-- 使用命令,手动安装到中央仓库 --> mvn install:install-file -DgroupId=org.csource.fastdfs -DartifactId=fastdfs  -Dversion=1.2 -Dpackaging=jar -Dfile=d:\fastdfs_client_v1.20.jar

2018-08-19

HeimaCodeUtil_V2.4黑马49期配套代码生成器

HeimaCodeUtil是黑马程序员官方推出的一款代码生成工具,软件支持多种代码模板生成,包括前端页面等。49期学习配套软件,可以生成 1.SSM+dubbox+angularJS(服务层+WEB层) 2.SSH2+easyUI架构; 3.SSH2+angularJS+bootstrap架构 4.SpringBoot+StringDataJPA微服务 等多种模板的代码自动生成,还可以自定义模板结构 支持oracle+mysql多数据库。

2018-08-16

dobbo-admin-2.5.4.war

dubbo2.5.4.war/dubbo2.5.4.war/dubbo2.5.4.war/dubbo2.5.4.war测试过无任何问题,可以直接下载使用

2018-08-13

tomcat7.0.52

企业常用tomcat版本——7.0.52版本,测试过,无任何问题,下载直接可上线使用

2018-08-13

FWR310 v4路由器升级

FWR310 v4路由器本地升级,在没升级之前我房间的路由器一直卡,不稳定掉线,甚至有几台设备还连接不上wifi,后来我升级了20141014后,路由器恢复了正常,下载时候需要注意型号是FWR310!!!

2018-08-10

logback-spring.xml

按日期每天输出日志,输出到指定文件夹,并且按日志的级别进行了过滤功能,适合生产环境下的日志输出logback-spring.xml,放入项目中可以直接引用,springboot默认读取logback-spring.xml

2018-06-23

pagehelper3.4.2-fix

宜立方商城、淘淘商城的reposity并没有提供pagehelper3.4.2-fix,而中央仓库也无法下载pagehelper3.4.2-fix,因为fix是经过定制修改的,添加后pom.xml将不会报错

2018-05-28

空空如也

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

TA关注的人

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