自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 资源 (8)
  • 收藏
  • 关注

原创 Redis客户端与服务端交互详解

Redis协议网络模型序列化协议inline commandsimple stringbulk stringerrorintegerarrayC/S 两端使用的协议数据类型请求/响应模式串行化实现pipeline实现事务模式1、入队/执行分离的事务原子性2、事务的一致性3、事务的只读操作4、乐观锁的可串行化事务隔离5、事务实现6、事务交互模式...

2018-07-31 23:15:09 6509

原创 Redis数据结构详解

valueObject通用结构string基本操作内存结构SDS结构buf 的扩容与缩容字节串与字符串SDS编码的优化使用场景List基本操作内存结构linkedlist实现ziplist实现Map基本操作内存结构HashTable 实现Hash表扩容ziplist 实现Set基本操作内存结构intsetSorte...

2018-07-28 11:28:42 1480 1

原创 Spring Security缓存请求详解

请求流程代码实现ExceptionTranslationFilterAbstractAuthenticationProcessingFilter我们在Java开发中,可能会经常使用到Spring Security来实现系统的权限控制。在企业级应用中,也有可能会使用Spring Security集成CAS来实现单点登录和权限控制。当然一些独立的系统(如人事管理系统等),也有...

2018-07-22 13:13:37 4844

原创 CentOS7安装MySQL5.7

下载 Mysql yum包安转软件源安装MySQL服务端启动MySQL检查运行状态修改临时密码获取临时密码登录并修改密码修改密码授权远程机器登录下载 Mysql yum包官方下载地址为:http://dev.mysql.com/downloads/repo/yum/wget http://repo.mysql.com/mysql57-commu...

2018-07-17 10:47:21 543

原创 IDEA配置Tomcat8远程调试

Tomcat8开启Debug端口1、修改catalina.sh2、修改start.sh3、防火墙开启9901端口/关闭防火墙IDEA配置添加Tomcat配置填写IP端口如果要用Eclipse或者IDEA远程Debug到测试服务器上面,首先需要开启Tomcat的调试端口。从原生的Tomcat来看,每个版本都有所不同,下面主要介绍一下Tomcat8的配置。T...

2018-07-17 10:43:06 4070

原创 分布式多级缓存

基本概念缓存数据的方式是否过期不过期缓存过期缓存细粒度缓存大Value缓存热点缓存基本概念所谓分布式多级缓存,就是指在整个系统的不同层级进行数据的缓存,以提升系统的访问速度。通常情况下,分布式系统的访问流程如下所示:接入层Nginx将请求负载均衡到应用层Nginx,常用的负载均衡算法是轮询/一致性哈希。轮询可以是请求更加的平均,一致性哈希可以...

2018-07-17 10:38:42 1947

原创 Nginx缓存配置

Nginx HTTP缓存设置expiresif-modified-sinceproxy_pass 流程Nginx代理层缓存HTTP模块配置proxy_cache 配置小结Nginx HTTP缓存设置Nginx提供了 expires、etag、if-modified-since 指令来实现浏览器缓存控制。expires如果我们使用了Nginx...

2018-07-17 10:34:10 1925

原创 HTTP缓存

HTTP缓存首次访问F5刷新Ctrl+F5强刷from disk cacheagevaryviaetag我们在使用浏览器加载网页时,往往一个网页浏览器就会发起多次请求。每个请求又会有很多的请求头和请求体,下面看一下一些常见的请求头/请求体。HTTP缓存首次访问当我们第一次请求服务器资源时,服务器会给出 200 的响应码。立即F5刷新后,如果浏...

2018-07-17 09:55:33 1327

原创 分布式缓存击穿(布隆过滤器 Bloom Filter)

