<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[java_oss的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/java_oss</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; java_oss]]></copyright><item><title><![CDATA[OCPP 1.6 接入实现文档]]></title><link>https://blog.youkuaiyun.com/java_oss/article/details/136237962</link><guid>https://blog.youkuaiyun.com/java_oss/article/details/136237962</guid><author>java_oss</author><pubDate>Thu, 22 Feb 2024 16:48:20 +0800</pubDate><description><![CDATA[OCPP（Open Charge Point Protocol）是一个开放的通信协议，用于充电站（Charge Point）与中央系统（Central System，如充电站管理系统或服务提供商平台）之间的通讯。本篇文档将详细阐述如何基于OCPP 1.6版本进行接入和实现。定义各类消息对象，例如等，它们都继承自一个基类MessageJava// 其他公共属性或方法...// 其他属性...// 其他属性...// ...// 其他计量值属性...]]></description><category></category></item><item><title><![CDATA[【springboot】静态方法读取yml配置文件，可根据不同环境动态读取]]></title><link>https://blog.youkuaiyun.com/java_oss/article/details/120308822</link><guid>https://blog.youkuaiyun.com/java_oss/article/details/120308822</guid><author>java_oss</author><pubDate>Wed, 15 Sep 2021 15:58:58 +0800</pubDate><description><![CDATA[springboot中读取配置文件的方式有很多种，我这里就不在叙述了；

背景：项目的common中有一个redis的工具类，因为很多模块用，不想在每个模块中都写一个redisconfig，并且使用的是工具类，静态加载的方式使用，但是如果用传统的读取方式如下：

RedisConfig：


package com.xx.xx.common.config;
import org.springframework.beans.factory.annotation.Value;
import org.spring]]></description><category></category></item><item><title><![CDATA[微信公众号支付报错：当前的url未注册解决方法(百分百解决不含糊)]]></title><link>https://blog.youkuaiyun.com/java_oss/article/details/86467733</link><guid>https://blog.youkuaiyun.com/java_oss/article/details/86467733</guid><author>java_oss</author><pubDate>Wed, 15 Sep 2021 14:54:37 +0800</pubDate><description><![CDATA[做微信支付难免会遇上各种各样的坑，当然你要是按照开发文档来肯定不会错，我再做微信支付时并没有遇上这个坑，反而是在做微信支付走建行聚合支付时遇到了这个坑，由于我没权限去设置回调地址，所以爬坑较累；

微信公众号H5调起支付时，点击支付按钮出现“当前页面的URL未注册”的提示。
解决办法：由于2017年8月1日微信官方把关于支付的信息转移到了商户平台：公众平台微信支付公众号支付授权目录、扫码支付回调U...]]></description><category></category></item><item><title><![CDATA[【问题记录】getWriter() has already been called for this response]]></title><link>https://blog.youkuaiyun.com/java_oss/article/details/120154256</link><guid>https://blog.youkuaiyun.com/java_oss/article/details/120154256</guid><author>java_oss</author><pubDate>Tue, 07 Sep 2021 11:32:01 +0800</pubDate><description><![CDATA[最近做公司的管理系统，发现登录的session过期以后，刷新页面，很多接口页面会报500错误，getWriter() has already been called for this response

起初没有在意，以往是页面中断了请求，导致的错误，后面发现调用接口，大面积（seesion过期后）会报错，并不影响会跳登录页面，但是这个500的弹框，很不友好，也很不爽；



决心查看一番：

查看后台日志详细错误信息如下：


in context with path [/owner] threw ex.]]></description><category></category></item><item><title><![CDATA[腾讯游戏登录和接入米大师游戏币托管模式支付（入坑指南，微信支付）]]></title><link>https://blog.youkuaiyun.com/java_oss/article/details/106472410</link><guid>https://blog.youkuaiyun.com/java_oss/article/details/106472410</guid><author>java_oss</author><pubDate>Mon, 01 Jun 2020 17:03:01 +0800</pubDate><description><![CDATA[登录我没遇到头疼的问题，主要是在支付上；

充值时序：



扣款时序：



坑1：请求地址https://ysdktest.qq.com/mpay/get_balance_m

