自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

原创 ArrayList和Vector

今天阅读ArrayList和Vector的源码,了解其底层结构和扩容机制首先,需要知道的是ArrayList和Vector底层都是可变数组实现ArrayList非线程安全,Vector是线程安全的。

2022-08-20 15:00:16 206 1

原创 我的HashMap源码阅读记录

为什么是16呢 简单的解释就是使用2的次方的容量可以在HASH取模运算后使得散列更加均匀 学过数据结构的朋友应该都有印象 书上建议初始化大小为2的次幂 在这里JDK开发者选择了16作为默认的值。值得注意的是,这里Node的equals方法,是比较Key和Value的equals方法,在开发中,如果有需求要进行个性化的比较,就需要重写我们自己的Object类的equals方法了。个人理解:这些参数的存在,就是为了数据有一个较好的散列效果,以增强数据查询插入的效率,以达到高性能的效果。

2022-08-19 19:55:33 318

原创 红黑树 Reb Black Tree

在AVL中提到了,当插入和删除频率较高时,我们选择红黑树来降低因不断的维护平衡带来的时间损耗。在诸多地方(比如JDK1.8的HashMap……)得到了广泛的应用。那么,什么是红黑树,为什么就这么牛逼?我们一起来解开其神秘的面纱~红黑树是一种特定类型的二叉树,它是在计算机科学中用来组织数据比如数字的块的一种结构。[4]红黑树是一种平衡二叉查找树的变体,它的左右子树高差有可能大于 1,所以红黑树不是严格意义上的平衡二叉树(AVL),但 对之进行平衡的代价较低, 其平均统计性能要强于 AVL。[2]

2022-08-19 19:42:00 276

原创 平衡树AVL

为解决二叉搜索树退化成一张链表的情况,改进出了AVL(取名与作者和E.M.Landis)必须是一颗BST每个节点的左右子树高度至多相差1AVL树的查找、插入、删除等操作在平均和最坏的情况下都是O(logN),得益于其一直在动态的维护平衡性。

2022-08-19 19:26:57 133

原创 二叉搜索树

树是数据结构中必学的一种数据结构。在实际应用中,常见的树结构有二叉搜索树、B树、B+树、AVL树、红黑树、字典树等。B/B+树:主要用于文件系统以及数据库中做索引AVL树:平衡二叉树,windows对进程地址空间的管理用到了AVL红黑树:平衡二叉树的一种改进,广泛的应用在C++STL中,如map、set,以及JDK中的HashMap、TreeMap等Trie(字典树):又经常叫做前缀树,主要用于字符串检索、文本预测、词频统计等。

2022-08-19 19:17:24 178

原创 Flask快速入门

Flask是一个轻量级的基于Python的Web框架。相较于Django,更加轻量便捷,非常适合快速开发查看介绍和版本Hello World项目结构通过Pycharm新建一个Flask项目,可以看到初始化的目录结构为:static用于放置静态资源templates存放模板文件app.py是程序启动文件运行结果:浏览器访问http://127.0.0.1:5000/就会显示Hello World终端也会记录下访问的日志修改Flask配置其中,为默认值。可以将这个参数自定义为自己的项目

2022-07-08 23:03:19 1578

原创 计算机网络入门概述

带宽 bandwidth时延 delay指数据(一个报文或者分组,甚至比特)从网络(或链路)的一端点传送到另一端你所需的时间。有时也称为延迟或者迟延网络中时延由以下组成总时延 = 发送时延 + 传播时延 + 处理时延 + 排队时延对于高速网络链路,我们提高的仅仅是数据的,而不是比特在链路上的提高链路带宽能够减小数据的发送时延往返时延RTT(Round-Trip Time)表示从发送端发送数据开始,到发送端收到来自接收端的确认(接收端收到数据后立即发送确认),总共经历的时延吞吐量 Throughput利用率网

2022-06-25 16:39:30 362

原创 创建者模式之单例模式

创建者模式的主要关注点是"怎样创建对象",主要特点是"将对象的创建与使用分离"这样降低了系统耦合度,使用者不需要关注对象的创建细节。创建者模式分为:单例模式工厂方法模式抽象工程模式原型模式建造者模式今天先学习一下单例模式什么是单例设计模式(Singleton Pattern)单例设计模式是Java中最简单的设计模式之一。属于创建型模式,提供了创建对象的最佳方式。该模式涉及到一个单一的类,该类负责创建自己的对象,且确保只有一个实例被创建。这个类同时也提供了一种访问其唯一实例的方式.

2022-04-14 17:22:37 259

原创 OOP七大法则

开闭原则(The Open/Closed Principle,OCP)该原则规定“软件中的对象(类、模板、函数等等)应该对于扩展是开放的,但是对于修改是封闭的”,这意味着一实体是允许在不改变它的源代码的前提下变更它的行为。**对扩展开放,对修改关闭。**在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。是程序扩展性好,易于维护和升级。要达到这样的效果,我们需要使用接口和出抽象类。例如在这里,使用抽象的Animal来代表所有的动物,动物都有吃的行为,但不同动物不一样。当发现新

