- 博客(21)
- 问答 (1)
- 收藏
- 关注
原创 关系数据模型(Mysql基于关系模型)
关系模型是数据库管理中的一种数据结构,由一组关系(即二维表)组成。每个关系包含元组(行)、属性(列)、码(唯一标识元组的属性或属性组)、域(属性的取值范围)和分量(元组中的属性值)。关系模式描述了关系的结构,如学生(学号,姓名,性别,年龄,所在院系)。关系模型支持多种数据操作,如选择、投影、连接、并、差、交和除运算,这些操作可以通过关系代数或SQL实现。关系模型的完整性约束包括实体完整性(主属性不能为空)、参照完整性(外键必须为空或来自被参照关系)和自定义完整性(用户定义的约束)。关系模型的优点包括概念单一
2025-05-22 15:32:11
850
原创 HttpSession 的运行原理
HttpSession是JavaWeb中用于在服务器端存储用户会话数据的机制,主要用于跟踪用户状态,如登录信息和购物车数据。其核心流程包括:首次访问时,服务器创建Session并生成唯一的SessionID,通过Set-Cookie返回给浏览器;后续请求中,浏览器自动携带SessionID,服务器据此找到对应的Session进行数据读写。Session数据默认存储在服务器内存中,也可配置到Redis或数据库。Session会在超时、主动销毁或服务器重启时失效。核心API包括获取、存储、读取、删除Sessio
2025-05-13 10:32:37
1397
原创 在使用SpringMVC框架时,会出现使用@Controller注解报错,但替换成@RestController却可行的情况,这是为什么呢?
特性所以当需要返回json数据时,只用@Controller会出报错,而用@RestController或则@Controller+@ResponseBody却不会。
2025-05-08 22:56:35
393
原创 SpringMvc拦截器
对请求参数进行统一处理(如trim、格式转换):对Controller返回的数据进行统一包装。:检查用户是否已登录,未登录则跳转到登录页面。:验证API请求的签名或Token有效性。:记录请求的URL、参数、来源IP等信息。:验证用户是否有访问特定资源的权限。:检查CSRF令牌防止跨站请求伪造。:对请求/响应数据进行加密解密处理。:根据用户分组返回不同的内容或功能。:捕获并记录请求处理过程中的异常。:根据请求设置Locale信息。:根据条件路由到不同版本的服务。:根据用户偏好设置页面主题。
2025-05-07 20:20:28
891
原创 为什么用Redis而不用Mysql呢?
将会话数据(如用户 ID、权限令牌)存入 Redis,替代传统 Cookie 或服务器内存存储。缓存复杂查询结果(如排行榜、聚合统计),定期更新或通过消息队列触发刷新。:将热点数据存储在内存中,减少对慢速存储(如数据库、磁盘)的访问。:在分布式系统中统一管理用户登录状态,避免会话丢失或重复登录。:将耗时操作(如发送邮件、处理订单)异步化,提升系统响应速度。:通过缓存高频查询结果,减少数据库压力,避免系统过载。:实时更新和展示排名数据(如游戏积分、短视频热度)。统计用户行为(如 PV、UV、在线人数)。
2025-05-01 23:43:32
810
原创 为什么不用Socket而用WebSocket来实现聊天室功能呢?
前端通过WebSocket API建立连接。使用Tyrus实现JSR-356标准。利用第一个消息作为身份标识。同步遍历所有Session。
2025-05-01 00:37:31
749
原创 用Socket实现简单多人聊天室
自动处理网络中断等异常情况,(try{}catch{}finally{}):支持多个客户端同时连接,为每个客户建立一个独立的线程。:将任意客户端的消息转发给其他所有在线用户。:实时维护客户端连接状态(加入/离开通知):无论正常退出还是异常断开都移除客户端。:读取客户端名称并广播加入通知。:持续监听客户端输入并转发消息。:每个新连接创建独立线程处理。块确保socket必然关闭。:关闭资源+发送离开通知。持续监听12345端口。方法阻塞等待客户端连接。:处理客户端意外断开。
2025-04-30 00:11:39
806
原创 用Socket实现的基础聊天功能
所以这字符流肯定又被计算机转换成了字节流,最后被服务端的Socket.getInputStream()方法接收,经过IntputStreamReader()转换成字符流,最终被BufferedReader的实例读取,然后输出。)创建套接字时,会绑定指定主机的12345端口,从而实现连接。接着就是收发信息,例如,客户端向服务端发送“你好”,“你好”会被计算机转换成字节流,接着被socket.getOutputStream()接收,然后在PrintWriter实例中又被转换成字符流并打包丢了出去,
2025-04-28 19:52:13
653
原创 HYML表格嵌套与跨列表
设表B建立在格子C里(这个C可能是由多个格子组成的,需利用colspan和rowspan属性完成),先建立普通表格A,接着按要求组合格子并合成格子C,最后在C中建立表B。需用到的标签 rowspan :在一行中将n列合在一起,(n是属性rowspan的值)colspan: 在一列中奖n行合在一起,(n是属性colspan的指)属性:rowspan colspan。:定义表格。: 定义列。
2024-10-16 00:07:39
307
原创 平均时间复杂度的求法(残缺版)
最好时间复杂度就是指最好的输入情况所对应的时间复杂度,像上面例子中1 2 3 4 5 6 7 8 9 10就是最好的输入情况,它所对应的时间复杂度就是最好时间复杂度。例如:算法A的目的是为了将一窜个数为10的数列按递增的顺序进行排列并输出,求算法A的平均时间复杂度。T(I):是指当输入情况为 I 时,算法的时间复杂度。最坏时间复杂度就是指最坏的输入情况所对应的时间复杂度。其中10个数的数列是需要输入,输入的数列就是输入情况。P(I):是指输入情况为 I 的概率。I:是指一种输入情况。
2024-09-19 21:38:57
436
原创 c语言基础——单向链表
注意:节点一般有两部分组成,一部分是地址部分:存储中着该节点的地址;另一部分是数据部分:存储着该节点的数据。链表相较于数组的优势:可以实施动态分配,不需要提前确定存储空间的大小;链表是一种动态存储分布的数据结构。它有同一结构类型的节点依次串连而成。单向链表的常用操作:链表的创建,链表的遍历,链表的删除,节点的插入。#注意:该代码中单向链表的操作皆宜函数的形式实现。
2024-07-08 22:14:03
433
原创 计算机网络性能
(D=D0/(1-U),其中U为网络利用率,D为网络当前的时延,D0为网络空闲时的时延)是指数据从网络一端到另一端所需的时间,它包含很多部分包括发送时延,传播时延,处理时延以及排队时延。(发送时延=数据桢长度 / 发送速率)(传播时延=信道长度 / 电磁波在信道上的传播速率)本是指某信号所包含的各种频率所占据的频率的范围,在计算机网络中多指单位时间内某信道所能通过的最高数据率,单位 bit/s(影响网络性能的主要因素有:网络传输速率(数据率),带宽,吞吐量,时延,时延宽带积,往返时间RTT,利用率。
2024-06-22 22:09:43
286
原创 计算机网络(破产版
路由到直接连接的网络的距离为:1;路由到其他网络的距离为:经过的路由数+1;注意:这里的距离也被叫做跳数,跳数最大值为15.所以RIP只适用于小型网络。
2024-06-22 15:25:44
1254
原创 C语言基础——结构(破产版)
结构定义的位置:一般都代码开头的位置。定义结构的格式:struct 结构名{类型名 结构成员1;类型名 结构成员2;类型名 结构成员n;#注意结尾有分号int host;结构的嵌套定义:只需要注意类型名,结构变量的的类型名为struct 结构名,例如下面的int host;int num;结构变量的定义有几种,常见的有:1.struct 结构名 结构变量;例如:# 定义了结构变量 s2. (这种定义方法可以省略结构名)
2024-06-19 22:02:09
438
原创 C语言基础——指针(破产版)
类型名 * 指针变量名;#类型名决定了该指针指向的变量类型,另外其中的 * 叫做指针声明符,也叫简介访问运算符(因为可以用它来访问普通变量)。例:声明了一个整形指正变量 ,叫做 n。#注意:指针变量的大小是一样的,无论该指针指向谁。
2024-06-18 21:30:34
547
原创 C语言基础——数组(破产版)
一般格式:类型名 数组名 [数组长度];#类型名决定了该数组只能存放该类型的数据;数组长度在定义时是必须需要确定的;数组名是一个地址常量,其中存放着数组空间的首地址,且数组名在程序运行期间不得更改。例:#定义了一个有10个整形元素的数组。char name [20] #定义了一个有20个字符型元素的数组。类型名 数组名 [行长度][列长度];类型名 数组名 [行下标][列长下标];#注意行下标的取值范围是 [0 , 行长度-1];
2024-06-17 21:03:50
562
原创 C语言基础——函数
n[1]=c;n[2]=a;n[3]=b;j<4;return i;函数的定义的一般格式:函数类型 函数名 (形式参数表){函数实现过程;#其中函数类型指的是函数运行后返回的数据类型#注意函数的定义可以放在main函数之后,也可以放在函数的声明之后(此时函数的声明就可有可无了)#该函数为自定义函数,函数类型——int;函数名——sum;形式参数表——int c,int a,int b;后面的所用为函数实现过程。n[1]=c;n[2]=a;
2024-06-15 17:49:00
505
原创 C语言基础——printf语句
printf("数据");以及printf("%d",n);float和double之间的区别在于double的精度更高。当输出的数据需要占有n个位置,且不够的补空格时。例如:printf("%.2lf",n);当输出的数据需要占有n个位置,且不够的补0时。#注意d要随着变量类型的改变而改变。实型数据——double——lf。实型数据——float——f;字符串——char——c;当输出的数要保留几位小数时。常见数据类型对应的字母。整形——int——d;
2024-06-14 00:22:15
323
原创 C语言基础结构
当i小于等于10时,执行循环体语句n=n+i,之后在执行i++语句,接着再次判断i是否小于等于10来决定是否继续循环下去;顾名思义就是不在只有两种可能,而是多种,即当满足条件1,则A;#该代码解读:如果a=2时,b=1;如果a=2,则b=3;如果a及不等于1也不等于2,则b=2.当n分别等于1,2,3,4,其他数时,b分别等于-1,-2,-3,0。case 常量表达式1:语句1;case 常量表达式2:语句2;case 常量表达式3:语句3;#该代码解读:如果a=2时,b=1;foru(表达式1;
2024-06-13 23:48:58
317
原创 python的基础语法——python函数模块的导入
例如:import matplotlib.pyplot as plt。from <库名> import <函数名1,函数名2,函数名3>2.运用方法二导入的函数在运用时不需要在函数名前加模块名(库名)例如:from math import cos,sqrt,pi。有时我们不需要导入整个库的函数,只需要其中几个。import <库名> as <代号>当库名较长是可以给库起一个代号。运用方法一导入的函数运用时。例如:import math。import <库名>
2024-06-11 16:05:30
631
空空如也
HbuilderX中调试Vue3项目,请求时抛出异常
2025-06-21
c语言中bool函数的返回值
2024-10-01
SQL,insert语句哪里有问题
2024-09-10
SQL中建立两表联系出问题了
2024-09-08
SQL:在建表时老是报错,可错误在哪呢
2024-09-08
如何用C语言:将一个正整数N分解成几个正整数相加?(相关搜索:c语言)
2024-06-24
#/c语言#/,输出出错
2024-06-24
关于#c语言#的问题,请各位专家解答!
2024-06-24
链表,输出结果为啥出错
2024-06-24
关于#Create#的问题,如何解决?
2024-06-24
关于#网络#的问题:报文分段和分组交换是什么关系
2024-06-22
不同局域网使用ARP
2024-06-18
输入的数为什么会多一个
2024-06-17
抓包,火狐和burpsuite
2023-10-05
服务器证书不可信,这是个啥
2023-09-24
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