- 博客(23)
- 收藏
- 关注
原创 SpringBoot中接受请求参数的注解 @RequestParam @PathVariable @PathVariable等等
这些参数注解可以用于控制器的处理方法中,用于接收和处理请求中的不同类型的数据。你可以根据请求的特点和需求选择合适的参数注解,进行参数的绑定和处理。需要注意的是,参数注解一般用于处理 HTTP 请求,对于其他类型的方法、非 Web 环境等场景,可能不适用或需要额外的处理。:用于将请求中的 Cookie 值绑定到方法的参数上。:用于将请求中的参数绑定到方法的参数上。:用于将 URL 中的路径参数绑定到方法的参数上。:用于将请求参数绑定到方法参数上,作为对象的属性。:用于将多部分请求中的数据绑定到方法的参数上。
2023-08-18 09:17:32 445
原创 软件设计原则
换句话说,子类继承父类时,除添加新的方法完成新增功能外,尽量不要重写父类的方法。是指:当前对象本身、当前对象的成员对象、当前对象所创建的对象、当前对象的方法参数等,这些对象同当前对象存在关联、聚合或组合关系,可以直接访问这些对象的方法。其目的是降低类之间的耦合度,提高模块的相对独立性。如果通过重写父类的方法来完成新的功能,这样写起来虽然简单,但是整个继承体系的可复用性会比较差,特别是运用多态比较频繁时,程序运行出错的概率会非常大。父类的实现的任何改变都会导致子类的实现发生变化,这不利于类的扩展与维护。
2022-09-14 14:40:31 106 1
原创 设计模式概述
的、经过分类编目的、代码设计经验的总结。也就是说,它是解决特定问题的一系列套路,是前辈们的代码设计经验的总结,具有一定的普遍性,可以反复使用。设计模式的本质是面向对象设计原则的实际运用,是对类的封装性、继承性和多态性以及类的关联关系和组合关系的充分理解。(四人组)书中提供了模板方法、策略、命令、职责链、状态、观察者、中介者、迭代器、访。使设计的代码可重用性高、可读性强、可靠性高、灵活性好、可维护性强。供了单例、原型、工厂方法、抽象工厂、建造者等。桥接、装饰、外观、享元、组合等。问者、备忘录、解释器等。
2022-09-13 21:02:32 113
原创 算法的时间复杂度和空间复杂度
事后分析估算方法:就是用程序执行完的时间减去程序开始的时间,一般不用这个方法事前分析估算方法:一个高级语言编写的程序程序在计算机上运行所消耗的时间取决于下列因素:1.算法采用的策略和方案;2.编译产生的代码质量;3.问题的输入规模(所谓的问题输入规模就是输入量的多少);4.机器执行指令的速度;由此可见,抛开这些与计算机硬件、软件有关的因素,一个程序的运行时间依赖于算法的好坏和问题的输入规模。
2022-09-13 20:55:14 177
原创 数据结构和算法概述
此时,数据元素之间并不能反映元素间的逻辑关系,因此在链式存储结构中引进了一个指针存放数据元素的地址,这样通过地址就可以找到相关联数据元素的位置。算法是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法解决问题的策略机制。把数据元素放到地址连续的存储单元里面,其数据间的逻辑关系和物理关系是一致的 ,比如我们常用的数组就是顺序存储结构。逻辑结构是从具体问题中抽象出来的模型,是抽象意义上的结构,按照对象中数据元素之间的相互。:树形结构中的数据元素之间存在一对多的层次关系。
2022-09-13 20:33:01 92
原创 共享模型之无锁——CAS
会让线程在没有获得锁的时候,发生上下文切换,进入阻塞。打个比喻线程就好像高速跑道上的赛车,高速运行时,速度超快,一旦发生上下文切换,就好比赛车要减速、熄火,等被唤醒又得重新打火、启动、加速... 恢复到高速运行,代价比较大。在这里就好比高速跑道,没有额外的跑道,线程想高速运行也无从谈起,虽然不会进入阻塞,但由于没有分到时间片,仍然会进入可运行状态,还是会导致上下文切换。它可以用来修饰成员变量和静态成员变量,他可以避免线程从自己的工作缓存中查找变量的值,必须到主存中获取它的值,线程操作 volatile。..
2022-08-12 16:30:35 122
原创 Java 内存模型
它可以用来修饰成员变量和静态成员变量,他可以避免线程从自己的工作缓存中查找变量的值,必须到主存中获取它的值,线程操作 volatile。寄存器、缓存、硬件内存、CPU 指令优化等。,它定义了主存、工作内存抽象概念,底层对应着。volatile(易变关键字)解决可见性。保证指令不会受到线程上下文切换的影响。volatile解决指令重排问题。修饰的变量,可以禁用指令重排。变量都是直接操作主存。...
2022-08-12 14:51:59 141
原创 lock实现——ReentrantLock
解决哲学家就餐问题 synchronized无法解决,是因为它是无限制的等待,而tryLock可以有时限的等待,没有获取到锁就不等待。可重入是指同一个线程如果首次获得了这把锁,那么因为它是这把锁的拥有者,因此有权利再次获取这把锁。支持多间休息室,有专门等烟的休息室、专门等早餐的休息室、唤醒时也是按休息室来唤醒。尝试获取锁,如果不成功,它就不会等待下去,也可以设置等待时间。如果是不可重入锁,那么第二次获得锁时,自己也会被锁挡住。强大之处在于,它是支持多个条件变量的,这就好比。执行后,会释放锁,进入。...
2022-08-12 14:11:34 110
原创 Mysql 锁
锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(CPU、RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。MySQL中的锁,按照锁的粒度分,分为以下三类:全局锁:锁定数据库中的所有表。表级锁:每次操作锁住整张表。行级锁:每次操作锁住对应的行数据。...
2022-08-10 21:11:20 217
原创 视图/存储过程/触发器
视图不仅可以简化用户对数据的理解,也可以简化他们的操作。那些被经常使用的查询可以被定义为视图,从而使得用户不必为以后的操作每次指定全部的条件。语句的集合,调用存储过程可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。)是一种虚拟存在的表。视图中的数据并不在数据库中实际存在,行和列数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的。所以我们在创建视图的时候,主要的工作就落在创建这条SQL。存储函数是有返回值的存储过程,存储函数的参数只能是。.
2022-08-10 19:32:24 238
原创 SQL优化
如果我们需要一次性往数据库表中插入多条记录,可以从以下三个方面进行优化。优化方案一批量插入数据tb_testvalues(1,'Tom'),(2,'Cat'),(3,'Jerry');优化方案二手动控制事务tb_testvalues(1,'Tom'),(2,'Cat'),(3,'Jerry');tb_test。...
2022-08-10 13:04:59 59
原创 Mysql 索引的分类
如果索引了多列(联合索引),要遵守最左前缀法则。尽量使用联合索引,减少单列索引,查询时,联合索引很多时候可以覆盖索引,节省存储空间, 避免回表,提高查询效率。此时可以只将字符串的一部分前缀,建立索引,这样可以大大节约索引空间,从而提高索引效率。6.要控制索引的数量,索引并不是多多益善,索引越多,维护索引结构的代价也就越大,会影响增 删改的效率。3.尽量选择区分度高的列作为索引,尽量建立唯一索引,区分度越高,使用索引的效率越高。前的条件中的列有索引,而后面的列中没有索引,那么涉及的索引都不会被用到。...
2022-08-09 21:13:07 289
原创 Mysql 索引概述 索引结构
索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据, 这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。...
2022-08-08 21:40:35 347
原创 数据库事务
是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作。默认MySQL的事务是自动提交的,也就是说,当执行完一条DML语句时,MySQL会立即隐。上述的这种方式,我们是修改了事务的自动提交行为, 把默认的自动提交修改为了手动提。:一个事务按照条件查询数据时,没有对应的数据行,但是在插入数据时,又发现这行数据。):事务是不可分割的最小操作单元,要么全部成功,要么全部失败。):事务一旦提交或回滚,它对数据库中的数据的改变就是永久的。...
2022-08-08 16:39:25 71
原创 SQL 内连接,外连接,自连接,联合查询,子查询
自连接查询,顾名思义,就是自己连接自己,也就是把一张表连接查询多次。外连接分为两种,分别是:左外连接 和 右外连接。对于联合查询的多张表的列数必须保持一致,字段类型也需要保持一致。查询,就是把多次查询的结果合并起来,形成一个新的查询结果集。而对于自连接查询,可以是内连接查询,也可以是外连接查询。项目开发中一般用左外连接,右外连接也可以转换成左外连接。标量子查询(子查询结果为单个值)语句,称为嵌套查询,又称子查询。的所有数据,当然也包含表。的所有数据,当然也包含表。子查询外部的语句可以是。...
2022-08-08 15:27:16 300
原创 Java多线程
进程:是正在运行的程序,是系统进行资源分配和调度的独立单位,每一个进程都有它自己 的内存空间和系统资源。线程:是进程中的单个顺序控制流,是一条执行路径单线程:一个进程如果只有一个执行路径,则称为单线程程序多线程:一个进程如果有多条执行路径,则称为多线程程序方法介绍void run() 在线程开启后,此方法将被调用,里面封装的是被线程执行的代码void start()启动线程,java虚拟机会执行run()方法run和start的区别直接调用run方法,相当于普通方法的调用调用start方法,启动线程,让ja
2022-06-04 12:51:35 117
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人