自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(185)
  • 资源 (2)
  • 问答 (1)
  • 收藏
  • 关注

原创 大数据开发之数据仓库

数仓(数据仓库,Data Warehouse),就是一种数据库,不过它被专门设计用于支持企业决策分析和报告操作;通常用于存储和管理来自多个业务系统的数据,使企业能够进行深入的数据分析和挖掘,从而改进业务决策。

2025-04-12 01:13:20 236

原创 Redis Cluster集群详解

集群中的数据同步是异步进行的,所以不可避免的会出现数据不一致问题,下面是一些不同场景的解决办法。集群中的主节点故障转移由故障检测、选举新主节点、集群状态更新三个阶段组成。

2025-02-27 16:00:13 631

原创 Golang之Context详解

golang.org/x/net/context,是golang中的一个标准库,主要作用就是创建一个上下文,实现对程序中创建的协程通过传递上下文信息来实现对协程的管理。

2025-01-22 23:35:54 1105

原创 一致性算法之Gossip协议详解

Gossip协议的核心思想是节点之间通过随机的点对点通信传播信息,具体过程如下节点初始化a. 节点彼此对等:Gossip协议下,系统中所有节点彼此对等,没有Leader节点;b. 邻居节点:节点初始化时,会随机或固定(可配置的策略)从所有节点中选择若干个作为邻居。信息传播每个节点在收到消息后,随机向N个节点传播这条消息;被选择的邻居节点收到消息后,会重复a操作,继续向其邻居节点传播消息。传播终止。

2025-01-16 00:22:06 947

原创 介绍下不同语言的异常处理机制

每种语言的异常处理机制都是为其设计理念和应用场景量身定制的。选择合适的语言和异常处理方式,取决于项目的复杂度和需求。

2025-01-12 13:26:11 929

原创 Go singleflight库源码分析

当调用singleflight的Do方法时,首先会检查是否有相同key的请求正在进行,如果有则等待,如果没有则新建一个请求。当一个新的请求来时,首先会通过map查找是否有相同的请求正在进行,如果有则等待,如果没有则新建一个请求并保存到map中。通过singleflight,可以保证对同一个任务的请求在同一时间只有一个,避免了一些耗时较长任务的重复执行。map中的每一个key对应一个call,call中保存了请求的结果和一个channel,用于阻塞和唤醒请求;主要作用的是避免对同一个任务的重复请求。

2024-12-25 22:49:45 452

原创 服务程序部署方式

部署方式优点缺点使用场景物理机部署性能最佳、简单直接资源浪费、扩展性差、运维复杂资源需求确定、性能要求极高的场景虚拟机部署资源隔离好、灵活扩展性能损耗、管理复杂、镜像臃肿多租户环境、灾备需求高的场景容器化部署轻量级、高效、可移植性好、生态完善隔离性较弱、学习成本高、网络复杂云原生应用、微服务架构、敏捷开发环境随着技术的发展,容器化部署逐渐成为主流;但并不意味着物理机部署已成为历史。对于有着明确资源需求、用户体量、希望低成本部署的程序服务来说,物理机部署仍然是他们的选择;

2024-12-15 15:15:52 1033

原创 浅析中台概念

中台,它旨在避免重复开发不同业务中的相同模块,提高开发效率。以活动需求为例,如果许多活动都需要抽奖功能,那么在架构设计时,可以将抽奖模块从业务中抽象出来,变成一个通用的能力。这样,对于活动开发来说,只需调用抽奖中台提供的接入方法即可,从而大大降低了开发成本,理论上提高了开发效率。因此,中台实际上是提供一些通用的服务能力,以便于其他业务功能的快速实现。

2024-11-07 12:52:29 292

原创 Golang 类型转换之cast库介绍

Cast库的作用就是封装了很多类型转换的方法,让引用这个库的开发者,能够以极简的方式把任意类型的值转换成指定类型。

2024-10-09 00:21:51 789 1

原创 游戏服务架构之 网关

游戏类服务器,为了各个模块之间不相互影响,一般都是微服务的方式实现,比如匹配、房间、游戏等都是单独部署的,为了让用户切换不同场景时,延迟更低,那就需要减少连接建立的次数,因此,需要考虑对一条连接持续复用。在网关把消息转发到具体的游戏实例前,可以对消息进行一些封装,携带当前网关id,这样内部服务需要push时,就可以通过记录的消息对应的id找到具体的网关实例。游戏服务的一个特点是,需要维护大量的长连接来保证用户与游戏间的通信,比如tcp长连接、websocket双工通信等。

2024-08-03 15:11:10 863

原创 介绍下PolarDB

