Redis 通过 MULTI
EXEC
WATCH
等命令来实现事务功能。事务提供了一种将多个命令打包,然后一次性、按顺序地执行多个命令的机制,并且在事务执行期间,服务器不会中断事务而改去执行其他客户端的命令请求,它会将事务中的所有命令都执行完毕,然后才去处理其他客户端的命令请求。
类加载机制与双亲委派
虚拟机将描述类的数据从字节码文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的 Java 类型,这就是虚拟机的类加载机制。类加载器负责将字节码文件中的二进制数据加载到内存中,在运行时数据区的方法区内创建 Class
对象,这也是类加载过程的最终产物。类型的加载、链接、初始化的过程都是在程序运行时完成的。
Java 中的内存回收机制
在计算机科学中,垃圾回收(英语:Garbage Collection,缩写为 GC)是指一种自动的存储器管理机制。当某个程序占用的一部分内存空间不再被这个程序访问时,这个程序会借助垃圾回收算法向操作系统归还这部分内存空间。垃圾回收器可以减轻程序员的负担,也减少程序中的错误。垃圾回收最早起源于 LISP 语言。当前许多语言如 Smalltalk、Java、C# 和 D 语言都支持垃圾回收器。
深入学习 MySQL (二):MySQL 文件系统
本章将分析构成 MySQL 数据库和 InnoDB 引擎的各种类型的文件。从物理角度来看,这些文件大致分为以下几类:
深入学习 MySQL (一):MySQL 体系结构
最初在使用 MySQL
数据库时,仅仅停留在增删改查的层次。缺乏对于数据库整体的认知。随着工作中接触到的需求越来越复杂,渐渐的认识到需要再次深入的去学习一下 MySQL
。最近这几个月看了一些数据库相关的书籍,整理出了下面一些知识点。
高性能队列 Disruptor 使用教程
Disruptor 是英国外汇交易公司LMAX开发的一个高性能队列,研发的初衷是解决内存队列的延迟问题(在性能测试中发现竟然与I/O操作处于同样的数量级)。基于 Disruptor 开发的系统单线程能支撑每秒 600 万订单,2010 年在 QCon 演讲后,获得了业界关注。2011年,企业应用软件专家 Martin Fowler 专门撰写长文介绍。同年它还获得了 Oracle 官方的 Duke 大奖。
在 Rails 项目中使用 Sidekiq 处理异步任务
Sidekiq 是一个用于后台作业的处理框架,它提供了执行 定时 或 异步 任务的后台任务处理系统。可以集成在 Rails 项目中使用,也可以单独的使用。通常用来处理耗时的任务,如上传图像,发送邮件等。它可以配置多个队列,将不同类型的任务分配到各自的队列中。Sidekiq 会将一些运行时的数据存放在 Redis 中,所以请先确保你安装了 Redis。在本篇文章中,我们将对如何在 Rails 中使用 Sidekiq 进行介绍和分析。
Ruby Web 服务器的配置与使用
Ruby 中的常量查找
在 Ruby 中,当你需要访问一个常量的时候,很简单直接使用这个常量的名字就行。但是你知道 Ruby 是如何查找一个常量的吗?简单的讲 Ruby 会按照 Module.nesting
=> Module.nesting.first.ancestors
=> Object.ancestors
的顺序去查找常量。
MySQL LBS 实现查找附近的人
现在应用中类似 “优先按距离排序” 的功能已经很常见了,那么这些功能如何简单快速的去实现呢?本文将提供一个在数据量不是特别大的时候的解决方案,实现起来比较简单。先将用来演示的表结构和数据初始化一下