自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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链表1

/ 节点存储的值// 节点的下一个元素// 头节点。

2025-04-16 10:35:01 712

原创 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关注的人

提示
确定要删除当前文章?
取消 删除