签名时是需要在url前面拼接上“/v3/r”的，这个也不怪腾讯，他的文档太多了好几个版本，要怪就怪自己没看完他的全部文档



坑2：看上面的充值扣款时序图，实际充值服务端要做的就是下单时客户端要调用服务端的用户余额查询接口，支付成功后客户端通知服务端进行扣除用户余额调用；这里遇到的问题是手Q支付整个逻辑很顺利没有一点问题（参数]]></description><category></category></item><item><title><![CDATA[使用Python3爬虫抓取小说]]></title><link>https://blog.youkuaiyun.com/java_oss/article/details/103822711</link><guid>https://blog.youkuaiyun.com/java_oss/article/details/103822711</guid><author>java_oss</author><pubDate>Mon, 06 Jan 2020 13:46:12 +0800</pubDate><description><![CDATA[声明：本文只作为技术交流，看小说，请支持正版。

初试使用python自动抓取小说，由于看到同事ui妹子用手机看小说时总是用手机遮住上半部分在看（还以为在看什么见不得人的东西呢，了解后发现是很多小说网站为了盈利头发的广告 都是让人看了比较脸红的广告。。。。）

爬取指南

实现步骤

获取小说所有章节以及对应地址
	遍历所有章节地址，获取其标题以及内容
	最后，把内容写入文本
1.获取我们...]]></description><category></category></item><item><title><![CDATA[springboot整合shiro的session问题UnknownSessionException: There is no session with id]]></title><link>https://blog.youkuaiyun.com/java_oss/article/details/103700338</link><guid>https://blog.youkuaiyun.com/java_oss/article/details/103700338</guid><author>java_oss</author><pubDate>Wed, 25 Dec 2019 15:46:00 +0800</pubDate><description><![CDATA[报错信息如下


[2018-12-19 02:25:13.852][http-nio-8077-exec-8][DEBUG][org.apache.shiro.web.servlet.SimpleCookie][389]:Found 'SHRIOSESSIONID' cookie value [2387e612-1c34-44b5-b00f-faa2937e2c7f]
[2018-12-19 0...]]></description><category></category></item><item><title><![CDATA[Connection reset by peer的常见原因及解决办法]]></title><link>https://blog.youkuaiyun.com/java_oss/article/details/103699763</link><guid>https://blog.youkuaiyun.com/java_oss/article/details/103699763</guid><author>java_oss</author><pubDate>Wed, 25 Dec 2019 15:22:12 +0800</pubDate><description><![CDATA[1，如果一端的Socket被关闭（或主动关闭，或因为异常退出而 引起的关闭），另一端仍发送数据，发送的第一个数据包引发该异常(Connect reset by peer)。

Socket默认连接60秒，60秒之内没有进行心跳交互，即读写数据，就会自动关闭连接。

2，一端退出，但退出时并未关闭该连接，另一端如果在从连接中读数据则抛出该异常（Connection reset）。

简单的说就是在连...]]></description><category></category></item><item><title><![CDATA[一次@value取值失败的原因]]></title><link>https://blog.youkuaiyun.com/java_oss/article/details/100702463</link><guid>https://blog.youkuaiyun.com/java_oss/article/details/100702463</guid><author>java_oss</author><pubDate>Tue, 10 Sep 2019 16:18:55 +0800</pubDate><description><![CDATA[springboot 中@value("${user}")或者使用@value("${username}")结果取值取到的是我电脑系统用户的名称，之前没细究，今天查阅了一下原来是java里面有这个默认：

https://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html



最终通过另一种引入配置文件的方式解决；...]]></description><category></category></item><item><title><![CDATA[springBoot 使用自定义配置文件集成 redis]]></title><link>https://blog.youkuaiyun.com/java_oss/article/details/97934470</link><guid>https://blog.youkuaiyun.com/java_oss/article/details/97934470</guid><author>java_oss</author><pubDate>Wed, 31 Jul 2019 17:18:04 +0800</pubDate><description><![CDATA[springBoot用官方的那种方法集成redis比较简单，今天大佬非要让用自定义配置文件去集成redis，这样子反而变的麻烦了点，甚至有点违背springboot的原则了；

依赖jar：

只贴了redis的；