2022-04-12 12:39:50 375

原创 UML的六大关系

关联关系单向关联双向关联自关联聚合关系聚合关系是关联关系的一种,是强关联关系,是整体和部分之间的关系聚合关系通过成员对象来实现的,其中成员对象是整体对象的一部分,但是成员对象可以脱离整体对象而独立存在。例如:学校与老师的关系。即使学校停办了,老师这个角色依然存在。UML类图中,聚合关系可以用带空心菱形的实线来表示,菱形指向整体。组合关系组合表示类之间的整体和部分的关系,但它是一种更强烈的聚合关系。例如头和嘴,部分不可脱离整体存在使用带有实心的菱形实线表示:依赖关系依赖关系

2022-04-11 20:17:13 694

原创 跟我一起玩转微信支付

写在前面现在到处有微信支付的身影,作为一个后端开发者,跟我一起来看看微信支付到底怎么应用于自己的项目中吧如果你还不了微信第三方服务生态的,请先阅读一下微信与阿里云第三方服务的一些概念流程梳理,相信读过后你会对微信第三方服务生态有了一定的了解,下面可以按照要求准备开通微信支付的必备条件,并开通APIv3证书,获取一些必备的参数。如果你对密码学的常识不够了解,最好先阅读一下开发过程中那些不得不知道的密码学基础。基于这些常识,理解这篇文章将会事半功倍。熟悉官方文档如果你在之前已经有尝试过浏览微信支付的官

2022-03-11 17:28:17 1494 2

原创 Java泛型T、E、K、V、N、?和Object区别和含义

