<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[技术成就梦想]]></title><description><![CDATA[快乐编程]]></description><link>https://blog.youkuaiyun.com/chenwill3</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; chenwill3]]></copyright><item><title><![CDATA[使用微信支付v3实现jsapi和扫码支付]]></title><link>https://blog.youkuaiyun.com/chenwill3/article/details/119416154</link><guid>https://blog.youkuaiyun.com/chenwill3/article/details/119416154</guid><author>chenwill3</author><pubDate>Thu, 05 Aug 2021 14:25:35 +0800</pubDate><description><![CDATA[一 和旧版的差异

1 数据交互格式由原先的xml改为json

2 接口请求方式由原来的无需额外请求头变为需要Authorization请求头

3 几乎所有接口都需要使用证书计算签名或者Token

4 支付回调使用AES-256-GCM进行加密，安全性提高

5 扫码支付无需再设置扫码回调url

6 无需像之前一样调用长链接转短链接接口提高扫码支付识别成功率

总体来说变化还是挺大的，开发时只需要正确计算token和签名就没什么问题了

开发前必读：https://pay.weixin.qq.com]]></description><category></category></item><item><title><![CDATA[spring boot整合apollo配置中心]]></title><link>https://blog.youkuaiyun.com/chenwill3/article/details/112182261</link><guid>https://blog.youkuaiyun.com/chenwill3/article/details/112182261</guid><author>chenwill3</author><pubDate>Mon, 04 Jan 2021 16:37:33 +0800</pubDate><description><![CDATA[一 常用配置中心

随着分布式项目架构的流行，项目的配置信息管理变得越来越重要，好在市面上也涌现出众多优秀配置中心产品如nacos、apollo、disconf . 配置中心产品可根据实际需要选择，如果项目使用阿里系技术栈较多则推荐nacos, 其他情况下apollo则是较好的选项

二 apollo的安装、启动和基本使用

参考链接：https://ctripcorp.github.io/apollo/#/zh/deployment/quick-start

如果比较偏开发上面的参考链接差不多就够用...]]></description><category></category></item><item><title><![CDATA[spring cloud使用seata实现分布式事务控制]]></title><link>https://blog.youkuaiyun.com/chenwill3/article/details/109870937</link><guid>https://blog.youkuaiyun.com/chenwill3/article/details/109870937</guid><author>chenwill3</author><pubDate>Fri, 20 Nov 2020 23:07:02 +0800</pubDate><description><![CDATA[在spring cloud技术栈中分布式事务也是比较重要的一环，分布式事务的处理关系到了数据的一致性和完整性，所以微服务的开发分布式事务是必不可少的，这也对开发人员也是不小的挑战，好在市面上不缺分布式事务的解决方案，这些方案也各有优劣，本次将把seata作为分布式事务的解决方案来进行代码实现，在这之前我特意找了点资料给大家参考

分布式事务的三种解决方案： https://www.cnblogs.com/bluemiaomiao/p/11216380.html

seata原理解析：https://www.]]></description><category></category></item><item><title><![CDATA[spring-security-oauth2.0的使用入门]]></title><link>https://blog.youkuaiyun.com/chenwill3/article/details/109848390</link><guid>https://blog.youkuaiyun.com/chenwill3/article/details/109848390</guid><author>chenwill3</author><pubDate>Fri, 20 Nov 2020 16:35:37 +0800</pubDate><description><![CDATA[oauth2.0也是开发中用的比较多的一种授权机制，它主要用来颁发令牌；OAuth 引入了一个授权层，用来分离两种不同的角色：客户端和资源所有者。......资源所有者同意以后，资源服务器可以向客户端颁发令牌。客户端通过令牌，去请求数据。

通过上面对oauth的介绍，我们已经大概知道它的用途了，现在由于各种原因oauth1几乎已经没人再用了，目前用的较多的是oauth2.0; oauth2.0规定了四种获得令牌的流程，如下所示：


