- 博客(65)
- 资源 (18)
- 收藏
- 关注
原创 三个线程轮流打印
三个线程轮流打印,A打印1,2,3,4,B打印5,6,7,8,C打印9,10,11,12,再到A打印13,14,15,16…public class TestMutiThreadPrint { public static void main(String[] args) throws InterruptedException { Resource resource = new Resource(); while (true){ new Thr
2021-08-14 17:33:55
500
原创 递归生成目录树
public class TestGenerateSubTree{ public static void main(String[] args) { TestGenerateSubTree testGenerateSubTree = new TestGenerateSubTree(); List<Node> nodeList = new ArrayList<>(); Node node1 = new Node("0",null)
2021-08-14 11:23:09
581
1
原创 面试官:怎么使用两个线程循环打印出1~100?三个线程呢?
一、使用两个线程循环打印出1~100首先创建一个num类,该类的成员用于线程同步。public class Num { int i; boolean falg;}使用wait/notify机制+条件判断实现public class TestThread1 { public static void main(String[] args) { Num num=new Num(); Thread t1=new Thread
2021-02-07 22:00:50
1591
4
原创 Spirngboot整合Shiro
Shiro什么是 Shiro官网:http://shiro.apache.org/是一款主流的 Java 安全框架,不依赖任何容器,可以运行在 Java SE 和 Java EE 项目中,它的主要作用是对访问系统的用户进行身份认证、授权、会话管理、加密等操作。Shiro 就是用来解决安全管理的系统化框架。...
2020-11-07 21:45:08
371
原创 网络编程Socket实现CS文件上传
Socket实现文件上传图解:客户端实现:public class FileUpload_Client { public static void main(String[] args) throws IOException { // 1.创建流对象 // 1.1 创建输入流,读取本地文件 BufferedInputStream bis = new BufferedInputStream(new FileInputStream("test.jpg"
2020-11-05 15:01:03
523
2
转载 边缘智能--Edgent
论文:1、Edge Intelligence: On-Demand Deep Learning Model Co-Inference with Device-Edge Synergy 边缘智能:设备-边缘协同进行按需深度学习模型联合推理2、BranchyNet: Fast Inference via Early Exiting from Deep Neural Networks参考博客:边缘智能:基于边缘计算的深度学习模型推断加速方法Introduction现有挑战:现在的DNN在各个领域取得了
2020-09-21 11:20:39
1022
原创 Leetcode经典题目----字符串
1. 两个字符串包含的字符是否完全相同242. Valid Anagram (Easy)s = “anagram”, t = “nagaram”, return true.s = “rat”, t = “car”, return false.可以用 HashMap 来映射字符与出现次数,然后比较两个字符串出现的字符数量是否相同。由于本题的字符串只包含 26 个小写字符,因此可以使用长度为 26 的整型数组对字符串出现的字符进行统计,不再使用 HashMap。方法一:class Solution
2020-08-16 16:38:11
469
1
原创 Leetcode经典题目----链表
1、找出两个链表的交点160. Intersection of Two Linked Lists (Easy)代码实现:注意:不会出现死循环,因为等到他们都走到末尾的时候,l1=l2=null,会退出循环从而返回nullpublic class Solution { public ListNode getIntersectionNode(ListNode headA, ListNode headB) { ListNode l1 = headA, l2 = headB;
2020-08-15 15:12:51
495
原创 Java自定义栈、链表、二叉树结构
一、使用数组自定义栈结构public class MyStack { int[] elements; public MyStack(){ elements = new int[0]; } public void push(int element){ int[] newArr = new int[elements.length+1]; for(int i=0;i<elements.length;i++){
2020-08-12 15:56:59
421
原创 经典数据结构排序算法之Java实现
一、冒泡排序算法分析:(1)由此可见:N个数字要排序完成,总共进行N-1趟排序,每i趟的排序次数为(N-i)次,所以可以用双重循环语句,外层控制循环多少趟,内层控制每一趟的循环次数(2)冒泡排序的优点:每进行一趟排序,就会少比较一次,因为每进行一趟排序都会找出一个较大值。如上例:第一趟比较之后,排在最后的一个数一定是最大的一个数,第二趟排序的时候,只需要比较除了最后一个数以外的其他的数,同样也能找出一个最大的数排在参与第二趟比较的数后面,第三趟比较的时候,只需要比较除了最后两个数以外的其他的数,以此
2020-08-12 12:11:24
515
原创 HashMap面试专题
1、Hash的概念将任意长度的输入通过散列算法之后映射成固定长度的输出。2、Hash冲突当关键字集合很大时(key的数量很多的时候),关键字值不同的元素可能会映像到哈希表的同一地址上,即K1!=K2,但f(K1)=f(K2),这种现象称为hash冲突,实际中冲突是不可避免的,只能通过改进哈希函数的性能来减少冲突。3、你认为好的Hash算法的点应该有哪些?(1)效率得高,做到长文本也能高效计算出Hash值(2)根据Hash值不能逆推出原文(3)两次输入,如果有一点不同也得保证Hash值是不同的
2020-08-03 12:16:36
1731
5
原创 Nacos注册中心、配置中心使用详解
一、配置中心介绍1、Spring Cloud Config Spring Cloud Config 为分布式系统的外部配置提供了服务端和客户端的支持方案。在配置的服务端您可以在所有环境中为应用程序管理外部属性的中心位置。客户端和服务端概念上的Spring Environment 和 PropertySource 抽象保持同步, 它们非常适合Spring应用程序,但是可以与任何语言中运行的应用程序一起使用。当应用程序在部署管道中从一个开发到测试直至进入生产时,您可以管理这些环境之间的配置,并确保应用程序
2020-07-14 20:26:07
11687
2
原创 SpringCloud Gateway整合Spring Security实现用户权限管理
一、SpringCloud Gateway实现基本的服务转发、跨域处理等功能(默认实现了负载均衡)一、网关基本概念1、API网关介绍 API 网关出现的原因是微服务架构的出现,不同的微服务一般会有不同的网络地址,而外部客户端可能需要调用多个服务的接口才能完成一个业务需求,如果让客户端直接与各个微服务通信,会有以下的问题:(1)客户端会多次请求不同的微服务,增加了客户端的复杂性。(2)存在跨域请求,在一定场景下处理相对复杂。(3)认证复杂,每个服务都需要独立认证。(4)难以重构,随着项目的迭代
2020-07-14 16:47:02
30749
15
原创 Canal环境搭建(几乎帮你避过所有的坑)
一、Canal介绍1、应用场景一般在统计分析功能中,我们会采取Feign服务调用获取统计数据,这样耦合度高,效率相对较低,目前采取另一种实现方式,通过实时同步数据库表的方式实现,例如我们要统计每天注册与登录人数,我们只需把会员表同步到统计库中,实现本地统计就可以了,这样效率更高,耦合度更低,Canal就是一个很好的数据库同步工具。canal是阿里巴巴旗下的一款开源项目,纯Java开发。基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了MySQL。2、Canal环境搭建canal
2020-07-08 12:56:56
2753
原创 SpringBoot定时任务+Echarts
一、定时任务+Echarts最近做到后台统计功能,有一个需求:需要把数据库的统计信息每天凌晨1点将数据库的一些统计信息写入到另一个表statistics中,因此使用到了定时任务。在管理端需要图表展示,使用到了echarts,记录一下。StatisticsController@RestController@RequestMapping("/mallservice/statistics")@CrossOriginpublic class StatisticsController { @Au
2020-07-08 11:55:36
675
原创 RabbitMQ死信队列对超时未支付订单进行交易关闭处理
一、前沿介绍死信队列由三大核心组件组成:死信交换机+死信路由+TTL(消息存活时间~非必需的),而死信队列又可以由“面向生产者的基本交换机+基本路由”绑定而成,故而生产者首先是将消息发送至“基本交换机+基本路由”所绑定而成的消息模型中,即间接性地进入到死信队列中,当过了TTL,消息将“挂掉”,从而进入下一个中转站,即“面下那个消费者的死信交换机+死信路由”所绑定而成的消息模型中。如下图所示:1、项目目录结构2、引入相关依赖<!--SpringBoot 整合RabbitMq-->&l
2020-07-03 22:24:23
2041
原创 Vue+ElementUI 实现三级省市联动(附带数据)
HTML部分:js部分:datamethods方法部分计算属性computed computed: { getTotal(){ return this.myCarts.reduce((a,b) =>{ return a + b.price * b.quantity; },0); },
2020-06-24 15:26:01
1555
原创 Vue实现底部按钮点击加载更多功能
分两种情况,第一种是一次请求所有数据并分批展示;第二种是分批次请求数据。1、一次请求1.1 页面使用slice来进行限制展现从0,a的数据:<div v-for="product in productLists.slice(0,pageSize)" :key="product.id" class="product -item">//判断a的值是否小于数组的长度,小于就显示点击加载更多<div class="load-more mr-bottom" v-if="a<prod
2020-06-24 11:51:00
1697
原创 微信支付超详细教程(附商城订单处理逻辑)
1、项目目录结构2、在pom.xml中引入相关依赖<dependencies> <!--微信支付相关依赖--> <dependency> <groupId>com.github.wxpay</groupId> <artifactId>wxpay-sdk</artifactId> <version>0.0.3</version>
2020-06-20 22:49:08
2169
原创 微信扫码登录超详细教程
1、OAuth2介绍2、OAuth2解决什么问题(1)OAuth2提出的背景 照片拥有者想要在云冲印服务上打印照片,云冲印服务需要访问云存储服务上的资源。(2)图例 资源拥有者:照片拥有者 客户应用:云冲印 受保护的资源:照片3、方式一:用户名密码复制适用于同一公司内部的多个系统,不适用于不受信的第三方应用4、方式二:通用开发者key适用于合作商或者授信的不同业务部门之间5、方式三:办法令牌接近OAuth2方式,需要考虑如何管理令牌、颁发令牌、吊销令牌,需要统一的协议
2020-06-19 17:40:56
7347
原创 vue后端模板、vue登录界面、注册界面(带短信验证码)模板
注册页面<template> <div class="main"> <div class="title"> <a href="/login">登录</a> <span>·</span> <a class="active" href="/register">注册</a> </div> <div class="sign-
2020-06-16 08:38:57
5566
1
原创 SpringBoot整合SSO(single sign on)单点登录
1、单点登录三种常见的方式(1)Session广播机制(Session)(2)使用Cookie+Redis实现(3)使用token实现
2020-06-15 23:29:07
4490
原创 SpringBoot项目中使用Redis整合阿里云短信服务
1、引入相关依赖 <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core</artifactId> </dependency> <dependency> <groupId>com.aliyun</grou
2020-06-15 17:14:46
587
原创 记录:使用阿里云视频点播Vod实现上传本地视频
1.导入Maven依赖<dependencies> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core</artifactId> </dependency> <dependency> <groupId>com.aliyun.oss
2020-06-13 11:09:15
2147
1
原创 记录:使用ElementUI的分页功能前后端实现
一、前端(1) html部分<template> <div class="app-container"> 课程列表 <!--查询表单--> <el-form :inline="true" class="demo-form-inline"> <el-form-item> <el-input v-model="courseQuery.title" placeholder="课程名称"/
2020-06-11 12:00:28
1608
原创 Vue中封装网络请求
request.jsimport axios from 'axios'import { Message, MessageBox } from 'element-ui'import store from '../store'import { getToken } from '@/utils/auth'// 创建axios实例const service = axios.create({ baseURL: process.env.BASE_API, // api 的 base_url tim
2020-06-06 16:56:06
765
1
原创 使用EasyExcel添加分类数据到数据库
1、测试EasyExcel的Demo(1) 目录结构FakeData(定义Excel表头的类文件):@Datapublic class FakeData { @ExcelProperty(value = "学号",index = 0) private Integer sno; @ExcelProperty(value = "姓名",index = 1) private String name;}TestEasyExcel:public class Tes
2020-06-05 20:45:45
768
原创 日常记录:MybatisPlus自动填充+Swagger配置+全局时间设置+二级分类实现
目录结构:1、异常处理自定义异常类GuliException:/*自定义异常类*/@Data@AllArgsConstructor //生成有参构造函数@NoArgsConstructor //生成无参构造函数public class GuliException extends RuntimeException { private Integer code; //状态码 private String msg; //异常信息}全局异常处理GlobalExc
2020-06-04 23:12:23
949
原创 SpringBoot中定制统一结果返回
目录结构:ResultCode:public interface ResultCode { public static Integer SUCCESS = 20000; public static Integer ERROR = 20001;}//统一返回结果的类@Datapublic class R { @ApiModelProperty(value = "是否成功") private Boolean success; @ApiModelPro
2020-06-04 22:38:52
740
原创 阿里云OSS实现头像上传
目录结构:application.ymlserver: port: 8002spring: application: name: service-oss profiles: active: devaliyun: oss: file: endpoint: oss-cn-beijing.aliyuncs.com keyid: LTAI4G8q7nBEsUb1NxXC keysecret: 3FEJ5vh5EttqiiLdvi
2020-06-04 22:34:20
1484
原创 完美实现前端图片上传组件+富文本编辑器
<!-- 讲师头像 --><template> <el-form-item label="讲师头像"> <!-- 头衔缩略图 --> <pan-thumb :image="eduTeacher.avatar"/> <!-- 文件上传按钮 --> <el-button type="primary" icon="el-icon-upload" @click="imagecrop..
2020-06-04 22:24:48
2387
1
原创 Mybatis-Plus的使用详解
一、准备工作1、导入相关依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>mysql<
2020-05-30 13:55:48
1000
1
原创 帮你解读什么是Redis缓存穿透和缓存雪崩(包含解决方案)
作为一个内存数据库,redis也总是免不了有各种各样的问题,这篇文章主要是针对其中两个问题进行讲解:缓存穿透和缓存雪崩。并给出一些解决方案。这两个问题是基本问题也是面试常问问题。一、缓存穿透1、概念缓存穿透是指查询一个数据库一定不存在的数据。正常的使用缓存流程大致是,数据查询先进行缓存查询,如果key不存在或者key已经过期,再对数据库进行查询,并把查询到的对象,放进缓存。如果数据库查询对象为空,则不放进缓存。这里需要注意缓存击穿的区别,缓存击穿,缓存击穿是指缓存中没有但数据库中有的数据,并且某一个
2020-05-26 20:49:43
399
转载 ThreadLocal,你想了解的都在这里(进来瞧瞧不后悔)
写在开头 在 Java 的多线程模块中,ThreadLocal是经常被提问到的一个知识点。1.什么是 ThreadLocalprivate static final ThreadLocal<T> threadLocal = new ThreadLocal<T>(); ThreadLocal 为我们提供了线程安全的另一种思路,我们平常说的线程安全主要是保证共享数据的并发访问问题,通过sychronized锁或者CAS无锁策略来保证数据的一致性。2.ThreadLoca
2020-05-25 22:51:45
819
转载 Java 线程池内容,全在这里了
/** * 1.未使用线程池 */public class ThreadDemo { public static void main(String[] args) { List<Integer> list = new LinkedList<Integer>(); long startTime = System.currentTimeMillis(); for (int i = 0; i < 100000; i++..
2020-05-25 16:28:15
590
转载 Fork/Join 框架
因为1~10000求和,耗时较少。下面我们将数据调大,求和1 ~ 59999999999(599亿),然后来对比一下使用 Fork/Join求和 和 普通求和之间的效率差异。1.普通求和public class ForkJoinDemo { public static void main(String[] args) { //开始时间 Long start = System.currentTimeMillis(); long sum ...
2020-05-25 16:26:57
366
转载 MySQL性能优化详解
1、Mysql中,可以使用SHOW STATUS语句查询一些Mysql数据库的性能参数。****SHOW STATUS语句语法如下所示:SHOW STATUS LIKE ‘value’;其中,value是要查询的参数值,一些常用的性能参数如下:a、Connections,连接mysql服务器的次数。b、Uptime,mysql服务器的上线时间。c、Slow_queries,慢查询的次数。d、Com_select,查询操作的次数。e、Com_insert,插入操作的次数。f、Com_updat
2020-05-24 21:56:02
523
原创 JVM学习笔记(二)(类加载与字节码技术),看这篇文章就够了
1_ 类文件结构01_01_什么是JVM02_学习JVM有什么用?03_常见的JVM04_学习路线2_ 字节码指令01_程序计数器(线程私有)02_虚拟机栈(线程私有)03_本地方法栈(线程私有)04_堆(线程共享)05_方法区(线程共享)06_直接内存3_ 编译期处理01_判断对象是否可以回收1_类文件结构一个简单的 HelloWorld.java执行 javac -parameters -d . HellowWorld.java编译为 H..
2020-05-20 14:46:49
568
原创 JVM学习笔记(一)(JVM介绍、JVM内存结构、垃圾回收),看这篇文章就够了
JVM学习笔记(JVM从入门到实战),看这篇文章就够了1_介绍01_01_什么是JVM02_学习JVM有什么用?03_常见的JVM04_学习路线2_内存结构01_程序计数器(线程私有)02_栈-线程栈(线程私有)03_本地方法栈(线程私有)04_堆(线程共享)05_方法区(线程共享)06_直接内存3_垃圾回收01_判断对象是否可以回收02_回收算法03_分代回收03_1相关VM参数04_垃圾收集器04_1相关VM参数04_2吞吐量优先回收
2020-05-18 16:29:15
514
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人