自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

辉的范你学不来的博客

人生的起起落落,生活的悲喜无常;在这个波涛汹涌的社会中,没有谁能把日子过得风平浪静。

  • 博客(140)
  • 收藏
  • 关注

原创 手撸一个SpringBoot缓存系统

缓存是最直接有效提升系统性能的手段之一。个人认为用好用对缓存是优秀程序员的必备基本素质。本文结合实际开发经验,从简单概念原理和代码入手,一步一步搭建一个简单的二级缓存系统。一、通用缓存接口1、缓存基础算法FIFO(First In First Out),先进先出,和OS里的FIFO思路相同,如果一个数据最先进入缓存中,当缓存满的时候,应当把最先进入缓存的数据给移除掉。LFU(Least Frequently Used),最不经常使用,如果一个数据在最近一段时间内使用次数很少,那么在将来

2020-08-17 08:57:18 444

原创 手把手教你实现一个SpringBoot的starter

Starters are a set of convenient dependency descriptors that you can include in your application. You get a one-stop shop for all the Spring and related technologies that you need without having to hunt through sample code and copy-paste loads of depen...

2020-08-12 09:14:18 1759

原创 hashCode() 和 equals() 之间的关系

先祭一张图,可以思考一下为什么?介绍equals() 的作用是用来判断两个对象是否相等。hashCode() 的作用是获取哈希码,也称为散列码;它实际上是返回一个int整数。这个哈希码的作用是确定该对象在哈希表中的索引位置。关系我们以“类的用途”来将“hashCode() 和 equals()的关系”分2种情况来说明。1、不会创建“类对应的散列表”这里所说的“不会创建类对应的散列表”是说:我们不会在HashSet, Hashtable, HashMap等等这些本质是散列表的数据结构中,用到该

2020-08-12 08:46:33 542

原创 池化技术之线程和线程池的对比

尼采曾经说过:人们无法理解他没有经历过的事情。因此我会试着把技术文章写的尽量具象化一些,力求让所有人都能看懂,所以在正式开始之前,我们先从两个生活事例说起。尼采帅照:生活案例 1早些年间,某宝双“11”突然爆火,然后无数个男男女女疯狂“剁手”,然而最痛苦的并不是“剁手”之后吃“灰”的日子,而是漫长而又揪心的等待快递小哥的日子。为了缓解彼此的“痛苦”(快递公司的电话被打爆,用户等得不耐烦),快递公司后面就变“聪明”了,每当购物节将要来临之前,快递公司会预先准备好充足的人和车,以迎接扑面而来的订单。

2020-08-12 08:39:09 257

原创 通俗易懂的贝叶斯定理

概率论与数理统计,在生活中实在是太有用了,但由于大学课堂理解不够深入,不能很好地将这些理论具象化并应用到实际生活中,感到实在是太遗憾了,所以重新学习并用小白式的通俗易懂的语言来解释记录,以此来加深理解应用。先思考一下,数学是怎么产生的?当祖先遇到一个问题,最终采用了某种方法,把这个问题解决了,非常开心。动物都是有惰性的,为了在下次遇到此类问题时不费吹灰之力,于是就把这种解决问题的思想和方法提取出来,然后就有了数学。为了给更多的人恩惠,就需要把这种方法整理成抽象的,严谨的数学理论,传递给他人,别人看完,学

2020-08-10 09:10:36 3947

原创 Redis 面试常见问答

>1. 什么是缓存雪崩?怎么解决?通常,我们会使用缓存用于缓冲对 DB 的冲击,如果缓存宕机,所有请求将直接打在 DB,造成 DB 宕机——从而导致整个系统宕机。如何解决呢?2 种策略(同时使用):对缓存做高可用,防止缓存宕机使用断路器,如果缓存宕机,为了防止系统全部宕机,限制部分流量进入 DB,保证部分可用,其余的请求返回断路器的默认值。2. 什么是缓存穿透?怎么解决?解释 1:缓存查询一个没有的 key,同时数据库也没有,如果黑客大量的使用