授权码（authorization-code）
	隐藏式（implici]]></description><category></category></item><item><title><![CDATA[spring boot整合spring security和jwt实现分布式认证和权限处理]]></title><link>https://blog.youkuaiyun.com/chenwill3/article/details/109811824</link><guid>https://blog.youkuaiyun.com/chenwill3/article/details/109811824</guid><author>chenwill3</author><pubDate>Thu, 19 Nov 2020 16:32:11 +0800</pubDate><description><![CDATA[spring security是spring官方比较推荐的用于认证和权限的解决方案，市面上做认证和权限的开发框架还有shiro，spring boot也提供了shiro的解决方案，本人在之前的开发中大多使用了shiro,但是spring security也是值得一学的，除了官方推荐的原因像spring oauth2.0也会用到它，所以学习一下还是很有必要的，本次将围绕spring security的认证授权、jwt进行学习分享

1 依赖的引入


&lt;!-- springsecurity的依赖 --&]]></description><category></category></item><item><title><![CDATA[spring cloud alibaba之sentinel入门]]></title><link>https://blog.youkuaiyun.com/chenwill3/article/details/109785528</link><guid>https://blog.youkuaiyun.com/chenwill3/article/details/109785528</guid><author>chenwill3</author><pubDate>Wed, 18 Nov 2020 21:31:17 +0800</pubDate><description><![CDATA[sentinel作为hystrix的替代品现在已慢慢融入我们的日常开发了，虽然阿里官方已经提供了开发文档等资料，但还是有许多地方需要注意，否则也容易出现问题。至于sentinel就不多说了，关于这方面的介绍还是比较多的，大家自行查阅资料即可

1 sentinel控制台的安装

参考资料：https://github.com/alibaba/spring-cloud-alibaba/wiki/Sentinel

github上的资料日常开发应该够用了，但站在严谨的角度还是差点意思，例如文档没有写明怎样自定义]]></description><category></category></item><item><title><![CDATA[nacos1.3.x的安装以及在spring cloud中的简单使用]]></title><link>https://blog.youkuaiyun.com/chenwill3/article/details/109721056</link><guid>https://blog.youkuaiyun.com/chenwill3/article/details/109721056</guid><author>chenwill3</author><pubDate>Mon, 16 Nov 2020 15:33:54 +0800</pubDate><description><![CDATA[一 nacos的下载和安装

参考资料： https://nacos.io/zh-cn/docs/quick-start.html

官方的参考资料写的比较简单，日常开发如果使用nacos作为本地开发环境或者生产环境我建议还需要做一下配置文件的修改，主要就是数据库连接的配置，这样下次启动nacos编写的配置文件会从数据库读取并加载，步骤如下

1 执行nacos提供的sql脚本到本地或云数据库

sql脚本一般放在nacos的conf目录中，我们只需把nacos-mysql.sql文件执行一下在数据库生成.]]></description><category></category></item><item><title><![CDATA[spring cloud服务注册与发现之consul]]></title><link>https://blog.youkuaiyun.com/chenwill3/article/details/109672327</link><guid>https://blog.youkuaiyun.com/chenwill3/article/details/109672327</guid><author>chenwill3</author><pubDate>Fri, 13 Nov 2020 12:49:27 +0800</pubDate><description><![CDATA[一 consul的使用背景

随着netflix项目进入维护模式，与之相关的技术都受到不同程度的影响,影响较大的应该是eureka，Hystrix了，因此我们不得不寻找与之相关的替代品，对于eureka的替代我们可以选择consul，nacos等等，本次给大家分享的是consul作为服务发现和注册中心的使用心得

二 consul的下载、安装和启动

下载地址： https://www.consul.io/downloads

默认下载也会根据当前电脑的操作系统提供下载，也可以按需下载对于的版本，直接下载.]]></description><category></category></item><item><title><![CDATA[springboot使用jasypt增加应用安全性]]></title><link>https://blog.youkuaiyun.com/chenwill3/article/details/105076875</link><guid>https://blog.youkuaiyun.com/chenwill3/article/details/105076875</guid><author>chenwill3</author><pubDate>Tue, 24 Mar 2020 18:06:36 +0800</pubDate><description><![CDATA[无论任何开发安全问题也是我们应该考虑的部分，除了数据接口层面的安全性，数据库用户名密码等敏感信息也是需要考虑安全问题，日常开发中大多数也习惯写明文，这样如果代码泄露数据库也面临较大威胁，本次将分享数据库用户名、密码如何在springboot项目中配置和使用

1解决方案