&lt;!-- redis --&gt;
		&lt;dependency&gt;
			&lt;groupId&gt;redis.clients&lt;/groupId&gt;
...]]></description><category></category></item><item><title><![CDATA[微信分享海报、头像、图片、二维码合成（java）]]></title><link>https://blog.youkuaiyun.com/java_oss/article/details/92663052</link><guid>https://blog.youkuaiyun.com/java_oss/article/details/92663052</guid><author>java_oss</author><pubDate>Mon, 17 Jun 2019 17:55:33 +0800</pubDate><description><![CDATA[最近做一个微信小应用，最后的保存分享海报页面，需要将海报上面展示当前用户的微信头像，二维码、添加参数等，最终合成一张海报展示，分享使用：

需求原型：







如上图所示：就是在原始海报上叠加上当前登录用户的相关信息等，输出成图片进行展示：

直接上代码：分享图片操作工具类


SharedImageUtils


package com.javen.utils;

import java...]]></description><category></category></item><item><title><![CDATA[微信自定义分享（java）config:fail,Error: invalid signature，updateTimelineShareData:fail the permission value]]></title><link>https://blog.youkuaiyun.com/java_oss/article/details/92654779</link><guid>https://blog.youkuaiyun.com/java_oss/article/details/92654779</guid><author>java_oss</author><pubDate>Mon, 17 Jun 2019 17:37:28 +0800</pubDate><description><![CDATA[之前做过一次自定义分享，可能碰巧前端没问题，各个参数碰巧都是对的，整个过程很顺利；

可最近做另个微信应用的自定义分享遇到的坑，找了老半天，最终解决，特记录一下；

异常1：config:fail,Error: invalid signature

异常2：updateTimelineShareData:fail the permission value is offline verifying
...]]></description><category></category></item><item><title><![CDATA[微信公众号退款，app微信退款，支付宝退款，浦发退款]]></title><link>https://blog.youkuaiyun.com/java_oss/article/details/90515699</link><guid>https://blog.youkuaiyun.com/java_oss/article/details/90515699</guid><author>java_oss</author><pubDate>Mon, 27 May 2019 10:57:10 +0800</pubDate><description><![CDATA[最近公司财务爸爸提需求，把三个支付退款api集成到公司系统里面去，由于之前api文档看的不够仔细，遇到很多坑，特此记录，分享给同样遇到坑的小伙伴：

商户能提供的是
appid 你的appid 也就是对于微信来说的唯一标示
appsecret 通过你的微信商户号进入就可以看到一个32位加密
key 商户的秘钥 这秘钥不是一开始就有的。需要你自己去设置，在设置的时候还需要与本商户号绑定的手机发下验证...]]></description><category></category></item><item><title><![CDATA[java多线程并行程序基础]]></title><link>https://blog.youkuaiyun.com/java_oss/article/details/88976343</link><guid>https://blog.youkuaiyun.com/java_oss/article/details/88976343</guid><author>java_oss</author><pubDate>Tue, 02 Apr 2019 17:12:54 +0800</pubDate><description><![CDATA[ 什么是线程
 线程的基本操作
 守护线程
 线程优先级
 基本的线程同步操作

什么是线程
– 线程是进程内的执行单元



线程的基本操作：











线程中断：









线程的基本操作：

suspend()方法和resume()方法建议不要使用，会导致如下图的永久挂起问题





守护线程设置：

设置守护线程setDaemon(true)，不能在...]]></description><category></category></item><item><title><![CDATA[使用 wait notify 实现一个队列，队列有2个方法，add 和 get 。add方法往队列中添加元素，get方法往队列中获得元素。队列必须是线程安全的。如果get执行时，队列为空，线程必须阻塞]]></title><link>https://blog.youkuaiyun.com/java_oss/article/details/88976035</link><guid>https://blog.youkuaiyun.com/java_oss/article/details/88976035</guid><author>java_oss</author><pubDate>Tue, 02 Apr 2019 17:03:10 +0800</pubDate><description><![CDATA[如题：

