自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

进化的深山猿

不断进化,总能迎来美好生活

原创 新的时间处理工具joda

时间处理是在项目中经常用到的,时间处理一共三个, new Date().getYear(); 该方式已经弃用,第二种: calendar,用的最多,但实际用起来并不方便,现在推荐的是第三种: 使用joda包里面的时间处理工具。 使用方式如下: 1 引入maven包 <...

2020-05-19 21:05:12 55 0

转载 JetCache入门

今天我们来介绍一下由Alibaba开源的一款缓存框架JetCache。其号称比Spring Cache用起来更加好用,笔者用了之后发现确实比较好用。 JetCache支持本地TTL、两级缓存和分布式缓存自动刷新,开发者也可以手动的去操作缓存实例(类似于Redis/Map操作)。到目前为止共有4个...

2020-05-18 20:29:35 77 0

原创 mac idea常用快捷键

编辑: ⌘D 复制当前行或选定的块 ^+n getter/setter ⌃⌥I 自动缩进线 ⌘ ⇧ / 注释/**/ ⌘ + ⌥ + V 自动导入变量定义 例如:new String(); ⌥ + Enter 自动导入包,快速修复 ⌥ + ⇧ + Up/Down 向上/下移一行 ⌘ + ⇧ + U...

2020-04-13 16:28:10 66 0

原创 idea导入maven项目

https://blog.csdn.net/lizhensen/article/details/80942999 1、打开一个现有的IntelliJ IDEA工程,点击菜单的“File”->“new”->“Module from Existing Sources”。 2、在打开的弹...

2020-04-13 13:43:29 375 0

原创 mac 终端与文件夹互转

文件夹上打开终端:右键文件夹,新建位于文件夹位置的终端窗口 https://www.jianshu.com/p/2db84e7e38ff 终端上打开文件夹: # open 指定文件(文件夹)  注释:a、open 后面接文件,表示默认用文本编辑器打开;     b、open 后面接文件夹...

2020-04-13 13:14:14 75 0

原创 clickhous原理解析与使用

clickhouse简要介绍 ClickHouse是一个超高性能的海量数据快速查询的分布式实时处理平台,在数据汇总查询方面(如GROUP BY),ClickHouse的查询更快,因此通常情况下在MySQL上进行聚合。 刚好现在有如下场景:每日千万条记录,,需要按条件筛选和聚合,对记录进行数据分...

2020-03-31 22:31:07 5562 0

原创 mysql乐观锁与悲观锁

悲观锁 悲观锁(Pessimistic Lock),顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。 悲观锁:假定会发生并发冲突,屏蔽一切可能违反数据完整性的操作。 Java synchronized ...

2020-03-14 18:26:01 45 0

原创 wait notify notifyAll

wait 该方法用来将当前线程释放锁,并且进入wait pool,此时没有资格争抢锁。 notify(): 唤醒在等待该对象同步锁的线程(只唤醒一个,如果有多个在等待),注意的是在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由JVM确定唤醒哪个线程,而且不是按优先级。 调用任意对...

2020-03-14 16:27:51 34 0

原创 mysql 从主动复制 主从延迟 到分库分表

为甚分库分表? 先集群:主从,且读写分离。 分表:数据量过大 查询慢 锁事物冲突。一般先垂直分,再考虑水平分 分库:机器的写压力大,并发量数千级别,读压力大,太多slave 分库分表后:降低磁盘使用率 单表数据量少 并发冲突低 主从复制延迟解决:show status查看 Seconds_Be...

2020-03-11 10:17:23 91 0

转载 spring监听功能的使用

以创建订单为例,需要增加短信通知和事物通知,每次写一个service也可以,最好的方式可以使用spring的事件监听。 spring监听器的使用:定义事件实现applicationEvent 定义监听器是实现smartApplicationListener<> 发布事件:appl...

2020-03-07 16:06:08 50 0

原创 mq面试文章链接

面试官问我:什么是消息队列?什么场景需要他?用了会出现什么问题? --https://blog.csdn.net/qq_35190492/article/details/103153444 消息队列:分布式事务、重复消费、顺序消费 --https://blog.csdn.net/qq_351...

