-
万字详解 Zookeeper 的五个核心知识点
1 ZooKeeper简介ZooKeeper 是一个开源的分布式协调框架,它的定位是为分布式应用提供一致性服务,是整个大数据体系的管理员。ZooKeeper 会封装好复杂易出错的关键服务,将高效、稳定、易用的服务提供给用户使用。如果上面的官方言语你不太理解,你可以认为 ZooKeeper = 文件系统 + 监听通知机制。1.1 文件系统Zookeeper维护一个类似文件系统的树...
-
数据库安全:数据库加密技术介绍
数据库加密是计算机系统对信息进行保护的一种最可靠的方法。它利用密码技术对信息进行加密,实现信息屏蔽,从而起到保护信息安全的作用。对数据库中的数据进行加密,可以防止数据在存储和传输过程中失密。常用的数据加密技术按照作用不同分为数据加密技术、数据存储加密技术、数据完整性鉴别技术、密钥管理技术。1、数据传输加密技术 数据传输加密技术的目的是对传输中的数据流加密,通常由线路加密与端到端...
-
图解 | 原来这就是网络
你是一台电脑,你的名字叫 A很久很久之前,你不与任何其他电脑相连接,孤苦伶仃。直到有一天,你希望与另一台电脑 B 建立通信,于是你们各开了一个网口,用一根网线连接了起来。用一根网线连接起来怎么就能"通信"了呢?我可以给你讲 IO、讲中断、讲缓冲区,但这不是研究网络时该关心的问题。如果你纠结,要么去研究一下操作系统是如何处理网络 IO 的,要么去研究一下包是如何被网卡转换成电信号...
-
高并发架构-分库分表
为什么要分库分表(高并发系统的时候,数据库层该如何设计)?分库分表提高高并发有哪些分库分表中间件?如cobar、TTDL、Atlas、Sharding-jdbc 是client层方案,不需要单独部署,项目依赖jar包;mycat 是proxy层方案,需要部署,对各个项目透明;如何进行垂直拆分或水平拆分?水平拆分就是把一个表的数据给弄到多个库的多个表里去,每个表的结构都一样,但是...
-
Redis集群的5种使用方式,及各自优缺点对比分析
本文主要针对 Redis 常见的几种使用方式及其优缺点展开分析。一、常见使用方式Redis 的几种常见使用方式包括:Redis 单副本Redis 多副本(主从)Redis Sentinel(哨兵)Redis ClusterRedis 自研二、各种使用方式的优缺点1、Redis 单副本Redis 单副本,采用单个 Redis 节点部署架构,没有备用节点实时同步数据,不提供数据持久...
-
什么是分布式任务调度
1.什么是任务调度我们可以先思考一下下面业务场景的解决方案:某电商系统需要在每天上午10点,下午3点,晚上8点发放一批优惠券。某银行系统需要在信用卡到期还款日的前三天进行短信提醒。某财务系统需要在每天凌晨0:10结算前一天的财务数据,统计汇总。12306会根据车次的不同,而设置某几个时间点进行分批放票。某网站为了实现天气实时展示,每隔5分钟就去天气服务器获取最新的实时天气信息。...
-
Zabbix5.2实战系列之如何开启https(LAMP)
虽然大部分使用Zabbix的用户是放在内网,但是该掌握的还是需要的,万一要用到了呢?关于SSL的好处在此篇文章不再赘述了。可以自行度娘了,不过如果ssl证书在服务器解密会损耗机器的资源,当然你的这个前端并不是大众访问,所以基本可以忽略不计了,正常情况是前端挂负载或者nginx做证书解密。正文环境介绍系统版本:CentOS 8.2PHP版本:7.4Mariadb版本:10.3we...
-
mysql中的各种日志文件
mysql在CentOS 7安装好之后,配置文件一般在/etc/my.cnf中。数据目录一般在/var/lib/masql下,其中包含一些日志文件。1)通用日志通用查询日志会记录用户的所有操作,其中还包含增删查改等信息。在并发操作大的环境下会产生大量的信息从而导致不必要的磁盘IO,会影响mysql的性能的。所以,默认情况下是关闭的。可以用 general_log={ON|OFF...
-
搭建mysql主从并用springboot读写分离
本文通过docker快速搭建mysql主从数据库,并用spring boot测试读写分离的实现,这是一个实验环境,便于开发人员开发业务功能代码。一、用docker进行msyql主从环境搭建在搭建环境之前保证已安装docker,本文不进行docker安装的介绍。1、安装master结点执行下面安装docker run --name mysql-master --privilege...
-
spring security 业界标准加密策略源码详解及
密码发展历史果奔时代最初,密码以纯文本格式存储。假定密码是安全的,因为数据存储密码已保存在访问它所需的凭据中。但是,恶意用户能够使用SQL注入之类的攻击找到方法来获取用户名和密码的大型“数据转储”。随着越来越多的用户凭证成为公共安全专家,我们意识到我们需要做更多的事情来保护用户的密码。单向 Hash然后鼓励开发人员在通过诸如SHA-256之类的单向哈希运行密码后存储密码。由于散...
-
架构解密从分布式到微服务:深入理解网络,NIO
NIO我们知道,分布式系统的基础是网络。因此,网络编程是分布式软件工程师和架构师的必备技能之一,而且随着当前大数据和实时计算技术的兴起,高性能RPC架构与网络编程技术再次成为焦点。不管是RPC领域的ZeroC Ice、Thrift,还是经典分布式框架Actor模型中的Akka,或者实时流领域的Storm、Spark、 Flink, 又或者开源分布式数据库中的Mycat、Volt...
-
springboot 项目之默认全局异常拦截
在web项目中,不可避免地会出现系统异常,例如资源找不到的404错误,服务器异常的5**错误,如果对这些异常不进行任何处理,则是非常不友好的。今天就对springboot项目中的异常拦截处理进行一个简单的使用说明。这里我使用的是springboot默认的异常拦截,也就是新建一个BasicErrorController类继承BasicErrorController。默认异常拦截在...
-
java初探Tess4j识别图片文字
想学习下识别图片中的文字,找到了Tess4j图文识别的方式,于是就初步探究下,玩下识别验证码。第一步,下载1、以3.4.2版本为例,下载Tess4j-3.4.2-src.zip。2、下载中文字库,chi_sim.traineddata。下载Tess4j参考:http://sourceforge.net/projects/tess4j/字库下载参考:https://github....
-
Nacos Discovery和Eureka的区别
Eureka架构图:Eureka架构图1.服务注册(register):Eureka Client会通过发送REST请求的方式,向Eureka Server注册自己的服务。注册时,提供自身的元数据,比如ip地址、端口、运行状况指标、主页地址等信息。Eureka Server接收到注册请求后,就会把这些元数据信息存储在一个双层的Map中。 什么时候注册?在启动微服务的时候。2.服...
-
一种解决jar包冲突的实现:隔离机制
业务背景随着业务的发展 和 架构的升级, 业务会越来越多的依赖公司内部提供的 中间件 ,如 rpc服务框架、分库分表框架、异步消息框架、公共工具包等等。每个中间件都有自己的 jar包依赖体系,最常用的如: logback、log4j、httpclient 、common-lang 、guava、zookeeper 等等 ,这些jar包依赖不仅会产生版本冲突,甚至会有jar包不兼...
-
25岁的Flash正式被抛弃
几周前,Adobe公司放弃了对Flash Player的支持,并强烈建议所有用户出于安全原因立即卸载浏览器插件。从今天开始,Adobe更是完全放弃了Flash。目前,当用户尝试在浏览器(例如Chrome)中加载Flash游戏或内容时,该内容现在无法加载,而是显示一条小横幅,该横幅指向Adobe网站上的Flash报废页面。虽然这一天早有预兆——许多年前,许多浏览器默认禁用Fl...
-
CodeReview规范
CodeReview规范目标和原则提高代码质量,及早发现潜在缺陷,降低修改/弥补缺陷的成本促进团队内部知识共享,提高团队整体水平评审过程对于评审人员来说,也是一种思路重构的过程,帮助更多的人理解系统是一个传递知识的手段,可以让其它并不熟悉代码的人知道作者的意图和想法,从而可以在以后轻松维护代码可以被用来确认自己的设计和实现是一个清楚和简单的鼓励相互学习对方的长处和优点高效迅速完...
-
Dubbo 版 Swagger 来啦
背景Swagger 是一个规范和完整的前端框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。Swagger 规范也逐渐发展成为了 OpenAPI 规范。Springfox 是一个集成了 Swagger,基于 Sring MVC/Spring Webflux 实现的一个 Swagger 描述文件生成框架,通过使用它定义的一些描述接口的注解自动生成 Swag...
-
数据库同步软件DBSync的设计与实现
DBSync工作原理示意图DBSync是一款数据库同步软件,支持各种数据库之间的同步,支持增量同步。本文分享该软件的产品渊源、设计思想、技术要点、功能特征、使用方法,最后分析其优缺点,供IT技术人员参考,也欢迎大家提供宝贵意见,促进我们持续进步。阅读本文,用时大约15分钟。1、产品渊源早在2003年,我们在企业信息化的过程中,就经常遇到系统对接问题。很多客户的一些老旧软件,不方...
-
要精通SQL优化?首先要看懂explain关键字
前言在MySQL中,我们知道加索引能提高查询效率,这基本上算是常识了。但是有时候,我们加了索引还是觉得SQL查询效率低下,我想看看有没有使用到索引,扫描了多少行,表的加载顺序等等,怎么查看呢?其实MySQL自带的SQL分析神器Explain执行计划就能完成以上的事情!Explain有哪些信息先确认一下试验的MySQL版本,这里使用的是5.7.31版本。只需要在SQL语句前加上e...
-
统一代码风格,从统一注释模板开始吧
“王哥,王哥,代码又冲突了!”“王司,王司,代码咋拉下来冲突了!”血压瞬间飙升走近一看,原来是代码注释的不一样,导致了代码冲突,我的血压就如上图一样。自从到新公司后,这样的场景已经上演过很多次了。在多次"血淋淋的"事情发生后。终于在上周五,我们下定决心,要统一下代码的注释模板。解决这让人蛋痛的问题。首先介绍下:我们使用的开发工具是大名鼎鼎的 "IDEA"。言归正传,开始来介绍设...
-
Apache Tomcat 安全最佳实践
Apache Tomcat是一个强大的Web应用软件,它包括了许多现成的强大功能。但是,它所具有的这些功能和设置,并不允许你直接安装在生产环境服务器上。在上线前,你需要进行全面的设置和安全加固,以确保Tomcat服务器的安全。网上有很多方法可以提高Apache Tomcat的安全性,以下8个技巧将以最简单直接的方式来保护服务器的安全。让我们从最简单的项目开始设置。1. 不要以r...
-
MySQL的日志 - undo log
前言什么是undo logundo log的作用undo log的存储空间和系统表空间存放在一起独立的undolog表空间undo log的相关参数独立undolog表空间的意义最后前言前面我们介绍了MySQL中的慢查询slow query log,二进制日志binlog,中继日志relay log,重做日志redolog,今天我们来看一下另外一个重要的日志:undo log。...
-
从架构入手轻松读懂框架:以jQuery,Zepto,Vue和lodash-es为例
知道有没有朋友有这种经历。雄心勃勃的打开一个开源框架的源码,开始看,一行一行的看下去,看了几行就感觉,“我艹,这什么玩意儿”,然后就看不下去了。如果你有类似的经历,可以看看本文,本文会以几个常见开源库为例讲解几种常见的开源框架的代码架构,从架构出发,帮你轻松读懂框架源码。记住以下两个要点:不要一行一行的读代码先找入口,再理架构,依流程读下去jQuery以jQuery为例,来看看...
-
数据库实用脚本:计算地球上两个坐标点之间的里程
今天给大家分享计算地球上两个坐标点之间里程不同数据库版本的脚本。1、SQLServer脚本–-计算地球上两个坐标点(经度,纬度)之间距离sql函数 CREATE FUNCTION [dbo].[fnGetDistance](@LatBegin REAL, @LngBegin REAL, @LatEn...
-
小心避坑:MySQL分页时使用 limit+order by 会出现数据重复问题
0 问题描述在MySQL中我们通常会采用limit来进行翻页查询,比如limit(0,10)表示列出第一页的10条数据,limit(10,10)表示列出第二页。但是,当limit遇到order by的时候,可能会出现翻到第二页的时候,竟然又出现了第一页的记录。具体如下:SELECT `post_title`, `post_date...
-
分享一则生产数据库sql优化案例—从98s优化到1.4s
概述今天主要分享一则生产环境的sql优化案例,仅供参考。问题sql该sql定位还是比较容易的,直接查慢查询语句就直接定位出来了。在测试环境执行需耗时98s,查出数据7108条。SELECT * FROM ( SELECT t.group_code, ter.terminate_begin_date AS terminateBeginDate, ... FR...
-
2021年最适合用于Web开发的7种编程语言
编程语言就是一种用人类可读的方式,告诉计算机该怎么做一件事情。任何语言都是使用一系列符号来表示计算机的精确指令,这些指令的组合可以创建一个程序。在这个世界上,有成千上万的编程语言,也有新语言在不断被创建。构建网站也是这样,我们可以通过许多可能的方式来构建,问题是,我们该怎么做出正确的选择?2021 年将至,本文列举了最适合用于 Web 应用程序开发的Top7编程语言。1.Pyt...
-
干掉mapper.xml!MyBatis新特性动态SQL真香
当我们使用MyBatis的时候,需要在mapper.xml中书写大量的SQL语句。当我们使用MyBatis Generator(MBG)作为代码生成器时,也会生成大量的mapper.xml文件。其实从MBG 1.3.6版本以后,MyBatis官方已经推荐使用Dynamic SQL,使用这一新特性基本就不用写mapper.xml文件了,使用起来非常方便,推荐给大家!Dynamic...
-
MybatisPlus全套Api小解(一)
前言如果说ssm比ssh究竟好用在哪里,快速开发体验在哪里的话,那必然就是mybatis了,如果还要找一个比mybatis更优秀的dao层框架,那必然就是他的大哥——mybatis plus。一、MybatisPuls是什么? MyBatis-Plus 是一个 Mybatis 增强版工具,在 MyBatis 上扩充了其他功能没有改变其基本功能,只是为了简化开发提交效率而存在。官...