自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 收藏
  • 关注

原创 synchronized(三)

当只有一个线程多次获取同一个锁时,JVM会将锁升级为偏向锁。核心逻辑是:线程第一次获取锁时,会在Mark Word中记录当前线程的ID(偏向线程ID),之后该线程再次获取锁时,无需进行CAS操作或内核态调用,直接通过判断Mark Word中的偏向线程ID是否为当前线程即可,几乎无性能开销。JDK 6对synchronized进行了优化,引入了“偏向锁”和“轻量级锁”,实现了“锁升级”的机制——锁会根据线程竞争的激烈程度,从无锁状态逐步升级为偏向锁、轻量级锁、重量级锁,避免了不必要的性能开销。

2025-12-20 16:08:03 722

原创 synchronized深度理解(二)

当多个线程需要修改同一个实例变量或静态变量时,必须通过synchronized保证修改的原子性和可见性。例如,多线程环境下的计数器、库存扣减、余额修改等场景。反例(线程不安全):正例(线程安全)::当对共享资源的操作包含多个步骤(复合操作),且需要保证这些步骤的“原子性”时,需用synchronized包裹整个复合操作。例如,“判断库存是否充足 → 扣减库存 → 记录订单”这一系列操作,必须作为一个原子操作执行,否则可能出现库存为负的情况。

2025-12-20 16:07:04 646

原创 synchronized深度理解(一)

synchronized是Java语言内置的关键字,用于实现多线程环境下的同步机制,核心作用是,从而避免多线程并发访问共享资源时出现的数据不一致问题(即线程安全问题)。它是一种“悲观锁”,默认假设多线程会同时竞争资源,因此在执行同步代码前会先获取锁,执行完毕后释放锁,以此实现对共享资源的互斥访问。

2025-12-20 16:05:15 302

原创 从synchronized到Condition:FooBar交替打印的进阶之路(1115.交替打印)

作为多线程初学者,FooBar问题的进阶解法让我打开了JUC并发编程的大门。的显式控制和Condition的精准唤醒,看似复杂,实则是对机制的优化和延伸。核心知识点回顾:1. 显式锁:ReentrantLock的lock()/unlock(),必须在finally释放;2. 条件队列:Condition的await()/signal(),实现精准线程通信;3. 健壮性:while循环防御虚假唤醒,保证执行顺序稳定;4. 核心逻辑:状态标记控制轮次,锁保证原子性和可见性。如果你也刚学完。

2025-12-17 17:41:00 753

原创 LeetCode 1114. 按序打印

专属锁对象的设计用而不是thisprivate:避免外部代码滥用锁;final:防止锁对象被意外替换;Object:轻量化,仅用其 “对象身份” 做锁。为什么用while而不是if判断标志位?防止虚假唤醒(线程可能无原因被唤醒),while会二次检查标志位,确保只有前序方法执行完才继续。的作用:释放锁,让前序线程执行;:唤醒所有等待该锁的线程,传递 “前序已完成” 的信号。

2025-12-17 16:56:52 404

原创 JDBC 笔记

本文介绍了JDBC的核心概念和操作步骤,主要内容包括:1. JDBC本质是Java操作数据库的标准API,核心组件包括DriverManager、Connection、PreparedStatement和ResultSet;2. 详细演示了MySQL环境准备和CRUD操作模板代码;3. 总结了关键技巧如防SQL注入、事务管理、资源释放和连接池优化;4. 列举了常见问题如驱动加载异常、时区错误等的解决方法;5. 提供了进阶拓展方向。全文提供了完整的代码示例和实用建议,适合Java开发者快速掌握JDBC技术。

2025-12-07 16:53:52 714

原创 SQL操作全面详细笔记分享

SQL(Structured Query Language,结构化查询语言)是用于与关系型数据库交互的标准编程语言,可实现对数据库的创建、查询、更新、删除等一系列操作。它具有通用性强、简洁易懂的特点,兼容MySQL、Oracle、SQL Server、PostgreSQL等主流关系型数据库。DDL用于创建、修改、删除数据库和表等数据对象,操作后会直接生效,无需提交事务。核心命令:CREATE(创建)、ALTER(修改)、DROP(删除)。基础层。

2025-12-01 12:02:07 812

原创 TRAE CN Solo 模式入门指南

《TRAECN Solo模式入门指南》介绍了字节跳动推出的AI编程新模式。Solo模式以SOLOCoder智能体为核心,支持多任务并行开发、代码变更追溯等功能。指南详细讲解了权限获取、界面布局、Plan规划模式等核心功能,并提供了网页开发、Bug修复等典型场景示例。最佳实践建议包括优先使用Plan模式、合理拆分任务等,还附有权限开通、AI偏离需求等常见问题解决方案。该模式让开发者从编码转向任务决策,显著提升开发效率。

2025-11-27 17:04:57 3030 2

原创 Android UI 开发实战:聊天界面完整实现

