站点内容一览
📖站点内容一览
📝Java基础
Java技术栈汇总3y
Java面试知识汇总1
Java面试知识汇总2
Java面试知识汇总3
Java面试知识汇总4
Java面试知识汇总5
Java面试知识汇总6
Java面试知识CsNotes
在线笔试输入输出处理
软件测试相关知识
Map和List
HTTP常见面试题
网络及HTTP相关
ReenTrantLock和synchronized的区别
Java并发编程面试知识一
正向代理和反向代理
Java基础
Java容器
Java并发
Java并发之AQS
Java虚拟机
Java IO
HTTP
MySQL
Redis
📝MyBatis
MyBatis-plus
MyBatis基础使用
MyBatis面试知识一
MyBatis面试知识二
📝Redis
Redis概述和基本数据类型
SpringBoot整合Redis+持久化机制
Redis面试高频
Redis面试题一
📝Spring框架相关
SpringMVC面 ...
TopK互联网面试[2]
1、WebSocket及其传输机制
目的:即时通讯,替代轮询
WebSocket是一种允许通过保持服务器端和用户端始终连接来进行双向通信的技术,所以WebSocket既可以发送数据也可以接收数据。
HTTP协议是非持久化的,单向的网络协议,在建立连接后只允许浏览器向服务器发出请求后,服务器才能返回相应的数据。当需要即时通讯时,通过轮询在特定的时间间隔(如1秒),由浏览器向服务器发送Request请求,然后将最新的数据返回给浏览器。这样的方法最明显的缺点就是需要不断的发送请求,而且通常HTTP request的Header是非常长的,为了传输一个很小的数据 需要付出巨大的代价,是很不合算的,占用了很多的宽带。
HTTP协议缺点:会导致过多不必要的请求,浪费流量和服务器资源,每一次请求、应答,都浪费了一定流量在相同的头部信息上
然而WebSocket的出现可以弥补这一缺点。在WebSocket中,只需要服务器和浏览器通过HTTP协议进行一个握手的动作,然后单独建立一条TCP的通信通道进行数据的传送。
原理:WebSocket同HTTP一样也是应用层的协议,但是它是一种双向通信协议,是建立 ...
Redis知识点
一、基础篇
什么是 Redis ?
先解释 Redis 基本概念
Redis (Remote Dictionary Server) 是一个使用 C 语言 编写的,开源的 (BSD许可) 高性能 非关系型 (NoSQL) 的 键值对数据库。
简单提一下 Redis 数据结构
Redis 可以存储 键 和 不同类型数据结构值 之间的映射关系。键的类型只能是字符串,而值除了支持最 基础的五种数据类型 外,还支持一些 高级数据类型:
一定要说出一些高级数据结构 (当然你自己也要了解… 下面会说到的别担心),这样面试官的眼睛才会亮。
Redis 小总结
与传统数据库不同的是 Redis 的数据是 存在内存 中的,所以 读写速度 非常 快,因此 Redis 被广泛应用于 缓存 方向,每秒可以处理超过 10 万次读写操作,是已知性能最快的 Key-Value 数据库。另外,Redis 也经常用来做 分布式锁。
除此之外,Redis 支持事务 、持久化、LUA脚本、LRU驱动事件、多种集群方案。
Redis 优缺点
优点
读写性能优异, Redis能读的速度是 110000 次/s, ...
关于我
我也不知道自己是什么样的一个人,普普通通,生活在一个南方温婉的小城,抚州临川,这里是我的家乡,也是汤显祖,曾巩、王安石、晏殊等人的故乡。
目前在大连理工大学软件工程研一在读,对专业知识不太感冒的我更多的喜欢动人的文字与美好的景物。热爱古典文化,喜欢读诗歌、散文和别人的故事。
喜欢大自然的花草树木,喜欢仰望天空中一朵漂浮不定的云,喜欢在水边捡一粒晶莹透亮的石子,喜欢夜幕降临时看归巢的鸟儿与天边的暮云。
从小到大,回想起来,孤独的日子总比快乐要少,成长的岁月里很多时候总是一个人,我不善交际,也不够聪明,也没有一点可以自豪的东西,以至于漫长的读书生涯里一直很自卑自闭,其间看了一些书,对我影响挺多。后面上大学后才开始逐渐接触一些人,认识了一些朋友,大一的时候参加文学社和学生会,后面又机缘巧合懵懵懂懂的加入了校外的一个演讲培训机构,得以认识更多的人,虽然后面离开后和那些人交集也很少了。大二的时候很巧的就认识一个女生,我们可能爱好比较相似,后面她约我,我们去看了电影,那是我生命中第一次去电影院,因为我自小在农村长大,也没什么朋友,所以外面这些娱乐方式都没经历过。那天她身穿一袭素净的汉服,扎的发辫特 ...
看见海
彼时只是一个生于内陆的孩童,第一次知道海也许是二年级人教版语文课本里的一首诗,每次讲诗,并不解其意,只是读起来朗朗上口,于是老师让我们读起来,是王之涣的《登鹳雀楼》:
白日依山尽,黄河入海流,欲穷千里目,更上一层楼。
印象中是第一次听闻海,知道了海大概是一片茫无际涯的大水。后来四年级的时候,学了巴金的《海上日出》,而且课文底页是附图的,对海就十分有了好感,再后来,初一下学期学到林海音的《爸爸的花儿落了》,是夹竹桃,后面看见夹竹桃总要想起来书中的主人公英子,那个因为下雨天赖床不起然后被爸爸拿起鸡毛掸子打起被宋妈抱上洋车的英子,校园里早读书声琅琅,窗外玉簪花在雨中莹润饱满。后面夹竹桃落了,爸爸的病愈加严重,那个齐肩发的女孩英子在台阶上泣不成声的落泪,而此刻弟弟妹妹还在打闹玩耍,她长大了,在校园礼堂为她们六年级毕业生唱完“长亭外,古道边,芳草碧连天”后,然后是一个小小的大人了,也曾在六年级国文课学到一篇文章《我们看海去》:
我们看海去!
我们看海去!
蓝色的大海上,
扬着 ...
基于Redis实现的分布式锁
基于Redis实现的分布式锁
分布式锁概览
在多线程的环境下,为了保证一个代码块在同一时间只能由一个线程访问,Java中我们一般可以使用synchronized语法和ReetrantLock去保证,这实际上是本地锁的方式。但是现在公司都是流行分布式架构,在分布式环境下,如何保证不同节点的线程同步执行呢?
实际上,对于分布式场景,我们可以使用分布式锁,它是控制分布式系统之间互斥访问共享资源的一种方式。
比如说在一个分布式系统中,多台机器上部署了多个服务,当客户端一个用户发起一个数据插入请求时,如果没有分布式锁机制保证,那么那多台机器上的多个服务可能进行并发插入操作,导致数据重复插入,对于某些不允许有多余数据的业务来说,这就会造成问题。而分布式锁机制就是为了解决类似这类问题,保证多个服务之间互斥的访问共享资源,如果一个服务抢占了分布式锁,其他服务没获取到锁,就不进行后续操作。大致意思如下图所示(不一定准确):
分布式锁的特点
分布式锁一般有如下的特点:
互斥性: 同一时刻只能有一个线程持有锁
可重入性: 同一节点上的同一个线程如果获取了锁之后能够再次获取锁
锁超时:和J.U.C中 ...
MySQL面试知识点
MySQL面试知识点
1、bin log、redo log、undo log的用处
bing log
什么是binlog?
binlog记录了数据库表结构和表数据变更,比如update/delete/insert/truncate/create。它不会记录select(因为这没有对表没有进行变更)
binlog长什么样?
binlog我们可以简单理解为:存储着每条变更的SQL语句(当然不止SQL,还有XID「事务Id」等等)
binlog一般用来干嘛?
主要有两个作用:复制和恢复数据
MySQL在公司使用的时候往往都是一主多从结构的,从服务器需要与主服务器的数据保持一致,这就是通过binlog来实现的
数据库的数据被干掉了,我们可以通过binlog来对数据进行恢复。
redo log
对于MySQL的更新操作,由于Mysql的基本存储结构是页(记录都存在页里边),所以MySQL是先把这条记录所在的页找到,然后把该页加载到内存中,将对应记录进行修改。
现在就可能存在一个问题:如果在内存中把数据改了,还没来得及落磁盘,而此时的数据库挂了怎么办?显然这次更改就丢了。
MySQL ...
AJAX常见面试题
AJAX常见面试题
AJAX是“Asynchronous JavaScript and XML”的缩写。他是指一种创建交互式网页应用的网页开发技术。
客户端与服务器,可以在【不必刷新整个浏览器】的情况下,与服务器进行异步通讯的技术,Ajax就是能够做到局部刷新
1、AJAX应用和传统Web应用有什么不同?
传统的web前端与后端的交互中,浏览器直接访问Tomcat的Servlet来获取数据。Servlet通过转发把数据发送给浏览器。
当我们使用AJAX之后,浏览器是先把请求发送到XMLHttpRequest异步对象之中,异步对象对请求进行封装,然后再与发送给服务器。服务器并不是以转发的方式响应,而是以流的方式把数据返回给浏览器
XMLHttpRequest异步对象会不停监听服务器状态的变化,得到服务器返回的数据,就写到浏览器上【因为不是转发的方式,所以是无刷新就能够获取服务器端的数据】
2、XMLhttprequest对象
Ajax的核心是JavaScript对象XmlHttpRequest。该对象在Internet Explorer 5中首次引入,它是一种支持异步请求的 ...
Shiro知识点概览
1.权限的管理
1.1 什么是权限管理
基本上涉及到用户参与的系统都要进行权限管理,权限管理属于系统安全的范畴,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户可以访问而且只能访问自己被授权的资源。
权限管理包括用户身份认证和授权两部分,简称认证授权。对于需要访问控制的资源用户首先经过身份认证,认证通过后用户具有该资源的访问权限方可访问。
1.2 什么是身份认证
身份认证,就是判断一个用户是否为合法用户的处理过程。最常用的简单身份认证方式是系统通过核对用户输入的用户名和口令,看其是否与系统中存储的该用户的用户名和口令一致,来判断用户身份是否正确。对于采用指纹等系统,则出示指纹;对于硬件Key等刷卡系统,则需要刷卡。
1.3 什么是授权
授权,即访问控制,控制谁能访问哪些资源。主体进行身份认证后需要分配权限方可访问系统的资源,对于某些资源没有权限是无法访问的
Apache Shiro™ is a powerful and easy-to-use Java security framework that performs authentication, auth ...
ElasticSearch概览
ElasticSearch概览
一、ElasticSearch介绍
ElasticSearch 是一个开源的搜索引擎,建立在一个全文搜索引擎库 Apache Lucene™ 基础之上。 Lucene 可以说是当下最先进、高性能、全功能的搜索引擎库——无论是开源还是私有。
ElasticSearch 使用 Java 编写的,它的内部使用的是 Lucene 做索引与搜索,它的目的是使全文检索变得简单,通过隐藏 Lucene 的复杂性,取而代之提供了一套简单一致的 RESTful API。
然而,ElasticSearch 不仅仅是 Lucene,并且也不仅仅只是一个全文搜索引擎,它可以被下面这样准确地形容:
一个分布式的实时文档存储,每个字段可以被索引与搜索
一个分布式实时分析搜索引擎
能胜任上百个服务节点的扩展,并支持 PB 级别的结构化或者非结构化数据
ElasticSearch 已经被各大互联网公司验证其强大的检索能力:
Wikipedia 使用 ElasticSearch 提供带有高亮片段的全文搜索,还有 search-as-you-type 和 did- ...