通常我们在看一些源码时,发现全是T、?,晕乎乎的😭。于是,把泛型掌握好十分重要!什么是泛型Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。泛型有什么好处?写个例子一目了然:我们要封装一个消息响应类:public class Result implements Serializable { // 响应码 Int

2022-03-08 20:21:25 1015

原创 开发过程中那些不得不知道的密码学基础

发展历史古典密码学 如凯撒密码、滚筒密码近代密码学 如德国Enigma机,被图灵破解现代密码学编码算法不是加密和解密,为了在网络间更方便的传输数据/本地存储字节数组而产生Base64Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。可查看RFC2045~RFC2049,上面有MIME的详细规范。Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息。采用Base64编码具有不可

2022-03-06 22:49:48 3670

原创 Java超类Object源码学习

Object超类Java是一门天然的面向对象的语言。而所有我们手动创造出来的类,都继承于同一个类,即Object类。可以看一下Object类的结构native方法首先,超类拥有一个native方法private static native void registerNatives();static { registerNatives();}Java中,用native关键字修饰的函数表明该方法的实现并不是在Java中去完成。而是被C/C++完成,并被编译成了.ddl文件,由Jav

2022-03-05 23:46:30 420

原创 Java反射机制

反射反射就是把Java类中的各个成分映射成一个个的Java对象。即在运行状态中,对于任意一个类,都能够知道这个类的所以属性和方法;对于任意一个对象,都能调用它的任意一个方法和属性。这种动态获取信息及动态调用对象方法的功能叫Java的反射机制每一个Java程序执行必须通过编译、加载、链接和初始化四个阶段编译:将.java.文件编译成字节码.class文件加载:查找并加载类的二进制数据链接:验证:确保被加载类的正确性为类的静态变量分配内存,并将其初始化为默认值将类中的符号转换为直接引用

2022-03-05 17:09:17 346

原创 计算机字符编码简单梳理

ASCIIASCII ((American Standard Code for Information Interchange): 美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其西欧语言。码表如下:观察表可得出:0-31和127是控制字符或通信专用字符,例如6号字符ACK用于计算就网络的通信48-57号字符标识阿拉伯数字0-9,48-57即8为二进制数0011 0000 - 0011 1001,即后四位可看作0-9的8421码65-90号字符为大写字母A-Z

2022-02-25 12:13:42 1386

原创 微信与阿里云第三方服务的一些概念流程梳理

微信与阿里云第三方服务的一些概念流程梳理微信平台首先,微信有三大平台:微信公众平台(提供公众号、小程序等服务,主要面向编辑人员)、微信开放平台(网页、移动、小程序等第三方服务的管理平台以及微信开发文档,主要面向开发者)、微信商户平台(入驻成为微信商家,接入微信支付服务)。此外,还有一个微信服务平台,供服务商使用。官方文档有如下描述:微信开放平台-第三方平台(简称第三方平台),由微信团队面向所有通过开发者资质认证的第三方开发者提供提供的官方平台。也就是说,第一步要有一个开发者资质的认证,认证申请最好

2022-02-23 23:00:35 956

原创 IDEA集成docker-maven-plugin配置CA安全证书

通过在IDEA中配置docker-maven-plugin插件,有效避免一些相同且繁琐的docker操作,交给IDEA一键打包,部署配置CA证书使用此插件需要服务端开放2375端口,供IDEA连接。这也意味着不安全。安全小白的我一开始没有重视,刚配置完的晚上,就收到了服务器厂商的短信警告,果不其然,被黑客拉去挖矿了…因此,首先花一分钟配置一下CA证书依次执行一下命令:# 创建CA文件夹mkdir -p /usr/local/ca# 进入文件夹cd /usr/local/ca# 指定密码

2022-02-20 20:16:36 1587

原创 Swagger配置Token访问

本文针对Swagger3 配置后以便我们调用API时包含JWT(JSON WEB TOKEN)还没添加依赖的请快添加一下<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency><dependency> <gro

2022-02-15 22:26:15 1664

原创 Swagger美化增强方案

有两种风格自行选择第一种:引入pom依赖:<dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>swagger-bootstrap-ui</artifactId> <version>1.9.6</version></dependency>直接运行,效果:第二种:引入pom依赖

2022-02-15 22:22:55 1680

原创 修改Swagger接口文档网络请求返回状态码

首先,我们查看Docket的源码,可以看到有一个控制返回码的字段属性以及对应的方法可见,我们要创建一个新的Docket实例,并在其中修改返回码配置参考globalResponses方法,我们需要准备好两个参数,HttpMethod和Response的List查看HttpMethod源码,易得即是一个常用请求方法的枚举类:查看Response的源码,我们仅需要准备好code、description即可因此,我在model包中定义一个ResultCode的枚举类,并作简单的封装packag

2022-02-02 16:37:02 1837

原创 Swagger常用注解实验

采用swagger-ui搭建接口文档时一些常用的注解使用 有图有真相

2022-01-28 22:55:09 456

原创 Ubuntu 20.04 安装和配置 Redis

Ubuntu 20.04 安装和配置 Redis1.安装并配置Redis更新apt包缓存sudo apt update如果你之间装失败了或担心有残余,可先做清理sudo apt-get purge --auto-remove redis-server输入命令安装Redissudo apt install redis-server这将下载并安装 Redis 及其依赖项。在此之后,Redis 配置文件需要进行一项重要的配置更改,该文件是在安装过程中自动生成的。打开并编辑配置文件sudo

2021-12-26 13:40:38 1405 1

原创 Fiddler入门学习

Fiddler入门学习简介位于客户端和服务器之间的一个代理使用场景:接口调试和接口测试,线上调试,mock调试,弱网调试安装及配置安装证书配置解密https以及忽略不安全证书允许远程IP访问这样就可以开始抓包了配置手机抓包以华为手机为例,确保手机和电脑在同一局域网内首先查询电脑的局域网IPV4地址修改属性用手机浏览器打开上面配置好的代理地址,例如我的:192.168.137.1:8888给手机安装证书直接在下载中点击安装完成以上步骤,在

2021-12-24 10:54:38 506

原创 文件的哈夫曼编码与解码

准备一个字符文件,要求:统计该文件中各种字符的频率对各字符进行 Huffman编码,显示每个字符的编码以及将该文件翻译成 Huffman编码文件再将 Huffman编码文件翻译成源文件显示每个字符以一个字节进行二进制编码后的编码文件

2021-12-19 23:21:08 3515 2

原创 Ubuntu Linux 配置 MySQL 8.0

Ubuntu Linux 配置 MySQL 8.0今晚给云服务器配MySQL出了不少奇怪的问题 感谢守望时空33大佬的文章 让我解决所有问题 若大家是Debian系统,可直接看大佬的博客 1.下载并上传现在服务器执行: sudo apt purge mariadb*在下载页面选择适合自己的版本在这里我选择:将下载好的tar文件解压,将所有deb文件上传到指定路径,并进入该路径,安装所有deb文件例如:mkdir /root/MySQL8.0cd /root/MySQL8.0-- 上传

2021-12-06 21:50:00 934

原创 MySQL表外键删除报错

错误代码:1091 Can't DROP 'category_id'; check that column/key existsERROR 1553 (HY000): Cannot drop index 'category_id': needed in a foreign key constraintERROR 1828 (HY000): Cannot drop column 'category_id': needed in a foreign key constraint 'user_ibfk_1'

2021-11-05 18:27:57 1353

原创 一个简单的示例,让你学会 MySQL一对多和多对多的建表与查询

一个简单的示例,让你学会 MySQL一对多和多对多的建表与查询一对多我们每个人和自己的书就是一对多的关系,当然在这里我们认为书是私有的,属于个人财产。于是我们建立person表和book表DROP TABLE IF EXISTS `person`;CREATE TABLE `person` ( `id` INT NOT NULL AUTO_INCREMENT, `person_name` VARCHAR(16) DEFAUL

2021-11-05 16:15:45 1013

原创 axios跨域问题

本文提供后端解决方法一定要看自己Springboot的版本号版本不同 配置会有差异!!!现提供2.4.0以上解决方法package com.maishulogin.config;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.web.cors.CorsConfigur

2021-10-14 15:41:13 67

原创 链表简单入门

**链表(从一无所知到知道一点点)**C语言中的结构体(struct)

2021-01-07 13:53:57 1383 9

空空如也

空空如也

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

TA关注的人

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