- 博客(19)
- 资源 (3)
- 收藏
- 关注
原创 搞懂redis系列--N.面试题汇总
1.redis的优点?性能好,每秒可以处理超过 10 万次读写操作多种数据结构,string、list、hash、set、zset2.一个字符串类型的值能存储最大容量是多少?512M...
2020-02-08 16:41:01
280
原创 搞懂redis系列--缓存的使用和常见问题
一、缓存的实现最经典的缓存+数据库读写的模式,就是 Cache Aside Pattern。读的时候,先读缓存,缓存没有的话,就读数据库,然后取出数据后放入缓存,同时返回响应。更新的时候,先更新数据库,然后再删除缓存。二、缓存不一致及解决方案1.问题:先修改数据库,再删除缓存。如果删除缓存失败了,那么会导致数据库中是新数据,缓存中是旧数据,数据就出现了不一致。解决方案:先删除缓存,再修...
2020-02-08 15:16:32
410
原创 搞懂redis系列--redis实现分布式锁
废话不多说,直接上代码。细节可以看这个博客:漫画:什么是分布式锁?package com.sheliming.jedis.lock;import redis.clients.jedis.Jedis;import redis.clients.jedis.JedisPool;import redis.clients.jedis.params.SetParams;import java....
2020-02-07 20:56:34
221
原创 搞懂redis系列--redis设计与实现
学习Redis不仅要学习各种命令的使用,如果有时间最好阅读以下redis的源码。先推荐一本书黄建宏的《redis设计与实现》,里面非常清晰的讲述的Redis3.0的源码实现,本博客也是在阅读此书之后的一些总结和感悟。(本博客基于Redis5.0.3)一.数据结构与对象用过Redis的中支持的五大数据类型:字符串String、列表List、集合Set、哈希表Hash、有序集合ZSet。那么他...
2020-02-07 14:34:35
323
原创 搞懂redis系列--1.redis5.0.3四种安装详细教程
redis几乎是现在微服务系统中必不可少的一个中间件,她本质上就是一个内存数据库,由于她的性能和易用性使得有很多场景的应用,如:缓存、消息队列、分布式锁等等。。学习redis先安装一个redis,总共有四种安装方式:单机模式、主备模式、哨兵模式、集群模式(3.0之后提供)。安装环境:一台Ubuntu虚拟机一.单机模式安装下载redis的源码包,解压缩,make编译。(需要确定linux中...
2020-02-06 14:50:05
793
原创 搞懂redis系列--统计用户访问量(HyperLogLog原理)
一、应用场景需要统计网页每天的用户访问量的数据,同一个用户一天之内的多次访问请求只能计数一次。二、实现方案方案一:使用set数据类型最简单想到的实现就是:为每一个页面一个独立的 set 集合来存储所有当天访问过此页面的用户 ID。当一个请求过来时,我们使用 sadd 将用户 ID 塞进去就可以了。通过 scard 可以取出这个集合的大小,这个数字就是这个页面的用户访问量数据。优点:简单...
2020-02-06 11:50:46
1840
原创 Java搜索引擎--全文检索实现
上文中介绍了什么是全文检索,这篇文章介绍一下全文检索的实现。一、索引使用过程全文检索的流程分为两大流程:索引创建、搜索索引:索引创建:将现实世界中所有的结构化和非结构化数据提取信息,创建索引的过程。搜索索引:就是得到用户的查询请求,搜索创建的索引,然后返回结果的过程。...
2020-01-04 23:18:02
1571
原创 Java搜索引擎--全文检索介绍
一、什么是全文检索什么叫做全文检索呢?这要从我们生活中的数据说起。我们生活中的数据总体分为两种:结构化数据和非结构化数据。结构化数据:指具有固定格式或有限长度的数据,如数据库,元数据等。 非结构化数据:指不定长或无固定格式的数据,如 互联网数据、邮件,word文档等。非结构化数据又一种叫法叫全文数据。按照数据的分类,搜索也分为两种:对结构化数据的搜索: 如对数据库的搜索,用SQL语句。...
2020-01-04 19:36:04
3227
原创 Java设计模式之--状态模式
当系统中某个对象存在多个状态,这些状态之间可以进行转换,而且对象在不同状态下行为不相同时可以使用状态模式。状态模式将一个对象的状态从该对象中分离出来,封装到专门的状态类中,使得对象状态可以灵活变化。状态模式是一种对象行为型模式。一、请假流程如图,这是一个简化后的请假流程,员工首先提交请假申请到主管审批、主管审批通过后到hr审批、hr审批通过后就到审批完成状态,主管和hr不同意可以将请假单驳回...
2019-09-15 15:50:15
188
原创 Java设计模式之--建造者(生成器)模式
Builder Pattern:建造者模式,又称生成器模式:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。这句话可能看不太懂,我们先举例子再回来看这句话。一.例子假设我们现在要做一款游戏,其中有男人和女人,他们都是由头、身体、四肢构成,但是男人和女人每个部分的具体实现是不一样的。很容易,我们可以写出以下代码:首先有一个Person类,男人和女人都是这个类的一个对象(...
2019-05-26 15:23:56
148
原创 Java设计模式之--设计模式入门
Java设计模式系列:设计模式入门:单例模式:https://blog.youkuaiyun.com/u011863006/article/details/84201592Java各种技术、各种框架更新的速度越来越快,学习成本越来越高,但是我们学习Java要学习其中不变的部分,其中设计模式就是最高层次的抽象,是高出框架、语言的。所以学习的收益也是最高的,不会被时代淘汰,并且几乎在任何一个面试中都会被...
2019-04-13 01:29:23
241
原创 mysql数据库系列--数据库隔离级别及原理
一.事务的四个基本要素(ACID)说到数据库事务就不得不说,数据库事务中的四大特性:之前看过一篇文章,以去小卖部买东西为例,介绍事务:原子性(Atomicity):一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。以买东西为例:就...
2019-03-05 00:11:20
363
原创 深入剖析jdbc
之前在面试的时候被问到在使用jdbc的时候为什么需要注册驱动的步骤,在注册驱动之后驱动代码是怎么被执行到的,之前只知道简单的使用,被问到具体原理的时候就懵逼了。现在有空来深入总结一下jdbc的使用原理。一.jdbc的使用主要分为5个步骤:注册驱动获取数据库连接Connection获取数据库操作对象Statement执行SQL语句处理查询结果集ResultSet关闭资源 倒序依次关...
2019-01-31 23:34:34
166
原创 《大型网站技术架构》读后总结
之前看到有人推荐这本书,就买了一本回来看了下,非常清晰明了,非常适合入门,总结一下,供自己复习。大型网站发展历程单体架构应用服务和数据服务分离使用缓存应用服务器集群数据库读写分离反向代理和CDN加速分库、分布式数据库NoSQL和搜索引擎业务拆分微服务大型网站架构模式水平分层垂直分割分布式(缺点:1.性能2.可用性3.数据一致性4.开发维护难度)集群缓存(CD...
2018-12-23 19:45:40
248
原创 Java设计模式之--单例模式
最近在看《Head First设计模式》这本书,准备将其中的感悟结合平时的积累总结一下,写一个设计模式系列博客。首先就从最简单的单例模式开始吧。单例模式的定义就是确保一个类只有一个实例,并提供一个全局的访问点。那么什么时候需要单例模式呢,比如说:线程池、连接池、缓存、注册表、日志对象,还有打印机、显卡的驱动程序,这些类只能有一个实例,如果有多个实例就对造成混乱。单例模式从对象生成的时间上可以分...
2018-11-18 22:52:48
192
原创 Google Test入门及使用Visual Studio编译
1.下载代码:安装git(步骤自己百度),打开命令行,输入git clone “git@github.com:google/googletest.git”2.导入gtest.sln文件安装VS(过程自己百度),双击googletest\googletest\msvc\2010\gtest.sln 文件,会自动导入到VS中。3.编译debug和release两种模式都编译一下生成两个....
2018-10-30 23:13:01
1115
原创 Spring Boot详细入门教程系列(三.整合jdbc)
Spring Boot 整合jdbc其实非常简单,只需要加入依赖的pom、加入配置文件即可,下面我们来搭建一下吧。 下面是我的目录结构: 一.引入jdbc的依赖<!-- 引入spring boot的依赖 --> <parent> <groupId>org.springframework.boot</groupId&g...
2018-03-26 00:31:40
321
原创 Spring Boot详细入门教程系列(二.第二种启动方式)
编写统一的main启动@ComponentScan("com.sheliming")@EnableAutoConfigurationpublic class App { public static void main(String[] args) { SpringApplication.run(App.class,args); }}...
2018-03-26 00:14:48
146
原创 Spring Boot详细入门教程系列(一.Hello World)
j#Spring Boot HelloWorld一.创建maven工程,导入依赖这里使用的是1.4.3版本的spring boot, &lt;!-- 引入spring boot的依赖 --&gt; &lt;parent&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&
2018-03-22 23:42:31
154
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人