2020-08-10 08:34:25 151

原创 9种 分布式ID生成方式

为什么要用分布式ID?在说分布式ID的具体实现之前,我们来简单分析一下为什么用分布式ID?分布式ID应该满足哪些特征?1、什么是分布式ID?拿MySQL数据库举个栗子:在我们业务数据量不大的时候,单库单表完全可以支撑现有业务,数据再大一点搞个MySQL主从同步读写分离也能对付。但随着数据日渐增长,主从同步也扛不住了,就需要对数据库进行分库分表,但分库分表后需要有一个唯一ID来标识一条数据,数据库的自增ID显然不能满足需求;特别一点的如订单、优惠券也都需要有唯一ID做标识。此时一个能够生...

2020-08-08 21:59:08 1195

原创 Oracle修改日期

update 表名 set 字段=to_date(‘2020-7-6’,‘yyyy-mm-dd’) where 条件

2020-08-07 11:02:20 645

原创 深度学习中7种最优化算法的可视化与理解

本文旨在优化一维函数,实际上模型参数有数百万维以上,差距很大,因此本文最好作为辅助法的理解,而非对算法优劣的判断依据。在深度学习中,有很多种优化算法,这些算法需要在极高维度(通常参数有数百万个以上)也即数百万维的空间进行梯度下降,从最开始的初始点开始,寻找最优化的参数,通常这一过程可能会遇到多种的情况,诸如:1、提前遇到局部最小值从而卡住,再也找不到全局最小值了。2、遇到极为平坦的地方:“平原”,在这里梯度极小,经过多次迭代也无法离开。同理,鞍点也是一样的,在鞍点处,各方向的梯度极小,尽管沿着某一个.

2020-08-07 09:26:01 440

原创 面试经验分享

说下 https 吧,和 http 有什么区别https相对于http来说主要多了一个SSL层,通过SSL加密数据包,通过证书验证身份,使得数据更安全。那说下https是如何加密的简单的说就是客户端在请求服务器的时候得到服务器的证书和公钥,然后自己生成一个密钥,通过公钥加密,传输给服务端。然后服务端通过私钥解密,这样就得到对称加密所需的密钥,之后就通过对称加密通信。为什么需要这么麻烦,直接公钥私钥通信不行吗非对称加密比较耗时,对称加密比较快那你再说说dns 如何工作的简单的说就是通过udp去查

2020-08-07 09:00:09 172

原创 深入理解 Spring Cloud 核心组件与底层原理

一、Spring Cloud核心组件:Eureka (1)Netflix Eureka1)、Eureka服务端:也称服务注册中心,同其他服务注册中心一样,支持高可用配置。如果Eureka以集群模式部署,当集群中有分片出现故障时,那么Eureka就转入自我保护模式。它允许在分片故障期间继续提供服务的发现和注册,当故障分片恢复运行时,集群中其他分片会把它们的状态再次同步回来2)、Eureka客户端:主要处理服务的注册与发现。客户端服务通过注解和参数配置的方式,嵌入在客户端应用程序的代码中,在应用程..

2020-08-07 08:55:20 149

原创 进程间通信

每个进程的用户地址空间都是独立的,一般而言是不能互相访问的,但内核空间是每个进程都共享的,所以进程之间要通信必须通过内核。Linux 内核提供了不少进程间通信的机制,我们来一起瞧瞧有哪些?管道如果你学过 Linux 命令,那你肯定很熟悉「|」这个竖线。$ ps auxf | grep mysql上面命令行里的「|」竖线就是一个管道,它的功能是将前一个命令(ps auxf)的输出,作为后一个命令(grep mysql)的输入,从这功能描述,可以看出管道传输数据是单向的,如果想相互通信,我..

2020-08-06 17:28:34 119

原创 浅谈树形结构的特性和应用(上):多叉树,红黑树,堆,Trie树,B树,B+树...

