自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 基于Redis实现任务队列

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

2023-04-09 21:46:48 852

原创 Golang并发编程-context

golang.org/x/net/context,是golang中的一个标准库,主要作用就是创建一个上下文,对程序中创建的协程通过传递上下文信息来实现对协程的管理方法以下创建根context,两个方法没区别,底层实现都是返回空context对象,但因为Background()更好理解,所以比较常用。创建子context,下面方法的作用都是创建一个以parent context为根的子 context。

2023-04-09 21:46:10 443 1

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

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

2023-03-22 23:29:38 616

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

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

2023-02-26 21:20:13 418

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

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

2023-02-02 20:47:29 1992

原创 分布式锁详解

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

2022-02-26 15:33:11 313

原创 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 175

转载 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 19321 1

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

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

2021-12-20 11:21:14 331 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 990

原创 网络协议-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 2096

转载 网络协议-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 2221

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

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

2021-12-20 10:35:22 1855

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

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

2021-12-20 10:22:50 1513

原创 质数判断-多种优化

【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 640

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

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

2021-12-08 10:52:23 114

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

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

2021-12-06 20:27:01 5754 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 5379 2

原创 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 457

转载 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 118

原创 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 609

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

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

2021-11-13 16:00:35 246

原创 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 933

原创 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 76

转载 关于三方协议的说明

关于三方协议的说明原文链接https://mp.weixin.qq.com/s/u8uXdd15YEg5IRJ0WPFF5w秋招接近尾声,已经有许多同学陆续收到了offer。首先要恭喜这些同学,不管你是否喜欢这份工作,至少毕业之后的去向有了保障。​ 同时,学姐也提醒你:在处处是陷阱的社会里,三方就是你离开校园时遇到的第一个坑。​

2021-11-04 11:13:47 411

原创 腾讯校招智力题-赛马问题-毒药与老鼠

秋招-智力题一、赛马问题1.1 问题描述64匹马,8个跑道,问最少比赛多少场,可以选出跑得最快的4匹马?Assumptions:每场比赛每个跑道只允许一匹马,且不存在并列情形1.2 解题思路答案:11场比赛一定能选出;10场在特殊情况可以。Step1:首先不可避免地要赛八场,每场8匹马;然后对每组第一再赛一场,按照每组的速度编号:A1 > A2 > A3 > ------- >A8B1 > B2 > B3 > ------- >B8~

2021-10-25 10:45:30 816

原创 SpringBoot整合Thymeleaf

SpringBoot整合Thymeleaf1.基本概念Thymeleaf是用来开发Web和独立环境项目的服务器端的Java模版引擎。Spring官方支持的服务的渲染模板中,并不包含jsp。而是Thymeleaf和Freemarker等,而Thymeleaf与SpringMVC的视图技术,及SpringBoot的自动化配置集成非常完美,几乎没有任何成本,你只用关注Thymeleaf的语法即可。1.1 Thymeleaf的特点动静结合:Thymeleaf 在有网络和无网络的环境下皆可运行,即它可以让美

2021-10-23 21:45:16 281

原创 项目提交到GitHub(全流程)

项目提交到GitHub(全流程)持续输出学习心得干货,欢迎关注收藏1.准备工作1.1创建Github账号账号肯定是必须要有滴~~ 官网跳转1.2安装Git工具下载链接 选择需要的版本进行下载即可,安装时直接默认“下一步”即可。不会的话可以参考这篇博客1.3本地创建SSH Key1.创建SSH Key。在用户主目录(C:\Users\Administrator)下,看看有没有.ssh文件,如果有,再看文件下有没有id_rsa和id_rsa.pub这两个文件

2021-10-13 20:23:41 970

原创 Equals()与hashcode()方法

Equals()与hashcode()方法一、equals()方法1.1equals方法与“==”方法的区别==是判断两个变量或实例是不是指向同一个内存空间,equals是判断两个变量或实例所指向的内存空间的值是不是相同==是指对内存地址进行比较 , equals()是对字符串的内容进行比较==指引用是否相同, equals()指的是值是否相同用下面这张图来简单描述下上述关系;​ 1.2equals()方法介绍对于我们自定义的类:User.javapu

2021-10-09 10:38:09 142

原创 数据结构-堆

一、前言堆就是用数组实现的二叉树,所以它没有使用父指针或者子指针。堆根据“堆属性”来排序,“堆属性”决定了树中节点的位置。1.1 堆的种类最大堆、最小堆分别是父节点大于/小于子节点的堆。这个性质就是“堆属性”,且对于任何节点都成立。1.2 优先队列与堆的关系优先队列: 优先队列是一种数据结构,它的作用是找出、返回、删除优先队列中的优先级最小的元素。堆: 堆,也是一种数据结构;其中的二叉堆经常用于实现优先队列;本文就是介绍二叉堆实现的优先队列。1.3 堆(二叉堆)与二叉搜索树的区别’1.节点的

2021-09-27 20:39:04 86

原创 Maven项目架构入门

Maven学习1.前言1.1约定大于配置目录目的${basedir}存放pom.xml和所有的子目录${basedir}/src/main/java项目的java源代码${basedir}/src/main/resources项目的资源,比如说property文件,springmvc.xml${basedir}/src/test/java项目的测试类,比如说Junit代码${basedir}/src/test/resources测试用的资源$

2021-09-19 20:59:54 171

原创 Equals()与hashcode()方法