2020-02-29 11:07:20 59 0

原创 redis经典面试问题链接

Redis基础知识,数据结构,分布式锁,keys作用与问题,异步队列,延时队列,持久化,pipeline。同步机制 https://blog.csdn.net/qq_35190492/article/details/102841400 -面了BAT,我总结了他们会问的Redis基础知识 R...

2020-02-29 10:04:15 106 0

转载 Mybatis工作原理与流程

引言 在mybatis的基础知识中我们已经可以对mybatis的工作方式窥斑见豹(参考:《MyBatis————基础知识》)。 本片博客针对Mybatis内部工作原理进行阐述。 一、Mybatis工作原理图 mybatis 原理图如下所示: 二、工作原理解析 mybatis应用程序通过S...

2020-02-25 21:41:29 173 0

转载 MySQL主从复制的线程描述

复制线程概述: MySQL完成主从复制,需要三个线程的参与:一个在(Master)主节点上,另外两个在(Slave)从节点上 1、(Master)Binlog Dump线程: 当有从节点连接到主节点时,主节点就创建一个线程将该主节点的bin-log内容发送到主动连接的从节点上。创建的这个线程...

2020-02-25 20:21:51 60 0

原创 redis数据结构与精准限流

Redies key -value value存在如下类型: set Sortedset map string list list-列表: ziplist:压缩列表: 类似数组,但不同于数组, 1)单一压缩列表中支持存储不同大小的数据,所以更加节省空间,这也是压缩的含义。 2) 因为上面的特性...

2020-01-16 13:40:25 70 0

原创 CPU飙升问题的解决实例

项目使用现象: web项目,页面打开特别慢,反正就是慢。平常打开页面需要0.5s,现在需要3-5秒 进入服务器(4核8G内存)查看原因: top发现: 但是cpu波动过大,使用平常在 10%左右,会突然飙升到100%、200%甚至300% jmap -heap pid jvm内存已使用99.9%...

2020-01-10 14:07:01 200 0

原创 提高效率的另一种方案-并发

算法的目的就是为了提高代码的执行效率。当算法无法再继续优化的情况下,该如何进一步提高执行效率? 运用多线程 + 分治 并行排序 要给大小为8G的数据排序,内存能够容纳,那就有两种并行排序方式: 1) 对归并排序进行并行化处理,把8G内存的数据划分成16个小的数据集合。然后用16个线程并行排序,然...

2019-12-17 11:16:06 54 0

原创 几个算法使用的实例 -垃圾短信,音乐推荐

朴素贝叶斯算法 基于黑名单的过滤器: 号码量少于50万,黑号码名单维护成一个散列表。 如果有500万个号码呢? 方案1:布隆过滤器 5000万bits, 方案2:黑名单存储在服务器,所有判断都通过网络请求判断 基于规则的过滤器,规则如下: 1) 特殊词,反动 淫秽 2) 群发号码,非正常号码 3...

2019-12-17 11:14:14 65 0

原创 极度节约内存的算法 --位图

位图: 网页爬虫,获取页面中的url,进一步爬取内容。但是需要避免重复爬取,所以需要查询是否已经爬取并保存到查询记录中。 如果有10亿个url,怎么处理? hash -耗内存-> 位图 -位太多-> 布隆 --> 多hash 散列表 10亿Url 一个url 50字节,共50...

2019-12-17 11:11:33 74 0

原创 最短路径算法

到底是贪心还是动态规划? Dijkstra算法 抽象问题,选择合适的数据结构抽象问题 权重图,本质求两节点最小权重值 从起点开始遍历所有的临接节点,将节点权重维护到最小堆中 每次以最小堆对应的顶点为起点再次遍历临接节点: 0) 默认到最小节点的距离都是MAX INT,用数组存储,index顶点值 ...

2019-12-17 11:08:58 33 0

原创 拓扑排序

