MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
2021年05月12日
《Apache Shiro 参考手册》中文翻译(包含了官方文档以及其他文章)。截止现在(2020-2-23)Shiro的最新版本为 1.5.1,利用业余时间对此进行翻译,并在原文的基础上,插入配图,图文并茂方便用户理解。如有勘误欢迎指正。
2021年07月25日 Shiro 开发团队明白在许多应用程序中性能是至关重要的。Caching 是从第一天开始第一个建立在 Shiro 中的一流功能,以确保安全操作保持尽可能的快。
然而,Caching 作为一个概念是 Shiro 的基本组成部分,实现一个完整的缓存机制是安全框架核心能力之外的事情。为此,Shiro 的缓存支持基本上是一个抽象的(包装)API,它将“坐”在一个基本的缓存机制产品(例如,Ehcache,OSCache,Terracotta,Coherence,GigaSpaces,JBossCache 等)之上。这允许Shiro 终端用户配置他们喜欢的任何缓存机制。
然而,Caching 作为一个概念是 Shiro 的基本组成部分,实现一个完整的缓存机制是安全框架核心能力之外的事情。为此,Shiro 的缓存支持基本上是一个抽象的(包装)API,它将“坐”在一个基本的缓存机制产品(例如,Ehcache,OSCache,Terracotta,Coherence,GigaSpaces,JBossCache 等)之上。这允许Shiro 终端用户配置他们喜欢的任何缓存机制。
需要说明一下,因为一直有在看《HTTP权威指南》,觉得这是一本很值得称赞的一本高质量的书籍,书中内容涵盖很全面,而且配以插图,使得阅读起来很容易理解!无论是对于已经踏足开发领域的老手,还是刚接触相关领域的新手,都可以接触。所以很推荐大家从头到尾过一遍,我相信看过之后对某些概念将会有一个更深层次的理解!当然了,我的建议是对这本书多过几遍,因为这样才能加深映像同时加深理解!毕竟常言道:“书读百遍,其意自见、温故而知新等都说明了书需要多次阅读才能体会其意,才能从中读出更深层次的含义”!
首先说明一下,这个文档并不是要超越《HTTP权威指南》原书,文档中描述到的所有概念都是基于原书的!因为原书对相关概念介绍的太过仔细,所以原书的篇幅过于太长,而我常常出现的情况是对原书中的一些概念记忆模糊,需要通过再次查看才能回忆起来,可是我发现每次重新去找某些知识点的时候,发现是一个很耗时、复杂的过程,因为得到相关章节一页一页的去找,而我只是对于某个概念“模糊”而已,所以我觉得这个过程是不必要的,同时,我希望通过自己在文档中对原书的一些概念进行提炼性的总结来加深自己的记忆映像!因此才有了这个文档的诞生!
切记!!此文档是基于原书的,所以希望读者都是看过原书的。所以你没有看过原书,而直接来这里看,那么是没有意义的,因为本文档没有图文并茂的实例,更没有代码供查看,有的只是从原书中copy过来的“提炼过”的文字、概念而已。
最最最后再说一下,由于时间仓促,所以有些地方表达不是很到位的地方,那么请您以原书为主!再次感谢的阅读!
首先说明一下,这个文档并不是要超越《HTTP权威指南》原书,文档中描述到的所有概念都是基于原书的!因为原书对相关概念介绍的太过仔细,所以原书的篇幅过于太长,而我常常出现的情况是对原书中的一些概念记忆模糊,需要通过再次查看才能回忆起来,可是我发现每次重新去找某些知识点的时候,发现是一个很耗时、复杂的过程,因为得到相关章节一页一页的去找,而我只是对于某个概念“模糊”而已,所以我觉得这个过程是不必要的,同时,我希望通过自己在文档中对原书的一些概念进行提炼性的总结来加深自己的记忆映像!因此才有了这个文档的诞生!
切记!!此文档是基于原书的,所以希望读者都是看过原书的。所以你没有看过原书,而直接来这里看,那么是没有意义的,因为本文档没有图文并茂的实例,更没有代码供查看,有的只是从原书中copy过来的“提炼过”的文字、概念而已。
最最最后再说一下,由于时间仓促,所以有些地方表达不是很到位的地方,那么请您以原书为主!再次感谢的阅读!
2021年09月18日 本章主要从缓存的架构、优势、节省带宽流量、提升响应及处理步骤等方面阐述了web缓存!
Java 是由 Sun Microsystems 公司于 1995 年 5 月推出的高级程序设计语言,Java 当初诞生的时候,正是上世纪 90 年代末互联网兴起的时代,在企业应用开发中存在几个问题,一是以 IBM,SUN 和 HP 的 UNIX 服务器和大型机为主的异构环境,C/C++ 和其它语言编写的应用跨平台支持和移植比较困难,二是基于 CGI 和其它技术的网络应用从开发效率和功能性角度来看都不够理想,三是 C/C++在当时是主流编程语言,门槛高、易出错、对经验要求很高,而 Java 简单易学、安全可靠,并且一次编写到处运行,再加上 Applet、Servlet 和 JSP 技术,解决了这些痛点,满足了当时互联网程序设计和运维的要求,伴随着互联网的发展一下子就脱颖而出并长期占据主流地位。
2021年09月30日 缓存的主要作用是暂时在内存中保存业务系统的数据处理结果,并且等待下次访问使用。在日长开发有很多场合,有一些数据量不是很大,不会经常改动,并且访问非常频繁。但是由于受限于硬盘 IO 的性能或者远程网络等原因获取可能非常的费时。会导致我们的程序非常缓慢,这在某些业务上是不能忍的!而缓存正是解决这类问题的神器!
原书地址:https://github.com/elastic/elasticsearch-definitive-guide
作者: clinton gormley,zachary tong
译者: Looly
参与翻译:
@iridiumcao
@cvvnx1
@conan007ai
@sailxjx
@wxlfight
@xieyunzi
@xdream86
@conan007ai
@williamzhao
@dingusxp
@birdroidcn
@MaggieHwang
感谢参与翻译的小伙伴们~~
邮箱: loolly@gmail.com
微博: @路小磊
作者: clinton gormley,zachary tong
译者: Looly
参与翻译:
@iridiumcao
@cvvnx1
@conan007ai
@sailxjx
@wxlfight
@xieyunzi
@xdream86
@conan007ai
@williamzhao
@dingusxp
@birdroidcn
@MaggieHwang
感谢参与翻译的小伙伴们~~
邮箱: loolly@gmail.com
微博: @路小磊
2021年11月09日
2021年10月13日 Elasticsearch 主动缓存了这些字节集留作以后使用。一旦缓存后,当遇到相同的过滤时,这些字节集就可以被重用,而不需要重新运算整个过滤。
这篇文档是关于 Dubbo 的简单介绍,涵盖 Dubbo 的核心概念、基本使用方式以及 Dubbo3 核心功能,无论你是 Dubbo 的老用户还是新用户,都可以通过这篇 文档快速了解 Dubbo 及新版本带来的变化。
2021年10月28日 用请求参数作为 key,缓存返回结果。
2021年10月08日 通过缓存结果加速访问速度。结果缓存,用于加速热门数据的访问速度,Dubbo 提供声明式缓存,以减少用户加缓存的工作量。
本书不会重复造轮子,写出差异化,以实用性为初心,实例化引导为手段,避免阳春白雪式的理论宣导,或是皮相之谈的代码解读。总结而言本书的特点如下:
实例导向,理论为辅:笔者多年服务于互联网金融公司,本书以信贷系统这一真实项目为线索,循序渐进地介绍服务架构的来龙去脉,微服务架构的基础性理念介绍是必须的,但不会生搬硬套地解释某些知识点的设计原理,而会更加关注在架构演进过程中为什么要用到这些技术及这些技术的适用场景及局限。
言简意赅,拒绝话痨:对比国内外技术书箱,很大的差异在于国内很多作者喜欢“堆代码”,喜欢“旁征博引”,本书不求“厚”,但求“精”,对于一些显而易见或是网络中已有详尽介绍的知识点本书尽量以扩展阅读的形式呈现给读者,不占用过多篇幅介绍。
内容殷实,力求全面:在保证行文紧凑的同时,本书尽量覆盖服务架构的核心点、项目实例的全流程关键点,并且会引入一些相关的扩展话题以供探讨,IT技术的发展可能是各个行业中最快的,服务架构做为最重要的IT基础性技术之一自然也在快速地进化,所以本书也会用适当的篇幅用实例介绍目前比较业界被看好的Service Mesh及Serverless技术。
扩展丰富,追根溯源:本书以脚注或扩展阅读的形式引用了大量基础或发散性的解释说明做为知识体系的补充,引文力求正本清源,多为论文链接或权威网站(多见于Wikipedia、InfoQ、IBM)的一手资料。
实例导向,理论为辅:笔者多年服务于互联网金融公司,本书以信贷系统这一真实项目为线索,循序渐进地介绍服务架构的来龙去脉,微服务架构的基础性理念介绍是必须的,但不会生搬硬套地解释某些知识点的设计原理,而会更加关注在架构演进过程中为什么要用到这些技术及这些技术的适用场景及局限。
言简意赅,拒绝话痨:对比国内外技术书箱,很大的差异在于国内很多作者喜欢“堆代码”,喜欢“旁征博引”,本书不求“厚”,但求“精”,对于一些显而易见或是网络中已有详尽介绍的知识点本书尽量以扩展阅读的形式呈现给读者,不占用过多篇幅介绍。
内容殷实,力求全面:在保证行文紧凑的同时,本书尽量覆盖服务架构的核心点、项目实例的全流程关键点,并且会引入一些相关的扩展话题以供探讨,IT技术的发展可能是各个行业中最快的,服务架构做为最重要的IT基础性技术之一自然也在快速地进化,所以本书也会用适当的篇幅用实例介绍目前比较业界被看好的Service Mesh及Serverless技术。
扩展丰富,追根溯源:本书以脚注或扩展阅读的形式引用了大量基础或发散性的解释说明做为知识体系的补充,引文力求正本清源,多为论文链接或权威网站(多见于Wikipedia、InfoQ、IBM)的一手资料。
2021年10月30日 缓存的重要性无需多言,合理的缓存设计既可以提升系统的性能又兼具一定的防攻击能力。
微服务是继SOA后,最流行的服务架构风格之一。
按照微服务对系统进行拆分后,每个服务的业务逻辑都更加简单、清晰。服务之间是松耦合的,模块之间的边界也更加清晰。
微服务有效降低了软件项目的业务复杂程度,为小团队独立开发、持续交付和部署打下了良好的基础。
遗憾的是,微服务并不是银弹。与传统的单一架构相比,微服务架构对团队的组织架构、技术水平、运维能力等方面,都提出了更高的要求。如果没有掌握得当的方法而生搬硬套,微服务架构只会会适得其反--降低项目的开发效率,这是本书的创作初衷之一。
在国内外的技术社区中,比较推崇现有开源方案,如"Spring Cloud全家桶"或者阿里开源的"Dubbo"。上述框架通常已经实现了服务发现、配置、负载均衡、限流熔断,等微服务架构所必须的的核心功能。
使用开源框架省却了造轮子的过程,但也降低了我们学习、思考的欲望。
为什么需要服务发现,又如何实现它呢?配置中心呢....思考和设计的过程充满了挑战,也是提升自身架构能力的一种手段。这是本书的创作初衷之二。
已有的微服务资料过于重视微服务的开发,忽略了微服务赖以生存的生态系统:工具链、自动化运维。可以说,离开了这两点的支持,微服务架构将难以落地。完善这两方面的思考和实战,是本书的创作初衷之三。
为此,我撰写了这本《从0到1实战微服务架构》。让我们"暂时忘掉"已有的、成熟的开源解决方案。尝试亲自动手,实现微服务架构的各个模块。
我们会从微服务开发、工具链、运维这三个角度,阐述微服务架构的实战方案。
由于篇幅、精力所限,本书无法写成一本”零起点”教程。我假设读者具有至少2年的服务端工作经验,并且了解以下技术或原理:
Git
Maven & Gradle
Docker & k8s
Java
Spring / Spring Boot
数据库: 如MySQL
消息队列: 如RabbitMQ
缓存系统: 如Memcached
内存数据库: 如Redis
本书可以供架构师、项目经理、高级服务端程序员参考、学习。
动手实战是本书的核心内容,因此本书所涉及的全部代码,都托管到了我的Github上(以lmsia-开头的项目)。
这些代码以研讨为主要目的,也可以直接应用于生产,但本人不对其稳定性负责。
按照微服务对系统进行拆分后,每个服务的业务逻辑都更加简单、清晰。服务之间是松耦合的,模块之间的边界也更加清晰。
微服务有效降低了软件项目的业务复杂程度,为小团队独立开发、持续交付和部署打下了良好的基础。
遗憾的是,微服务并不是银弹。与传统的单一架构相比,微服务架构对团队的组织架构、技术水平、运维能力等方面,都提出了更高的要求。如果没有掌握得当的方法而生搬硬套,微服务架构只会会适得其反--降低项目的开发效率,这是本书的创作初衷之一。
在国内外的技术社区中,比较推崇现有开源方案,如"Spring Cloud全家桶"或者阿里开源的"Dubbo"。上述框架通常已经实现了服务发现、配置、负载均衡、限流熔断,等微服务架构所必须的的核心功能。
使用开源框架省却了造轮子的过程,但也降低了我们学习、思考的欲望。
为什么需要服务发现,又如何实现它呢?配置中心呢....思考和设计的过程充满了挑战,也是提升自身架构能力的一种手段。这是本书的创作初衷之二。
已有的微服务资料过于重视微服务的开发,忽略了微服务赖以生存的生态系统:工具链、自动化运维。可以说,离开了这两点的支持,微服务架构将难以落地。完善这两方面的思考和实战,是本书的创作初衷之三。
为此,我撰写了这本《从0到1实战微服务架构》。让我们"暂时忘掉"已有的、成熟的开源解决方案。尝试亲自动手,实现微服务架构的各个模块。
我们会从微服务开发、工具链、运维这三个角度,阐述微服务架构的实战方案。
由于篇幅、精力所限,本书无法写成一本”零起点”教程。我假设读者具有至少2年的服务端工作经验,并且了解以下技术或原理:
Git
Maven & Gradle
Docker & k8s
Java
Spring / Spring Boot
数据库: 如MySQL
消息队列: 如RabbitMQ
缓存系统: 如Memcached
内存数据库: 如Redis
本书可以供架构师、项目经理、高级服务端程序员参考、学习。
动手实战是本书的核心内容,因此本书所涉及的全部代码,都托管到了我的Github上(以lmsia-开头的项目)。
这些代码以研讨为主要目的,也可以直接应用于生产,但本人不对其稳定性负责。
2021年11月02日 作为纯内存缓存,Memcached拥有非常出色的读写性能,但也存在一个较为严重的缺点:无法持久化。
这意味着,一旦Memcached服务重启(更常见的是掉电),之前所有的缓存就会丢失。若线上的流量很大,这种重启很容易诱发"缓存雪崩",从而导致系统故障。
Redis的出现很好的解决了这个问题,它是一款高性能的内存的数据库,既不仅数据的支持持久化、也内置了许多数据结构,方便实现各种需求。在一些场景下1,可以直接用Redis取代Memcached + MySQL的组合。
本节将讨论Redis运维相关的问题。
这意味着,一旦Memcached服务重启(更常见的是掉电),之前所有的缓存就会丢失。若线上的流量很大,这种重启很容易诱发"缓存雪崩",从而导致系统故障。
Redis的出现很好的解决了这个问题,它是一款高性能的内存的数据库,既不仅数据的支持持久化、也内置了许多数据结构,方便实现各种需求。在一些场景下1,可以直接用Redis取代Memcached + MySQL的组合。
本节将讨论Redis运维相关的问题。
2021年11月02日 如果业务进一步发展,通过"读写分离"、"分库分表"后,数据库的性能依然无法满足高并发读请求,此时就需要缓存出马了。
ThinkPHP是一个免费开源的,快速、简单的面向对象的轻量级PHP开发框架,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简代码的同时,更注重易用性。遵循Apache2开源许可协议发布,意味着你可以免费使用ThinkPHP,甚至允许把你基于ThinkPHP开发的应用开源或商业产品发布/销售。
ThinkPHP6.0基于精简核心和统一用法两大原则在5.1的基础上对底层架构做了进一步的优化改进,并更加规范化。由于引入了一些新特性,ThinkPHP6.0运行环境要求PHP7.1+,不支持5.1的无缝升级(官方给出了升级指导用于项目的升级参考)。
采用PHP7强类型(严格模式)
支持更多的PSR规范
多应用支持
ORM组件独立
改进的中间件机制
更强大和易用的查询
全新的事件系统
支持容器invoke回调
模板引擎组件独立
内部功能中间件化
SESSION机制改进
缓存及日志支持多通道
引入Filesystem组件
对Swoole以及协程支持改进
对IDE更加友好
统一和精简大量用法
版权申明
发布本资料须遵守开放出版许可协议 1.0 或者更新版本。
未经版权所有者明确授权,禁止发行本文档及其被实质上修改的版本。
未经版权所有者事先授权,禁止将此作品及其衍生作品以标准(纸质)书籍形式发行。
如果有兴趣再发行或再版本手册的全部或部分内容,不论修改过与否,或者有任何问题,请联系版权所有者 thinkphp@qq.com。
对ThinkPHP有任何疑问或者建议,请进入官方讨论区 [ http://www.thinkphp.cn/topic ] 发布相关讨论。
有关ThinkPHP项目及本文档的最新资料,请及时访问ThinkPHP项目主站 http://www.thinkphp.cn。
ThinkPHP6.0基于精简核心和统一用法两大原则在5.1的基础上对底层架构做了进一步的优化改进,并更加规范化。由于引入了一些新特性,ThinkPHP6.0运行环境要求PHP7.1+,不支持5.1的无缝升级(官方给出了升级指导用于项目的升级参考)。
采用PHP7强类型(严格模式)
支持更多的PSR规范
多应用支持
ORM组件独立
改进的中间件机制
更强大和易用的查询
全新的事件系统
支持容器invoke回调
模板引擎组件独立
内部功能中间件化
SESSION机制改进
缓存及日志支持多通道
引入Filesystem组件
对Swoole以及协程支持改进
对IDE更加友好
统一和精简大量用法
版权申明
发布本资料须遵守开放出版许可协议 1.0 或者更新版本。
未经版权所有者明确授权,禁止发行本文档及其被实质上修改的版本。
未经版权所有者事先授权,禁止将此作品及其衍生作品以标准(纸质)书籍形式发行。
如果有兴趣再发行或再版本手册的全部或部分内容,不论修改过与否,或者有任何问题,请联系版权所有者 thinkphp@qq.com。
对ThinkPHP有任何疑问或者建议,请进入官方讨论区 [ http://www.thinkphp.cn/topic ] 发布相关讨论。
有关ThinkPHP项目及本文档的最新资料,请及时访问ThinkPHP项目主站 http://www.thinkphp.cn。
2021年11月11日 ThinkPHP采用think\Cache类(实际使用think\facade\Cache类即可)提供缓存功能支持。
内置支持的缓存类型包括file、memcache、wincache、sqlite、redis。
ThinkPHP的缓存类遵循PSR-16规范。
内置支持的缓存类型包括file、memcache、wincache、sqlite、redis。
ThinkPHP的缓存类遵循PSR-16规范。
2021年11月08日 支持请求缓存功能,支持对GET请求设置缓存访问,并设置有效期。
请求缓存仅对GET请求有效
请求缓存仅对GET请求有效
leveldb是一个写性能十分优秀的存储引擎,是典型的LSM树(Log Structured-Merge Tree)实现。LSM树的核心思想就是放弃部分读的性能,换取最大的写入能力。
2021年11月23日 缓存对于一个数据库读性能的影响十分巨大,倘若leveldb的每一次读取都会发生一次磁盘的IO,那么其整体效率将会非常低下。
Leveldb中使用了一种基于LRUCache的缓存机制,用于缓存:
已打开的sstable文件对象和相关元数据;
sstable中的dataBlock的内容;
使得在发生读取热数据时,尽量在cache中命中,避免IO读取。在介绍如何缓存、利用这些数据之前,我们首先介绍一下leveldb使用的cache是如何实现的。
Leveldb中使用了一种基于LRUCache的缓存机制,用于缓存:
已打开的sstable文件对象和相关元数据;
sstable中的dataBlock的内容;
使得在发生读取热数据时,尽量在cache中命中,避免IO读取。在介绍如何缓存、利用这些数据之前,我们首先介绍一下leveldb使用的cache是如何实现的。
TIPI项目是一个自发项目, 项目主要关注PHP的内部实现, 以及PHP相关的方方面面, 该项目包括《深入理解PHP内核》这本书,以及一些相关的PHP项目,例如一些PHP扩展及研究项目.
你可以联系以下作者
reeze http://reeze.cn reeze.xia@gmail.com
er http://www.zhangabc.com er@zhangabc.com
phppan http://www.phppan.com/ phppan.p@gmail.com
HonestQiao http://www.wapm.cn/ honestqiao@gmail.com
mengkang https://mengkang.net i@zhoumengkang.com
或者发给所有组员: team@php-internals.com
贡献者
感谢这些贡献者:https://github.com/reeze/tipi/contributors
你可以联系以下作者
reeze http://reeze.cn reeze.xia@gmail.com
er http://www.zhangabc.com er@zhangabc.com
phppan http://www.phppan.com/ phppan.p@gmail.com
HonestQiao http://www.wapm.cn/ honestqiao@gmail.com
mengkang https://mengkang.net i@zhoumengkang.com
或者发给所有组员: team@php-internals.com
贡献者
感谢这些贡献者:https://github.com/reeze/tipi/contributors
2022年12月12日 在维基百科中有这样一段描述:凡是位于速度相差较大的两种硬件之间的,用于协调两者数据传输速度差异的结构,均可称之为Cache。从最初始的处理器与内存间的Cache开始,都是为了让数据访问的速度适应CPU的处理速度,其基于的原理是内存中“程序执行与数据访问的局域性行为”。同样PHP内存管理中的缓存也是基于“程序执行与数据访问的局域性行为”的原理。引入缓存,就是为了减少小块内存块的查询次数,为最近访问的数据提供更快的访问方式。