- 博客(26)
- 收藏
- 关注
原创 java栈&队列1
原理:通过两个栈实现, stack1 保存正常进出栈元素,提供 push 、 pop 、 top 方法功能;stack2 保存当前 stack1 中的最小值,确保其栈顶元素始终是最小值。- 代码示例。
2025-04-16 17:42:21
386
原创 java链表&栈
简单方法:遍历链表,用 List 存储已访问节点,若当前节点已在 List 中,则链表有环,时间复杂度为 O(N²),空间复杂度为 O(N)。- 双指针法:定义快慢指针,快指针每次走两步,慢指针每次走一步。若链表无环,快指针会先到达链表末尾;若有环,快指针会追上慢指针,二者相遇,时间复杂度为 O(N),空间复杂度为 O(1)。
2025-04-16 10:48:23
455
原创 java链表2
通过跟踪 next 指针能再次到达某个节点时,链表存在环,评测系统用整数 pos 表示链尾连接到链表中的位置(索引从 0 开始 ), pos 不作为参数传递,仅用于标识实际情况,且不允许修改链表。若链表无环,两指针不会重合;先分别求出两个链表的长度,创建两个引用指向头结点,让较长链表的引用先走,走的步数为两链表长度差值,然后两个引用同时走,每次走一步,若相遇则链表相交。找到链表中间节点,将后半部分链表反转,比较前半部分和反转后的后半部分是否相同,忽略长度比较,只要其中一个子链表结束,比较就结束。
2025-04-16 10:40:53
325
原创 java网络编程
DatagramPacket(byte[] buf, int offset, int length, InetAddress address, int port) :构造一个用于发送数据报的对象,数据从 buf 数组的 offset 位置开始,长度为 length ,发送到指定 address (IP地址)和 port (端口号)。- 客户端:构造方法需填写服务器的IP和端口,创建 socket 对象时通常无需指定端口号,操作系统会自动分配空闲端口,指定固定端口可能与其他程序冲突。
2025-04-16 08:06:27
626
原创 CRUD3
语法: SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT num OFFSET start;- 语法: UPDATE [LOW_PRIORITY] [IGNORE] table_reference SET assignment [, assignment ...] [WHERE where_condition] [ORDER BY ...] [LIMIT row_count]
2025-04-15 19:02:33
968
原创 CRUD2
值的顺序与列的顺序要保持一致。- MySQL服务启动时会读取配置文件(如 my.ini )中的配置 ,可以在配置文件中设置字符集等参数,如 default - character - set=utf8mb4。- <=> :等于,对NULL比较安全( NULL <=> NULL 结果为TRUE )。- = :等于,对NULL比较不安全( NULL = NULL 结果为NULL )。- OR :任意一个条件为TRUE,结果就为TRUE,类似于Java中的 ||。
2025-04-15 18:54:56
661
原创 数据库 表操作
1. 创建数据库-- 创建数据库,如果不存在则创建,可指定字符编码和排序规则create database [if not exists] 数据库名 [字符编码集] [排序规则];1. 修改数据库-- 修改数据库的字符编码集和排序规则alter database 数据库名 [字符编码集] [排序规则];1. 删除数据库-- 删除数据库,如果存在则删除drop database if exists 数据库名;
2025-04-14 14:28:51
680
原创 数据库基础
1. SQL 定义:SQL(Structured Query Language )即结构化查询语言,用于存取数据,查询、更新和管理关系数据库。2. SQL 分类- DDL(数据定义语言):维护存储数据结构,如 create (创建)、 drop (删除)、 alter (修改)。- DML(数据操纵语言):对数据进行操作,像 insert (插入)、 delete (删除)、 update (更新)、 select (查询)。
2025-04-14 10:19:04
723
原创 测试 认识bug
1. 软件(开发)生命周期:包括需求分析、计划、设计、编码、测试、运行维护阶段。需求分析是起始点,明确用户需求,后续阶段依此展开。例如开发电商软件,需求分析阶段确定商品展示、购物车、支付等功能需求,后续阶段围绕实现这些需求推进。2. 测试模型- V模型:以用户需求为起点,需求分析与系统、概要设计、详细设计、编码逐步推进,对应验收测试、系统测试、集成测试、单元测试。明确标注测试过程,但缺点是将测试置于编码之后,发现问题修改成本高。
2025-04-14 09:52:38
263
原创 认识测试1
测开重心在可测试性和通用测试基础框架,编写单元及自动化测试框架,关注质量提升和测试覆盖率;测试工程师把用户放首位,组织测试实践、分析总结、构建自动化测试,二者都统称测试人员,工作重点是业务测试。巨厂依面试结果定薪。- 工作环境:多数公司中,测试和开发人员办公环境、设备基本相同,如笔记本和显示器,不同区域企业配备有差异,像海淀区企业多用ThinkPad,朝阳区企业及巨厂常用Mac。- 探索性思维:测试工程师在测试中结合经验、知识、直觉,对被测系统进行错误猜测和逻辑推理,探索性思维质量取决于经验。
2025-04-14 09:46:56
527
原创 计算机是如何工作的
指令系统:机器语言是CPU能直接识别的二进制指令,汇编语言用简单单词表示机器指令,高级语言(如C、Java )更具描述性,经编译或解释转化为机器语言。- 指令表操作:指令表中像 LOAD_A (从RAM指定地址将数据读到寄存器 ) 、 ADD (计算两个寄存器数值和并存入第二个寄存器 )等操作,是汇编语言或机器语言层面操作示意,不是高级编程语言代码。- 机器语言指令示例:如二进制指令 00011110 等,是CPU可直接执行的机器语言形式,操作码和操作数组成指令,不同二进制组合对应不同操作。
2025-04-14 09:37:45
607
原创 测试概念篇
什么是需求:需求分为用户需求和软件需求。用户需求是用户表达的原始诉求,如“我想谈恋爱”,但未经合理评估,不能直接作为开发和测试依据。软件需求是经过评估后,可实现的具体功能要求,像社交软件中认识朋友、找喜欢的人等功能。还以注册功能为例,介绍了软件需求规格说明书包含的用户需求(平台支持邮箱注册 )、软件需求(注册账号的功能概述、用户角色、前置条件、输入项、处理流程、输出、后置条件等 )。
2025-04-13 17:02:11
467
原创 java初识网络
分层后每个协议只负责单一功能,比如应用层负责处理应用相关逻辑,传输层负责端到端的数据传输(如TCP保证可靠传输、UDP面向无连接快速传输 ),网络层负责路径规划(IP协议 ),数据链路层负责相邻节点通信,物理层负责信号传输。- 五元组:进行一次通信需要源IP、源端口、目的IP、目的端口、协议类型这五个关键信息,类似于现实中寄快递需要发件人地址(源IP)、发件人电话(源端口)、收件人地址(目的IP)、收件人电话(目的端口)以及选择的快递公司(协议类型)。- 帧(frame) :数据链路层的协议数据单元。
2025-04-13 15:40:15
545
原创 java文件
通过 File 类的方法可以获取文件或目录的相关信息,如 list() 方法返回目录下所有文件名, listFiles() 返回目录下所有文件的 File 对象。若要返回多个值,可将多个值封装到一个类中(创建一个包含多个成员变量的类,将需要返回的值作为成员变量 ),或者使用输出型参数(如方法参数为数组,在方法内部修改数组内容 )。- 解释:在Java中交换两个变量的值,通常借助一个临时变量。先将一个变量的值赋给临时变量,再将另一个变量的值赋给第一个变量,最后将临时变量的值赋给第二个变量。
2025-04-13 09:01:09
425
原创 java多线程8
通过构造函数指定需要等待的线程数量,每个完成任务的线程调用 countDown() 方法将计数器减1 ,等待的线程通过 await() 方法阻塞,直到计数器为0。System.out.println(Thread.currentThread().getName() + " 进入停车场");System.out.println(Thread.currentThread().getName() + " 离开停车场");- JUC(java.util.concurrent) 包:提供了丰富的并发工具类。
2025-04-12 18:20:22
476
原创 java多线程7
原理:CAS 操作包含三个操作数 —— 内存地址(V)、预期原值(A)和新值(B)。如果内存地址 V 处的值等于预期原值 A,则将该地址处的值更新为新值 B,否则不做操作。它是通过 CPU 指令实现原子性操作,操作系统封装指令形成系统 API,Java 又对 API 进行封装。伪代码如下:- 应用场景- 实现原子类:比如 AtomicInteger 类,通过 CAS 实现原子的自增、自减等操作。
2025-04-12 16:48:32
521
原创 java多线程6
构造参数: corePoolSize (核心线程数)、 maximumPoolSize (最大线程数)、 keepAliveTime (线程空闲时间)、 unit (时间单位)、 workQueue (任务队列)、 threadFactory (线程工厂)、 handler (拒绝策略)。两个线程交叉获取锁(线程1持有锁A,等待锁B,线程2持有锁B,等待锁A );支持并发(两者可同时执行 );- 示例说明:以吃饺子场景为例,生产者包(生产)饺子,消费者吃(消费)饺子,饺子盆(容器)起到缓冲作用。
2025-04-12 13:08:06
656
原创 java初阶多线程5
概念: BlockingQueue 是Java并发包中的一个接口,它支持阻塞的插入和移除操作。当队列满时,插入操作会阻塞等待空间可用;当队列空时,移除操作会阻塞等待元素可用。- 优点- 减少资源竞争,提升效率:通过阻塞机制,避免了线程不断轮询队列状态,减少了CPU资源浪费,提高了整体效率。- 降低耦合:生产者和消费者之间通过队列进行通信,解耦了两者之间的直接依赖关系。- 错峰平谷:可以在生产和消费速度不均衡时,缓冲数据,平滑流量。- 缺点。
2025-04-12 12:37:16
900
原创 java初阶多线程5
概念: BlockingQueue 是Java并发包中的一个接口,它支持阻塞的插入和移除操作。当队列满时,插入操作会阻塞等待空间可用;当队列空时,移除操作会阻塞等待元素可用。- 优点- 减少资源竞争,提升效率:通过阻塞机制,避免了线程不断轮询队列状态,减少了CPU资源浪费,提高了整体效率。- 降低耦合:生产者和消费者之间通过队列进行通信,解耦了两者之间的直接依赖关系。- 错峰平谷:可以在生产和消费速度不均衡时,缓冲数据,平滑流量。- 缺点。
2025-04-12 12:34:24
531
原创 java初阶多线程4
基本用法和特点: synchronized 用于实现线程同步,保证同一时刻只有一个线程能访问被同步的代码块或方法。它可修饰方法和代码块,如 synchronized (锁对象) { } ,锁对象可以是任意对象。- 可重入性:指的是同一个线程在持有锁的情况下,再次进入被该锁同步的代码块或方法是允许的。例如,一个递归方法被 synchronized 修饰,在递归调用过程中,线程不需要重新获取锁。- 死锁问题- 死锁场景举例- 一个线程连续两次尝试获取同一把锁,会导致死锁。
2025-04-12 12:25:54
960
原创 java初阶多线程3
问题描述:N个哲学家围绕圆桌就餐,每个哲学家需要拿起左右两根筷子才能吃面条。假设某一时刻,所有哲学家都同时拿起左手筷子,都在等待右手筷子(在别人手中 ),且都不会放弃左手筷子,就会陷入无限等待,造成死锁。这是N个线程争用M把锁形成死锁的典型场景。- 死锁的危害:线程一旦出现死锁,就会“卡死”,无法继续执行后续逻辑,导致程序出现严重bug。虽然死锁发生概率可能较低,但一旦发生在高访问量系统中(如每天有大量访问的服务器 ),即使概率为万分之一,也会影响众多用户,所以必须重视。- 死锁的四个必要条件。
2025-04-11 16:03:49
778
原创 java初阶多线程2
String- 不可变性:String是不可变对象,创建后自身不能修改。设计为不可变的原因之一是天然的线程安全 ,且不可变对象方便存放到常量池中,其hashCode是固定值,便于和哈希表结合作为hash的key。- 示例: new String 创建的对象本身不能修改。- StringBuffer:本身可被修改,但通过加锁等机制解决线程安全问题。- StringBuilder:线程不安全,适用于单线程环境下的字符串操作。
2025-04-11 15:48:41
958
原创 java初阶多线程1
讲解Java多线程知识,从基础创建方式、常用属性方法,到线程状态转换,再深入到线程安全核心问题。理解这些内容,有助于开发者在Java多线程编程时,正确创建和管理线程,合理处理线程间协作与同步,规避线程安全风险,编写出高效、稳定的多线程程序。
2025-04-11 12:56:44
345
原创 C语言分支和循环知识点
总结:分支语句用于根据不同条件选择执行不同的代码路径,循环语句用于重复执行一段代码。- 条件判断方法:通过比较表达式的结果来决定执行哪个分支。printf("周一\n");printf("周二\n");printf("其他\n");- 作用:根据表达式的值选择执行不同的分支。- 作用:根据不同的条件执行不同的代码块。printf("未成年\n");- 特点:先执行一次循环体,再判断条件。printf("成年\n");- 注意:先判断条件再执行循环体。- 用途:当条件为真时执行循环。
2024-10-20 20:55:02
397
1
原创 成长计划之怎样学习编程
例如,对于Java中的数据类型(int、double、String等)、控制语句(if - else、for循环、while循环)等,通过编写简单的小程序来加深理解。在项目开发过程中,你会遇到需求分析、设计、编码、测试等软件工程的各个环节,这样能更好地理解软件工程的概念和流程。例如,讨论软件设计模式中的工厂模式、单例模式等概念,不同的人可能有不同的理解和应用场景,通过交流能拓宽自己的思维。有赞提供了一系列的模板和功能,商家无需复杂的编程就可以快速建立自己的电商平台,在中小电商企业中有较高的知名度。
2024-10-06 23:34:15
1217
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人