- 博客(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 理解
&nbsp; &nbsp; 相信很多初学的新同学在Maven项目中配置Spring的配置文件时,总会遇到各种找不到的问题,其实理解Tomcat的加载机制,问题便会迎刃而解,那么我们来看Tomcat启动是怎么一步步加载的.&nbsp; &nbsp; 首先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&amp;nbsp;src, int&amp;nbsp;srcPos, Object&amp;nbsp;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
fastdfs_client_v1.20.jar
2018-08-19
HeimaCodeUtil_V2.4黑马49期配套代码生成器
2018-08-16
dobbo-admin-2.5.4.war
2018-08-13
FWR310 v4路由器升级
2018-08-10
logback-spring.xml
2018-06-23
pagehelper3.4.2-fix
2018-05-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人