程序
低级小猿
这个作者很懒,什么都没留下…
展开
-
Canal工具的使用
准备: window 和 linux 都得有mysql, 创建相同结构名称的数据库和数据表哦。原创 2023-02-14 17:08:01 · 119 阅读 · 1 评论 -
拦截器以及添加拦截器以及拦截安全问题-----ThreadLocal
大家好!!!!! 我是小杨,今天再给大家分享个拦截器以及并发时的安全问题.首先大家都知道在写一个项目登录拦截时,肯定首先想到的就是写个拦截器,再将拦截器添加到WebMvcHandler中去,好,废话不多说,上代码.1.1 首先我们先写一个拦截器用来拦截的我们的请求 实现该接口 HandlerInterceptorpublic class LoginInterceptor implements HandlerInterceptor { @Override public boolea原创 2022-10-27 22:55:46 · 701 阅读 · 0 评论 -
微信支付消息推送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 · 191 阅读 · 0 评论 -
接入微信支付伪代码(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 · 1047 阅读 · 0 评论 -
swagger 的常用注解
分别对@Api(value = "用户登录和注册",tags = "用户管理")控制类 @ApiOperation ("用户登录接口")接口 和@ApiImplicitParams ({ @ApiImplicitParam(dataType = "String", name = "username", value = "用户登录账号", required = true), @ApiImplicitParam( da..原创 2022-04-14 20:00:43 · 200 阅读 · 0 评论 -
如在在springboot中搭建热部署
第一步: 在文件->设置->构建->找到自动构建项目第二步: 同时按下 ctrl+shift+alt+/ 在显示的页面中,选择注册表选项第三步 引入热部署依赖原创 2022-04-09 15:03:01 · 442 阅读 · 0 评论 -
线程二十四—— 线程池(完结)
注意: 通过线程池 来执行线程 最后记得用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 · 303 阅读 · 0 评论 -
线程二十三—— 观众和表演者的关系
注意: 表演者表演,观众观看。 利用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 · 324 阅读 · 0 评论 -
线程二十二—— 生产者和消费者的问题
注意:这里利用了一个缓冲区 来解决消费者没有东西消费的问题,生产者生产产品往缓冲区放,当缓冲区没有产品时,消费者等待,唤醒 生产者生产,生产者生产产品后等待,唤醒消费者消费注释写的很详细。package com.yyf.Gaoji;public class TestProducerConsumer { public static void main(String[] args) { SynContainer container = new SynContainer原创 2022-04-09 14:55:44 · 71 阅读 · 0 评论 -
线程二十一—— 加锁
注意: 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 · 680 阅读 · 0 评论 -
线程十六——死锁的问题
注意:两个对象 镜子和口红 注意看makeup方法 两种选择分别将拿到的每一种对象的锁进行加锁,不然会产生死锁,如果将chioc==0分支里的两种选择就放在一个同步锁里那么就会产生死锁。死锁:: 多个线程互相抱着对方需要的资源,然后形成僵持,这样就形成了死锁package com.yyf.ThreadStatus;import sun.rmi.runtime.NewThreadAction;import java.util.Map;// 死锁: 多个线程互相抱着 对象需要的资源,然.原创 2022-04-03 14:06:17 · 218 阅读 · 0 评论 -
线程十五——测试线程停止
注意:线程停止不建议使用死循环,使用有次数的循环,建议使用一个标志位,不要使用stop或者destory这些过时的方法 这里的stop方法是我们自定义的stop方法,利用标志位将循环停止package com.yyf.ThreadStatus;// 测试线程停止//1. 建议线程正常停止--》 利用次数,不建议死循环//2. 建议使用标志位--》 设置一个标志位//3, 不要使用stop destory 等过时的方法 public class TestThreadStop impl..原创 2022-04-03 14:01:06 · 291 阅读 · 0 评论 -
线程十四—— 线程礼让
注意:当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 · 354 阅读 · 0 评论 -
线程十三—— 线程优先级权重的设置
注意 这里创建了五个线程 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 · 722 阅读 · 0 评论 -
线程十二—— 线程守护
注意 : 上帝 守护你三万天 利用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 · 280 阅读 · 0 评论 -
线程十一——观察线程的状态
注意: 这里用到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 · 90 阅读 · 0 评论 -
线程十一——模拟当前系统时间倒计时
注意: 这里用到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 · 367 阅读 · 0 评论 -
线程十—— 线程模拟倒计时
注意:简单来说就是利用了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 · 403 阅读 · 0 评论 -
线程九—— 模拟延时 放大问题的发生性
注意: 这里模拟了三个线程同时抢票的问题,很明显这种线程是不安全的,因为有为会抢到0和-1的票,所以我们就需要解决问题的发生性,请关注下章节的内容。。。。package com.yyf.ThreadSleep;// 模拟延时 : 放大问题的发生性public class TestSleep implements Runnable{ int ticketNum=10; @Override public void run() {原创 2022-04-03 13:37:26 · 146 阅读 · 0 评论 -
线程八—— 线程插队 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 · 204 阅读 · 0 评论 -
线程七—— 静态代码模式
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 · 198 阅读 · 0 评论 -
线程六 —— 线程的创建方式之一 实现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 · 98 阅读 · 0 评论 -
线程五—— 线程模拟龟兔赛跑
注意: 这里创建了一个方法来 判断比赛是否结束,胜利者是否出现,谁先到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 · 193 阅读 · 0 评论 -
线程四—— 初始并发问题
注意: 这里我们先看下 运行结果 : 相信大家都看到了黄牛和小明同时拿到了第十张票,这里就出现了并发的问题 附上代码举例小明拿到了第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 · 120 阅读 · 0 评论 -
线程三—— 实现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 · 187 阅读 · 0 评论 -
线程二—— 网图下载
注意: 这里我们用到了一个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 · 344 阅读 · 0 评论 -
自动代码生成器
代码如下: 代码自动生成器 ,自动的帮我们生成了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 · 3214 阅读 · 0 评论 -
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 · 49 阅读 · 0 评论 -
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 · 62 阅读 · 0 评论 -
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 · 158 阅读 · 0 评论 -
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 · 154 阅读 · 0 评论 -
Spring整合Mybatis 掺和 事务机制
事务是恢复和并发控制的基本单位。事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的操作要么都做,要么都不做。一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。原创 2021-10-02 10:32:05 · 116 阅读 · 0 评论 -
Spring 代理模式 demo02
自定义类实现InvocationHandler 接口 重写里面的方法 实现代理模式1.自定义类package com.yyf.demo03;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;public class ProxyInvocationHandler implements InvocationHandler {..原创 2021-10-02 09:39:02 · 63 阅读 · 0 评论 -
Spring代理模式 demo01
列举房东和租客及中间插入一个中介的问题来展示代理模式的实现1.首先创建一个接口 来表现要租房这个行为package com.yyf.demo01;public interface Rcent { public void rcent();}2.创建房东类,来实现这个接口,因为房东租房肯定有这个行为package com.yyf.demo01;public class Host implements Rcent { @Override public..原创 2021-09-30 11:05:16 · 71 阅读 · 0 评论 -
Spring整合Mybatis (一)升级版
sqlsession的创建由继承SqlSessionDaoSupport类来直接调用getsqlsession方法来实现1 .实现类 2package com.yyf.mapper;import com.yyf.pojo.User;import org.mybatis.spring.support.SqlSessionDaoSupport;import java.util.List;public class userMapperImpl2 extends SqlSessionDaoS原创 2021-09-30 10:56:26 · 126 阅读 · 0 评论 -
Spring整合Mybatis (一)
简单的实现查询1.接口package com.yyf.mapper;import com.yyf.pojo.User;import java.util.List;public interface userMapper { public List<User> selectUser();}2.接口配置文件<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUB原创 2021-09-30 10:49:58 · 50 阅读 · 0 评论 -
Spring 三层架构MVC注解
1. controller层package com.yyf.controller;import org.springframework.stereotype.Controller;@Controllerpublic class UserController {}2.dao层package com.yyf.dao;import org.springframework.stereotype.Repository;@Repositorypublic class Use.原创 2021-09-30 10:28:02 · 279 阅读 · 0 评论 -
Spring AOP实现方式三
使用注解的方式1.自定义注解类package com.yyf.div;import org.aspectj.lang.ProceedingJoinPoint;import org.aspectj.lang.Signature;import org.aspectj.lang.annotation.After;import org.aspectj.lang.annotation.Around;import org.aspectj.lang.annotation.Aspect;impor.原创 2021-09-30 10:02:09 · 41 阅读 · 0 评论 -
Spring AOP实现方式二
以自定义类的方式来实现AOP1.自定义类package com.yyf.div;public class DivPointCut{ public void before(){ System.out.println ("========方法执行前========="); } public void after(){ System.out.println ("========方法执行后=========="); }}2.配置原创 2021-09-30 09:56:51 · 37 阅读 · 0 评论 -
Spring AOP实现方式一
1.使用SpringAPI接口 业务接口及业务实现类package com.yyf.service;public interface Service { public void add(); public void delete(); public void update(); public void select();}package com.yyf.service;public class ServiceImpl implements Se..原创 2021-09-30 09:46:57 · 42 阅读 · 0 评论