- 博客(84)
- 问答 (3)
- 收藏
- 关注
原创 拦截器以及添加拦截器以及拦截安全问题-----ThreadLocal
大家好!!!!! 我是小杨,今天再给大家分享个拦截器以及并发时的安全问题.首先大家都知道在写一个项目登录拦截时,肯定首先想到的就是写个拦截器,再将拦截器添加到WebMvcHandler中去,好,废话不多说,上代码.1.1 首先我们先写一个拦截器用来拦截的我们的请求 实现该接口 HandlerInterceptorpublic class LoginInterceptor implements HandlerInterceptor { @Override public boolea
2022-10-27 22:55:46
834
原创 今天给大家介绍一道人人都应该会的算法题
介绍:算法与我同在,小伙伴在成长的路上不要放弃刷算法的好习惯,尤其是对正在找工作找实习的小伙伴,算法不仅是我们面试的加分项在工作中处理业务逻辑也用处多多,尽管已经找到实习的我仍然不放弃刷算法的习惯,大家也肯定和我一样。废话不多说,来来今天小杨给你们分享的算法题。leetCode链接:https://leetcode.cn/problems/squares-of-a-sorted-array/solution/1.题目:给你一个按非递减顺序排序的整数数组nums,返回每个数字的平方组成的新数
2022-10-27 22:51:39
210
原创 项目开始满满的干货技术点等着对于新手的你
大家好,今天将开始写项目,在这里我不会分享项目的从0到1如何构成的,而是在我做项目的过程中遇到的坑和一些干货技术点,能让伙伴们提升的技术点。 1. 今天准备做一个手机验证码登录的功能。 在这里我先分享我所用的东西,再给大家分享一个坑。 1.1 首先大家在做手机验证码登录的时候无非就是几个步骤 1.输入手机号,前端进行校验手机号格式 2.手机号传到后端,后端再做二次校验手机号格式是否正确 1.2 这里大家肯定都知道后端进行校验手机号格式无非
2022-10-25 22:41:57
423
原创 了解一下Spring的整体架构
1.3 Context模块构建于Core和Bean模块之上,该模块继承了Bean特性,为Spring核心提供了大量扩展,添加了对国际化、事件传播,资源加载和对Context的透明创建的支持。3.1 Web-servlet模块web.servlet.jar:该模块包含Spring的MVC实现,Spring的mvc框架使得模型范文内的代码和webForms之间能够清楚的分离开来,并与Spring框架的其他特性集成在一起。Core 和 bean 模块是框架的基础部分,提供ioc和依赖注入特性(DI)。
2022-10-09 21:46:53
365
原创 微信支付消息推送Websocket服务器的创建
1. 引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> <version>2.6.6</version>
2022-05-25 16:48:51
314
1
原创 接入微信支付伪代码(Springboot实现)
1. 导入第三方依赖<dependency> <groupId>com.github.wxpay</groupId> <artifactId>wxpay-sdk</artifactId> <version>0.0.3</version></dependency>2。 这里 需要 AppId 商户号 商户密钥1. 我们这里创建一个微信配置类来实现WxPayConfig这个接口
2022-05-23 21:18:28
1383
原创 swagger 的常用注解
分别对@Api(value = "用户登录和注册",tags = "用户管理")控制类 @ApiOperation ("用户登录接口")接口 和@ApiImplicitParams ({ @ApiImplicitParam(dataType = "String", name = "username", value = "用户登录账号", required = true), @ApiImplicitParam( da..
2022-04-14 20:00:43
279
原创 如在在springboot中搭建热部署
第一步: 在文件->设置->构建->找到自动构建项目第二步: 同时按下 ctrl+shift+alt+/ 在显示的页面中,选择注册表选项第三步 引入热部署依赖
2022-04-09 15:03:01
519
原创 线程二十四—— 线程池(完结)
注意: 通过线程池 来执行线程 最后记得用shutdown方法来关闭连接。package com.yyf.Gaoji;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class TestThreadPool { public static void main(String[] args) { ExecutorService servi.
2022-04-09 14:56:58
356
原创 线程二十三—— 观众和表演者的关系
注意: 表演者表演,观众观看。 利用wait 和notifyall来等待和唤醒。package com.yyf.Gaoji;public class TestProducerConsumer2 { public static void main(String[] args) { TV tv = new TV (); new Player (tv).start (); new Watcher (tv).start (); }}..
2022-04-09 14:56:21
401
原创 线程二十二—— 生产者和消费者的问题
注意:这里利用了一个缓冲区 来解决消费者没有东西消费的问题,生产者生产产品往缓冲区放,当缓冲区没有产品时,消费者等待,唤醒 生产者生产,生产者生产产品后等待,唤醒消费者消费注释写的很详细。package com.yyf.Gaoji;public class TestProducerConsumer { public static void main(String[] args) { SynContainer container = new SynContainer
2022-04-09 14:55:44
122
原创 线程二十一—— 加锁
注意: private final ReentrantLock lock= new ReentrantLock(); 加锁使用的类 对线程的实现不仅要加索,还要解锁。所以我们一般使用try catch finally 表达式,加锁放在try块中,解锁放在finally中package com.yyf.Gaoji;import java.util.concurrent.locks.ReentrantLock;public class AddLock { public static ...
2022-04-09 14:54:50
748
原创 线程十六——死锁的问题
注意:两个对象 镜子和口红 注意看makeup方法 两种选择分别将拿到的每一种对象的锁进行加锁,不然会产生死锁,如果将chioc==0分支里的两种选择就放在一个同步锁里那么就会产生死锁。死锁:: 多个线程互相抱着对方需要的资源,然后形成僵持,这样就形成了死锁package com.yyf.ThreadStatus;import sun.rmi.runtime.NewThreadAction;import java.util.Map;// 死锁: 多个线程互相抱着 对象需要的资源,然.
2022-04-03 14:06:17
280
原创 线程十五——测试线程停止
注意:线程停止不建议使用死循环,使用有次数的循环,建议使用一个标志位,不要使用stop或者destory这些过时的方法 这里的stop方法是我们自定义的stop方法,利用标志位将循环停止package com.yyf.ThreadStatus;// 测试线程停止//1. 建议线程正常停止--》 利用次数,不建议死循环//2. 建议使用标志位--》 设置一个标志位//3, 不要使用stop destory 等过时的方法 public class TestThreadStop impl..
2022-04-03 14:01:06
393
原创 线程十四—— 线程礼让
注意:当A线程正在执行的时候 类Thread执行了Yield方法让B线程去执行。 这就是线程礼让package com.yyf.ThreadSleep;// 礼让线程 : 让当前正在执行的线程暂停,但不阻塞// 将 线程 从运行状态转为就绪状态// 礼让不一定成功 ,看cpu 心情public class TestYield { public static void main(String[] args) { MyYield y = new MyYield (
2022-04-03 13:57:22
448
原创 线程十三—— 线程优先级权重的设置
注意 这里创建了五个线程 t1 t2 t3 t4t5 五个线程 分别为每个线程设置优先级MAX_PRIORITY 最大优先级 十级 默认为五级 优先级 MIN_PRIORITY 最小优先级 一级package com.yyf.ThreadSleep;// 设置线程优先级public class TestPriority{ public static void main(String[] args) { System.out.println (T...
2022-04-03 13:53:18
860
原创 线程十二—— 线程守护
注意 : 上帝 守护你三万天 利用setDaemon方法将上帝线程设置为守护线程 当you线程死亡后 上帝线程一致守护着你。。。。package com.yyf.ThreadSleep;// 线程守护public class TestDaemon { public static void main(String[] args) { God god = new God (); You you = new You (); Thread t.
2022-04-03 13:50:11
328
原创 线程十一——观察线程的状态
注意: 这里用到lambda表达式,如有不懂的内容章节有介绍的。该程序功能观察了线程从 新建 - 就绪-- 等待---运行---到消亡的几种状态的观察package com.yyf.ThreadSleep;// 测试线程的状态public class TestState{ public static void main(String[] args) throws InterruptedException { Thread thread = new Thread .
2022-04-03 13:47:00
156
原创 线程十一——模拟当前系统时间倒计时
注意: 这里用到SimpleDateFormat类对时间进行格式化package com.yyf.ThreadSleep;import java.text.SimpleDateFormat;import java.util.Date;// 模拟倒计时public class TestSleep3{ public static void main(String[] args) { // 模拟打印系统当前时间 Date startTime = new Dat
2022-04-03 13:43:03
430
原创 线程十—— 线程模拟倒计时
注意:简单来说就是利用了sleep睡眠的方法进行了倒计时package com.yyf.ThreadSleep;// 模拟倒计时public class TestSleep2 implements Runnable{ public static void main(String[] args) { TestSleep2 s = new TestSleep2 (); new Thread(s).start (); } @Override
2022-04-03 13:40:46
467
原创 线程九—— 模拟延时 放大问题的发生性
注意: 这里模拟了三个线程同时抢票的问题,很明显这种线程是不安全的,因为有为会抢到0和-1的票,所以我们就需要解决问题的发生性,请关注下章节的内容。。。。package com.yyf.ThreadSleep;// 模拟延时 : 放大问题的发生性public class TestSleep implements Runnable{ int ticketNum=10; @Override public void run() {
2022-04-03 13:37:26
193
原创 线程八—— 线程插队 join()
注意: 此代码功能是实现testjoin的插队,当主线程main 执行到200的时候就暂停 testjoin线程插队执行,直到testjoin执行完,main线程才能继续执行。package com.yyf.ThreadSleep;public class TestJoin implements Runnable{ @Override public void run() { for (int i = 0; i < 500; i++) { .
2022-04-03 13:31:49
279
原创 线程七—— 静态代码模式
1. 这里是静态代理 实现模拟了结婚。package com.yyf.Thread.demo1;public class StaticProxy { public static void main(String[] args) { You you = new You (); // 用线程的方式 new Thread (()-> System.out.println ("我爱你")).start (); new Weddi
2022-03-29 17:17:20
251
原创 线程六 —— 线程的创建方式之一 实现callable接口
简单 描述: 线程类实现Callable<类型> 接口 这里的类型跟 重写call方法的返回值类型是一样的大家注意下。执行线程的四个步骤:1. 创建一个服务ExecutorsService ser=Executors.newFixedThreadPool(3);2. 提交执行 这里的类型就是上面的类型Future<类型> r1= ser.submit( 线程对象);Future<类型> r2= ser.submit( 线程对象);Fu.
2022-03-29 16:54:40
144
原创 线程五—— 线程模拟龟兔赛跑
注意: 这里创建了一个方法来 判断比赛是否结束,胜利者是否出现,谁先到100步。package com.yyf.Thread.demo1;import com.sun.org.apache.bcel.internal.generic.NEW;public class Race implements Runnable{ // static 代表只有唯一一个胜利者 private static String winner; @Override public vo
2022-03-29 16:44:51
241
原创 线程四—— 初始并发问题
注意: 这里我们先看下 运行结果 : 相信大家都看到了黄牛和小明同时拿到了第十张票,这里就出现了并发的问题 附上代码举例小明拿到了第9张票黄牛拿到了第10张票小张拿到了第10张票黄牛拿到了第7张票小明拿到了第6张票小张拿到了第8张票黄牛拿到了第4张票小张拿到了第5张票小明拿到了第3张票黄牛拿到了第0张票小张拿到了第2张票小明拿到了第1张票package com.yyf.Thread;public class TestTread5 implements Runnab...
2022-03-29 16:19:22
178
原创 线程三—— 实现Runnable接口
注意: 如果 是利用实现Runnable 接口来开启一个线程,那么实现是通过 创建线程对象,然后将线程对象抛到new Thread 这个类中,然后来调用start方法package com.yyf.Thread;public class TestThread3 implements Runnable{ @Override public void run() { for (int i=1;i <100;i++){
2022-03-29 15:56:41
239
原创 线程二—— 网图下载
注意: 这里我们用到了一个jar包 下载地址https://mvnrepository.com/artifact/commons-io/commons-io/2.11.0这里用到了两个类WebDownLoad 下载网图类 和 线程类TestThread2 来执行WebDownLoad 进行下载网图的任务。package com.yyf.Thread;import org.apache.commons.io.FileUtils;import java.io.File;imp...
2022-03-29 15:51:41
466
原创 线程——继承Thread 类
注意: 这里值得注意的是在继承Thread类时 同时要重写run方法,并创建线程类对象,调用start方法开始执行。 线程并不是立即执行。而是操作系统分配资源给他。他才能执行。package com.yyf.Thread;public class TestThread1 extends Thread{ @Override public void run() { for (int i=1;i <100;i++){ System..
2022-03-29 15:47:10
870
原创 缓存的应用 : 缓存——工程思想的产物
缓存一词最初主要指 CPU 与内存之间的高速静态随机存取存储器(SRAM)。一 web中的缓存在做项目的过程中,不知道你们有没有感叹过,一个平平无奇的应用,涉及的点实在是太多了。各个点之间需要衔接,要衔接就会有两个层次的不均衡: 一是性能的不均衡,包括速率、吞吐量等,造成这种不均衡的原因包括软件、硬件、网络、协议、策略等、位置多个维度。 二是数据本身活跃性的不均衡,有些数据会被频繁传递,有些很久才被访问一次。基于这两个不平衡,诞生了各种缓存方案。比较常见的有以下几种:...
2022-03-28 15:51:41
1825
原创 自动代码生成器
代码如下: 代码自动生成器 ,自动的帮我们生成了pojo实体类,dao层 ,service层,极大的增加了我们开发软件的效率。package com.yyf;import com.baomidou.mybatisplus.annotation.DbType;import com.baomidou.mybatisplus.annotation.FieldFill;import com.baomidou.mybatisplus.annotation.IdType;import co...
2022-03-25 16:26:10
3327
原创 SpringMVC-07-拦截器
1.首先写一个登录页面<%@ page contentType="text/html;charset=UTF-8" language="java" %><html> <head> <title>$Title$</title> </head> <body> <h1> <a href="${pageContext.request.contextPath}/user/go
2021-11-02 16:06:45
96
原创 SpringMVC-06-文件上传及下载
1.首先在jsp页面写一个这样的表单 <form action="${pageContext.request.contextPath}/upload2" enctype="multipart/form-data" method="post"> <input type="file" name="file"/> <input type="submit"> </form>2.在springmvc配置文件中配置 <!-
2021-11-02 15:54:52
104
原创 SpringMVC-06-ajax实现异步加载数据
1.首先从jquery官网下载个jquery.js,官网献上https://jquery.com/放在咋们的web下面2.首先来一个ifram实现异步加载<!DOCTYPE html><html lang="en"><head x-frame-options SAMEORIGIN> <meta charset="UTF-8"> <title>Ajax刷新页面初体验</title> <s
2021-11-02 15:47:23
221
原创 SpringMVC-05-JSON
1,首先配置三个jar包@RestController 代表这个类下的所有的return不走视图解析器只会返回json字符串 前后端分离一般不走视图解析器,只会json字符串@ResponseBody 这个注解代表return返回的不走视图解析器,直接返回一个字符串<dependencies> <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind...
2021-11-02 15:29:56
230
原创 SpringMVC-04-RestFul风格及返回数据乱码问题
1.编写controllerpackage yyf.controller;//package com.yyf.controller;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.a
2021-11-02 15:14:07
306
原创 SpringMVC-03-HelloMVC注解开发
1.首先写个controller请求@Controller注解 :交给spring管理,只要方法返回值是String 返回的是一个字符串则就交于视图解析器处理@@RequestMapping("/admin") :代表这个类下面的每一个请求都要先经过admin这个请求@return "hello"; //会被视图解析器解析 hello是一个返回的jsp界面 交给视图解析器去寻找package com.yyf.controller;import org.springframew...
2021-11-02 15:03:10
117
原创 SpringMVC-02-HelloMVC
1.编写springmvc.xml配置文件1.1 处理器映射器1.2 处理器适配器1.3 视图解析器<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="h.
2021-11-02 14:52:46
136
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