拓扑排序 先穿袜子才能穿鞋子:袜子->鞋子 秋裤->裤子 裤子->鞋子 秋衣->外套 整体穿衣顺序: 秋衣->外套->秋裤->裤子->袜子->鞋子 或 秋裤->裤子->袜子->鞋子-->秋衣->外套 问题 --&...

2019-12-17 11:07:36 35 0

原创 动态规划

动态规划 0-1背包问题 --动态规划,放入n个物体按阶段处理,第n次的结果可以基于第n-1的结果来推导. 最大重量9,物体重量分别为 3,2,4,5 int[n][w]或int[w+1]解决 0-1背包升级版: 一组不同重量、不同价值、不可分割的物品,我们选择将某些物品装入背包,在满足背包最大...

2019-12-17 11:01:21 51 0

原创 回溯思想

把问题求解的过程分为多个阶段。每个阶段,我们都会面对一个岔路口,我们先尝试选一条路走,当发现这条路走不通的时候(不符合期望的解),就尝试另外一种走法继续走。 典型的如: 8皇后算法,皇后放入当前节点不满足,则尝试别的节点。 0-1背包,当前物体放入超重,则不放入当前物体。 背包总的承载重量是 Wk...

2019-12-17 10:53:43 48 0

原创 分治算法

思想:将原问题划分成n个规模较小,并且与原问题相似的子问题。递归解决子问题,然后合并结果 要求: 1)原问题与分解成的小问题具有相同的模式 2)小问题可以独立求解 3)具有分解终止条件 4)可以将子问题合并成原问题 如何编程求出一组数据的逆序对个数? 逆序对个数:存在 2,4,3,1,5,6,...

2019-12-17 10:50:22 20 0

原创 算法贪心

用到贪心算法的场景: 针对一组数据,定义了限制值和期望值,从中选出几个数据,在满足限制值的情况下,期望值最大。 然后尝试和验证贪心算法。但是一般贪心算法并不总能给出最优解。如图: 贪心算法的解决思路是,每次都选择一条跟当前顶点相连的权最小的边,直到找到顶点 T。按照这种思路,我们求出的最短路径...

2019-12-17 10:47:31 25 0

原创 字符串匹配算法

主要算法:BF RK BM KMP Sunday算法 BF :Brute Force,暴力匹配算法 字符串A中查找字符串B 主串:A,长度n 模式串:B,长度m 检查起始位置分别是0,1,2....n-m且长度为m的n-m+1个子串,看看是否有跟模式串匹配的。 时间复杂度:比对n-m+1次,每次...

2019-12-17 10:30:38 33 0

原创

图: 如何存储微博、微信等这些社交网络的好友关系? 为什么产生? 特点? 使用场景? 树中的元素称为节点,图中的元素称为顶点。顶点之间的关系叫作边。顶点相连接的边的条数叫作定点的度。 微信为例: 一个用户就是一个顶点,好友关系就是边,一个用户总的好友个数就是度 微博:可以单向关注,其实现为...

2019-12-09 21:08:10 35 0

原创 二叉树与堆

二叉树有哪几种存储方式?哪种适合于用数组来存储? node 数组存储? 两种特殊二叉树 满二叉树:除了叶子节点之外,每个节点都有左右两个子节点 完全二叉树:叶子节点都在最底下两层,最后一层的叶子节点都靠左排列,并且除了最后一层,其他层的节点个数都要达到最大 节点的高度:节点到叶子节点的最长路径...

2019-12-09 21:04:05 51 0

原创 散列表与hash函数

散列表: hash冲突解决 1)开放定址法 : 存入:冲突的 进行二次处理,加线性,平方等;以线性为例,会逐个向下找,直到找到一个空的位置然后放进去 查找:与存入相似,先hash定位起始的查找位置,然后向下找等于的对象,如果遇到空的说明不存在 删除:因为上面查找遇空则说明不存在,所以不可以直接删除...

2019-12-09 21:01:09 31 0

原创 跳表

跳表: 为什么需要跳表,实现快速查找链表中的节点 什么是跳表,画出跳表的结构 1 8 1 4 8 12 1 2 3 4 5 6 7 8 9 10 11 12... 假设要查找12,原本路径:1-2-3..-12 11步 现在路径:1-8-8-12-12 4步 跳表的...

