
开发技巧
muzi木子
把简单的事做好,就是不简单!
把平凡的事做好,就是不平凡!
展开
-
【开发技巧】-- MarkDown使用文档
1. MarkDown使用文档1.1 什么是MarkDown?MarkDown是一种非常简单的标记语言,它非常适合于程序员使用因为它支持很多非常好用的基础语法,并且它非常方便使用。1.2 为什么要使用MarkDown编写文档?说到编写文档我们最先想到的一定会是Word文档,但是对于我们程序员而言,我们的文档中往往都会有代码块、图片应用等一些文档元素,而Word文档对于代码块的处理支持的不是那么好,而MarkDown为我们解决了这样的问题,它支持插入代码高亮显示。1.3 快速入门MarkDown1原创 2020-08-03 00:04:08 · 354 阅读 · 0 评论 -
【心得分享】-- 关系型数据库中七种常见的join(连接)查询
1.1 什么是join查询?join查询,即连接查询,当我们需要查询两张或两张以上表的关联数据的时候就需要使用连接查询,数据库中的连接查询分为:内连接查询(INNER JOIN)、左外连接查询(LEFT OUTER JOIN 或 LEFT JOIN)、右连接查询(RIGHT OUTER JOIN或RIGHT JOIN)以及全连接查询(FULL OUTER JOIN)。1.2 内连接、外连接、全连接查询之间的区别是什么?类型描述图示INNER JOIN内连接查询,会把关联表中,有原创 2020-06-29 18:23:15 · 1924 阅读 · 1 评论 -
【经验分享】-- API安全设计-接口安全加密传输(对称加密与非对称加密)
1.1 为什么要对API接口进行加密?因为http协议是明文传输,它是不够安全的,比如进行get请求的时候,请求参数会直接附加在URL后边,即使是post请求其实也是不够安全的,如果用户连接了不安全的网络,这个时候黑客可能可以通过抓包工具直接获取请求信息,并且黑客可能对请求参数进行非法篡改,所以API接口加密就显得至关重要了!1.2 常见的接口加密方式有哪些?使用https协议(相比较与http协议,https协议加入了ssl证书,并且https是基于ssl的密文传输方式)、参数加密使用对称加密或非原创 2020-06-28 15:16:22 · 4052 阅读 · 0 评论 -
【开发技巧】-- SpringBoot快速整合ActiveMQ
1.1 什么是ActiveMQ?ActiveMQ是由Apache开源组织维护的一个消息中间件项目,它是基于JMS规范开发的一个消息中间件,它是由Java语言编写的。1.2 为什么要使用ActiveMQ?在分布式/微服务的系统中,有一部分业务是需要跨越多个服务进行执行的,所以会设计到服务与服务之间的调用,因为要跨越多个服务所以业务处理速度上会有些慢,而如果整合ActiveMQ的话可以将需要执行的业务信息放入队列中,这样服务可以快速响应。通过整合ActiveMQ可以实现:业务的解耦、流量的削峰、消息的异原创 2020-06-17 18:08:36 · 258 阅读 · 0 评论 -
【开发技巧】-- 一篇女朋友也能看懂的Spring整合第三方支付(微信支付-扫码支付实现篇)
1.1 为什么要在项目中使用微信支付?众所周知,支付宝与财付通(微信支付)是如今第三方支付的两大领头企业,同是微信是一个拥有大量用户群体的一个软件,在项目中整合微信支付在一定程度上可以方便用户购物支付。1.2 如何在Spring项目(SpringBoot)中整合微信支付?1.2.1 前置准备下载微信支付官方SDK,进行相关配置修改(比如自动装配,以适应SpringBoot开发环境)我这...原创 2020-04-07 10:39:21 · 1381 阅读 · 7 评论 -
【开发技巧】-- 什么你还在使用本地作为文件保存服务器?本文将带你了解,如何使用SpringBoot优雅的将文件上传至阿里云OSS、FastDFS(分布式文件系统)
1.1 业务背景当今互联网项目,需求日渐增多,并且应用服务器的压力也日渐增大,这时就引入了分布式系统的概念,然后又有了动静分离,即动态资源与静态资源分开,使后端的应用服务器专注业务请求的处理,并降低因为请求静态资源而为应用服务器带来的压力。1.2 文件上传的实现方式有哪些?直接上传到应用服务器(缺点:增加应用服务器的压力)。通过搭建私有云,比如通过FASTDFS搭建一个分布式文件系统。...原创 2020-04-02 16:25:55 · 1600 阅读 · 10 评论 -
【开发技巧】-- 一篇女朋友也能看懂的Spring整合第三方支付(支付宝篇)
1.1 业务背景当今互联网,涌现了许许多多的电子商务平台,比如淘宝网、京东、还有一些不知名的电商平台,但是并不是所有的公司都有与银行合作开发金融业务的资质,但是像一些互联网大厂就有这样的资质,比如蚂蚁金服的支付宝、腾讯的财付通以及京东金融,其他没有资质的公司那么要实现支付业务那么必须调用其他平台的一个交易接口。1.2 为什么要使用支付宝支付?支付宝是蚂蚁金服旗下的一个产品,它稳定、安全并且可...原创 2020-03-27 11:34:12 · 2117 阅读 · 14 评论 -
【开发技巧/经验分享】在Zuul网关服务中实现限流、用户鉴权(访问鉴权) 、跨域访问
1. 在zuul网关服务中实现限流1.1 为什么需要限流?限流是为了保证服务器的负载量处于正常状态,因为如果太多的访问量可能会直接导致服务的崩溃。1.2 如何实现限流1.2.1 令牌桶算法简介在zuul中实现限流是通过创建一个filter实现的,底层算法采用的是令牌桶算法,令牌桶会每秒往桶中投放一定数量的令牌,如果令牌桶中的令牌达到了临界值,新产生的令牌就会丢弃,当请求到达zuul网关后...原创 2020-02-19 14:05:11 · 2263 阅读 · 1 评论 -
【开发技巧/经验分享】使用zuul构建服务网关ApiGetaway
1. 什么是服务网关?服务网关就好比是一个请求的转发者,它能够根据相关的请求规则调用对应的服务提供者,它有点像nginx起到了一个代理的作用,使用服务网关可以实现限流、服务鉴权、请求处理、请求参数验证等操作。2. 什么是zuul?zuul是服务网关的实现之一,zuul作为一个边界性质的应用程序,它提供了动态路由、监控、弹性负载和安全功能。Zuul底层利用各种filter实现如下功能:认...原创 2020-02-17 22:17:48 · 1052 阅读 · 0 评论 -
【开发技巧/经验分享】使用SpringCloudStream操作RabbitMQ(内附重复消费的情况,并有相关解决方案)
1. 什么是SpringCloudStream?SpringCloudStream是SpringCloud中对于消息中间件操作的封装包,目前支持的消息中间件有RabbitMQ、Kafka,一下是SpringCloudStream的模型图。从上图可以发现消息的发送由output接口提供,消息的接收由input输入。应用程序与消息中间件通过Binder进行链接。2. 为什么要使用SpringC...原创 2020-02-16 20:45:49 · 1084 阅读 · 0 评论 -
【开发技巧/经验分享】SpringBoot快速使用RabbitMQ
1. 为什么需要使用MQ消息中间件?在实际开发中,有很多操作都是可以不同步执行的,比如邮件信息、短信的发送操作都不需要同步执行,还有一些服务的掉用也是可以不同步执行的,如果这一部分操作全都同步执行那么可能导致客户端阻塞的情况,并且会增加服务器的压力。而消息中间件就起到了一个,消息异步通知、流量削峰的作用。2. 主流的MQ中间件有哪些?ActiveMQ、RabbitMQ、Kafka等。3. ...原创 2020-02-16 17:43:48 · 262 阅读 · 0 评论 -
【开发技巧/经验分享】使用SpringCloudCofig实现远程配置管理(服务端、客户端实现)
1. 为什么需要需要远程配置管理?首先我们分析传统的配置管理,传统项目中我们的配置文件都是写死在项目中,如果更改一些配置可能导致整个应用需要重新编译,并且我们在开发中也是整个开发团队一起开发的,如果其中一个人修改了配置那么所有的配置都将受到影响,所以在这一方面会有配置冲突的问题,而下面要提到的SpringCloudConfig就是为了解决以上问题而衍生出来的。2. 如何使用SpringClou...原创 2020-02-14 17:00:01 · 334 阅读 · 0 评论 -
【开发技巧/经验总结】--使用RestTemplate的调用其他服务的方式
1. 什么是远程调用?远程调用指的就是,程序通过某种协议调用其他服务的一种方式,一般说远程调用有两种方式一种是基于HTTP的Restful轻量级通信,一种是基于RPC的远程调用方式。2. HTTP调用与RPC调用的区别是什么?http调用是发送一个http请求去调用服务接口,它的典型实现框架有SpringCloud,而RPC是一种高性能的远程调用方式,它比http调用性能更优,它的典型实现是...原创 2020-02-11 18:18:30 · 344 阅读 · 0 评论 -
【开发技巧/经验总结】--使用eureka实现服务注册与发现并且实现eureka服务的高可用(基于SpringBoot2.x版本)
1. eureka的介绍以及基本实现1.1 什么是eureka?eureka是netflix开发的一个服务注册发现组件,它是微服务中必不可少也是最基础的一部分。1.2 为什么要使用eureka?在SpringCloud中eureka对netflix的eureka进行了再次封装,使用起来更加方便与便捷,并且eureka支持异构化处理,也就说我们的调用者使用的底层语言可不必为Java,在其他语...原创 2020-02-09 21:18:17 · 353 阅读 · 0 评论 -
【开发技巧】-- 使用同步关键字sychronized与基于redis分布式锁分别实现秒杀业务
1. 秒杀业务下需要解决的问题有哪些?秒杀业务当然对于系统服务的可用性要求、以及数据的一致性是要求非常严格的,当然服务的高可以可以通过服务器集群化来解决,而数据的一致的的话这个解决起来要复杂很多,可能我们习惯会用sychronized来解决秒杀系统下的超卖问题,但是这样是有局限性的,sychronized会使得我们的服务器的请求响应速度变慢,并且sychronized并不适合分布式系统,而我们如...原创 2020-02-08 20:29:23 · 522 阅读 · 0 评论 -
【开发技巧】-- 实现websocket实现即时消息推送(后端基于SpringBoot实现)
1. 什么是WebSocket?websocket是HTML5中的即时通信解决方案,它使用客户端与服务器端的数据交互变得更加简单。2. 如何使用websocket使用websocket需要在客户端(网页中)编写相关客户端实现,然后还需要一个websocket后端服务实现。2.1 html websocket客户端实现<script> var webSocket=nul...原创 2020-02-07 13:03:26 · 424 阅读 · 0 评论 -
【开发技巧】-- SpringBoot使用LogBook打印http请求、响应信息
1. 什么是logbook?logbook是一个用于打印http请求信息的一个开源组件。2. 如何使用logbook? 【这里以SpringBoot项目为例】导入logbook相关maven依赖:<!-- LogBook依赖 我这里的版本是 <logbook.version>1.13.0</logbook.version> --><depen...原创 2020-02-01 13:24:49 · 2780 阅读 · 2 评论 -
【开发技巧】--SpringBoot使用CORS实现跨域访问
1.1 什么是CORS?CORS的英文全称为(Cross-Origin Resource Sharing,跨站资源访问),它是跨域名资源访问解决方案的一种。1.2 能够使用JSONP解决跨域为什么还要使用CORS解决跨域访问?首先JSONP只支持Get请求,而CORS对所有HTTP请求方法(GET、POST、PUT、DELETE、OPTIONS、HEAD、TRACE)都能够支持,并且CORS...原创 2020-01-12 21:22:42 · 376 阅读 · 0 评论 -
【开发技巧】--使用Swagger快速生成开发文档
什么是Swagger?Swagger是一个用于快速生成开发文档的工具,它能够跟着代码的变更而同步更新开发文档。为什么需要Swagger?在开发中需求是会经常变化的,需求快速的变更使得我们不得不同步更新相应的各种文档,而这无形之中增加了日常的工作量,而Swagger呢能够自动生成开发文档,并且会自动更新相关文档信息!开始使用Swagger导入Swagger相关依赖 <!-...原创 2020-01-11 21:06:01 · 427 阅读 · 0 评论