PolarDB是阿里云自研的,兼容MySQL、PostageSQL以及支持MPP的PolarDB-X的高可用、高扩展性的数据库。

2024-07-26 00:13:19 417

原创 etcd入门(一)基础架构及写入流程

etcd,可以读成etc-d,也就是分布式的配置文件。同理可以知道etcd的作用就是一个分布式的配置文件系统,也就是配置中心。上面只是分析了etcd的简单架构以及写流程,并没有介绍一些模块的具体作用,如哪些模块保证etcd的数据一致性、MVCC的作用是什么;这些会在后面补充。

2024-07-21 10:18:53 669

原创 唯一索引插入引发的死锁问题

在批量插入的过程中,尽量保证插入顺序与索引的顺序一致,不仅是主键索引,也包括唯一索引。

2024-07-13 13:13:21 972

原创 SQL优化之深分页

深分页,即SQL查询过程中,使用的页数过深,数据库执行的过程中,需要遍历前面很多数据并跳过后,才返回数据的过程。这种情况会导致SQL查询变慢;对于深分页问题,无论是使用Inner Join、还是记录上一个id,核心思路都是要降低回表次数。

2024-07-12 02:04:43 631

原创 网络连接之队头阻塞!!!

队头阻塞,在网络模型中简单理解就是,对于队列型的请求模型,如HTTP的请求-响应模型、TCP的ACK确认机制,都依赖得到一个具体的响应包,如果收不到这个响应包,那下一个请求就不能发,从而导致网络连接的阻塞。在工作的一年中,接触了很多网络相关的问题与实现:比如,通信协议:HTTP、TCP、QUIC、RPC、WebSocket,还有Socket4代理等等。也遇到了一些实际的网络问题,像海外,尤其是东南亚等网络基建不好的地区,为了解决网络延迟导致的用户体验差而引入QUIC;

2024-07-03 00:40:39 399

原创 MySQL自增主键踩坑记录

对于MySQL的自增主键,本文记录、整理下在工作中实际遇到的问题。下面示例均基于MySQL 8.0。

2024-06-29 17:24:14 392

原创 协程执行顺序引发的问题

使用waitGroup可以实现协程间通信,对于这段例子,通过wg保证run()函数执行完后,在对outCh进行输出。outCh是一个4缓冲区大小的channel,如果outCh没满就直接写入,否则把outCh的首部元素移除再添加;然后输出阻塞后,run协程才继续执行,把9写到outCh中,因此最后的输出结果是5、6、7、8、9.在Golang中,因为协程执行的顺序是不固定的,如果不在代码里进行控制,可能就会导致预期外的输出。多出来的“5”,是因为协程的执行顺序不可控,当主协程执行到。

2024-06-23 15:28:27 278 1

原创 基于Redis实现任务队列

redis list pub sub stream 任务队列 重复消费

2023-04-09 21:46:48 1067

原创 Redis使用zset和hash实现限流算法

基于go语言,使用redis实现两种限流算法

2023-03-22 23:29:38 811

原创 开发常用Git命令整理汇总

集中式版本控制系统:版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。中央服务器就好比是一个图书馆,你要改一本书,必须先从图书馆借出来,然后回到家自己改,改完了,再放回图书馆。分布式版本控制系统:分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。撤销暂存区的修改,或版本回退,HEAD是指代最新版本。

2023-02-26 21:20:13 479

原创 快速启动并部署Go Web项目

以github中的一个基于beego的简易博客系统为例,记录项目的从解压到部署到服务器的全流程

2023-02-02 20:47:29 2236

原创 分布式锁详解

什么是锁?同步在单进程的系统中,当存在多个线程可以同时改变某个变量(可变共享变量)时,就需要对变量或代码块做同步,使其在修改这种变量时能够线性执行消除并发修改变量。同步的实现而同步的本质是通过锁来实现的。为了实现多个线程在一个时刻同一个代码块只能有一个线程可执行,那么需要在某个地方做个标记,这个标记必须每个线程都能看到,当标记不存在时可以设置该标记,其余后续线程发现已经有标记了则等待拥有标记的线程结束同步代码块取消标记后再去尝试设置标记。这个标记可以理解为锁。锁的实现方式不同地方实现锁的方式也不

2022-02-26 15:33:11 384

原创 Mybatis $ 与 # 使用&SQL攻击示例

最近在整理mybatis面试题,记录下,用#{},和 ${}传参的区别。使用场景固定值(列名)传入参数是,sql语句解析是会加上'*',比如select id, username, password, email, phone, question, answer, role, create_time, update_time from mall_user where username = ? ,传入的username为admin,那么最后打印出来的就是select id, username,