2019-12-09 20:59:24 31 0

原创 二分查找

二分查找: 使用场景:有序数据 存放于数组中 数据量过大也不适宜使用,因为数组占用的是连续大小的空间 作业: 有序数组中(不)存在重复元素 递归和非递归实现 思考题: 如何在 1000 万个整数中快速查找某个整数? 是否有序? 有序二分查找 无序:查找几次? 多次,先排序,后遍历查找?? 一次...

2019-12-09 20:58:31 22 0

原创 排序

插入排序 :不断的将后面的数据插入到前面的有序数据中。 冒泡排序:通过从0交换相邻数据,保证第一轮n-1次交换后最大数据在倒数第一位;第二轮n-2次交换后,第二大数据在倒数第二位 选择排序:第一轮:从1~n-1中找最小的数据与第0为交换,保证最小数据在第一位; 冒泡和选择排序区别在于:在交换的方式...

2019-11-28 22:12:47 60 0

原创 递归

递归条件: n个台阶,一步可以走两步,也可以走一步,有多少中走法 可以根据第一步的走法把所有走法分为两类,第一类是第一步走了 1 个台阶,另一类是第一步走了 2 个台阶。所以 n 个台阶的走法就等于先走 1 阶后,n-1 个台阶的走法 加上先走 2 阶后,n-2 个台阶的走法。用公式表示就是:f...

2019-11-28 21:28:21 27 0

原创

栈: 方法: push pop peek() 栈的实现 : 数组实现 (固定大小 + 可动态扩展) 链表实现 栈的空间复杂度是多少? O(1),虽然这里需要大小为n的数组,但是这个数组时必须的,我们所说的空间复杂度,指的是除了基础数据存储外还需要的存储空间。 栈的实际使用 函数调用: 操作系统给...

2019-11-28 21:22:27 27 0

原创 算法中哨兵技巧

哨兵:国家边界的站岗士兵;这里引申为处理边界值的问题。 实例: 需求:数组中找值key所在的位置 public class GuardTest { public static void main(String[] args) { int[] array = {1,...

2019-11-28 20:58:47 427 0

原创 时空间复杂度,数组链表

时间复杂度的含义 :假设每行代码执行时间是一定的,都是unit,那有一个很重要的规律: 所有代码的执行时间 T(n) 与所有行代码的执行次数 n 成正比:T(n) = O(f(n)) 注意:这里仅仅从代码行数的角度考虑,所以你是简单的计算,还是从磁盘读取100M的文件,我们粗略认为两者执行时间都是...

2019-11-28 20:54:46 67 0

原创 spring单例与线程安全,并行调用服务加速响应

问题:ssm框架,spring中controller和service都是单例的,那是怎么保证线程安全呢? 通过threadLocal保证, 实际一个实例,tomcat中线程池执行任务时,获取单例的副本,每个线程的执行都是操作单例的副本 那既然有单例的副本,此时还是单例的吗????? https:/...

2019-11-20 21:43:09 67 0

转载 分布式系统唯一id方案-SnowFlake

摘要: SnowFlake算法生成的ID大致上是按照时间递增的,用在分布式系统中时,需要注意数据中心标识和机器标识必须唯一,这样就能保证每个节点生成的ID都是唯一的。它可以满足Twitter每秒上万条消息ID分配的请求,这些消息ID是唯一的且有大致的递增顺序,且是一个64位整形,即8字节,可以展示...

2019-11-16 18:20:34 49 0

原创 ueditor增加功能

ueditor带有添加Iframe的功能,但是我需要将输入的url修改为下拉框。 步骤如下: 第一步 添加按钮描述 找到ueditor.config.js文件中的toolbars数组,增加一个“watermark”字符串,然后找到labelMap数组,对应着添加一个labelMap,labe...

2019-11-04 20:27:42 206 0

原创 图标下载地址

https://www.iconfont.cn/search/index?q=%E5%9B%BE%E8%A1%A8

2019-11-04 18:48:12 71 0

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