- 博客(111)
- 收藏
- 关注

原创 JAVASE目录
JDK安装详情JAVA初窥-DAY01JAVA第一个程序“HELLO,WORLD!数据类型变量的赋值与输出变量命名”JAVA初窥-DAY02字符串类型转义字符拼接、运算常量String转int逻辑运算短路求值位运算符三目运算符JAVA初窥-DAY03注释分支结构:if语句、switch语句循环语句:for循环、while语句、do while语句break语句、continue语句Scanner输入随机数、开根号...
2021-04-06 02:19:48
2062
10
原创 JavaEE初学目录
JavaEE初学01SpringSpring FrameworkCore ContainerIOCDISpring 容器的使用注入的流程注册/注入对象到容器中JavaEE初学02SpringSpring容器的使用FactoryBeanFactoryBean的使用方法依赖注入属性注入构造方法注入Bean注入注入指定的BeanBean的作用域singletonprototyperequestsessionBean的生命周期JavaEE初学03Spring Boot
2024-11-26 16:21:42
341
原创 JavaEE初学07
JavaEE初学07MybatisORMMybatis一对一结果映射一对多结果映射Mybatis动态sqlif标签trim标签where标签set标签foreach标签补充在这里插入图片描述右击运行即可MybatisMybatis是一款优秀的持久层框架,他支持自定义SQL、存储过程以及高级映射。Mybatis几乎免除了所有的JDBC代码以
2024-11-20 11:47:01
1170
1
原创 JavaEE初学06
JDK要求被代理类必须实现接口,之后通过InvocationHandle+Proxy在运行时动态的在内存中生成了代理类对象,该代理对象是通过实现同样接口实现(类似静态代理接口实现的方式),只是该代理类是在运行期时,动态的织入统一的业务逻辑字节码来完成。静态代理和动态代理相同点:原始类不进行任何修改(没有代码耦合),对原始类进行方法的增强,使用代理类来对原始类进行增强,原始类也称为被代理类。在运行期动态的生成基于原始类(被代理类)的代理类,生成的方式和静态代理设计的方式一样,有继承和接口两种方式。
2024-11-20 11:46:54
725
原创 JavaEE初学05
SpringBoot中使用SpringMVC非常方便,SpringBoot中提供了大量的MVC功能,并且需要自定义某些功能也很方便,只需要根据接口重写方法即可。如:在配置类里通过重写configurePathMatch添加访问路径前缀@Override拦截器再如:在配置里通过重写 添加一个拦截器@Overrideregistry.addInterceptor(new LoginInterceptor()) //该拦截器拦截后执行的逻辑。
2024-11-20 11:46:47
853
原创 JavaEE初学04
Model是处理数据逻辑部分,通常用于在数据库中存取数据,View是处理数据显示部分,通过模型数据来创建视图,Controller是处理用户交互部分,通常从视图读取数据,控制用户输入,并向模型发送数据。RequestMapping使用在方法上时,指定方法上的路径,还可以指定请求方法,不指定请求方法时,则默认支持所有请求方法。(双向绑定,定义Vue变量,绑定id为app的标签)h2标签中的title为引用变量的值,该值在VUE变量里进行定义,变量名为title,故title引用的就是变量中定义的"首页"。
2024-11-20 11:46:41
629
原创 JavaEE初学03
JavaEE初学03Spring BootSpring Boot 项目的搭建官网创建IDEA 创建Maven 创建Spring BootSpringFramework拥有大量的XML配置以及复杂的依赖管理。Boot所实现的功能就包括不再编写XML文件以及在一些场景中不需要编写繁琐的import语句。作用:基于”约定优于配置“的思想,省略了大量的配置。SpringBoot 不是对Spring功能上的增强,而是提供了一种快速使用Spring的方式Spring Boot 项目的搭建官网创建Sprin
2024-11-20 11:46:33
516
原创 JavaEE初学02
JavaEE初学02SpringSpring容器的使用依赖注入属性注入构造方法注入注入指定的BeanBean的作用域singletonprototyperequestsessionBean的生命周期补充SpringSpring容器的使用依赖注入注入:就相当于把某个对象通过依赖注入变成另一个对象的属性。属性注入在当前类被Spring扫描,可以在属性上添加@Autowired注解,会将容器中的Bean对象装配进来(也就是两个Bean对象建立关系,并不会重新注册对象)。如:@Repositoryp
2022-04-06 21:13:13
756
原创 JavaEE初学01
JavaEE初学01SpringSpring FrameworkSpring对于Java编程来说,使用Spring能完成的更加快速,更容易并且更安全。Spring专注于速度,便捷与开发效率,也正是因为如此,让Spring成为了全世界最流行的Java框架。从配置到安全,web应用到大数据,不管你的应用架构需要用到什么,Spring都有合适的开发框架来帮你搭建项目。Spring是基于模块化设计的,所以你可以从最小集开始,只使用你需要的。一般说Spring框架,指的是Spring Framework框架,
2022-04-03 23:07:20
682
原创 WEB入门浅谈22
WEB入门浅谈22JVMJVM的内存区域划分垃圾回收识别垃圾的手段垃圾回收算法标记清除复制算法标记整理分代回收垃圾回收器类加载初始化流程双亲委派模型补充JVMJVM全称 Java Virtual Machine。就是java的虚拟机,虚拟机就是软件模拟出来的 “计算机” ,是一个运行平台。虚拟机诞生的意义就是为了跨平台。最初,操作系统种类很多,CPU种类也很多,C/C++就遇到一个致命难题,写的代码换平台后就很难运行通过。于是后面的语言如 java python go等都带有虚拟机(但是现在基本都不用
2022-01-21 17:17:31
754
原创 WEB入门浅谈21
WEB入门浅谈21多线程synchronized工作原理无锁偏向锁轻量级锁重量级锁synchronized锁优化锁消除锁的粗化CallableJUC的其它组件ReentrantLockSemaphoreCountDownLatch补充多线程synchronized工作原理JVM将synchronized锁分为了 无锁、偏向锁、轻量级锁、重量级锁 状态,会根据具体情况,依次升级。这整个锁策略自动切换的过程也就是锁升级,就叫做 锁膨胀 都是由synchronized内部完成的。目的就是为了在不同场景下使
2022-01-18 16:38:17
591
原创 WEB入门浅谈20
WEB入门浅谈20多线程锁策略乐/悲观锁读写锁重/轻量级锁(非)公平锁(不)可重入锁死锁CAS机制总结多线程锁策略乐/悲观锁乐观锁:出现锁竞争的概率较低(线程少,不太涉及锁竞争)悲观锁:出现锁竞争的概率较高(线程多,很可能涉及锁竞争)在操作系统中提供的锁接口,Mutex(互斥量,操作系统的锁),就是一个典型的悲观锁,认为竞争很大,一旦竞争,那么就有线程阻塞,进入等待,而什么时候被唤醒,就要看调度器的实现了在应用程序里面,还可以通过一些其它的方式实现锁(如:CAS),相当于仅仅一个 用户态的锁,
2022-01-17 18:08:39
3815
原创 WEB入门浅谈19
WEB入门浅谈19多线程阻塞定时器线程池补充多线程阻塞阻塞队列,先进先出阻塞:这个队列是线程安全的(内部进行了加锁处理)当队列满的时候,往里插入元素,就会阻塞,直到队列不满时,才会完成插入操作当队列为空的时候,往出取元素,也会阻塞,直到队列不为空时,才会完成取出操作阻塞队列可以帮我们完成 生产者消费者模型在Java标准库中,BlockingQueue 在标准库中就是阻塞队列的一个接口,而LinkedBlockingQueue实现了这个接口,用法如下:public class Demo01
2022-01-13 17:30:30
337
原创 WEB入门浅谈18
WEB入门浅谈18多线程线程的状态线程安全synchronized 锁volatile对象等待集单例模式饿汉模式懒汉模式补充多线程进程的调度 操作系统实际调度的基本单位是线程操作系统内核里为了管理所有的进程(线程),有一个链表。链表中存储了当前进程的pid以及当前线程的tid系统内核中有一个专门的等待队列和就绪队列当执行sleep时,就是让这个线程进如等待队列中,而等待完成后就进入到就绪队列中。线程只有在就绪队列里,才可能被执行。等待队列中可能会有多个线程,所以等待队列并不是一个先进先出的队列
2022-01-07 18:09:25
639
原创 WEB入门浅谈17
WEB入门浅谈17多线程多线程进程是为了实现并发编程的效果,但为了追求更高的效率就引进了线程创建一个进程和销毁一个进程,开销比较大(进程管理中存在一些系统分配的资源,申请和释放这些资源不是一个容易的事),因此就希望能够更高效,更轻量的完成并发编程。于是就通过线程来完成线程也被称为 轻量级进程每个线程就对应到一个 独立的执行流 ,在这个执行流里就可以完成一系列的指令。有多个线程,就对应的有多个执行流,就可以并发的完成多个系列的指令了一个进程包含了多个线程。一个进程从操作系统中申请了很多资源,进程统
2021-12-27 19:54:51
3220
原创 线程的中断
线程的中断中断线程执行完毕修改判定标记在catch中添加break补充中断线程要中断一个线程1、让线程的入口方法执行完毕2、使用Thread类提供的interrupt方法(如:把while中的判定标记改成基于Thread.currentThread().isInterrupted(),或者在catch里添加break,)执行完毕public class Demo05 { static boolean isQuit = true ; public static void main(
2021-12-27 16:26:41
346
原创 线程的创建
线程的创建创建线程继承Thread类实现Runnable接口匿名Thread类匿名Runnable接口使用lambda表达式补充创建线程继承Thread类实现Runnable接口通过匿名Thread类通过匿名Runnable接口使用lambda表达式继承Thread类创建一个类,继承自Thread重写Thread的run方法,在新的run中编写执行流创建子类实例调用子类的start方法class MyThread extends Thread{ @Override p
2021-12-25 17:54:53
1469
原创 如何用多线程提高代码效率
如何用多线程提高代码效率代码目的单线程代码多线程代码补充代码目的把两个long类型的数分别自增10E次单线程代码public class Demo01 { private static long count = 1_000_000_000; public static void serial(){ long begin = System.currentTimeMillis(); long a = 0; for (long i = 0;
2021-12-25 13:59:00
554
原创 复习重点整理
复习重点整理JavaSE数据结构WEBJavaSEjavac demo.java对文件进行编译java demo运行该Java文件大小写字母的转换:小写字母为[97-122]大写字母为[65-90],转换就+或-32三目运算符:1>2 ? 3 : 4 此处执行4逻辑结构:switch (x) { case 1: break; default; break;随机数:Random random = new Random();int randNum= random.next
2021-12-23 15:36:42
315
原创 音乐播放器项目测试
音乐播放器项目测试项目简介及测试内容需求分析测试设计注册登陆注册登陆上传音乐删除音乐批量删除音乐查询音乐添加音乐至喜欢列表查找在喜欢列表中的音乐移除喜欢列表中的音乐测试执行测试环境测试内容测试评估项目简介及测试内容音乐服务器:实现了登陆注册功能,登陆后可以查看并播放当前系统上所有的音乐,可以对音乐进行喜欢或删除操作,喜欢会把选择的音乐添加至当前用户的喜欢列表,删除只可以删除当前登录用户上传的音乐。音乐保存在云端服务器上,路径保存在数据库中,使用时可以进行读取。测试内容:本次测试只对项目功能进行测试,测
2021-11-15 19:54:58
2263
原创 软件测试04
软件测试04项目测试实战需求分析测试设计测试用例测试执行测试评估补充项目测试实战软件测试的流程:需求分析-测试计划-测试设计-编码(开发)-测试执行-测试评估(这里用一个压缩软件来作为参考)需求分析功能需求:压缩、解压缩文件类型:支持所有文件的压缩压缩文件个数:最多100个压缩大小:低于5G性能要求:压缩、解压缩不超过30分钟安全需求:带有病毒的文件不可压缩易用性需求:操作简单、方便界面需求:布局、排版美观兼容性需求:win7、8、10等从测试的角度来看,我们需要验证需求的合
2021-11-13 17:14:50
349
原创 软件测试03
软件测试03进阶测试的分类开发阶段单元测试补充进阶测试的分类按开发阶段分:单元测试、集成测试、系统测试、验收测试按测试实施组织:α、β、第三方按测试执行方式:静态测试、动态测试按是否查看代码:黑盒测试、白盒测试、灰盒测试按是否手工执行:手工、自动化按测试对象划分:性能测试、安全测试、兼容性测试、文档测试、易用性测试、业务测试、界面测试、安装测试按测试地域划分:本地化测试、国际化测试SDK:全称 SoftWare Development Kit ,一般是指软件工程师特定的软件包建立的开发
2021-11-12 18:04:36
724
原创 软件测试02
软件测试02测试用例设计测试用例等价类边界值因果图法场景法错误猜测法正交法补充测试用例验证需求的正确性和合理性分析需求,细化需求,从需求中分解出测试项,根据测试项找出功能,进行测试用例的编写设计测试用例等价类等价类就是把输入划分为若干个等价类,从每一个等价类中取出一个测试用例,如果这个测试用例可以通过,那么就说这个测试用例所代表的的等价类测试通过适用场景:测试用例无法穷举,无法一一测试有效等价类:符合程序规格说明的数据集合无效等价类:不符合软件需求规格说明的数据集合边界值针对输入和输出
2021-11-09 19:11:03
221
原创 软件测试01
测试小练01软件测试软件测试软件测试就是证明软件不存在错误的过程,软件测试就是为了证明程序能够正确运行。软件测试是测试软件是否满足客户的需求。
2021-11-04 21:35:16
525
原创 WEB入门浅谈16
WEB入门浅谈16操作系统进程补充操作系统现在大部分计算机,都遵守冯诺依曼体系结构(如图)存储器分为内存和外存CPU 进行算术运算和逻辑判断(核心设备) 它的核心功能就是执行一些 指令 ,CPU在设计生产时,就会提供一组类似 API 的东西,可以称之为指令,指令就是一组二进制数据,用来表示一些特定的含义 。而代码在编译好之后就得到了一些二进制的机器指令(CPU的指令也成为机器语言),而这些指令是保存在硬盘上的。CPU内部也提供了一些寄存器,也能存储数据,访问速度比内存要快很多,但是相对的空间小很多
2021-10-01 13:19:32
373
原创 WEB入门浅谈15
WEB入门浅谈15网络原理网络层网段划分路由选择数据链路层ARP协议应用层DNS协议补充网络原理网络层网络层主要负责:地址管理、路由选择主要协议:IP协议IP协议当前主要就两个版本:IPv4、IPv6网段划分把一个IP地址分为两部分网络号:局域网的身份标识主机号:用来区分一个局域网中不同的主机同一个局域网中,各个设备的网络号相同,主机号不同两个相邻的局域网,网络号不同过去曾提出把所有的IP地址分为5类A 0+7位网络号+24位主机号 0.0.0.0-127.255.255.255
2021-09-30 22:39:11
117
原创 WEB入门浅谈14
WEB入门浅谈14网络原理TCP/IP状态滑动窗口流量控制拥塞控制延迟应答捎带应答面向字节流TCP异常处理总结补充网络原理TCP/IP状态ESTABLISHED 连接建立成功,可以进行后续通信(类似打电话拨通状态)LISTEN 服务器进入的状态,服务器准备就绪,允许客户端随时来建立连接(类似手机开机,信号良好)CLOSE_WAIT 等待关闭状态,这个状态正常情况下存在时间较短,处在收到FIN时返回ACK到发送FIN的时间间隙中,一般情况下出现这个状态就表示代码出bug了,导致close没有及时
2021-09-29 21:17:09
158
原创 WEB入门浅谈13
WEB入门浅谈13网络原理OSI 七层模型TCP/IP端口号UDP协议TCP三次握手四次挥手实例分析补充网络原理两个主机一系列的约定就叫做协议,协议中约定的细节就表示传输的数据表达的意义,两个主机之间传输数据的本质就是光电信号,表示1/0这样的bit流由于任意两台主机之间都需要进行通信,所以所有主机都遵守同一个协议,彼此才能进行交流网络通信要规定的细节是非常多的,如果放在一起就会显得非常复杂,把不同的细节由不同的协议规定,于是就有了很多协议,又根据协议的功能类型,把这些协议分为 协议栈/协议族OS
2021-09-29 11:22:48
565
原创 傻傻程序员(不定时更新)
乌龙mysql日期mysql日期写了个博客系统后,本人突发奇想,想康康13月32日 25点61分61秒,于是就尝试直接在数据库中直接添加,可是datetime类型不允许添加错误的日期时间,因此我就去改了datetime这个数据类型,改为varchar,存了,存进去 还有点小激动,完事打开页面一看,傻了我套他猴子的,这是个啥玩意,我掐指一算,喵了个咪的,这是换算成时间戳给我加上去了,细细一想,代码中确实有换算成时间戳这段得了 不纠结了 换来换去再整成404了就尴尬了(哭笑) (记录一下时间 20
2021-09-15 23:01:19
178
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人