
JavaWeb笔记
JavaWeb笔记
ThinkPet
青年码农一枚
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
API接口设计的18条规范
自己总结的http api接口设计的18条规范原创 2024-06-16 12:48:41 · 2742 阅读 · 0 评论 -
web开发中的四种会话跟踪技术
而Session在服务器端管理会话数据,提供了更高的安全性和灵活性。在选择使用哪种技术时,需要根据具体的应用场景和需求进行权衡。例如,Cookie是跨页面的,易于使用,但可能会受到用户禁用Cookie的限制;URL重写不需要Cookie支持,但可能导致URL变得冗长;这些技术各有优缺点,适用于不同的场景和需求。隐藏表单域只适用于表单提交的场景;原创 2024-05-24 10:48:21 · 467 阅读 · 0 评论 -
【面经】讲一下Spring Bean的生命周期
Spring容器管理Bean的生命周期,包括实例化、属性设置、初始化、使用和销毁阶段。在初始化和销毁阶段,开发人员可以插入自定义逻辑,以确保Bean的正确配置和资源释放原创 2023-11-09 09:39:12 · 131 阅读 · 0 评论 -
【面经】讲一下spring aop
Spring Aop默认使用的是JDK动态代理。当类没有实现接口时,才使用cglib的动态代理原创 2023-11-08 21:41:54 · 257 阅读 · 0 评论 -
一种轻量级单体springboot防重复提交的解决方案
*** 指定时间内不可重复提交,单位毫秒/*** 指定时间内不可重复提交,单位毫秒/*** 指定时间内不可重复提交,单位毫秒/*** 指定时间内不可重复提交,单位毫秒Retention;/*** 指定时间内不可重复提交,单位毫秒/*** 指定时间内不可重复提交,单位毫秒/*** 指定时间内不可重复提交,单位毫秒/*** 指定时间内不可重复提交,单位毫秒Target;原创 2023-09-10 10:09:42 · 356 阅读 · 1 评论 -
VX-API-Gateway开源网关技术的使用记录
VX-API-Gateway 是一个轻量的,支持可视化配置的网关代理服务。可以代理多个后端应用,同时可以对每个后端应用的API做精细化的API代理配置。由于VX-API-Gateway 底层使用的是vert.x技术,所以不必担心性能问题。原创 2023-08-05 09:13:34 · 1380 阅读 · 0 评论 -
SpringBoot使用JKS或PKCS12证书实现https
可以利用jdk自带的keytool工具来生成证书文件,默认生成的是JKS证书cmd命令如下: 执行如下命令,并按提示填写证书内容,最后会生成server.keystore文件。原创 2023-08-01 07:03:44 · 4681 阅读 · 0 评论 -
SpringBoot配置API跨域
addCorsMappings跨域资源映射。在WebMvcConfigurer里配置。新建CorsConfig配置类,原创 2023-07-30 15:54:44 · 334 阅读 · 0 评论 -
SpringBoot中的RestTemplate使用笔记
*** 含请求头参数的url ,必须用@RequestHeader 接收请求头* @return} /*** url路径变量 形式的http请求,必须用@PathVariable接收* @return} /*** queryString形式的get查询* @param a* @param b* @return} /*** post-formData 形式的请求* @param a post-form参数。原创 2023-07-26 07:33:02 · 617 阅读 · 0 评论 -
一种软件license授权设计案例
整体设计思路license服务器端:--负责根据客户端systemSign颁发证书。--使用dom4j生成lic.xml证书--使用AES对xml关键节点进行数据加密--lic证书生成时设定信息包括:-----客户端systemSign-----生效起始时间-----生效截止时间-----上一次校验时间-----项目版本号-----license文件生成路径license客户端:--负责生成systemSign客户端系统签名--证书检验/定时验证/自助更新(手动替换)--A原创 2023-07-25 06:05:17 · 1457 阅读 · 0 评论 -
Guava中的EventBus使用笔记
};//双重锁单例模式 private static AsyncEventBus getAsynEventBus() {} //双重锁单例模式 private static EventBus getEventBus() {} //异步方式发送事件 public static void asyncPost(Object event) {} }} }原创 2023-07-05 23:31:26 · 486 阅读 · 0 评论 -
SpringBoot利用自定义json序列化器实现敏感字段数据脱敏
log . info("mobilePhone数据:{}脱敏后的值是:{}" , s , s1);} }log . info("email数据:{}脱敏后的值是:{}" , s , s1);} }/*** 可以同时注册多个自定义的jackson 序列化器* @return} }原创 2023-07-05 23:31:52 · 1480 阅读 · 0 评论 -
springboot2.4实现事件监听
*** 1.创建事件类* 创建1个事件类,用于封装你想传递的数据。* 这个事件类可以是一个普通的pojo类,不需要实现任何特定的接口/*** 2.创建监听方法* 在合适的类或组件中创建一个监听方法,* 用 @EventListener 注解标注这个方法,* 并指定要监听的事件类型作为参数log . info("监听逻辑t1---evt msg:{}" , msg);log . info("监听逻辑t1---evt ts:{}" , ts);原创 2023-07-05 23:29:51 · 269 阅读 · 0 评论 -
MySQL中的两种特殊插入方式
on duplicate key update 更适合在插入重复数据时进行部分列的更新。replace into更适合替换整行数据,并且需要注意其对自增主键的处理。在选择使用哪种方法时,根据具体的需求和场景进行选择。原创 2023-07-04 23:29:46 · 448 阅读 · 0 评论 -
MySQL悲观锁并发控制实现案例
* 悲观锁 * select语句后加 for update * * //select ... for update可以在读取数据的同时将行锁住,阻止其他事务对这些行进行修改。原创 2023-07-04 23:27:44 · 353 阅读 · 0 评论 -
MySQL乐观锁并发控制实现案例
* 乐观锁 * 1.每次更新 version=version+1 * 2.需要携带version字段进行更新 ,若version 不一致,则不会更新成功 * 3.使用乐观锁更新前的select查询是不能带锁的原创 2023-07-04 23:21:32 · 387 阅读 · 0 评论 -
SpringBoot运行中动态修改logback日志级别
这里提供2个接口,分别是修改logback全局日志级别 ,和单独修改某个package包的日志级别。思路:写一个api接口,通过api接口调用的方式动态修改logback的log日志打印级别。原创 2023-07-01 16:04:32 · 1474 阅读 · 0 评论 -
win系统安装配置minio笔记
可以去minio官网下载,也可以直接在csdn下载,这里提供一个下载地址。原创 2023-07-01 15:53:21 · 1303 阅读 · 0 评论 -
SpringMvc接收前端发送的api请求参数问题笔记
需要使用@DateTimeFormat注解,来接收前端传的 http://xx.xx.xxx/xsdc?这种日期参数;这样获取日期数据就能直接取到Date对象。原创 2023-07-01 15:36:55 · 551 阅读 · 0 评论 -
SpringBoot中的Jackson使用笔记
springboot中使用jackson笔记原创 2023-07-01 15:23:49 · 640 阅读 · 0 评论 -
SpringBoot利用Guava实现单机app限流访问
/比如说,我这里设置"并发数"为5 @Around("serviceLimit()") public Object around(ProceedingJoinPoint joinPoint) {try {if(flag) {} else {String result = JSON . toJSONString(AjaxPubResponse . error("2003" , "未获取到许可"));return obj;try {原创 2023-07-01 14:58:04 · 569 阅读 · 0 评论 -
Spring AOP中的动态代理技术解析
*** 被动态代理的方法应该是public公共的} }/*** 动态代理类,实现方法拦截器MethodInterceptor接口//cglib动态代理,基于ASM机制实现,通过生成目标类的子类作为代理类 //使用cglib中的Enhancer来生成代理对象子类, public Object getProxyInstance(Class targetClass) {//1.工具类 Enhancer enhancer = new Enhancer();原创 2023-06-22 19:15:12 · 972 阅读 · 0 评论 -
SpringBoot整合FastDFS笔记
SpringBoot整合FastDFS分布式存储系统原创 2023-06-22 13:21:01 · 1088 阅读 · 0 评论 -
mybatis整合ehcache做三级缓存
因为mybatis的二级缓存区域以mapper为单位划分,当一个商品信息变化会将所有商品信息的缓存数据全部清空。解决此类问题需要在业务层根据需求对数据进行针对性的缓存,即需要使用三级缓存原创 2023-06-19 22:33:30 · 1228 阅读 · 1 评论 -
原生mybatis实现数据加密存储和读取
/定义注解@EncryptDecryptClass,用于标记需要加解密的java类 @Inherited @Target({//定义注解@EncryptDecryptField,用于标记需要加解密的java字段 @Inherited @Target({/*** 对称加密的秘钥/*** * 加密 ** * @param declaredFields paramsObject所声明的字段。原创 2023-06-19 22:31:01 · 2015 阅读 · 0 评论 -
java使用Guava cache做内存缓存
*** 使用guava需要引入依赖*/ private static Cache < String , Object > cache = CacheBuilder . newBuilder() //5分钟后过期 . expireAfterWrite(5 , TimeUnit . MINUTES) //最大10个缓存 . maximumSize(10) . build();} }原创 2023-06-17 07:24:49 · 817 阅读 · 0 评论 -
Java读写pdf文件
在OA业务开发中,经常需要java后台读取或生成pdf文件,itextpdf是一个常用的java操作pdf的开源库原创 2023-06-17 07:14:36 · 7045 阅读 · 0 评论 -
springboot项目使用proguard配置代码混淆
物料准备:1.pom引入proguard-maven-plugin插件2.在proguard.cfg配置文件里设置具体的代码混淆配置3.maven package 打包测试。原创 2023-06-13 21:58:58 · 6000 阅读 · 1 评论 -
SpringBoot项目使用CXF框架开发Soap通信接口
/声明这个接口是一个WebService接口,必须指定targetNamespace命名空间 @WebService(targetNamespace = "http://cxf.knowwikibackend.ath.cn/") public interface UserService {原创 2023-06-08 21:06:30 · 5525 阅读 · 0 评论 -
Java生成base64文字图
*** 获取1个随机的rgb颜色,转为java.awtColor} /*** 判断输入的是不是中文名} /*** 用BufferedImage构建文字图// 如果用户输入的姓名少于等于2个字符,不用截取 if(nameLength原创 2023-06-08 21:01:24 · 583 阅读 · 0 评论 -
SpringBoot项目使用slf4j的MDC日志打点功能
物料准备:1.自定义1个线程MDC打点工具类2.配置logback打印MDC打点的traceId3.配置webMVC使用MDC打点4.配置ThreadPoolTaskExecutor使用MDC打点5.配置HttpClient使用MDC打点6.测试MDC日志打点效果配置logback 输出的日志格式,要输出mdc里定义的traceId配置webMVC使用MDC打点定义MvcTraceInterceptor,来拦截http请求进行mdc打点使用自定义的MvcTraceInterceptor配置T原创 2023-06-05 21:19:35 · 1208 阅读 · 0 评论 -
SpringBoot项目使用自带的@Async异步处理功能实现业务逻辑的异步调用
/核心线程数5:线程池创建时候初始化的线程数 executor . setCorePoolSize(5);//最大线程数10:线程池最大的线程数,只有在缓冲队列满了之后才会申请超过核心线程数的线程 executor . setMaxPoolSize(10);//缓冲队列100:用来缓冲执行任务的队列 executor . setQueueCapacity(100);原创 2023-06-05 21:16:58 · 1799 阅读 · 0 评论 -
SpringBoot项目使用内置的单机任务调度功能
配置EnableScheduling 和Scheduled注解,以及配置task之间异步并发执行的线程池定义1个组件bean,用来存放要执行调度的task任务application.properties文件的配置原创 2023-06-04 18:23:56 · 1550 阅读 · 0 评论 -
SpringBoot项目开发日志切面记录操作日志
物料准备:1.aspect切面类2.自定义的业务逻辑枚举类3.自定义的业务逻辑注解。原创 2023-06-03 21:31:32 · 1144 阅读 · 0 评论 -
SpringBoot项目rest接口的全局异常处理
物料准备:1.一个全局异常处理类2.一个自定义的通用业务异常类3.一个公共的返回体泛型类4.系统返回码枚举类。原创 2023-06-03 21:23:34 · 330 阅读 · 0 评论 -
Springboot项目整合ip2region获取IpAddress详细信息
*** 从HttpServletRequest中获取浏览器客户端的请求ip* @return String ip地址log . info("请求ip:{}" , ip);return ip;} /*** 根据ip地址查询IP所属的实际地址信息* @param ip String ip地址,如 223.120.23.106* @return String xx省xx市xx区移动/联通/电信log . info("请求addr:{}" , addr);原创 2023-06-02 23:41:56 · 892 阅读 · 0 评论 -
springboot中使用自定义的雪花id
try {log . info("当前机器 workerId: {}" , workerId);log . warn("获取机器 ID 失败" , e);log . info("当前机器 workerId: {}" , workerId);} }原创 2023-05-31 21:43:45 · 500 阅读 · 0 评论 -
springboot中使用自定义的HibernateValidator校验器
Target({String message() default "CheckCase默认错误信息!Class原创 2023-05-31 21:39:28 · 297 阅读 · 0 评论 -
springboot自带的@Validated注解的使用-笔记
需要用ExceptionHandler手动处理MethodArgumentNotValidException。需要用ExceptionHandler手动处理ConstraintViolationException。原创 2023-05-29 21:28:45 · 709 阅读 · 0 评论 -
springboot项目中@Valid注解的使用-笔记
测试发现抛MethodArgumentNotValidException异常,经过exceptionHandler处理后,返回返回json打印错误提示信息。原创 2023-05-29 21:27:50 · 410 阅读 · 0 评论