- 博客(820)
- 资源 (26)
- 收藏
- 关注
转载 Vue 中的Store状态管理
在简单的 Vue 应用里,我们可以通过 props 把数据从父组件传递到子组件,也能用事件把数据从子组件传递回父组件。比如,一个深埋在组件层级深处的组件需要获取一个跟它隔了好几层的组件的数据,这时候用 props 一层一层往下传就很不方便。Vue 的 Store 是一个非常强大的工具,它可以帮助我们轻松地管理应用的状态。在这个仓库里,存放着应用中各种各样的数据,这些数据就是应用的状态。比如说,你正在做一个电商网站的前端,Store 里就可以存放购物车里的商品数量、用户的登录状态、商品的分类信息等等。
2025-03-26 17:01:05
15
原创 Linux 系统不同分类的操作命令区别
基于 Red Hat 的发行版:使用yum或dnf进行包管理,systemctl进行服务管理。基于 Debian 的发行版:使用apt-get进行包管理,systemctl进行服务管理。基于 Arch 的发行版:使用pacman进行包管理,systemctl进行服务管理。:使用apk进行包管理,rc-service进行服务管理。
2025-03-05 10:07:39
872
原创 在Logback中拦截和修改日志
假设你记录了某个用户的某个id号数百次,它分散在整个应用程序中,现在你有了一个新的要求,要求你必须加密这个id号。当然,你足够聪明,可以为此任务编写一个拦截器,而不是手动查找和更改必要的日志。在这里,为了简单起见,我使用info作为日志级别,但如果你不想更改日志级别,你可以很容易地检查即将到来的日志具有哪个级别并使用该级别。事实上,Logback并没有提供修改日志的直接方法,但有一种解决方法可以通过使用过滤器来实现我们的目标,即使它看起来有点黑客。DENY,然后使用更改的对象重新登录。
2025-02-20 17:39:46
545
原创 linux系统awk命令使用详解
Pattern是Awk命令的匹配模式,用于匹配输入数据中的文本。如果Pattern匹配成功,则执行Action,Action是Awk命令的动作,用于处理输入数据。如果没有指定文件名,则Awk命令会读取标准输入流中的数据。在本篇文章中,我们将详细讲解Awk的使用方法,帮助读者了解这个工具的基本原理和常见用法。Awk命令还支持使用变量。例如,我们可以定义一个变量,然后在命令中使用它。例如,以下命令将定义一个名为num的变量,并将其设置为10。这个命令会输出filename文件中的第二列数据,以逗号作为分隔符。
2025-02-17 16:41:01
272
原创 数据库覆盖索引和回表
索引是高效找到行的一个方法,但是一般数据库也能使用索引找到一个列的数据,因此它 不必读取整个行。毕竟索引叶子节点存储了它们索引的数据;当能通过读取索引就可以得到想要的数 据,那就不需要读取行了。一个索引包含了满足查询结果的数据就叫做覆盖索引。非聚簇复合索引的一种形式,它包括在查询里的SELECTJOIN和WHERE子句用到的所有列 (即建索引的字段正好是覆盖查询条件中所涉及的字段)。简单说就是, 索引列+主键 包含SELECT到FROM之间查询的列。覆盖索引长什么样子。索引列+主键#斯降之前的索引。
2025-02-11 09:42:05
609
转载 @TransactionalEventListener的使用和实现原理
很明显,这里的TransactionSynchronization接口只是抽象了一些行为,用于事务事件发生时触发,这些行为在Spring事务中提供了内在支持,即在相应的事务事件时,其会获取当前所有注册的TransactionSynchronization对象,然后调用其相应的方法。平时我们在完成某些数据的入库后,发布了一个异步事件,此时使用的是@EventListener,然后在这个事件中,又去对刚才入库的数据进行查询,从而完成后续的操作。等时候才去进行Event的处理,来达到事务同步的目的。
2025-02-09 18:00:19
131
转载 索引优化全攻略:提升排序、GROUP BY与分页性能
索引是高效找到行的一个方法,但是一般数据库也能使用索引找到一个列的数据,因此它 不必读取整个行。毕竟索引叶子节点存储了它们索引的数据;当能通过读取索引就可以得到想要的数 据,那就不需要读取行了。一个索引包含了满足查询结果的数据就叫做覆盖索引。非聚簇复合索引的一种形式,它包括在查询里的SELECTJOIN和WHERE子句用到的所有列 (即建索引的字段正好是覆盖查询条件中所涉及的字段)。简单说就是, 索引列+主键 包含SELECT到FROM之间查询的列。覆盖索引长什么样子。索引列+主键#斯降之前的索引。
2025-02-09 10:48:39
23
原创 typescript .d.ts 中 interface用法
通过定义接口,可以确保对象的结构符合预期,同时提高代码的可读性和可维护性。),可以为JavaScript代码或第三方库提供清晰的类型信息,从而增强代码的可读性和可维护性。:如果第三方库没有自带类型声明,可以通过接口来定义其API的类型。:接口可以被扩展,也可以与其他类型结合使用,提供了强大的灵活性。:通过接口,可以确保对象的结构符合预期,避免类型错误。如果对象的属性是动态的,可以使用索引签名来定义接口。:如果对象的属性是动态的,可以使用索引签名来定义。:接口可以定义对象的结构,包括属性和方法的类型。
2025-01-22 18:02:16
320
原创 typescript 书写.d.ts文件
文件是一种特殊的声明文件,用于定义类型信息,帮助TypeScript编译器理解JavaScript代码或其他库的类型结构。这些文件通常用于为没有类型信息的JavaScript代码或第三方库提供类型声明,从而让TypeScript能够进行类型检查和提供更好的代码提示。文件,可以为JavaScript代码或第三方库补充类型信息,从而让TypeScript更好地理解代码结构,提供类型检查和代码提示。文件是TypeScript中用于提供类型声明的重要工具。文件,可以扩展或覆盖现有的类型声明。
2025-01-22 17:53:31
426
转载 Vue中使用debugger在chrome谷歌浏览器中失效问题
问题描述:我在vscode或idea的vue代码中,加入debugger代码调式,始终不生效,烦得很,清理浏览器缓存,重启项目和电脑,都没啥用,最终找到了解决办法。这两种办法本人都试过,都是可行的。这个在浏览器上设置也是可行的,我个人比较建议这个办法,谷歌浏览器-更多工具-开发者工具-设置-Ignoer List-取消勾选/node_modules/|/bower_components/即可。3)找到Ignoer List-取消勾选/node_modules/|/bower_components/即可。
2024-12-26 10:29:33
369
转载 Java实现inputstream流的复制
在 Java 中,通常情况下不建议对同一个InputStream对象直接使用两次,因为InputStream是一次性读取的流,读取一次后,流中的位置指针会移动到末尾,再次读取可能无法获取到预期的数据。“InputStream就类比成一个杯子,杯子里的水就像InputStream里的数据,你把杯子里的水拿出来了,杯子的水就没有了,InputStream也是同样的道理。其实像FileInputStream这样的文件流,要实现重复使用可能也并不是很难,利用缓存什么的应该能做到(大文件读取就悲剧了,呵呵呵)。
2024-11-11 16:30:44
399
原创 解决:Loading class `com.mysql.jdbc.Driver‘. This is deprecated
问题:Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.
2024-11-07 16:40:34
1874
转载 Java的ZipFile报错:Caused by: java.util.zip.ZipException: invalid CEN header (bad entry name)
Windows系统上跑Java的ZipFile报错:Caused by: java.util.zip.ZipException: invalid CEN header (bad entry name)
2024-11-06 16:25:09
471
转载 springmvc配置allowMultiQueries批量执行多个SQL,解决multi-statement not allow问题
今天尝试使用springmvc使用mybatis一次执行多个SQL,首先在jdbc的url中配置了allowMultiQueries=true,但是报错multi-statement not allow。废话不多说,直接上配置-- 1. 主库数据源 : DriverManagerDataSource -->-- 超过时间限制是否回收,这块也能测试出未关闭连接的时候报错位置 -->-- 超时时间;单位为秒。180秒=3分钟 -->
2024-10-12 10:08:16
404
1
原创 常用TS学习总结
/------------ 断言成string类型。//---------- jsx中使用as语法。// 类似 for...in循环属性名,然后用索引访问操作符得到---属性的类型。//---------------------- 是一个any类型。if ((<Fish>pet2).swim) { //---------------- 断言成Fish类型,就肯定有 swim 属性。if (pet.swim) { //-------------------- 报错,因为pet可能没有swim属性。
2024-09-18 14:45:40
1010
转载 SpringBoot源码解读与原理分析(四十一)SpringBoot 2.3新特性:优雅停机
随后该方法会提取出嵌入式Tomcat中所有Engine中的所有Container,每隔50s检查一次Container是否停止,当所有Context中的线程全部执行完毕,即Context全部停止时,优雅停机流程执行完毕。“优雅停机”的新特性,是指在SpringBoot应用被关闭时(注意此处的关闭可以是kill -2,但不能是kill -9),会预留一小段时间,使应用内部的业务线程执行完毕。通过示例展示了如何配置和测试优雅停机,并详细剖析了嵌入式Tomcat的优雅停机实现过程。
2024-09-10 14:41:02
141
转载 Typescript类静态部分与实例部分的区别-详解
因此我们假设这么一个简单的应用场景:我们作为一个老师,要录入每个学生的id(id)和年龄(age)(即创建大量的 student对象,对象中有id和age两个字段),现在我们手上已有的条件是:班级id(classId),学生学号(code),学生年龄(age),且学生id的生成规则为:班级id后接学生学号。因此在使用class的时候,我们不仅仅是要约束最终创建的实例,更重要的是要约束类中的constructor构造器,也就是 类的静态部分。constructor存在于类的静态部分,所以不在检查的范围内。
2024-09-03 09:53:59
249
转载 TypeScript(一)TypeScript下载安装,编译运行的三种方式:tsc命令行/webpack搭建环境/tsc-node库
文章介绍了TypeScript作为JavaScript的超集,提供类型系统,并演示了如何搭建TypeScript环境,包括使用tsc编译器、通过Webpack自动化构建流程,以及配置ts-node直接运行TypeScript代码。-y 的含义:yes的意思,在init的时候省去了敲回车的步骤,生成的默认的package.json。在进行TypeScript开发时,我们会针对TypeScript进行相关的配置,而这些配置信息是存放在一个tsconfig.json文件中的。
2024-08-28 11:38:02
551
原创 Mybatis-Plus 的批量保存saveBatch 性能分析
sql/*** @date 2024年03月13日 16:34*//*** 真正的批量插入* @return*//*** @date 2024年03月13日 15:41*/@Bean。
2024-08-22 11:09:40
2557
原创 如何在 GitLab 中恢复已删除的分支
可以看到我们在恢复的过程中是根据提交message来找到,当我们开发的时候分支较多并且有bug修改的分支时我们不好定位提交号,我们示例中的message写的比较随意,是反例,家人们切勿模仿;然而,有时候会发生意外,例如代码误合、错误的删除等情况,导致重要的开发分支本地和远程不慎被删除。这样你就有了一个新的分支,该分支指向你想要恢复的提交,并且可以正常推送到远程仓库。dev_xj:你的分支名,可以和之前删除的一样,也可以重新命个名 d9244f1: 最后一次commit 的提交号或者引用号。
2024-08-20 14:14:05
2258
转载 MyBatis-@param注解详解
注意:采用#{}的方式把@Param注解括号内的参数进行引用(括号内参数对应的是形参)xml映射的查询字段应该为@Param注解括号内的参数例如上面查询参数应该为id而不是userId,如果xml映射的查询字段不与@Param注解的形参一样则会出现如下异常。paramn,bean时sql语句使用param1.属性值…1.如果接口方法有一个或多个参数,并且使用了@Param注解,若注解的为单一属性则sql语句中的参数用注解的value值,若为bean则sql语句中使用的参数注解的value.bean属性值。
2024-08-15 10:14:28
1231
原创 Mybatis中动态SQL详解
使用批量插入执行的SQL语句应该等价于:1),(?),(?),(?在使用foreach的时候最关键的也是最容易出错的就是collection属性,该属性是必须指定的,但是在不同情况 下,该属性的值是不一样的,主要有一下3种情况:1.如果传入的是单参数且参数类型是一个List的时候,collection属性值为list2.如果传入的是单参数且参数类型是一个array数组的时候,collection的属性值为array。
2024-08-15 09:54:59
1023
转载 Stream原理与执行流程探析
只有实现了Collection接口的类才能创建流,所以Map并不能创建流,List与Set这种单列集合才可创建流。上述代码使用stream()方法创建流,也可使用Stream.of()创建任何数量引元的流,或是Array.stream(array,from,to)从数组中from到to的位置创建输入源。stream()运行结果。
2024-07-29 10:36:10
75
转载 Spring系列之集成Druid连接池及监控配置
前一篇文章我们熟悉了HikariCP连接池,也了解到它的性能很高,今天我们讲一下另一款比较受欢迎的连接池:Druid,这是阿里开源的一款数据库连接池,它官网上声称:为监控而生!他可以实现页面监控,看到SQL的执行次数、时间和慢SQL信息,也可以对数据库密码信息进行加密,也可以对监控结果进行日志的记录,以及可以实现对敏感操作实现开关,杜绝SQL注入,下面我们详细讲一下它如何与Spring集成,并且顺便了解一下它的监控的配置。Spring集成Druid。
2024-06-25 17:10:04
1912
转载 SpringIoc 容器之 Aware
Aware 是 Spring 提供的一个标记超接口,指示 bean 有资格通过回调样式的方法由 Spring 容器通知特定的框架对象,以获取到容器中特有对象的实例的方法之一。实际的方法签名由各个子接口确定,但通常只包含一个接受单个参数的 void 返回方法。
2024-06-24 16:22:01
76
原创 结构化、半结构化和非结构化数据,TS结构类型
比如,如果字段不固定,利用关系型数据库也是比较困难的,有人会说,需要的时候加个字段就可以了,这样的方法也不是不可以,但在实际运用中每次都进行反复的表结构变更是非常痛苦的,这也容易导致后台接口从数据库取数据出错。从上面的例子中,属性的顺序是不重要的,不同的半结构化数据的属性的个数是不一定一样的。:指关系模型数据,即以关系数据库表形式管理的数据,结合到典型场景中更容易理解,比如企业ERP、OA、HR里的数据。:指非关系模型的、有基本固定结构模式的数据,例如日志文件、XML文档、JSON文档、E-mail等;
2024-05-22 10:27:40
1754
转载 Spring Authorization Server的使用
既然涉及到签名,就涉及到签名算法,对称加密还是非对称加密,那么就需要加密的 密钥或者公私钥对。不存在签名的JWT是不安全的,存在签名的JWT是不可窜改的。,目前已经到了 0.1.2 的版本,不过该项目还是一个实验性的项目,不可在生产环境中使用,此处来使用项目搭建一个简单的授权服务器。没有用户的参与,一般可以用于内部系统之间的访问,或者系统间不需要用户的参与。的创建,这个张三是授权服务器的用户,此处即QQ服务器的用户。此模式下,没有用户的参与,只有客户端和授权服务器之间的参与。
2024-05-21 18:10:02
1591
转载 Java日志通关(二) - Slf4j+Logback 整合及排包
从前边的版本兼容性我们可以知道:如果使用JDK 8,建议选择Slf4j 2.0 + Logback 1.3;如果使用JDK 11及以上,建议选择Slf4j 2.0 + Logback 1.5;但还没完,Spring Boot的日志系统[8]对Slf4j和Logback又有额外的版本要求。我们放在下一节讨论这个问题。三、适配 Spring BootSpring Boot通过spring-boot-starter-logging[9]包直接依赖了Logback(然后再间接依赖了 Slf4j),它通过。
2024-05-17 17:24:01
1189
原创 spring 约定优于配置 spring boot约定大于配置
就会自动的帮我们导入 SpringMVC 的相关依赖(包括 Json 支持的 Jackson 和数据校验的 Hibernate Validator)和一个内置的 Tomcat 容器,这使得在开发阶段可以直接通过 main 方法或是 JAR 包独立运行一个 WEB 项目。当你觉得不合适的时候,可以用更少的改动,满足你的需要。约定优于配置,也有很多人解读为:约定大于配置,约定好于配置,习惯大于配置等。约定优于配置也就是说:系统,类库,框架应该提供有合理的默认值,而非要求提供不必要的配置。
2024-05-15 14:00:36
589
转载 oauth2.0授权码模式详解
项目结构如下:AuthzController:获取授权码 (resource owner)TokenController:获得令牌 (authorization server)ResourceController:资源服务 (resource server)ClientController:客户端 (client)前三个Controller相前于服务端 最后一个为客户端。
2024-05-15 10:12:46
431
原创 基于JWT实现的Token认证方案
服务器的受保护路由将检查授权头中是否存在有效的JWT,如果存在,则允许用户访问受保护的资源。4、JWT的最大缺点是服务器不保存会话状态,所以在使用期间不可能取消令牌或更改令牌的权限。签名用于验证消息在整个过程中没有更改,并且对于使用私钥进行签名的令牌,它还可以验证JWT的发送者是它所说的真实身份。一旦用户登录,每个后续请求将包括JWT,从而允许用户访问该令牌允许的路由,服务和资源。请注意:使用签名的Token,Token中包含的所有信息都将向用户或其他方公开,即使他们无法更改它。
2024-04-29 16:32:49
1123
转载 Spring Aware接口执行时机源码深度解读
Spring中有这样一种标记接口的存在Aware,只要是spring管理的bean实现了Aware接口,那么spring就会在bean创建的某个时机将相应的资源注入到该spring bean中,比如ApplicationContextAware, 会将spring 应用上下文ApplicationContext自动注入到bean中。
2024-04-25 17:14:49
185
原创 ResourceBundleMessageSource 和 ReloadableResourceBundleMessageSource的区别
3).小结:ResourceBundleMessageSource从classloader中加载资源文件,可以找到,ReloadableResourceBundleMessageSource加载时,默认使用DefaultResourceLoader,他会先判断资源path是否带有classpath:前缀,如果有,用 ClassPathResource去加载资源文件,如果没有试着用文件协议的url去访问,再没有就在contextPath即WEB-INF下查找。
2024-04-17 15:15:50
603
转载 Spring Cloud LoadBalancer
本模式中,在向前发送请求之前更新所选服务实例(如果原始请求cookie中的服务实例不可用,则该服务实例可能与原始请求cookie中的服务实例不同)非常有用。定期的验证这些服务实例是否存活,然后只返回健康的服务实例,除非一个健康的服务实例都没有,那么它就会返回所有获取到的服务实例。来修改该名称),如果找到一个hint请求头,就会用该请求头的hint值来筛选服务实例。设置的hint值来筛选请求实例。在这种模式中,可以设置LoadBalancer优先选择先前选择过的服务实例(如果该实例可用的话)。
2024-04-10 11:08:12
921
转载 mybatis-plus的使用
Mybatis-Plus(简称MP)是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生。这是官方给的定义,关于mybatis-plus的更多介绍及特性,可以参考mybatis-plus官网。那么它是怎么增强的呢?其实就是它已经封装好了一些crud方法,我们不需要再写xml了,直接调用这些方法就行,就类似于JPA。
2024-04-08 14:43:37
536
转载 JVM 原理三:编译期常量与运行期常量的区别及数组创建本质分析
我们用的final是一个字面量“hello world”,这次我们改一下使用UUID为常量赋值,注意:UUID是多少只有在运行期间才会被确定。对于数组来说,JavaDoc经常讲构成数组的元素称为Component,实际上就是将数组降低一个维度后的类型。newarray : 表示创建一个指定的原始类型(如int、float、char等)的数组,并将其压入栈顶。这时的程序运行时,会导致主动使用这个常量所在的类,显然会导致这个类被初始化。当一个常量的值并非编译期可以确定的,那么其值就不会被放到调用类的常量池中,
2024-04-08 08:55:41
72
转载 表单身份验证概述
在上一篇教程中 ,我们讨论了ASP.NET 提供的各种类型的身份验证、授权和用户帐户。在本教程中,我们将从讨论转向实现,特别地,我们将探讨表单身份验证的实现。我们在本教程中开始构建的Web应用程序将在后续的教程中逐步完善,从简单的表单身份验证到成员资格和角色。本文首先深入探讨表单身份验证流程,我们在前一教程中就接触过该主题。然后,我们将创建一个ASP.NET网站,通过它来阐述表单身份验证的各个概念。
2024-03-29 16:43:07
125
转载 Spring-Security-OAuth2架构及源码浅析
Spring Security OAuth2架构Spring Security OAuth2是一个基于OAuth2封装的一个类库,它提供了构建和Client三种Spring应用程序角色所需要的功能。需要与和提供的功能协同工作,在使用构建和Client的情况下,的整体架构图如下:1.资源拥有者通过UserAgent访问client,在授权允许访问授权端点的情况下,会创建OAuth2认证的REST请求,指示UserAgent重定向到的授权端点。2.UserAgent访问的授权端点的authorize。
2024-03-25 10:44:13
367
rest webservice开发接口所jar(javax.ws.rs.jar)
2016-09-30
instantclient
2014-10-22
WCFSample基于net.tcp
2012-12-09
WCFCallBackDaemon
2012-12-09
ActiveSyncsetupchs
2010-04-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人