网络系列(一)| TCP 快速入门
简介互联网有一整套协议构成,TCP是其中的一层 以太网 作用:电子信号如何组成数据包(packet),解决了子网内部点对点通信 缺点:无法连接多个局域网,IP协议解决 IP 作用:定义一套自己的地址规则,通过路由的形式将各个局域网相连。路由器基于IP协议 路由器内部有一张路由表,规定 IP 出口,实现数据包转发 缺点:是地址协议,不能保证数据完整,TCP 协议解决 TCP 作用: 保证数据通信的完整性和可靠性,防止丢包 TCP 数据包以太网的数据包 大小固定,最初1518 增加到 1522 字节 。其中头信息(head)22 字节,负载(payload):1500字节 以太网数据包:1522 字节 头信息:22 负载:1500 IP数据包 头信息:20(最少) 负载:1480 TCP 数据包 头信息:20 (最少) 负载:1400 TCP 数据包编号(SEQ)TCP 为每个数据包编号(sequence number),目的是为了接收方按照顺序还原。另外,万一丢包也可知道丢失哪一个包。 每个数据包都有两个编号 自身编号:sequence...
谷粒商城(三)| 前端基础
前端基础前后端对比 ES6 ECMAScript 6.0(以下简称 ES6,ECMAScript是一种由Ecma国际通过ECMA-262标准化的脚本), 是JavaScript语言的下一代标准,2015年6月正式发布,从ES6开始的版本号采用年号,如ES2015,就是ES6。ES2016就是ES7。 ECMAScript是规范,JS的规范的具体实现。 let & const 作用域:var在{}之外也起作用 let在{}之外不起作用 声明次数:var 多次声明同一变量不会报错,let多次声明会报错,只能声明一次。 变量提升:var 会变量提升(打印和定义可以顺序反);let 不存在变量提升(顺序不能反) const 声明之后不允许改变 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> ...
谷粒商城(二)| 整合微服务
整合微服务 搭配方案 SpringCloud Alibaba - Nacos : 注册中心 (服务发现/注册) SpringCloud Alibaba - Nacos : 配置中心 (动态配置管理) SpringCloud - Ribbon : 负载均衡 SpringCloud - Feign : 声明式 HTTP 客户端 (调用远程服务) SpringCloud Alibaba - Sentinel : 服务容错 (限流、降级、熔断) SpringCloud - Gateway : API 网关 (webflux 编程模式) SpringCloud - Sleuth : 调用链监控 SpringCloud Alibaba - Seata : 原 Fescar 即分布式事务解决方案 阿里巴巴中文文档:SpringCloud Alibab 中文文档 版本选择SpringCloud与SpringBoot SpringCloud - SpringBoot 版本对比(SpringCloud 官网) ...
谷粒商城(一)| 环境搭建
Docker 安装Docker 安装MySQL 下载镜像 docker pull mysql:5.7 创建实例 docker run -p 3307:3306 --name mysql \ -v /mydata/mysql/log:/var/log/mysql \ -v /mydata/mysql/data:/var/lib/mysql \ -v /mydata/mysql/conf:/etc/mysql \ -e MYSQL_ROOT_PASSWORD=root \ -d mysql:5.7 参数说明: -p 3306:3306:-p 主机端口:容器端口,将容器的3306端口映射到主机的3306端口 -v /mydata/mysql/conf:/etc/mysql:将配置文件夹挂载到主机 -v /mydata/mysql/log:/var/log/mysql:将日志文件夹挂载到主机 -v...
自定义注解场景使用
自定义注解 使用场景 登录校验 AOP日志打印 项目示例:https://gitee.com/lingzhexi/customer-annotation-demo Java 自定义注解一般使用场景为:【自定义注解 + 拦截器或者 AOP】 一. 什么是注解 (Annotation)Java 注解是什么,以下是引用自维基百科的内容 Java 注解又称 Java 标注,是 JDK5.0 版本开始支持加入源代码的特殊语法元数据。 Java 语言中的类、方法、变量、参数和包等都可以被标注。和 Javadoc 不同,Java 标注可以通过反射获取标注内容。 在编译器生成类文件时,标注可以被嵌入到字节码中。Java 虚拟机可以保留标注内容,在运行时可以获取到标注内容。 当然它也支持自定义 Java 标注。 二. 注解体系图元注解:java.lang.annotation中提供了元注解,可以使用这些注解来定义自己的注解。主要使用的是 Target 和 Retention...
城市地铁AFC系统
城市地铁 AFC 系统简析一、概述1.1 定义AFC 系统的全称是 Automatic Fare Collection System(城市轨道交通自动售检票系统),是基于计算机、通信、网络、自动控制等技术,实现轨道交通售票、检票、计费、收费、统计、清分、管理等全过程的自动化系统。 1.2 主要工作内容1、实现中央系统、车站系统和终端设备之间的数据传输和处理; 2、完成车 票制作、售票、检票、票务统计分析等工作; 3、及时、准确地进行客流、票务数据的收集、整理、汇总和分析; 4、实现轨道交通收益方得清分结算以及与关联系统等外部接口之间的清分结算,同时可通过银行或金融机构实现账务划拨。 1.3...
面试系列(八)| 消息队列
消息队列 消息队列解决的核心场景:解构、异步、削峰 1.为什么使用MQ 公司业务场景,核心:解耦、异步、削峰 解耦: A系统发数据给到BCD系统,如果E系统需要接入?C系统不需要了?A系统的负责人就需要来回修改接口对接其他系统。 如果使用MQ,A系统产生一条数据,发送到MQ中,那个系统需要数据自己去MQ消费。如果新的系统需要数据,直接从MQ中消费;某个系统不需要数据的话,取消消费这个MQ即可。这样A系统不需要考虑谁发送数据给谁,不需要考虑是否调用成功、失败超时等问题。 总结:通过一个MQ,Pub/Sub发布订阅消息模型,A系统就和其他系统彻底耦合了。 项目应用: ...
面试系列(七)| JVM常见命令
JVM 常用命令介绍下面介绍一下 JVM 中常用的调优、故障处理等工具。 jps :虚拟机进程工具,全称是 **JVM Process Status Tool**,它的功能和 Linux 中的 ps 类似,可以列出正在运行的虚拟机进程,并显示虚拟机执行主类 Main Class 所在的本地虚拟机唯一ID,虽然功能比较单一,但是这个命令绝对是使用最高频的一个命令。 _jstat_:虚拟机统计信息工具,用于监视虚拟机各种运行状态的信息的命令行工具,它可以显示本地或者远程虚拟机进程中的类加载、内存、垃圾收集、即时编译等运行时数据。 jinfo:Java 配置信息工具,全称是 _Configuration Info for Java_,它的作用是可以实时调整虚拟机各项参数。 _jmap_:Java 内存映像工具,全称是 _Memory Map For Java_,它用于生成转储快照,用来排查内存占用情况 jhat:虚拟机堆转储快照分析工具,全称是 _JVM Heap Analysis Tool_,这个指令通常和 jmap 一起搭配使用,jhat 内置了一个 HTTP/Web...
面试系列(六)| 双亲委派模型
什么是双亲委派模型?JVM 类加载默认使用的是双亲委派模型,那么什么是双亲委派模型呢? 这里我们需要先介绍一下三种类加载器: 启动类加载器:**Bootstrap Class Loader,这个类加载器是 C++ 实现的,它是 JVM 的一部分,这个类加载器负责加载存放在 \lib 目录,启动类加载器无法被 Java 程序直接引用。这也就是说,JDK** 中的常用类的加载都是由启动类加载器来完成的。 扩展类加载器:_Extension Class Loader,这个类加载器是 Java 实现的,它负责加载 **\lib\ext_** 目录。 应用程序类加载器,_Application Class Loader_,这个类加载器是由 sum.misc.Launcher$AppClassLoader 来实现,它负责加载 ClassPath 上所有的类库,如果应用程序中没有定义自己的类加载器,默认使用就是这个类加载器。 所以,我们的 Java 应用程序都是由这三种类加载器来相互配合完成的,当然,用户也可以自己定义类加载器,即 _User Class...