缓存中无值(未宕机)互斥锁缓存永不过期缓存宕机白名单布隆过滤器代码实现前面的文章介绍了缓存的分类和使用的场景。通常情况下,缓存是加速系统响应的一种途径,通常情况下只有系统的部分数据。当请求了缓存中没有的数据时,这时候就会回源到DB里面。此时如果黑客故意对上面数据发起大量请求,则DB有可能会挂掉,这就是缓存击穿。当然缓存挂掉的话,正常的用户请求也有可能造成缓存...

2018-07-17 09:46:09 41361 5

原创 JetCache的简单使用

JetCache特点软件要求Boot项目配置maven依赖MySpringBootApp.javaapplication.yml方法缓存缓存API高级API异步API分布式锁读取并自动刷新传统项目配置今天我们来介绍一下由Alibaba开源的一款缓存框架JetCache。其号称比Spring Cache用起来更加好用,笔者用了之后发现确实比较好用。...

2018-07-17 09:23:03 13575

原创 分布式应用缓存使用模式

Cache-AsideCache-As-SoRRead-ThroughWrite-ThroughWrite-Behind在我们使用缓存时,有一些模式或者策略。其主要分为两大类,Cache-Aside:由业务代码直接维护缓存;Cache-As-SoR:把Cache作为数据源,所有的读写操作都是对Cache而言的,如果要执行持久化等操作,则是由Cache本身去处理。Cac...

2018-07-17 09:08:10 1161

原创 Spring Boot Thymeleaf非严格校验

application.yml使用Spring Boot时,大多数场景下都会使用thymeleaf作为模板文件。默认情况下,thymeleaf要求HTML格式必须为严格的html5格式,必须有结束标签,否则会报错。但是大多数情况下我们希望HTML没有严格的标签约束,解决办法如下。application.ymlspring: mvc: view: ...

2018-07-17 09:03:42 1999

原创 分布式应用缓存

缓存命中率缓存回收策略基于空间基于容量基于时间基于Java对象引用回收算法Java缓存类型堆内存Guava Cache实现Ehcache实现非堆内存磁盘缓存EhCache实现分布式缓存多级缓存示例代码多级缓存封装本地缓存初始化写缓存封装读缓存封装NULL Cache缓存是解决分布式提供高可用的利器之一,它可以大幅度的...

2018-07-17 08:59:27 940

原创 OpenResty动态负载均衡

ConsulConsul+Consul-templete方式Consul-Server注册服务Consul-template上游服务器测试验证Consul+Lua方式OpenResty配置在之前提到的OpenResty/Nginx的负载均衡当中,当服务器启动之后,upstream中的上游服务器就是固定死的了,做不到动态的变更。这里面说到的变更,其实更多指...

2018-07-16 10:22:46 5938

原创 Nginx负载均衡与反向代理

四层/七层负载均衡的区别upstream配置负载均衡算法失败重试健康检查TCP心跳检查HTTP心跳检查长连接配置其他配置域名上游服务器备份上游服务器不可用服务器配置示例全局配置(proxy cache)location配置我们使用Nginx时,大多数场景下使用的都是七层的HTTP负载均衡(ngx_http_upstream_module)。在...

2018-07-16 10:10:23 728

原创 分布式系统回滚机制

事务回滚发布回滚发布版本化增量发布灰度发布架构升级并行发布静态资源版本回滚回滚是指当程序或者数据出错时,恢复到最近的一个正确版本的行为。最常见的如事务回滚、代码库回滚、部署版本回滚、数据版本回滚、静态资源版本回滚等。通过回滚机制,可以在发布系统出现故障时,保证系统的可用性。事务回滚提到事务回滚,单库的事务就不再多说了。对于跨库的事务,比较常见的解决方案有:两阶...

2018-07-16 10:00:52 9134

原创 分布式系统超时重试

重试的分类Nginx代理层超时客户端超时设置DNS解析超时设置代理超时设置网络连接/读/写超时设置失败重试机制设置upstream存活超时设置ngx_lua超时设置Web容器超时在实际开发当中,很多故障的产生都是因为没有意识到超时设置的重要性而造成的。如果不设置超时机制,就有可能导致连锁反应,最终系统雪崩。有些中间件天然集成了超时重试的机制,但是在设计当中...

