单农的专栏

积木盒子,高楼大厦需要无数的砖叠起来

Spring Boot之执行器端点(Actuator Endpoint)实现剖析

本文从Spring Boot源码层面剖析执行器端点的实现原理。整体实现思路是将端点(Endpoint)适配委托给MVC层策略端点(MvcEndpoint),再通过端点MVC适配器(EndpointMvcAdapter)将端点暴露为HTTP请求方式的MVC端点,最后分别使用端点自动配置(Endpoi...

2017-03-12 23:34:05

阅读数 7959

评论数 0

[线上问题] 线上服务器内存使用量已达到90%报警(内存泄漏)

2016-05-06中午11:56,收到“[sentry2]2016-05-06 11:56:09 xxxxxxhost xxx.xxx.xxx.xxx 内存使用已达到90.18%”报警。首先在脑海浮现的,应该哪里出现内存泄漏了。   一、确认问题 马上到 Sentry 监控系统查看了该...

2016-05-09 00:57:29

阅读数 318

评论数 0

Redis Hash 的 HSET、HGET、HMSET、HMGET 性能测试

【压测环境】 操作系统: Ubuntu 14.04 LTS Linux版本: 3.13.0-24-generic x86_64 GNU/Linux 处理器: 4核的 AMD Athlon(tm) II X4 640 Processor @ 800MHz 机器内存:共 8GB,已使用 6...

2015-06-09 14:06:55

阅读数 957

评论数 0

[安全] MyBatis如何防止SQL注入

MyBatis如何防止SQL注入 [摘自] mybatis防止sql注入 - chaoge   SQL注入是一种代码注入技术,用于攻击数据驱动的应用,恶意的SQL语句被插入到执行的实体字段中(例如,为了转储数据库内容给攻击者)。[摘自] SQL injection - Wikipedia ...

2015-06-06 23:13:12

阅读数 45

评论数 0

Lua编译器的选择与源码安装

在Nginx上使用Lua脚本能做很多有价值的事情,比如生成请求的唯一标识(排查问题)、统一的权限校验、限流防洪(保证服务正常可用)等。   Lua是什么? Lua是一种轻量级的多范式编程语言,其被设计为一种可扩展的语义脚本语言作为首要目标。(英语发音:/ˈluːə/,是葡萄牙语中“L...

2015-06-06 19:05:10

阅读数 42

评论数 0

Nginx源码构建、编译并安装

本文主要记录自己在“从Nginx源码构建、编译并安装”过程中遇到的一些问题及详细步骤,通过以下方式构建的Nginx集成了 SSL、Lua、Nginx Upstream Health Check、解压缩 功能。   # 1. 下载安装包(http://nginx.org/en/down...

2015-05-27 19:25:26

阅读数 67

评论数 0

使用Shell脚本来组装“Lua配置模板文件”和“属性配置文件”并生成配置文件...

【问题背景】 前几天,我们上线了“基于’Nginx + Lua‘实现的统一权限校验功能”。该功能需要Nginx守护线程定期地从MySQL加载“合作方数据”,我们直接在Lua文件里写死了MySQL等配置信息(硬编码),然后通过一个“中间配置文件”手动修改来针对不同的部署环境选择不同的数据源。 ...

2015-05-26 15:04:22

阅读数 38

评论数 0

[SQL调优] “查询SQL过滤和排序条件涉及的表字段未创建索引”引起慢查询问题,优化后执行时间从70+s下降到0.01s以下...

前几天发现,线上portal “策略中心”的“证据管理”页面加载很慢。经排查发现,是由于 riskbase_core 库的 evidence 表未对 gmt_create 创建索引 和 evidence_details 表未对 refuuid 创建索引引起(因为查询条件涉及到这些字段),导致SQ...

2015-05-20 18:51:18

阅读数 56

评论数 0

发言的礼仪 —— 参与开源社区

仔细聆听别人的声音,也努力表达自己对技术的看法,并随时将你的宝贵经验与社区分享,这样你不仅能获得技术上的提高,还可以得到整个社区的认可和尊敬。   14.4.3发言的礼仪 通过适当的礼仪和友好的行为方式,可以更有效地通过邮件列表解决项目中的问题。Eric Raymond对此有非常精彩...

2015-04-01 17:06:34

阅读数 258

评论数 0

[线上问题] "Redis客户端连接数一直降不下来"的问题分析解决

前段时间,上线了新的 Redis缓存(Cache)服务,准备替换掉 Memcached。   为什么要将 Memcached 替换掉? 原因是 业务数据是压缩后的列表型数据,缓存中保存最新的3000条数据。对于新数据追加操作,需要拆解成[get + unzip + append + zi...

2015-02-07 18:23:06

阅读数 235

评论数 0

[FAQ] Jedis使用过程中踩过的那些坑

4. 一个大坑:若实例化 JedisShardInfo 时不设置节点名称(name属性),那么当Redis节点列表的顺序发生变化时,会发生“键 rehash 现象”   使用BTrace追踪redis.clients.util.Sharded的实时状态,验证“Jedis分片机制的一致性哈希...

2015-02-06 21:13:50

阅读数 136

评论数 0

[实现剖析] Apache Commons Pool之空闲对象的驱逐检测机制

本文主要剖析 Apache Commons Pool 的“空闲对象的驱逐检测机制”的实现原理。   以下面3个步骤来循序渐进地深入剖析其实现原理: 启动“空闲对象的驱逐者线程”(startEvictor(...))的2个入口 在启动时,创建一个新的"驱逐者线程&...

2015-01-02 22:12:47

阅读数 97

评论数 0

Redis服务快速部署

官方对Redis的阐述: Redis is an open source, BSD licensed, advanced key-value cache and store. It is often referred to as a data structure server since ke...

2014-11-15 10:51:31

阅读数 17

评论数 0

[线上问题] Nginx与Tomcat、Client之间请求的长连接配置不一致问题分析解决

前些天,线上出现“服务端长连接与客户端短连接引起Nginx产生大量"TIME_WAIT"状态的线程”的问题分析解决”,这个是由于“服务端使用HTTPs长连接,而客户端使用短连接”引起。这几天,发现Nginx与Tomcat之间也存在同样的问题,原因是两边的...

2014-11-06 20:36:57

阅读数 47

评论数 0

[线上问题] “服务端长连接与客户端短连接引起Nginx产生大量"TIME_WAIT"状态的线程”的问题分析解决...

近期,线上Nginx服务器的TPS未超过100,但其Writing、Active连接数有时却超过了300。因为服务对响应时间要求较高,同时每个调用方使用的IP地址有限(即总的不同的连接地址有限),所以使用HTTPs长连接技术。(HTTP长连接与短连接)   问题现象:使用&quot...

2014-10-25 16:33:39

阅读数 179

评论数 0

[利器] 使用tcpdump和Wireshark分析网络数据包

       要想快速使用Wireshark分析请求数据包,可参考其本地文档《Wireshark过滤器语法与引用 HELP-Manual Pages-Wireshark Filter》和《一站式学习Wireshark》系列文章。   如何使用tcpdump在Linux服务器下抓取网络数据包...

2014-10-25 14:20:29

阅读数 33

评论数 0

[架构演进] 程立谈大规模SOA系统(支付宝首席架构师)

程立谈大规模SOA系统   仔细看完文章之后,受益匪浅!感谢!   待整理,强烈推荐!

2014-09-27 22:52:51

阅读数 111

评论数 0

[笔记] Memcached全面剖析

本文主要参考了charlee翻译的《Memcached全面剖析》   1.      Memcached是什么? 许多Web应用都将数据保存到RDBMS中,应用程序从中读取数据并在浏览器中显示。但随着数据量的增大和访问的集中,就会出现(问题出现:)RDBMS的负载加重、数据库响应恶化、网站...

2014-09-19 18:31:16

阅读数 23

评论数 0

[笔记] Top 20+ MySQL最佳实践

    本文翻译自《Top 20+ MySQL Best Practices》——Tuts+ Code Tutorial,同时参考《MySQL性能优化的最佳20+条经验》的译文。   今天,数据库操作通常是大多数web应用的主要性能瓶颈。不仅DBA需要担心这些性能问题,作为程序员的我们也要做...

2014-09-15 23:58:11

阅读数 26

评论数 0

[Spring引用文档] 9. Spring AOP

  9.1介绍 面向切面编程(AOP)结合面向对象编程(OOP)来提供另一种思考方式的程序结构。OOP模块化的关键单元是类型(class),而AOP模块化的单元则是切面(aspect)。切面能使关注点(concerns)更具模块化,而关注点横跨多个类型和对象切割,这样的关注点也称为...

2014-09-04 19:23:05

阅读数 21

评论数 0

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