自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 编写代码,

我发现它在处理代码的时候会犯错但这就是我来这里的原因监督它。我不相信别人的代码(尤其是我的) ,我也肯定不相信 chatgPT 的输出。也许我使用它最多的方式是开始我想写的任何新的结构。ChatgPT 知道“ Python 化”的方法,它会给你一些建议来提高你的代码,使它更具可读性。ChatGPT 告诉我它的 Quick Sort 实现不是最有效的,所以我要求另一种实现。请注意,chatgPT 不仅提供了更新后的代码,还解释了更改的原因。这是我最喜欢的技巧之一: 让 chatgPT 简化复杂的代码。

2023-07-18 16:13:25 113

原创 程序员ChatGPT提示模板

作为一个程序员,您总是在寻找优化您的工作流程、提高您的技能以及获得关于复杂编程概念的专家指导的方法。在本文中,我们将探索一个针对程序员的 ChatGPT 提示的全面列表,涵盖编程的所有方面,从编码到数据库管理,从 UI 开发到面试准备,以及介于两者之间的所有内容。因此,无论您是一个经验丰富的程序员还是刚刚开始,请坐下来,放松,并准备好释放 ChatGPT 的全部潜力!通过这些提示,您可以利用 ChatGPT 的强大功能将您的编程技能提升到一个新的水平,并轻松地完成任务。

2023-07-18 11:22:18 421

原创 Redis集群笔记

