自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 收藏
  • 关注

原创 使用Feign接口实现文件上传的解决方案

一般的情况下,后端有个微服务,暴露出一个文件上传的restful接口给前端,前端调用该接口获取上传后的链接以及oss key值完成上传。假设提供restful接口的这个服务叫做A,现在有个微服务B有个本地文件,需要将本地文件调用A文件文件上传接口上传到文件服务器,该如何做?一般情况下,一个文件上传的restful接口如下所示:......那对应的Feign接口就如下所示从直觉上来看,直接调用八成会出问题(笑),通过踩坑,我梳理了下后端调用Feign接口实现文件上传的改造点。

2023-11-06 16:23:03 1189

原创 Spring Security OAuth2.0认证授权三:使用JWT令牌

Spring Security OAuth2.0系列文章:Spring Security OAuth2.0认证授权一:框架搭建和认证测试Spring Security OAuth2.0认证授权二:搭建资源服务前面两篇文章详细讲解了如何基于spring boot + oath2.0搭建认证中心和资源中心,本篇文章将会讲解集成jwt以及将客户端信息和授权码信息保存到数据库。一、 JWT1. JWT简介JSON Web Token(JWT)是一个开放的行业标准(RFC 7519),它定义了一种简介

2021-01-11 23:05:06 943

原创 Spring Security OAuth2.0认证授权二:搭建资源服务

在上一篇文章Spring Security OAuth2.0认证授权一:框架搭建和认证测试 详细讲解了如何搭建一个基于spring boot + oauth2.0的认证服务,这篇文章将会介绍如何搭建一个资源服务。根据oath2.0协议内容,应当有一个资源服务管理资源并提供访问安全控制。1. 引入maven依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId&

2021-01-11 10:35:52 1142

原创 Spring Security OAuth2.0认证授权一:框架搭建和认证测试