2018-07-16 09:53:07 2329

原创 Python3安装sqlite3

简单方式下载安装在运行scrapy脚本时,遇到了一下问题:raceback (most recent call last): File "/usr/local/python3/lib/python3.6/site-packages/Twisted-17.1.0-py3.6-linux-x86_64.egg/twisted/internet/defer.py", lin...

2018-07-16 09:45:16 8199

原创 阿里云申请免费CA认证

今天说一下在阿里云上面给域名申请免费CA证书,不过这里面的域名只能针对于单个域名,也就是要么是www.moguhu.com,要么是moguhu.com。首先在阿里云控制台里面找到CA证书服务,如下所示:然后点击右上角的“购买证书”:然后选择 保护类型:“1个域名”、选择品牌:“Symantec”,然后才能选择“免费型OV SSL”,最后如下所示:确认订单后...

2018-07-16 09:41:21 2080

原创 CentOS7防火墙设置

打开端口443查看防火墙规则关闭防火墙最近在给网站做https改造,在配置完成之后,页面总是跳出拒绝连接。查看服务器端口监听,已经80和443端口都是正常监听。因为用的阿里云的服务器,安全组的端口也已经开放了。最后发现CentOS的端口没有开放,因为CentOS7和6的设置不太一样。下面说明一下:打开端口443sudo firewall-cmd --zone=p...

2018-07-16 09:34:29 981

原创 CentOS安装python3及scrapy

安装依赖安装python3添加软连接检查安装安装Twisted安装scrapy检查安装常用库安装当服务器在做数据迁移的时候,老是要安装相关的scrapy软件,今天来整理一下。安装依赖yum update -yyum groupinstall 'Development Tools'yum install gcc gcc-devel -yyum in...

2018-07-16 09:14:50 526

原创 CAS实现第三方免登录

(本文的介绍是基于CAS4.0的版本)登录流程逻辑实现HugeAutoLoginControllercas-servlet.xmlweb.xml今天介绍一下单点登录实现无页面的免登,场景是在微信公众号端(第三方登录),用户点击微信授权后,自动登录企业系统。主要涉及的系统,以及交互如下所示:登录流程逻辑实现上面的流程看似复杂,但是我们可以暂时不用看u...

2018-07-16 09:09:46 4533

原创 使用OpenResty进行图片代理(破解反盗链)

今天在使用scrapy爬取网站的时候,因为网站的容量有限,不能拉取图片进行存储。但是源站的图片又存在着反盗链的限制,所以利用OpenResty做了一个图片代理的接口,实现了破解反盗链的功能。(如果你要问我为什么使用OpenResty来做,我会告诉你因为网站就是用OpenResty开发的)lua-resty-http在OpenResty上面使用代理时,一般情况下会用proxy_pass或...

2018-07-16 09:04:31 1460

原创 使用Hystrix实现降级熔断

之前有说到过,分布式系统降级的方式可以通过配置中心手动降级。今天介绍一下通过Hystrix实现自动降级。降级Demo话不多说,下面先来一个Demo(对于Hystrix的依赖,这里就不再介绍了)。GetStockServiceCommandpublic class GetStockServiceCommand extends HystrixCommand<Strin...

2018-07-13 10:19:40 2834

原创 笛卡尔积生成商品SKU

