redis
未读前言同整数集合一样压缩列表也不是基础数据结构,而是 Redis 自己设计的一种数据存储结构。它有点儿类似数组,通过一片连续的内存空间,来存储数据。不过,它跟数组不同的一点是,它允许存储的数据大小不同。
一、压缩列表听到“压缩”两个字,直观的反应就是节省内存。之所以说这种存储结构节省内存,是相较于数组的存储思路而言的。我们知道,数组要求每个元素的大小相同,如果我们要存储不同长度的字符串,那我们就需要用最大长度的字符串大小作为元素的大小(假设是20个字节)。存储小于 20 个字节长度的字符串的时候,便会浪费部分存储空间。
数组的优势占用一片连续的空间可以很好的利用CPU缓存访问数据。如果我们想要保留这种优势,又想节省存储空间我们可以对数组进行压缩。
但是这样有一个问题,我们在遍历它的时候由于不知道每个元素的大小是多少,因此也就无法计算出下一个节点的具体位置。这个时候我们可以给每个节点增加一个lenght的属性。
如此。我们在遍历节点的之后就知道每个节点的长度(占用内存的大小),就可以很容易计算出下一个节点再内存中的位置。这种结构就像一个简单的压缩列表了。
二、Redis压 ...
Query Store可帮助您跟踪执行计划(含历史记录)、运行时统计信息。可以快速查找包含多个计划的新查询,识别无效计划并强制制定更好的计划。所有示例使用的是SQL Server 2016 CTP 2.2版。
一、 启用及配置Query Store1. 启用数据库属性 -> Query Store -> Enable
也可以使用T-SQL启用:
12ALTER DATABASE [DEMO_1] SET QUERY_STORE = ON;
2. 配置单击每个属性以查看其描述。可以在官方文档找到有关每个选项的详细信息
https://docs.microsoft.com/en-us/sql/relational-databases/performance/monitoring-performance-by-using-the-query-store?view=sql-server-2017#Options
还可以使用T-SQL更改Query Store配置:
123456789ALTER DATABASE [DEMO_1] SET QUERY_STORE (OPERAT ...
介绍这是 OAuth 2.0 的用户指南。OAuth 1.0 与之大不相同,若有需求,请阅读 1.0 的用户指南。
本用户指南分为两个部分,一部分针对的是 OAuth 2.0 的提供方[译者注:通常指服务提供方],另一部分则是针对 OAuth 2.0 客户端。对于提供方和客户端双方来说,最好的示例代码是集成测试和示例应用。
OAuth 2.0 提供方OAuth 2.0 提供方通过某种机制来提供受 OAuth 2.0 保护的资源。其配置涉到确立 OAuth 2.0 客户端能做什么,是能独立访问受保护的资源,还是保护用户的利益。提供方通过管理和验证 OAuth 2.0 令牌达到目的,令牌就是用来访问受保护资源的。在某些情况下,提供方还必须为用户提供一个接口用于确认授权客户端访问受保护的资源(比如,确认页面)。
OAuth 2.0 提供方实现OAuth 2.0 的提供方实际涵盖两个角色,即认证服务 (Authorization Service) 和资源服务 (Resource Service),有时候它们会在同一个应用程序中实现。使用 Spring Security OAuth 的时候你可以 ...
spring
未读在Spring中执行存储过程的方法:
JDBC Template
NamedParameterJdbcTemplate
SimpleJdbcCall
JDBC Template示例:
1234567891011String procedureCall = "{call proc_name(?, ?)}";Map<String, Object> inParams = new HashMap<>();inParams.put("inParam1", 1);Map<String, Object> outParams = jdbcTemplate.call(con -> { CallableStatement callableStatement = con.prepareCall(procedureCall); callableStatement.setInt(1, (Integer) inParams.get("inParam1")); call ...
本文主要介绍在SpringBoot项目中如何使用Mybatis的一级、二级缓存,为了演示方便,本文的数据库采用H2内存数据库,数据库连接池默认使用SpringBoot2.X自带的hikariCP。正确的使用Mybatis缓存可以有效减少多余的数据库查询操作,节约IO。接下来我们从实践出发,看一看mybatis的一级,二级缓存如何使用,相关代码请查阅:https://github.com/zhengxl5566/springboot-demo.git
1、概念介绍
什么是一级缓存在日常开发过程中,经常会有相同的sql执行多次查询的情况,mybatis提供了一级缓存来优化这些查询,避免多次请求数据库。一级缓存在mybatis中默认是开启的并且是session级别,它的作用域为一次sqlSession会话。
什么是二级缓存相对于一级缓存,二级缓存的作用域更广泛,它不止局限于一个sqlSession,可以在多个sqlSession之间共享,事实上,它的作用域是namespace。mybatis的二级缓存默认也是开启的,但由于他的作用域是namespace,所以还需要在mapper.xml中开启 ...
**我并没有深入研究过字符编码, 本文是我在为解析器添加 Unicode 支持时参考 Unicode 13.0.0 Core Specification 所做的笔记, 如果你发现了任何错误或不妥的地方, 请在评论区帮助我改正它, 谢谢!
字符集的历史计算机只能处理二进制数字, 如果要处理文本, 就必须建立字符和二进制字节序列之间的关系. ASCII (American Standard Code for Information Interchange) 编码是基于拉丁字母的一套编码系统, 也是最简单的字符集 (character set), 它建立了字符和代码单元 (0 ~ 127 的整数) 之间的映射关系表. 例如 0110 0001 (97) 对应 'a', 0010 0100 (36) 对应 '$', 0010 1000 (40) 对应 '(' 等等.
ASCII 字符集很容易理解, 但问题是, 它能表示的字符数量太少了, ASCII 字符集只包括基本拉丁字母, 阿拉伯数字, 英式标点符号和少许控制字符. 要处理其他语言的文字, 一 ...
spring-cloud
未读本文介绍Zuul路由的源码以及实现动态路由的几种方式,路由信息可以来自Properties文件、DB、Apollo等。
可以阅读 Spring Cloud源码学习之Zuul 简要了解路由源码流程。
本文基于 Spring Cloud Finchley.SR1,Spring Boot 2.0.6.RELEASE。
路由源码本文基于下图场景做演示,文中代码来自源码,但存在大幅删减。
请求达到ZuulServlet后,ZuulServlet 组织了路由的处理逻辑,如下:
12345678public void service(servletRequest, servletResponse) { // 执行 "pre" 类型 ZuulFilter preRoute(); // 执行 "route" 类型 ZuulFilter route(); // 执行 "post" 类型 ZuulFilter postRoute();}
预处理pre 类型 ZuulFilte r中,PreDecorat ...
从零开始实现一个玩具版浏览器渲染引擎浏览器渲染原理作为前端必须要了解的知识点之一,在面试中经常会被问到。在一些前端书籍或者培训课程里也会经常被提及,比如 MDN 文档中就有渲染原理[1]的相关描述。
作为一名工作多年的前端,我对于渲染原理自然也是了解的,但是对于它的理解只停留在理论知识层面。所以我决定自己动手实现一个玩具版的渲染引擎。
渲染引擎是浏览器的一部分,它负责将网页内容(HTML、CSS、JavaScript 等)转化为用户可阅读、观看、听到的形式。但是要独自实现一个完整的渲染引擎工作量实在太大了,而且也很困难。于是我决定退一步,打算实现一个玩具版的渲染引擎。刚好 Github 上有一个开源的用 Rust 写的玩具版渲染引擎 robinson[2],于是决定模仿其源码自己用 JavaScript 实现一遍,并且也在 Github 上开源了 从零开始实现一个玩具版浏览器渲染引擎[3]。
这个玩具版的渲染引擎一共分为五个阶段:
分别是:
1.解析 HTML,生成 DOM 树2.解析 CSS,生成 CSS 规则集合3.生成 Style 树4.生成布局树5.绘制
每个阶段的代码我在仓 ...
目录
一、项目介绍
二、快速概览DruidDataSource数据结构
三、DruidDataSource入口概览
回到顶部
一、项目介绍 1、Druid简介
Druid连接池是阿里巴巴开源的数据库连接池项目。Druid连接池为监控而生,内置强大的监控功能,监控特性不影响性能。功能强大,能防SQL注入,内置Loging能诊断Hack应用行为。
Github项目地址 https://github.com/alibaba/druid
文档 https://github.com/alibaba/druid/wiki
监控 http://x.x.x.x/druid/index.html
2、模块划分
源码里模块描述:
filter:增加自定义的扩展能力
mock:测试模块,可以使用mock模块做一些模拟测试
pool:核心,入口是DruidDataSource;
proxy:代理层
sql:负责sql解析的工作
stat:扩展能力实现,例如基于filter的监控,真正的实现在stat文件夹
su ...
俄罗斯科技公司 Yandex 前雇员近日在一个流行的黑客论坛上以 Torrent 磁链的形式**发布**了总容量为 44.7GB 的源代码仓库。
泄露者称这是 ‘Yandex git sources’,于 2022 年 7 月从公司窃取,包含了除反垃圾邮件规则之外的所有源代码。
软件工程师 Arseniy Shestakov 在分析泄露的 Yandex Git 仓库后,发现其中包含以下产品的技术数据和代码:
Yandex 搜索引擎和索引机器人
Yandex 地图
Alice(人工智能助理)
Yandex Taxi
Yandex Direct(广告服务)
Yandex 邮件
Yandex Disk(云存储服务)
Yandex Market
Yandex Travel(旅游预订平台)
Yandex360(Workspace 服务)
Yandex Cloud
Yandex Pay(支付处理服务)
Yandex Metrika(互联网分析)
泄露文件的目录:http://gist.github.com/ArseniyShestakov/53a80e3214601aa20d1075872a ...