自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 资源 (1)
  • 收藏
  • 关注

原创 DTO VO 与 POJO

定义:VO是视图层传的数据的模型,表示值的对象。目的:VO的主要目的是封装一些数据,并将其作为单个不可变实体进行传递和使用,在软件开发中用于在视图层展示和传输数据。目的:DTO的主要目的是在不同层之间传递数据,实现层与层之间的解耦,降低层之间的耦合度,提高代码的可维护性和可读性。定义:PO是持久化对象的简称,与数据库表中的记录相对应的对象。它通常用于数据访问层或持久层,表示数据库中的实体。DTO的属性通常与业务实体对象(如数据库实体)相对应,但可能只包含业务实体的子集,用于满足特定层的数据需求。

2024-09-29 08:58:41 327

原创 Swagger 使用介绍

Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务(它的主要作用是:使得前后端分离开发更加方便,有利于团队协作接口的文档在线自动生成,降低后端开发人员编写接口文档的负担功能测试Spring已经将Swagger纳入自身的标准,建立了Spring-swagger项目,现在叫Springfox。通过在项目中引入Springfox ,即可非常简单快捷的使用Swagger。

2024-09-25 21:23:51 945

原创 springBoot 异常处理

定义全局异常处理器非常简单,就是定义一个类,在类上加上一个注解@RestControllerAdvice,加上这个注解就代表我们定义了一个全局异常处理器。在全局异常处理器当中,需要定义一个方法来捕获异常,在这个方法上需要加上注解@ExceptionHandler。通过@ExceptionHandler注解当中的value属性来指定我们要捕获的是哪一类型的异常。//处理异常@ExceptionHandler(Exception.class) //指定能够处理的异常类型//打印堆栈中的异常信息。

2024-09-25 17:53:56 283

原创 spring AOP

什么是AOP?AOP英文全称:Aspect Oriented Programming(面向切面编程、面向方面编程),其实说白了,面向切面编程就是面向特定方法编程。AOP的作用:在程序运行期间在不修改源代码的基础上对已有方法进行增强(无侵入性: 解耦)AOP面向切面编程和OOP面向对象编程一样,它们都仅仅是一种编程思想,而动态代理技术是这种思想最主流的实现方式。而Spring的AOP是Spring框架的高级技术,旨在管理bean对象的过程中底层使用动态代理机制,对特定的方法进行编程(功能增强)。

2024-09-24 13:50:22 715

原创 Spring事务

当调用 deptLogService.insert(deptLog) 时,也会创建一个新的事务,那此时,当insert方法运行完毕之后,事务就已经提交了。即使外部的事务出现异常,内部已经提交的事务,也不会回滚了,因为是两个独立的事务。@Transactional注解:我们一般会在业务层当中来控制事务,因为在业务层当中,一个业务功能可能会包含多个数据访问的操作。Propagation.REQUIRES_NEW :不论是否有事务,都创建新事务 ,运行在一个独立的事务中。什么是事务的传播行为呢?

2024-09-24 11:11:29 1355

原创 过滤器Filter 与 拦截器Interceptor

Filter表示过滤器,是 JavaWeb三大组件(Servlet、Filter、Listener)之一。过滤器可以把对资源的请求拦截下来,从而实现一些特殊的功能使用了过滤器之后,要想访问web服务器上的资源,必须先经过滤器,过滤器处理完毕之后,才可以访问对应的资源。过滤器一般完成一些通用的操作,比如:登录校验、统一编码处理、敏感字符处理等。第1步,定义过滤器 :1.定义一个类,实现 Filter 接口,并重写其所有方法。

2024-09-19 21:57:04 736

原创 cookie session 与 JWT

签名的目的就是为了防jwt令牌被篡改,而正是因为jwt令牌最后一个部分数字签名的存在,所以整个jwt 令牌是非常安全可靠的。一旦jwt令牌当中任何一个部分、任何一个字符被篡改了,整个令牌在校验的时候都会失败,所以它是非常安全可靠的。PS:Session 底层是基于Cookie实现的会话跟踪,如果Cookie不可用,则该方案,也就失效了。JWT的组成: (JWT令牌由三个部分组成,三个部分之间使用英文的点来分割)稍后我们再来学习如何来生成jwt令牌,以及如何来校验jwt令牌。

2024-09-19 21:30:38 733

原创 mybaits相关基础

如果需要实现复杂的SQL功能,建议使用XML来配置映射语句,也就是将SQL语句写在XML配置文件中。XML映射文件的名称与Mapper接口名称一致,并且将XML映射文件和Mapper接口放置在相同包下(同包同名)在xml映射文件中配置的SQL,有时可能会存在很多重复的片段,此时就会存在很多冗余的代码。XML映射文件中sql语句的id与Mapper接口中的方法名一致,并保持返回类型一致。:动态的在SQL语句中插入set关键字,并会删掉额外的逗号。标签:就是用于编写select查询语句的。

2024-09-11 22:55:45 1048

原创 lombok 相关基础

Lombok是一个实用的Java类库,可以通过简单的注解来简化和消除一些必须有但显得很臃肿的Java代码。通过注解的形式自动生成构造器、getter/setter、equals、hashcode、toString等方法,并可以自动化生成日志变量,简化java开发、提高效率。注解作用为所有的属性提供get/set方法@ToString会给类自动生成易阅读的 toString 方法根据类所拥有的非静态字段自动重写 equals 方法和 hashCode 方法@Data。

2024-09-11 22:28:57 337

原创 Spring IOCDI相关注解

指定当前要注入的bean对象。在@Qualifier的value属性中,指定注入的bean的名称。@Primary(当存在多个相同类型的Bean注入时,加上@Primary注解,来确定默认的实现)那如果在IOC容器中,存在多个相同类型的bean对象,会出现什么情况呢?是按照bean的名称进行注入。通过name属性指定要注入的bean的名称。进行自动装配的(去IOC容器中找某个类型的对象,然后完成注入操作)面试题 : @Autowird 与 @Resource的区别。@Autowired注解,默认是按照。

2024-09-07 14:50:53 482

原创 spring请求参数获取

通过Servlet中提供的API:HttpServletRequest(请求对象),获取请求的相关信息。2. SpringBoot方式2.1 参数名不一致注意事项:@RequestParam中的required属性默认为true(默认值也是true),代表该请求参数必须传递,如果不传递将报错如果该参数是可选的,可以将required属性设置为false2.2 实体参数在使用简单参数做为数据传递方式时,前端传递了多少个请求参数,后端controller方法中的形参就要书写多少个。如果请求参数

2024-09-06 23:45:00 807

原创 explain 详解

使用EXPLAIN关键字可以模拟优化器执行SQL语句,分析你的查询语句或是结构的性能瓶颈。在 select 语句之前增加 explain 关键字,MySQL 会在查询上设置一个标记,执行查询会返回执行计划的信息,而不是 执行这条SQL。注意:如果 from 中包含子查询,仍会执行该子查询,将结果放入临时表中。

2022-12-22 19:11:06 285 1

原创 Mysql生成环境常见问题及解决方案

max_connections参数,用来控制一个MySQL实例同时存在的连接数的上限,超过这个值,系统就会拒绝接下来的连接请求,并报错提示“Too many connections”。max_connections参数,用来控制一个MySQL实例同时存在的连接数的上限,超过这个值,系统就会拒绝接下来的连接请求,并报错提示“Too many connections”。有的业务代码会在短时间内先大量申请数据库连接做备用,如果现在数据库确认是被连接行为打挂了,那么一种可能的做法,是让数据库跳过权限验证阶段。

2022-12-13 23:15:50 295

原创 幻读与间隙锁

幻读指的是一个事务在前后两次查询同一个范围的时候,后一次查询看到了前一次查询没有看到的行。幻读的相关说明:在可重复读隔离级别下,普通的查询是快照读,是不会看到别的事务插入的数据的。因此,幻读在“当前读”下才会出现。上面session B的修改结果,被session A之后的select语句用“当前读”看到,不能称为幻读。幻读仅专指“新插入的行”。

2022-12-13 22:08:31 377

原创 简单的sql语句 执行特别慢

为了便于描述,我先构造一个表,基于这个表来说明今天的问题。这个表有两个字段id和c,并且我在里面插入了10万行记录。第一类:查询长时间不返回执行下面的SQL语句一般碰到这种情况的话,大概率是表t被锁住了。接下来分析原因的时候,一般都是首先执行一下show processlist命令,看看当前语句处于什么状态。然后我们再针对每种状态,去分析它们产生的原因、如何复现,以及如何处理。使用 show processlist 命令查看出现这个状态表示的是,现在有一个线程正在表t上请求或者持有MDL写锁,把s

2022-12-06 22:48:00 394

原创 导致性能下降的sql语句

假设你现在维护了一个交易系统,其中交易记录表tradelog包含交易流水号(tradeid)、交易员id(operator)、交易时间(t_modified)等字段。为了便于描述,我们先忽略其他字段。这个表的建表语句如下:假设,现在已经记录了从2016年初到2018年底的所有数据,运营部门有一个需求是,要统计发生在所有年份中7月份的交易记录总数。这个逻辑看上去并不复杂,你的SQL语句可能会这么写:key="t_modified"表示的是,使用了t_modified这个索引;我在测试表数据中插入了10万

2022-12-06 22:26:05 851 1

原创 order by 工作流程与随机排序

按name排序”这个动作,可能在内存中完成,也可能需要使用外部排序,这取决于排序所需的内存和参数sort_buffer_size。MySQL将需要排序的数据分成12份,每一份单独排序后存在这些临时文件中。然后把这12个有序文件再合并成一个有序的大文件。mysql会通过遍历索引将满足条件的数据读取到sort_buffer,并且按照排序字段进行快速排序1>如果查询的字段不包含在辅助索引中,需要按照辅助索引记录的主键返回聚集索引取出所需字段2>该方式会造成随机IO,在MySQL5.6提供了MRR的机制,会将

2022-12-06 18:42:18 974

原创 MySQL count语句查询

今天,我们就来聊聊count(*)语句到底是怎样实现的,以及MySQL为什么会这么实现。

2022-12-02 22:58:06 1538

原创 binlog(归档日志)和redo log(重做日志)

今天我们再从整体的角度去看一下 mysql的binlog(归档日志)和redo log(重做日志)。先说一下在两阶段提交的不同瞬间,MySQL如果发生异常重启,是怎么保证数据完整性的?如果在图中时刻A的地方,也就是写入redo log 处于prepare阶段之后、写binlog之前,发生了崩溃(crash),由于此时binlog还没写,redo log也还没提交,所以崩溃恢复的时候,这个事务会回滚。这时候,binlog还没写,所以也不会传到备库。到这里,大家都可以理解。

2022-12-02 22:40:06 972

原创 MySQL表空间回收

今天,我就和你聊聊数据库表的空间回收,为什么简单地删除表数据达不到表空间回收的效果,然后再和你介绍正确回收空间的方法。我们要彻底搞明白这个问题的话,就要从数据删除流程说起了。

2022-11-30 23:19:13 1345

原创 MySql数据库的flush

mysql flush 的过程及相关操作对数据库性能影响

2022-11-29 22:50:31 4547

原创 如何给字符串字段加索引

当要给字符串创建前缀索引时,有什么方法能够确定我应该使用多长的前缀呢?我们可以通过统计索引上有多少个不同的值来判断要使用多长的前缀。

2022-11-28 22:22:51 1007

原创 MySQL如何选择索引

MySQL中一张表其实是可以支持多个索引的。但是,你写SQL语句的时候,并没有主动指定使用哪个索引。也就是说,使用哪个索引是由MySQL来确定的。我们先建一个简单的表,表里有a、b两个字段,并分别建上索引然后,我们往表t中插入10万行记录,取值按整数递增,即:(1,1,1),(2,2,2),(3,3,3) 直到(100000,100000,100000)。接下来,我们分析一条SQL语句:图1 使用explain命令查看语句执行情况。

2022-11-28 21:32:56 1741

原创 linux下 批量替换文件内容

代码批量修改

2022-11-24 20:46:52 1066

原创 普通索引,唯一索引与change buffer

相信大家都了解了唯一索引和普通索引的区别。今天我们就继续来谈谈,在不同的业务场景下,应该选择普通索引,还是唯一索引?假设你在维护一个市民系统,每个人都有一个唯一的身份证号,而且业务代码已经保证了不会写入两个重复的身份证号。由于身份证号字段比较大,我不建议你把身份证号当做主键,那么现在你有两个选择,要么给id_card字段创建唯一索引,要么创建一个普通索引。如果业务代码已经保证了不会写入重复的身份证号,那么这两个选择逻辑上都是正确的。从性能的角度考虑,你选择唯一索引还是普通索引呢?选择的依据是什么呢?

2022-11-23 23:46:51 786

原创 MySql 全局锁 表级锁 行锁

如果执行FTWRL命令之后由于客户端发生异常断开,那么MySQL会自动释放这个全局锁,整个库回到可以正常更新的状态。而将整个库设置为readonly之后,如果客户端发生异常,则数据库就会一直保持readonly状态,这样会导致整个库长时间处于不可写状态,风险较高。官方自带的逻辑备份工具mysqldump,当mysqldump使用参数–single-transaction的时候,会启动一个事务,确保拿到一致性视图。MDL 会直到事务提交才会释放,在做表结构变更的时候,一定要小心不要导致锁住线上查询和更新。

2022-11-18 22:04:42 982

原创 MySql 联合索引 与 最左前缀

回表:回到主键索引树搜索的过程,称为回表覆盖索引:某索引已经覆盖了查询需求,称为覆盖索引,例如:select ID from T where k between 3 and 5在引擎内部使用覆盖索引在索引K上其实读了三个记录,R3~R5(对应的索引k上的记录项),但对于MySQL的Server层来说,它就是找引擎拿到了两条记录,因此MySQL认为扫描行数是2最左前缀原则:B+Tree这种索引结构,可以利用索引的"最左前缀"来定位记录只要满足最左前缀,就可以利用索引来加速检索。最左前缀可以是联合索引

2022-11-17 22:28:27 829

原创 MySql数据库索引及数据结构

1.索引的作⽤:提⾼数据查询效率2.常见索引模型:哈希表、有序数组、搜索树3.哈希表:键 - 值(key - value)。4.哈希思路:把值放在数组⾥,⽤⼀个哈希函数把key换算成⼀个确定的位置,然后把value放在数组的这个位置5.哈希冲突的处理办法:链表6.哈希表适⽤场景:只有等值查询的场景7.有序数组:按顺序存储。查询⽤⼆分法就可以快速查询,时间复杂度是:O(log(N))8.有序数组查询效率⾼,更新效率低9.有序数组的适⽤场景:静态存储引擎。

2022-11-16 23:14:02 952

原创 MySql事务隔离

提到事务,你肯定会想到(Atomicity、Consistency、Isolation、Durability,即原⼦性、⼀致性、隔离性、持久性),今天我们就来说说其中,也就是“”。

2022-11-16 21:12:41 1726 7

原创 SQL语句的内部执行流程

MYSQL执行流程

2022-11-15 22:22:59 890 1

原创 项目管理学习笔记

01程序员 程序员做项目管理的三大误区误区1:凡事恨不得事必躬亲想办法影响他人去把事情做好,影响他人去做好一件事呢?在不断地反思之后,我总结出了成功施加影响的三个层次,分别是让人知道要做(Awareness)、有动力做(Desire)和有能力做(Ability)单方面的工作交待和告知,停留在浅层次的信息传达上,只是让人知道要做,但并不足以让人产生动力,去促成有效的行动。如果现阶段...

2022-11-08 23:16:00 1668

原创 fpdf fpdi 操作pdf文件 写入中文汉字

  今天给公司做一个线上合同签约功能,用户签约后 生成pdf版的文件 。网上搜了搜大概都是用fpdf进行操作的 ,通过fpdi 可以进行读取pdf模板。 在通过继承fpdf 操作现有的pdf文档 。 功能很简单,用户手写用页面canvas生成图片,图片保存png到服务器 。然后粘贴图片到对应的pdf模板上。但是在实际操作上就出现了问题。国外的fpdf 对中文支持并不是很好,...

2020-07-30 18:59:00 621

原创 “git pull” 强制覆盖本地文件

使用master分支覆盖本地。使用其它分支,则更改第二条命令的参数。

2020-07-17 16:50:00 10892

原创 公众号迁移 原有数据库openid 更新主体openid

  今天一个两年前做的公众号项目 要更改主体,随之而来的是公众号的迁移。 公众号迁移后关注的粉丝也会对应的进行迁移,还会给粉丝发送相关通知。  大体流程如下图  迁移的具体步骤我就不细说了。今天主要说的是 迁移主体后 对应的用户openid也会变化,也就是说你的程序如果公众号登录是以微信openid为唯一标识的话,那你的用户系统经过一次公众号变更后就会出现问题。 老用户再次授权后 系统可...

2020-07-15 20:07:00 283

原创 TP5中find_in_set的用法

$id=4;Db::name('menu')->where('FIND_IN_SET(:id,pid_all)',['id' => $id])->update([$field => $title]);$map[]=['exp','FIND_IN_SET(2,needID)'];$db->where($map)->select();TP5.1.21 ...

2020-07-09 18:25:00 2220

原创 linux crontab 定时任务 邮件问题 及其相关的 dead.letter 问题

最近开发项目的时候发现公司服务器用root账号登录的时候 一直会提示有新的信件,一直提示一直提示。联想到另一台服务器上 的dead.letter文件每天都不断的变大 而且在 root家目录里 ,系统硬盘里。过十天半个月就会收到服务器的磁盘使用率超90%的报警短信, 我突然感觉是时候去除了一下这个问题了。之前就到处搜索dead.letter 问题。但是一直没有靠谱的跟我这个问题一样的。...

2020-06-29 20:15:00 445

原创 CI 自动化部署 方案gitlab-runner

现在大多数公司都很多项目需要自动部署 到多台服务器 代码检查等工作 ,为了提供工作效率往往需要我们的ci就闪亮登场了今天说一下我所采用的 gitlab-runner 提供的方案 ,感觉这个比较实用而且基本上很多公司也在用gitlab环境 ,应该也很方便部署减少了再引进其他软件平台所带来的不便,废话不多说 直接进入主题 如何操作使用:1.找到一个适合自己gitlib 版本的 git...

2020-06-21 20:32:00 192

原创 php 微信支付分开发 免押

写在前面先说一下这个版本 是V1.3的, 2020.03.15日更新版本 之前曾经做过一个支付分V1.0的。 v1.0和v1.3已经是大不一样了 ,所以如果你在做这个话看好版本,别让我带跑偏。前期准备看到这篇文章,相信你已经做好了前期的准备工作,包括已经开通了微信支付分 ,向腾讯的商务提交了相关的文档 获得了 属于你自己的微信支付 service_id代码编写微信支付分提供了比...

2020-06-02 18:35:00 259

原创 PHPexcel使用 技巧

phpexcel不用多说了 导出表格时经常会用到 本帖主要记录一下几个经常用到的操作# 设置自动换行$PHPExcel->getActiveSheet()->getStyle("A1:A100")->getAlignment()->setWrapText(TRUE); // a1 到a100 单元格,字符串自动换行#导出时的文件名设置在使用PHPExcel...

2019-09-06 20:22:00 74

原创 php 简单的 单例模式

php单例模式简单说明使用注意事项: 1.使用时不能用反射模式创建单例,否则会实例化一个新的对象 2.使用懒单例模式时注意线程安全问题 3.饿单例模式和懒单例模式构造方法都是私有的,因而是不能被继承的,有些单例模式可以被继承(如登记式模式)<?php/** * Created by PhpStorm. * auther: sgj * Date: 20...

2019-09-05 21:58:00 98

mysql怎么减少行锁对性能的影响

mysql怎么减少行锁对性能的影响

2019-02-13

空空如也

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

TA关注的人

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