- 博客(49)
- 问答 (1)
- 收藏
- 关注
原创 【计网】TCP协议如何保证数据的顺序传输
TCP保证数据的顺序传输使用了ISN(initial sequence number - 初始化序列化)
2023-05-17 19:58:04
992
原创 【面试】项目为什么能够避免SQL注入?
{ } 底层使用的是PreparedStatement类的setString()方法来设置参数,此方法会获取传递进来的参数的每个字符,然后进行循环对比,如果发现有敏感字符(如:单引号、双引号等),则会在前面加上一个’/'代表转义此符号,让其变为一个普通的字符串,不参与SQL语句的生成,达到防止SQL注入的效果。匹配的是一个占位符,相当于JDBC中的一个?,会对一些敏感的字符进行过滤,编译过后会对传递的值加上双引号,因此可以防止SQL注入问题。匹配的是真实传递的值,传递过后,会与sql语句进行字符串拼接。
2023-04-18 17:34:14
552
原创 【并发】Volatile作用详解
此时A,B保存的num的值都是0,num+1(tmp)的值都为1。当一个共享变量被volatile修饰时,会保证修改的值立即更新到主存,当有其他线程需要读取时,会从内存中读取新值。A线程执行赋值的操作,此时,num=1,并将num的值刷新到内存中并通知其他线程保存的num值失效,B读取到num的值为1,而。当多个线程访问同一个变量的时候,一个线程修改了这个变量的值,其他线程能够立即看到修改的值。如果不能保证可见性的话,会导致其他线程无法及时看到修改的值,可能会导致死循环等问题的出现。
2023-04-17 18:35:27
571
原创 【测试】搜索引擎测试用例设计
操作环境:Windows11下的Chrome : 版本111.0.5563.147(正式版本)操作环境:Windows11下的Chrome : 版本111.0.5563.147(正式版本)操作环境:Windows11下的Chrome : 版本111.0.5563.147(正式版本)操作步骤:在输入框输入暂停词表中的内容。需求:含有包含关系的词搜索结果应该不同。操作步骤:在输入框输入含有包含关系的词。需求:搜索界面是否能够正常显示出来。需求:输入暂停词输出0个搜索结果。标题:输入包含关系词。
2023-04-08 12:16:16
1089
原创 【HTTP】Cookie、Session、Token的区别
在登录功能中,为了记住登录成功后的信息,在客户端,我们通常会使用Cookie来记录,但是,由于Cookie是不可跨域的,只能访问对应的域名,比如说:a网站发送请求到b网站,携带的是b网站的Cookie。还处于a网站时携带的是a网站的Cookie,到了b网站,就携带b网站的Cookie。在一个授予了凭证的网站a点击到了危险网站,危险网站其实是指向a的,而你在a网站是登录转态,由于Cookie是不可以跨域的,因此危险网站指向a的这个过程到了a,Cookie就是已登录转态,这时候进行一些危险的操作就很危险了。
2023-04-07 21:51:00
276
原创 【已解决】ERROR [Druid-ConnectionPool-Create-322375688] - create connection SQLException异常
ERROR [Druid-ConnectionPool-Create-322375688] - create connection SQLException
2022-11-26 14:40:31
4355
1
原创 Java中的::
虽然平时看到有的源码使用到了这种写法,但我使用的还是比较少。因此对这种写法不是很了解,接下来我们就来讨论一下。经查询,该用法是Java8引入的新特性:方法引用。其通常与lambada表达式结合来简化代码。在上述代码中,该写法可以让编写者避免输错属性名。即为:获取Book中的name属性所对应的值。通过Java引用,我们能够。
2022-11-18 20:44:56
7379
1
原创 【Spring】初阶三 - AOP
AOP是一种设计思想,面向切面编程,通过预编译方式和运行期动态代理方式实现在不修改源代码的情况下给程序动态添加额外功能的一种技术。来设置优先级,value默认值是Integer的最大值,只要我们设置的数字比默认值小,它的优先级就比较高。在需要被事务管理的方法(或类)上,添加@Transactional注解,该方法就会被事务管理。以前我们学的事务的管理分散在代码的四处,复用性不高。与静态代理不同的是,我们不需要自己编写代理类,这是动态生成的。JDK原生的实现方式,需要被代理的目标类。
2022-11-08 00:25:07
746
原创 【Spring】初阶二
当把FactoryBean的实现类配置为bean时,会将当前类中getObject( )所返回的对象交给IOC容器管理。在spring boot里面,使用@Configuration(proxyBeanMethods = " ") 来设置作用域。FactoryBean是一个接口,需要创建一个类实现该接口。getObject( ):通过一个对象交给IOC容器管理。getObjectType():设置所提供对象的类型。isSingleton():所提供的对象是否为单例。使用@Scope注解来设置作用域。
2022-11-08 00:08:02
232
原创 【数据库】数据库基础2
JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。
2021-11-30 23:59:58
850
原创 【数据库】数据库基础1
如何调整字体:安装成功!数据库之旅开启!数据库操作查看数据库show databases;创建数据库create database [if not exists] db_name [character set xxx][if not exists]如果数据库已经存在,就不再用创建;否则,就创建。加上这一选项,即使出现同名,也不会报错删除数据库drop database [if exists] db_name;选中数据库use database [if ex.
2021-11-24 22:32:25
602
原创 【C语言】实现求最小生成树的Kruskal算法
题目描述思想代码实现题目描述已知有权无向图G,利用克鲁斯卡尔算法求出该图的最小生成树。输入格式:第一行输入两个正整数n和m(空格间隔), 分别表示图G的顶点总数和边的总数。 第二行连续输入n个字母,分别表示n个顶点的信息。第三行连续输入m条边的信息,每条边的输入格式为(v1,v2,w),表示一条关联顶点v1和v2的边,其权值为w。输出格式:按边上权值由小到大的顺序依次输出各个边。输出边的时,若该边被选中,则在该边信息之后输出1,否则输出0。例如: (v1,v2,w,1) 表示与顶点.
2021-11-18 20:51:21
2112
原创 利用三步翻转法解决字符串左旋问题
在我们平时写题的时候,经常会遇到移动字符串的要求。今天,我们就来学习一种解题思想 - 三步翻转法 一、倒置字符串三步翻转法整体翻转单独翻转二、字符串左旋常规写法三步翻转法三、判断是否为旋转字符串三步翻转法巧用函数法一、倒置字符串将一句话的单词进行倒置,标点不倒置。比如 I like beijing。经过倒置后变为:beijing. like I三步翻转法整体翻转单独翻转#include<stdio.h>void reverse(char* left, char* right
2021-06-07 20:25:18
434
4
原创 qsort函数用法 - 快速排序
整型字符型double型结构体排序qsort函数:执行快速排序。运用到回调函数整型#include<stdio.h>//整型int cmp(const void* e1, const void* e2){ return *(int*)e1 - *(int*)e2;//顺序 //return *(int*)e1 - *(int*)e2;//逆序 }int main(){ int a[6] = { 1,3,8,4,6,2 }; int sz = sizeof(a).
2021-06-05 21:56:56
271
原创 指针和数组在strlen和sizeof中的大小计算看这一篇就够了
在 操作符详解中,我们介绍到了sizeof操作符的作用,下面通过一些习题来进一步区分sizeof和strlen。
2021-06-04 22:42:39
2678
2
原创 指针详解一:指针数组、数组指针、函数指针及其传参
char* ps = "hello world"; //1.char arr[] = "hello world"; //2.char* ps本质上是把这串字符的首字符的地址放在ps中,因此,它与字符串在数组的存储是有差异的。指针和数组并不是相等的。在内存中表示:下面通过一段代码来进一步加深认识:#include<stdio.h>int main(){ char str1[] = "hello"; char str2[] = "hello"; char* str3 = ".
2021-06-02 21:59:04
703
原创 逻辑训练题 - 猜名次
5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果:A选手说:B第二,我第三;B选手说:我第二,E第四;C选手说:我第一,D第二;D选手说:C最后,我第三;E选手说:我第四,A第一;比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。这是一道简单的奥数题。我记得小学的时候经常做这种奥数题hhhh~其实奥数题是很能锻炼一个人的逻辑思维能力,可惜我小时候不好好学习,罢了罢了。我一看到这道题,就只想到暴力法,暴力循环,最终找到结果。下面是代码实现:int main(){ in.
2021-05-27 00:03:01
245
1
原创 【C语言修炼手册】(六)指针和结构体
指针大小在32位平台上是4个字节,在64位平台上是8个字节既然指针大小无论类型都是一样的,那么为什么不存在一个通用类型指针呢?指针类型存在的意义 int a = 0x11223344; int* pa = &a; *pa = 0;运行后: int a = 0x11223344; char* pa = &a; *pa = 0;运行后:可见,指针类型决定了解引用时权限的大小int main(){ int arr[10] = { 0 }; int* p =
2021-05-23 15:16:02
152
原创 第一次测试错题记录
错题记录#include<stdlib.h>int a = 1;void test(){ int a = 2; a += 1;}int main(){ test(); printf("%d\n", a); return 0;}错误选择:3正确选择:1局部变量只在限定函数范围内使用,使用完就被销毁了。2.在一个源程序中,main函数的位置可以任意int main(){ int year = 1009, * p = &year; /*
2021-05-19 17:51:58
180
4
原创 你必须知道的关于操作符的那些事
经过了五一假期的放松,我们重新投入到编程学习大军中,Lets’ go!操作符详解算术操作符移位操作符位操作符用途练习赋值操作符单目操作符分类:算术操作符移位操作符位操作符赋值操作符单目操作符关系操作符逻辑操作符条件操作符逗号操作符算术操作符+ - * / %当我们进行除法操作时int a = 9 / 2; //4得到的是商,不会得到4.5这是为什么呢?这是因为/旁边都是整数,执行的是整数除法,即使我们把它改成float a = 9 / 2也没有改变它的本质---
2021-05-17 21:32:43
157
原创 关于scanf的多种应用场景与相关知识
经过本次期中考试,我深刻认识到我对输入的各种方法不太熟悉,所以我写下这篇总结,巩固一下自己的知识。顺便记录下我学习中遇到的输入方法。1. 输入格式:输入在一行中给出若干字符,最后一个回车表示输入结束,不算在内。while ((c=getchar())!='\n'){}意思为:一直循环,直到输入回车为止,结束循环,只要用户输入的不是回车,while循环就会一直执行。调用getchar时,用户输入的字符被存放在键盘缓冲区中。当用户键入回车之后,getchar才开始从stdin流中每次读入一个字符
2021-05-15 18:07:59
1132
1
原创 【C语言基础题】求水仙花数
求出0~100000之间的所有“水仙花数”并输出。#include<stdio.h>#include<math.h>int main(){ for (int i = 0; i <100000; i++) { int count = 1; int n = i; while (n > 9)//求位数 { count++; n /= 10; } int sum = 0; int m = i; while (m)//求和.
2021-05-10 20:25:08
176
原创 你的第二个小项目 - 扫雷
完成了第一个小项目后,我们继续第二个征程----完成一个低配版扫雷项目。如果你想知道怎么来制作一个低配版扫雷,就接着往下看吧。扫雷详解大纲实现目标打印菜单做选择开始玩游戏布置雷棋盘1.初始化棋盘排查雷大纲打印菜单做选择开始玩游戏判断输赢结束游戏实现目标打印菜单void menu(){ printf("*************************\n"); printf("******* 1.play *******\n"); printf("*******
2021-05-05 21:55:42
237
空空如也
statement.executeUpdate();抛出异常
2022-06-04
TA创建的收藏夹 TA关注的收藏夹
TA关注的人