自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Guevara的博客

技术菜鸟记录技术学习过程

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

原创 基于微信小程序的招聘资讯发布平台的设计与实现

基于微信小程序的招聘资讯发布平台的设计与实现。项目前端基于微信小程序,使用技术:mpvue、Vant、AntV;后端基于Spring Boot、myBatis、Redis, DB使用mysql

2024-03-22 11:37:20 7922 1

原创 聊聊SOA

SOA是什么?SOA全英文是Service-Oriented Architecture,中文意思是中文面向服务编程,是一种思想,一种方法论,一种分布式的服务架构(具体可以百度)。用途:SOA解决多服务凌乱问题,SOA架构解决数据服务的复杂程度,同时SOA又有一个名字,叫做服务治理。通过一个系统我们看一下架构的演变过程(由统一到分布式):当我们的项目比较小时,我们只有一个系统,并且把他们写到一起,放在一个服务器上,但是随着平台越来越大,数据量越来越大,我们不得不通过分库,把多个模块的数据库分别放在对应

2021-08-10 23:40:17 170

原创 SLA 简介

SLA 的由来在云计算时代,越来越多企业的服务迁移到云上,各大云服务厂商有自己服务发布的SLA,SLA是服务提供商与客户之间定义的正式承诺。我们使用云服务提供商为我们提供的 APP 或者网站,如果出现购物无法下单、看视频打不开类似的问题,会严重影响用户体验。如果故障持续的时间比较久,那将会流失一大批用户,给业务带来损失。那么,如何衡量给客户提供的服务质量呢?进而如何衡量系统的稳定性呢?毋庸置疑,需要统一的语言 SLA。SLA 的定义服务等级协议(英语:service-level agreement

2021-07-20 19:57:32 10905

原创 GSLB调度服务原理

GSLB,全局负载均衡(Global Server Load Balancing ),主要的目的是在整个网络范围内将用户的请求定向到最近的节点(或者区域)。是对物理集群的负载均衡,不止是简单的流量均匀分配,还会根据应用场景的不同来制定不同的策略。本文将讨论 GSLB 的几种实现,并介绍调度服务实现的大体情况。

2021-07-14 16:02:49 1701

原创 建立TCP连接为什么要3次握手?

一、概述TCP三次握手的目的是建立可靠的通信信道。通信,简单来说就是数据的发送和接收。而三次握手最主要的目的就是双方确认自己与对方的发送和接收是正常的。如下图所示,下⾯的两个机器⼈通过3次握手确定了对方能正确接收和发送消息(图⽚来源:《图解HTTP》 )。发送端(Client)和接收端(Server)总共发起的 3 次请求就叫做 3 次握手。二、握手过程第 1 次握手Client 什么都无法无法确认。虽然自己发送了 syn 数据,但是只要没收到 Server 端的 syn/ack 数据都无法确

2021-01-07 17:46:21 5047

原创 密码加盐加密存储及其登录验证方式

本文介绍一种常用的密码加密存储方式,并附上登录时验证用户密码的方法。代码用 Java 来实现,结尾附带有 github 的源码链接。用户注册账号,填写好密码后传递到后端。密码的形式一般是经过前端 md5 加密过的。登录校验根据账号来获取它的盐并且和登录时输入的密码求hash,此 hash 值和数据库存取的 hash 值相等则密码校验通过。

2021-01-05 16:14:03 3404 1

原创 Java生成RSA非对称加密的密钥对

用Java生成RSA非对称加密的密钥对,在线生成RSA密钥对,在线生成RSA密钥

2020-12-31 16:00:34 386

原创 计算机名词解释:宽带、带宽、流量、网速

计算机名词解释:宽带、带宽、流量、网速、内网、外网。假设你们家的带宽是 10 Mbps,这是什么概念,下载文件的速度达到每秒 10 M 了吗?不是吧,为什么我们家 10Mbps 带宽的网速最大速度也就 1.x M/s

2020-12-30 20:48:36 3136

原创 详解什么是NAT?

NAT(Network Address Translator,网络地址转换)是用于在本地网络中使用私有地址,在连接互联网时转而使用全局 IP 地址的技术。NAT实际上是为解决IPv4地址短缺而开

2020-12-28 09:02:28 52567 8

原创 【最新版SpringBoot】SpringBoot集成Vue打包后的dist应该如何配置

概述最近项目组后端需要一个简单的web后台,于是用Ant Design Vue撸了一个页面,嫌麻烦也就没有前后端分离了。骚操作大致归纳如下:Vue 打包后得到 dist 将 dist 下生成的静态文件拷贝到 SpringBoot 的 resources/static 目录下但是过程中遇到几个问题,既然踩过坑那么久将其记录下来,防止有和我一样的同学们重复踩坑。Vue的两种路由模式...

2019-12-20 13:59:30 5931

原创 详解什么是中台?

最近被老板折腾得够呛,我们老板听说最近中台的概念很火,让我们调研公司实习中台战略的可行性。刚开始并不理解什么是中台... 因此,写篇博客先简单介绍下什么是中台。首先,这里所说的“前台”和“前端”并不是一回事。所谓前台即包括各种和用户直接交互的界面,比如web页面,手机app;也包括服务端各种实时响应用户请求的业务逻辑,比如商品查询、订单系统等等。后台并不直接面向用户,而是面向运营人员的配置管理系统,比如商品管理、物流管理、结算管理。后台为前台提供了一些简单的配置。

2019-09-21 12:01:09 11695 11

原创 面试题:消息队列的幂等性,如何保证消息不被重复消费

幂等性,通俗点说,就一个数据,或者一个请求,给你重复来多次,你得确保对应的数据是不会改变的,不能出错。所以第二个问题来了,怎么保证消息队列消费的幂等性?其实还是得结合业务来思考,我这里给几个思路:比如你拿个数据要写库,你先根据主键查一下,如果这数据都有了,你就别插入了,update 一下好吧。比如你是写 Redis,那没问题了,反正每次都是 set,天然幂等性。比如你不是上面两个场景,那做的稍微复杂一点,你需要让生产者发送每条数据的时候,里面加一个全局唯一的 id,类似订单 id 之类的东西

2019-08-17 23:48:44 1542

原创 面试题:消息队列如何保证高可用?

目录1. 面试题2. 面试官心理分析3. 面试题剖析3.1. RabbitMQ 的高可用性3.2. Kafka 的高可用性1. 面试题如何保证消息队列的高可用?2. 面试官心理分析如果有人问到你 MQ 的知识,高可用是必问的。在《为什么使用消息队列?消息队列有什么优缺点?》一文中提到,MQ 会导致系统可用性降低。所以只要你用了 MQ,接下来问的一些要点肯定就是围...

2019-08-17 16:57:26 196

原创 面试题:为什么使用消息队列?消息队列有什么优缺点?

目录1. 面试题2. 面试官心理分析3. 面试题剖析3.1. 为什么使用消息队列3.2. 消息队列有什么优缺点3.3. Kafka、ActiveMQ、RabbitMQ、RocketMQ 有什么优缺点?1. 面试题为什么使用消息队列? 消息队列有什么优点和缺点? Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么区别,以及适合哪些场景?2...

2019-08-17 14:17:08 3197

原创 如何解决数据迁移和热点问题?

hash是可以解决数据均匀的问题,range可以解决数据迁移问题,那我们可以不可以两者相结合呢?利用这两者的特性呢?我们考虑一下数据的扩容代表着,路由key(如id)的值变大了,这个是一定的,那我们先保证数据变大的时候,首先用range方案让数据落地到一个范围里面。这样以后id再变大,那以前的数据是不需要迁移的。但又要考虑到数据均匀,那是不是可以在一定的范围内数据均匀的呢?因为我们每次的扩容肯定会事先设计好这次扩容的范围大小,我们只要保证这次的范围

2019-08-14 14:48:07 844

原创 什么是数据库分库分表?

中大型项目中,一旦遇到数据量比较大,小伙伴应该都知道就应该对数据进行拆分了。有垂直和水平两种。我们也知道 mysql 单表存储量推荐是百万级,如果不进行处理,mysql 单表数据太大,会导致性能变慢。使用方案可以参考数据进行水平拆分。把4000万数据拆分4张表或者更多。当然也可以分库,再分表;把压力从数据库层级分开。

2019-08-14 14:11:40 979

原创 面试题:什么是消息队列?

〇、 概念什么是消息队列?一、消息模型点对点发布/订阅二、使用场景异步处理流量削锋应用解耦三、可靠性发送端的可靠性接收端的可靠性参考资料〇、 概念什么是消息队列?消息队列,简称它为MQ(Message Queue),消息队列可以简单理解为:把要传输的数据放在队列中。科普:把数据放到消息队列叫做生产者 从消息队列里边...

2019-08-13 16:45:45 517

原创 基于 Spring Boot 和 WxJava 实现网站接入微信扫码登录

1. 概述2. 前置工作2.1 微信开放平台认证流程2.1 项目引入 WxJava3. 与微信平台交互的步骤以及实现3.1 获取 access_token 时序图3.2 第一步:请求 CODE3.3 第二步:通过 code 获取 openid 和 access_token1. 概述项目源码:基于 Spring Boot 和 WxJava 实现网站接入微信扫码登录...

2019-08-12 16:08:21 4414 2

原创 分布式缓存(主要讨论LRC、缓存位置、CDN、缓存穿透、缓存雪崩、缓存击穿、缓存一致性、缓存“无底洞”、数据分布、一致性哈希)

一、缓存特征二、LRU三、缓存位置四、CDN五、缓存问题六、数据分布七、一致性哈希参考资料一、缓存特征命中率当某个请求能够通过访问缓存而得到响应时,称为缓存命中。缓存命中率越高,缓存的利用率也就越高。最大空间缓存通常位于内存中,内存的空间通常比磁盘空间小的多,因此缓存的最大空间不可能非常大。当缓存存放的数据量超过最大空间时,就需要淘汰部分数据来存放新到达的数据。...

2019-08-03 18:33:03 1266

原创 Spring Boot微信开发(基于SDK-WxJava),实现了简单的消息处理、生成二维码及扫码事件处理

# Spring Boot微信开发,实现了简单的消息处理、生成二维码及扫码事件处理(基于SDK-WxJava)本 Demo 基于 Spring Boot 构建,实现微信公众号后端开发功能。本项目修改自 WxJava 的 Demo 演示程序 weixin-java-mp-demo-springboot,更多官方 Demo 请[查阅此处](https://github.com/Wechat-Group/WxJava/blob/master/demo.md)。

2019-07-26 18:08:13 4360 2

原创 JVM垃圾收集算法

JVM垃圾收集,垃圾收集算法;在堆里面存放着Java世界中几乎所有的对象实例,垃圾收集器在对堆进行回收前,第一件事情就是要确定这些对象之中哪些还“存活”着,哪些已经“死去”(即不可能再被任何途径使用的对象)。判断对象是否存活的两种算法:引用计数法和可达性分析算法

2019-03-30 20:24:37 184

原创 如何计算安全期

安全期和每个人的最长周期、最短周期、经期开始时间有关。安全期并非绝对安全,有时候女性排卵会提前,或者延后,此时安全期的判断就会变得无效。判断安全期只能减少怀孕的几率,不能作为避孕方法。

2019-03-09 22:26:52 653 2

原创 Mysql主从复制(master-slave)

一、简介Mysql作为目前世界上使用最广泛的免费数据库,在实际的生产环境中,由单台Mysql作为独立的数据库是完全不能满足实际需求的,无论是在安全性,高可用性以及高并发等各个方面。读写集中在一个数据库上让数据库不堪重负,大部分网站开始使用主从复制技术来达到读写分离,以提高读写性能和读库的可扩展性。Mysql的master-slave模式成为这个时候的网站标配了。一般来说都是通过 主从复制(...

2018-11-13 14:21:11 208

原创 Mysql事务的隔离级别

事务,所谓事务是用户定义的一个数据操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。事务具有4个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持续性(Durability)。这四个特性简称为 ACID特性(ACID properties)。

2018-10-10 23:39:53 345

原创 Java NIO学习笔记

目录〇、前言一、简介二、缓冲区(Buffer)和通道(Channel)缓冲区通道三、分散读取与聚集写入四、字符集Charset五、阻塞与非阻塞1、简单的客户端/服务端通信:实现文件的传输2、客户端/服务端通信阻塞的情况:服务端等待客户端继续发送,客户端等待服务端的反馈。3、非阻塞式IO的实现——选择器(Selector)阶段总结六、总结〇、前...

2018-09-29 23:53:18 198

原创 操作系统中的几种I/O控制方式

按照I/O控制器功能的强弱以及和 CPU 之间联系方式的不同,可以把 I/O 设备的控制方式和通道控制方式分为四类:直接程序控制方式、中断驱动控制方式、直接存储器访问(DMA)控制方式和通道控制方式。I/O控制方式发展的目标是尽量减少主机对 I/O 控制的干预,把主机从繁杂的 I/O 控制事务中解脱出来,以便更多地进行数据处理,提高计算机效率和资源的利用率。它们之间的主要差别在于 CPU 与外围设备并行工作的方式和程度不同。

2018-09-28 16:53:42 35859

原创 面试之单例模式的实现方法(附DCL的讨论)

题目:设计一个类,我们只能生成该类的一个实例。单例模式的实现要点:① 构造函数设为私有函数,保证只能生成一个实例② 是否有线程安全问题③ 建议将实例定义为静态的,在需要的时候创建该实例解法一:class Singleton1{ private Singleton1(){ } private static Singleton1 instance = null;...

2018-09-22 15:34:44 350

原创 hashCode与equals的作用与区别及应当注意的细节

哈希算法,用于提高在集合中查找元素的效率。这种方式将集合分成若干个存储区域(可以看成一个个桶),每个对象都可以计算出一个哈希码,可以根据哈希码分组,每组分别对应某个存储区域,如此每个对象可以根据它的哈希码被分配到不同的存储区域(不同的桶中)。当equals方法被重写时,通常有必要重写 hashCode 方法,以维护 hashCode 方法的常规协定,该协定声明相等对象必须具有相等的哈希码。

2018-09-14 22:04:58 1080

原创 try catch finally语句块中存在return语句时的运行流程

题目:下面代码运行结果是()public class Test{ public int add(int a,int b){ try { return a+b; } catch (Exception e) { System.out.println("catc...

2018-09-10 19:09:59 3501 1

原创 一道代码分析题浅析String的intern()方法

String.intern()是一个Native方法,它的作用是:如果字符串常量池中已经包含了一个等于此String对象的字符串,则返回代表池中这个字符串的String对象;否则,将此String对象包含的字符串添加到常量池中,并且返回此String对象的引用。

2018-09-09 19:22:26 688

原创 初识Lambda表达式

Lambda表达式是Java SE 8中一个重要的新特性。lambda表达式允许你通过表达式来代替功能接口。 lambda表达式就和方法一样,它提供了一个正常的参数列表和一个使用这些参数的主体(body,可以是一个表达式或一个代码块)。

2018-09-08 15:16:32 222

空空如也

空空如也

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

TA关注的人

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