- 博客(175)
- 资源 (2)
- 问答 (1)
- 收藏
- 关注
原创 etcd入门(一)基础架构及写入流程
etcd,可以读成etc-d,也就是分布式的配置文件。同理可以知道etcd的作用就是一个分布式的配置文件系统,也就是配置中心。上面只是分析了etcd的简单架构以及写流程,并没有介绍一些模块的具体作用,如哪些模块保证etcd的数据一致性、MVCC的作用是什么;这些会在后面补充。
2024-07-21 10:18:53
202
原创 SQL优化之深分页
深分页,即SQL查询过程中,使用的页数过深,数据库执行的过程中,需要遍历前面很多数据并跳过后,才返回数据的过程。这种情况会导致SQL查询变慢;对于深分页问题,无论是使用Inner Join、还是记录上一个id,核心思路都是要降低回表次数。
2024-07-12 02:04:43
361
原创 网络连接之队头阻塞!!!
队头阻塞,在网络模型中简单理解就是,对于队列型的请求模型,如HTTP的请求-响应模型、TCP的ACK确认机制,都依赖得到一个具体的响应包,如果收不到这个响应包,那下一个请求就不能发,从而导致网络连接的阻塞。在工作的一年中,接触了很多网络相关的问题与实现:比如,通信协议:HTTP、TCP、QUIC、RPC、WebSocket,还有Socket4代理等等。也遇到了一些实际的网络问题,像海外,尤其是东南亚等网络基建不好的地区,为了解决网络延迟导致的用户体验差而引入QUIC;
2024-07-03 00:40:39
303
原创 协程执行顺序引发的问题
使用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
204
原创 Golang并发编程-context
golang.org/x/net/context,是golang中的一个标准库,主要作用就是创建一个上下文,对程序中创建的协程通过传递上下文信息来实现对协程的管理方法以下创建根context,两个方法没区别,底层实现都是返回空context对象,但因为Background()更好理解,所以比较常用。创建子context,下面方法的作用都是创建一个以parent context为根的子 context。
2023-04-09 21:46:10
488
1
原创 开发常用Git命令整理汇总
集中式版本控制系统:版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。中央服务器就好比是一个图书馆,你要改一本书,必须先从图书馆借出来,然后回到家自己改,改完了,再放回图书馆。分布式版本控制系统:分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。撤销暂存区的修改,或版本回退,HEAD是指代最新版本。
2023-02-26 21:20:13
437
原创 分布式锁详解
什么是锁?同步在单进程的系统中,当存在多个线程可以同时改变某个变量(可变共享变量)时,就需要对变量或代码块做同步,使其在修改这种变量时能够线性执行消除并发修改变量。同步的实现而同步的本质是通过锁来实现的。为了实现多个线程在一个时刻同一个代码块只能有一个线程可执行,那么需要在某个地方做个标记,这个标记必须每个线程都能看到,当标记不存在时可以设置该标记,其余后续线程发现已经有标记了则等待拥有标记的线程结束同步代码块取消标记后再去尝试设置标记。这个标记可以理解为锁。锁的实现方式不同地方实现锁的方式也不
2022-02-26 15:33:11
331
原创 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
183
转载 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
19542
1
转载 知识点串联: 输入URL到页面的全过程
地址栏输入URLURL,即统一资源定位符。它实际上就是网站的网址。浏览器就是靠URL来查找资源位置。可以把URL分成几个部分:协议、网络地址、资源路径。● 传送协议:URL包含协议部分,是浏览器和www万维网之间的沟通方式,它会保证浏览器正确地在网络上找到资源位置。最常见的网络传输协议是HTTP协议;其他的还有ftp,file,mailto,git等。还有自定义的协议,例如Itencent。不同协议有不同的通讯内容格式。● 网络地址:指示该连接网络上的某一台计算机,可以是域名或者IP地址,也可以包括
2021-12-20 11:21:14
343
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
1005
原创 网络协议-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
2166
转载 网络协议-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
2257
原创 网络基础(三)-IP相关协议详解
IP及配套协议详解因为网络层是整个互联网的核心,因此应当让网络层尽可能简单。网络层向上只提供简单灵活的、无连接的、尽最大努力交互的数据报服务。使用 IP 协议,可以把异构的物理网络连接起来,使得在网络层看起来好像是一个统一的网络。与 IP 协议配套使用的还有三个协议:地址解析协议 ARP(Address Resolution Protocol)网际控制报文协议 ICMP(Internet Control Message Protocol)网际组管理协议 IGMP(Internet G
2021-12-20 10:35:22
1981
转载 网络基础(二)-7层协议,4层,5层
1.全局网络层次1.1 OSI7层国际标准化组织ISO于1984年提出了OSI(Open System Interconnection Reference Model,开放系统互联参考模型)。OSI很快成为计算机网络通信的基础模型。ISO依层次结构来划分:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。OSI七层参考模型的各个层次的划分遵循下列原则:同一层中的各网络节点都有相同的层次结构,具有同样的功能。同一节点内相邻层之间通过接口(可以是逻辑接口)进行通信。七层结构
2021-12-20 10:22:50
1600
原创 质数判断-多种优化
【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
679
转载 MySQL索引背后的数据结构及算法思想
原文地址:http://blog.codinglabs.org/articles/theory-of-mysql-index.html虽然是2011年的文章,但写的超级好!!!强烈建议【认真阅读】!!!强烈建议【认真阅读】!!!强烈建议【认真阅读】!!!(重要的事说三遍)摘要本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,.
2021-12-08 10:52:23
122
原创 Java实现人脸识别(各项目结构都有案例说明)
功能简述感觉人脸识别功能有点意思,就尝试写了一个小demo,然后将其整合到自己的项目中;下面是基于Java实现的人脸识别demo。功能流程调用摄像头获取图像判断是否为新用户然后就会跳转:下面会具体分析SDK这个人脸识别的功能是调用的第三方SDK,自己不会写~~。注册之后,可以免费使用100个应用;且适用于多平台,我这里是windows64位;下载后的SDK目录如下:里面有说明文档、jar包以及依赖文件和一个demo。JavaWeb版这里是官网给的JavaWeb版案例,我
2021-12-06 20:27:01
6210
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
5792
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
464
转载 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
123
原创 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
619
转载 SpringBoot-自动配置原理详解
一、什么是自动装配SpringBoot 定义了一套接口规范,这套规范规定:SpringBoot 在启动时会扫描外部引用 jar 包中的META-INF/spring.factories文件,将文件中配置的类型信息加载到 Spring 容器(此处涉及到 JVM 类加载机制与 Spring 的容器知识),并执行类中定义的各种操作。对于外部 jar 来说,只需要按照 SpringBoot 定义的标准,就能将自己的功能装置进 SpringBoot。记住这个spring.factories文件,我们在下面自定义s
2021-11-13 16:00:35
267
原创 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
944
原创 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
85
转载 关于三方协议的说明
关于三方协议的说明原文链接https://mp.weixin.qq.com/s/u8uXdd15YEg5IRJ0WPFF5w秋招接近尾声,已经有许多同学陆续收到了offer。首先要恭喜这些同学,不管你是否喜欢这份工作,至少毕业之后的去向有了保障。 同时,学姐也提醒你:在处处是陷阱的社会里,三方就是你离开校园时遇到的第一个坑。
2021-11-04 11:13:47
440
原创 腾讯校招智力题-赛马问题-毒药与老鼠
秋招-智力题一、赛马问题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
903
原创 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
288
原创 项目提交到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
989
原创 Equals()与hashcode()方法
Equals()与hashcode()方法一、equals()方法1.1equals方法与“==”方法的区别==是判断两个变量或实例是不是指向同一个内存空间,equals是判断两个变量或实例所指向的内存空间的值是不是相同==是指对内存地址进行比较 , equals()是对字符串的内容进行比较==指引用是否相同, equals()指的是值是否相同用下面这张图来简单描述下上述关系; 1.2equals()方法介绍对于我们自定义的类:User.javapu
2021-10-09 10:38:09
147
原创 数据结构-堆
一、前言堆就是用数组实现的二叉树,所以它没有使用父指针或者子指针。堆根据“堆属性”来排序,“堆属性”决定了树中节点的位置。1.1 堆的种类最大堆、最小堆分别是父节点大于/小于子节点的堆。这个性质就是“堆属性”,且对于任何节点都成立。1.2 优先队列与堆的关系优先队列: 优先队列是一种数据结构,它的作用是找出、返回、删除优先队列中的优先级最小的元素。堆: 堆,也是一种数据结构;其中的二叉堆经常用于实现优先队列;本文就是介绍二叉堆实现的优先队列。1.3 堆(二叉堆)与二叉搜索树的区别’1.节点的
2021-09-27 20:39:04
95
原创 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
180
原创 Equals()与hashcode()方法
Equals()与hashcode()方法一、 equals()方法1.1equals方法与“==”方法的区别==是判断两个变量或实例是不是指向同一个内存空间,equals是判断两个变 量或实例所指向的内存空间的值是不是相同==是指对内存地址进行比较 , equals()是对字符串的内容进行比较==指引用是否相同, equals()指的是值是否相同用下面这张图来简单描述下上述关系:1.2equals()方法介绍对于我们自定义的类:User.javapublic class User
2021-09-16 13:09:17
261
1
原创 Java必知必会的语法糖原理
Java语法糖 几乎所有的编程语言都或多或少提供过一些语法糖来方便程序员的代码开发,这些语法糖虽然不会提供实质性的功能改进,但是它们或能提高效率,或能提升语法的严谨性,或能减少编码出错的机会。1.基本概念1.1语法糖 语法糖(Syntactic Sugar),也称糖衣语法,是由英国计算机学家 Peter.J.Landin 发明的一个术语,指在计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。简而言之,语法糖让程序更加简洁,有更高的可读性。1.2解语法糖解语
2021-08-31 16:20:56
260
1
原创 搜索引擎使用技巧汇总,一篇就够了
搜索引擎使用必知必会技巧汇总写在前面我们在从互联网获取信息的时候,使用最频繁的莫过于搜索引擎;查Bug,找资源过程中很浪费时间,而学习一些搜索技巧可以大大提高我们的效率!小Tip注:以下方法在Google搜索引擎上正常使用,百度未测试。1.搜索确定的关键字"关键字"将可以确定存在的关键字加上 " ",这样搜索引擎只会返回和关键词完全吻合的搜索结果。在不加双引号的情况下,有的时候, 两个词中间加一个空格, 它会分别搜索两个词, 可能返回的结果不是我们想要的结果。2.排除关键字这样,在
2021-08-30 17:51:26
5314
1
day08_LoginDemo.zip
2020-08-09
问下大佬关于serlvet的问题
2020-06-15
TA创建的收藏夹 TA关注的收藏夹
TA关注的人