- 博客(71)
- 收藏
- 关注
原创 windows下tp5创建定时任务
4、 Windows键+R,输入compmgmt.2、cmd进入项目根目录测试php think。1、创建定时任务(自定义命令行可参考官网。3、新建一个task.bat 文件来运行。自己选择需要触发的时间。,调出计算机管理窗口。
2024-09-25 11:02:54 419
原创 fastadmin 清除插件缓存报错
看到了symfony/var-exporter 要求 PHP版本 >= 8.1。通过 命令 composer show --tree。将php升级到8.1就可以了。
2024-09-06 16:53:15 652
原创 tp5php7.4配置sqlserver问题汇总
链接:https://pan.baidu.com/s/1zrIV8VWQZM9miLpyH01Aww?链接:https://pan.baidu.com/s/1auhd9gpBdjpduqqxeKEMJw?我用的navicat12 安装包里有sqlserver的驱动,点击安装即可。通过我的分享链接复制自己需要的dll到php的ext下。通过百度网盘分享的文件:msodbcsql.msi。通过百度网盘分享的文件:sqlserver。安装17版本的18不兼容ODBC驱动程序。先修改database.php文件。
2024-08-21 16:56:44 316
原创 XXL-JOB
XXL-JOB的运行原理和架构如图::我们的服务引入一个XXL-JOB的依赖,就可以通过配置创建一个执行器。负责与XXL-JOB调度中心交互,执行本地任务。:一个独立服务,负责管理执行器、管理任务、任务执行的调度、任务结果和日志收集。部署调度中心如果要自己部署,分为两步:运行初始化SQL,创建数据库表利用Docker命令,创建并运行容器说明:xxl_job_lock:任务调度锁表;xxl_job_group:执行器信息表,维护任务执行器信息;
2024-04-14 15:18:07 933
原创 部署es集群
我们会在单机上利用docker容器运行多个es实例来模拟es集群。不过生产环境推荐大家每一台服务节点仅部署一个es的实例。部署es集群可以直接使用docker-compose来完成,但这要求你的Linux虚拟机至少有的内存空间。
2024-03-22 22:20:55 405
原创 elasticsearch数据聚合
默认的拼音分词器会将每个汉字单独分为拼音,而我们希望的是每个词条形成一组拼音,需要对拼音分词器做个性化定制,形成自定义分词器。elasticsearch中分词器(analyzer)的组成包含三部分:character filters:在tokenizer之前对文本进行处理。例如删除字符、替换字符tokenizer:将文本按照一定的规则切割成词条(term)。例如keyword,就是不分词;还有ik_smarttokenizer filter:将tokenizer输出的词条做进一步处理。
2024-03-22 21:52:47 1036 1
原创 elasticsearch的数据搜索
match和multi_match的区别是什么?match:根据一个字段查询multi_match:根据多个字段查询,参与查询字段越多,查询性能越差精确查询常见的有哪些?term查询:根据词条精确匹配,一般搜索keyword类型、数值类型、布尔类型、日期类型字段range查询:根据数值范围查询,可以是数值、日期的范围查询的DSL是一个大的JSON对象,包含下列属性:query:查询条件from和size:分页条件sort:排序条件highlight:高亮条件。
2024-03-22 17:23:22 1148
原创 Java HighLevel Rest Client
JavaRestClient操作elasticsearch的流程基本类似。核心是client.indices()方法来获取索引库的操作对象。索引库操作的基本步骤:初始化RestHighLevelClient创建XxxIndexRequest。XXX是Create、Get、Delete准备DSL( Create时需要,其它是无参)发送请求。调用RestHighLevelClient#indices().xxx()方法,xxx是create、exists、delete。
2024-03-22 14:50:35 892
原创 RabbitMQ进阶
每个RabbitTemplate只能配置一个ReturnCallback,因此需要在项目加载时配置:@Slf4j@Override// 获取RabbitTemplate// 设置ReturnCallback// 投递失败,记录日志log.info("消息发送失败,应答码{},原因{},交换机{},路由键{},消息{}",// 如果有业务需要,可以重发消息});ConfirmCallback可以在发送消息时指定,因为每个业务处理confirm成功或失败的逻辑不一定相同。// 1.消息体。
2024-03-16 15:32:05 1031
原创 Spring底层核心原理解析
对于这三行代码应该,大部分同学应该都是比较熟悉,这是学习Spring的hello world。光看这三行代码,其实,也不能理解为什么需要ClassPathXmlApplicationContext和getBean()方法,随着课程的深入将会改变你此时的观念,而对于上面的这些疑问,也会随着课程深入逐步得到解决。对于这三行代码,你现在可以认为:如果你要用Spring,你就得这么写。就像你要用Mybatis,你就得写各种Mapper接口。
2024-03-16 02:58:35 708 1
原创 SpringMVC启动与请求处理流程解析
实现了Controller接口的Bean对象实现了HttpRequestHandler接口的Bean对象添加了@RequestMapping注解的方法一个HandlerFunction对象@Override@Override@Component@Autowired@Bean.build();HandlerMapping负责去寻找Handler,并且保存路径和Handler之间的映射关系。
2024-03-16 02:18:37 1943
原创 c++实现数组
提供对应的拷贝构造函数以及operator=防止浅拷贝问题;可以对内置数据类型以及自定义数据类型的数据进行存储;提供尾插法和尾删法对数组中的数据进行增加和删除;可以获取数组中当前元素个数和数组的容量。可以通过下标的方式访问数组中的元素;构造函数中可以传入数组的容量;将数组中的数据存储到堆区;
2024-03-14 18:01:50 163
原创 c++指针的定义和使用
特点:指针的指向可以修改,但是指针指向的值不可以修改;指针前加*代表解引用,找到指针指向的内存中的数据。在32位操作系统下,指针是占4个字节的空间大小。特点:指针的指向不可以改,指针指向的值可以改;特点:指针的指向和指针指向的值都不可以修改。可以通过解引用的方式找到指针指向的内存。3、const即修饰指针,又修饰常量。:指针变量指向内存中编号为0的空间。:空指针指向的内存是不可以访问的。1、const修饰指针:常量指针。2、const修饰常量:指针常量。:指针变量指向的非法的内存空间。
2024-03-13 15:17:03 549
原创 Docker MySQL 报 2059 错误:认证插件 ‘caching_sha2_password‘ 无法加载
使用docker部署的mysql8.0.29再使用Navicat连接myslq报错Authentication plugin ‘xxxxxxx’ cannot be loaded:XXXXXX (无法加载身份验证插件)原因:mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password。docker exec -it 容器名称 bash。2、选择mysql数据库。解决办法:更改加密规则。
2024-03-09 16:11:16 832
原创 RabbitMQ
基本消息队列的消息发送流程:建立connection创建channel利用channel声明队列利用channel向队列发送消息基本消息队列的消息接收流程:建立connection创建channel利用channel声明队列定义consumer的消费行为handleDelivery()利用channel将消费者与队列绑定Work模型的使用:多个消费者绑定到一个队列,同一条消息只会被一个消费者处理通过设置prefetch来控制消费者预取的消息数量。
2024-03-08 01:58:40 1226
原创 Docker实用篇
数据卷(volume)是一个虚拟目录,指向宿主机文件系统中的某个目录。一旦完成数据卷挂载,对容器的一切操作都会作用在数据卷对应的宿主机目录了。这样,我们操作宿主机的/var/lib/docker/volumes/html目录,就等于操作容器内的/usr/share/nginx/html目录了常见的镜像在DockerHub就能找到,但是我们自己写的项目就必须自己构建镜像了。而要自定义镜像,就必须先了解镜像的结构才行。
2024-03-07 22:12:52 1078
原创 CentOS安装Docker
Docker CE 支持 64 位版本 CentOS 7,并且要求内核版本不低于 3.10, CentOS 7 满足最低内核的要求,所以我们在CentOS 7安装Docker。
2024-03-07 18:08:53 493
原创 Linux安装
方式概述场景物理机安装直接将操作系统安装到服务器硬件上企业开发中,我们使用的服务器基本都是采用这种方式虚拟机安装通过虚拟机软件安装我们在学习阶段,没有自己服务器,而我们又需要学Linux,就可以安装在虚拟机上虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能、运行在完全隔离环境中的完整计算机系统。常用虚拟机软件:VMWareVirtualBoxQemu那么我们就可以在课程中将Linux操作系统安装在虚拟机中,我们课上选择的虚拟机软件是VMware。
2024-03-06 15:18:41 1003
原创 Gateway服务网关
过滤器的作用是什么?① 对路由的请求或响应做加工处理,比如添加请求头② 配置在路由下的过滤器只对当前路由的请求生效defaultFilters的作用是什么?① 对所有路由都生效的过滤器需求:定义全局过滤器,拦截请求,判断请求的参数是否满足下面条件:参数中是否有authorization,authorization参数值是否为admin如果同时满足则放行,否则拦截实现:在gateway中定义一个过滤器@Order(-1)@Component@Override// 1.获取请求参数。
2024-03-06 01:22:16 1044
原创 Feign远程调用
使用Feign的步骤:① 引入依赖② 添加@EnableFeignClients注解③ 编写FeignClient接口④ 使用FeignClient中定义的方法代替RestTemplate类型作用说明修改日志级别包含四种不同的级别:NONE、BASIC、HEADERS、FULL响应结果的解析器http远程调用的结果做解析,例如解析json字符串为java对象请求参数编码将请求参数编码,便于通过http请求发送支持的注解格式默认是SpringMVC的注解失败重试机制。
2024-03-06 01:09:25 632
原创 Nacos集群搭建
官方给出的Nacos集群图:其中包含3个nacos节点,然后一个负载均衡器代理3个Nacos。这里负载均衡器可以使用nginx。我们计划的集群结构:三个nacos节点的地址:(由于没有这么多服务器就使用自己的电脑,但是切记一定要改端口)此处的IP是你自己服务的IP。
2024-03-06 00:56:46 855
原创 Nacos
在Nacos的GitHub页面,提供有下载链接,可以下载编译好的Nacos服务端或者源代码:如图:1.4.1.版本的Nacos,安装包 链接:https://pan.baidu.com/s/1jvmhPBkZqFfGNaGjNhibYQ?pwd=o29b提取码:o29b。
2024-03-03 20:01:05 1070
原创 Eureka注册中心
SpringCloudRibbon的底层采用了一个拦截器,拦截了RestTemplate发出的请求,对地址做了修改。用一幅图来总结一下:基本流程如下:拦截我们的RestTemplate请求RibbonLoadBalancerClient会从请求url中获取服务名称,也就是user-serviceDynamicServerListLoadBalancer根据user-service到eureka拉取服务列表eureka返回列表,localhost:8081、localhost:8082。
2024-03-03 14:01:07 1020
原创 SpringBoot原理
SpringBoot的自动配置就是当Spring容器启动后,一些配置类、bean对象就自动存入到了IOC容器中,不需要我们手动去声明,从而简化了开发,省去了繁琐的配置操作。比如:我们要进行事务管理、要进行AOP程序的开发,此时就不需要我们再去手动的声明这些bean对象了,我们直接使用就可以从而大大的简化程序的开发,省去了繁琐的配置操作。
2024-02-28 16:02:16 750
原创 springboot 配置优先级
在SpringBoot项目当中,我们要想配置一个属性,可以通过这三种方式当中的任意一种来配置都可以,那么如果项目中同时存在这三种配置文件,且都配置了同一个属性,如:Tomcat端口号,到底哪一份配置文件生效呢?在SpringBoot项目当中,常见的属性配置方式有5种, 3种配置文件,加上2种外部属性的配置(Java系统属性、命令行参数)。优先级: 命令行参数 > 系统属性参数 > properties参数 > yml参数 > yaml参数。Java系统属性配置 (格式: -Dkey=value)
2024-02-28 11:55:37 390
原创 AOP详解
1、AOP英文全称:Aspect Oriented Programming(面向切面编程、面向方面编程),其实说白了,面向切面编程就是面向特定方法编程。2、AOP的作用:在程序运行期间在不修改源代码的基础上对已有方法进行增强(无侵入性: 解耦)。AOP的优势:(1)减少重复代码(2)提高开发效率(3)维护方便。
2024-02-28 11:05:44 846
原创 JWT登录
由于我用的jdk11遇到的问题java.lang.ClassNotFoundException:javax.xml.bind.DatatypeConverter。拦截范围不同:过滤器Filter会拦截所有资源,而Interceptor只会拦截Spring环境中的资源;接口规范不同:过滤器需要实现Filter接口,而拦截器需要实现HandlerInterceptor接口;登录Interceptor拦截器进行拦截判断是否有令牌。上面代码就是编写的jwt生成和解析的工具类。
2024-02-27 22:09:38 297
原创 CSRF靶场实战
后台没做 CSRF token,同时也是通过 GET 请求来提交修改信息,我们拿到这个,修改一下,然后让 allen 点击就好,我们构造的 URL 中把地址 add 改为 hacker。
2024-02-25 16:11:21 719
原创 xss靶场实战(xss-labs-master靶场)
,使用链接标签中的javascript:伪协议来执行 JS 代码,点击插入的链接便会弹窗。修改 url 地址中的name=<script>alert(1)
2024-02-25 13:17:45 1215
原创 Spring面试题总结
在一个方法上加了@Transactional注解后,Spring会基于这个类生成一个代理对象,会将这个代理对象作为bean,当在使用这个代理对象的方法时,如果这个方法上存在@Transactional注解,那么代理逻辑会先把事务的自动提交设置为false,然后再去执行原本的业务逻辑方法,如果执行业务逻辑方法没有出现异常,那么代理逻辑中就会将事务进行提交,如果执行业务逻辑方法出现了异常,那么则会将事务进行回滚。一般情况下,在织入切面时,AOP容器会为目标对象创建动态的创建一个代理对象。
2024-02-25 00:10:00 823
原创 Mysql 8.0新特性详解
索引隐藏只是不可见,但是数据库后台还是会维护隐藏索引的,在查询时优化器不使用该索引,即使用force index,优化器也不会使用该索引,同时优化器也不会报索引不存在的错误,因为索引仍然真实存在,必要时,也可以把隐藏索引快速恢复成可见。软删除就可以使用隐藏索引,比如我们觉得某个索引没用了,删除后发现这个索引在某些时候还是有用的,于是又得把这个索引加回来,如果表数据量很大的话,这种操作耗费时间是很多的,成本很高,这时,我们可以将索引先设置为隐藏索引,等到真的确认索引没用了再删除。
2024-02-20 22:13:15 1105
原创 Innodb底层原理与Mysql日志机制深入剖析
注意:如果要恢复大量数据,比如程序员经常说的删库跑路的话题,假设我们把数据库所有数据都删除了要怎么恢复了,如果数据库之前没有备份,所有的binlog日志都在的话,就从binlog第一个文件开始逐个恢复每个binlog文件里的数据,这种一般不太可能,因为binlog日志比较大,早期的binlog文件会定期删除的,所以一般不可能用binlog文件恢复整个数据库的。之后,这个连接里面的权限判断逻辑,都将依赖于此时读到的权限。查询缓存的失效非常频繁,只要有对一个表的更新,这个表上所有的查询缓存都会被清空。
2024-02-20 18:55:02 2309
原创 Mysql事务原理与优化
打开一个客户端B,并设置当前事务模式为serializable,更新相同的id为1的记录会被阻塞等待,更新id为2的记录可以成功,说明在串行模式下innodb的查询也会被加上行锁,如果查询的记录不存在会给这条不存在的记录加上锁(这种是间隙锁,后面会详细讲)。如果客户端A执行的是一个范围查询,那么该范围内的所有行包括每行记录所在的间隙区间范围都会被加锁。我们的数据库一般都会并发执行多个事务,多个事务可能会并发的对相同的一批数据进行增删改查操作,可能就会导致我们说的脏写、脏读、不可重复读、幻读这些问题。
2024-02-20 14:00:19 953
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人