无所不在的非线性数据结构之一:树形结构的特点和应用。树形结构,是指:数据元素之间的关系像一颗树的数据结构。我们看图说话:它具有以下特点:每个节点都只有有限个子节点或无子节点;没有父节点的节点称为根节点;每一个非根节点有且只有一个父节点;除了根节点外,每个子节点可以分为多个不相交的子树;树里面没有环路(cycle)维基百科中列举了计算机科学中树形结构的种类我们只挑一些熟悉的面孔:多叉树,二叉树,二叉查找树,红黑树,堆,Trie树,B树,B+树,LSM Tree,了

2020-08-05 09:11:24 503 1

原创 如何将java程序中sql查询出的字段取出来使用

比如:sql=“select a,b from student”;想要获取a和b字段,可以用如下方法解决:BindSQL bl=new BindSQL();SSRS ssrs=new SSRS();ssrs=bl.execSQL(sql);String startDate=ssrs.GetText(1, 1);//第一个字段String endDate=ssrs.GetText(1, 2);//第二个字段...

2020-08-04 16:57:16 1424 1

原创 后端开发都应该掌握的Redis基础

Redis的数据结构Redis支持多种不同的数据结构,包括5种基础数据结构和几种比较复杂的数据,这些数据结构可以满足不同的应用场景。五种基础数据结构String:字符串,是构建其他数据结构的基础Hash:哈希列表List:列表Set:集合,在哈希列表的基础上实现Sort Set:有序集合复杂的数据结构Bitmaps:位图,在string的基础上进行位操作,可以实现节省空间的数据结构。Hyperloglog:用于估计一个 set 中元素数量的概率性的数据结构。Geo:geospat

2020-08-03 09:01:02 147

原创 eclipse中鼠标出现了十字

alt+shift+A在十字和鼠标箭头之间切换其实这个快捷键相当于多选,比如:

2020-07-31 14:03:36 314

原创 换人,这些算法都不会还学什么操作系统

此篇文章带你梳理一下操作系统中都出现过哪些算法进程和线程管理中的算法进程和线程在调度时候出现过很多算法,这些算法的设计背景是当一个计算机是多道程序设计系统时,会频繁的有很多进程或者线程来同时竞争 CPU 时间片。那么如何选择合适的进程/线程运行是一项艺术。当两个或两个以上的进程/线程处于就绪状态时,就会发生这种情况。如果只有一个 CPU 可用,那么必须选择接下来哪个进程/线程可以运行。操作系统中有一个叫做 调度程序(scheduler) 的角色存在,它就是做这件事儿的,调度程序使用的算法叫做 调度算法

2020-07-31 09:52:05 227

转载 看得见的TCP

正文显形“不可见”的网络包网络世界中的数据包交互我们肉眼是看不见的,它们就好像隐形了一样,我们对着课本学习计算机网络的时候就会觉得非常的抽象,加大了学习的难度。还别说,我自己在大学的时候,也是如此。直到工作后,认识了两大分析网络的利器:tcpdump 和 Wireshark,这两大利器把我们“看不见”的数据包,呈现在我们眼前,一目了然。唉,当初大学学习计网的时候,要是能知道这两个工具,就不会学的一脸懵逼。tcpdump 和 Wireshark 有什么区别?tcpdump 和 ..

2020-07-30 14:07:14 228

原创 Redis中是如何实现分布式锁的?

分布式锁常见的三种实现方式:数据库乐观锁;基于Redis的分布式锁;基于ZooKeeper的分布式锁。本地面试考点是,你对Redis使用熟悉吗?Redis中是如何实现分布式锁的。实现可以直接通过 set key value px milliseconds nx 命令实现加锁, 通过Lua脚本实现解锁。//获取锁(unique_value可以是UUID等)SET resource_name unique_value NX PX 30000//释放锁(lua脚本中,一定要比

2020-07-30 09:01:09 226

原创 面试灵魂100问(不含答案)