使用 wait notify 实现一个队列，队列有2个方法，add 和 get 。add方法往队列中添加元素，get方法往队列中获得元素。队列必须是线程安全的。如果get执行时，队列为空，线程必须阻塞等待，直到有队列有数据。如果add时，队列已经满，则add线程要等待，直到队列有空闲空间。
实现这么一个队列，并写一个测试代码，使他工作在多线程的环境下，证明，它的工作是正确的。给出程序和运...]]></description><category></category></item><item><title><![CDATA[现在有T1、T2、T3三个线程，你怎样保证T2在T1执行完后执行，T3在T2执行完后执行？使用join]]></title><link>https://blog.youkuaiyun.com/java_oss/article/details/88975849</link><guid>https://blog.youkuaiyun.com/java_oss/article/details/88975849</guid><author>java_oss</author><pubDate>Tue, 02 Apr 2019 16:56:45 +0800</pubDate><description><![CDATA[public class ThreadTest extends Thread{
	private int j = 1;
	public ThreadTest(String name){
		setName(name);
	}
	
	@Override
	public void run() {
		// TODO Auto-generated method stub
		//super.run...]]></description><category></category></item><item><title><![CDATA[微信开发之网页授权获取用户基本信息]]></title><link>https://blog.youkuaiyun.com/java_oss/article/details/87931373</link><guid>https://blog.youkuaiyun.com/java_oss/article/details/87931373</guid><author>java_oss</author><pubDate>Tue, 26 Feb 2019 11:12:17 +0800</pubDate><description><![CDATA[微信官方文档：网页授权获取用户基本信息
 

具体而言，网页授权流程分为四步：
1、引导用户进入授权页面同意授权，获取code
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxf0e81c3bee622d60&amp;amp;redirect_uri=http%3A%2F%2Fnba.bluewebgame.com%2Foauth_r...]]></description><category></category></item><item><title><![CDATA[Spring 无法获取注解Bean原因分析]]></title><link>https://blog.youkuaiyun.com/java_oss/article/details/83992734</link><guid>https://blog.youkuaiyun.com/java_oss/article/details/83992734</guid><author>java_oss</author><pubDate>Mon, 12 Nov 2018 15:27:38 +0800</pubDate><description><![CDATA[概述

在本文中，我将通过实例向你展示Spring 中org.springframework.beans.factory.NoSuchBeanDefinitionException 出现的原因。如果BeanFactory在Spring Context中没有找到bean的实例，就会抛出这个常见的异常。

Cause: No qualifying bean of type […] found for ...]]></description><category></category></item><item><title><![CDATA[Java的参数传递是「按值传递」还是「按引用传递」？]]></title><link>https://blog.youkuaiyun.com/java_oss/article/details/83617998</link><guid>https://blog.youkuaiyun.com/java_oss/article/details/83617998</guid><author>java_oss</author><pubDate>Thu, 01 Nov 2018 11:51:44 +0800</pubDate><description><![CDATA[当一个对象被当作参数传递到一个方法后，在此方法内可以改变这个对象的属性，那么这里到底是「按值传递」还是「按引用传递」? 
　　答：是按值传递。Java 语言的参数传递只有「按值传递」。当一个实例对象作为参数被传递到方法中时，参数的值就是该对象的引用的一个副本。指向同一个对象，对象的内容可以在被调用的方法内改变，但对象的引用(不是引用的副本) 是永远不会改变的。

 

Java的参数传递，不管是基...]]></description><category></category></item><item><title><![CDATA[Elasticserach6.3.2+logstash6.3.2+kibana6.3.2]]></title><link>https://blog.youkuaiyun.com/java_oss/article/details/83583620</link><guid>https://blog.youkuaiyun.com/java_oss/article/details/83583620</guid><author>java_oss</author><pubDate>Wed, 31 Oct 2018 15:12:19 +0800</pubDate><description><![CDATA[之前搭过旧版的ELk，用来做日志采集系统，后面为了便于维护，直接采用的阿里云的云服务分布式日志服务，现在由于订单表得数据量比较大，运营人员查询起来比较耗时，所以想用elk将订单集中到一个地方管理，提高查询效率；

1.安装elasticsearch 6.4.2

https://www.elastic.co/downloads/elasticsearch

官网下载就好了：



选择你要安装的版...]]></description><category></category></item></channel></rss>