- 博客(56)
- 收藏
- 关注
原创 spring启动时如何自定义日志实现
最近在编写传统的springmvc项目时,遇到了一个问题:虽然在项目的web.xml中指定了log4j的日志启动监听器Log4jServletContextListener,且开启了日志写入文件,但是日志文件中只记录业务代码中我们声明了日志记录器的日志,无法记录spring上下文启动的日志。测试方法如下:观察下面的运行结果截图,我们发现红色字体是spring上下文的启动日志而灰色字体是我们打印的日志,而且在日志文件中也只记录了我们打印的日志和druid数据源的关闭日志。实时上spring上下文的启动日志也
2024-03-07 23:22:37
1151
原创 spring启动时加载外部配置并实现在不重启应用的情况下修改druid连接池的配置
spring启动时加载外部配置并实现在不重启应用的情况下修改druid连接池的配置
2023-03-18 18:35:12
1744
1
原创 SpringBoot 动态操作定时任务(启动、停止、修改执行周期)增强版
SpringBoot 动态操作定时任务(启动、停止、修改执行周期)增强版
2023-03-15 23:20:11
4776
3
原创 springboot动态数据源原理分析及实现
springboot动态数据源实现的两个关键要素说起动态数据源,大家肯定都觉得是个很神秘的东西,其实若仔细研究就会发现并不复杂,具体来说,只有两步:第一、spring容器中注入两个数据源。第二、在运行时根据业务需要获取特定的数据源。读者老爷:老哥你这不是废话吗,看完你这个讲解,发现它就是讲解,屁用没有。作者老弟:别急麻,现实中咱们解决问题就是,从外到里,一层一层递进。咱们就从第一步spring容器注入多数据源开始递进。首先咱们要搞明白的,如何注入数据源及注入的数据源由谁来管理呢?注入数据源我就
2022-04-28 22:22:05
2466
原创 springboot整合mybatis详细步骤
springboot2.4.4整合mybatis一、搭建工程二、使用mybatis进行数据库操作三、测试运行四、总结springboot目前已成为javaweb的主流开发框架,它就像一个万能胶,只要拉取相关依赖的starter,我们只需要做少量配置就能做到开箱即用。mybatis是国内比较流行的持久层框架,即支持注解类型开发也支持xml类型开发,同时支持动态sql,非常灵活好用,spring也对该框架进行了适配,今天这篇博客的内容就是介绍如何使用springboot集成mybatis。好啦,不罗嗦了正
2022-03-12 19:30:28
2366
原创 git本地dev分支覆盖master分支并覆盖远程仓库的master分支
git使用dev覆盖本地及远程master分支1、切换到dev分支:git checkout dev2、删除本地的master分支:git branch -D master3、将dev分支复制到本地的master分支:git checkout -b master4、推送到远程并覆盖仓库的master分支:git push -u origin master --forcegit远程分支强制覆盖本地的分支1、下载代码到本地git fetch --all2、将HEAD指向最新下载的版本git
2021-11-11 18:06:23
3850
原创 基于http协议实现netty客户端与tomcat之间的通信
平常我们都是使用netty搭建客户端以及搭建netty服务端实现通信,其实我们也可以使用netty搭建基于http协议的客户端实现与tomcat的通信。代码案例:服务端代码,本质就是一个对外发布的controllerpackage com.syx.controller;import com.syx.entity.User;import com.syx.service.UserService;import org.springframework.beans.factory.annotation.
2021-07-07 23:48:25
376
1
原创 SpringBoot 动态操作定时任务(启动、停止、修改执行周期)
springboot自身带有一套定时任务框架,使用起来也比较简单,只需要在应用上添加@EnableScheduling注解开启定时任务的支持,然后在具体任务实现的方法上添加 @Scheduled然后配置corn表达式就完成了。代码示例:1、开启定时任务的支持package com.syx;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBoo
2021-07-02 23:26:39
15299
18
原创 基于netty实现的简单RPC调用
1、RPC的架构从上图可看出RPC主要分为三个部分:(1)、服务提供者(RPC Server),运行在服务器端,提供服务接口定义与服务实现类。(2)、服务中心(Registry),运行在服务器端,负责将本地服务发布成远程服务,管理远程服务,提供给服务消费者使用。(3)、服务消费者(RPC Client),运行在客户端,通过远程代理对象调用远程服务。2、基于netty实现RPC的思路根据上面的rpc结构图,如果我们想实现一个rpc调用框架,则必须实现上述三部分。2.1、服务提供者:1、定义客
2021-06-19 22:42:05
301
原创 使用dom4j结合深度优先搜索和广度优先搜索读取整个xml文档
1、xml文档<?xml version="1.0" encoding="UTF-8"?><class> <stu id="001"> <name>杨过</name> <sex>男</sex> <age>20</age> </stu> <stu id="002"> <name>
2021-05-25 20:36:51
242
原创 java实现读取文件增加行的信息
项目结构思路:想要实现读取文件增加行的信息最终要的一点就是得知道上次读文件的时候读到哪一行了,所以我们只需要建立一个能够记录上次读取行号的文件,等下次读取时按照这个行号接着往下读取就可以了。properties文件用于存储文件的最后修改时间和最后读取文件的行号。#文件的最后修改时间file.lastModifyTime=1621670224454#文件最后读取的行号file.lineNum=7reader.txt为被读取文件ReadFile.java为读取文件增加行的信息的主要类pac
2021-05-22 16:29:12
561
原创 springboot整合mybatis
工程结构引入依赖 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.4.4</version> <relativePath/> <!-- lookup par
2021-04-08 20:02:28
144
原创 将数据写入excel并包装成ByteArray字节数组返回,可用于网络下载
package com.excel;import org.apache.poi.hssf.usermodel.*;import org.apache.poi.ss.usermodel.*;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.FileOutputStream;import java.io.IOException;import java.util.*;i
2021-02-28 16:49:54
1037
2
原创 JdbcTemplate事务开启的正确方式
场景复现,使用JdbcTemplate操作数据库,采用如下方式开启事务,然而并无卵用/** * 事务开启无效 * @throws SQLException */ @Test public void fun5() throws SQLException { //获取JdbcTemplate JdbcTemplate jdbcTemplate = JDBCUtil.getJdbcTemplate(); //获取连
2021-01-30 13:20:29
2802
3
原创 quartz定时框架学习
quartz工具类package com.syx.task;import org.quartz.*;import org.quartz.impl.JobDetailImpl;import org.quartz.impl.StdSchedulerFactory;import org.quartz.impl.triggers.CronTriggerImpl;import java.text.ParseException;public class JobScheduler { pri
2021-01-24 23:08:25
183
原创 基于netty进行对象传输(操作数据库)
基于netty进行对象传输编写了一个使用netty搭建的C/S项目,该项目用于远程访问数据库,实现客户端发送请求,服务端接收请求进行相应的数据库操作,返回数据给客户端。项目结构客户端代码package com.syx.client;import com.syx.client.handler.ClientHandler;import com.syx.entity.SendMsg;import com.syx.entity.User;import io.netty.bootstrap.Boo
2021-01-24 22:56:22
1336
原创 easyconnect工具
链接:https://pan.baidu.com/s/1L1QYVm9Hes9s_cnmXVZWBw提取码:rvhm
2021-01-07 23:48:10
1019
原创 扩展c3p0写的通用数据库操作工具类(使用泛型方法)
package com.syx.utils;import com.mchange.v2.c3p0.DataSources;import com.syx.annotation.ID;import com.syx.entity.User;import org.apache.commons.dbutils.QueryRunner;import org.apache.commons.dbutils.handlers.BeanHandler;import org.apache.commons.dbuti
2021-01-05 00:23:37
163
2
原创 手写springmvc
手写springmvc的思路springmvc的核心也是一个servlet即DispatcherServlet,这个servlet会配在web.xml里面,注意它的url-pattern配置的是/*,即拦截了所有请求。其原理就是当浏览器发送请求的时候,都会被springmvc的这个servlet拦截到,然后springmvc会将这个请求的url进行一些处理,处理后去匹配对应的controller中对应的method(requestMaping中填写的请求路径)。匹配之后就通过反射调用方法,完成业务逻辑。
2021-01-01 20:35:59
329
1
原创 手写spring时的一些工具类
一、注解操作的工具类,可以判断组合注解中是否包含某个注解package syx.mvc.util;import javax.annotation.*;import java.lang.annotation.*;public class AnnotationUtil { /** * 判断类上是否存在某个注解 * @param clazz * @param ann * @return */ public static boolean
2021-01-01 12:18:21
411
原创 使用java的流API进行数据的过滤
package wy;import java.util.ArrayList;import java.util.List;import java.util.stream.Collectors;public class test { public static void main(String[] args) { ArrayList<equipment> ls = new ArrayList<>(); for (int i = 0;
2020-12-18 00:24:29
313
转载 基于netty的文件服务器
文件服务器package syx;import io.netty.bootstrap.ServerBootstrap;import io.netty.channel.ChannelFuture;import io.netty.channel.ChannelInitializer;import io.netty.channel.EventLoopGroup;import io.netty.channel.nio.NioEventLoopGroup;import io.netty.channel.
2020-12-13 23:56:42
247
原创 在给定节点的情况下使用深度优先遍历算法正向搜索该节点的所有子节点以及反向搜索所有父节点
一、节点的实体类包含两个字段:1、该节点的id2、该节点的父亲idpublic class Node { private int id; private int parentId; public Node(int id, int parentId) { this.id = id; this.parentId = parentId; } public int getId() { return id; }
2020-11-28 01:27:16
489
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人