本文详细介绍了使用Android原生控件开发聊天界面的完整实现方案。项目采用三段式布局结构:顶部标题栏(60dp)、消息展示区(RecyclerView)和底部输入区(72dp)。关键技术包括:1)通过layout_weight实现自适应布局;2)RecyclerView优化,支持从底部显示和自动滚动;3)自定义消息气泡样式;4)完善的交互功能,支持发送/接收消息和键盘处理。文中还提供了性能优化建议(如DiffUtil使用)和功能扩展方向(图片/语音消息等),并解决了常见UI问题(触摸目标、文本对比度等)。

2025-11-22 17:23:14 727

原创 Android布局完全指南:从基础到精通前言

本文是Android布局开发完全指南,重点讲解LinearLayout和RelativeLayout两大核心布局。内容涵盖:1)布局基础概念与XML语法;2)LinearLayout的线性排列、权重分配及登录表单实例;3)RelativeLayout的相对定位技巧与商品详情页案例;4)布局优化方法(include、merge、ViewStub);5)常见问题解决方案。适合Android初学者系统学习布局开发,提供从基础到进阶的学习路径和资源推荐,强调实践与新技术学习的重要性。通过本文可掌握Android界面

2025-11-21 16:42:58 1017

原创 Java回忆之Java 音乐播放器控制台版(完整实现 + 交互式测试)

目录Java 音乐播放器控制台版(完整实现 + 交互式测试)项目介绍技术亮点目录结构完整代码实现1. 歌曲实体类:Song.java2. 播放列表类:PlayList.java3. 播放列表集合类:PlayListCollection.java4. 控制台交互测试类:ConsoleTest.java(核心入口)项目总结一、项目核心价值二、核心功能完成情况三、技术亮点与设计规范四、使用说明五、扩展方向六、适用人群与学习价值这是一个基于 Java 面向对象思想开发的控制台版音乐播放器,核心支持播放列表管理和。

2025-11-21 10:31:58 621

原创 Java回忆之Java 集合零基础入门(超详细版)

你之前学的数组,有两个大问题:❌长度固定:比如,只能存 5 个元素,满了就加不进去。❌只能存同类型:比如只能存字符串,不能混存数字和字符串。

2025-11-16 11:06:24 703

原创 安卓开发入门指南:从环境搭建到核心知识,新手也能轻松上手

各位CNSD社区的小伙伴们,大家好!最近不少朋友问我安卓开发该怎么入门,看着复杂的开发工具和专业术语就打退堂鼓。其实安卓开发并没有那么难,今天就把最基础的入门知识整理出来,从环境搭建到核心概念,再到常见问题解决,全程干货,新手也能跟着走~

2025-11-15 20:29:29 529

原创 Java回忆之Java 数组数据管理工具(插入 / 显示 / 指定位置插入 / 整除查询)

本文分享一个 Java 数组数据管理工具类,实现了从键盘接收整数数据、显示数组内容、指定位置插入数据、查询能被 3 整除元素等功能,包含异常处理、控制台交互逻辑,同时补充了空指针防护、无效输入提示等优化细节,是适合 Java 初学者学习数组操作与基础交互的实用案例。

2025-11-15 18:06:42 439

原创 Day(24)--动态代理

动态代理是一种非常有用的设计模式,它在很多场景下都能发挥重要作用。在选择使用动态代理时,需要根据具体的需求和场景,权衡其优缺点,选择合适的实现方式。同时,由于动态代理会带来一定的性能开销,在对性能要求较高的场景下需要谨慎使用。

2025-04-19 01:30:00 785

原创 Day(23)--反射

反射允许对成员变量,成员方法和构造方法的信息进行编程访问。

2025-04-18 14:56:36 699

原创 Day(22)--网络编程习题

关于网络编程的习题

2025-04-16 21:25:32 763

原创 Day(21)--网络编程

网络编程

2025-04-16 21:22:30 1087

原创 Day(20)--多线程

多线程详细知识点

2025-04-16 11:11:01 994

原创 Day(19)--IO流(三)

public BufferedOutputStream(OutputStream os) //把基本流包装成高级流,提高写出数据的性能。public BuffereInputStream(InputStream is) //把基本流包装成高级流,提高读取数据性能。//关联字节输出流/文件/文件路径。//关联字节输出流/文件/文件路径。

2025-03-07 21:09:41 695

原创 Day(18)--IO流(二)

/创建字符输出流关联本地文件,续写。//创建字符输出流关联本地文件,续写。缓冲区中没有数据:就从文件中获取数据,装到缓冲区中,每次尽可能装满缓冲区,去过文件中也没有数据了,就返回-1。//读取多个数据,读到末尾返回-1。//细节1:读字节进行读取,遇到中文,一次读多个字节,读取后解码,返回一个整数。//将缓冲区中的数据,刷新到本地文件中。

2024-10-20 16:53:13 640

原创 Day(17)--IO流(一)

存储和读取数据的解决方案内存里数据的特点:不能永久化存储,程序停止,数据丢失file表示系统中的文件或者文件夹的路径:只能对文件本身进行操作,不能读写文件里面存储的数据IO流:读写文件中的数据(可以读写文件,或者网络中的数据....)注意:是程序在读写数据。

