Java
口木西成
沙坡村男子技术学院,java后台开发
展开
-
一文明白IO模型和常问多路复用机制
1. IO模型Socket的输入操作有两步。wait for data - 等待网络传输数据到达,到达后复制到内核缓冲区;copy data from kernel to user - 把数据从内核缓冲区复制到应用进程缓冲区。涉及到两个对象:process调用这个IO的进程/线程,kernel系统内核。1.1 同步阻塞IO用户线程发出请求后就一直被阻塞,直到数据到达并从内核缓冲区复...原创 2020-04-24 16:36:23 · 283 阅读 · 0 评论 -
Java后端知识总结
害,马上要投日常实习了,希望能找到坑位。这些总结从2月以来反反复复,更新、修改、添加知识点,制作脑图,最后一股脑都拿出来,方便大家和本人查阅吧。后面绝对会继续更新!毕竟真正面试了,就知道痛点在哪儿。预计完善的内容包括 数据结构、大数据处理、设计模式、操作系统等。模块标题链接基础必知必会104187964基础三大集合104199039基础并发编程1...原创 2020-03-30 16:06:47 · 2268 阅读 · 0 评论 -
Java框架-SpringBoot
1. 概述1.1 是什么答:SpringBoot是Spring组件的一站式解决方案,并不是独立框架,是用来简化Spring配置,提供各种启动器,让开发者能快速上手的。1.2 优点容易上手,开箱即用,提升开发效率;能和Spring生态系统集成;遵循默认配置,提供了一系列通用的非业务性功能;内置http服务器,如tomcat、jetty,开发web应用更加轻松;maven配置直接写入...原创 2020-03-30 15:59:02 · 688 阅读 · 0 评论 -
常用工具-Git
1. 版本控制VCS答:版本控制是用来记录文件内容变化,便于将来查阅特定版本修订情况的系统。1.1 必要性答:在团队协作时,能将文件/项目回溯到某一版本,还能查看是谁修改了代码,从而找到锅在谁那。1.2 分类1.2.1 本地版本控制复制整个项目目录,手动增加版本号;本地数据库记录更新。1.2.2 集中式版本控制一个集中管理的服务器,所有成员通过访问此服务器获得最新文件或者提...原创 2020-03-30 15:50:23 · 343 阅读 · 0 评论 -
消息队列-通用知识
1. 消息队列1.1 优缺点优点/使用场景:解耦。生产消息后直接给MQ,不用关心其他事务,监听返回消息就行。异步。异步执行,提高吞吐量。发送者将消息给MQ后,不需要同步等待处理完毕,而是可以进行其它操作。削峰。请求放在MQ里,Server根据处理能力处理消息,缓解服务器压力,不至于GG。缺点:系统可用性降低。MQ挂了,整个系统通信GG。系统复杂度增加。加入MQ,引出一致性、传...原创 2020-03-30 15:39:42 · 367 阅读 · 0 评论 -
海量数据处理
1. 容量计算解决海量数据问题前,先对数据的容量进行计算。1 byte = 8 bit1 KB = 2^10 byte = 1024 byte ≈ 10^3 byte1 MB = 2^20 byte ≈ 10^6 byte1 GB = 2^30 byte ≈ 10^9 byte1 亿 = 10^81 个int整数占 4 byte,1 亿个整数占 4*108 byte ≈ 400 M...原创 2020-03-13 23:28:51 · 110 阅读 · 0 评论 -
消息队列-RabbitMQ
1. 消息队列1.1 优缺点答:总结为:优点:解耦。系统生产消息后,直接给MQ不用关心其他事务。异步。异步执行,提高吞吐量。发送者将消息发送给消息队列后,不需要同步等待接收者处理完毕,而是可以进行其它操作。削峰。请求在MQ中,Server根据处理能力处理消息,缓解服务器压力。缺点:系统可用性降低。MQ挂了,整个系统通信GG。系统复杂度增加。加入MQ,引出一致性、传输可靠性、...原创 2020-03-10 14:31:43 · 460 阅读 · 0 评论 -
常用工具-正则表达式
1. 匹配单个字符. 可以匹配任意单个字符。(大部分不能匹配换行符)2. 匹配一组字符[ ]定义一个字符集合;0-9、a-z定义一个字符区间;^取非操作。abc[^0-9] //abc开头,最后一位不为数字3. 元字符3.1 匹配空白字符元字符说明[\b]回退一个字符\f换页符\n换行符\r回车符\t制表符\v垂直制表...原创 2020-02-28 16:50:47 · 1310 阅读 · 0 评论 -
MySQL-必知必会
1. 索引1.1 B+ Tree索引答:InnoDB默认的索引方式。有序索引,将相邻数据都存在一起,把随机IO变成顺序IO。1.1.1 底层数据库为什么用B+树答:总结:B+树的数据全部存储在叶子结点中,B树的非叶子节点也会存储数据。使得B+树的查询是从root到叶子节点。B+树的内部结点比B树更小,读写代价小。1.1.2 聚簇索引(主索引)和非聚簇索引(辅助索引)答:B+ T...原创 2020-02-27 14:17:41 · 310 阅读 · 0 评论 -
计算机网络-常见知识
1. 目录基础应用层传输层网络层链路层物理层原创 2020-02-22 11:16:26 · 307 阅读 · 0 评论 -
计算机网络-链路层
链路层为网络层提供服务,将来自网络层的数据传输到相邻节点的目标主机网络层。1. 基本功能1.1 封装成帧答:将网络层传来的分组添加首部和尾部,用来标记开始和结束。即:首部—IP数据报—尾部。1.2 透明传输答:让用户察觉不到数据发生了转义。若帧的数据部分存在和首尾部相同的内容,则需要在此内容前加入转义字符,若数据部分存在转义字符,就再添加一个转义字符。作用是让接收方可以还原原始数据。1...原创 2020-02-17 11:49:31 · 107 阅读 · 0 评论 -
计算机网络-物理层
物理层实现相邻节点间比特流的透明传输,尽可能屏蔽传输介质和通信手段的差异。1. 通信方式单工通信:单向传输;半双工通信:双向交替传输;全双工通信:双向同时传输。2. 带通调制答:带通调制就是把数字信号转换为模拟信号 离散—>连续。数字信号是离散的,模拟信号是连续的。...原创 2020-02-17 11:33:52 · 118 阅读 · 0 评论 -
消息队列-Kafka
1. Kafka简介答:Kafka是一种分布式的基于发布/订阅的消息系统。1.1 特性支持消息的持久化;支持批量读写消息;支持消息分区;支持多副本。1.2 高性能原理答:Kafka实现高性能的原因是:顺序读写磁盘:Kafka将消息保存在磁盘中,顺序进行读写,磁盘的顺序读写速度超过内存的随机读写。而且消息消费后不会删除。(删除针对的是过期消息)页缓存:把磁盘中的数据缓存到内存中,以减...原创 2020-02-16 16:35:02 · 269 阅读 · 0 评论 -
网络安全-认证授权和安全漏洞
1. XSS跨站脚本攻击答:XSS(Cross-Site Scripting)跨站脚本攻击,通过在用户提交数据中加入恶意代码,从而破坏页面结构,盗取用户资料等。XSS利用用户对网站的信任。1.1 产生原因答:过分信任客户端数据,没有对数据进行过滤和转移。1.2 分类答:分为:存储型:恶意代码放在数据库中,每次Server响应Client请求时返回并执行;反射型:恶意代码加在URL中...原创 2020-02-16 15:41:40 · 1380 阅读 · 0 评论 -
Java进阶-JVM内存机制
1. Java内存区域答:JVM中内存主要划分为5个区域,即方法区,堆内存,虚拟机栈,本地方法栈和程序计数器。1.1 方法区答:方法区是一个线程之间共享的区域,用于存储已被虚拟机加载的类信息。也被称为“永远代”,二者的关系类似接口和类的关系,即标准和实现。通过-XX:MaxPermSize控制上限。元空间替换方法区答:JDK1.8后,元空间代替了方法区。方法区本身由JVM设定固定的大小...原创 2020-02-13 12:59:42 · 406 阅读 · 0 评论 -
缓存技术-Redis
1. Redis的了解1.1 NoSQL答:NoSQL(Not Only SQL),泛指非关系型的数据库,目的是解决高并发、高拓展和大数据储存问题。细分为:键值型(Redis),列存储(HBase),文档型(MongoDB),图形(Neo4j)。1.2 Redis答:Redis(Remote Dictionary Server远程字典服务)是一款高性能、高并发的key-value型分布式内...原创 2020-02-12 10:55:54 · 438 阅读 · 0 评论 -
Java框架-MyBatis
Spring Boot+MyBatis+Druid的使用是基础,在项目中贯穿。1. MyBatis是什么答:MyBatis是一个半ORM的框架,内部封装了JDBC,通过xml文件或注解配置信息。通过Java对象和statement的SQL参数映射执行SQL语句生成Java对象返回。1.1 MyBatis和JDBC的区别答:总结为:MyBatis代码量少,开发速度快,移植性好,缺点是sq...原创 2020-02-10 14:46:36 · 268 阅读 · 0 评论 -
Java框架-Spring相关
1. Spring模块答:Spring是一个轻量级的IOC和AOP容器框架。目的是简化应用开发,让开发者注重业务开发。1.1 核心模块5.x版本中Web模块的Portlet组件被废弃,增加了异步响应的WebFlux组件。Spring Core:基础,Spring所有其他功能都依赖于该类库,只要提供IoC依赖注入功能。Spring Aspects:为与AspectsJ的集成提供支持S...原创 2020-02-09 13:55:27 · 242 阅读 · 0 评论 -
Java基础-并发编程
1. 进程和线程的区别答:区别总结如下:进程是程序的一次执行过程,是系统进行资源调度分配的基本单位;线程是进程的更小的运行单位,一个进程拥有多个线程,线程间共享地址空间和资源;线程上下文切换比进程上下文切换要快;线程一般没有系统资源,但也有一些必不可少的资源,如ThreadLocal。1.1 切换速度的差异原因答:总结为:进程切换时,涉及当前进程cpu环境的保存和新调度进程c...原创 2020-02-08 23:45:48 · 217 阅读 · 1 评论 -
Java基础-三大集合
1. List,Set,Map区别答:首先Map和Collection是并列的上层接口,List和Set是Collection的子接口。List(解决顺序问题):存储一组有序可重复的对象,实现类有ArrayList、LinkedList和Stack等。Set(元素独一无二):不存在重复的元素,实现类有HashSet、TreeSet等。Map(Key值搜索):键值对存储,Key值不能重复,...原创 2020-02-06 19:29:03 · 337 阅读 · 0 评论 -
Java基础-必知必会
面向对象及三大特性答:面向对象是一种思想,将复杂问题简单化,把相关数据和方法当作一个整体来看。三大特性为封装继承和多态。封装:将事物封装为一个类,减少耦合,隐藏细节。保留接口与外界联系,当接口内部改变时,不会影响外部的调用。继承:从一个已知的类中派生一个新的类,新类拥有已知类的属性和方法,并能重写或覆盖来增加已知类的能力。多态:一个程序中存在多个同名的不同方法。实现方式:子类对父类的覆盖...原创 2020-02-05 21:39:39 · 312 阅读 · 0 评论