解决上述问题其实比较简单，无非就是对数据库用户名和密码加密，但是可用的加密算法特别多，有对称加密的如DES、3DES（Tri...]]></description><category></category></item><item><title><![CDATA[spark算子练习题-灵活使用常用算子1]]></title><link>https://blog.youkuaiyun.com/chenwill3/article/details/104733224</link><guid>https://blog.youkuaiyun.com/chenwill3/article/details/104733224</guid><author>chenwill3</author><pubDate>Sun, 08 Mar 2020 16:03:12 +0800</pubDate><description><![CDATA[spark里虽然算子众多，虽然不要求全部掌握，但是对于常用算子还是需要烂熟于心灵活运用，对于kv格式的RDD(Tuple2)则需要全部掌握否则对于数据的处理就没办法做了，针对这个情况可以自己找一些网上的spark练习题，然后用java的方式实现一遍，能自己写最好，如果不知道怎么写也要照着别人写的敲一遍逐字逐句好好理解。这次也趁这次机会分享下我自己做的练习题

1 第一题题目如下：

定义三个文件...]]></description><category></category></item><item><title><![CDATA[SparkSql读取csv实现统计功能]]></title><link>https://blog.youkuaiyun.com/chenwill3/article/details/104590706</link><guid>https://blog.youkuaiyun.com/chenwill3/article/details/104590706</guid><author>chenwill3</author><pubDate>Sun, 01 Mar 2020 13:30:23 +0800</pubDate><description><![CDATA[前面已经介绍过有关sparksql读取json文件取得DataSet的功能，但实际开发中除了json外还可以使用csv、数据库等作为sparksql的数据源，因为csv日常开发也用的很多所以借此机会把我的学习代码分享给大家

一 关于csv的schema

sparksql读取csv可以根据csv文件的第一行作为header自动推导出列名或schema,也可以通过手动的方式指定schema,自动推...]]></description><category></category></item><item><title><![CDATA[SparkSql使用入门]]></title><link>https://blog.youkuaiyun.com/chenwill3/article/details/104332172</link><guid>https://blog.youkuaiyun.com/chenwill3/article/details/104332172</guid><author>chenwill3</author><pubDate>Sat, 15 Feb 2020 19:19:59 +0800</pubDate><description><![CDATA[Spark SQL是spark套件中一个模板，它将数据的计算任务通过SQL的形式转换成了RDD的计算，类似于Hive通过SQL的形式将数据的计算任务转换成了MapReduce。

Spark SQL的特点：
1、和Spark Core的无缝集成，可以在写整个RDD应用的时候，配置Spark SQL来完成逻辑实现。
2、统一的数据访问方式，Spark SQL提供标准化的SQL查询。
3、Hive的继...]]></description><category></category></item><item><title><![CDATA[spark算子知识整理2]]></title><link>https://blog.youkuaiyun.com/chenwill3/article/details/104297855</link><guid>https://blog.youkuaiyun.com/chenwill3/article/details/104297855</guid><author>chenwill3</author><pubDate>Thu, 13 Feb 2020 16:50:39 +0800</pubDate><description><![CDATA[前面有关RDD的理论已经说过其中一点就是RDD是由一系列的分区组成，所以RDD也提供了和分区相关的一系列算子，这次需要整理的是分区迭代器、重设分区以及countByKey、groupByKey等算子


package com.debug;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator...]]></description><category></category></item><item><title><![CDATA[spark持久化]]></title><link>https://blog.youkuaiyun.com/chenwill3/article/details/104291805</link><guid>https://blog.youkuaiyun.com/chenwill3/article/details/104291805</guid><author>chenwill3</author><pubDate>Thu, 13 Feb 2020 10:49:36 +0800</pubDate><description><![CDATA[日常开发中每次读取大文件都比较费时费力，而每次的重复读取都是资源的浪费，针对这些问题spark也提供了持久化的解决方案，帮助我们解决诸如此类的效率问题，先来看一段我搜集到的资料：

RDD 持久化

