-
MySQL索引原理及慢查询优化
背景 MySQL凭借着出色的性能、低廉的成本、丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库。虽然性能出色,但所谓“好马配好鞍”,如何能够更好的使用它,已经成为开发工程师的必修课,我们经常会从职位描述上看到诸如“精通MySQL”、“SQL语句优化”、“了解数据库原理”等要求。我们知道一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,遇到最多的,也是最容…... 松阳- 0
- 0
- 21
-
完爆90%的性能毛病,数据库优化八大通用绝招!
为什么数据库会慢? 慢的本质: 慢的本质 查找的时间复杂度 查找算法 存储数据结构 存储数据结构 数据总量 数据拆分 高负载 CPU、磁盘繁忙 无论是关系型数据库还是NoSQL,任何存储系统决定于其查询性能的主要有三种: 查找的时间复杂度 数据总量 高负载 而决定于查找时间复杂度主要有两个因素: 查找算法 存储数据结构 无论是哪种存储,数据量越少,自然查询性能就越高,随着数据量增多,资源的消耗(C…... 松阳- 0
- 0
- 25
-
MySQL慢sql分析及优化
从数据库角度看:每个SQL执行都需要消耗一定I/O资源,SQL执行的快慢,决定资源被占用时间的长短。假设总资源是100,有一条慢SQL占用了30的资源共计1分钟。那么在这1分钟时间内,其他SQL能够分配的资源总量就是70,如此循环,当资源分配完的时候,所有新的SQL执行将会排队等待。 从应用的角度看:SQL执行时间长意味着等待,在OLTP应用当中,用户的体验较差 治理的优先级上 master数据库…... 松阳- 0
- 0
- 31
-
【Node操作指南】npm 淘宝镜像的安装
方法一: 1.永久使用,直接使用阿里定制的cnpm命令行工具代替默认的npm,在命令行输入以下代码: npm install -g cnpm --registry=https://registry.npm.taobao.org 2.检查是否安装成功: $ cnpm -v 方法二: 方法二: 1.如果只需要使用一次,在命令行输入以下代码: npm install --registry=…... 松阳- 0
- 0
- 33
-
全解Python的地理编码
1、简介 大家在处理机器学习的大型数据集时,是否会遇到如下的地址栏? 上面的位置数据非常混乱,难以处理。 对地址进行编码是很困难的,因为它们具有非常高基数。 如果你试图用单次编码技术来对某列进行编码,就会导致高维度的结果,这会导致机器学习模型表现欠佳。 解决问题的最简单方法就是对列进行地理编码。 2、什么是地理编码? 地理编码是将地址转换为地理坐标,这意味着将把原始地址转化为经度/纬度的方式。 3…... 松阳- 0
- 0
- 25
-
Web2 是使用 JavaScript 构建的,Web3 也应该如此
在过去的几个月里,我们听说过很多关于 Web3 的信息,但是,关于它是什么以及我们如何对其进行操作仍然存在神秘因素。加密行业的最新市场低迷导致用户和开发人员进一步怀疑,但我们必须将 Web3 的基础设施与加密市场可能爆发的波动区分开来。通过专注于构建和改进 Web3 的基础,我们将开始发现这项技术的真正潜力。要做到这一点,我们首先需要鼓励更多的开发人员参与到这个新的网络时代。JavaScript …... 松阳- 0
- 0
- 35
-
正则表达式如何导致 ReDoS 漏洞?
当您需要搜索和替换文本时,正则表达式会派上用场。但是,在某些情况下,它们可能会导致系统变慢,甚至容易受到 ReDoS 攻击。 介绍 ReDoS 是 DoS 攻击的一个子类型。ReDoS 攻击的目的是通过低效的正则表达式停止应用程序或使其变慢。 ReDoS攻击可分为两种类型: 具有恶意模式的字符串将传递给应用程序。然后此字符串用作正则表达式,从而导致 ReDoS。 将特定格式的字符串传递给应用程序。…... 松阳- 0
- 0
- 180
-
如何设计多语言数据库
让数以百万计的用户使用自己开发的应用程序是每个开发人员的梦想。如果让世界各地的用户都能使用其开发的应用程序,那么实现这一目标将变得更加容易。由于并非所有用户都精通英语或开发人员的母语,因此需要将其设计为多语言的应用程序。但是如果没有多语言数据库,这是不可能实现的。 设计一个可以轻松扩展到新语言的多语言数据库并不容易。这就是开发人员应该依赖最佳实践的原因。以下将介绍为什么需要多语言数据库、三种出色的…... 松阳- 0
- 0
- 39
-
每位开发人员都应该知道的安全编码实践
公司正在寻找加快开发过程的方法已不是什么秘密。为了缩短上市时间,他们还关心避免数据泄露和其他类型的网络攻击。 但是,如何确保开发过程的安全呢?开发人员可以使用多种方法来确保其代码和数据的安全。 模块化编码 软件已成为我们日常生活的重要组成部分,因此我们遵循安全编码实践才有意义。毕竟,开发人员对代码的安全性负责,我们需要确保我们不会损害代码的安全性。 好消息是,安全编码实践并不新鲜。事实上,大多数有…... 松阳- 0
- 0
- 26
-
数据库为何需要多区域应用程序架构?
多区域应用程序架构是任何云应用系统最重要的方面之一。它的意义不仅仅在于覆盖全球和接近客户,还在于确保应用程序可以在不同的区域和国家顺利运行。 因此,您的数据库应驻留在多个区域,那样即使遇到自然灾害或电力中断等意外问题,也能确保高可用性和高性能。 多区域意味着什么? 多区域意味着您的应用程序覆盖多个区域。每个区域都是一个独立的数据中心,含有自己的数据库和负载均衡系统。不同区域的数据库彼此之间没有连接…... 松阳- 0
- 0
- 39
-
MySQL遵循最左前缀匹配原则!面试官:回去等通知吧
我们都知道,MySQL的Innodb引擎中,索引是通过B+树来实现的。不管是普通索引还是联合索引,都需要构造一个B+树的索引结构。 那么,我们都知道普通索引的存储结构中在B+树的每个非节点上记录的索引的值,而这棵B+树的叶子节点上记录的是聚簇索引(主键索引)的值。 如: 那么,如果是联合索引的话,这棵B+树又是如何存储的呢? 在联合索引中,联合索引(name,age)也是一个B+树,非叶子节点中记…... 松阳- 0
- 0
- 31
-
如何在 Spring Boot 中使用 Quartz 调度作业
用于调度的Spring注解 在 Spring 应用程序中使用 Quartz 最简单的方法是使用@Scheduled注解。接下来,我们将考虑一个 Spring Boot 应用程序的示例。让我们添加必要的依赖项build.gradle implementation 'org.springframework.boot:spring-boot-starter-quartz' 并考虑…... 松阳- 0
- 0
- 440
-
Go语言中的数据竞争模式
近年来,Uber已经开始采用Golang(简称Go)作为开发微服务的主要编程语言。目前,其Go monorepo(译者注:包含多个不同项目的单个仓库)包含了大约5,000万行代码,以及大约2,100个独特的Go服务。而且,它们都还在持续增长中。 为了实现并发,我们通常会使用go关键字,为函数调用添加前缀,以实现异步式的运行调用。在Go中,此类异步函数调用被称为goroutine。开发人员可以通过创…... 松阳- 0
- 0
- 184
-
三个案例告诉你,数仓数据流如何搭建?
1、Confluent从使用Stitch的批量ETL到使用Kafka的流式ETL的数据仓库现代化 Confluent尽量多用自身开发的软件来实现内部数据仓库管道的现代化的做法,该使用案例在大多数组织中都是简单和标准的:将Salesforce数据提取、转换和加载(ETL)到Google BigQuery数据仓库中,以便企业可以使用这些数据。但实际上它要比听起来更为复杂。 组织通常依靠第三方ETL工具…... 松阳- 0
- 0
- 535
-
SQL 世界中的安全性与性能
如果你发现自己以某种方式置身于数据库的世界中,想必你已经对数据库的安全和性能有了一些了解。数据库管理系统确实为数据库带来了好处,但你是否考虑过需要从安全性和性能角度进行权衡,以便使你的选择最有效?这正是本文要探讨的。 安全和性能是否联系在一起? 首先要考虑一个事实,性能和安全密切相关。出现这种情况的主要原因是,开发人员,无论是初级的还是资深的,在其职业生涯的某个时刻开始意识到: 安全性提高时,实现…... 松阳- 0
- 0
- 553
-
JavaScript 内存泄漏教程
一、什么是内存泄漏? 程序的运行需要内存。只要程序提出要求,操作系统或者运行时(runtime)就必须供给内存。 对于持续运行的服务进程(daemon),必须及时释放不再用到的内存。否则,内存占用越来越高,轻则影响系统性能,重则导致进程崩溃。 不再用到的内存,没有及时释放,就叫做内存泄漏(memory leak)。 有些语言(比如 C 语言)必须手动释放内存,程序员负责内存管理。 char * b…... 松阳- 0
- 0
- 55
-
Cookie 的 SameSite 属性
Chrome 51 开始,浏览器的 Cookie 新增加了一个SameSite属性,用来防止 CSRF 攻击和用户追踪。 一、CSRF 攻击是什么? Cookie 往往用来存储用户的身份信息,恶意网站可以设法伪造带有正确 Cookie 的 HTTP 请求,这就是 CSRF 攻击。 举例来说,用户登陆了银行网站your-bank.com,银行服务器发来了一个 Cookie。 Set-Cookie:i…... 松阳- 0
- 0
- 49
-
剪贴板操作 Clipboard API 教程
一、简介 浏览器允许 JavaScript 脚本读写剪贴板,自动复制或粘贴内容。 一般来说,脚本不应该改动用户的剪贴板,以免不符合用户的预期。但是,有些时候这样做确实能够带来方便,比如"一键复制"功能,用户点击一下按钮,指定的内容就自动进入剪贴板。 目前,一共有三种方法可以实现剪贴板操作。 Document.execCommand()方法 异步的 Clipboard API c…... 松阳- 0
- 0
- 77
-
JavaScript 侦测手机浏览器的五种方法
本文根据 StackOverflow,整理了 JavaScript 侦测手机浏览器的五种方法。 一、navigator.userAgent 最简单的方法就是分析浏览器的 user agent 字符串,它包含了设备信息。 JS 通过navigator.userAgent属性拿到这个字符串,只要里面包含mobi、android、iphone等关键字,就可以认定是移动设备。 if (/Mobi|Andr…... 松阳- 0
- 0
- 394
-
前端加密JS库–CryptoJS 使用指南
时候项目涉及到的敏感数据比较多,为了信息安全,我们常常需要对一些数据进行接口加密处理,如编码、将明文转化为暗文、加密比对、AES + BASE64 算法加密等。接下来我们就分别说一下 CryptoJS 常用的一些方法。 CryptoJS文档 为什么要编码? 由于一些网络通讯协议的限制, 又或者是出于信息加密的目的, 我们就需要将原信息转换为base64编码,然后才能进行传输.例如,发送某些含有 A…... 松阳- 0
- 0
- 466
-
【JavaScript】手撕前端面试题:对象参数浅拷贝 | 简易深拷贝 | 完整深拷贝
1、浅拷贝 要求 补全JavaScript代码,要求实现一个对象参数的浅拷贝并返回拷贝之后的新对象。 注意: 参数可能包含函数、正则、日期、ES6新对象 是对对象的参数进行浅拷贝,并不是直接对整个对象进行浅拷贝(整个对象的浅拷贝直接赋值即可) 思路 先对参数进行判断,如果不是对象或者是null、函数、正则、日期、ES6新对象(Set和Map)中的一种就直接返回原参数。通过对象上的construct…... zero- 0
- 0
- 427
-
node.js安装及环境配置超详细教程【Windows系统安装包方式】
Step1:下载安装包 根据自己电脑系统及位数选择,我的电脑是Windows系统、64位、想下载稳定版的.msi(LTS为长期稳定版)这里选择windows64位.msi格式安装包。 .msi和.zip格式区别: .msi是Windows installer开发出来的程序安装文件,它可以让你安装,修改,卸载你所安装的程序。说白了.msi就是Windows installer的数据包,把所有和安装文…... zero- 0
- 0
- 72