- 博客(55)
- 收藏
- 关注
原创 redis之主从复制
redis的主从复制什么是redis主从复制redis主从配置实现redis主从复制原理增量同步快照同步redis主从复制的步骤什么是redis主从复制主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master),后者称为从节点(slave),数据的复制是单向的,只能由主节点到从节点。默认情况下,每台Redis服务器都是主节...
2020-01-23 16:18:09
262
原创 redis之事务
事务(是由一系列对系统中数据进行访问与更新的操作所组成的一个程序 执行逻辑单元。redis是具备事务的,与关系型数据库不同的是redis的开始事务是multi,执行事务为exec,取消事务discard,以及可以对key进行监视的watch以及取消监视所有key的unwatch。目录redis与ACID原子性(Atomicity):事务中的操作不可以再分,操作要么全部执行,要么全部...
2020-01-11 20:43:25
326
原创 redis之过期处理
redis是可以给一个key设置一个过期时间的,假设当key到了过期时间时,应该如何处理。普遍的处理策略有:立即删除:一过期则删除,然后回收内存空间。 惰性删除:只有当你下一次查字典发现这个key过期时,才回收内存空间。 定期删除:定期,并且定执行时间长度扫描将过期的key的空间回收掉。优缺点:立即删除:内存利用率高,一过期就删除,回收空间,不浪费任何内存 不足在于需要消耗...
2020-01-04 13:29:36
457
原创 redis之持久化
Redis是一个高性能的key-value的存储系统,数据都存在内存里面,如果突然宕机,那么数据全部消失,所以redis提供了一种持久化的机制,以保证数据不会因为故障而丢失。目录持久化机制1.RDB模式:什么时候会出现rdb模式的备份2.AOF模式如何处理aof文件太大?操作系统的COW机制持久化机制RDB模式(快照):就是一次全量备份,就是讲内存的数据进行二进...
2020-01-02 22:14:44
264
原创 mybatis源码分析-mapper文件之sql标签
前面了解到mybatis解析完resultMap标签的内容后,对sql进行解析,来看一下sql的解析过程。 private void sqlElement(List<XNode> list) throws Exception { if (configuration.getDatabaseId() != null) { sqlElement(list, con...
2019-04-07 22:41:56
611
原创 mybatis源码解析-配置文件解析
mybatis作为一个orm框架,在几乎所有的公司都使用这一款orm框架,因为它非常的灵活易用,MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。mybatis使用通常会有一个配置文件,即mybatis-config.xml,文件中包含了mybatis的所有的配置信息,比如数据库连接信息,别名,插件等等一系列的相关信息,来看看mybatis是如何来解析这些信息。首...
2019-03-12 10:12:13
179
原创 Springmvc入门(十七)手写简易springmvc
目录1.先编写@Controller和@RequestMapping注解2.实现DispatcherServlet3.编写Controller测试类4.注册使用自定义的DispatcherServlet根据前文中,我们了解到DispatcherServlet其实就是个servlet,首先他先进行初始化,将所有HandlerMapping进行缓存(Map存储),初始化其他各种组件...
2019-01-22 19:47:42
185
原创 memcached集群(hash取模算法,一致性hash算法)
目录路由算法方式一:缓存服务器全部缓存方式二:hash取模算法方式三:一致性hash算法memcached尽管是“分布式”缓存服务器,但服务器端并没有分布式功能,各个memcached不会互相通信以共享数据,这完全取决memcached api的客户端所使用的路由算法。路由算法方式一:缓存服务器全部缓存特征:当一个key-value新增时,将数据加入全部memcac...
2019-01-09 03:57:40
583
原创 Springmvc入门(十五)Handler的查找
HandlerMapping的结构图不论是Url注册还是@requestMapping都具有相同的父类。所以整体的查找的模板方法在父类AbstractHandlerMapping中,并且他还实现了查找拦截器的方法。查找Handler的方法也实现了,但具体还是在子类中。public final HandlerExecutionChain getHandler(HttpServletRe...
2019-01-08 12:55:53
967
原创 java使用memcached
目录什么是Memcached?java如何链接memcached客户端?1.java memcached client1.1导入memcached的jar相关的jar包1.2编写连接memcached客户端程序1.3MemCachedClient的api2.Xmemcached2.1导入xmemcached和slf4j的jar包2.2编写连接程序3.SpyM...
2019-01-07 12:34:57
2698
原创 Springmvc入门(十四)HandlerMapper源码分析--RequestMappingHandlerMapping的Hander的注册
RequestMappingHandlerMapping这个Handler我们用的特别多,因为配置url跟类毕竟比较繁琐。所以常使用@RequestMapping作为请求路径的注解的处理器。RequestMappingHandlerMapping的结构示意图与BeanNameUrlHandlerMapping和SimpleUrlHandlerMapping类似,都是AbstractHa...
2019-01-05 15:26:38
517
原创 Springmvc入门(十三)HandlerMapper源码分析--SimpleUrlHandlerMapping的Hander的注册
从十二了解到BeanNameUrlHandlerMapping的Handler注册,但是发现每一个请求都需要配置一个bean,并且假设多个请求对应一个类的话,那么就会创建多个此类的对象,那么变成controller类就不是单例了,而是多例。如何解决这种多个路径对应一个类的,并且该类还需保证是单例类。SimpleUrlHandlerMapping就是为了解决此类问题。先看如何使用,在spring...
2019-01-05 11:25:36
474
原创 Springmvc入门(十二)HandlerMapper源码分析--BeanNameUrlHandlerMapping的Hander的注册
根据源码十一中,可以了解到,DispatcherServlet先对请求进行检查,如果是上传请求则封装,然后根据HandlerMapper的getHandler方法找到对应的Handler。先看DispatcherServlet中的初始化HandlerMapper,默认是加载三个HandlerMapper的实现类 //初始化HandlerMapping private voi...
2019-01-03 17:32:43
480
原创 Springmvc入门(十一)DispatcherServlet处理请求源码分析
根据sprigmvc的初始化中了解到有设置过将所有的请求都交由doService方法进行,由于FrameworkServlet没有实现doServlet,由子类实现,DispatcherServlet的doService方法主要是判断是否是include请求,并且设置了一些request的属性,真正处理的方法是doDispatch。 @Override protected void do...
2019-01-03 17:32:09
202
原创 Springmvc入门(十)DispatcherServlet初始化源码分析
DispatchServlet作为springmvc核心类,以下是它的结构图Aware接口,比如实现了ApplicationContextAware接口的类,能够获取到ApplicationContext。DispatcherServer的构造器先初始化父类的,然后设置一个父类属性的值,将http请求直接发送到doService方法 public Dispatc...
2019-01-02 17:32:05
187
原创 Springmvc入门(九)springmvc请求流程
springmvc运行架构图根据运行架构图可知1.用户发送请求到DispatchServlet,DispatchServlet接收请求,并对不同请求的方式进行处理2.DispatchServlet根据请求路径查找HandlerMapper映射处理器查找具体的Handler和拦截器的集合3.DispatchServlet根据具体的Handler找到对应的HandlerAdapte...
2018-12-31 20:24:51
175
原创 HDOJ-1042
题目描述 N!大数阶乘,使用BigDecimal 处理import java.math.BigDecimal;import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner cin = new Scanner(System.in); while (...
2018-12-31 19:31:06
319
原创 Springmvc入门(八)字符乱码
前端请求发送到后台数据的中文信息出现乱码,或者后台发送到页面,页面显示乱码方式一: 在web.xml中启动字符编码拦截器,拦截所有请求 <filter> <filter-name>CharacterEncoding</filter-name> <filter-class>org.springframework.w...
2018-12-29 14:12:27
219
1
原创 Springmvc入门(七)文件上传下载
如何在springmvc中如何实现文件的上传下载?目录 文件上传文件下载总结文件上传 获取上传文件的内容:首先文件上传得导入common-io,common-upload 1.通过CommonsMultipartFile类获取上传的文件内容 @RequestMapping("/fileupload1") public St...
2018-12-29 14:12:10
199
原创 Springmvc入门(六)如何自定义拦截器
Interceptor拦截器用于拦截Controller层接口,表现形式有点像Spring的AOP,但是AOP是针对单一的方法。Interceptor是针对Controller接口以及可以处理request和response对象。比如购物商城,当用户添加商品到购物车时,没有登陆,用户点击添加购物车时,拦截请求,判断用户是否登录,没登录则不执行添加,跳转至登录页面。自定义拦截器 ...
2018-12-29 14:11:58
767
原创 Springmvc入门(五)数据验证以及转发和重定向
作为登录页面,注册页面这种具备表单信息提交的内容,都需要经过验证,判断,以往手工if,else判断用户是不是输出了密码等内容,当然前端也会进行用户输入的判断。字符格式转换,比如日期输出格式转为YYYY-MM-DD,以及数字转换,百分数,货币等。@NumberFormat(style = Style.NUMBER)注解 ,字符转换 Style.NUMBER数字,Style.CURRENCY货...
2018-12-29 14:11:51
198
原创 Springmvc入门(四)如何使用pojo类作为类型参数和获取Cookie的内容
由入门三可知,页面传过来的参数只要跟请求处理器方法的参数名称一致即可,但是参数比较多,在方法写多个属性也行,但是可以使用POJO作为参数类型,以便于阅读代码。 编写一个POJO类public class User { private Integer id; private String password; public Integer getId() { return ...
2018-12-29 14:11:43
344
原创 Springmvc入门(三)如何获取前端页面传过来的内容
如何前后端交互,前端页面传了内容,如何获取?1.请求参数名称与方法参数名称一致先写一个index.jsp页面<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html><html><head
2018-12-25 08:58:48
1104
原创 Springmvc入门(二)详解@Controller与@RequestMapping
从springmvc入门(一)的hello wrold对springmvc有了大致的了解,@Controller与@RequestMapping这两个注解对于web开发至关重要。@Controller注解:定义一个类作为控制类,看一下这个该注解的源码,详细的了解下,首先,Controller注解标签中还有4个标签 @Target 表示注解的作用对象是什么,ElementType.TYP...
2018-12-25 08:58:34
285
原创 Springmvc入门(一)
Spring MVC 是一个模型 - 视图 - 控制器(MVC)的Web框架建立在中央前端控制器servlet(DispatcherServlet),它负责发送每个请求到合适的处理程序,使用视图来最终返回响应结果的概念。Spring MVC是一个基于MVC架构的用来简化web应用程序开发的应用开发框架,它是Spring的一个模块,无需中间整合层来整合 ,它和Struts2一样都属于表现层的框架。在...
2018-12-23 18:50:56
295
原创 HDOJ-2527
Safe Or Unsafe问题描述Javac++ 一天在看计算机的书籍的时候,看到了一个有趣的东西!每一串字符都可以被编码成一些数字来储存信息,但是不同的编码方式得到的储存空间是不一样的!并且当储存空间大于一定的值的时候是不安全的!所以Javac++ 就想是否有一种方式是可以得到字符编码最小的空间值!显然这是可以的,因为书上有这一块内容--哈夫曼编码(Huffman Coding);一个字...
2018-12-23 16:27:35
166
原创 HDOJ-1213(并查集)
并查集,在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合中。How Many Tables题目大意: 有一个人生日,找了很多个好友吃饭,假设好友A认识好友B,好友B认识好友C,那么ABC可以作为一桌吃饭。求请所有朋友需要多少张桌子。采用并查集,用一个数组保存每一个人...
2018-12-23 14:25:23
206
原创 NYOJ-116-士兵杀敌(二)
题目描述:南将军手下有N个士兵,分别编号1到N,这些士兵的杀敌数都是已知的。小工是南将军手下的军师,南将军经常想知道第m号到第n号士兵的总杀敌数,请你帮助小工来回答南将军吧。南将军的某次询问之后士兵i可能又杀敌q人,之后南将军再询问的时候,需要考虑到新增的杀敌数。输入描述:只有一组测试数据第一行是两个整数N,M,其中N表示士兵的个数(1<N<1000000),M表示指...
2018-12-23 12:50:56
260
原创 HDOJ-3999(二叉搜索树+先序遍历)
The order of a Tree题解:先建立一颗二叉搜索树,然后先序遍历示例图 import java.util.Scanner;public class Main3 { public static void main(String[] args) { Scanner cin = new Scanner(System.in); while (c...
2018-12-22 10:40:20
315
原创 HDOJ-1053
原题:http://acm.hdu.edu.cn/showproblem.php?pid=1053题解 求字符串压缩后的最短的数据长度,就是哈夫曼树求解WPL问题。构建一颗带权的哈夫曼树,求出WPL。不理解哈夫曼树,可以先看下这篇哈夫曼树以及哈夫曼编码来了解一下。import java.util.Comparator;import java.util.HashMap;imp...
2018-12-22 10:34:23
168
原创 HDOJ-1009
FatMouse' Trade肥鼠准备了 M 磅的猫粮,准备和看管仓库的猫交易,仓库里装有他最喜爱的食物 Java 豆。仓库有 N 个房间。第 i 间房包含了 J[i] 磅的 Java 豆,需要 F[i] 磅的猫粮。肥鼠不必为了房间中的所有 Java 豆而交易,相反,他可以支付 F[i] * a% 磅的猫粮去交换得到 J[i] * a% 磅的 Java 豆。这里,a 表示一个实数。现在他将这项...
2018-12-20 09:34:08
272
原创 优先队列
优先队列普通的队列是一种先进先出的数据结构,元素在队列尾追加,而从队列头删除,先进先出。在优先队列中,元素被赋予优先级。当访问元素时,具有最高优先级的元素最先删除。优先队列具有最高级先出 的行为特征。通常采用堆数据结构来实现。 优先队列的入队列建立一个大根堆,然后插入一个数,然后在维护一个堆。优先队列的出队列建立一个大根堆,然后出堆尾的一个数。具体实现https:/...
2018-12-19 12:56:54
193
原创 哈夫曼树以及哈夫曼编码
哈夫曼树给定n个权值作为n个叶子节点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。哈夫曼树代码实现示例图:以字符串AAABBCDDDDD为例构建哈夫曼树 哈夫曼节点类public class HaffmanNode { int va...
2018-12-19 12:36:05
681
原创 二叉排序树的建立,删除,遍历,查找,最大值,最小值--java实现
目录 二叉排序树(Binary Sort Tree)定义二叉排序树的建立二叉排序树的遍历二叉排序树的查找二叉树的最小值,最大值二叉树的删除总结:二叉排序树(Binary Sort Tree)又称二叉查找数(Binary Search Tree),亦称二叉搜索树。定义 二叉排序树或者是一棵空树,或者是具有下列性质的二叉树: 若左子树不空,则左...
2018-12-18 13:36:27
2007
1
原创 快速排序
目录快速排序(Quicksort)实现图代码实现:优缺点优化:快速排序(Quicksort)是对冒泡排序的一种改进。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。思路:将一个数组分为左右两个区间,然...
2018-12-17 13:28:37
140
原创 NYOJ-117--求逆序数(归并排序)
求逆序数 题目链接:求逆序数题解:题目意思为一组数组中,前面的数比后面的数大,那么这两个就是一对逆序数。然后数列中一共有多少这样的逆序数对。采用归并排序,先分到最小时,在合并两个数组,当左边的数组大于右边的数组时,即左边这个数的逆序数为右边数组剩下的元素个数。然后以此累加这个逆序数对,直至排序完成,累加所得的结果就是数列中逆序数对。比如 1 3 4 2 实现代码...
2018-12-13 21:30:23
701
原创 归并排序
目录归并排序(MERGE-SORT)算法思路 示例图代码实现:算法优缺点:归并排序(MERGE-SORT) 是建立在归并操作上的一种有效的排序算法,该算法是采用分治法的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。算法思路 ...
2018-12-11 14:59:18
156
原创 堆排序
目录 什么是堆?堆排序思路:以小根堆为例代码实现堆排序的优缺点什么是堆?堆是一类特殊的数据结构,堆通常是一个可以被看做一棵树的数组对象。堆总是满足下列性质:1.堆中某个节点的值总是不大于或不小于其父节点的值;2.堆总是一棵完全二叉树。将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。堆排序是指利用堆这种数据结构所设计的一种排序算法。...
2018-12-10 10:11:31
568
原创 剑指Offer-链表环的入口
题目描述给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。 解法:先采用快慢指针,一个走两步,一个走一步,假设走两步的指针先到达尾部,那么就是没有环,假设有环,两个指针必定会相遇,相遇之后,走两步的指针从头节点重新开始,两个指针都走一步,当两个指针再次相遇时,即为环的入口。public class Solution { public ListNode...
2018-12-07 09:11:58
168
原创 剑指Offer-顺时针打印矩阵
题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.题解:题目类型蛇形填数,在一个矩阵中瞬时间遍历,只需要控制好边界以及数是不是已经遍历过,采用一个新的二维数组的...
2018-12-07 08:32:22
150
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人