任我行哟的博客

生命不息奋斗不止。

生产环境 接口优化思路

事情起因,看了下日志,某接口响应时间达到了10s,吓了一跳,于是捋下思路,不能慌 思考了下 首先看业务代码(是不是代码写的有问题)->explain sql语句 查看是否没走索引(目的 提高查询效率 减少磁盘io等待时间) -> sql查出来的数据 是否垃圾字段...

2019-05-16 17:33:19

阅读数 14

评论数 0

多线程-synchronized深入分析

一:什么是synchronized synchronized是java关键字,初学者接触多线程,为了保证线程安全,接触的最多的应该是synchronized。 synchronized可以保证方法、代码块在运行时,同一时刻只有一个线程可以执行,基于happens-before的监视器锁规则...

2019-05-14 15:45:56

阅读数 18

评论数 0

多线程-JMM从底层解决线程安全

一:什么是JMM 从字面上理解JMM(Java Memory model)就是java定义了一个底层内存操作的一个抽象。 因为底层的cpu缓存何时写入内存。编译器、处理器、缓存系统为了优化性能如何对cpu进行重排序是复杂的。从上篇文章又可知道缓存会导致可见性,重排序会导致有序性,上下文切换...

2019-05-09 15:57:27

阅读数 99

评论数 0

多线程-出现非线程安全的底层原因

一:什么是非线程安全 一提到多线程,有经验的程序员就会考虑线程安全问题,那在什么情况下会出现线程安全的问题呢? 很多人可以轻而易举的总结出:当多个线程同时竞争共享变量时会出现线程安全问题。 但是对于底层为什么会出现这种情况却不清楚了。 二:非线程安全的源头 出现非线程安全的源头...

2019-05-08 11:27:10

阅读数 99

评论数 0

手把手教你深入理解Spring源码-spring开篇(下)