2024-10-19 17:47:24 939

原创 Day(16)--File

File对象就是表示一个路径,可以是文件路径,也可以是文件夹的路径这个路径可以是存在的,也允许是不存在的常见的方法//根据文件路径创建文件对象//根据父路径名字字符串和子路径名字字符串创建文件对象//根据父路径对应文件对象和子路径名字符串创建文件对象。

2024-10-04 19:53:40 1013

原创 Day(15)异常

异常

2024-10-03 15:50:01 665 1

原创 字符串练习02

【代码】字符串练习02。

2024-05-12 11:54:41 197 1

原创 字符串练习01

【代码】字符串练习01。

2024-05-12 11:53:35 515

原创 TestString----shuffleString

【代码】TestString----shuffleString。

2024-05-08 21:35:23 258 1

原创 字符串A-----字符串B

【代码】字符串A-----字符串B。

2024-05-08 16:41:57 215 1

原创 关于String

java.lang.String 类代表字符串,java程序中的所有字符串文字都为此类的对象String的注意点字符串的内容是不会发生改变的,它的对象在创建之后不能被修改创建String对象的两种方式直接赋值new//空参构造//传递一个字符串,根据传递的字符串内容再创建一个新的字符串对象//传递一个字符数组,根据传递的字符数组内容再创建一个新的字符串对象//传递一个字节数组,根据传递的字节数组内容再创建一个新的字符串对象//abcd。

2024-05-04 16:11:57 973

原创 反转字符串(简易)

【代码】反转字符串(简易)

2024-04-02 18:14:49 234 1

原创 Day14-集合(二)--什么是数据结构

数据结构是计算机底层存储、组织数据的方式是指数据相互之间是以什么方式排列在一起的数据结构是为了更加方便管理和使用数据,需要结合具体的业务场景来进行选择精心选择的数据结构可以带来更高的运行或者存储效率常见数据结构栈队列数组链表二叉树二叉查找树平衡二叉树红黑树。

2024-03-25 21:03:26 336 1

原创 Day13-集合(一)

数组长度固定,集合长度可变。

2024-03-24 11:21:38 1124 1

原创 Day12-计算飞机票

机票价格按照淡季旺季、头等舱和经济舱收费、输入机票原价、月份和头等舱或经济舱。淡季(11月-4月)若为头等舱则打7折;旺季(5-10月)若为头等舱则打9折;

2024-03-13 15:11:02 691

原创 Day11-Test-回文数

java写回文数

2024-03-10 11:34:00 611 2

原创 Day10-异常

步骤创建自定义异常类在方法中通过throw关键字抛出异常对象如果在当前抛出异常的方法中处理异常,可以使用try-catch语句捕获并处理;否则在方法的声明处通过throws关键字指明要抛出给方法调用者的异常,继续进行下一步操作在出现一场方法的调用者捕获并处理异常System.out.println("传递的参数是:"+a);​if(a>10){//抛出​​try {test(11);处理运行的异常时,采用逻辑去合理规避同时赋值try-catch处理。

2024-03-07 00:54:51 947 1

原创 Day09-面向对象(三)

内部类就是在一个类的内部再定义一个类,比如A中定义一个B类,B相对A来说就是内部类。System.out.println("内部类方法");//abstract 抽象方法,只有方法名字,没有方法的实现。//没有名字初始化乐力,不用将实例保存到变量中。//类 可以实现接口 implements 接口。//常量public static final。//实现接口的类,就需要重写接口中的方法。//通过外部类来实例化内部类。//抽象的思维~java 架构师。//代码块(匿名代码块)//约束~有人帮我们实现。

2024-03-05 16:28:45 2362

原创 Day08-面向对象(二)

使用new关键字创建的时候,除了分配内存空间之外,还会给创建好的对象进行默认的初始化以及对类中构造器的调用。“高内聚,低耦合”,高内聚:类的内部数据由自己完成,不允许外部完成。类中的构造器也称为构造方法,是在进行创建对象的时候必须要调用的。//提供一些可操作的方法public 的get、set的方法。继承关系的两个类,子类、父类。一个对象的实际类型是确定的,但可以指向对象的引用的类型有很多。继承的本质是对某一类的抽象,从而实现对现实世界的更好建模。super调用父类的构造方法,必须在构造方法的第一个。

2024-03-02 23:18:21 920 1

原创 Day07-面向对象(一)

面向对象编程(Object-Oriented Programming,OOP)以类的方式组织代码,以对象的组织(封装)数据抽象三大特性:封装继承多态从认识论角度考虑先有对象后有类。对象,是具体的事物;类,是抽象的,是对对象的抽象从代码运行的角度考虑现有类后有对象。类是对象的模板。

2024-02-27 17:17:47 1720

原创 Day06-数组

数组

2024-02-18 15:10:20 1175 1

原创 Day05-Java方法

java方法

2024-02-14 15:38:49 977 1

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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