Spark 中一个很重要的能力是将数据持久化（或称为缓存），在多个操作间都可以访问这些持久化的数据。当持久化一个 RDD 时，每个节点的其它分区都可以使用 RDD 在内存中进行计算，在该数据上的其他 ...]]></description><category></category></item><item><title><![CDATA[spark算子知识整理1]]></title><link>https://blog.youkuaiyun.com/chenwill3/article/details/104262312</link><guid>https://blog.youkuaiyun.com/chenwill3/article/details/104262312</guid><author>chenwill3</author><pubDate>Tue, 11 Feb 2020 14:37:34 +0800</pubDate><description><![CDATA[上一次分享提到的map、flatmap都归属于转换算子，foreach则属于Action算子；由于算在在spark中较为重要后续几次都是分享算子相关的东西，先来看一段代码


package com.debug;

import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaRDD;
import org.apac...]]></description><category></category></item><item><title><![CDATA[Spark使用parallelize方法创建RDD以及map、flatmap的区别]]></title><link>https://blog.youkuaiyun.com/chenwill3/article/details/104259287</link><guid>https://blog.youkuaiyun.com/chenwill3/article/details/104259287</guid><author>chenwill3</author><pubDate>Tue, 11 Feb 2020 11:10:04 +0800</pubDate><description><![CDATA[spark创建RDD常用的方法有两个分别是parallelize、parallelizePairs，parallelize用来生成普通格式的RDD,parallelizePairs用来生成kv格式的RDD


package com.debug;

import java.util.Arrays;
import java.util.List;

import org.apache.spark.Sp...]]></description><category></category></item><item><title><![CDATA[spark核心RDD的介绍和字数统计案例]]></title><link>https://blog.youkuaiyun.com/chenwill3/article/details/104219472</link><guid>https://blog.youkuaiyun.com/chenwill3/article/details/104219472</guid><author>chenwill3</author><pubDate>Sat, 08 Feb 2020 10:50:37 +0800</pubDate><description><![CDATA[RDD是spark的核心和重要组成，spark内部提供了丰富的算子供我们使用，节省了开发时间使得开发更为高效，从而让我们专注业务逻辑。因为spark丰富的算子使得它更适用于需要复杂计算的业务场景。这次将会分享一些关于RDD的概念和理论以及经典的字数统计案例


	RDD
	

	概念
	
RDD(Resilient Distributed Dateset)，弹性分布式数据集。


	RDD的五大特...]]></description><category></category></item><item><title><![CDATA[spark理论之运行模式]]></title><link>https://blog.youkuaiyun.com/chenwill3/article/details/104213970</link><guid>https://blog.youkuaiyun.com/chenwill3/article/details/104213970</guid><author>chenwill3</author><pubDate>Fri, 07 Feb 2020 19:05:08 +0800</pubDate><description><![CDATA[spark相比hadoop做了很多方面的优化，同时spark的job也支持提交到hadoop的yarn进行处理，同时也有属于自己的一套资源调度框架standalone.同时也支持其他常用的资源调度框架。


	Spark运行模式
	

	Local
	
多用于本地测试，如在eclipse，idea中写程序测试等。


	Standalone
	
Standalone是Spark自带的一个资源调度框...]]></description><category></category></item><item><title><![CDATA[spark2.4的安装和基本使用]]></title><link>https://blog.youkuaiyun.com/chenwill3/article/details/104208855</link><guid>https://blog.youkuaiyun.com/chenwill3/article/details/104208855</guid><author>chenwill3</author><pubDate>Fri, 07 Feb 2020 14:04:26 +0800</pubDate><description><![CDATA[安装之前我们先来看看资料上对spark的一些解释:

Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。Spark是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行计算框架，Spark拥有Hadoop MapReduce所具有的优点；但不同于MapReduce的是Job中间输出结果可以保存在内存...]]></description><category></category></item><item><title><![CDATA[go语言操作mysql数据库]]></title><link>https://blog.youkuaiyun.com/chenwill3/article/details/103370141</link><guid>https://blog.youkuaiyun.com/chenwill3/article/details/103370141</guid><author>chenwill3</author><pubDate>Tue, 03 Dec 2019 16:42:16 +0800</pubDate><description><![CDATA[Golang要操作mysql数据库，首先需要在当期系统配置GOPATH，因为需要使用go get命令把驱动包下载到GOPATH下使用。首先配置好你的GOPATH，执行以下命令，下载安装mysql驱动，下载完成之后会在GOPATH下的src/github.com目录下

安装命令：go get github.com/go-sql-driver/mysql

1 打开数据库连接，跟jdbc类似

...]]></description><category></category></item></channel></rss>