- 博客(57)
- 资源 (1)
- 收藏
- 关注
原创 记一次gitlab服务器负载过高问题处理
调整 Unicorn 配置:unicorn.rb 是 Unicorn 服务器的配置文件,可尝试减少 Unicorn 工作进程的数量。编辑 /var/opt/gitlab/gitlab - rails/etc/unicorn.rb 文件,降低 worker_processes 的值。服务器上进程 /var/opt/gitlab/gitlab-rails/etc/unicorn.rb /opt/gitlab/embedded/service/gitlab-rails/config.ru。
2025-04-07 20:42:16
280
原创 fastadmin图片前台导出
参考 https://github.com/hhurz/tableExport.jquery.plugin#options。exportOptions:参数如下。
2025-02-11 16:05:55
172
原创 uniapp button按钮去掉默认样式
有时候要使用uniapp官方提供的客服和分享功能,需要用到button按钮,里面属性open-type正好可以实现这些功能,不得不使用这种方式。但是这种方式,uniapp官方默认为button按钮加了些样式,自己写的样式也无法进行完全覆盖,所以今天分享一个覆盖官方button按钮的样式。
2025-01-20 10:22:19
801
原创 华为云检查服务器状态
VNC方式登录云服务器正常,但无法通过远程桌面连接方式登录云服务器时,推荐您按照以下思路排查问题。以下排查思路根据原因的出现概率进行排序,建议您从高频率原因往低频率原因排查,从而帮助您快速找到问题的原因。如果解决完某个可能原因仍未解决问题,请继续排查其他可能原因。可能原因处理措施资源状态异常:资源冻结;未开机。只有状态为“运行中”的云服务器才允许用户登录,详细操作请参考。登录使用的用户名称或密码错误。Linux实例用户名:root,密码错误通过“重置密码”重新设置登录密码。详细操作请参考。
2024-12-18 21:18:50
1046
原创 MyBatis 中 Association 和 Collection 的使用方法及区别
主要用于处理一对一的关联关系。例如,在一个简单的用户系统中,一个用户可能对应一个用户详情(如用户的扩展信息),这种关系就可以通过。是两个非常重要的概念。它们能够帮助我们高效地获取和处理与主实体相关的其他实体信息。用于处理一对多的关联关系。例如,一个用户可能有多个订单,这种用户和订单之间的一对多关系就可以通过。,在实际的开发中能够根据具体的关联关系类型灵活地选择和应用它们。)的关系,正确地使用它们可以让我们的持久层代码更加清晰和高效。在 MyBatis 的世界里,当处理数据库中的关联关系时,
2024-11-08 15:56:00
1078
原创 Java 中的 Arrays.sort () 方法:排序的利器
是一个静态方法,位于类中。它的主要功能就是对数组进行排序,无论是基本数据类型的数组还是对象数组,都能轻松应对。当对象没有实现Comparable接口或者我们想要自定义排序规则时,可以传入一个Comparator接口的实现。例如,我们有一个自定义的Person类:javaCopyreturn age;如果我们想根据年龄对Person对象数组进行排序,可以这样做:javaCopy@Override});在这个示例中,我们通过自定义的Comparator实现了根据年龄对。
2024-11-05 21:13:04
1059
原创 加油站问题(134)
从 3 号加油站(索引为 3 处)出发,可获得 4 升汽油。你无法返回 2 号加油站,因为返程需要消耗 4 升汽油,但是你的油箱只有 3 升汽油。你不能从 0 号或 1 号加油站出发,因为没有足够的汽油可以让你行驶到下一个加油站。开往 3 号加油站,你需要消耗 5 升汽油,正好足够你返回到 3 号加油站。开往 2 号加油站,此时油箱有 6 - 4 + 3 = 5 升汽油。开往 0 号加油站,此时油箱有 4 - 3 + 2 = 3 升汽油。开往 1 号加油站,此时油箱有 3 - 3 + 3 = 3 升汽油。
2024-11-05 21:07:46
526
原创 HttpClient
HttpClient 是Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。发送HTTP请求接收响应数据</</</</HttpClient:Http客户端对象类型,使用该类型对象可发起Http请求。HttpClients:可认为是构建器,可创建HttpClient对象。CloseableHttpClient:实现类,实现了HttpClient接口。
2024-10-16 21:49:07
449
原创 Spring Cache基础使用
1.1 介绍1.2 常用注解1.3 入门案例Spring Cache 是一个框架,实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功能。EHCacheCaffeineRedis(常用)</</</</
2024-10-16 21:48:40
912
原创 DTO VO 与 POJO
定义:VO是视图层传的数据的模型,表示值的对象。目的:VO的主要目的是封装一些数据,并将其作为单个不可变实体进行传递和使用,在软件开发中用于在视图层展示和传输数据。目的:DTO的主要目的是在不同层之间传递数据,实现层与层之间的解耦,降低层之间的耦合度,提高代码的可维护性和可读性。定义:PO是持久化对象的简称,与数据库表中的记录相对应的对象。它通常用于数据访问层或持久层,表示数据库中的实体。DTO的属性通常与业务实体对象(如数据库实体)相对应,但可能只包含业务实体的子集,用于满足特定层的数据需求。
2024-09-29 08:58:41
430
原创 Swagger 使用介绍
Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务(它的主要作用是:使得前后端分离开发更加方便,有利于团队协作接口的文档在线自动生成,降低后端开发人员编写接口文档的负担功能测试Spring已经将Swagger纳入自身的标准,建立了Spring-swagger项目,现在叫Springfox。通过在项目中引入Springfox ,即可非常简单快捷的使用Swagger。
2024-09-25 21:23:51
1205
原创 springBoot 异常处理
定义全局异常处理器非常简单,就是定义一个类,在类上加上一个注解@RestControllerAdvice,加上这个注解就代表我们定义了一个全局异常处理器。在全局异常处理器当中,需要定义一个方法来捕获异常,在这个方法上需要加上注解@ExceptionHandler。通过@ExceptionHandler注解当中的value属性来指定我们要捕获的是哪一类型的异常。//处理异常@ExceptionHandler(Exception.class) //指定能够处理的异常类型//打印堆栈中的异常信息。
2024-09-25 17:53:56
311
原创 spring AOP
什么是AOP?AOP英文全称:Aspect Oriented Programming(面向切面编程、面向方面编程),其实说白了,面向切面编程就是面向特定方法编程。AOP的作用:在程序运行期间在不修改源代码的基础上对已有方法进行增强(无侵入性: 解耦)AOP面向切面编程和OOP面向对象编程一样,它们都仅仅是一种编程思想,而动态代理技术是这种思想最主流的实现方式。而Spring的AOP是Spring框架的高级技术,旨在管理bean对象的过程中底层使用动态代理机制,对特定的方法进行编程(功能增强)。
2024-09-24 13:50:22
750
原创 Spring事务
当调用 deptLogService.insert(deptLog) 时,也会创建一个新的事务,那此时,当insert方法运行完毕之后,事务就已经提交了。即使外部的事务出现异常,内部已经提交的事务,也不会回滚了,因为是两个独立的事务。@Transactional注解:我们一般会在业务层当中来控制事务,因为在业务层当中,一个业务功能可能会包含多个数据访问的操作。Propagation.REQUIRES_NEW :不论是否有事务,都创建新事务 ,运行在一个独立的事务中。什么是事务的传播行为呢?
2024-09-24 11:11:29
1445
原创 过滤器Filter 与 拦截器Interceptor
Filter表示过滤器,是 JavaWeb三大组件(Servlet、Filter、Listener)之一。过滤器可以把对资源的请求拦截下来,从而实现一些特殊的功能使用了过滤器之后,要想访问web服务器上的资源,必须先经过滤器,过滤器处理完毕之后,才可以访问对应的资源。过滤器一般完成一些通用的操作,比如:登录校验、统一编码处理、敏感字符处理等。第1步,定义过滤器 :1.定义一个类,实现 Filter 接口,并重写其所有方法。
2024-09-19 21:57:04
855
原创 cookie session 与 JWT
签名的目的就是为了防jwt令牌被篡改,而正是因为jwt令牌最后一个部分数字签名的存在,所以整个jwt 令牌是非常安全可靠的。一旦jwt令牌当中任何一个部分、任何一个字符被篡改了,整个令牌在校验的时候都会失败,所以它是非常安全可靠的。PS:Session 底层是基于Cookie实现的会话跟踪,如果Cookie不可用,则该方案,也就失效了。JWT的组成: (JWT令牌由三个部分组成,三个部分之间使用英文的点来分割)稍后我们再来学习如何来生成jwt令牌,以及如何来校验jwt令牌。
2024-09-19 21:30:38
802
原创 mybaits相关基础
如果需要实现复杂的SQL功能,建议使用XML来配置映射语句,也就是将SQL语句写在XML配置文件中。XML映射文件的名称与Mapper接口名称一致,并且将XML映射文件和Mapper接口放置在相同包下(同包同名)在xml映射文件中配置的SQL,有时可能会存在很多重复的片段,此时就会存在很多冗余的代码。XML映射文件中sql语句的id与Mapper接口中的方法名一致,并保持返回类型一致。:动态的在SQL语句中插入set关键字,并会删掉额外的逗号。标签:就是用于编写select查询语句的。
2024-09-11 22:55:45
1108
原创 lombok 相关基础
Lombok是一个实用的Java类库,可以通过简单的注解来简化和消除一些必须有但显得很臃肿的Java代码。通过注解的形式自动生成构造器、getter/setter、equals、hashcode、toString等方法,并可以自动化生成日志变量,简化java开发、提高效率。注解作用为所有的属性提供get/set方法@ToString会给类自动生成易阅读的 toString 方法根据类所拥有的非静态字段自动重写 equals 方法和 hashCode 方法@Data。
2024-09-11 22:28:57
392
原创 Spring IOCDI相关注解
指定当前要注入的bean对象。在@Qualifier的value属性中,指定注入的bean的名称。@Primary(当存在多个相同类型的Bean注入时,加上@Primary注解,来确定默认的实现)那如果在IOC容器中,存在多个相同类型的bean对象,会出现什么情况呢?是按照bean的名称进行注入。通过name属性指定要注入的bean的名称。进行自动装配的(去IOC容器中找某个类型的对象,然后完成注入操作)面试题 : @Autowird 与 @Resource的区别。@Autowired注解,默认是按照。
2024-09-07 14:50:53
542
原创 spring请求参数获取
通过Servlet中提供的API:HttpServletRequest(请求对象),获取请求的相关信息。2. SpringBoot方式2.1 参数名不一致注意事项:@RequestParam中的required属性默认为true(默认值也是true),代表该请求参数必须传递,如果不传递将报错如果该参数是可选的,可以将required属性设置为false2.2 实体参数在使用简单参数做为数据传递方式时,前端传递了多少个请求参数,后端controller方法中的形参就要书写多少个。如果请求参数
2024-09-06 23:45:00
1051
原创 explain 详解
使用EXPLAIN关键字可以模拟优化器执行SQL语句,分析你的查询语句或是结构的性能瓶颈。在 select 语句之前增加 explain 关键字,MySQL 会在查询上设置一个标记,执行查询会返回执行计划的信息,而不是 执行这条SQL。注意:如果 from 中包含子查询,仍会执行该子查询,将结果放入临时表中。
2022-12-22 19:11:06
345
1
原创 Mysql生成环境常见问题及解决方案
max_connections参数,用来控制一个MySQL实例同时存在的连接数的上限,超过这个值,系统就会拒绝接下来的连接请求,并报错提示“Too many connections”。max_connections参数,用来控制一个MySQL实例同时存在的连接数的上限,超过这个值,系统就会拒绝接下来的连接请求,并报错提示“Too many connections”。有的业务代码会在短时间内先大量申请数据库连接做备用,如果现在数据库确认是被连接行为打挂了,那么一种可能的做法,是让数据库跳过权限验证阶段。
2022-12-13 23:15:50
338
原创 幻读与间隙锁
幻读指的是一个事务在前后两次查询同一个范围的时候,后一次查询看到了前一次查询没有看到的行。幻读的相关说明:在可重复读隔离级别下,普通的查询是快照读,是不会看到别的事务插入的数据的。因此,幻读在“当前读”下才会出现。上面session B的修改结果,被session A之后的select语句用“当前读”看到,不能称为幻读。幻读仅专指“新插入的行”。
2022-12-13 22:08:31
433
原创 简单的sql语句 执行特别慢
为了便于描述,我先构造一个表,基于这个表来说明今天的问题。这个表有两个字段id和c,并且我在里面插入了10万行记录。第一类:查询长时间不返回执行下面的SQL语句一般碰到这种情况的话,大概率是表t被锁住了。接下来分析原因的时候,一般都是首先执行一下show processlist命令,看看当前语句处于什么状态。然后我们再针对每种状态,去分析它们产生的原因、如何复现,以及如何处理。使用 show processlist 命令查看出现这个状态表示的是,现在有一个线程正在表t上请求或者持有MDL写锁,把s
2022-12-06 22:48:00
428
原创 导致性能下降的sql语句
假设你现在维护了一个交易系统,其中交易记录表tradelog包含交易流水号(tradeid)、交易员id(operator)、交易时间(t_modified)等字段。为了便于描述,我们先忽略其他字段。这个表的建表语句如下:假设,现在已经记录了从2016年初到2018年底的所有数据,运营部门有一个需求是,要统计发生在所有年份中7月份的交易记录总数。这个逻辑看上去并不复杂,你的SQL语句可能会这么写:key="t_modified"表示的是,使用了t_modified这个索引;我在测试表数据中插入了10万
2022-12-06 22:26:05
902
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
1021
原创 binlog(归档日志)和redo log(重做日志)
今天我们再从整体的角度去看一下 mysql的binlog(归档日志)和redo log(重做日志)。先说一下在两阶段提交的不同瞬间,MySQL如果发生异常重启,是怎么保证数据完整性的?如果在图中时刻A的地方,也就是写入redo log 处于prepare阶段之后、写binlog之前,发生了崩溃(crash),由于此时binlog还没写,redo log也还没提交,所以崩溃恢复的时候,这个事务会回滚。这时候,binlog还没写,所以也不会传到备库。到这里,大家都可以理解。
2022-12-02 22:40:06
1033
原创 MySQL表空间回收
今天,我就和你聊聊数据库表的空间回收,为什么简单地删除表数据达不到表空间回收的效果,然后再和你介绍正确回收空间的方法。我们要彻底搞明白这个问题的话,就要从数据删除流程说起了。
2022-11-30 23:19:13
1426
原创 如何给字符串字段加索引
当要给字符串创建前缀索引时,有什么方法能够确定我应该使用多长的前缀呢?我们可以通过统计索引上有多少个不同的值来判断要使用多长的前缀。
2022-11-28 22:22:51
1052
原创 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
1805
原创 普通索引,唯一索引与change buffer
相信大家都了解了唯一索引和普通索引的区别。今天我们就继续来谈谈,在不同的业务场景下,应该选择普通索引,还是唯一索引?假设你在维护一个市民系统,每个人都有一个唯一的身份证号,而且业务代码已经保证了不会写入两个重复的身份证号。由于身份证号字段比较大,我不建议你把身份证号当做主键,那么现在你有两个选择,要么给id_card字段创建唯一索引,要么创建一个普通索引。如果业务代码已经保证了不会写入重复的身份证号,那么这两个选择逻辑上都是正确的。从性能的角度考虑,你选择唯一索引还是普通索引呢?选择的依据是什么呢?
2022-11-23 23:46:51
826
原创 MySql 全局锁 表级锁 行锁
如果执行FTWRL命令之后由于客户端发生异常断开,那么MySQL会自动释放这个全局锁,整个库回到可以正常更新的状态。而将整个库设置为readonly之后,如果客户端发生异常,则数据库就会一直保持readonly状态,这样会导致整个库长时间处于不可写状态,风险较高。官方自带的逻辑备份工具mysqldump,当mysqldump使用参数–single-transaction的时候,会启动一个事务,确保拿到一致性视图。MDL 会直到事务提交才会释放,在做表结构变更的时候,一定要小心不要导致锁住线上查询和更新。
2022-11-18 22:04:42
1030
原创 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
851
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人