WebSocket
SpringBoot整合WebSocketWebSocket简介WebSockets是一种在Web浏览器和服务器之间建立持久连接的技术标准。与HTTP请求不同,WebSockets允许双向通信,使得服务器能够主动向客户端推送数据,而不需要客户端发起请求。这种双向通信的特性使得WebSockets非常适合需要实时数据更新的应用,比如在线游戏、即时聊天和股票报价等。
双向通信:通过WebSockets,服务器和客户端可以同时发送和接收数据,这种实时性非常适合需要及时更新的应用场景。
持久连接:WebSockets建立一次连接后会一直保持开放状态,而不像HTTP需要在每次通信时重新建立连接。这降低了连接开销并提高了效率。
协议和API:WebSockets建立在TCP协议之上,通过使用WebSocket API在浏览器和服务器之间建立连接。
安全性:WebSockets通过类似HTTPS的安全套接层(SSL/TLS)来保护数据传输的安全性,确保数据不被窃听或篡改。
应用场景:WebSockets被广泛应用在需要实时通信和及时更新的应用中,比如在线游戏、即时通讯、协作工具、实时数据可视化以及股 ...
Java 网络编程
Java 网络编程1. 网络编程概述Java是 Internet 上的语言,它从语言级上提供了对网络应用程序的支持,程序员能够很容易开发常见的网络应用程序。
Java提供的网络类库,可以实现无痛的网络连接,联网的底层细节被隐藏在 Java 的本机安装系统里,由 JVM 进行控制。并且 Java 实现了一个跨平台的网络库,程序员面对的是一个统一的网络编程环境。
1.1 软件架构C/S架构 :全称为Client/Server结构,是指客户端和服务器结构。常见程序有QQ、美团app、360安全卫士等软件。
B/S架构 :全称为Browser/Server结构,是指浏览器和服务器结构。常见浏览器有IE、谷歌、火狐等。
两种架构各有优势,但是无论哪种架构,都离不开网络的支持。网络编程,就是在一定的协议下,实现两台计算机的通信的程序。
1.2 网络基础
计算机网络:把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大、功能强的网络系统,从而使众多的计算机可以方便地互相传递信息、共享硬件、软件、数据信息等资源。
网络编程的目的:直接或间接地通过网络协议与其它计算机实现数据 ...
MongoDB 安全认证
MongoDB 安全认证用户和角色权限简介默认情况下,MongoDB实例启动运行时是没有启用用户访问权限控制的,也就是说,在实例本机服务器上都可以随意连接到实例进行各种操作,MongoDB不会对连接客户端进行用户验证,这是非常危险的。
为了强制开启用户访问控制(用户验证),则需要在MongoDB实例启动时使用选项 –auth 或在指定启动配置文件中添加选项 auth=true 。
角色:在MongoDB中通过角色对用户授予相应数据库资源的操作权限,每个角色当中的权限可以显式指定, 也可以通过继承其他角色的权限,或者两都都存在的权限。
权限:权限由指定的数据库资源(resource)以及允许在指定资源上进行的操作(action)组成。
资源(resource)包括:数据库、集合、部分集合和集群;
操作(action)包括:对资源进行的增、删、改、查(CRUD)操作。
关于角色权限的查看:
12345678910111213141516171819202122// 关于角色权限的查看db.runCommand({ rolesInfo: 1 })// 查询所有角色权 ...
MongoDB 安装
MongoDB 安装Windows系统中的安装启动第一步:下载安装包
MongoDB 提供了可用于 32 位和 64 位系统的预编译二进制包,你可以从MongoDB官网下载安装,MongoDB 预编译二进制包下载地址:
MongoDB所有历史版本下载:http://dl.mongodb.org/dl/linux
根据上图所示下载 zip 包。
提示:版本的选择:
MongoDB的版本命名规范如:x.y.z;
y为奇数时表示当前版本为开发版,如:1.5.2、4.1.13;
y为偶数时表示当前版本为稳定版,如:1.6.3、4.0.10;
z是修正版本号,数字越大越好。
详情:http://docs.mongodb.org/manual/release-notes/#release-version-numbers
第二步:解压安装启动
将压缩包解压到一个目录中。
在解压目录中,手动建立一个目录用于存放数据文件,如 data/db
方式1:命令行参数方式启动服务
在 bin 目录中打开命令行提示符,输入如下命令:
1mongod --dbpath=..\data\db
我们在启动信息 ...
MongoDB 相关概念
MongoDB 相关概念业务应用场景传统的关系型数据库(如MySQL),在数据操作的“三高”需求以及应对Web2.0的网站需求面前,显得力不从心。解释:“三高”需求:
High performance - 对数据库高并发读写的需求。
Huge Storage - 对海量数据的高效率存储和访问的需求。
High Scalability && High Availability- 对数据库的高可扩展性和高可用性的需求。
而MongoDB可应对“三高”需求。
具体的应用场景如:
社交场景,使用 MongoDB 存储存储用户信息,以及用户发表的朋友圈信息,通过地理位置索引实现附近的人、地点等功能。
游戏场景,使用 MongoDB 存储游戏用户信息,用户的装备、积分等直接以内嵌文档的形式存储,方便查询、高效率存储和访问。
物流场景,使用 MongoDB 存储订单信息,订单状态在运送过程中会不断更新,以 MongoDB 内嵌数组的形式来存储,一次查询就能将订单所有的变更读取出来。
物联网场景,使用 MongoDB 存储所有接入的智能设备信息,以及设备汇报的日志信息,并 ...
MongoDB 常用命令
MongoDB 常用命令案例需求存放文章评论的数据存放到MongoDB中,数据结构参考如下:
数据库:articledb
字段名称
字段含义
字段类型
备注
_id
ID
ObjectId或String
Mongo的主键字段
articleid
文章ID
String
content
评论内容
String
userid
评论人ID
String
nickname
评论人昵称
String
createdatetime
评论的日期时间
Data
likenum
点赞数
Int32
replynum
回复数
Int32
state
状态
String
0:不可见;1:可见;
parentid
上级ID
String
如果为0表示文章的顶级评论
数据库操作选择和创建数据库选择和创建数据库的语法格式:
1use 数据库名称
如果数据库不存在则自动创建,例如,以下语句创建articledb 数据库:
1use articledb
查看有权限查看的所有的数据库命令:
123show dbs或show databases ...
MongoDB 索引
MongoDB 索引概述索引支持在MongoDB中高效地执行查询。如果没有索引,MongoDB必须执行全集合扫描,即扫描集合中的每个文档,以选择与查询语句匹配的文档。这种扫描全集合的查询效率是非常低的,特别在处理大量的数据时,查询可以要花费几十秒甚至几分钟,这对网站的性能是非常致命的。
如果查询存在适当的索引,MongoDB可以使用该索引限制必须检查的文档数。
索引是特殊的数据结构,它以易于遍历的形式存储集合数据集的一小部分。索引存储特定字段或一组字段的值,按字段值排序。索引项的排序支持有效的相等匹配和基于范围的查询操作。此外,MongoDB还可以使用索引中的排序返回排序结果。
官网文档
MongoDB索引使用B树数据结构(确切的说是B-Tree,MySQL是B+Tree)
索引的类型单字段索引MongoDB支持在文档的单个字段上创建用户定义的升序/降序索引,称为单字段索引(Single Field Index)。
对于单个字段索引和排序操作,索引键的排序顺序(即升序或降序)并不重要,因为MongoDB可以在任何方向上遍历索引。
复合索引MongoDB还支持多个字段的用户定义索引,即 ...
SpringBoot 整合 MongoDB
SpringBoot 整合 MongoDB需求分析某头条的文章评论业务如下:
文章示例参考:早晨空腹喝水,是对还是错?https://www.toutiao.com/a6721476546088927748/
需要实现以下功能:
基本增删改查API
根据文章id查询评论
评论点赞
表结构分析数据库:articledb
字段名称
字段含义
字段类型
备注
_id
ID
ObjectId或String
Mongo的主键字段
articleid
文章ID
String
content
评论内容
String
userid
评论人ID
String
nickname
评论人昵称
String
createdatetime
评论的日期时间
Data
likenum
点赞数
Int32
replynum
回复数
Int32
state
状态
String
0:不可见;1:可见;
parentid
上级ID
String
如果为0表示文章的顶级评论
技术选型mongodb-drivermongodb-driver是mong ...
MongoDB 集群
MongoDB 集群学习目标
MongoDB的副本集:操作、主要概念、故障转移、选举规则
MongoDB的分片集群:概念、优点、操作、分片策略、故障转移
副本集-Replica Sets简介MongoDB中的副本集(Replica Set)是一组维护相同数据集的mongod服务。 副本集可提供冗余和高可用性,是所有生产部署的基础。
也可以说,副本集类似于有自动故障恢复功能的主从集群。通俗的讲就是用多台机器进行同一数据的异 步同步,从而使多台机器拥有同一数据的多个副本,并且当主库当掉时在不需要用户干预的情况下自动 切换其他备份服务器做主库。而且还可以利用副本服务器做只读服务器,实现读写分离,提高负载。
冗余和数据可用性
复制提供冗余并提高数据可用性。 通过在不同数据库服务器上提供多个数据副本,复制可提供一定级别 的容错功能,以防止丢失单个数据库服务器。
在某些情况下,复制可以提供增加的读取性能,因为客户端可以将读取操作发送到不同的服务上, 在不 同数据中心维护数据副本可以增加分布式应用程序的数据位置和可用性。 您还可以为专用目的维护其他 副本,例如灾难恢复,报告或备份。
Mong ...
XXL-JOB
XXL-JOB1.概述1.1什么是任务调度我们可以思考一下下面业务场景的解决方案:
某电商平台需要每天上午10点,下午3点,晚上8点发放一批优惠券
某银行系统需要在信用卡到期还款日的前三天进行短信提醒
某财务系统需要在每天凌晨0:10分结算前一天的财务数据,统计汇总
以上场景就是任务调度所需要解决的问题
任务调度是为了自动完成特定任务,在约定的特定时刻去执行任务的过程
1.2 为什么需要分布式调度使用Spring中提供的注解@Scheduled,也能实现调度的功能
在业务类中方法中贴上这个注解,然后在启动类上贴上@EnableScheduling注解
1234@Scheduled(cron = "0/20 * * * * ? ") public void doWork(){ //doSomething }
感觉Spring给我们提供的这个注解可以完成任务调度的功能,好像已经完美解决问题了,为什么还需要分布式呢?
主要有如下这几点原因:
高可用:单机版的定式任务调度只能在一台机器上运行,如果程序或者系统出现异常就会导致功能不可用。
...