其中涵盖了不少大厂必考点、高频点、加薪点,这些也是作为开发人来说日常项目中经常遇到的踩坑点。一共分成了 5 大类,分别是:Dubbo,ElasticSearch,JVM,多线程/高并发,消息中间件 。1 Dubbo1.1 服务调用超时问题怎么解决?1.2 Dubbo支持哪些序列化方式?1.3 Dubbo和SpringCloud的关系?1.4 Dubbo的架构设计?一共划分了哪些层?1.5 Dubbo的默认集群容错方案?1.6 Dubbo使用的是什么通信框架?1.7 Dubbo的主要应用场景?

2020-07-30 08:48:47 649

原创 面试 HTTP ,99% 的面试官都爱问这些问题

HTTP 和 HTTPS 的区别HTTP 是一种 超文本传输协议(Hypertext Transfer Protocol),HTTP 是一个在计算机世界里专门在两点之间传输文字、图片、音频、视频等超文本数据的约定和规范HTTP 主要内容分为三部分,超文本(Hypertext)、传输(Transfer)、协议(Protocol)。超文本就是不单单只是本文,它还可以传输图片、音频、视频,甚至点击文字或图片能够进行超链接的跳转。上面这些概念可以统称为数据,传输就是数据需要经过一系列的物理介质从一个端.

2020-07-29 17:14:42 210

原创 精选9道java面试题!

今天这篇文章是单纯的从面试的角度出发,以回答面试题为线索,再把整个 Java 集合框架复习一遍,希望能帮助大家拿下面试。先上图:当面试官问问题时,我会先把问题归类,锁定这个知识点在我的知识体系中的位置,然后延展开来想这一块有哪些重点内容,面试官问这个是想考察什么、接下来还想问什么。这样自己的思路不会混乱,还能预测面试官下一个问题,或者,也可以引导面试官问出你精心准备的问题,这场面试本质上就是你在主导、你在 show off 自己扎实的基础知识和良好的沟通交流能力。其实我在 LRU 那篇文章里就说.

2020-07-29 09:24:26 136

原创 学习linux命令,看这篇命令详解就够了

序言本篇文章主要讲解了一些linux常用命令,主要讲解模式是,命令介绍、命令参数格式、命令参数、命令常用参数示例。由于linux命令较多,我还特意选了一些日常使用较为频繁的命令进行讲解,但还是免不了文章很长,建议大家收藏起来,用到的时候不会了再来阅读。当然学习linux命令最好的方法是学会使用linux自带的man手册,所有linux命令规范和使用细则都会在该手册中讲解的很清楚,我在书写的过程中也是参考该手册和日常使用情况。如果还有哪些是大家希望再补充的命令,可以留言给我,我会持续更新该文章,同时也作为

2020-07-28 10:50:52 1478 1

原创 简历+面试

简历模板面试算法准备作为一个后台开发人员,算法白板编程是必备的。算法积累是一个长期的过程,需要不断地去刷题保持手感。学习算法的前提是数据结构要足够地熟悉,我大学的时候数据结构和算法都很差,经过数十场面试才慢慢将算法重视起来,通过阅读《算法 第4版》搭建个人基础,然后通过刷牛客网和leetcode来积累经验。因为刷算法题更多地是针对面试,所以可以按照分类去刷一定数量的题目,有相应的解题思路和模版就好。我是按照数组、链表、树、队列、栈、哈希表、并查集、动态规划这些分类去刷的。因为很多面试都是在牛客

2020-07-27 09:55:25 214

原创 缓存

一.缓存粒度控制通俗来讲,缓存粒度问题就是我们在使用缓存时,是将所有数据缓存还是缓存部分数据? 数据类型 通用性 空间占用(内存空间+网络码率) 代码维护 全部数据 高 大 简单 部分数据 低 小 较为复杂   缓存粒度问题是一个容易被忽视的问题,如果使用不当,可能会造成很多无用空间的浪费,可能会造成网络带宽的浪费,可能会造成代码通用性较差等情况,必须学会综合数据通用性、空间占用比、代码维护性 三点评估取舍因素权衡使用。二.缓存穿透问题