这一段时间在搞商品后台的系统,其中关于通过商品的销售属性,生成SKU的处理,这里说明一下。如上图所示,通过“毛色”和“体重”2个销售属性来生成商品的SKU。就需要对属性的值做笛卡尔积,其中核心代码如下所示:/** * 生成笛卡尔积 * @returns {*} */function descartes(array){ if( array.length < 2 ...

2018-07-13 10:05:02 10096 1

原创 OpenResty配置多域名反向代理

今天介绍一下单台服务器上面,配置多台子系统的反向代理配置(域名访问)。下面看一下详细的配置。nginx.conf配置#user nobody;worker_processes 1;error_log logs/error.log notice;pid logs/nginx.pid;worker_rlimit_nofile 65535;events...

2018-07-13 10:01:21 3947

原创 分布式系统降级策略(一)

在开发高并发系统时,有很多方法来保护系统,如:缓存、降级、限流等。下面将介绍一下降级的策略。当系统访问量增多,服务响应时间长或者非核心服务影响了核心服务的性能时。这是如果需要保证核心服务的可用性,就需要对非核心业务执行一些降级处理。系统可以根据关键数据进行自动降级,也可以配置开关进行人工降级。降级策略分类降级按照是否可以自动化分为:自动开关降级和人工开关降级。按照读写功能可以分为:读服...

2018-07-13 09:57:39 6723

原创 CKEditor图片上传跨域问题

在使用CKEditor上传图片时,如果要在本地起应用,图片上传至远程服务器,就有可能产生跨域问题。会有如下报错信息:ckeditor Blocked a frame with origin from accessing a cross-origin frame.如果要解决这个问题,就需要在上传图片之后,利用本地应用做一个重定向。下面看一下Demo:config.js首先修改...

2018-07-13 09:52:05 2824 1

原创 Linux的chkconfig命令

在Linux系统中配置自启动的服务,就需要使用chkconfig命令。下面介绍一下。语法chkconfig(选项)选项--add:增加所指定的系统服务,让chkconfig指令得以管理它,并同时在系统启动的叙述文件内增加相关数据;--del:删除所指定的系统服务,不再由chkconfig指令管理,并同时在系统启动的叙述文件内删除相关数据;--level<等级代...

2018-07-13 09:45:42 547

原创 分布式系统限流策略(二)

前文中介绍了系统限流的原理和基础的使用场景,本篇将介绍应用接入层(Nginx)、分布式应用如何限流。应用接入层限流(Nginx/OpenResty)接入层通常是指流量的入口,主要的目的有:负载均衡、非法请求过滤、请求聚合、缓存、降级、限流、A/B测试、服务质量监控等。对于流量接入层所使用的中间件一般都是:Nginx(OpenResty)。下面将分别介绍一下如何进行限流操作。Ng...

2018-07-13 09:40:29 2279

原创 分布式系统限流策略(一)

在开发高并发的系统时,有很多手段来保护系统,如缓存、降级和限流等。缓存可以提升系统的访问速度,降级可以暂时屏蔽掉非核心业务,使得核心业务不受影响。限流的目的通过对并发访问进行限速,一旦达到一定的速率就可以拒绝服务(定向到错误页或告知资源没有了)、排队等待(如秒杀、评论、下单等)、降级(直接返回兜底数据、如商品库存默认有货)。常见的限流方式有:限制总并发数(数据库连接池、线程池)、限制瞬时并发...

2018-07-13 09:26:18 9151

原创 Scrapy定时爬取任务(CentOS)

最近写了个自动采集电影和图片的网站,用的是Scrapy,下面介绍一下在Centos下面如何设置定时爬取任务。安装Crontab1、检查是否安装crontab执行crontab命令,如果报command not found,则表明没有安装。2、安装crontabyum install -y vixie-cron3、检查是否安装成功crontab -l...

2018-07-13 09:14:46 3470

原创 CAS单点登录脚手架

首先可以先下载一个脚手架项目,它是基于maven的overlays的无入侵的代码改造。下载地址:cas-server-overlays-templete脚手架下载完成之后,导入开发工具后,目录截图如下:从上面截图可以看出,overlays目录下面是依赖的CAS4.0版本的web项目依赖。当需要重写代码或者配置信息时,直接在src下面自定义代码和配置就可以了(maven在打包时,...

2018-07-13 09:06:02 1048

原创 CAS原理与基本概念

最近在搞公司的单点登录,后面会对CAS单点登录做详细的讲解,并一步一步的介绍如何搭建企业级的单点登录。并且会介绍如何对原生的CAS进行改造,然后支持WEB/WAP、第三方登录以及APP端的登录。系统原理集中式认证服务(英语:Central Authentication Service,缩写CAS)是一种针对万维网的单点登录协议。它的目的是允许一个用户访问多个应用程序,而只需提供一次凭证...

2018-07-12 13:03:03 1336

原创 Factory Method模式

Factory Method模式可以由Template Method演变而来。用Template Method模式来构建生成实例的工厂,这就是Factory Method。在Factory Method模式中,父类决定实例的生成方式,但是不决定具体要生成的类,具体的处理全部交给子类去负责。这样就可以将生成实例的框架(framework)和实际负责生成实例的类解耦。类图示例代...

2018-07-12 12:57:37 199

原创 Template Method模式

模板方法就是在父类中定义处理流程的框架,在子类中实现具体的处理。类图代码示例AbstractDisplay(只实现了display方法的抽象类)/** * 只实现了display方法的抽象类 * * Created by xuefeihu on 18/4/12. */public abstract class AbstractDisplay { /*...

2018-07-12 12:54:27 166

原创 Adapter模式

在编程的过程中,我们会发现有些程序无法直接使用,需要做适当的变换之后才能使用。这种用于填补“现有程序”和“所需程序”之间的差异的设计模式就是Adapter模式。Adapter模式有以下两种:类适配器模式(使用继承的适配器)对象适配器模式(使用委托的适配器)如果想让额定工作电压是12V的笔记本电脑在交流100V的电源下工作,通常会使用电源适配器。从而可以解决供需之间的电压不同。...

2018-07-12 12:50:28 194

原创 Iterator模式

Iterator模式角色我们在写Java代码的过程中,会经常用到集合类。在操作集合的过程中,会经常用到Iterator。下面介绍一下Iterator模式中的角色:Iterator(迭代器)该角色定义了按顺序逐个遍历元素的API,它定义了hasNext和next两个方法。(示例程序中的Iterator)ConcreteIterator(具体的迭代器)该角色负责实现Iter...

2018-07-12 12:40:46 304

原创 ZooKeeper的安装运行

ZooKeeper的安装模式可以大致分为3种:集群模式、单机模式和伪分布模式。其中ZK是由Java语言开发的,因此安装前需要保证本地已有JDK6及以上的Java环境。下载读者可以通过以下链接下载自己所需要的ZK版本:https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/。下载解压缩后,目录结构如下所示: bin:ZK的可执行脚本...

2018-07-12 12:33:56 222

原创 Linux安装Redis3.2.8

下载Rediswget http://download.redis.io/releases/redis-3.2.8.tar.gz tar -zxvf redis-3.2.8.tar.gz 编译解压缩后,进入目录并编译。cd redis-3.2.8make安装编译完成之后,会生成一个src目录,进入src并安装。cd srcmake insta...

2018-07-12 12:16:22 1229

Spring-data-redis(Version 1.6.0.RC1)中文版

该文档为Spring Data Redis1.6官方文档的翻译。其中有一些翻译不是很恰当,敬请谅解!

2015-09-14

Apache2.4+Tomcat8.0集群安装--测试项目

Apache2.4+Tomcat8.0集群安装--测试项目。集群配置地址为:

2015-06-28

spring security3.1英文版 PDF

此文档为spring security3.1英文版参考书籍,不是官方文档,英文原版。

2014-09-29

EXTjs4.1中文API

EXTJS4 1完全中文版API 该资源涵盖了 下载你就知道了

2014-04-21

面向对象分析与设计-麻志毅-PPT

面向对象分析与设计-麻志毅-PPT,官方课件!

2013-02-19

数据仓库与数据挖掘技术(第2版)[陈京民]PPT

数据仓库与数据挖掘技术(第2版)[陈京民]PPT

2013-02-19

spring3.1源码包

spring源码包,spring框架,java学习,web框架学习

2012-11-28

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除