1、为什么需要Redis集群?在讲Redis集群[架构](https://so.csdn.net/so/search?q=%E6%9E%B6%E6%9E%84&spm=1001.2101.3001.7020)之前,我们先简单讲下Redis单实例的架构,从最开始的一主N从,到读写分离,再到Sentinel哨兵机制,单实例的Redis缓存足以应对大多数的使用场景,也能实现主从故障迁移。

2022-09-16 10:27:03 958

原创 批量插入优化

实际上就是64M。mysql 数据库一般有一个默认的设置,就是每次sql操作的数据不能超过4M。这里拿mybatis 举例 ,可以采用多线程,分批次,插入数据。文章知识点与官方知识档案匹配,可进一步学习相关知识。修改 my.ini 或 my.cof 加上。,默认大小4194304 也就是4M。修改完成之后需要重启mysql服务。查看当前数据库的配置参数。

2022-09-15 17:35:51 711

原创 Redis

Redis 是一个开源(BSD 许可)的[内存](https://so.csdn.net/so/search?q=%E5%86%85%E5%AD%98&spm=1001.2101.3001.7020)**数据结构存储**,用作数据库、缓存、消息代理和流引擎。Redis 提供[数据结构](https://so.csdn.net/so/search?

2022-09-08 11:37:21 642

原创 Spring Cloud 升级之路 理解 NamedContextFactory

spring-cloud-commons 中参考了 spring-cloud-netflix 的设计,引入了 NamedContextFactory 机制,一般用于对于进行配置。spring-cloud-commons 是 Spring Cloud 对于微服务基础组件的抽象。在一个微服务中,调用微服务 A 与调用微服务 B 的配置可能不同。比较简单的例子就是,A 微服务是一个简单的用户订单查询服务,接口返回速度很快,B 是一个报表微服务,接口返回速度比较慢。...

2022-08-30 18:53:22 248 1

转载 spring事务传播机制

当我们在使用Spring所提供的事务功能时,如果是仅仅处理单个的事务,是比较容易把握事务的提交与,不过一旦引入嵌套事务后,多个事务的回滚和提交就会变得复杂起来,各个事务之间是如何相互影响的,是一个值得讨论的点。...

2022-08-05 15:26:47 320

原创 优秀的API接口设计原则及方法

一旦API发生变化,就可能对相关的调用者带来巨大的代价,用户需要排查所有调用的代码,需要调整所有与之相关的部分,这些工作对他们来说都是额外的。如果辛辛苦苦完成这些以后,还发现了相关的bug,那对用户的打击就更大。如果API经常发生变化,用户就会失去对提供方失去信心,从而也会影响目前的业务。但是我们为什么还要修改API呢?为了API看起来更加漂亮?为了提供更多功能?为了提供更好的性能?还是仅仅觉得到了改变了时候了?对于用户来说,他们更愿意使用一个稳定但是看起来不那么时髦的API,这并不意味着我们不再改进API

2022-07-13 14:26:54 2372

原创 # 接口设计六大原则

SRP。Liskov Substitution Principle, 简称LSP。里氏替换原则为良好的继承定义了一个规范:注:在类中调用其他类时务必要使用父类或接口,如果不能使用父类或接口,则说明类的设计已经违背了LSP原则。Dependence Inversion Principle, 简称DIP精简的定义: 面向接口编程。Test-Driven Development 测试驱...

2022-07-13 14:18:35 138

原创 设计模式之适配器模式

文章目录前言需求适配器模式1.简介2.结构2.分类设计模式实现1.电压实现2.目标角色3.适配器角色4.测试总结1.模式优缺点2.业务场景3.其他前言目前在整理总结设计模式,准备将设计模式当一个专题完成,作者写博客的目的只有是为了总结归纳自己的理解,如果有任何问题请帮忙指出,谢谢!本篇要介绍的就是适配器模式。需求目前市面上大多数充电器都是将220V电压进行适配为5V电压供手机使用,但是在日本的电压是110V,为了出口到

2022-05-30 15:01:49 133

原创 设计模式之策略模式

文章目录前言需求模拟违背设计模式的实现策略模式1.定义2.优点3.模式结构4.模式结构图设计模式重构1.抽象策略2.具体策略3.环境类4.客户端调用总结前言我写博客主要是为了梳理知识及归纳总结,我的每一篇博客都会超过3000字,并且都会附上相应的代码或图片,如有任何问题请帮忙指出,谢谢!需求模拟在电商系统中支付模块至关重要,支付一般包括支付宝支付、微信支付和银联支付,如何优雅设计支付模块?违背设计模式的实现使用if…else实现

2022-05-30 15:01:42 255

原创 设计模式之外观模式

文章目录前言外观模式介绍违背设计模式实现设计模式重构1.AOP切面注解2.配置服务类3.配置类注解定义4.获取自定义配置类信息5.切面注解定义6.白名单切面逻辑7.引入中间件POM8.配置application.yml9.在controller中添加自定义注解总结前言本篇会用外观模式来设计一个处理白名单业务的中间件,将外观模式实际用到项目中。注意:设计模式学的是设计思想,而不是固定的实现方式。外观模式介绍定义:外观模式又叫作门面模式,是一种通过为

2022-05-30 15:01:19 166

原创 设计模式之建造者模式

文章目录前言为什么学习设计模式?设计模式分类需求模拟场景模拟工程1.装修材料接口2.吊顶材料3.涂料材料4.地板材料5.地砖材料违背设计模式实现1.if…else实现需求2.单元测试3.单元测试结果建造者模式重构1.模式的结构2.产品角色3.抽象建造者4.具体建造者5.指挥者6.客户类(测试)7.测试结果总结前言最近接手的项目遇到了比较大的坑,在实现流量套餐业务时(有贵宾、高级贵宾、WiFi、导航等等套餐),在

2022-05-30 15:01:10 71

原创 JAVA集合基础

前言最近复习了一下数据结构,对数据结构有了更深了解,回头再来看一下集合相关知识就感觉豁然开朗,面试中集合也是必考题,便有了这篇集合总结,其中HashMap(包括部分源码分析)篇幅大概有6000+字,希望大家能耐心看完,看完后多少都会有一些收获。数据结构先来简单复习一下集合相关的数据结构。一、数据结构的分类:1.数据结构包括:逻辑结构和物理结构,其中逻辑结构稍复杂一些;2.逻辑结构包括:线性结构(如 顺序表、栈、队列)和非线性结构(如 树、图);3.物理结构包括:顺序存储结构(如 数组)、链式存

2022-05-30 15:00:50 117

原创 设计模式之单例模式

文章目录前言单例模式1.定义2.特点3.优缺点4.应用场景实现方式1.懒汉模式 (线程不安全)2.懒汉模式 (线程安全)3.饿汉模式 (线程安全)4.使用类的内部类 (线程安全)5.双重锁校验 (线程安全)6.CAS (线程安全)7.枚举单例 (线程安全)总结前言作者目前在复习总结设计模式,便计划写一个设计模式的专题,本篇介绍的是单例模式,主要介绍的是7种单例模式的实现。作者写博客主要是为了归纳总结技术,加深对它的理解,如有任何错误地方请帮

2022-05-29 11:33:44 76

原创 设计模式之观察者模式

文章目录前言需求观察者模式1.定义2.优缺点3.spring观察者结构4.应用场景设计模式实现1.Event 事件2.Listener 监听者3.Listener 监听者4.测试总结前言本篇主要介绍spring封装后的观察者模式的实际应用,在写作的过程中作者会尽量控制篇幅,有任何有问题的地方请帮忙指出,谢谢。需求电商项目中,用户购买商品(订单支付成功)后,同时还得给用户加积分、写流水和其他操作。接下来会用观察者模式实现该业务。观察者模式

2022-05-29 11:32:15 104

原创 设计模式之代理模式

前言作者目前在复习总结设计模式,便计划写一个设计模式的专题,本篇介绍的是代理模式,为了加深对代理模式认知,作者会记录实际项目中代理模式的实战。作者写博客主要是为了归纳总结技术,加深对它的理解,如有任何错误地方请帮忙指出。业务需求电商系统需要实现一个文件上传功能,考虑到成本和文件可能会较多前提下给出了以下方案:大文件上传到阿里云SSO服务器上,如视频等;小文件上传到本地FastDFS文件服务器上,如图片等。功能设计根据以上业务场景分析,得出的设计方案如下:代理模式实现不同服务的文件上传

2022-05-29 11:31:45 138

原创 高频算法题之环形链表

文章目录前言题目解题思路代码实现测试总结前言复盘一下最近面试遇到简单关于算法的面试题,本篇介绍的是大数相加的算法实现。题目面试官: 请你说一下如何实现2个大数相加的业务?面试者:这个简单,用long接收数字,再计算不就好了。面试官:那如果是这个大数连long都无法装下呢,如100位的大数。面试者:会不会是题目出错了?面试官:题目没有错,今天就先面试到这里回去等通知吧。面试者:###xxxx。。。解题思路通过比较2个大数的字符长度来确认数组的长度 :maxLengt

2022-05-29 11:27:39 88

原创 高频算法题之两数之和

文章目录前言题目解题思路代码实现测试总结前言复盘一下最近面试遇到简单关于算法的面试题,本篇介绍的是大数相加的算法实现。题目面试官: 请你说一下如何实现2个大数相加的业务?面试者:这个简单,用long接收数字,再计算不就好了。面试官:那如果是这个大数连long都无法装下呢,如100位的大数。面试者:会不会是题目出错了?面试官:题目没有错,今天就先面试到这里回去等通知吧。面试者:###xxxx。。。解题思路通过比较2个大数的字符长度来确认数组的长度 :maxLengt

2022-05-29 11:18:19 154

原创 反转链表及相关算法题

反转链表是链表的一个常用操作,一些算法题中也需要用到此操作,是值得学习探讨的。1 反转链表剑指 Offer 24. 反转链表题目描述:定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL涉及到链表的操作,我们可以先在纸上画出过程,写程序时思路会更清晰根据以上图解,思路主要为两个步骤循环操作:将当前节点next

2022-05-29 11:17:54 111

原创 反转链表及相关算法题

反转链表是链表的一个常用操作,一些算法题中也需要用到此操作,是值得学习探讨的。1 反转链表剑指 Offer 24. 反转链表题目描述:定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL涉及到链表的操作,我们可以先在纸上画出过程,写程序时思路会更清晰根据以上图解,思路主要为两个步骤循环操作:将当前节点next

2022-05-29 11:16:38 109

原创 高频算法题之链表反转

文章目录前言递归解题法栈特性解题法双指针解题法总结前言复盘一下最近遇到的面试算法题,本篇主要介绍的是链表反转的3种解法和思路,其实有在LeetCode或牛客网上刷题的也知道 链表反转的面试题频率非常高,是必会的一道算法题。先定义一个单向链表,代码如下: /** * 链表节点 */ private static class Node { int data; Node next; Node(int dat

2022-05-29 11:15:55 130

原创 最常见算法面试题

文章目录前言一、算法好处二、算法基础三、五大算法思想四、高频面试算法题1.链表反转2.环形链表3.大数相加4.冒泡排序优化5.LRU实现前言算法题是现在面试必考题,作者通过最近面试复盘并总结一下相关的算法题,会持续更新。一、算法好处算法学习不仅仅是应付面试,更重要是思维得到了提升,特别是逻辑推理能力,在遇到大流量等业务场景下都需要用算法的思维做设计和优化,还有就是极限的压榨硬件的性能等等。ps:千万别把学习算法当成应付面试,这样的心态很难学好算法。二、算法基

2022-05-29 11:10:34 2918

原创 算法之冒泡排序优化

文章目录前言冒泡排序实现冒泡排序优化总结前言面试官: 冒泡排序了解吗?请实现一下?面试者:了解,最基础的交换排序算法。面试官:请介绍一下冒泡排序的特点?面试者:时间复杂度为O(n2),空间复杂度为O(1),属于稳定的排序算法。面试官:如果还是用冒泡排序,请问如何优化它?面试者:(内心:啥?不是应该问快速排序什么的么?冒泡排序还怎么优化?)可以使用快速排序等算法比冒泡排序算法效率高,冒泡排序的优化没怎么了解。面试官:那今天的面试就先到这里,你回去等通知吧面试者:这就挂了?我准备

2022-05-29 11:08:42 43

原创 设计模式之装饰者模式

文章目录前言实战需求装饰者模式模式实现功能总结前言装饰模式在生活中随处可见,如蛋炒饭中可以加咸菜、香肠、牛肉等,但不管怎么加其他配菜,它都还是蛋炒饭;还有车子为了美观贴膜、手机为了防摔、房子装修、相片加相框、王者荣耀中李白的各种皮肤等等,都是装饰者模式。本篇要介绍的就是装饰者设计模式。实战需求在订单提交的时候,订单价格和结算价格其实是两码事,订单价格是当前商品成交价格,而结算价格是用户最终需要 支付的金额,最终支付的金额并不是一成不变,它也并不是商品成交价格,能改变结算价格的因素

2022-05-24 00:24:54 118

原创 高频算法题之LRU

文章目录前言什么是LRU算法实现思路LRU代码实现总结前言面试官:你了解过reids的内存淘汰策略么?面试者:嗯,了解过,biubiu。。。面试官:打断一下,如果让你去实现LRU算法,你该如何实现?面试者:我就会用linkedHashMap实现。。。面试官:好了,你的情况我大概知道了,你先回去等通知吧面试者:就是又挂了呗。。什么是LRULRU 缓存淘汰算法就是一种常用策略。LRU 的全称是 Least Recently Used,也就是说我们认为最近使用过的数据应该是是「有用

2022-05-24 00:23:48 173

原创 springboot读取resources目录下文件

文章目录前言1.问题过程2. 解决方案2.1 文件上传2.2 ClassPathResource总结前言最近的工作中遇到了复杂的excel报表导出业务,采用的是用excel模板来实现该业务(可以规避大量勾画excel格式的代码),将excel的模板放在项目的resources目录,遇到相关的一些问题及解决方案。1.问题过程resources目录下模板的位置:在本地调试时直接用相对路径(templates/xxx.xlsx)就可以获取到对应的模板信息,调试自测过程都非

2022-05-24 00:22:21 3667

原创 初识数据结构与算法

文章目录数据结构概述分类程序中常见的数据结构算法复杂度时间复杂度空间复杂度总结数据结构概述数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。分类从关注的维度看,数据结构可以划分为数据的逻辑结构和物理结构,同一逻辑结构可以对应不同的存储结构。逻辑结构反映的是数据元素之间的逻辑关系,逻辑关系是指数据元素之间的前后间以什么形式相互关联,这与

2022-05-24 00:21:10 51

原创 mysql之union和union all区别

文章目录前言一、准备工作1.准备一张简单用户表2.任意添加几条用户数据(11条)二、结果集处理1. union all结果集2. union all结果集三、执行计划分析1. union all执行计划分析2. union 执行计划分析前言在mysql中你对于union和union all区别有了解过么?它们有什么区别?谁更快效率更高?你在日常开发中用的是哪一个?看完该篇你会彻底明白union和union all的区别。一、准备工作

2022-05-24 00:18:54 485

原创 MySQL之InnoDB

文章目录前言一、MySQL存储引擎1. InnoDB特点2.MyISAM和InnoDB区别3.存储引擎选择二、InnoDB页1.InnoDB页简介2.InnoDB页结构3.数据区4. 页分裂前言没有任何文笔,都是写给自己看的,算是对知识的复习,本篇都是InnoDB的八股文知识。一、MySQL存储引擎1. InnoDB特点优势:独立表空间,支持MVCC,行锁设计,提供一致性非锁定读,支持外键;特性:插入缓冲,二次写,自适应哈希索引,预读;存储

2022-05-24 00:18:23 238

原创 MySQL索引

文章目录前言一、初识索引1.聚簇索引2.辅助索引3.索引代价4.索引最左匹配5.回表的代价6.索引覆盖7.B+ 树索引适用情况8.B+ 树索引注意事项前言笔者没有任何文笔可言,主要是为了复习整理知识一、初识索引1.聚簇索引InnoDB 存储引擎会自动为主键(如果没有它会自动帮我们添加)建立 聚簇索引 ,聚簇索引的叶子节点包含 完整的用户记录。2.辅助索引二级索引 的叶子节点包含的用户记录由 索引列 + 主键 组 成,所以如果想通过 二级索引 来查找完整

2022-05-24 00:16:54 56

原创 redis主从复制

前言本篇笔者来总结一下对redis主从复制学习,如果本篇有任何错误请帮忙指出。`提示:写博客是自己对知识梳理,目前是写给自己看,算是自己学习后的作业,也是为了养成一个良好的习惯。一、主从复制概述1.定义 主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master),后者称为从节点(slave);数据的复制是单向的,只能由主节点到从节点。 其中每个master节点可以有多个slave节点,但是每个slave节点只能有一个master节点。2.作用

2022-05-24 00:13:37 275

原创 redis面试篇

前言本篇是整理自己遇到或看到关于redis相关的面试题,答案仅供参考。`提示:写博客是自己对知识梳理,目前是写给自己看,算是自己学习后的作业,也是为了养成一个良好的习惯。一、基础篇redis 为什么那么快? 1. Redis是单线程模型,没有上下文切换的开销; 2. 简单的数据类型,时间复杂度都是O(1); 3. 数据都在内存中,计算快; 4. 采用了多路复用机制使其在网络IO操作中能并发处理大量的客户端请求,实现高吞吐率。为什么说redis是单线程?Redis是单线程主要是

2022-05-24 00:13:32 63

原创 redis优化的思考

前言本篇谈一谈笔者对于redis优化的一些思考和方向。提示:写博客是自己对知识梳理,目前是写给自己看,算是自己学习后的作业,也是为了养成一个良好的习惯。一、分析1. 由于redis都是基于内存的操作,CPU不是redis的性能瓶颈,则服务器的内存利用率、网络IO和磁盘读写是redis主要性能瓶颈点;2. 由于redis处理请求和指令时是单线程,则它的性能瓶颈点是同步阻塞问题。综上所述:redis优化应从 网络IO、磁盘读写、内存利用率及同步阻塞点这几个维度来做优化。二、网络优化1.客

2022-05-24 00:13:18 208

原创 mysql索引失效场景总结

前言mysql的调优方面包括 表结构优化、索引优化、sql语句优化、分表分库优化等多个维度,本篇重点总结的是索引失效的场景和原因。写博客是自己对知识梳理,目前是写给自己看,算是自己学习后的作业,也是为了养成一个良好的习惯。一、不满足最左匹配原则先复习一下最左匹配原则:1. 创建一个联合索引 index(a,b,c) 则相对于创建了 idx_a(a)、idx_a_b(a,b)、idx_a_b_c(a,b,c) 3个索引。---------------------------------------

2022-05-23 00:34:29 607

原创 多线程项目实战下篇

前言有了前几章博客铺垫,本篇介绍一下CountDownLatch在项目中的实战。看本篇之前可以去看看之前的几篇写博客是自己对知识梳理,目前是写给自己看,算是自己学习后的作业,也是为了养成一个良好的习惯。一、业务需求需求: 每一个班级对应多个学科,现在要去新增一个根据班级的维度去批量生成其对应的所有学科试卷PDF,并将所有的试卷pdf打包zip下载。分析: 典型的多任务并行待处理完后汇总处理。 1. 通过班级id查询到其对应的学科及学科下的试题; 2. 通过多线程并行处理学科的试题按规

2022-05-23 00:34:10 89

原创 多线程项目实战上篇

前言有了前2篇多线程和线程池基础铺垫后,简单介绍一下多线程在项目中最常见的应用场景。一、多线程应用 1.项目中哪些业务场景会用到多线程? 业务的并行处理和异步处理。 2. 如何在项目中使用多线程? 并行处理的业务一般会通过Callable和Future创建线程; 异步处理的业务一般会使用@Async注解打在方法上,使得方法异步执行业务。 3. 本篇需要了解多线程和线程池的基础,不清楚的可以去看看我之前的博客:多线程基础线程池基础二、并行业务1.业务场景 业务 订单详细

2022-05-23 00:33:27 1405

原创 mysql索引下推

前言写博客是自己对知识梳理,目前是写给自己看,算是自己学习后的作业,也是为了养成一个良好的习惯。一、什么是索引下推1.索引下推(index condition pushdown )简称ICP,在Mysql5.6的版本上推出,用于优化查询;2.在不使用ICP的情况下,在使用非主键索引(又叫普通索引或者二级索引)进行查询时,存储引擎通过索引检索到数据,然后返回给MySQL服务器,服务器然后判断数据是否符合条件 ;3.在使用ICP的情况下,如果存在某些被索引的列的判断条件时,MySQL服务器将这一部.

2022-05-23 00:33:15 326

原创 redis优化篇

前言redis都是基于内存的操作,CPU不是redis的性能瓶颈,则服务器的内存利用率和网络IO就是redis的性能瓶颈,redis优化主要是从这2个维度做优化。写博客是自己对知识梳理,目前是写给自己看,算是自己学习后的作业,也是为了养成一个良好的习惯。一、数据存储优化1. 控制key的长度 在保证key在简单、清晰的前提下,尽可能把key定义得短一些来控制key的长度,如 uerOreder:0001 缩写为uo:0001。 建议:做好key规范管理的文档,定义好每个key缩写的含义。如按

2022-05-23 00:32:46 4449 1

原创 多线程基础

前言本篇是笔者对多线程基础的总结。一、线程简介1. 什么是线程? 线程是进程的基本执行单元,一个进程的所有任务都在线程中执行。 2. 进程和线程区别? 进程是指在系统中正在运行的一个应用程序。 区别: 线程是处理器调度的基本单位,但是进程不是; 地址空间:同一进程的线程共享本进程的地址空间,而进程之间则是独立的地址空间; 资源拥有:同一进程内的线程共享本进程的资源如内存、I/O、cpu等,但是进程之间的资源是独立的; 执行过程:每个独立的进程有一个程序运行的入口、顺序执行序

2022-05-23 00:32:32 78

空空如也

空空如也

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

TA关注的人

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