自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 SpringBoot项目中自定义Redis的序列化方式以及封装RedisUtil

我们项目中经常用到Redis,而且存的值很多是json格式。所以这边我就自定义了RedisTemplate来修改Redis的序列化方式。而且封装了常用的Redis的操作。 一、创建自定义配置类RedisConfig package com.riemann.springbootdemo.config...

2020-03-30 22:20:01 312 0

转载 CSDN如何编辑数学公式

1、四则运算 $a+b$ 显示效果 a+ba+ba+b $a-b$ 显示效果 a−ba-ba−b $a*b$ 显示效果 a∗ba*ba∗b $\frac{a}{b}$ 显示效果 ab\frac{a}{b}ba​ 2、幂指对 $x^n$显示效果 xnx^nxn $\log_a^b$显示效果 log⁡...

2020-03-29 22:01:16 207 0

原创 数据结构与算法分析:(十一)散列表(上)
原力计划

文章目录一、散列表概念二、散列函数三、散列冲突 一、散列表概念 散列表(Hash Table),我们平时叫它哈希(Hash)表。散列表的实现常常叫做散列(hashing)。散列是一种用于以常数平均时间执行插入、删除和查找的技术。但是,那些需要元素间任何排序信息的树操作将不会得到有效的支持。 散列表...

2020-03-29 21:47:44 224 0

原创 源码解读之(七)BeanUtils.copyProperties
原力计划

一、前言 关于对象的复制我们有好几种方式,最近在做推荐系统,有这样的一个功能点,根据手机的唯一标识imei,copy 目标手机的 imei,置换imei 画像。这种复制、克隆另一个对象的属性在我们后台开发经常遇得到。我这里提供两种方式: 1、实现Cloneable接口重写clone()方法 pub...

2020-03-26 00:36:30 230 0

原创 数据结构与算法分析:(十)跳表
原力计划

一、前言 上一篇我们讲了关于数组的二分查找算法,数据结构与算法分析:(九)二分查找算法。二分查找的底层依赖的是数组随机访问的特性,所以只能用数组来实现。如果数据存储在链表中,就真的没法用二分查找算法了吗? 答案是有办法的,我们只需要对链表稍加改造,就可以支持二分查找算法,改造后的数据结构我们称之为...

2020-03-21 21:07:44 200 0

原创 数据结构与算法分析:(九)二分查找算法
原力计划

一、前言 二分查找算法是针对有序数据集合的查找算法,将原本时间复杂度是线性时间提升到了对数时间范围,大大缩短了搜索时间。二分查找算法的思想非常简单,但细节是魔鬼。也就是你想写成没有bug的二分查找算法很难,出错原因主要集中在判定条件和边界值的选择上,很容易就会导致越界或者死循环的情况。 1、思想 ...

2020-03-20 01:05:25 312 0

原创 手写Redis客户端
原力计划

一、前言 要想手写Redis客户端,必须先了解清楚Redis的通信协议是什么。我的理解就是客户端与服务端按照双方约定的规则来进行的编码方式,客户端将要发送的命令进行编码,然后服务端收到后,使用同样的协议进行解码,服务端处理完成后,再次编码返回给客户端,客户端解码拿到返回结果,这样就完成了一次通信。...

2020-03-15 17:59:55 224 0

原创 分布式架构下基于Redisson实现Redis分布式锁

一、前言 作为后台开发,相信大家都对 Redis 并不陌生了。Redis 有三个客户端 Jedis、Redisson、Lettuce。也就是提供基本的驱动来连接操作 Redis 数据库的。我们先简单介绍下这几个客户端的异同。 Jedis:是Redis 的 Java 实现客户端,提供了比较全面的 ...

2020-03-10 00:17:54 313 0

原创 数据结构与算法分析:(八)如何写好递归代码?

一、前言 相信大家在真实项目中,很少用递归,宁愿把这个递归代码改写成迭代循环的非递归写法。笼统的讲,所有的递归代码都可以改写为迭代循环的非递归写法。如何做?抽象出递推公式、初始值和边界条件,然后用迭代循环实现。为啥我们宁愿改成迭代循环的非递归写法呢?因为在实际项目中用递归,一不小心就容易搞成堆栈溢...

2020-03-07 21:17:59 270 0

原创 线程池中各个参数如何合理设置

一、前言 在开发过程中,好多场景要用到线程池。每次都是自己根据业务场景来设置线程池中的各个参数。这两天又有需求碰到了,索性总结一下方便以后再遇到可以直接看着用。虽说根据业务场景来设置各个参数的值,但有些万变不离其宗,掌握它的原理对如何用好线程池起了至关重要的作用。那我们接下来就来进行线程池的分析。...

2020-03-06 23:06:00 3459 11

原创 INSERT ... ON DUPLICATE KEY UPDATE ... 批量插入与更新(存在则更新,不存在则插入)

一、前言 作为后台开发,相信大家在做业务开发时,经常会遇到这样的场景。那就是数据库没有该数据的话就做插入操作,有的话就做更新操作。 方法1:遍历集合,判断里面的对象是否存在 存在则单个update,不存在则单个insert。这样的逻辑看着貌似没问题,其实问题大着呢。要是数据量多的话,你哟一个个判断...

2020-03-06 17:12:41 684 0

原创 数据结构与算法分析:(七)队列
原力计划

一、队列的定义 队列是一种特殊的线性表,是一种先进先出(FIFO)的数据结构。它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。 我们知道,栈只支持两个基本操作:入栈 push()和...

2020-03-04 23:20:10 238 0

原创 数据结构与算法分析:(六)栈

一、栈的定义 栈是限定仅在表尾进行插入和删除操作的线性表。 允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom),不含任何数据元素的栈称为空栈。栈又称为后进先出(Last In First Out)的线性表,简称LIFO结构。 栈的插入操作,叫做进栈,也称压栈、入栈。 栈的删除操...

2020-03-01 23:09:43 189 0

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