- 博客(83)
- 资源 (3)
- 收藏
- 关注

原创 浅谈MySQL为何推荐使用自增主键
前言在《高性能MySQL(第3版)》中,提及了这么一段话:如果正在使用InnoDB表并且没有什么数据需要聚集,那么可以定义一个代理键(surrogate key)作为主键,这种主键的数据应该和应用无关,最简单的方法是使用 AUTO_INCREMENT 自增列。这样可以保证数据行是按顺序写入,对于根据主键做关联操作的性能也会更好。为何书本的作者会在此推荐MySQL的在选用默认存储引擎InnoDB时使用自增主键?这可能得从InnoDB存储引擎底层的数据存储结构 B+树 开始说起。1.B+树B+树
2022-02-21 14:30:29
4219
1

原创 Jieyue捷阅网购物商城项目介绍说明
jieyue捷阅网是基于springboot开发的轻量级单体架构购物商城网站,并分为用户、商户、后台三大模块。用户模块能够进行商品搜索浏览、在线下单、微信支付等功能;商户模块则可以对收益情况进行查看以及订单成交情况、可对商品进行上下架和增加等操作;后台模块可进行群发消息通知、RBAC权限管理、商户的停用启用以及商城的广告海报设置等功能。...
2021-11-10 23:05:48
5137
9

原创 手撸Spring系列1:IOC/DI 思想(理论篇)
今天的这一篇博客将会讲述 IOC/DI思想,作为手撸Spring系列的第一篇理论博客,笔者将会从Spring的核心思想IOC开始讲解。为了读者能够更好的理解文章中的内容,在上车前,笔者建议读者们能够拥有以下车票,以防走丢:有Spring使用经验(刚需)、有SpringBoot使用经验(建议),使用Spring写过个人项目(建议),使用过MyBatis(建议)。检查好自己的车票后就自行上车吧!!
2021-09-05 13:40:40
1649
2