2022-01-17 20:23:24 216

转载 Java的四种引用类型

文章目录一文读懂java中的Reference和引用类型简介强引用Strong Reference软引用Soft Reference弱引用weak Reference虚引用PhantomReferenceReference和ReferenceQueue四大状态三个Queue/ListWeakHashMap总结(原作者)在看JVM的时候,发现Java引用类型反复出现;遂找了一篇总结博客来学习。一文读懂java中的Reference和引用类型一文读懂java中的Reference和引用类型简介ja

2022-01-09 10:00:13 20414 1

转载 知识点串联: 输入URL到页面的全过程

地址栏输入URLURL,即统一资源定位符。它实际上就是网站的网址。浏览器就是靠URL来查找资源位置。可以把URL分成几个部分:协议、网络地址、资源路径。● 传送协议:URL包含协议部分,是浏览器和www万维网之间的沟通方式,它会保证浏览器正确地在网络上找到资源位置。最常见的网络传输协议是HTTP协议;其他的还有ftp,file,mailto,git等。还有自定义的协议,例如Itencent。不同协议有不同的通讯内容格式。● 网络地址:指示该连接网络上的某一台计算机,可以是域名或者IP地址,也可以包括

2021-12-20 11:21:14 403 1

转载 网络协议-HTTP协议详解

一、基础概念1.1URLURI 包含 URL 和 URN,目前 WEB 只有 URL 比较流行,所以见到的基本都是 URL。URI(Uniform Resource Identifier,统一资源标识符)URL(Uniform Resource Locator,统一资源定位符)URN(Uniform Resource Name,统一资源名称)1.2请求和响应报文请求报文PS:这是一个请求报文响应报文二、HTTP方法GET获取资源当前网络请求中,绝大部分使用的.

2021-12-20 10:53:40 1083

原创 网络协议-UDP协议详解

本文主要来源于:https://www.pdai.tech/md/develop/protocol/dev-protocol-udp.htmlUDP连接相比于TCP连接,需要掌握的知识点不多。UDP概述UDP(User Datagram Protocol)即用户数据报协议,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。在OSI模型中,在第四层——传输层,处于IP协议的上一层。UDP用来支持那些需要在计算机之间传输数据的网络应用。包括网络视频会议系统在内的众多的客户/服务器模式的网络.

2021-12-20 10:47:29 2311

转载 网络协议-TCP协议详解

本文转载自:https://www.pdai.tech/md/develop/protocol/dev-protocol-tcpip.html重点:TCP滑动窗口,TCP握手,TCP重传机制。简述首先,我们需要知道TCP在网络OSI七层模型中的第四层,即运输层中,IP在网络层,ARP在数据链路层。在第链路层上的数据,我们叫帧,在网络层的数据叫包,运输层及以上的数据叫段。我们程序的数据首先会打到TCP的Segment中,然后TCP的Segment会打到IP的Packet中,然后再打到以太网Ethern

2021-12-20 10:39:50 2339

原创 网络基础(三)-IP相关协议详解

