后端
学致前端攻略
学致前端攻略,致力于技术分享,本博客将每日分享互联网相关文章。
展开
-
什么是微服务?微服务之间是如何独立通讯的?
什么是微服务微服务架构是一个分布式系统,按照业务进行划分成为不同的服务单元,解决单体系统性能等不足。微服务是一种架构风格,一个大型软件应用由多个服务单元组成。系统中的服务单元可以单独部署,各个服务单元之间是松耦合的。微服务概念起源:Microservices微服务之间是如何独立通讯的同步REST HTTP 协议REST 请求在微服务中是最为常用的一种通讯方式,它依赖于 HTTP\HTTPS 协议。RESTFUL 的特点是:每一个 URI 代表 1 种资源客户端使用 GET、POS转载 2020-12-21 13:35:38 · 1183 阅读 · 0 评论 -
Git 入门
版本控制什么是版本控制版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。 除了项目源代码,你可以对任何类型的文件进行版本控制。为什么要版本控制有了它你就可以将某个文件回溯到之前的状态,甚至将整个项目都回退到过去某个时间点的状态,你可以比较文件的变化细节,查出最后是谁修改了哪个地方,从而找出导致怪异问题出现的原因,又是谁在何时报告了某个功能缺陷等等。本地版本控制系统许多人习惯用复制整个项目目录的方式来保存不同的版本,或许还会改名加上备份时间以示区别。 这么做唯一的好处就转载 2020-12-19 14:23:47 · 170 阅读 · 1 评论 -
手把手教你定位常见Java性能问题
概述性能优化一向是后端服务优化的重点,但是线上性能故障问题不是经常出现,或者受限于业务产品,根本就没办法出现性能问题,包括笔者自己遇到的性能问题也不多,所以为了提前储备知识,当出现问题的时候不会手忙脚乱,我们本篇文章来模拟下常见的几个Java性能故障,来学习怎么去分析和定位。预备知识既然是定位问题,肯定是需要借助工具,我们先了解下需要哪些工具可以帮忙定位问题。top命令top命令使我们最常用的Linux命令之一,它可以实时的显示当前正在执行的进程的CPU使用率,内存使用率等系统信息。top -Hp转载 2020-12-19 10:41:25 · 228 阅读 · 2 评论 -
RocketMQ 的几个简单问题与答案
1 单机版消息中心一个消息中心,最基本的需要支持多生产者、多消费者,例如下:class Scratch { public static void main(String[] args) { // 实际中会有 nameserver 服务来找到 broker 具体位置以及 broker 主从信息 Broker broker = new Broker(); Producer producer1 = new Producer(); pro转载 2020-12-18 15:01:23 · 270 阅读 · 0 评论 -
消息队列扫盲(RocketMQ 入门)
消息队列扫盲消息队列顾名思义就是存放消息的队列,队列我就不解释了,别告诉我你连队列都不知道似啥吧?所以问题并不是消息队列是什么,而是 消息队列为什么会出现?消息队列能用来干什么?用它来干这些事会带来什么好处?消息队列会带来副作用吗?消息队列为什么会出现?消息队列算是作为后端程序员的一个必备技能吧,因为分布式应用必定涉及到各个系统之间的通信问题,这个时候消息队列也应运而生了。可以说分布式的产生是消息队列的基础,而分布式怕是一个很古老的概念了吧,所以消息队列也是一个很古老的中间件了。消息队列能用来干什转载 2020-12-17 09:53:40 · 499 阅读 · 0 评论 -
RabbitMQ入门看这一篇就够了
一文搞懂 RabbitMQ 的重要概念以及安装一 RabbitMQ 介绍这部分参考了 《RabbitMQ实战指南》这本书的第 1 章和第 2 章。1.1 RabbitMQ 简介RabbitMQ 是采用 Erlang 语言实现 AMQP(Advanced Message Queuing Protocol,高级消息队列协议)的消息中间件,它最初起源于金融系统,用于在分布式系统中存储转发消息。RabbitMQ 发展到今天,被越来越多的人认可,这和它在易用性、扩展性、可靠性和高可用性等方面的卓著表现是分不转载 2020-12-16 16:40:09 · 462 阅读 · 0 评论 -
大白话入门 Spring Cloud
首先我给大家看一张图,如果大家对这张图有些地方不太理解的话,我希望你们看完我这篇文章会恍然大悟。什么是Spring cloud构建分布式系统不需要复杂和容易出错。Spring Cloud 为最常见的分布式系统模式提供了一种简单且易于接受的编程模型,帮助开发人员构建有弹性的、可靠的、协调的应用程序。Spring Cloud 构建于 Spring Boot 之上,使得开发者很容易入手并快速应用于生产中。官方果然官方,介绍都这么有板有眼的。我所理解的 Spring Cloud 就是微服务系统架构的一转载 2020-12-16 10:25:28 · 198 阅读 · 0 评论 -
Java 书单
Java基础《Head First Java》有人说这本书不适合编程新手阅读?其实本书还是很适合稍微有一点点经验的新手来阅读的,当然也适合我们用来温故 Java 知识点。ps:刚入门编程,最好的方式还是通过看视频来学习。《Java 核心技术卷 1+卷 2》建议有点 Java 基础之后再读,介绍的还是比较深入和全面的,非常推荐。这两本书的内容很多,全看的话比较费时间,建议大家用来巩固知识点或者当做工具书参考,是两本适合放在自己身边的好书。《Java 编程思想 (第 4 版)》大部分人称之转载 2020-12-15 17:05:45 · 233 阅读 · 0 评论 -
JAD 反编译
自动拆装箱对于基本类型和包装类型之间的转换,通过xxxValue()和valueOf()两个方法完成自动拆装箱,使用jad进行反编译可以看到该过程:public class Demo { public static void main(String[] args) { int x = new Integer(10); // 自动拆箱 Integer y = x; // 自动装箱 }} 反编译后结果:public class Demo{ p转载 2020-12-15 10:34:00 · 987 阅读 · 0 评论 -
JVM 详解,大白话带你认识 JVM
前言如果在文中用词或者理解方面出现问题,欢迎指出。此文旨在提及而不深究,但会尽量效率地把知识点都抛出来一、JVM的基本介绍JVM 是 Java Virtual Machine 的缩写,它是一个虚构出来的计算机,一种规范。通过在实际的计算机上仿真模拟各类计算机功能实现···好,其实抛开这么专业的句子不说,就知道JVM其实就类似于一台小电脑运行在windows或者linux这些操作系统环境下即可。它直接和操作系统进行交互,与硬件不直接交互,可操作系统可以帮我们完成和硬件进行交互的工作。1.1 Jav转载 2020-12-14 10:42:19 · 469 阅读 · 0 评论 -
分布式id生成方案总结
ID是数据的唯一标识,传统的做法是利用UUID和数据库的自增ID,在互联网企业中,大部分公司使用的都是Mysql,并且因为需要事务支持,所以通常会使用Innodb存储引擎,UUID太长以及无序,所以并不适合在Innodb中来作为主键,自增ID比较合适,但是随着公司的业务发展,数据量将越来越大,需要对数据进行分表,而分表后,每个表中的数据都会按自己的节奏进行自增,很有可能出现ID冲突。这时就需要一个单独的机制来负责生成唯一ID,生成出来的ID也可以叫做分布式ID,或全局ID。下面来分析各个生成分布式ID的机制转载 2020-12-10 12:04:22 · 152 阅读 · 0 评论 -
单点登录(SSO)的设计与实现
一、前言1、SSO说明SSO英文全称Single Sign On,单点登录。SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。https://baike.baidu.com/item/SSO/3451380例如访问在网易账号中心(http://reg.163.com/ )登录之后访问以下站点都是登录状态网易直播 http://v.163.com网易博客 http://blog.163.com网易花田 http://love.163.com网易考拉 https:/转载 2020-12-04 16:01:04 · 244 阅读 · 0 评论 -
JWT 身份认证优缺点分析以及常见问题解决方案
之前分享了一个使用 Spring Security 实现 JWT 身份认证的 Demo,文章地址:适合初学者入门 Spring Security With JWT 的 Demo。 Demo 非常简单,没有介绍到 JWT 存在的一些问题。所以,单独抽了一篇文章出来介绍。为了完成这篇文章,我查阅了很多资料和文献,我觉得应该对大家有帮助。相关阅读:《一问带你区分清楚Authentication,Authorization以及Cookie、Session、Token》适合初学者入门 Spring Secur转载 2020-12-04 09:57:30 · 232 阅读 · 0 评论 -
认证授权基础
1. 认证 (Authentication) 和授权 (Authorization)的区别是什么?这是一个绝大多数人都会混淆的问题。首先先从读音上来认识这两个名词,很多人都会把它俩的读音搞混,所以我建议你先先去查一查这两个单词到底该怎么读,他们的具体含义是什么。说简单点就是:认证 (Authentication): 你是谁。授权 (Authorization): 你有权限干什么。稍微正式点(啰嗦点)的说法就是:Authentication(认证) 是验证您的身份的凭据(例如用户名/用户ID转载 2020-12-03 17:06:20 · 359 阅读 · 0 评论 -
【实战】ZooKeeper 实战
1. 前言这篇文章简单给演示一下 ZooKeeper 常见命令的使用以及 ZooKeeper Java客户端 Curator 的基本使用。介绍到的内容都是最基本的操作,能满足日常工作的基本需要。如果文章有任何需要改善和完善的地方,欢迎在评论区指出,共同进步!2. ZooKeeper 安装和使用2.1. 使用Docker 安装 zookeepera.使用 Docker 下载 ZooKeeperdocker pull zookeeper:3.5.8b.运行 ZooKeeperdocker ru转载 2020-12-03 09:44:14 · 167 阅读 · 0 评论 -
【进阶】ZooKeeper 相关概念总结
1. 开卷有益学习是一种习惯,只有把这种习惯保持下来,每天不学习一点就感觉浑身不自在,达到这样的境界,那么你成为大佬也就不远了买,正如我们标题所写的“开卷有益”。人生匆匆,要想过得有意义,那么加油吧!文章很长,先赞后看,养成习惯。2. 什么是ZooKeeperZooKeeper 由 Yahoo 开发,后来捐赠给了 Apache ,现已成为 Apache 顶级项目。ZooKeeper 是一个开源的分布式应用程序协调服务器,其为分布式系统提供一致性服务。其一致性是通过基于 Paxos 算法的 ZAB转载 2020-12-02 14:20:24 · 259 阅读 · 0 评论 -
【入门】ZooKeeper 相关概念总结
1. 前言相信大家对 ZooKeeper 应该不算陌生。但是你真的了解 ZooKeeper 到底有啥用不?如果别人/面试官让你给他讲讲对于 ZooKeeper 的认识,你能回答到什么地步呢?拿我自己来说吧!我本人曾经使用 Dubbo 来做分布式项目的时候,使用了 ZooKeeper 作为注册中心。为了保证分布式系统能够同步访问某个资源,我还使用 ZooKeeper 做过分布式锁。另外,我在学习 Kafka 的时候,知道 Kafka 很多功能的实现依赖了 ZooKeeper。前几天,总结项目经验的时候,转载 2020-11-30 15:27:41 · 126 阅读 · 0 评论 -
SpringBoot+Spring常用注解总结
为什么要写这篇文章?最近看到网上有一篇关于 SpringBoot 常用注解的文章被转载的比较多,我看了文章内容之后属实觉得质量有点低,并且有点会误导没有太多实际使用经验的人(这些人又占据了大多数)。所以,自己索性花了大概 两天时间简单总结一下了。因为我个人的能力和精力有限,如果有任何不对或者需要完善的地方,请帮忙指出!Guide 哥感激不尽!1. @SpringBootApplication这里先单独拎出@SpringBootApplication 注解说一下,虽然我们一般不会主动去使用它。Gui转载 2020-11-26 10:38:59 · 200 阅读 · 0 评论 -
一千行MySQL命令
基本操作/* Windows服务 */-- 启动MySQL net start mysql-- 创建Windows服务 sc create mysql binPath= mysqld_bin_path(注意:等号与值之间有空格)/* 连接与断开服务器 */mysql -h 地址 -P 端口 -u 用户名 -p 密码SHOW PROCESSLIST -- 显示哪些线程正在运行SHOW VARIABLES -- 显示系统变量信息数据库操作/* 数据库操作 */ -------转载 2020-11-21 09:32:12 · 196 阅读 · 0 评论 -
事务隔离级别(图文详解)
事务隔离级别(图文详解)什么是事务?事务是逻辑上的一组操作,要么都执行,要么都不执行。事务最经典也经常被拿出来说例子就是转账了。假如小明要给小红转账1000元,这个转账会涉及到两个关键操作就是:将小明的余额减少1000元,将小红的余额增加1000元。万一在这两个操作之间突然出现错误比如银行系统崩溃,导致小明余额减少而小红的余额没有增加,这样就不对了。事务就是保证这两个关键操作要么都成功,要么都要失败。事务的特性(ACID)原子性: 事务是最小的执行单位,不允许分割。事务的原子性确保动作要么全部转载 2020-11-20 17:15:08 · 234 阅读 · 0 评论 -
一条 SQL 语句在 MySQL 中如何执行的
一 MySQL 基础架构分析1.1 MySQL 基本架构概览下图是 MySQL 的一个简要架构图,从下图你可以很清晰的看到用户的 SQL 语句在 MySQL 内部是如何执行的。先简单介绍一下下图涉及的一些组件的基本作用帮助大家理解这幅图,在 1.2 节中会详细介绍到这些组件的作用。连接器: 身份认证和权限相关(登录 MySQL 的时候)。查询缓存: 执行查询语句的时候,会先查询缓存(MySQL 8.0 版本后移除,因为这个功能不太实用)。分析器: 没有命中缓存的话转载 2020-11-20 10:53:22 · 105 阅读 · 0 评论 -
数据库索引总结(二)
什么是索引?索引是一种用于快速查询和检索数据的数据结构。常见的索引结构有: B树, B+树和Hash。索引的作用就相当于目录的作用。打个比方: 我们在查字典的时候,如果没有目录,那我们就只能一页一页的去找我们需要查的那个字,速度很慢。如果有目录了,我们只需要先去目录里查找字的位置,然后直接翻到那一页就行了。为什么要用索引?索引的优缺点分析索引的优点可以大大加快 数据的检索速度(大大减少的检索的数据量), 这也是创建索引的最主要的原因。毕竟大部分系统的读请求总是大于写请求的。 另外,通过创建唯一性索转载 2020-11-19 14:20:55 · 257 阅读 · 0 评论 -
数据库索引总结(一)
为什么要使用索引?通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。可以大大加快 数据的检索速度(大大减少的检索的数据量), 这也是创建索引的最主要的原因。帮助服务器避免排序和临时表。将随机IO变为顺序IO可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。索引这么多优点,为什么不对表中的每一个列创建一个索引呢?当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要转载 2020-11-19 11:17:13 · 496 阅读 · 0 评论 -
后端程序员必备的 Linux 基础知识
1. 从认识操作系统开始正式开始 Linux 之前,简单花一点点篇幅科普一下操作系统相关的内容。1.1. 操作系统简介我通过以下四点介绍什么是操作系统:操作系统(Operating System,简称 OS)是管理计算机硬件与软件资源的程序,是计算机的基石。操作系统本质上是一个运行在计算机上的软件程序 ,用于管理计算机硬件和软件资源。 举例:运行在你电脑上的所有应用程序都通过操作系统来调用系统内存以及磁盘等等硬件。操作系统存在屏蔽了硬件层的复杂性。 操作系统就像是硬件使用转载 2020-11-18 11:05:20 · 295 阅读 · 0 评论 -
不了解布隆过滤器?一文给你整的明明白白!
海量数据处理以及缓存穿透这两个场景让我认识了 布隆过滤器 ,我查阅了一些资料来了解它,但是很多现成资料并不满足我的需求,所以就决定自己总结一篇关于布隆过滤器的文章。希望通过这篇文章让更多人了解布隆过滤器,并且会实际去使用它!下面我们将分为几个方面来介绍布隆过滤器:什么是布隆过滤器?布隆过滤器的原理介绍。布隆过滤器使用场景。通过 Java 编程手动实现布隆过滤器。利用Google开源的Guava中自带的布隆过滤器。Redis 中的布隆过滤器。1.什么是布隆过滤器?首先,我们需要了解布隆过转载 2020-11-17 09:39:29 · 178 阅读 · 0 评论 -
Shell 编程入门
走进 Shell 编程的大门为什么要学Shell?学一个东西,我们大部分情况都是往实用性方向着想。从工作角度来讲,学习 Shell 是为了提高我们自己工作效率,提高产出,让我们在更少的时间完成更多的事情。很多人会说 Shell 编程属于运维方面的知识了,应该是运维人员来做,我们做后端开发的没必要学。我觉得这种说法大错特错,相比于专门做Linux运维的人员来说,我们对 Shell 编程掌握程度的要求要比他们低,但是shell编程也是我们必须要掌握的!目前Linux系统下最流行的运维自动化语言就是She转载 2020-11-16 15:42:04 · 181 阅读 · 0 评论 -
一文带你看遍 JDK9~14 的重要新特性!
Java9发布于 2017 年 9 月 21 日 。作为 Java8 之后 3 年半才发布的新版本,Java 9 带 来了很多重大的变化其中最重要的改动是 Java 平台模块系统的引入,其他还有诸如集合、Stream 流Java 平台模块系统Java 平台模块系统,也就是 Project Jigsaw,把模块化开发实践引入到了 Java 平台中。在引入了模块系统之后,JDK 被重新组织成 94 个模块。Java 应用可以通过新增的 jlink 工具,创建出只包含所依赖的 JDK 模块的自定义运行时镜像转载 2020-11-12 10:14:24 · 318 阅读 · 0 评论 -
类加载器
回顾一下类加载过程类加载过程:加载->连接->初始化。连接过程又可分为三步:验证->准备->解析。一个非数组类的加载阶段(加载阶段获取类的二进制字节流的动作)是可控性最强的阶段,这一步我们可以去完成还可以自定义类加载器去控制字节流的获取方式(重写一个类加载器的 loadClass() 方法)。数组类型不通过类加载器创建,它由 Java 虚拟机直接创建。所有的类都由类加载器加载,加载的作用就是将 .class文件加载到内存。类加载器总结JVM 中内置了三转载 2020-11-11 09:26:35 · 104 阅读 · 0 评论 -
类文件结构
类文件结构一 概述在 Java 中,JVM 可以理解的代码就叫做字节码(即扩展名为 .class 的文件),它不面向任何特定的处理器,只面向虚拟机。Java 语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点。所以 Java 程序运行时比较高效,而且,由于字节码并不针对一种特定的机器,因此,Java 程序无须重新编译便可在多种不同操作系统的计算机上运行。Clojure(Lisp 语言的一种方言)、Groovy、Scala 等语转载 2020-11-09 09:37:05 · 96 阅读 · 0 评论 -
什么是反射机制?反射机制的应用场景有哪些?
反射机制介绍JAVA 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为 java 语言的反射机制。获取 Class 对象的四种方式如果我们动态获取到这些信息,我们需要依靠 Class 对象。Class 类对象将一个类的方法、变量等信息告诉运行的程序。Java 提供了四种方式获取 Class 对象:1.知道具体类的情况下可以使用:Class alunbarClass = T转载 2020-11-02 11:44:17 · 450 阅读 · 0 评论 -
Java 常见关键字总结:final、static、this、super!
final,static,this,super 关键字总结final 关键字final关键字,意思是最终的、不可修改的,最见不得变化 ,用来修饰类、方法和变量,具有以下特点:final修饰的类不能被继承,final类中的所有成员方法都会被隐式的指定为final方法;final修饰的方法不能被重写;final修饰的变量是常量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能让其指向另一个对象。说明:使用final方法的原因转载 2020-10-30 15:41:47 · 92 阅读 · 0 评论 -
用好Java中的枚举真的没有那么简单
1.概览在本文中,我们将看到什么是 Java 枚举,它们解决了哪些问题以及如何在实践中使用 Java 枚举实现一些设计模式。enum关键字在 java5 中引入,表示一种特殊类型的类,其总是继承java.lang.Enum类,更多内容可以自行查看其官方文档。枚举在很多时候会和常量拿来对比,可能因为本身我们大量实际使用枚举的地方就是为了替代常量。那么这种方式由什么优势呢?以这种方式定义的常量使代码更具可读性,允许进行编译时检查,预先记录可接受值的列表,并避免由于传入无效值而引起的意外行为。下面示例定转载 2020-10-29 15:55:00 · 135 阅读 · 0 评论