- 博客(106)
- 收藏
- 关注
原创 C/C++ 查找算法
如果arr[mid] < x, min = mid + 1;如果arr[mid] > x, max = mid - 1;如果arr[mid] == x, 找到结果终止条件:min >= max。
2024-12-14 22:35:26
911
1
原创 C/C++ 堆和优先队列
如果完全二叉树中的根节点存储的值为当前树中所有值的最大值,在任意一个三元组(父节点,左子树,右子树),父节点的值永远是最大的,就叫。从后向前依次扫描拥有子节点的节点,然后对该节点三元组进行向下调整, 比较高效;依次把每个元素插入到堆中, 比较低效;2.将此操作看做是堆顶元素弹出操作;3.按照头部弹出以后的策略调整堆;1.将堆顶元素与堆尾元素交换;时间复杂度O(n);
2024-12-08 19:42:44
533
原创 Spring事务和事务传播机制
可重复读(REPEATABLE READ): 事务不会读到其他事务对已有数据的修改, 即使其他事务已提交. 也就可以确保同⼀事务多次查询的结果⼀致, 但是其他事务新插⼊的数据, 是可以感知到的. 这也就引发了幻读问题. 可重复读, 是 MySQL 的默认事务隔离级别.A⽅法运⾏时, 会开启⼀个事务. 当A调⽤B时, B⽅法本⾝也有事务, 此时B⽅法运⾏时, 是加⼊A的事务, 还是创建⼀个新的事务呢?记录操作⽇志, 插⼊⼀条数据(出现异常, 执⾏失败) (嵌套p1事务, 回滚当前事务, 数。
2024-12-01 23:46:55
1115
原创 Spring AOP
当切点定义使⽤private修饰时, 仅能在当前切⾯类中使⽤, 当其他切⾯类也要使⽤当前切点定义时, 就需要把private改为public. 引⽤⽅式为: 全限定类名.⽅法名()为其他对象提供⼀种代理以控制对这个对象的访问. 它的作⽤就是通过提供⼀个代理类, 让我们在调⽤⽬标⽅法的时候, 不再是直接对⽬标⽅法进⾏调⽤, ⽽是通过代理类间接调⽤.什么是⾯向特定⽅法编程呢?@Order 控制切⾯的优先级, 先执⾏优先级较⾼的切⾯, 再执⾏优先级较低的切⾯, 最终执⾏⽬标⽅法.什么是⾯向切⾯编程呢?
2024-11-28 20:40:09
917
原创 SpringBoot 统⼀功能处理
场景: 前⾯学习的slf4j 就使⽤了适配器模式, slf4j提供了⼀系列打印⽇志的api, 底层调⽤的是log4j 或者logback来打⽇志, 我们作为调⽤者, 只需要调⽤slf4j的api就⾏了.在拦截器当中,开发⼈员可以在应⽤程序中做⼀些通⽤性的操作, ⽐如通过拦截器来拦截前端发来的请求, 判断Session中是否有登录⽤⼾的信息. 如果有就可以放⾏, 如果没有就进⾏拦截.拦截器是Spring框架提供的核⼼功能之⼀, 主要⽤来拦截⽤⼾的请求, 在指定⽅法前后, 根据业务需要执⾏预先设定的代码.
2024-11-27 22:39:29
1179
原创 MyBatis-Plus使⽤
MyBatis-Plus ⽀持⾃定义SQL, 版本不低于3.0.7, 传递 Wrapper 对象作为参数时, 参数名必须为 ew, 在 SQL 语句中,使⽤ ${ew.customSqlSegment} 来引⽤ Wrapper 对象⽣成的 SQL ⽚段。MyBatis-Plus 是 MyBatis 的增强⼯具, 在 MyBatis 的基础上只做增强不做改变, 可以⽤更少的代码实现数据库表的CRUD, 让我们的开发变得更加简单.时, 指定了⼀个泛型, 这个UserInfo就是与数据库表相对应的实体类.
2024-11-26 15:48:09
944
原创 MyBatis 操作数据库(进阶)
之前的插⼊⽤⼾功能,只是有⼀个 gender 字段可能是选填项,如果有多个字段,⼀般考虑使⽤标签结合标签,对多个字段都采取动态⽣成的⽅式。注册分为两种字段:必填字段和⾮必填字段,那如果在添加⽤⼾的时候有不确定的字段传⼊,程序应。:动态的在SQL语句中插⼊set关键字,并会删掉额外的逗号. (⽤于update语句中)在xml映射⽂件中配置的SQL,有时可能会存在很多重复的⽚段,此时就会存在很多冗余的代码。只会在⼦元素有内容的情况下才插⼊where⼦句,⽽且会⾃动去除⼦句的开头的AND或。
2024-11-24 17:55:31
884
原创 MyBatis 操作数据库
程序启动时, 会在数据库连接池中创建⼀定数量的Connection对象, 当客⼾请求数据库连接池, 会从数据库连接池中获取Connection对象, 然后执⾏SQL, SQL语句执⾏完, 再把Connection归还给连接池.每次执⾏SQL语句, 要先创建⼀个新的连接对象, 然后执⾏SQL语句, SQL语句执⾏完, 再关闭连接对象释放资源. 这种重复的创建连接, 销毁连接⽐较消耗资源。但是这样的话, 只能查找id=4 的数据, 所以SQL语句中的id值不能写成固定数值,需要变为动态的数值。
2024-11-23 21:23:52
722
原创 Spring Boot 日志
监控现在⼏乎是⼀个成熟系统的标配, 我们可以通过⽇志记录这个系统的运⾏状态, 每⼀个⽅法的响应时间, 响应状态等, 对数据进⾏分析, 设置不同的规则, 超过阈值时进⾏报警. ⽐如统计⽇志中关键字的数量,并在关键字数量达到⼀定条件时报警,这也是⽇志的常⻅需求之⼀。引⼊⻔⾯⽇志框架之后, 应⽤程序和⽇志框架(框架的具体实现)之间有了统⼀的API接⼝(⻔⾯⽇志框架实现), 此时应⽤程序只需要维护⼀套⽇志⽂件配置, 且当底层实现框架改变时, 也不需要更改应⽤程序代码.
2024-11-20 22:21:26
907
原创 SpringBoot 配置⽂件
⽀持更多的编程语⾔, 不⽌是Java中可以使⽤, 在Golang, Python, Ruby, JavaScript中也可以使⽤。SpringBoot⽀持并定义了配置⽂件的格式, 也在另⼀个层⾯达到了规范其他框架集成到SpringBoot的⽬的.使⽤单引号会转义, 就是说, \n 不再表⽰换⾏了, ⽽是表⽰⼀个普通的字符串。使⽤双引号不会转义, 表⽰ \n 表⽰的是它本⾝的含义, 就是换⾏。如果在项⽬中,想要主动的读取配置⽂件中的内容,可以使⽤。想要解决这个问题,就可以使⽤ yml 配置⽂件的格式化了。
2024-11-19 20:11:35
702
原创 Spring IoC&DI
DI: Dependency Injection(依赖注⼊)容器在运⾏期间, 动态的为应⽤程序提供运⾏时所依赖的资源,称之为依赖注⼊。程序运⾏时需要某个资源,此时容器就为其提供这个资源.从这点来看, 依赖注⼊(DI)和控制反转(IoC)是从不同的⻆度的描述的同⼀件事情,依赖注⼊是从应⽤程序的⻆度来描述, 就是指通过引⼊ IoC 容器,利⽤依赖关系注⼊的⽅式,实现对象之间的解耦.上述代码中, 是通过构造函数的⽅式, 把依赖对象注⼊到需要使⽤的对象中的.
2024-11-19 15:05:13
1045
1
原创 Spring Web入门练习
约定好交互的⽅式. 客⼾端发起请求, 服务器提供对应的服务. 服务器提供的服务种类有很多, 客⼾端按照双⽅约定指定选择哪⼀个服务.是指应⽤程序对外提供的服务的描述, ⽤于交换信息和执⾏任务(与JavaSE阶段学习的[类和接⼝]中的接⼝是两回事).加法计算器功能, 对两个整数进⾏相加, 需要客⼾端提供参与计算的两个数, 服务端返回这两个整数计算的结果。⾸⻚: 告知前端当前登录⽤⼾. 如果当前已有⽤⼾登录, 返回登录的账号, 如果没有, 返回空。,接⼝⽂档也可以理解为是 应⽤程序的"操作说明书".
2024-11-17 17:09:30
1124
原创 Spring Web MVC
MVCSpring Web MVC 是基于 Servlet API 构建的原始 Web 框架,从⼀开始就包含在 Spring 框架中。它的正式名称“Spring Web MVC”来⾃其源模块的名称(Spring-webmvc),但它通常被称为"SpringMVC".Servlet 是⼀种实现动态⻚⾯的技术. 准确来讲Servlet是⼀套 Java Web 开发的规范,或者说是⼀套。
2024-11-16 22:33:59
1312
原创 SprintBoot基础知识
jar包就是把开发⼈员已经写好的⼀些代码进⾏打包. 打好的jar包就可以引⼊到其他项⽬中, 也可以直接使⽤这些jar包中的类和属性. 另外也可以打成可执⾏jar包, 这样的包就可以通过java -jar命令来执⾏.⽐如 A 依赖B, B依赖C, 那么 A项⽬引⼊B 的同时, 也需要引⼊C, 如果我们⼿动管理这个依赖, 这个过程 就会⽐较⿇烦, 我们需要知道每个库都依赖哪些库, 以及这些依赖之间的版本是如何关联的.常⻅的Web服务器有: Apache,Nginx, IIS, Tomcat, Jboss等。
2024-11-15 23:29:44
935
原创 前端:HTML/CSS/JavaScript基础知识
CSS(Cascading Style Sheet),层叠样式表, 用于控制页面的样式.CSS 能够对网页中元素位置的排版进行像素级精确控制, 实现美化页面的效果. 能够做到页面的样式和结构分离.
2024-11-13 21:45:53
932
原创 Java:JVM
一个Java写的程序跑起来,就得到了一个Java进程 = JVM + 上面运行的字节码指令;进程:操作系统资源分配的基本单位;
2024-11-11 17:29:19
1051
原创 Java:HTTP/HTTPS
是一种应用应用层协议;文本=>字符串 超文本:可以传输文本,图片,语言等等其他的各种数据...1.使用浏览器打开网页;2.打开手机APP;3.后端程序,都是"分布式/微服务"体系结构;可以认为是HTTP的升级版,和HTTP的差别在于引入了一层;除了安全性之外,HTTP和HTTPS就是完全一样的;HTTP协议是一种经典的式的模型:客户端发一个请求,服务器返回一个响应;(一一对应)
2024-11-10 18:04:16
1099
原创 Java:网络原理-TCP/IP
比如开发一个外卖软件,展示"商家列表"此处就需要先确定传递的信息是啥.a.请求:用户id;用户所处的位置b.响应:商家列表,包含多个商家,包含商家的名字,距离,图片,评分...
2024-11-07 23:39:09
1195
原创 Java:网络编程套接字(socket)
此处的连接是"抽象"的连接:通信双方如果保存了通信对端的信息,就相当于是"有连接";如果不保存对端的信息,就是"无连接";此处谈到的可靠,不是100%到达对方,而是"尽可能";网络环境非常复杂,存在很多不确定因素.内置了一些机制能保证可靠传输:(1)感知对方是不是收到了数据;(2)重传机制,在对方没收到的时候进行重试;则没有可靠性机制,完全不管发出去的数据是否能顺利到达对方;是面向字节流的,TCP的传输过程就和文件流/水流是一样的特点;
2024-11-02 00:34:51
660
原创 Java:网络初识
把几个电脑连在一起,就构成了,电脑和电脑间通过来连接.调制解调器(猫):是用来实现不同种类的信号转换,在宽带普及之前,上网是通过"电话线"进行的,猫的作用就是把电话中的模拟信号转换为网络的"数字信号".路由器上面的口比较有限:就引入了来解决口不够的问题,交换机就相当于对路由器的端口进行拓展.:通过路由器再将多个路由器连接在一起的结构.单机->局域网->广域网->移动互联网。
2024-10-31 18:54:35
699
原创 JAVA:文件IO操作
此处谈到的文件本身有多种含义.狭义的文件:特指硬盘上的文件(以及保存文件的目录).,在操作系统中,都会被视为是在一个电脑上,有很多文件都是需要依靠操作系统,进行组织管理的.这一串目录结构,就描述了文件所在的位置,构成了完整的路径中,就约定使用分隔符,分隔目录和目录:绝大部分系统使用来作为目录分隔符,只有windows既能使用"/"也能使用"\"."/"在编程的时候好处理,"\"在字符串里,必须通过转义字符"\\"来表示;
2024-10-23 13:55:48
494
原创 Java 多线程进阶:常见的锁策略/synchronized原理/CAS/JUC(java.util.concurrent)的常见类/线程安全的集合类
锁:非常广义的话题;synchronized:只是市面上五花八门的锁的其中一种典型的实现,Java内置的推荐使用的锁;
2024-10-16 23:44:32
1049
原创 多线程代码案例:单例模式/阻塞队列/线程池/定时器
单例模式是一种设计模式;类似于棋谱,有固定套路,针对一些特定场景可以给出一些比较好的解决方案;只要按照设计模式来写代码,就可以保证代码不会太差,保证了代码的下限;
2024-10-15 22:39:04
1184
原创 顺序表和链表
int* data;} vector;区分程序内部信息和内存内部信息:我们应通过程序内部信息来操控内存内部信息;int data;}Node;
2024-09-18 23:25:39
241
原创 java多线程笔记(超详细):Thread类\进程状态\线程安全\加锁\wait\notify
为什么要进行并发编程:CPU多核心通过多进程可以实现并发编程,但是进程太重量了,因此引入了多线程.线程是轻量级的进程,创建和销毁的开销更小,进程是包含线程的,同一进程的若干线程公用同一份系统资源(内存,硬盘等).
2024-09-13 16:07:48
433
原创 XDOJ396.图灵机模拟程序
2)最后一行为一个长度不超过 100 的字符串,表示图灵机输入 该字符串由若干‘#’,两个‘*’和若干‘0’,‘1’字符构成,‘#’表示纸 带上的空白,‘*’表示输入分界符,‘0’和‘1’表示有效输入,“输入符号”和“输出符号”各是一个字符,输入和输出符号有‘*’, ‘0’,‘1’三种,其中‘*’表示分界符,两个‘*’之内的部分是有效 输入/输出。纸带其余部分填充‘#’表示空白 “纸带移动方向”也是一个字符,有三种可能:‘L’表示左移,‘R’表 示右移,‘N’表示不动。接下来是 n+1 行。
2024-01-08 15:48:10
653
原创 XDOJ380.分宝物
sA代表寻宝者A所获物品价值总和,sB代表寻。提示,n=1,宝藏价值分别为2, 3, 5, 7, 11,二者之差绝对值,最小可以为0,所以输出为0。第n个质数,第一个质数为2,第二个质数为3,第三个为5,n的数值由键盘输入,0 < n < 20。差距最小,即两人所获物品价值总和之差的绝对值|sA − sB|最小。两个寻宝者找到一个宝藏,里面包含5件物品,每件物品的价值分别是。宝者B所获物品价值总和,请问怎么分配才能使得两人所获物品价值总和。
2024-01-08 14:13:34
555
原创 XDOJ379.求解星期
英文是Monday, Tuesday, Wendnesday, Thursday,Friday, Saturday和Sunday。日期,比如2020年11月5日为2020 11 5,之间以空格隔开;输入是对应英文单词,已知2021年11月14日为星期天,输入之前的任意一个年份的时间,是星期4,为Thursday,首字母大写,其余小写。提示,星期一到星期天对应。说明:输入是三个整数,第一个表示年份,第二个表示月份,第三个表示。
2024-01-08 13:11:09
519
原创 XDOJ247.日期计算
输入包含两个整数y和d,y表示年份,年份在1900到2025之间(包含1900和2025)。给定一个年份y和一个整数d,问这一年的第d天是几月几日?在一行输出两个整数,分别表示答案的月份和日期,以空格分隔。1) 年份是4的整数倍,而且不是100的整数倍;d表示这一年的第几天,d在1至365之间。2) 年份是400的整数倍。
2024-01-08 11:45:00
696
原创 XDOJ246.单词统计
输入字符串string[N](N≤100),各个单词以空格隔开,单词长度小于等于8,输入单词word[M](M≤8),在string中查找出相同的单词并统计该单词出现的次数信息,单词不区分大小写,主函数输入字符串和待统计单词,编写函数count()实现统计和信息输出。输入一行字符以空格隔开各个单词,输入要统计的单词。输出单词和出现次数的信息,数据之间空一格空格。输出单词及其出现的次数信息,数据之间空一格。
2024-01-08 11:30:04
419
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人