原创 使用Java编写《拳皇97》,致敬经典,还原八神庵大战草稚京
你儿时接触的第一款游戏是什么?会不会也是拳皇系列?本篇将告诉你一个拳皇游戏的制作过程!!
2021-05-24 13:11:14
9095
19
原创 力扣 [剑指 offer] 个人题解(共75题)
1.栈与队列(简单)1.1.题目地址:剑指 Offer 09. 用两个栈实现队列class CQueue { // 栈1用于处理插入操作 Deque<Integer> stack1; // 栈2用于处理删除操作 Deque<Integer> stack2; public CQueue() { stack1 = new LinkedList<>(); stack2 = new LinkedList&
2022-05-01 13:02:06
1399
2
原创 备战蓝桥杯:常用的算法模板和技巧摘录
前言因为笔者最近在准备蓝桥杯算法竞赛,这段时间学习了众多的算法知识,其中不乏有快速幂,bfs,dfs等常用的算法技巧和模板。而很多的算法题目其实都是有规律可循的,有一定的模板可以套用,因此笔者在这里使用笔记的形式对这些模板和技巧进行记录,以便后面的复习使用~!!(若读者对笔者列出的模板代码有更好的优化建议,也欢迎在评论区中提出)1.数学1.1.最小公倍数// 求最小公倍数public int gcd(int a, int b) { return b == 0 ? a : gcd(b, a %
2022-04-01 12:54:38
4247
11
原创 Redis缓存穿透、击穿、雪崩
课程地址: 【尚硅谷】Redis 6 入门到精通 超详细 教程1.缓存穿透定义: key对应的数据在数据源中并不存在,每次针对key的请求从缓存中获取不到,请求都会压到数据源,从而可能压垮数据源。比如: 数据库中只存在id在1~9的用户信息且都已缓存,如果此时向服务端发送一个查找id=10的请求,因为缓存中不存在该id对应的数据,所以需要到数据库中进行查找操作才能够确定id=10的数据是否存在。因此,在数据库压力较大的情况下,若黑客利用此漏洞进行多次恶意的攻击就有可能会压垮整个数据库。解决方案.
2021-12-05 13:09:02
1267
原创 Java判断用户请求是移动端还是PC端
/** * <p>判断是否是移动端</p> */public boolean isMobile(HttpServletRequest request){ UserAgent ua = UserAgent.parseUserAgentString(request.getHeader("User-Agent")); OperatingSystem os = ua.getOperatingSystem(); return DeviceType.MOBILE.e
2021-11-28 14:24:54
1629
原创 使用Java动态打印爱心(专属程序猿的浪漫~)
最近在抖音看到许多使用C语言动态打印爱心的短视频,想起了很久之前收藏的一段Java打印爱心的代码,在其基础加上100毫秒的睡眠时间达到动态打印的效果,在此分享给大家~~!!public class Main { public static void main(String[] args) throws Exception { for (float i = 1.5f; i > -1.5f; i -= 0.15f) { .
2021-11-23 20:55:17
30711
10
转载 SpringBoot整合Gitee图床
1.查看Gitee官方文档https://gitee.com/api/v5/swagger#/postV5ReposOwnerRepoContentsPath如要使用gitee图床,需要申请限权,点击右上角按钮同意授权即可得到access_key。2.引入依赖只需要引入与web、发送http请求相关的依赖即可<dependencies> <dependency> <groupId>org.springframework.boot<
2021-11-18 16:17:32
1417
5
原创 Dubbo调用远程服务
1.创建公共接口模块api公共接口主要用于存放接口对象,这里我们只创建一个服务层的接口IndexService用于远程调用服务的测试package com.example.dubboapi.service;public interface IndexService { String echo();}2.创建服务提供者provider2.1.导入依赖主要导入与dubbo相关的包,因为笔者使用的服务注册中心是zookeeper,因此还需要导入与zookeeper相关依赖。<.
2021-11-16 13:15:26
3433
原创 SpringCloud使用Feign远程调用服务
1.创建服务提供者模块1.1.引入依赖服务提供者模块不需要导入与feign相关的依赖,只需要按照平常的代码逻辑编写并运行即可,后续可通过服务消费者模块利用feign组件远程调用。<dependencies> <!-- nacos-client --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>sprin
2021-11-15 12:42:43
678
原创 安装Dubbo-Admin
Github下载地址:https://github.com/apache/dubbo-admin/Gittee下载地址:https://gitee.com/chc0618/dubboadmin1.将项目下载下来后解压,进入到dubbo-admin-server模块,找到该项目的配置文件application.properties2.按照自己的需求更改配置文件中的内容(笔者的注册中心选择了zookeeper,端口号8888,登录的账号和密码都为root)3.开启命令行,并cd到dubbo-ad.
2021-11-12 12:56:20
652
原创 Jieyue捷阅网购物商城项目(微服务架构)
捷阅网微服务架构商城网站,是将单体架构的捷阅网商城网站以业务逻辑进行拆分而成的微服务架构项目。涵盖技术:注册服务发现中心、配置中心nacos、分布式服务seata、远程调用服务feign、熔断机制hystrix、链路追踪zipkin、服务网关gateway、后台检测springbootadmin、日志收集elk等技术
2021-11-11 23:46:33
3480
原创 Windows下安装Zookeeper
1.下载zookeeper官网地址:https://zookeeper.apache.org/选择自己需要的版本进行下载(笔者这里选择3.5.9)2.修改zookeeper配置文件将下载下来的安装包解压后,进入其目录,并新添加两个目录(data、log)接下来进入到**conf**目录中(为zoo_sample.cfg创建一个副本,并将副本命名为zoo.cfg)进入到zoo.cfg文件中(将dataDir的值改为上面新添加的data目录的绝对路径)3.启动zookeeper
2021-11-10 16:07:23
318
原创 深入理解JVM7:类加载篇(图解方法执行流程)
此篇博客主要以笔记的形式,记录笔者在B站《深入理解JVM》课程中学到的知识点。课程地址:《黑马程序员JVM完整教程,全网超高评价,全程干货不拖沓》HelloWorld编写一个HelloWorld程序(如下)并将其编译为字节码文件,并使用javap -v HelloWorld.class命令进行反编译得到如下信息(只截取了一部分)Classfile /D:/JavaProject/jvm-test/out/production/jvm-test/com/bosen/www/HelloWorld.
2021-11-07 12:27:52
480
原创 深入理解JVM6:GC篇(CMS、G1回收器)
此篇博客主要以笔记的形式,记录笔者在B站《深入理解JVM》课程中学到的知识点。课程地址:《黑马程序员JVM完整教程,全网超高评价,全程干货不拖沓》1.串行回收器// SerialOld 工作在老年代,使用的是标记-整理算法// Serial 工作在新生代,使用标记-复制算法// 开启串行垃圾回收器参数-XX:UseSerialGC = Serial + SerialOld执行流程图如下(来自课程截图)...
2021-11-03 14:43:07
1103
原创 深入理解JVM5:GC篇(回收算法)
此篇博客主要以笔记的形式,记录笔者在B站《深入理解JVM》课程中学到的知识点。课程地址:《黑马程序员JVM完整教程,全网超高评价,全程干货不拖沓》上图为JVM内存结构概况图,本篇博客我们将来探究JVM中GC垃圾回收机制——判断对象可回收(图片来自课程截图)1.引用计数法定义: 记录每个对象被引用的次数,当被引用次数为零时,则可以认为该对象是无用的对象,可以被gc进行回收处理。(如:A对象被B、C两个对象同时引用,则A对象对应的被引用次数为2;若B、C两个对象不再引用A对象,导致A对象被引用次数变.
2021-10-31 13:33:02
278
原创 深入理解JVM4:内存结构篇(方法区)
此篇博客主要以笔记的形式,记录笔者在B站《深入理解JVM》课程中学到的知识点。课程地址:《黑马程序员JVM完整教程,全网超高评价,全程干货不拖沓》上图为JVM内存结构概况图,本篇博客我们将来探究JVM中的方法区(图片来自课程截图)1.方法区的定义这里笔者引用oracle官网对jdk1.8对方法区的定义(下面是通过百度翻译来的译文,需要查看原文的读者可以进入此链接:The Structure of the Java Virtual Machine)。Java虚拟机有一个在所有Java虚拟机线程.
2021-10-29 12:44:18
443
原创 深入理解JVM3:内存结构篇(堆、本地方法栈)
此篇博客主要以笔记的形式,记录笔者在B站《深入理解JVM》课程中学到的知识点。课程地址:《黑马程序员JVM完整教程,全网超高评价,全程干货不拖沓》上图为JVM内存结构概况图,本篇博客我们将来探究JVM中的虚拟机栈(图片来自课程截图)1.本地方法栈JNI即Java Native Interface(本地方法接口),它能在Java层实现对本地方法的调用,一般本地的实现语言主要是C/C++,其实从虚拟机层面来看JNI挺好理解,JVM主要使用C/C++ 和少量汇编编写,在执行Java字节码时如果遇到有某.
2021-10-27 13:29:54
397
原创 深入理解JVM2:内存结构篇(虚拟机栈)
此篇博客主要以笔记的形式,记录笔者在B站《深入理解JVM》课程中学到的知识点。课程地址:《黑马程序员JVM完整教程,全网超高评价,全程干货不拖沓》上图为JVM内存结构概况图,本篇博客我们将来探究JVM中的虚拟机栈(图片来自课程截图)什么是虚拟机栈?栈是程序运行时的单位,而堆是存储的单位。 即: 栈解决程序的运行问题,即程序如何执行,或者说如何处理数据。堆解决的是数据存储的问题,即数据怎么放、放在哪儿。...
2021-10-25 19:59:02
360
原创 深入理解JVM1:内存结构篇(程序计数器)
此篇博客主要以笔记的形式,记录笔者在B站《深入理解JVM》课程中学到的知识点。课程地址:《黑马程序员JVM完整教程,全网超高评价,全程干货不拖沓》上图为JVM内存结构概况图(图片来自课程截图)...
2021-10-23 14:54:35
516
原创 MySQL的四种事务隔离级别
脏读时间线事务A事务B1select age from user wehre id = 1;(查询结果:18)update user set age = 20 where id = 20234567
2021-10-20 11:27:56
5147
5
原创 SpringBoot整合Sharding-JDBC分库分表中间件
1.引入依赖主要引入Sharding-JDBC依赖sharding-jdbc-spring-boot-starter,其他的依赖都是为了后面的测试环节所准备的pom.xml<!-- sharding-jdbc --><dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>sharding-jdbc-spring-boot-starter</a.
2021-10-17 11:42:05
786
原创 MySQL水平分表原理讲解
什么是水平分表?当一张表到达一定的数据量后(如500万条数据),索引的成本也随之增加,使用主键索引查找数据时也显得十分吃力,数据检索效率低。水平分表是将一个数据量大的表按照一定的规则拆分成多个结构相同的表,将数据分散到拆分出来的表中。拆分后,当我们查找某条数据时,只需要按照拆分表时的规则推断出需要查询的数据具体存在哪一张表中,到对应的表查找数据即可。下图是按照时间作为规则水平拆分表的示例:常见的水平分表方案1.按时间拆分像上图中的拆分示例,采用的是按照年份水平拆分表的方案,除此之我们还
2021-10-14 10:41:21
4336
2
原创 MySQL垂直分表原理讲解
垂直分表指的是:**表的记录并不多,但是字段却很长**,表占用空间很大,**检索表的时候需要执行大量的IO,严重降低了性能**。这时需要**把大的字段拆分**到另一个表,并且该表与原表是一对一的关系。
2021-10-11 12:41:38
3951
1
原创 手撸Spring系列博客目录
说在前头: 笔者本人为大三在读学生,书写文章的目的是为了对自己掌握的知识和技术进行一定的记录,同时乐于与大家一起分享,因本人资历尚浅,发布的文章难免存在一些错漏之处,还请阅读此文章的大牛们见谅与斧正。若在阅读时有任何的问题,也可通过评论提出,本人将根据自身能力对问题进行一定的解答。手撸Spring系列是笔者本人首次尝试的、较为规范的系列博客,将会围绕Spring框架分为 IOC/DI 思想、 Spring MVC、 AOP 思想、 Spring JDBC 四个模块,并且每个模块都会分为 理论篇、 源码篇.
2021-10-09 10:07:34
1383
原创 手撸Spring系列13:MyBatis(实战篇)
说在前头: 笔者本人为大三在读学生,书写文章的目的是为了对自己掌握的知识和技术进行一定的记录,同时乐于与大家一起分享,因本人资历尚浅,发布的文章难免存在一些错漏之处,还请阅读此文章的大牛们见谅与斧正。若在阅读时有任何的问题,也可通过评论提出,本人将根据自身能力对问题进行一定的解答。手撸Spring系列是笔者本人首次尝试的、较为规范的系列博客,将会围绕Spring框架分为 IOC/DI 思想、 Spring MVC、 AOP 思想、 Spring JDBC 四个模块,并且每个模块都会分为 理论篇、 源码篇.
2021-10-08 12:44:41
1196
原创 MySQL命令汇总
数据库名=demo;表名=user;字符集=utf8;1.操作数据库1.1.直接创建数据库create database demo;1.2.判断是否存在并创建create database if not exists 数据库名;1.3.指定字符集创建create database demo character set utf8;1.4.查看所有数据库show databases;1.5.查看某个数据库定义信息show create database demo;1.6.修.
2021-10-07 20:12:14
920
原创 手撸Spring系列12:MyBatis(源码篇)
说在前头: 笔者本人为大三在读学生,书写文章的目的是为了对自己掌握的知识和技术进行一定的记录,同时乐于与大家一起分享,因本人资历尚浅,发布的文章难免存在一些错漏之处,还请阅读此文章的大牛们见谅与斧正。若在阅读时有任何的问题,也可通过评论提出,本人将根据自身能力对问题进行一定的解答。手撸Spring系列是笔者本人首次尝试的、较为规范的系列博客,将会围绕Spring框架分为 IOC/DI 思想、 Spring MVC、 AOP 思想、 Spring JDBC 四个模块,并且每个模块都会分为 理论篇、 源码篇.
2021-09-30 10:52:44
1415
原创 手撸Spring系列11:MyBatis(理论篇)
说在前头: 笔者本人为大三在读学生,书写文章的目的是为了对自己掌握的知识和技术进行一定的记录,同时乐于与大家一起分享,因本人资历尚浅,发布的文章难免存在一些错漏之处,还请阅读此文章的大牛们见谅与斧正。若在阅读时有任何的问题,也可通过评论提出,本人将根据自身能力对问题进行一定的解答。手撸Spring系列是笔者本人首次尝试的、较为规范的系列博客,将会围绕Spring框架分为 IOC/DI 思想、 Spring MVC、 AOP 思想、 Spring JDBC 四个模块,并且每个模块都会分为 理论篇、 源码篇.
2021-09-28 13:15:21
1416
原创 手撸Spring系列10:Spring AOP(实战篇)
说在前头: 笔者本人为大三在读学生,书写文章的目的是为了对自己掌握的知识和技术进行一定的记录,同时乐于与大家一起分享,因本人资历尚浅,发布的文章难免存在一些错漏之处,还请阅读此文章的大牛们见谅与斧正。若在阅读时有任何的问题,也可通过评论提出,本人将根据自身能力对问题进行一定的解答。手撸Spring系列是笔者本人首次尝试的、较为规范的系列博客,将会围绕Spring框架分为 IOC/DI 思想、 Spring MVC、 AOP 思想、 Spring JDBC 四个模块,并且每个模块都会分为 理论篇、 源码篇.
2021-09-26 15:40:02
1071
原创 手撸Spring系列9:Spring AOP(源码篇)
说在前头: 笔者本人为大三在读学生,书写文章的目的是为了对自己掌握的知识和技术进行一定的记录,同时乐于与大家一起分享,因本人资历尚浅,发布的文章难免存在一些错漏之处,还请阅读此文章的大牛们见谅与斧正。若在阅读时有任何的问题,也可通过评论提出,本人将根据自身能力对问题进行一定的解答。手撸Spring系列是笔者本人首次尝试的、较为规范的系列博客,将会围绕Spring框架分为 IOC/DI 思想、 Spring MVC、 AOP 思想、 Spring JDBC 四个模块,并且每个模块都会分为 理论篇、 源码篇.
2021-09-24 14:19:29
952
原创 手撸Spring系列8:Spring AOP(理论篇)
说在前头: 笔者本人为大三在读学生,书写文章的目的是为了对自己掌握的知识和技术进行一定的记录,同时乐于与大家一起分享,因本人资历尚浅,发布的文章难免存在一些错漏之处,还请阅读此文章的大牛们见谅与斧正。若在阅读时有任何的问题,也可通过评论提出,本人将根据自身能力对问题进行一定的解答。手撸Spring系列是笔者本人首次尝试的、较为规范的系列博客,将会围绕Spring框架分为 IOC/DI 思想、 Spring MVC、 AOP 思想、 Spring JDBC 四个模块,并且每个模块都会分为 理论篇、 源码篇.
2021-09-22 10:43:50
2080
2
转载 Spring AOP 切点匹配规则
转载自:https://blog.youkuaiyun.com/qq_34426004/article/details/82414375winthin表达式(匹配包或方法)//匹配类中所有方法@Pointcut("within(com.demo.service.DemoService)")public void matchType(){}//匹配当前包下所有类中所有方法(不包括子包)@Pointcut("within(com.demo.service.*)")public void matchTyp.
2021-09-19 13:09:17
1380
原创 手撸Spring系列7:Spring MVC(实战篇)
说在前头: 笔者本人为大三在读学生,书写文章的目的是为了对自己掌握的知识和技术进行一定的记录,同时乐于与大家一起分享,因本人资历尚浅,发布的文章难免存在一些错漏之处,还请阅读此文章的大牛们见谅与斧正。若在阅读时有任何的问题,也可通过评论提出,本人将根据自身能力对问题进行一定的解答。手撸Spring系列是笔者本人首次尝试的、较为规范的系列博客,将会围绕Spring框架分为 IOC/DI 思想、 Spring MVC、 AOP 思想、 Spring JDBC 四个模块,并且每个模块都会分为 理论篇、 源码篇.
2021-09-18 13:08:31
1406
原创 手撸Spring系列6:Spring MVC(源码篇)
说在前头: 笔者本人为大三在读学生,书写文章的目的是为了对自己掌握的知识和技术进行一定的记录,同时乐于与大家一起分享,因本人资历尚浅,发布的文章难免存在一些错漏之处,还请阅读此文章的大牛们见谅与斧正。若在阅读时有任何的问题,也可通过评论提出,本人将根据自身能力对问题进行一定的解答。手撸Spring系列是笔者本人首次尝试的、较为规范的系列博客,将会围绕Spring框架分为 IOC/DI 思想、 Spring MVC、 AOP 思想、 Spring JDBC 四个模块,并且每个模块都会分为 理论篇、 源码篇.
2021-09-17 14:44:19
942
原创 手撸Spring系列5:Spring MVC(理论篇)
说在前头: 笔者本人为大三在读学生,书写文章的目的是为了对自己掌握的知识和技术进行一定的记录,同时乐于与大家一起分享,因本人资历尚浅,发布的文章难免存在一些错漏之处,还请阅读此文章的大牛们见谅与斧正。若在阅读时有任何的问题,也可通过评论提出,本人将根据自身能力对问题进行一定的解答。手撸Spring系列是笔者本人首次尝试的、较为规范的系列博客,将会围绕Spring框架分为 IOC/DI 思想、 Spring MVC、 AOP 思想、 Spring JDBC 四个模块,并且每个模块都会分为 理论篇、 源码篇.
2021-09-15 15:45:51
954
原创 手撸Spring系列4:IOC/DI 思想(实战篇)
实战篇的代码的重心会放在IOC/DI、MVC、AOP等思想的具体实现上,实现迷你版的Spring(每个类对应的包与Spring源码保持一致),对于其扩展性不会做特别的考虑!!
2021-09-13 12:58:40
1142
1
Spring5.0.2源码
2021-06-16
使用Java编写的《拳皇97》,致敬经典,还原八神庵大战草稚京
2021-06-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人