2020-07-24 14:35:56 100

原创 Redis数据结构扩展

GEOGEOADD locations 116.419217 39.921133 beijinGEOPOS locations beijinGEODIST locations tianjin beijin km 计算距离GEORADIUSBYMEMBER locations beijin 150 km 通过距离计算城市注意:没有删除命令 它的本质是zset (type locations)所以可以使用zrem key member 删除元素zrange key 0 -1 表示所

2020-07-24 14:02:49 130

原创 Redis集群演变过程

1.单机版核心技术:持久化持久化是最简单的高可用方法(有时甚至不被归为高可用的手段),主要作用是数据备份,即将数据存储在硬盘,保证数据不会因进程退出而丢失。2.主从复制复制是高可用Redis的基础,哨兵和集群都是在复制基础上实现高可用的。复制主要实现了数据的多机备份,以及对于读操作的负载均衡和简单的故障恢复。缺陷是故障恢复无法自动化;写操作无法负载均衡;存储能力受到单机的限制。3.哨兵在复制的基础上,哨兵实现了自动化的故障恢复。缺陷是写操作无法负载均衡;存储能力受到单机的限制。4.集群通过集

2020-07-24 13:56:26 180

原创 Redis Cluster高可用集群

一.redis cluster集群是什么?redis cluster集群是一个由多个主从节点群组成的分布式服务器群,它具有复制、高可用和分片特性。Redis cluster集群不需要sentinel哨兵也能完成节点移除和故障转移的功能。需要将每个节点设置成集群模式,这种集群模式没有中心节点,可水平扩展,据官方文档称可以线性扩展到1000节点。redis cluster集群的性能和高可用性均优于之前版本的哨兵模式,且集群配置非常简单二.redis cluster集群搭建/usr/local/bin/re

2020-07-24 13:49:59 184

原创 CSDN写文章的相关问题

字体颜色 我是绿色 我是灰色 我是黄色 我是橙色 我是大红色例:<font color=blue> 我是绿色</font>动态图片怎么加载例:<img src="//bpic.588ku.com/ad_diversion/19/08/22/915abbf3e26f11efc0c7e121b3c8f996.png"></img>只写动态图片的相关地址路径就行,不用复制图片...

2020-07-24 13:16:43 105

原创 Redis哨兵模式

一.是什么,能干嘛?在Redis 2.8版本开始引入。哨兵的核心功能是主节点的自动故障转移。通俗来讲哨兵模式的出现是就是为了解决我们主从复制模式中需要我们人为操作的东西变为自动版,并且它比人为要更及时二.哨兵主要功能(做了哪些事)监控(Monitoring):哨兵会不断地检查主节点和从节点是否运作正常。自动故障转移(Automatic Failover):当主节点不能正常工作时,哨兵会开始自动故障转移操作,它会将失效主节点的其中一个从节点升级为新的主节点,并让其他从节点改为复制新的主节点。

2020-07-24 12:47:43 81

原创 Redis主从复制

一、是什么1.单机有什么问题:单机故障容量瓶颈qps瓶颈主机数据更新后根据配置和策略,自动同步到备机的master/slaver机制,mester已写为主,slaver已读为主2.能干嘛1.读写分离2.容灾备份3.怎么玩玩法原则:1.配从不配主2.使用命令 SLAVEOF 动态指定主从关系 ,如果设置了密码,关联后使用 config set masterauth 密码3.配置文件和命令混合使用时,如果混合使用,动态指定了主从,请注意一定要修改对应的配置文件1.新建

2020-07-24 11:48:41 106

原创 Redis的持久化机制

