- 博客(32)
- 资源 (4)
- 收藏
- 关注
原创 开放API接口签名验证,让你的接口从此不再裸奔
接口安全问题请求身份是否合法? 请求参数是否被篡改? 请求是否唯一?AccessKey&SecretKey (开放平台)请求身份为开发者分配AccessKey(开发者标识,确保唯一)和SecretKey(用于接口加密,确保不易被穷举,生成算法不易被猜测)。防止篡改参数签名按照请求参数名的字母升序排列非空请求参数(包含AccessKey),使用URL键值对的格式...
2019-03-26 17:15:36 512
原创 Nginx设置X-Forwarded-For于$proxy_add_x_forwarded_for 的两种情况
1、X-Forwarded-For的定义:X-Forwarded-For:简称XFF头,它代表客户端,也就是HTTP的请求端真实的IP,只有在通过了HTTP 代理或者负载均衡服务器时才会添加该项。它不是RFC中定义的标准请求头信息,在squid缓存代理服务器开发文档中可以找到该项的详细介绍。标准格式如下:X-Forwarded-For: client1, proxy1, proxy2从标...
2019-03-25 17:17:37 7813
原创 JVM调优之jstack找出最耗cpu的线程并定位代码
jstack可以定位到线程堆栈,根据堆栈信息我们可以定位到具体代码,所以它在JVM性能调优中使用得非常多。下面我们来一个实例找出某个Java进程中最耗费CPU的Java线程并定位堆栈信息,用到的命令有ps、top、printf、jstack、grep。第一步先找出Java进程ID,服务器上的Java应用名称为mrf-center:root@ubuntu:/# ps -ef | gr...
2019-03-21 14:55:57 648
原创 分布式CAP理论-如何保证C(Consistency)数据一致性
幂等重试,异步补偿 异步通知,主动轮询 SAGAS模式,逆向补偿离线检测,离线补偿
2019-03-20 13:49:29 672
原创 epoll 讲解
首先我们来定义流的概念,一个流可以是文件,socket,pipe等等可以进行I/O操作的内核对象。 不管是文件,还是套接字,还是管道,我们都可以把他们看作流。 之后我们来讨论I/O的操作,通过read,我们可以从流中读入数据;通过write,我们可以往流写入数据。现在假定一个情形,我们需要从流中读数据,但是流中还没有数据,(典型的例子为,客户端要从socket读如数...
2019-03-13 20:16:04 131
原创 nginx 防盗链
关于nginx防盗链的方法网上有很多教程,都可以用,但是我发现很多教程并不完整,所做的防盗链并不是真正的彻底的防盗链!一般,我们做好防盗链之后其他网站盗链的本站图片就会全部失效无法显示,但是您如果通过浏览器直接输入图片地址,仍然会显示图片,仍然可以右键图片另存为下载文件!依然可以下载?这样就不是彻底的防盗了!那么,nginx应该怎么样彻底地实现真正意义上的防盗链呢?首先,我们来看...
2019-03-13 19:51:46 134
原创 spring boot 配置文件加载顺序详解
1.项目内配置文件spring boot 启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文件–file:./config/–file:./–classpath:/config/–classpath:/以上是按照优先级从高到低的顺序,所有位置的文件都会被加载,高优先级配置内容会...
2019-03-04 14:47:15 1039
原创 linux生产服务器部署启动项目不产生nohup.out的方法
背景最近没事看了下生产环境下的一些定时任务,发现nohup.out的文件大小都快3~10G了,吓死人!而且还不不断的增加。然后我查了下,此文件也相当于日志文件,就是运行nohup ./XXX.sh &命令时,将项目的日志打印到nohup.out,而且一直是累加的,从不清空,导致十分巨大。我们项目本身就产生日志文件的,所以nohup.out 相当于是重复的。思路由于nohup.o...
2019-03-04 09:52:02 771
原创 后端接口的幂等性
在微服务架构下,我们在完成一个订单流程时经常遇到下面的场景:一个订单创建接口,第一次调用超时了,然后调用方重试了一次 在订单创建时,我们需要去扣减库存,这时接口发生了超时,调用方重试了一次 当这笔订单开始支付,在支付请求发出之后,在服务端发生了扣钱操作,接口响应超时了,调用方重试了一次 一个订单状态更新接口,调用方连续发送了两个消息,一个是已创建,一个是已付款。但是你先接收到已付款,然...
2018-12-12 20:34:06 287
原创 HashMap深度解析
最基本的结构就是两种,一种是数组,一种是模拟指针(引用),所有的数据结构都可以用这两个基本结构构造,HashMap也一样。当程序试图将多个 key-value 放入 HashMap 中时,以如下代码片段为例: HashMap<String,Object> m=new HashMap<String,Object>(); ...
2018-12-12 20:29:39 125
原创 35+个Java 代码性能优化分享
代 码优化,一个很重要的课题。可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像 大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用,但是,吃的小虾米一多之后,鲸鱼就被喂饱了。代码优化也是一样,如果项目着眼于尽快无BUG上线,那么 此时可以抓大放小,代码的细节可以不精打细磨;但是如果有足够的时间开发、维护代码,这时候就必须考虑每个可以...
2018-08-23 17:21:25 196
转载 redis设计幂等接口
幂等:幂等性是系统的接口对外一种承诺(而不是实现), 承诺只要调用接口成功, 外部多次调用对系统的影响是一致的. 声明为幂等的接口会认为外部调用失败是常态, 并且失败之后必然会有重试举个例子:有一个订单系统,对外提供了一个处理接口,如果有个订单001是要扣除用户的100块钱,那么订单001被多次调用,也只会处理成功一次,也就是只会扣除用户100块。也可以理解为去除重复调用订单的状态:a) 无记录b...
2018-05-18 14:54:11 657
原创 YAML详解 是什么
1. 认识 YAML YAML是一个类似 XML、JSON 的标记性语言。YAML 强调以数据为中心,并不是以标识语言为重点。因而 YAML 本身的定义比较简单,号称“一种人性化的数据格式语言”。1.1 YAML 的设计目标:人类容易阅读可用于不同程序间的数据交换适合描述程序所使用的数据结构,特别是脚本语言丰富的表达能力
2018-02-01 17:00:08 20632
原创 springboot+rabbitmq 整合实例
一、新建maven工程:springboot-rabbitmq 二、引入springboot和rabbitmq的依赖project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocat
2018-01-08 11:25:20 1000
原创 DataTables Requested unknown parameter
用Jquery DataTables进行前台数据的展示时,经常回出现诸如“DataTables warning: table id={id} - Requested unknown parameter '{parameter}' for row{row-index}”的错误,按照DataTables的提示,可以去 http://datatables.net/tn/4 找出错误的原因
2018-01-08 09:54:01 1663
原创 RabbitMQ 应用场景以及基本原理介绍
1.背景RabbitMQ是一个由erlang开发的AMQP(Advanved Message Queue)的开源实现。2.应用场景2.1异步处理场景说明:用户注册后,需要发注册邮件和注册短信,传统的做法有两种1.串行的方式;2.并行的方式 (1)串行方式:将注册信息写入数据库后,发送注册邮件,再发送注册短信,以上三个任务全部完成后才返回给客户端。 这有一个问题是
2017-12-29 11:09:17 240
原创 mysql中in与exists效率比较
这条语句适用于a表比b表大的情况select * from ecs_goods a where cat_id in(select cat_id from ecs_category); 这条语句适用于b表比a表大的情况select * from ecs_goods a where EXISTS(select cat_id from ecs_category b where
2017-12-17 18:04:07 2710
原创 rabbitMQ、activeMQ、zeroMQ、Kafka、Redis 的比较
Kafka作为时下最流行的开源消息系统,被广泛地应用在数据缓冲、异步通信、汇集日志、系统解耦等方面。相比较于RocketMQ等其他常见消息系统,Kafka在保障了大部分功能特性的同时,还提供了超一流的读写性能。针对Kafka性能方面进行简单分析,相关数据请参考:https://segmentfault.com/a/1190000003985468,下面介绍一下Kafka的架构和
2017-12-17 13:54:51 2942
原创 Redis作为消息队列与RabbitMQ的比较
简要介绍 RabbitMQRabbitMQ是实现AMQP(高级消息队列协议)的消息中间件的一种,最初起源于金融系统,用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。Redis是一个Key-Value的NoSQL数据库,开发维护很活跃,虽然它是一个Key
2017-12-17 13:52:50 9783 1
原创 maven创建项目缺少 maven-resources-plugin-2.6.jar 包。
第一次用maven创建项目,运行mvn compile报错,好像是缺少 maven-resources-plugin-2.6.jar 这个jar包。如下图:解决方案:1.清空C:\Users\yourname\.m2\repository 文件夹2.在setting.xml文件下配置 Central http://mirrors.ibiblio.org/
2017-10-19 21:28:40 14422 1
原创 maven项目更新后jdk变为1.5
如下图,在使用Maven构建项目时,生成的maven项目jdk默认使用的是jdk1.5。在手动修改了jdk之后,update project之后jdk又会变为1.5.或者用eclipse的Maven插件生成的也是1.5对于这种情况有两种办法,一是修改settings.xml,二是修改pom文件在手动修改了jdk之后,update project之后jdk
2017-10-19 20:14:58 4201
翻译 maven版本对应jdk版本要求
Release DateVersionRequired Java VersionLinks2017-02-283.5.0-alpha-1Java 7announce , release notes , reference documentation2015-11-143.3.9announce ,
2017-10-19 20:06:43 8488
原创 Spring MVC运行原理
1.Spring MVC概述:Spring MVC是Spring提供的一个强大而灵活的web框架。借助于注解,Spring MVC提供了几乎是POJO的开发模式,使得控制器的开发和测试更加简单。这些控制器一般不直接处理请求,而是将其委托给Spring上下文中的其他bean,通过Spring的依赖注入功能,这些bean被注入到控制器中。Spring MVC主要由DispatcherS
2017-09-28 21:09:11 337
原创 Spring MVC DispatcherServlet详解
一. DispatcherServlet是前端控制器设计模式的实现,提供Spring Web MVC的集中访问点,而且负责职责的分派,而且与Spring IoC容器无缝集成,从而可以获得Spring的所有好处。DispatcherServlet主要用作职责调度工作,本身主要用于控制流程,主要职责如下:1、文件上传解析,如果请求类型是multipart将通过MultipartReso
2017-09-28 21:04:28 458 1
原创 Struts2 流程详解
1.客户端发出一个HttpServletRequest请求2.这个请求经过一系列过滤器(ActionContextCleanUp、FilterDispatcher)3.FilterDispatcher询问ActionMapper来决定这个请求是否要调用某个Action。如果actionMapper决定要调用action,那么核心控制器就把请求的处理交给ActionProxy
2017-09-28 20:51:36 245
原创 Struts2 ActionContextClearUp详解
struts-cleanup org.apache.struts2.dispatcher.ActionContextCleanUp struts-cleanup /*ActionContextClearUp其实是Defer ClearUP.作用就是延长action中属性的生命周期,包括自定义属性,以便在jsp页面中进行访问,
2017-09-28 20:35:30 802
原创 Struts2中ActionContext、 ServletActionContext详解
1. ActionContextActionContext是被存放在当前线程中的,获取ActionContext也是从ThreadLocal中获取的。所以在执行拦截器、 action和result的过程中,由于他们都是在一个线程中按照顺序执行的,所以可以可以在任意时候在ThreadLocal中获取 ActionContext。ActionContext包括了很多信息,比如S
2017-09-28 20:28:52 429
原创 Struts2 FilterDispatcher核心控制器
1. 在 struts1.x 系列中 , 所有的请求是通过一个 servlet(ActionServlet) 来管理控制的 , 在 Struts2.X 而是经过一个Filter 来处理请求的。 Struts 2 将核心控制器设计成 Filter ,而不是一个普通 Servlet 。 因为设计者为了实现AOP(面向方面 编程)概念.struts1.x 中 action
2017-09-28 20:18:35 600
转载 Java 9新特性详解
Java 9 的模块化是颠覆性基于 Jigsaw 项目,这个新的富有争议性的模块化能力肯定会引来最前沿 Java 开发者的兴趣和尝试,即使会有更保守的开发者决定等待模块化的成熟。模块化-以 Java 平台模块系统的形式-将 JDK 分成一组模块,可以在运行时,编译时或者构建时进行组合。模块化被称为一个“可传递”的更改,它支持对模块间依赖的理解。Java 9 的模块化能让
2017-09-28 20:12:25 431
java文档
2011-08-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人