- 博客(95)
- 资源 (2)
- 收藏
- 关注
原创 Java操作PDF
java 使用 itextpdf 操作pdf,往 pdf 填入内容准备pdf 模板下载 Adobe Acrobat DC 软件使用 Adobe 软件编辑 pdf模板使用Adobe打开pdf添加准备表单工具点击准备表单,设置表单属性保存pdf文档使用 Springboot 操作PDF1. 创建 springboot 项目,修改 pom.xml 文件引入 pdf 工具类jar包 <dependency> <groupId
2020-07-29 16:45:29
1972
2
原创 redis 缓存雪崩、穿透、击穿
缓存雪崩缓存雪崩通俗简单的理解就是:由于原有缓存失效(或者数据未加载到缓存中),新缓存未到期间,所有原本应该访问缓存的请求都去查询数据库了,而对数据库CPU和内存造成巨大压力,严重的会造成数据库宕机,造成系统的崩溃。redis 缓存雪崩解决方案分布式锁(本地锁)在缓存失效后,通过加锁或者队列来控制读数据库写缓存的线程数量。比如对某个key只允许一个线程查询数据和写缓存,其他线程等待。...
2019-11-18 11:22:12
182
原创 RedisCluster 集群
Redis集群方式3.0版本之前3.0版本之前的redis是不支持集群的,我们的redis如果想要集群的话,就需要一个中间件,然后这个中间件负责将我们需要存入redis中的数据的key通过一套算法计算得出一个值。然后根据这个值找到对应的redis节点,将这些数据存在这个redis的节点中。在取值的时候,同样先将key进行计算,得到对应的值,然后就去找对应的redis节点,从对应的节点中取出...
2019-11-15 11:03:16
231
原创 springboot + redis + ehcache 实现二级缓存
缓存、两级缓存简单的理解,缓存就是将数据从读取较慢的介质上读取出来放到读取较快的介质上,如磁盘–>内存。平时我们会将数据存储到磁盘上,如:数据库。如果每次都从数据库里去读取,会因为磁盘本身的IO影响读取速度,所以就有了像redis这种的内存缓存。可以将数据读取出来放到内存里,这样当需要获取数据时,就能够直接从内存中拿到数据返回,能够很大程度的提高速度。但是一般redis是单独部署成集群,所...
2019-11-14 17:53:39
786
1
原创 Redis 事务
Redis 事务可以一次执行多个命令, 并且带有以下两个重要的保证:事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。事务是一个原子操作:事务中的命令要么全部被执行,要么全部都不执行。一个事务从开始到执行会经历以下三个阶段:a. 开始事务。b. 命令入队。c. 执行事务。redis集群对象JedisCl...
2019-11-14 17:46:16
96
原创 Redis哨兵机制
什么是哨兵机制Redis的哨兵(sentinel) 系统用于管理多个 Redis 服务器,该系统执行以下三个任务:监控(Monitoring): 哨兵(sentinel) 会不断地检查你的Master和Slave是否运作正常。提醒(Notification):当被监控的某个 Redis出现问题时, 哨兵(sentinel) 可以通过 API 向管理员或者其他应用程序发送通知。自动故障迁移...
2019-11-14 17:40:16
93
原创 Redis主从复制
概述redis的复制功能是支持多个数据库之间的数据同步。一类是主数据库(master),一类是从数据库(slave),主数据库可以进行读写操作,当发生写操作的时候自动将数据同步到从数据库,而从数据库一般是只读的,并接收主数据库同步过来的数据,一个主数据库可以有多个从数据库,而一个从数据库只能有一个主数据库。通过redis的复制功能可以很好的实现数据库的读写分离,提高服务器的负载能力。主数据库...
2019-11-14 17:29:13
93
原创 本地缓存Ehcache
缓存框架分类单点缓存框架(只能针对于单个 jvm 中,缓存容器存放在 jvm 中,每个 jvm 互不影响)有 ehcache、guava cache、oscache分布式缓存框架(共享缓存数据)有 Redis、memchache什么是EhcacheEhcache是纯java的开源缓存框架,具有快速、精干等特点,是Hibernate中默认的CacheProvider。它主要面向通用缓存、...
2019-11-14 17:18:21
676
原创 java.lang.NoSuchMethodError:出错原因解析
背景项目发布测试环境测试,调用接口中的方法,报java.lang.NoSuchMethodError错误中文翻译:找不到该方法,但是该方法确实是存在的ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/merchants].[removeVideoBind]] (http-/0.0.0.0:8...
2019-11-14 11:32:13
802
原创 Redis介绍
什么是 Redis?Redis是由意大利人Salvatore Sanfilippo(网名:antirez)开发的一款内存高速缓存数据库。Redis全称为:Remote Dictionary Server(远程数据服务),该软件使用C语言编写,Redis是一个key-value存储系统,它支持丰富的数据类型,如:string、list、set、zset(sorted set)、hash。Redi...
2019-11-05 16:53:12
88
原创 阿里云centos7安装redis
在centOS里通过wget下载redis wget http://download.redis.io/releases/redis-4.0.9.tar.gz[root@root local]# wget http://download.redis.io/releases/redis-4.0.9.tar.gz --2019-10-28 11:15:35-- http://download...
2019-11-05 16:31:59
117
原创 ORA-01756
背景:项目上线时往数据库批量插入370条含有中文的数据,结果40条左右插入错误,返回如下错误信息ORA-01756: quoted string not properly terminated中文翻译:引用字符串不正确的终止原因上线时是在xshell中用sqlplus往数据库中添加数据,而xshell客户端的编码是UTF-8,数据库的编码是GBK2312,插入中文时会经行转码,导致某些...
2019-10-12 17:05:19
4875
原创 对称加密与非对称加密
RPC远程通讯的时候,保证数据安全性问题,针对于数据加密。单项加密:MD5 一般用于密码加密对称加密为什么数据要对称加密呢?防止别人抓包分析 Http 请求,获取铭文数据和篡改数据。对称密码技术:发件人和收件人使用其共同拥有的单个密钥 ,这种密钥既用于加密,也用于解密,叫做机密密钥(也称为对称密钥或会话密钥)。能够提供信息机密性(没有密钥信息不能被解密)、完整性(被改变的信息不能被解密...
2019-10-12 10:51:23
241
原创 URL转码
不管是以何种方式传递url时,如果要传递的url中包含特殊字符,如想要传递一个+,但是这个+会被url会被编码成空格,想要传递&,被url处理成分隔符。尤其是当传递的url是经过Base64加密或者RSA加密后的,存在特殊字符时,这里的特殊字符一旦被url处理,就不是原先你加密的结果了。url特殊符号及对应的编码符号url中的含义编码+URL 中+号表示空格...
2019-10-12 10:35:53
1219
转载 如何保证消息的顺序性?
面试题如何保证消息的顺序性?面试官心理分析其实这个也是用 MQ 的时候必问的话题,第一看看你了不了解顺序这个事儿?第二看看你有没有办法保证消息是有顺序的?这是生产系统中常见的问题。面试题剖析我举个例子,我们以前做过一个 mysql binlog 同步的系统,压力还是非常大的,日同步数据要达到上亿,就是说数据从一个 mysql 库原封不动地同步到另一个 mysql 库里面去(mysql -...
2019-09-27 17:56:56
121
原创 忘记密码漏洞
黑客使用抓包工具分析Http请求,在忘记密码找回时,需要发送一条短信验证码,如果验证码数字比较短的话,很容易使用暴力破解方式攻击破。防御手段:忘记密码的短信验证码最好在6-8位。一旦频繁调用接口验证时,应该使用图形验证码拦截,防止机器模拟。使用黑名单和白名单机制,防御攻击。破解思路(暴力破解):假设短信验证码为 4 位数字。使用 Java 程序 HttpClient 技术开启多线程技术调...
2019-09-27 11:40:20
183
原创 CSRF攻击
CSRF攻击产生的原因(Cross Site Request Forgery, 跨站域请求伪造)是一种网络的攻击方式,它在 2007 年曾被列为互联网 20 大安全隐患之一,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用也就是人们所知道的钓鱼网站。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,并且攻击方...
2019-09-27 11:38:08
201
原创 Http请求防盗链
什么是防盗链比如A网站有一张图片,被B网站直接通过img标签属性引入,直接盗用A网站图片展示。尤其是视频网站如何实现防盗链判断http请求头Referer域中的记录来源的值,如果和当前访问的域名不一致的情况下,说明该图片可能被其他服务器盗用。使用过滤器拦截请求,判断请求头中的域名与需要限制的域名访问是否一致,如果不一致的情况,说明可能被盗用。使用过滤器判断请求头Referer记录请求来...
2019-09-27 11:28:57
828
原创 XSS攻击
什么是 XSS 攻击手段XSS 攻击 使用的是 JavaScript 脚本注入进行攻击例如在提交表单后,展示到另一个页面,可能会受到XSS脚本注入,读取本地cookie远程发送给黑客服务器端。XSS 攻击原理使用 JS 脚本语言,因为浏览器模特让你支持脚本语言执行,如果在表单提交的时候,提交一些脚本参数,可能浏览器直接执行XSS 攻击防御手段像一些特殊字符,比如<、>如果不...
2019-09-27 11:15:50
614
原创 CDN内容分发
WEB 前端优化使用网站动静分离架构减少Http请求的传输,CSS / JS 合并传输,压缩 JS、CSS 技术使用浏览器缓存静态资源,减少服务器端压力使用 CDN 内容分发,减少宽带传输,获取用户 IP,分配到最近的服务器访问传统方式架构弊端宽带传输压力大所有用户全部聚集到同一个地区服务器上访问,无法保证整体的系统高可用如果客户端与服务器端传输距离越远,那么宽带传输非常耗资...
2019-09-27 10:49:02
376
转载 如何保证消息的可靠性传输?
面试题如何保证消息的可靠性传输?或者说,如何处理消息丢失的问题?面试官心理分析这个是肯定的,用 MQ 有个基本原则,就是数据不能多一条,也不能少一条,不能多,就是前面说的重复消费和幂等性问题。不能少,就是说这数据别搞丢了。那这个问题你必须得考虑一下。如果说你这个是用 MQ 来传递非常核心的消息,比如说计费、扣费的一些消息,那必须确保这个 MQ 传递过程中绝对不会把计费消息给弄丢。。面试题...
2019-09-27 09:49:55
463
转载 如何保证消息不被重复消费?
面试题如何保证消息不被重复消费?或者说,如何保证消息消费的幂等性?面试官心理分析其实这是很常见的一个问题,这俩问题基本可以连起来问。既然是消费消息,那肯定要考虑会不会重复消费?能不能避免重复消费?或者重复消费了也别造成系统异常可以吗?这个是 MQ 领域的基本问题,其实本质上还是问你 使用消息队列如何保证幂等性,这个是你架构里要考虑的一个问题。面试题剖析回答这个问题,首先你别听到重复消息这...
2019-09-25 17:28:28
92
原创 RateLimiter 实现注解版本
RateLimiter 缺点传统方式整合RateLimiter有很大缺点:代码重复量特别大,而且本身不支持注解方式。限流代码可以放在网关中,相当于针对所有服务接口实现限流(排除法),维护性不是很强。正常互联网公司项目,不是所有的服务接口都需要实现限流,一般限流服务主要针对大流量接口。比如秒杀抢购。RateLimiter 实现注解版本技术点分析定义一个自定义注解 @ExtRateLimi...
2019-09-24 11:02:38
1953
原创 高并发服务限流
在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流。缓存的目的是提升系统访问速度和增大系统能处理的容量;而降级是当服务出问题或者影响到核心流程的性能则需要暂时屏蔽掉,待高峰或者问题解决后再打开;而有些场景并不能用缓存和降级来解决,比如稀缺资源(秒杀、抢购)、写服务(如评论、下单)、频繁的复杂查询(评论的最后几页),因此需有一种手段来限制这些场景的并发/请求量,即限流。为什么要互联网项目要...
2019-09-24 10:52:47
248
原创 基于Hystrix实现服务隔离与降级
Hystrix 产生背景在今天,基于SOA的架构已经大行其道。伴随着架构的SOA化,相关联的服务熔断、降级、限流等思想,也在各种技术讲座中频繁出现。伴随着业务复杂性的提高,系统的不断拆分,一个面向用户端的API,其内部的RPC调用层层嵌套,调用链条可能会非常长。这会造成以下几个问题:API接口可用性降低引用Hystrix官方的一个例子,假设tomcat对外提供的一个application,...
2019-09-24 10:35:28
310
转载 为什么要进行系统拆分?
面试题为什么要进行系统拆分?如何进行系统拆分?拆分后不用 dubbo 可以吗?面试官心理分析从这个问题开始就进行分布式系统环节了,现在出去面试分布式都成标配了,没有哪个公司不问问你分布式的事儿。你要是不会分布式的东西,简直这简历没法看,没人会让你去面试。其实为啥会这样呢?这就是因为整个大行业技术发展的原因。早些年,印象中在 2010 年初的时候,整个 IT 行业,很少有人谈分布式,更不用...
2019-09-23 14:06:07
528
转载 如何设计一个高并发系统?
面试题如何设计一个高并发系统?面试官心理分析说实话,如果面试官问你这个题目,那么你必须要使出全身吃奶劲了。为啥?因为你没看到现在很多公司招聘的 JD 里都是说啥,有高并发就经验者优先。如果你确实有真才实学,在互联网公司里干过高并发系统,那你确实拿 offer 基本如探囊取物,没啥问题。面试官也绝对不会这样来问你,否则他就是蠢。假设你在某知名电商公司干过高并发系统,用户上亿,一天流量几十亿...
2019-09-20 14:19:09
98
原创 浏览器缓存与HTTP 304状态码
为什么互联网公司项目中,静态资源url后面会加上一个时间戳。作用:控制缓存。最终目的是为了控制项目上线的时候,静态资源与老浏览器缓存静态资源避免冲突。解决办法:加上时间戳 规范 t=项目上线时间(毫秒数)静态资源缓存实际项目中在发布版本的时候,可能由于浏览器缓存导致与服务器端代码发生冲突。这时候可以在静态资源请求后面加上时间戳,对应每次发布版本的时间。HTTP 304状态码客户端在请求...
2019-09-19 16:38:39
694
原创 Nginx+Tomcat实现动静分离
什么是动静分离动静分离是让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做缓存操作,这就是网站静态化处理的核心思路动静分离简单的概括是:动态文件与静态文件的分离。总结:静态资源一个服务器(css、img、js)、动态资源一个服务器(后端代码)。为什么要使用动静分离在我们的软件开发中,有些请求是需要后台处理的(如...
2019-09-19 15:48:29
447
转载 如何保证消息队列的高可用?
面试题如何保证消息队列的高可用?面试官心理分析如果有人问到你 MQ 的知识,高可用是必问的。上一讲提到,MQ 会导致系统可用性降低。所以只要你用了 MQ,接下来问的一些要点肯定就是围绕着 MQ 的那些缺点怎么来解决了。要是你傻乎乎的就干用了一个 MQ,各种问题从来没考虑过,那你就杯具了,面试官对你的感觉就是,只会简单使用一些技术,没任何思考,马上对你的印象就不太好了。这样的同学招进来要是做...
2019-09-19 14:47:31
87
转载 消息队列面试常问题目
面试题为什么使用消息队列?消息队列有什么优点和缺点Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么区别,以及适合那些场景面试官心理分析其实面试官主要是想看看:第一,你知不知道你们系统里为什么要用消息队列这个东西?不少候选人,说自己项目里用了 Redis、MQ,但是其实他并不知道自己为什么要用这个东西。其实说白了,就是为了用而用,或者是别人设计的架构,他从...
2019-09-19 14:27:53
217
原创 LVS+Keepalived+Nginx实现双击主从热备
LVSLVS 是一种四层负载均衡器,软负载均衡(传输层),可以完成所有负载均衡业务需求:比如数据库、web服务、虚拟化技术、虚拟VIP(IP地址)LVS 作用LVS是一个开源的软件,可以实现传输层四层负载均衡。LVS是Linux Virtual Server的缩写,意思是Linux虚拟服务器。目前有三种IP负载均衡技术(VS/NAT、VS/TUN和VS/DR);八种调度算法(rr,wrr,l...
2019-09-19 11:43:22
247
原创 Nginx实现TCP反向代理与负载均衡
四层负载均衡与七层负载均衡区别四层负载均衡,在网络模型中的传输层中,主要是基于tcp协议报文实现负载均衡(比如LVS、haproxy就是四层负载均衡器),使用改写报文的源地址和目的地址。TCP是依据保持长连接七层负载均衡,在网络模型中应用层中,基于URL或者HTTP协议实现负载均衡,Web服务器。环境准备测试环境 CentOS7Nginx1.9开始支持tcp层的转发,通过stream实...
2019-09-10 12:00:33
321
原创 Consul+upsync+Nginx实现动态负载均衡
什么是动态负载均衡传统的负载均衡,如果Upstream参数发生变化,每次都需要重新加载nginx.conf文件,因此扩展性不是很高,所以我们可以采用动态负载均衡,实现Upstream可配置化、动态化,无需人工重新加载nginx.conf。这类似分布式的配置中心动态负载均衡实现方案Consul+Consul-template每次发现配置更改需要raload nginx,重启Nginx。C...
2019-09-10 11:49:46
884
原创 Nginx配置反向代理与负载均衡
Nginx配置反向代理反向代理的作用反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。启动一个Tomcat 127.0.0.1:8080使用nginx反向代理 www.xiaoming.com 直接跳...
2019-09-05 16:59:25
113
原创 Nginx虚拟主机配置
Nginx虚拟主机配置基于域名的虚拟主机,通过域名来区分虚拟主机——应用:外部网站基于端口的虚拟主机,通过端口来区分虚拟主机——应用:公司内部网站,外部网站的管理后台基于ip的虚拟主机,几乎不用。基于域名虚拟主机配置实现步骤:需要建立/data/www /data/bbs目录,windows本地hosts添加虚拟机ip地址对应的域名解析;对应域名网站目录下新增index.html文...
2019-09-05 15:59:36
170
原创 Nginx介绍
Nginx 是一个高性能的 Web 和反向代理服务器, 它具有有很多非常优越的特性:作为 Web 服务器:相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率,这点使 Nginx 尤其受到虚拟主机提供商的欢迎。能够支持高达 50,000 个并发连接数的响应,感谢 Nginx 为我们选择了 epoll and kqueue 作为开发模型.作为负载均衡服务器:Ngi...
2019-09-05 15:38:38
94
原创 nginx rewrite
nginx rewriteNginx提供的全局变量或自己设置的变量,结合正则表达式和标志位实现url重写以及重定向。rewrite只能放在server{},location{},if{}中,并且只能对域名后边的除去传递的参数外的字符串起作用。Rewrite主要的功能就是实现URL的重写,Nginx的Rewrite规则采用Pcre,perl兼容正则表达式的语法规则匹配,如果需要Nginx的Rew...
2019-09-03 17:18:39
224
原创 Linux安装Nginx
1.安装gcc gcc-c++(如新环境,未安装请先安装)$ yum install -y gcc gcc-c++2.安装wget$ yum -y install wget3.安装PCRE库$ cd /usr/local/$ wget http://jaist.dl.sourceforge.net/project/pcre/pcre/8.33/pcre-8.33.tar.gz$ ...
2019-09-03 17:07:12
73
原创 Admin-UI分布式微服务监控中心
Admin-UI基于actuator实现能够返回界面展示监控信息原理:将所有服务的监控中心管理存放在 Admin-UI 平台上Admin-UI-ServerMaven依赖<dependencies> <dependency> <groupId>de.codecentric</groupId> ...
2019-08-28 16:30:18
869
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人