redis的持久化机制说白了,就是在指定的时间间隔内,将内存当中的数据集快照写入磁盘,它恢复时是将快照文件直接读到内存什么意思呢?我们都知道,内存当中的数据,如果我们一断电,那么数据必然会丢失,但是玩过redis的同学应该都知道,我们一关机之后再启动的时候数据是还在的,所以它必然是在redis启动的时候重新去加载了持久化的文件redis提供两种方式进行持久化,一种是RDB持久化默认,另外一种是AOF(append only file)持久化。一.RDB是什么?原理是redis会单独创建(

2020-07-24 11:24:10 115

原创 Redis逐出算法

相关配置:maxmemory: 最大可使用内存,占用物理内存的比例,默认值为0,,表示不限制。生产环境一般根据需求设置,通常50%以上maxmemory-policy: 达到最大内存后,对挑选出来的数据进行删除策略maxmemory-samples: 每次选取待删除数据的个数,选取数据时并不会全库扫描,采用随机获取数据的方式作为待检测删除数据...

2020-07-24 11:13:39 70

原创 Redis删除策略

定时删除–>以CPU内存换redis内存惰性删除–>以redis内存换CPU内存定期删除redis使用:惰性删除+定期删除redis在启动的时候读取配置文件hz的值,默认为10每秒执行hz次serverCron()–>databasesCron()—>actveEXpireCyle()actveEXpireCyle()对每个expires[*]进行逐一检测,每次执行250ms/hz对某个expires[* ]检测时,随机挑选N个key检查如果key超时

2020-07-24 11:11:38 68

原创 Redis发布订阅

publish: 发布消息 语法:publish channel名称 “消息内存”subscribe: 订阅消息 语法:subscribe channel名称subscribe: 使用通配符订阅消息 语法: pubscribe channel*名称punsubscribe: 使用通配符退订消息。语法:punsubscribe channel*名称unsubscribe : 退订消息 语法:unsubscribe channel名称...

2020-07-24 11:07:50 69

原创 邮件微服务项目

文章目录一、异步回调插入充值记录二、内部三、Gerrit新建项目四、svn文档路径五、邮件模板启用六、java发送附件是.bin格式七、邮件模板八、freemarker字符串替换九、多个收件人处理十、HTML代码存储到数据库中十一、发送邮件接口入参十二、数据库实体JSON十三、json文本转Java对象十四、本地模拟连接数据库十五、发送邮件工具类优化十六、相关截图一、异步回调插入充值记录不需要平台订单号(不需要返,无所谓)userId没有返回来(不需要)如何获取vin,simcardId获取vin信

2020-07-24 10:57:27 2019

原创 如何决定使用HashMap还是TreeMap?

问:如何决定使用 HashMap 还是 TreeMap?介绍TreeMap<K,V>的Key值是要求实现java.lang.Comparable,所以迭代的时候TreeMap默认是按照Key值升序排序的;TreeMap的实现是基于红黑树结构。适用于按自然顺序或自定义顺序遍历键(key)。HashMap<K,V>的Key值实现散列hashCode(),分布是散列的、均匀的,不支持排序;数据结构主要是桶(数组),链表或红黑树。适用于在Map中插入、删除和定位元素。结论如果你需要

2020-07-24 10:11:23 781

原创 vsp搭建项目全过程

全过程涉及node、springboot、git、nacos、maven等,以及踩过的坑。搭建node环境:C:\Users\Administrator\Desktop\vsp\nodenode下载地址:Index of /download/release/ https://nodejs.org/download/release/v10.15.3/之后在webstorm中File->setting 输入node.js 配置Node interpreternode.js的.msi的安装步骤:

2020-07-23 17:40:12 1810

原创 Vue页面表格选中取消不刷新

<el-table :data="vehicleModelTableData" highlight-current-row ref="singleTable2" @row-click="handleCurrentChangeModel"

2020-07-23 17:27:13 340

原创 el-select clear清空内容时触发事件

<el-form-item label=""> <el-select v-model="formData.brandName" @change="getCarModel()" @clear="setValueNull" clearable placeholder="请选择品牌名称"> <el-option v-for="item in brandNam

2020-07-23 17:25:22 5338 2

空空如也

空空如也

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

TA关注的人

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