一、OAuth2.0介绍OAuth(开放授权)是一个开放标准,允许用户授权第三方应用访问他们存储在另外的服务提供者上的信息,而不 需要将用户名和密码提供给第三方应用或分享他们数据的所有内容。1.stackoverflow和github听起来挺拗口,不如举个例子说明下,就以stackoverflow登录为例:我们登录stackoverflow,网站上会提示几种登录方式,如下所示[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-790bhoMV-1610076310218)(

2021-01-08 11:27:00 1540

原创 spring-boot使用hibernate validation 对参数进行优雅的校验

springboot天生支持使用hibernate validation对参数的优雅校验,如果不使用它,只能对参数挨个进行如下方式的手工校验,不仅难看,使用起来还很不方便:if(StringUtils.isEmpty(userName)){ throw new RuntimeException("用户名不能为空");}下面将介绍hibernate validation的基本使用方法。一、引入依赖这里在springboot 2.4.1中进行实验,引入以下依赖:<parent>

2020-12-29 13:46:55 1243

原创 使用 transmittable-thread-local 组件解决 ThreadLocal 父子线程数据传递问题

在某个项目中,需要使用mybatis-plus多租户功能以便数据隔离,前端将租户id传到后端,后端通过拦截器将该租户id设置到ThreadLocal以便后续使用,代码大体上如下所示:ThreadLocal<Integer> threadLocal = new InheritableThreadLocal<>();threadLocal.set(1);我在Controller层使用线程池取了租户id,代码大体上如下所示:ExecutorService executorServ

2020-12-26 21:26:50 1750

原创 win10新版wsl2的使用

win10新版wsl2的使用一、wsl2简介二、使用wsl21. 安装软件太慢了2. wsl2地址每次重新开机之后都会发生变化3.windows本地ssh登陆wsl24.局域网远程登陆wsl2三、在wsl中使用docker1.安装docker2.安装docker-compose本篇文章会介绍win10中wsl2的安装和使用以及遇到的常见问题比如如何固定wsl2地址等问题的总结。一、wsl2简介wsl是适用于 Linux 的 Windows 子系统,安装指南:适用于 Linux 的 Windows 子系

2020-12-22 20:43:15 3142

原创 node.js 学习笔记004:使用eventproxy控制并发

原文地址:lesson4 : 使用eventproxy控制并发 在上一篇博客中达到了使用superagent和cheerio实现了简单网络爬虫的程序,现在的新需求是在上一个程序的基础上获取到每一个文章的第一条评论,这样难度就稍稍有些增加了一、安装eventproxy eventproxy是nodejs中控制并发的一大利器 eventproxy在github:https://gith

2016-04-17 16:24:22 1585

原创 node.js 学习笔记003 :使用superagent和cheerio实现简单网页爬虫

superagent能够实现主动发起get/post/delete等请求 cheerio则能够对请求结果进行解析,解析方式和jquery的解析方式几乎完全相同 superagent网址:http://visionmedia.github.io/superagent/ cheerio网址:https://github.com/cheeriojs/cheerio1.安装superag

2016-04-16 18:24:31 2081

原创 node.js 学习笔记002 : 使用utility实现字符串加密

学习目标: 1.使用utility实现对字符串的md5加密和sha1加密 2.了解package.json配置文件的作用 3. 使用req.query获取request信息一、package.jsonpackage.json配置文件:作者是谁、项目名称、git repo地址、项目依赖,最重要的当然是项目依赖,服务器只需要拿到package.json文件就能自动下载所有需

2016-04-16 17:20:14 3058

原创 node.js 学习笔记001 :Hello,world !

node.js使用express框架实现第一个hello,world程序。

2016-04-16 16:14:38 510

原创 【 史上最坑爹的Java代码系列02 】Java中的三种代码块

Java中有三种代码块,三种代码块中的代码执行的优先级是面试中会被提问到的问题。三种代码块:静态代码块、方法代码块、普通代码块其中,普通代码块是比较少见而且比较少使用的。package com.kdyzm.demo;public class Main { static { System.out.println("静态代码块执行"); } public Ma...

2016-04-08 17:54:44 259

原创 【 史上最坑爹的Java代码系列01 】

学习Java有几年了,但是还是有些貌似“简单”的代码值得仔细推敲,仔细记录这些点点滴滴还是很有趣的!1.try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?public class Test1 { public static void main(String[] args) { ...

2016-02-12 15:15:06 442 1

原创 【数据结构】【图论】【最短路径】Dijkstra算法

一、核心思想       和Prime算法的思想几乎相同,Prime算法中是使用lowcost数组保存到生成树之间的最短距离,Dijkstra算法中使用lowcost数组保存到第一个节点的最短路径。二、和Prime算法的不同之处       Dijkstra算法和Prime算法相似度达到了99%,和Prime算法相比,Dijkstra算法有以下几点不同之处:       1. ...

2016-01-24 14:21:30 359

原创 【数据结构】【图论】【最小生成树】Kruskal算法

一、Kruskal算法核心Kruskal算法和Prime算法一样也是计算最小生成树的一种算法。考虑问题的出发点: 为使生成树上边的权值之和达到最小,则应使生成树中每一条边的权值尽可能地小。具体做法: 先构造一个只含 n 个顶点的子图 SG,然后从权值最小的边开始,若它的添加不使SG 中产生回路,则在 SG 上加上这条边,如此重复,直至加上 n-1 条边为止。算法演示 ...

2016-01-24 10:41:53 235

原创 【数据结构】【图论】【最小生成树】Prime算法

一、问题最小生成树解决的问题如下所示:       假设要在 n 个城市之间建立通讯联络网,则连通 n 个城市只需要修建 n-1条线路,如何在最节省经费的前提下建立这个通讯网?       使用Prime算法构造最小生成树,将生成树上的边的权值累加即可得到最小值。二、Prime算法核心思想       取图中任意一个顶点 v 作为生成树的根,之后往生成树上添加新的顶点 w。...

2016-01-23 18:06:54 699

原创 【数据结构】【图论】DFS

      DFS(Depth-First-Search),中文名称为“深度优先搜索”,是纵向遍历图的一种递归算法。      需求:输入edgeCount、startNode,然后输入edgeCount组数据,每组数据有两个数node1与node2,表示一条无向边,最后使用DFS算法输出遍历图的结果,数和数之间使用空格隔开。一、Java代码import java.util.Sca...

2016-01-23 13:16:03 273

原创 【数据结构】【图论】BFS

BFS(Breadth First Search),中文名为宽度优先搜索,是横向遍历图的一种算法;这种算法必须借助队列才能够实现。需求:输入edgeCount,startNode,edgeCount代表图有多少条边,startNode代表遍历的起点,接下来输入edgeCount组数据,每组有两个数node1与node2,代表一条边;最后输出BFS算法得到的序列,数和数之间使用空格隔开。...

2016-01-22 22:37:30 268

原创 【数据结构】【线性表】逆序链表

       线性表逆序链表使用Java实现,实现思路和C语言中的实现思路一模一样,不赘述;和顺序链表不同的是,逆序链表不需要“尾指针”,这样就少了tail节点的定义;另外逆序链表中的head节点不能存储数据,它用来引导每个节点的插入位置。一、代码实现import java.util.Scanner;class Node{ int data; N...

2016-01-22 17:20:05 838

原创 【数据结构】【线性表】顺序链表

       使用Java实现顺序链表,其思路和使用C语言的思路一模一样,但是由于在Java中没有指针,实现起来还是有很大的区别。一、实现代码import java.util.Scanner;class Node{ int data; Node next=null;}public class OrderedLinkedList{ ...

2016-01-22 16:47:08 149

原创 【数据结构】【查找】二叉排序树

       使用二叉排序树查找效率也非常高,当然有更稳定的二叉平衡树,但是实现起来比较困难,所以这里只实现了二叉排序树;二叉排序树的特点如下:左子树中的所有节点值都小于父节点值右子树中的所有节点值都大于父节点值所有节点不允许出现重复,否则会破坏二叉排序树的数据结构二叉排序树的中序遍历的结果就是所有元素的排序结果二叉排序树是二叉树所以,使用二叉排序树不仅仅能够实现快...

2016-01-22 13:25:26 167

原创 【数据结构】【查找】二分查找

二分查找的核心思想就是根据有序数组的中间值判断目标所在的区间,每比较一次目标所在的范围都会缩小一半,当目标值和中间值相等的时候就找到了该目标值对应的数组下标,查找成功;当low&gt;heigh的时候,就表明没有找到对应的元素,查找失败。一、递归方式的二分查找import java.util.Scanner;public class BitSearch{ pu...

2016-01-22 11:05:39 136

原创 【数据结构】【二叉树】二叉树的创建和遍历

二叉树的创建有两种方式,一种是递归方式创建,另外一种是非递归方式创建,其中后者比较难,这里使用递归方式创建二叉树。要求:使用前序序列的方式输入若干个字符,如"abc,,de,g,,f,,,",其中,','表示是空节点,根据该字符序列输出前序遍历字符串,中续遍历字符串,后序遍历字符串。 分析问题,如果使用C语言比较方便实现,使用java稍微麻烦一点,需要手动结束输入,这里使用了...

2016-01-21 23:19:57 214

原创 【数据结构】【排序】堆排序

       堆排序核心思想是根据现有数组构建大顶堆或者小顶堆,堆顶元素就是该数组的最大值(大顶堆)或者最小值(小顶堆);将该最值按照顺序放到一个“有序区”中,然后将“无序区”中最后一个元素放到堆顶,不断调整使其满足大顶堆或者小顶堆的条件,调整过后处于堆顶的就是剩余无序区中的最大值或者最小值,将该值放入到有序区中......不断如此这般的调整,最终当“无序区”中的元素数量为0的时候,“有序区”...

2016-01-21 16:16:55 181

原创 【数据结构】【排序】希尔排序

       希尔排序是对直接插入排序算法的一种改进,其基本原理就是让一个无序的数列变得“基本有序”,那么在最后进行直接插入排序的时候时间复杂度将会降低很多(在理想情况下,如果一个数列是有序的,那么使用直接插入排序的算法时间复杂度为O(n));希尔排序算法的效率和“步长”的定义息息相关,但是如何给出一个步长使得希尔排序算法的效率最高,是非常困难的。import java.util.Scann...

2016-01-18 10:03:00 103

原创 【数据结构】【排序】折半插入排序

折半插入排序是对直接插入排序的升级算法,直接插入排序算法在大数据量面前排序效率是比较低的,折半插入排序的算法对直接插入排序算法的改进就是“查找插入位置”上的算法上的改进,由于需要查找的数据在数组上正好是有序的部分,那么可以非常方便的使用折半查找的算法查找插入的位置。import java.util.Scanner;public class BInsertSort{ public ...

2016-01-17 14:22:13 212

原创 【数据结构】【排序】插入排序

       插入排序的思想是将数组分为前面有序和后面无序两部分,每次取后面无序部分的第一个数插入到前面有序的部分中,使得插入之后前面有序的那一部分仍然有序。 import java.util.Scanner;public class InsertSort{ public static void main(String args[]){ Scanner scanner...

2016-01-17 11:09:44 102

原创 【数据结构】【排序】冒泡排序

       冒泡排序的思想是从前往后找最大值,然后将最大值放到最后,给人的感觉就像是气泡从水底升到水面的时候一点点膨胀变大的样子差不多,所以该排序算法的名字为“冒泡排序”;虽然核心依然是找最大值,但是找最大值的方法却有不同,如果只是普通的找最大值,只需要定义一个MaxValue保存第一个值,然后依次向后找即可;但是在冒泡排序中,找最大值的方法是"交换",相邻两个数进行比较,如果前者大于后者,则...

2016-01-17 09:56:44 150

原创 【数据结构】【排序】选择排序

       选择排序的核心思想就是从前往后依次找到最小的数放到前面,第一次找0~n-1之间最小的数放到0上;第二次找1~n-1之间最小的数放到1上,依次类推,但是只找n-1次,也是就是说最后一次不要找了,因为最后一个数字一定是有序的。import java.util.Scanner;public class SelectSort{ public static void mai...

2016-01-16 21:14:09 81

原创 【数据结构】【排序】归并排序

顾名思义,归并排序的核心思想就是“归并”,将两个有序的数列进行“二路归并”能够非常快速的实现合并成一个有序数列:public static void mergeArray(int[] array,int[] temp,int low,int midLoc,int high){ int i=low; int j=midLoc+1; int k=0; while(i&lt...

2016-01-16 18:43:45 136

原创 【数据结构】【排序】快速排序

       快速排序的原理就是使用某个中间值将数组切割成两部分,一部分比中间值都小,另一部分比中间值都大,这是一次排序的作用;分别对两部分进行同样的操作,直到只剩下一个数,这样最终的数组就变成了有序的。以下是java实现:package com.kdyzm.sort.quicksort;import java.util.Scanner;/** * 快速排序相关P2...

2016-01-16 10:38:00 214

原创 【java大文件复制】

用java复制大文件

2014-04-12 19:18:46 1410

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除