![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
后端开发知识点汇总
文章平均质量分 94
后端开发知识点汇总
hellosc01
喂,你知道吗,有时候,自由意志就是你能主动选择最小概率的路。
展开
-
Kafka
1 Kafka 的相关概念Kafka 是一种高吞吐、分布式、基于发布订阅模型的消息系统。Kafka 用于离线和在线消息的消费。主要有以下 3 个功能:消息队列:发布和订阅消息流;容错的持久化方式存储记录消息流:Kafka 将消息数据按顺序保存在磁盘上,并在集群内以副本的形式存储以防止数据丢失;流式处理平台:在消息发布的时候进行处理,Kafka 提供了一个完整的流式处理类库;此外,Kafka 依赖 Zookeeper 进行集群的管理。1.1 Message消息(Message)是 Kafka原创 2022-01-06 22:13:34 · 814 阅读 · 0 评论 -
分布式&分布式事务&分布式锁&分布式ID
分布式架构的应用十分广泛:分布式系统的目标是提升系统的整体性能和吞吐量另外还要尽量保证分布式系统的容错性。分布式系统 2 大设计思路:分布式集群中的节点机器按照角色分工,大体上分为两种角色:“领导”和“员工”。“领导”通常负责分发任务并监督“员工”,发现谁太闲了,就想发设法地给其安排新任务,确保没有一个“干活的”能够偷懒,如果“领导”发现某个“干活的”因为劳累过度而病倒了,则是不会考虑先尝试“医治”他的,而是一脚踢出去,然后把他的任务分给其他人。最大问题是“领导”的安危问题,如果“领导”出了问题,则群龙无首原创 2023-12-06 16:19:04 · 1520 阅读 · 0 评论 -
Java编码规范
有含义,有意义;管理常量要分类,不同模块、不同项目、不同功能等;常量类列表,建议不超过10个;原创 2023-08-24 16:37:23 · 456 阅读 · 0 评论 -
如何在项目中打日志
如何在项目中打日志原创 2023-01-09 13:43:51 · 671 阅读 · 2 评论 -
异常处理规范
不同场景如何抛出异常;抛出什么类型异常;异常如何处理;如何友好的展示或输出;异常出现后,该如何加快问题解决;对某类场景,有特殊处理需求时,可以定义异常;有特殊显示需求时,可以定义异常;为了区分某类错误时,可以定义异常;底层异常不够友好、不方便分析判断时,可以定义异常;正常业务逻辑,不允许使用异常来定义;无特殊原因,直接向上抛出原始异常即可;原创 2023-08-22 08:10:33 · 365 阅读 · 0 评论 -
数据库
目录事务试述事务的概念及事务的4个特性并发操作可能会产生哪几类数据不一致不可重复读和幻读区别是什么?事务隔离级别事务并发访问引起的问题及使用哪种事务隔离级别避免MVCCMVCC的当前读和快照读MVCC的实现原理undo日志MySQL 中事务隔离级别的实现索引索引索引的优缺点主键索引(聚簇索引)、辅助索引(普通索引)、覆盖索引使用索引要注意什么?创建索引要注意什么MySQL中InnoDB和MyISAM使用索引的区别B树B+树HASH索引MySQL索引的类型有哪些?如何创建/删除索引创建索引删除索引什么是前缀索原创 2021-10-07 11:35:48 · 725 阅读 · 1 评论 -
数据结构与算法
1 Prim算法(求最小生成树)将最小生成树中的顶点作为一个集合,非最小生成树中的顶点作为另外一个集合,利用最小索引优先队列存储所有的横切边;随意选取起点,加入到最小生成树中(标记该顶点),同时初始化最小索引优先队列;调用最小索引优先队列的delMin(),将最小横切边对应的顶点加入最小生成树中(标记该顶点),同时遍历该顶点的邻接表,新增或更新横切边(更新最小索引优先队列);重复3,直到最小索引优先队列为空;2 Kruskal算法(求最小生成树)使用最小优先队列PriorityQueue&原创 2021-05-14 09:16:34 · 182 阅读 · 0 评论 -
海量数据处理
目录0 概述1 哈希分治1.1 寻找 TOP IP1.2 寻找热门查询1.3 寻找频数最高的 100 个词1.4 寻找共同的 URL2 位图2.1 2.5 亿个数的去重2.2 整数的快速查询3 布隆过滤器3.1 寻找通过 URL3.2 垃圾邮件过滤4 Trie 树(字典树)4.1 10 个频繁出现的词(似乎HashMap更合适)4.2 寻找热门查询(似乎HashMap更合适)5 数据库6 倒排索引0 概述海量数据处理是指基于海量数据的存储和处理。正因为数据量太大,所以导致要么无法在较短时间内迅速解决,原创 2021-07-21 11:50:54 · 390 阅读 · 0 评论 -
冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序(Java实现,复杂性分析,稳定性分析)
目录1 冒泡排序2 选择排序3 插入排序4 希尔排序5 归并排序6 快速排序7 排序的稳定性7.1 概念7.2 意义7.3 几种排序算法的稳定性分析7.3.1 冒泡排序7.3.2 选择排序7.3.3 插入排序7.3.4 希尔排序7.3.5 归并排序7.3.6 快速排序1 冒泡排序public class Bubble { // 对数组a元素进行排序 public static void sort(Comparable[] a) { for(int i=a.length-原创 2020-10-21 19:55:18 · 369 阅读 · 1 评论 -
Java基础
语言按值传递和按引用传递的区别面向对象的三大特性的理解== 和equals的区别static 关键字的作用Synchronized 用在普通方法和 static 上的区别说说你对索引、存储引擎的理解类的hashcode是什么如果两个对象的hash码相同,equals一定为true吗什么是泛型方法区里存放什么什么是 NIOBIO、NIO、AIO概念和区别线程和进程介绍一下jdk 中线程池的类型线程池的 BlockQueue 的作用实现多线程同步的方式Java怎么保证多线程的安原创 2021-04-18 16:34:13 · 353 阅读 · 1 评论 -
Java多线程
目录并发与并行Java线程的7种状态一张图总结Java线程状态Java线程创建的4种方式start()和run()的区别实现Runnable接口比继承Thread类的优势为什么使用线程池执行execute()方法和submit()方法的区别?5种常用线程池(通过Executor框架的工具类Executors来实现)如何创建线程池(尚未完成)方式一:通过ThreadPoolExecutor构造方法创建方法二:通过Executor框架的工具类Executors来实现synchronizedsynchronize原创 2021-07-07 13:30:19 · 573 阅读 · 0 评论 -
IO知识点汇总
目录IO模型1 字节流、字符流1.1 字节与字符1.2 字节流1.3 字符流1.4 互相转换2 输入流、输出流3 字节流和字符流之间的相互转换3.1 字符流转成字节流3.2 字节流转成字符流4 同步和异步、阻塞和非阻塞4.1 同步/异步4.2 阻塞/非阻塞同步调用与异步调用5 Linux5种IO模型5.1 阻塞式IO模型5.2 非阻塞IO模型5.3 IO复用模型5.4 信号驱动IO模型5.5 异步IO模型6 BIO、NIO和AIO6.1 BIO6.2 NIO6.3 AIO7 NettyIO模型IO模型原创 2021-07-07 13:27:27 · 412 阅读 · 2 评论 -
Redis
1 redis简介是一种数据库,不过与传统数据库不同的是,redis的数据存储在内存中,因此读写速度非常快;被广泛应用于缓存方向,以及经常用来做分布式锁;redis提供了多种数据类型来支持不同业务场景;除此之外,redis支持事务、持久化、LUA脚本、LRU驱动事件、多种集群方案;...原创 2021-06-19 16:34:24 · 263 阅读 · 0 评论 -
Leetcode笔记
目录1 StringBuider删除对应索引元素2 StringBuider添加元素3 String截取元素4 数字转字符串5 字符串转数字6 字符数组转字符串1 StringBuider删除对应索引元素StringBuider.deleteCharAt(index);2 StringBuider添加元素StringBuider.append(element);3 String截取元素String.substring(beginindex):截取从beginIndex至字符串末尾的字符串;S原创 2021-06-03 08:55:56 · 925 阅读 · 1 评论 -
操作系统
目录1 进程和线程的区别1 进程和线程的区别(1拥有资源:进程是资源分配的基本单位,但线程不拥有资源,线程可以访问隶属于进程的资源2调度:线程是独立调度的基本单位,同一进程中,线程的切换不会引起进程切换;但从一个进程中的线程切换到另一个进程中的线程时,会引起进程切换3系统开销:创建或撤销进程时,系统要为之分配或回收资源,如内存空间、I/O设备等,所付出的开销远大于创建或撤销线程时的开销;类似地,在进行进程切换时,涉及当前执行进程CPU环境的保存及新调度进程CPU环境的设置,占用很多开销,而线程切换只需保原创 2021-04-18 16:43:03 · 467 阅读 · 0 评论 -
计算机网络
目录三次握手和四次挥手为什么不能用两次握手代替三次握手进行连接?为什么释放TCP连接要四次挥手HTTP为什么不用get向服务器上传数据?TCP和UDP一次互联网页面的访问请求过程OSI七层协议TCP/IP四层协议cookie和session三次握手和四次挥手(1三次握手(TCP建立连接过程):1.1客户端A发送建立连接请求报文段1.2服务器B发送确认报文段1.3客户端A发送确认报文段(第3步执行后,A的TCP通知上层应用进程,连接已经建立;当B的TCP收到A的确认后,也通知其上层应用进程,连接已经建立)原创 2021-04-18 16:40:43 · 881 阅读 · 1 评论 -
JVM
目录JVM的运行机制JVM的构成垃圾收集器JVM的内存区域解析如何确定对象可以被回收常用的垃圾回收算法JVM垃圾回收策略元空间相比永久代的优势运行时常量池Java中的4种引用类型JVM的运行机制(1. JVM是用于运行Java字节码的虚拟机,它运行在操作系统之上,不与硬件设备直接交互;2. Java源文件在通过编译器编译后生成.字节码文件(.class文件),字节码又被JVM中的即时编译器和解释器编译成机器码在不同的平台(Windows、Linux、Mac)上运行;3. Java在不同平台上运行时不需要原创 2021-04-18 16:39:30 · 375 阅读 · 1 评论 -
设计模式
目录简单工厂模式单例模式备忘录模式简单工厂模式(1 创建型模式,在创建对象时不会对客户端暴露创建逻辑,使用一个共同的接口来指向新创建的对象,新创建的对象由一个工厂根据不同条件创建 2 优点:(1)屏蔽产品的具体实现,调用者想创建一个对象,只要知道其名称就可以了;(2)扩展性高,如果想增加一个产品,只要增加一个实体类就可以 3 缺点:使用简单工厂模式会增加系统中类的个数(引入新的工厂类),增加了系统的复杂度 4 应用场景:数据库访问,当用户不确定最后系统采用哪一类数据库时 5 实现:(1)创建一个 Sha原创 2021-04-18 16:38:07 · 135 阅读 · 0 评论 -
Spring
1 Profileprofile是用来完成不同环境下,配置动态切换功能的;profile配置方式:2.1 多profile文件方式:提供多个配置文件,每个代表一种环境:- application-dev.properties/yml开发环境- application-test.properties/yml测试环境- application-pro.properties/yml生产环境2.2 yml多文档方式:- 在yml中使用 — 分隔不同配置profile激活方式:3.1 配置文件:原创 2021-05-21 11:06:53 · 357 阅读 · 1 评论 -
机器学习
目录特征归一化为什么要归一化归一化的方法归一化的应用与局限决策树特征归一化对数值类型的特征作归一化可以将所有的特征都统一到一个大致相同的数值区间内。为什么要归一化为了消除数据特征之间的量纲影响,使得不同指标之间具有可比性。例如,分析一个人的身高和体重对健康的影响,如果使用米(m)和千克(kg)作为单位,那么身高特征在1.6-1.8的数值范围内,体重特征在50-100的范围内,分析出来的结果显然会倾向于数值差别比较大的体重特征。想要得到更为准确的结果,就需要进行特征归一化处理,使各指标处于同一数值量原创 2021-06-30 19:08:37 · 356 阅读 · 0 评论