授人以鱼不如授人以渔,《手把手教你深入理解Spring源码》专栏教你如何学习、思考、阅读Spring框架,并应对其它开源框架不再畏惧。 这篇文章就一句话,要想好好啃源码,去Github,或者网上找资源,把Spring源码先下载下来,后面的文章会介绍看源码思路、如何找入口、如何找主线。(你要只想面...

2018-11-27 23:44:58

阅读数 219

评论数 0

手把手教你深入理解Spring源码-spring开篇(中)

授人以鱼不如授人以渔,《手把手教你深入理解Spring源码》专栏教你如何学习、思考、阅读Spring框架,并应对其它开源框架不再畏惧。 接着上篇的文章讲,上篇的文章讲述了什么是IOC,这篇讲述什么又是AOP? 一样的在看这篇文章之前,大家不妨先花点时间思考一下。 1、AOP的设计原理 1:在...

2018-11-24 21:58:58

阅读数 323

评论数 0

手把手教你深入理解Spring源码-spring开篇(上)

   授人以鱼不如授人以渔,《手把手教你深入理解Spring源码》专栏教你如何学习、思考、阅读Spring框架,并应对其它开源框架不再畏惧。    做Java开发的朋友基本都是每天接触Spring框架,说到Spring,我相信所有人张开就可以来,Spring不就是IOC,AOP嘛,我的大部分项目...

2018-11-21 23:20:16

阅读数 371

评论数 0

Mybatis防止sql注入原理

SQL 注入是一种代码注入技术,用于攻击数据驱动的应用,恶意的SQL 语句被插入到执行的实体字段中(例如,为了转储数据库内容给攻击者)。[摘自] SQL注入 - 维基百科SQL注入,大家都不陌生,是一种常见的攻击方式。攻击者在界面的表单信息或URL上输入一些奇怪的SQL片段(例如“或'1'='1'...

2018-11-02 10:49:59

阅读数 775

评论数 0

深入浅出-Spring事务

1 初步理解 理解事务之前,先讲一个你日常生活中最常干的事:取钱。  比如你去ATM机取1000块钱,大体有两个步骤:首先输入密码金额,银行卡扣掉1000元钱;然后ATM出1000元钱。这两个步骤必须是要么都执行要么都不执行。如果银行卡扣除了1000块但是ATM出钱失败的话,你将会损失1000元...

2018-10-31 17:29:27

阅读数 48

评论数 0

深入浅出-Redis理论

简单来说 Redis 就是一个数据库,不过与传统数据库不同的是 Redis 的数据是存在内存中的,所以存写速度非常快,因此 Redis 被广泛应用于缓存方向。   另外,Redis 也经常用来做分布式锁。Redis 提供了多种数据类型来支持不同的业务场景。   除此之外,Redis 支持事...

2018-10-22 12:16:51

阅读数 66

评论数 0

spring cloud config 动态刷新配置 /bus/refresh 404 not found

上一篇学习了spring cloud config的基本使用,但发现有个问题,就是每次更改配置后,都需要重启服务才能更新配置,这样肯定是不行的。在上网查资料了解后,spring cloud支持通过AMQP来实现配置的实时更新。 一,安装的的RabbitMQ 安装RabbitMQ 二,改造配置...

2018-10-17 23:40:35

阅读数 1892

评论数 0

Mac下RabbitMQ安装

1.使用brew来安装 RabbitMQ //跟新brewbrew update //安装rabbitmqbrew install rabbitmq 2.RabbitMQ 的启动 cd  /usr/local/sbin ./rabbitmq-server  3.RabbitMQ 启动插...

2018-10-15 20:54:36

阅读数 63

评论数 0

如何实现一个简单的RPC

RPC的实现原理 正如上一讲所说,RPC主要是为了解决的两个问题: 解决分布式系统中,服务之间的调用问题。 远程调用时,要能够像本地调用一样方便,让调用者感知不到远程调用的逻辑。 还是以计算器Calculator为例,如果实现类CalculatorImpl是放在本地的,那么直接调用即可: ...

2018-10-12 22:44:17

阅读数 25

评论数 0

什么是RPC

如何科学的解释RPC 说起RPC,就不能不提到分布式,这个促使RPC诞生的领域。 假设你有一个计算器接口,Calculator,以及它的实现类CalculatorImpl,那么在系统还是单体应用时,你要调用Calculator的add方法来执行一个加运算,直接new一个CalculatorIm...

2018-10-12 22:43:04

阅读数 28

评论数 0

RestTemplate 深度解析

一、概述 本文主要介绍 Spring Web 模块中的 RestTemplate 组件的原理、优缺点、以及如何扩展以满足各种需求。 在介绍 RestTemplate 之前,我们先来谈谈 HTTP Client,谈谈选择一个优秀的 HTTP Client 实现的的重要性,以及一个优秀的 HTTP...

2018-10-11 20:51:31

阅读数 407

评论数 0

Quartz时间设置

每天凌晨2点 0 0 2 * * ?和每天隔一小时 0 * */1 * * ? 例1:每隔5秒执行一次:*/5 * * * * ? 例2:每隔5分执行一次:0 */5 * * * ? 在26分、29分、33分执行一次:0 26,29,33 * * * ? 例3:每天半夜12点30分执行一...

2018-10-08 19:50:26

阅读数 419

评论数 0

SpringBoot整合Quartz实现定时 单任务、多任务

一、添加依赖 <dependencies> <dependency> <groupId>org.springframewo...

2018-10-08 19:48:31

阅读数 108

评论数 4

springboot重定向中文参数乱码

对中文参数进行编码即可解决乱码:&str=URLEncoder.encode(“中文”)

2018-09-28 20:13:53

阅读数 256

评论数 0

nginx 实现https及代理springboot jar包

首先,需要在阿里云申请免费一年的ssl服务 打开管理控制台-证书服务,下载证书for nginx 在服务器Nginx的安装目录下创建cert目录,并且将下载的全部文件拷贝到cert目录中(一个key文件和一个pem文件) 配置服务器nginx下nginx.config server { ...

2018-09-18 20:43:43

阅读数 412

评论数 0

如何防止重放攻击

以前总是通过timestamp来防止重放攻击,但是这样并不能保证每次请求都是一次性的。今天看到了一篇文章介绍的通过nonce(Number used once)来保证一次有效,感觉两者结合一下,就能达到一个非常好的效果了。 重放攻击是计算机世界黑客常用的攻击方式之一,所谓重放攻击就是攻击者发送一...

2018-09-12 10:43:09

阅读数 2507

评论数 0

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