![](https://img-blog.csdnimg.cn/20190918140037908.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
java
java
云南吴小黑
这个作者很懒,什么都没留下…
展开
-
后端完成微信静默授权
【代码】后端完成微信静默授权。原创 2022-10-09 10:19:22 · 388 阅读 · 0 评论 -
微信H5拉起(跳转)微信小程序
main.js配置忽略wx-open-launch-weappVue.config.ignoredElements = ['wx-open-launch-weapp'];template<template> <view class="index-wrapper"> <view class="wrapper"> <view class="">点击下面按钮跳转</view> <wx-open-launch-wea.原创 2022-05-13 10:56:18 · 1990 阅读 · 0 评论 -
解决request的输入流只能读取一次(获取body中的数据)
定义一个RequestWrapper类继承HttpServletRequestWrapperpublic class RequestWrapper extends HttpServletRequestWrapper { private final String body; public RequestWrapper(HttpServletRequest request) { super(request); StringBuilder stringBui.原创 2022-05-07 09:29:18 · 796 阅读 · 0 评论 -
微信内嵌H5(uniapp)授权登录(静默授权)
1. 开发前准备注册微信公众号完成信息填写等;配置网页授权域名;2. 前端开发onLoad()中初始化临时codeonLoad(options) { this.initWechatParams();}initWechatParamsasync initWechatParams() { const _this = this; _this.loginParams.appId = "*****"; //解析URL的参数,获取临时code //code作为换取access_t原创 2022-03-25 14:53:49 · 3935 阅读 · 0 评论 -
微信通过txt文件验证服务器是否可用
控制器@GetMapping("/valid") @ResponseBody public void valid( HttpServletResponse response, @RequestParam(value = "signature") String signature, @RequestParam(value = "timestamp") String timestamp, @RequestParam(value = "nonce") .原创 2022-03-23 21:28:05 · 505 阅读 · 0 评论 -
微信内嵌H5(uniapp)授权登录(非静默授权)
1. 开发准备在微信后台配置网页授权域名(主要要解决的是微信校验txt文件,开发时在微信开发者工具,我使用的是natapp做域名解析,通过natapp穿透到本地开发测试)IP白名单(不记得需不需要这一步,不需要可以不配置)2. 前端开发第一步:获取临时code(REDIRECT_URI必须是微信后台配置过的网页授权域名)initWechat_H5() { const h5AppId = this.$mStore.getters.globalConfig.wechatH5AppId ||原创 2022-03-23 21:04:11 · 1795 阅读 · 0 评论 -
微信小程序(uniapp)获取用户位置信息及选择位置
1. 开发前准备注册微信小程序账号并配置相关信息;注册腾讯地图开放平台并完成应用创建等;下载qqmap-wx-jssdk.min.js放到项目中;2. 获取用户当前位置wx.getLocation// #ifdef MP-WEIXINthis.initLocationInfoMP();// #endif//初始化位置initLocationInfoMP() { const _this = this; wx.getLocation({ //type: 'gcj02', //wg原创 2022-03-23 20:35:57 · 2280 阅读 · 1 评论 -
微信内嵌H5(uniapp)获取用户位置信息及打开内置地图
public class Wechat2HTTPConverter extends MappingJackson2HttpMessageConverter {public Wechat2HTTPConverter() { List<MediaType> mediaTypes = new ArrayList<>(); mediaTypes.add(MediaType.TEXT_PLAIN); setSupportedMediaTypes(mediaTypes)原创 2022-03-23 18:01:37 · 3601 阅读 · 0 评论 -
RestTemplateConfig配置
@Configurationpublic class RestTemplateConfig {private RestTemplateBuilder restTemplateBuilder;public RestTemplateConfig(RestTemplateBuilder restTemplateBuilder) { this.restTemplateBuilder = restTemplateBuilder;}@Beanpublic RestTemplate restTem原创 2022-03-22 10:22:04 · 2223 阅读 · 0 评论 -
springboot异步处理,自定义线程池
线程池配置类@Configurationpublic class ThreadPoolConfig { @Bean("threadPoolTaskExecutor_1") public ThreadPoolTaskExecutor threadPoolTaskExecutor_1() { System.out.println("线程池threadPoolTaskExecutor1初始化===============>开始:"+ System.currentTi.原创 2022-03-09 18:54:25 · 393 阅读 · 0 评论 -
Random使用(实现解决Random低效的问题)
1. 方式一(不推荐,原因是:“Random”对象应该被重用,因为Random每次创建一个随机值时是低效的) ... Random random = new Random(); ...2. 方式二(非静态方法)public class StringUtil { private Random random = SecureRandom.getInstanceStrong(); public String getRandomString(int length) {原创 2022-01-12 09:35:51 · 988 阅读 · 0 评论 -
JWT认证
在pom.xml中加入依赖<!-- jwt依赖 --><dependency> <groupId>com.auth0</groupId> <artifactId>java-jwt</artifactId> <version>3.4.0</version></dependency><!-- 相关一些依赖 --><dependency> .原创 2022-01-06 11:44:08 · 349 阅读 · 0 评论 -
java 方法重载和重写的区别
比较比较方法重写方法重载发生在父、子类中同一个类中方法名必须相同必须相同参数必须相同(个数、类型、顺序都必须相同)个数或者类型必须不同访问修饰符必须是public不限制访问修饰符类型子类的访问修饰符不能比父类更加严格可以改变访问修饰符异常处理子类的异常不能比父类更大、也不能比父类更多被重载的方法可以声明新的或更多的检查异常返回类型必须相同可以不同总结重载更加灵活,重写限制更多。参照一个网友的总结参.原创 2021-12-06 18:11:04 · 151 阅读 · 0 评论 -
后端通过session+注解鉴权
pom.xml文件导入依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <version>2.3.5.RELEASE</version></dependency><dependency> .原创 2021-12-02 17:58:59 · 243 阅读 · 0 评论 -
前后端分离项目通过header参数鉴权
前端,在请求头加上鉴权参数const apiKey = '******'const echo = '随机字符串';const timestamp = new Date().getTime();headers: { 'Content-Type': 'application/json;charset=utf-8', 'Cache-Control': 'no-cache;max-age=0', 'Pragma': 'no-cache', 'x-echo-key': ech.原创 2021-11-25 19:07:25 · 992 阅读 · 0 评论 -
前后端分离项目通过注解+拦截器鉴权
注解类(Authorized.java)@Documented@Inherited@Target({ElementType.TYPE, ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)public @interface Authorized {}拦截器处理类(AuthInterceptor.java)public class AuthInterceptor extends HandlerInterceptorAdapte.原创 2021-11-25 19:29:32 · 423 阅读 · 0 评论 -
接口安全性处理
1.前端在header签名//引入md5加密import md5 from 'js-md5';const xEchoStr = '获取随机字符';const xTsStr = Date.now();const xApiKey = '接口KEY';headers: { 'Content-Type': 'application/json;charset=utf-8', //设置浏览器缓存时间 'Cache-Control': 'no-cache;max-age=0',原创 2021-09-06 13:02:57 · 150 阅读 · 0 评论 -
微信公众号(H5)授权登录
拿到临时code获取临时CODE网址:https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=snsapi_userinfo&state=012#wechat_redirect【实现代码如下】://helper.getURLParams解析URL的参数,获取临时codelet paramsO.原创 2021-08-12 10:39:21 · 1056 阅读 · 0 评论 -
微信小程序授权登录
前端调用wx.login()(uniapp调用uni.login())拿到临时code【代码实现如下】:uni.login({ success: res => { //res.code即为临时code if (!res.code) { uni.showToast('none', '初始化微信授权失败'); return; } //进行下一步... }});把临时code传到后台获取openId和sessionKey【代码实现如下】:Map<.原创 2021-08-12 11:00:55 · 82 阅读 · 0 评论 -
浏览器下载附件
第一种public void downPrintFile(String fileName, InputStream is, HttpServletRequest request, HttpServletResponse response) { try ( BufferedInputStream bis = new BufferedInputStream(is); BufferedOutputStream bos = new BufferedOutp.原创 2021-08-18 15:51:37 · 470 阅读 · 0 评论 -
两个点(经纬度)之间的距离计算
Java类计算/** * 根据经纬度,计算两点间的距离 * * @param longitude1 第一个点的经度 * @param latitude1 第一个点的纬度 * @param longitude2 第二个点的经度 * @param latitude2 第二个点的纬度 * @return 返回值2.0 单位千米(km) */ public static double getDistance(double longitude1, double latitude1,.原创 2021-08-12 11:40:40 · 445 阅读 · 0 评论 -
java中同步调用、异步调用和回调
1、java中同步调用理解:解决一个问题,需要按照步骤一步一步的完成。举例:有甲、乙、丙、丁4人参加400米接力赛,完成比赛,需要甲->乙->丙->丁的交接棒的过程,不能跳过,否则犯规。说明:这种就是典型的阻塞机制,无论如何,我们只能等待上一个任务的完成,如果上一个任务没有完成,我们只能继续等待,这样造成的问题是,我们会一直在浪费系统资源。2、java中异步调用理解:举例:3、java中回调理解:是一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接原创 2020-09-15 22:05:47 · 729 阅读 · 1 评论 -
在java中跳出多层循环的办法
1、在最外层设置标识,使用“break 标识符”跳出多层循环2、在最外层设置标识符跳出循环原创 2020-09-15 20:58:27 · 737 阅读 · 0 评论 -
重载和重写的区别
一、重载1、在同一个类中;2、方法名必须相同;3、参数列表不同,即参数类型不同、或个数不同、或顺序不同;4、与方法返回值和访问修饰符无关。二、重写1、在有继承的父、子类中、参数列表必须相同;2、父类方法访问修饰符不能为private;3、返回值小于等于父类;4、抛出的异常小于等于父类;5、访问修饰符大于等于父类(里氏代换原则)。...原创 2020-09-16 22:35:06 · 97 阅读 · 0 评论 -
Java中“==”和“equals()”
1、“==”基本数据类型,比较的是值,引用数据类型,比较的是内存地址(也就是说,引用数据类型比较不能用==,因为new实例化对象的时候,分配的内存空间是不相同的,内存地址也就不同)2、“equals()”equals() ,它的作用也是判断两个对象是否相等,一般有两种使用情况:情况1:类没有覆盖 equals() 方法。则通过 equals() 比较该类的两个对象时,等价于通过“==”比较这两个对象。情况2:类覆盖了 equals() 方法。一般,我们都覆盖 equals() 方法来两个对象原创 2020-09-16 22:57:21 · 192 阅读 · 0 评论 -
工具类中获取服务(service)实例
获取上下文(使用@Component标注类,并implements ApplicationContextAware@Componentpublic class ApplicationContextProvider implements ApplicationContextAware { /** * 上下文对象实例 */ private static ApplicationContext applicationContext; @SuppressWarn.原创 2020-10-19 11:20:17 · 995 阅读 · 0 评论 -
break、continue和return的作用和区别
1、breakbraek跳出当前循环,结束当前的循环体;2、continue跳出本次循环,进入并执行下一次的循环;3、renturnrenturn后面的代码不执行,直接结束当前的方法;原创 2020-09-15 19:49:23 · 420 阅读 · 1 评论 -
String、StringBuffer和StringBuilder的区别
1、String定义(初始化)后就不可再修改其值(每次对String值的修改都是返回新的String);线程安全性能最差2、StringBuffer可多次修改其值;线程安全,原因是StringBuffer的方法都是用了synchronized(同步锁)修饰;性能次之(多线程使用StringBuffer)3、StringBuilder可多次修改其值;非线程安全性能最好(但是只能是单线程使用StringBuilder)...原创 2020-09-21 15:48:57 · 183 阅读 · 0 评论 -
主从式Springboot集成分布式Springboot
项目介绍:集成项目:前端页面使用vue开发,后端使用maven构建的主从式springboot项目,实现开发(前端使用vs编辑器,后端使用idea编辑器)和部署(前端nginx部署,后端jar部署)都是完全分离。被集成项目:springboot+jsp的分布式项目,使用的数据库为MongoDB,项目难度大,启动项目部署复杂…。分析:功能集成,以jar方式集成;页面集成,使用iframe嵌套;数据库不做集成,具体问题具体分析。实现1、在集成项目的启动类上使用注解扫描被集成项目的包路..原创 2020-10-16 10:21:05 · 221 阅读 · 0 评论 -
3种常用的文件上传方式
第一种,使用formData对象input的type=file选择文件,返回file对象,封装成formData使用ajax上传,HTML代码如下: <input id="chooseFile" type="file" name="file" @change="uploadFile()"/>Js代码如下: uploadFile:function(){ var self = this; var fileM = document.querySelector("#choos.原创 2020-10-16 11:01:24 · 2152 阅读 · 0 评论 -
centos7.x安装jdk1.x
(1)下载jdk1.8(跳过登录下载) wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u141-b15/336fa29ff2bb4ef291e347e091f7f4a7/jdk-8u原创 2020-10-16 11:07:40 · 54 阅读 · 0 评论 -
java 生成小程序页面的访问链接
前言:小程序提供某个页面(如注册页面)给外界访问,直接提供是不可能的,需要把知道界面通过代码生成后,再提供给外访问。/** * generateLinkURL:https://api.weixin.qq.com/wxa/generate_urllink?access_token=ACCESS_TOKEN * 提供给外界访问的小程序界面:/pages/third-auth/wechat */ public ResponseBean generateUserRegUrl(String appId, S原创 2021-08-27 08:38:32 · 1859 阅读 · 1 评论 -
如何理解面向对象编程,它和面向过程有什么区别?
1、定义面向过程:面向过程编程,完成(实现)一个功能,需要步骤化的进行函数调用去实现。面向对象:首先理解,万物都是对象。那么对象都会有特征(属性、即数据)和能干什么(方法)。对象自身是内聚的,它只需要关注自身的数据,完成好自己的操作的,对外界呈现出自己的状态和行为即可;2、举例-大象装进冰箱面向过程:第一步:打开冰箱门;第二步:把大象赶紧去;第三步:关上冰箱门(简单,通俗易懂);面向对象:找一个人,把“大象装进冰箱”这件事情交给他去干即可。怎么理解呢?这个人,在java中就是一个对象原创 2020-09-15 21:27:18 · 347 阅读 · 0 评论 -
JVM(java虚拟机)、JRE(java核心类库)和JDK(java开发工具集)
JVMJava Virtual Machine是Java虚拟机,提供给java程序运行。Java程序需要运行在虚拟机上,不同的平台(Windows、linux)有自己的虚拟机,因此Java语言可以实现跨平台(java可以在不同的平台上运行)。JREJava Runtime Environment包括Java虚拟机和Java程序所需的核心类库等。核心类库主要是java.lang包:包含了运行Java程序必不可少的系统类,如基本数据类型、基本数学函数、字符串处理、线程、异常处理类等,系统缺省加载这个包。注原创 2020-09-10 22:19:02 · 2921 阅读 · 1 评论 -
数据类型分类:基本数据类型、引用数据类型
一、基本数据类型数值型整数类型:byte,short,int,long浮点类型:float,double字符型:char布尔型:boolean二、基本数据类型类(class)接口(interface)数组([])三、Java基本数据类型图...原创 2020-09-10 23:42:52 · 243 阅读 · 0 评论 -
apose授权的方式使用
配置pom.xml<dependency> <groupId>com.aspose</groupId> <artifactId>cells</artifactId> <version>20.4</version></dependency><dependency> <groupId>com.aspose</groupId> <.原创 2020-11-03 20:09:24 · 1757 阅读 · 0 评论 -
apose转PDF,去除水印操作
去除水印操作参考:https://www.cnblogs.com/rickiyang/p/11336268.htmlaspose使用教程maven引入被破解的版本(不推荐,推荐使用第2中方式)第一种:jar包在项目目录下。先把jar拷贝到项目目录下,然后在maven中配置依赖,代码如下:<dependency> <groupId>com.aspose</groupId> <artifactId>words</artifactId原创 2020-11-03 19:58:02 · 1971 阅读 · 4 评论 -
java中解释器和编译器
1、网友的解答java中引入了虚拟机的概念,即在机器和编译程序之间加入了一层抽象的虚拟机器。这台虚拟的机器在任何平台上都提供给编译程序一个的共同的接口。编译程序只需要面向虚拟机,生成虚拟机能够理解的代码,然后由解释器来将虚拟机代码转换为特定系统的机器码执行。在Java中,这种供虚拟机理解的代码叫做字节码(即扩展为.class的文件),它不面向任何特定的处理器,只面向虚拟机。每一种平台的解释器是不同的,但是实现的虚拟机是相同的。Java源程序经过编译器编译后变成字节码,字节码由虚拟机解释执行,虚拟机将每一条原创 2020-09-10 23:13:59 · 685 阅读 · 0 评论 -
java中封装、继承和多态特性
java的三大特性1、封装就是把对象(人)的属性(姓名、年龄、性别…)和操作(吃饭、穿衣…)结合为一个独立的整体(这个整体其实就是javaBean),并尽可能隐藏对象的内部实现细节。public class Man { //对属性的封装,一个人的姓名,年龄,妻子都是这个对象(人)的私有属性 private String name; private int age; private Woman wife; //对该人对外界提供方法的封装,可以设定妻子,姓名,年龄也可以获得男人的姓名和年龄原创 2020-09-10 20:48:13 · 119 阅读 · 0 评论 -
如何理解“编程”?
如何理解“编程”?编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程。为了使计算机能够理解人的意图,人类就必须要将需解决的问题的思路、方法、和手段通过计算机能够理解的形式告诉计算机,使得计算机能够根据人的指令一步一步去工作,完成某种特定的任务。这种人和计算机之间交流的过程就是编程。...原创 2020-09-09 21:48:27 · 1198 阅读 · 0 评论