IP及配套协议详解因为网络层是整个互联网的核心,因此应当让网络层尽可能简单。网络层向上只提供简单灵活的、无连接的、尽最大努力交互的数据报服务。使用 IP 协议,可以把异构的物理网络连接起来,使得在网络层看起来好像是一个统一的网络。与 IP 协议配套使用的还有三个协议:地址解析协议 ARP(Address Resolution Protocol)网际控制报文协议 ICMP(Internet Control Message Protocol)网际组管理协议 IGMP(Internet G

2021-12-20 10:35:22 2219

转载 网络基础(二)-7层协议,4层,5层

1.全局网络层次1.1 OSI7层国际标准化组织ISO于1984年提出了OSI(Open System Interconnection Reference Model,开放系统互联参考模型)。OSI很快成为计算机网络通信的基础模型。ISO依层次结构来划分:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。OSI七层参考模型的各个层次的划分遵循下列原则:同一层中的各网络节点都有相同的层次结构,具有同样的功能。同一节点内相邻层之间通过接口(可以是逻辑接口)进行通信。七层结构

2021-12-20 10:22:50 1795

原创 质数判断-多种优化

【1】直观判断根据质数的定义,直接遍历2~n-1,看其中是否有n的因子。bool is_prim1(int x){ for(int i=2;i<x;i++){ if(x%i==0)return 0; } return 1;} 【2】改进对于一个数,假设有n=x*y;不难发现,x,y中必有一个数>=sqrt(n),另一个数<=sqrt(n);所以,我们其实只需要遍历2~sqrt(n),当其中不含n的因子时,那么n就是质数。bool is_prim2(int x){

2021-12-14 21:48:11 759

转载 MySQL索引背后的数据结构及算法思想

原文地址:http://blog.codinglabs.org/articles/theory-of-mysql-index.html虽然是2011年的文章,但写的超级好!!!强烈建议【认真阅读】!!!强烈建议【认真阅读】!!!强烈建议【认真阅读】!!!(重要的事说三遍)摘要本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,.

2021-12-08 10:52:23 161

原创 Java实现人脸识别(各项目结构都有案例说明)

功能简述感觉人脸识别功能有点意思,就尝试写了一个小demo,然后将其整合到自己的项目中;下面是基于Java实现的人脸识别demo。功能流程调用摄像头获取图像判断是否为新用户然后就会跳转:下面会具体分析SDK这个人脸识别的功能是调用的第三方SDK,自己不会写~~。注册之后,可以免费使用100个应用;且适用于多平台,我这里是windows64位;下载后的SDK目录如下:里面有说明文档、jar包以及依赖文件和一个demo。JavaWeb版这里是官网给的JavaWeb版案例,我

2021-12-06 20:27:01 6987 6

原创 单例模式中的双重锁详解

双重检查public class SingletonExample { private volatile static SingletonExample singletonExample; public SingletonExample getInstance(){ if (singletonExample==null){ synchronized (SingletonExample.class){ if (singl

2021-11-28 12:15:28 6836 5

原创 Java集合详解

Java基础-集合1.Java集合框架​ 在介绍这张图之前,先来了解下Java集合的设计思路。1.1集合接口与实现分离​ 以队列这种常见的数据结构来说明Java是如何分离接口(implementation)与实现的。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dtClSZd4-1637386897478)(C:\Users\xiaog\AppData\Roaming\Typora\typora-user-images\image-2021112013192

2021-11-20 13:42:57 513

转载 Cookie与Session详解与区别

原文链接:https://www.cnblogs.com/l199616j/p/11195667.html在原文章的基础上略作改动;跳转会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。本章将系统地讲述Cookie与Session机制,并比较说明什么时候不能用Cookie,什么时候不能用Session。1.1 Cooki

2021-11-13 19:11:25 155

原创 SpringBoot-自定义Starter启动器

1、新建springboot模块-(gao-springboot-starter-autoconfigure)结构如下:​ 新建HelloService自定义服务:package com.gao;/** * @description: * @author: XiaoGao * @time: 2021/10/10 14:14 */public class HelloService { HelloProperties helloProperties;

2021-11-13 16:01:08 665

转载 SpringBoot-自动配置原理详解

一、什么是自动装配SpringBoot 定义了一套接口规范,这套规范规定:SpringBoot 在启动时会扫描外部引用 jar 包中的META-INF/spring.factories文件,将文件中配置的类型信息加载到 Spring 容器(此处涉及到 JVM 类加载机制与 Spring 的容器知识),并执行类中定义的各种操作。对于外部 jar 来说,只需要按照 SpringBoot 定义的标准,就能将自己的功能装置进 SpringBoot。记住这个spring.factories文件,我们在下面自定义s

2021-11-13 16:00:35 307

原创 Redis基础知识入门

Redis基础知识入门一、Redis概述​ Remote Dictionary Server(Redis) 是一个由 Salvatore Sanfilippo 写的 key-value 存储系统,是跨平台的非关系型数据库。Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库,并提供多种语言的 API。Redis 通常被称为数据结构服务器,因为值(value)可以是字符串(String)、哈希(Hash)

2021-11-12 14:47:29 1016

原创 JavaScript入门

JavaScript入门一、简介1.1 什么是JSJavaScript是一种轻量级的编程语言,可直接插入HTML页面;JavaScript 插入 HTML 页面后,可由所有的现代浏览器执行。1.2 JS的功能直接写入 HTML 输出流对事件的反应改变 HTML 内容/图像/样式验证输入1.3 JS的用法HTML 中的脚本必须位于 之间的 JavaScript 代码。JS代码可放在或标签中,两者都可;也可以外部导入:<script src="myScript.js">&

2021-11-12 14:03:56 114

day08_LoginDemo.zip

本案例是Tomcat+Servlet+JDBC的一个小的案例,通过学习登录的逻辑来熟悉知识点。本案例是Tomcat+Servlet+JDBC的一个小的案例,通过学习登录的逻辑来熟悉知识点。

2020-08-09

PDF编辑器,免费转文本软件.exe

国外免费PDF转文本软件,永久不收费。可编辑,注释PDF文件。批量光学字符识别处理、压缩和PDF转换.

2020-07-09

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

TA关注的人

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