Equals()与hashcode()方法一、 equals()方法1.1equals方法与“==”方法的区别==是判断两个变量或实例是不是指向同一个内存空间,equals是判断两个变 量或实例所指向的内存空间的值是不是相同==是指对内存地址进行比较 , equals()是对字符串的内容进行比较==指引用是否相同, equals()指的是值是否相同用下面这张图来简单描述下上述关系:1.2equals()方法介绍对于我们自定义的类:User.javapublic class User

2021-09-16 13:09:17 190 1

原创 Java必知必会的语法糖原理

Java语法糖​ 几乎所有的编程语言都或多或少提供过一些语法糖来方便程序员的代码开发,这些语法糖虽然不会提供实质性的功能改进,但是它们或能提高效率,或能提升语法的严谨性,或能减少编码出错的机会。1.基本概念1.1语法糖​ 语法糖(Syntactic Sugar),也称糖衣语法,是由英国计算机学家 Peter.J.Landin 发明的一个术语,指在计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。简而言之,语法糖让程序更加简洁,有更高的可读性。1.2解语法糖解语

2021-08-31 16:20:56 240 1

原创 搜索引擎使用技巧汇总,一篇就够了

搜索引擎使用必知必会技巧汇总写在前面我们在从互联网获取信息的时候,使用最频繁的莫过于搜索引擎;查Bug,找资源过程中很浪费时间,而学习一些搜索技巧可以大大提高我们的效率!小Tip注:以下方法在Google搜索引擎上正常使用,百度未测试。1.搜索确定的关键字"关键字"将可以确定存在的关键字加上 " ",这样搜索引擎只会返回和关键词完全吻合的搜索结果。在不加双引号的情况下,有的时候, 两个词中间加一个空格, 它会分别搜索两个词, 可能返回的结果不是我们想要的结果。2.排除关键字这样,在

2021-08-30 17:51:26 5106 1

原创 关于JVM类加载机制,看这一篇就够了(一)类加载机制

1.类加载机制1.1概述​ Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这个过程被称作虚拟机的类加载机制。​ 在Java语言里面,类型的加载、连接和初始化过程都是在程序运行期间完成的,这种策略让Java语言进行提前编译会面临额外的困难,也会让类加载时稍微增加一些性能开销,但是却为Java应用提供了极高的扩展性和灵活性。1.2类加载的时机​ 一个类型从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个

2021-08-30 17:06:02 178

原创 关于JVM类加载机制,看这一篇就够了(二)类加载器与Java模块化

3.类加载器​      Java虚拟机设计团队有意把类加载阶段中的“通过一个类的全限定名来获取描述该类的二进制字节流”这个动作放到Java虚拟机外部去实现,以便让应用程序自己决定如何去获取所需的类。实现这个动作的代码被称为“类加载器”(Class Loader)。3.1类加载器的性质类加载器虽然只用于实现类的加载动作,但它在Java程序中起到的作用却远超类加载阶段。对于任意一个类,都必须由加载它的类加载器和这个类本身一起共同确立其在Java虚拟机中的唯一性

2021-08-30 15:49:25 142 1

原创 Python爬虫之爬取无限制图片

1.步骤分析获取图片的url(正则表达式)通过URL下载对应图片2.代码展示1.获取URL将链接存储到url.txt文本中2.根据URL下载图片3.代码获取我的gitee地址:https://gitee.com/alpha_effect/PythonSpider/tree/master/D14.代码分析...

2021-08-29 15:38:05 426 1

原创 深入理解Java虚拟机-类文件结构

类文件结构1. 概述1.1语言无关性​ 各种不同平台的Java虚拟机,以及所有平台都统一支持的程序存储格式——字节码(Byte Code)是构成平台无关性的基石。但今天虚拟机还有另外一种中立特性——语言无关性正在越来越被开发者所重视。​ 实现语言无关性的基础仍然是虚拟机和字节码存储格式。Java虚拟机不与包括Java语言在内的任何程序语言绑定,它只与“Class文件”这种特定的二进制文件格式所关联,Class文件中包含了Java虚拟机指令集、符号表以及若干其他辅助信息。基于安全方面的考虑,《Ja

2021-08-24 14:27:56 121 1

原创 快速排序的实现&详解&笔试高频考察点&难点解析

快速排序的实现&详解&笔试高频考察点&难点解析1.快速排序1.1快排介绍​ 其他的排序方法,像归并排序、堆排序等平均时间复杂度虽然与快排一样,都是O(n*logn),但是上述几种排序算法都是依赖于它们之间的比较,统称为比较排序。1.2快速排序的基本步骤快排的原理很直白,就是分治法。实现步骤也很容易理解。以数组任意元素为基数(一般为队首)temp,将数组中比temp大的元素移动到数组右侧,比temp小的元素移动到数组左侧。对基数相应的左右数组排序​ 左数组:a

2021-08-19 17:41:35 228

原创 Spring MVC框架介绍&基本使用总结

1. 基本概念1.1 什么是SpringMVC所谓MVC,就是模型(Model),视图(View),控制器(Controller)。是一种软件设计规范。通过业务逻辑、数据、显示的方式来组织代码。模型(Model)视图(View)控制器(Controller)1.2 MVC的执行流程[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-89cKevik-1628728815225)(C:\Users\CoolGuy\AppData\Roaming\Typora\

2021-08-12 08:42:26 1464 1

day08_LoginDemo.zip

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

2020-08-09

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

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

2020-07-09

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

TA关注的人

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