- 博客(178)
- 资源 (8)
- 收藏
- 关注
原创 程序员如何培养技术领导力:从执行者到团队掌舵人
程序员的技术领导力培养是一个长期的过程,涉及技术、管理、沟通等多个方面。通过从技术专家、技术指导到技术管理的逐步成长,程序员不仅能在技术上实现突破,更能在团队管理和战略规划上取得成功。通过实践中的不断学习和反思,程序员可以逐渐成长为一名具有战略眼光和强大执行力的技术领导者,为团队和公司带来更大的价值。
2024-12-31 15:44:16
662
原创 【day20】集合深入探讨
按照斗地主的规则,完成洗牌发牌的动作。具体规则:使用54张牌打乱顺序,三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌。Set和Map密切相关,Map的遍历需要先变成单列集合,只能变成Set集合。HashSet是Set接口的实现类,具有元素唯一、无序、无索引、线程不安全等特点。底层数据结构为哈希表。set.add("张三");set.add("李四");set.add("王五");set.add("赵六");set.add("田七");set.add("张三");继承自。
2024-12-29 11:38:26
1299
原创 【day18】多线程高级应用
Lock是一个接口,其实现类为,提供了比更灵活的锁控制。lock():获取锁。unlock():释放锁。//定义100张票//创建Lock对象@Overridetry {//获取锁System.out.println(Thread.currentThread().getName() + "买了第" + ticket + "张票");ticket--;}finally {//释放锁Thread t1 = new Thread(myTicket, "赵四");
2024-12-25 21:52:15
890
原创 【day17】多线程基础
主线程是CPU和内存之间专门为main方法服务的线程。死锁是指两个或多个线程在执行过程中因为竞争同步锁而产生的阻塞现象,如果没有外力作用,它们将无法继续执行。线程在生命周期中有六种状态,包括NEW(新建)、Runnable(可运行)、Blocked(锁阻塞)、Waiting(无限等待)、Timed Waiting(计时等待)和Terminated(被终止)。线程状态导致状态发生条件NEW(新建)线程刚被创建,但是并未启动。还没调用start方法。Runnable(可运行)
2024-12-25 21:38:29
1093
原创 【day16】Java开发常用API
Math构造方法私有,不能实例化。方法都是静态的,可以直接通过类名调用。BigInteger类用于处理超出long范围的超大整数。:参数必须是数字形式的字符串。:返回两数之和。:返回两数之差。:返回两数之积。:返回两数之商。BigDecimal类用于解决float和double运算中的精度损失问题。:参数必须是数字形式的字符串。:初始化小数时可以传入double型数据。:返回两数之和。:返回两数之差。:返回两数之积。:返回两数之商。:指定保留小数位数和取舍方式的除法。
2024-12-24 22:02:06
1268
原创 【day15】String常用API
String所有字符串字面值(如"abc")都是String类的实例。字符串是不可变的,这意味着一旦创建,其值就不能更改。String对象是不可变的,因此可以被共享。是一个可变的字符序列,主要用于字符串拼接。与String相比,在拼接时不会频繁创建新对象,因此效率更高。底层自带缓冲区,此缓冲区是没有被final修饰的byte数组,默认长度为16如果超出了数组长度,数组会自动扩容创建一个新长度的新数组,将老数组的元素复制到新数组中,然后将新数组的地址值重新赋值给老数组。
2024-12-24 21:40:38
606
原创 【day14】异常处理与Object类深入解析
异常是程序运行过程中出现的不正常现象。在Java中,异常都是类的实例。//错误Error -> StackOverflowError//method();//运行时期异常 -> ArrayIndexOutOfBoundsException/*编译时期异常:注意看:编译时期异常是我们代码写错了嘛?不是,当我们调用方法的时候该方法底层给我们抛了一个编译时期异常,所以导致我们一调用此方法一编译,就爆红了当我们一旦触发了这个异常,jvm就会将异常信息打印到控制台上,给程序员们看*/
2024-12-23 18:32:06
669
原创 【day13】深入面向对象编程
public:最广的访问范围,任何地方都可以访问。protected:在同包和子类中可以访问。默认(无修饰符):仅在同包内可以访问。private:仅在定义它的类内部可以访问。
2024-12-23 18:11:36
917
原创 【day12】面向对象编程进阶(接口与多态)
接口是Java中一种定义标准和规则的方式,它允许类实现一个或多个接口,从而确保类遵循特定的规范。接口:是一个引用数据类型,是一种标准,规则抽象方法: public abstract -> 即使不写public abstract, 默认也有成员变量: public static final 数据类型 变量名 = 值-> 即使不写public static final,默认也有final是最终的,被final修饰的变量不能二次赋值,所以我们一般将final修饰的变量视为常量。
2024-12-22 14:22:20
758
原创 【day11】面向对象编程进阶(继承)
本文深入探讨面向对象编程的核心概念,包括继承、方法重写、this和super关键字的使用,以及抽象类和方法的定义与实现。理解继承的优势。掌握继承的使用方法。了解继承后成员变量和成员方法的访问特点。掌握方法重写及其应用场景。学会使用this关键字调用当前对象的成员。学会使用super关键字调用父类的成员。定义抽象方法和抽象类。重写抽象方法。继承是一种代码复用机制,通过将共通代码抽取到父类中,子类可以直接继承父类的功能。在Java中,使用extends关键字实现继承。
2024-12-22 11:01:31
1085
原创 【day09】面向对象编程进阶
1.概述:static是一个静态关键字2.使用:a.修饰一个成员变量:static 数据类型 变量名b.修饰一个方法:修饰符 static 返回值类型 方法名(形参){方法体return 结果3.调用静态成员:类名直接调用(不用new对象)4.静态成员特点:a.静态成员属于类成员,不属于对象成员(非静态的成员属于对象成员)b.静态成员会随着类的加载而加载c.静态成员优先于非静态成员存在在内存中d.凡是根据静态成员所在的类创建出来的对象,都可以共享这个静态成员int age。
2024-12-21 19:00:00
327
原创 【day08】面向对象编程(封装)
1.面向对象三大特征: [封装] 继承 多态2.什么是封装思想:a.我们找来了一个对象(洗衣机),只需要按一下按钮就可以了(使用洗衣机功能的过程就是在使用面向对象思想编程的过程),每一个按钮下面都包含了很多内部结构的细节(细节被封装到按钮里面了->封装),在使用的时候有必要了解洗衣机的内部构造吗?我们没有必要去了解内部结构,我们只知道调用就可以了所以,洗衣机来说,将细节隐藏起来了,细节我们不要关注,会对外提供了一个公共的接口(按钮),供我们人类使用。
2024-12-21 14:00:00
583
原创 【day07】面向对象编程
1.面向过程:自己的事情自己干,代表语言C语言洗衣服:每一步自己要亲力亲为 -> 找个盆,放点水,找个搓衣板,搓搓搓2.面向对象:自己的事情别人帮忙去干,代表语言Java语言洗衣服:自己的事情别人干 -> 全自动洗衣机3.为啥要使用面向对象思想编程:懒很多功能别人都给我们实现好了,我们只需要直接拿过来使用即可,简化了我们自己的编写过程,减少了我们的代码量4.什么时候使用面向对象思想编程:调用别人的功能时在一个类中想使用别的类中的成员时,就使用面向对象思想编程。
2024-12-21 08:00:00
187
原创 【day06】Java中方法的定义、调用、参数传递和方法重载
第一章.方法的使用1.方法介绍以及简单方法定义(无参无返回值)2.无参数无返回值的方法执行流程第二章.方法注意事项终极版第三章.方法练习1.方法练习1(判断奇偶性)2.方法练习2(1-100的和)3.方法练习3(不定次数打印)4.方法练习4(遍历数组)请添加图片描述
2024-12-20 20:30:00
272
原创 【day05】定义、操作与二维数组
第一章.数组的定义第二章.数组操作1.获取数组的长度2.索引4.获取元素5.遍历数组第三章.操作数组时两个常见的问题1.数组索引越界异常_ArrayIndexOutOfBoundsException2.空指针异常_NullPointerException2.练习3.练习4.练习5.练习6.练习7.练习_数组复制8.练习_数组扩容2.获取二维数组长度3.获取二维数组中的元素5
2024-12-20 15:59:44
266
原创 【day04】流程控制
2.if:从上到下挨个判断 -> 实际开发主要用if做判断,灵活。学习Random和学习Scanner方式方法一样。1.switch:会直接跳到相匹配的case。switch和if的区别:debug。快捷键: 次数.fori。
2024-12-19 09:08:00
411
原创 【day03】IDEA的使用和认识运算符
1.概述:开发工具2.特点:a.idea是java写的,所以本地上必须有正确的jdk环境(JAVA_HOME)b.idea自动保存c.不用我们打开dos命令窗口执行javac和java命令d.idea有强大的快捷键,生成代码,纠错等e.idea会自动管理我们写的代码3.相关开发工具:eclipse myeclipse4.作用:加速我们的开发。
2024-12-18 19:27:21
763
原创 【day02】变量、数据类型转换、运算符
1.变量的数据类型:基本数据类型:4类8种整型:byte short int long浮点型:float double字符型:char布尔型:boolean引用数据类型: 类 数组 接口 枚举 注解2.概述:在代码的运行过程中,值会随着不同的情况而随时发生改变的数据3.作用:一次接收一个数据将来定义一个变量,接收一个值,后续可能会根据不同的情况对此值进行修改,此时可以用变量4.定义:a.数据类型 变量名 = 值;b.数据类型 变量名;变量名 = 值;
2024-11-12 17:01:45
766
原创 【day01】环境变量配置以及入门程序(HelloWorld)
JavaSE知识图解JavaSE知识模块介绍数据类型运算符流程控制数组、…(没有为啥,按照格式定义)类和对象封装继承多态抽象接口、…JAVA核心编程思想(面向对象),很多功能别人已经给我们实现好了,我们直接调用这个对象的功能就可以了,让代码变得简单了,简洁了集合I/O多线程网络编程反射机制、…Lambda表达式函数式编程新Date/Time API接口的默认、静态和私有方法、…SQL语句数据库连接池DBUtils事务管理批处理、…
2024-11-12 15:00:06
1062
原创 【面试专题】高频面试题之并发篇
更形象的演示,见资料中的 hash-demo.jar,运行需要 jdk14 以上环境,进入 jar 包目录,执行下面命令。day02.TestThreadPoolExecutor 以较为形象的方式演示了线程池的核心组成。乐观锁的代表是 AtomicInteger,使用 cas 来保证原子性。ThreadLocalMap 中的 key 被设计为弱引用,原因如下。悲观锁的代表是 synchronized 和 Lock 锁。,有大厂完整面经,工作技术,架构师成长之路,等经验分享!本文,已收录于,我的技术网站。
2024-10-11 09:45:00
701
原创 【面试专题】高频面试题之虚拟机篇
假设你自己的类加载器不用双亲委派,那么你的类加载器加载假冒的 java.lang.System 时,它需要先加载父类 java.lang.Object,而你没有用委派,找不到 java.lang.Object 所以加载会失败。必须配合引用队列一起使用,当虚引用所引用的对象被回收时,由 Reference Handler 线程将虚引用对象入队,这样就可以知道哪些对象被回收,从而对它们关联的资源做进一步处理。如果仅有软引用该对象时,首次垃圾回收不会回收该对象,如果内存仍不足,再次回收时才会释放对象。
2024-10-10 15:00:00
1514
原创 【面试专题】高频面试题之框架篇
refresh 是 AbstractApplicationContext 中的一个方法,负责初始化 ApplicationContext 容器,容器必须调用 refresh 才能正常工作。它的内部主要会调用 12 个方法,我们把它们称为 refresh 的 12 个步骤:onRefresh。
2024-10-10 10:45:00
777
原创 【数据结构与算法】Leetcode刷题笔记
对于天数 n = 6,最多进行 3 次交易,如果此时 k > 3,意味着不限次交易。对于天数 n = 7,最多进行 3 次交易,如果此时 k > 3,意味着不限次交易。与 Leetcode 1 的两数之和区别在于,本题的数组是升序排好的。,有大厂完整面经,工作技术,架构师成长之路,等经验分享!的数字,从 1 开始,返回数字的比例减半,例如。下面是的题目都会涉及双指针,除此外,还有。设计一个方法调用若干次,每次返回。本文,已收录于,我的技术网站。
2024-10-10 09:15:00
826
原创 【数据结构与算法】Backtracking Algorithm
似乎 ArrayList 作为 stack 性能高一些,见下面代码,但是这道题在 leetcode 上执行时间不稳定,相同代码都会有较大时间差异(15ms vs 9ms),有大厂完整面经,工作技术,架构师成长之路,等经验分享!与之前的零钱兑换问题其实是一样的,只是。这道题更类似于 77 题,区别在于。本文,已收录于,我的技术网站。
2024-10-09 16:00:00
592
原创 【数据结构与算法】Divide and Conquer
分治思想将大问题划分为两个到多个子问题子问题可以继续拆分成更小的子问题,直到能够简单求解如有必要,将子问题的解进行合并,得到原始问题的解之前学过的一些经典分而治之的例子二分查找快速排序归并排序合并K个排序链表 - LeetCode 23。
2024-10-09 08:00:00
744
原创 【数据结构与算法】Dynamic-Programming
如果终点是 (1,1) 呢,它的走法是从它的上方走下来,或者从它的左边走过来,因此走法 = (0,1) + (1,0) = 2种。如果终点是 (2,1) 呢,它的走法是从它的上方走下来,或者从它的左边走过来,因此走法 = (1,1) + (2,0) = 3种。不要被题目名字误导了,本题类似于零钱兑换518题,区别在于零钱兑换求的是组合数,本题求的是排列数。本质上是完全背包问题,把钢条总长度看作背包容量,切分后的钢条看作物品。,有大厂完整面经,工作技术,架构师成长之路,等经验分享!,问一共有多少条不同路径?
2024-10-08 14:30:00
1442
原创 【数据结构与算法】图
他因对开发结构化编程语言做出的基础贡献而获得了1972年的图灵奖,并担任德克萨斯大学奥斯汀分校的斯伦贝谢百年计算机科学主席,任职时间从1984年到2000年。如果两个顶点之间存在路径,则这两个顶点是连通的,所有顶点都连通,则该图被称之为连通图,若子图连通,则称为连通分量。在有向图中,从一个顶点开始,可以通过若干条有向边返回到该顶点,那么就形成了一个环。该图有四个顶点:A、B、C、D 以及四条有向边,有向图中,边是单向的。如果是无向图,那么边是双向的,下面是一个无向图的例子。本文,已收录于,我的技术网站。
2024-10-08 08:00:00
1198
原创 【数据结构与算法】排序算法
算法最好最坏平均空间稳定思想注意事项冒泡O(n)O(n2n^2n2O(n2n^2n2O(1)Y比较最好情况需要额外判断选择O(n2n^2n2O(n2n^2n2O(n2n^2n2O(1)N比较交换次数一般少于冒泡堆O(nlognnlognnlognO(nlognnlognnlognO(nlognnlognnlognO(1)N选择堆排序的辅助性较强,理解前先理解堆的数据结构插入。
2024-10-07 18:30:00
1582
原创 【数据结构与算法】哈希表
题目中说明 s 由英文字母、数字、符号和空格组成,因此它的范围是有限的(在 0 ~127 之内),可以用数组来替代 HashMap 优化,如下。begin 调整时的解释,遇到重复的 begin 应该向右调整,例如。的过程,其中编号是一个有限范围内的数字(如 int 范围内),有大厂完整面经,工作技术,架构师成长之路,等经验分享!但还有一种情况需要考虑,就是连续遇到两次重复,例如。后两行避免 lambda,12 ms。本文,已收录于,我的技术网站。解法1:用 HashSet。简洁解法 14 ms。
2024-10-07 14:30:00
1003
原创 【数据结构与算法】Greedy Algorithm
简单说就是建立【字符】到【数字】的对应关系,如下面大家熟知的 ASC II 编码表,例如,可以查表得知字符【a】对应的数字是十六进制数【0x61】这回解码没问题了,但并非最少字节,因为 c 的出现频率高(7 次)a 的出现频率低(1 次),因此出现频率高的字符编码成短数字更经济。假设传输的字符中只包含 a,b,c 这 3 个字符,有同学重新设计一张二进制编码表,见下图。不行,因为解码会出现问题,因为 10 会被错误的解码成 ba,而不是 c。,有大厂完整面经,工作技术,架构师成长之路,等经验分享!
2024-10-07 10:27:40
1233
原创 【数据结构与算法】B树
B树(B-Tree)结构是一种高效存储和查询数据的方法,它的历史可以追溯到1970年代早期。B树的发明人Rudolf Bayer和Edward M. McCreight分别发表了一篇论文介绍了B树。这篇论文是1972年发表于《ACM Transactions on Database Systems》中的,题目为"Organization and Maintenance of Large Ordered Indexes"。
2024-10-07 09:51:44
1390
原创 【数据结构与算法】红黑树
红黑树是一种自平衡二叉查找树,最早由一位名叫Rudolf Bayer的德国计算机科学家于1972年发明。然而,最初的树形结构不是现在的红黑树,而是一种称为B树的结构,它是一种多叉树,可用于在磁盘上存储大量数据。在1980年代早期,计算机科学家Leonard Adleman和Daniel Sleator推广了红黑树,并证明了它的自平衡性和高效性。从那时起,红黑树成为了最流行的自平衡二叉查找树之一,并被广泛应用于许多领域,如编译器、操作系统、数据库等。
2024-10-01 21:35:20
1218
原创 【数据结构与算法】AVL树
AVL 树是一种自平衡二叉搜索树,由托尔·哈斯特罗姆在 1960 年提出并在 1962 年发表。它的名字来源于发明者的名字:Adelson-Velsky 和 Landis,他们是苏联数学家,于 1962 年发表了一篇论文,详细介绍了 AVL 树的概念和性质。在二叉搜索树中,如果插入的元素按照特定的顺序排列,可能会导致树变得非常不平衡,从而降低搜索、插入和删除的效率。为了解决这个问题,AVL 树通过在每个节点中维护一个平衡因子来确保树的平衡。平衡因子是左子树的高度减去右子树的高度。
2024-09-28 16:00:00
1550
原创 【数据结构与算法】二叉搜索树
二叉搜索树最早是由Bernoulli兄弟在18世纪中提出的,但是真正推广和应用该数据结构的是1960年代的D.L. Gries。他的著作《The Science of Programming》中详细介绍了二叉搜索树的实现和应用。在计算机科学的发展中,二叉搜索树成为了一种非常基础的数据结构,被广泛应用在各种领域,包括搜索、排序、数据库索引等。随着计算机算力的提升和对数据结构的深入研究,二叉搜索树也不断被优化和扩展,例如AVL树、红黑树等。int key;
2024-09-28 15:00:00
878
原创 【数据结构与算法】基础算法之查找概述
查找算法是一种在数据集中寻找特定数据项的方法。通常,数据集是在计算机程序中存储的,例如数组、链表或散列表。在编写程序时,查找算法是非常重要的,它有助于快速找到所需的数据。在本文中,我们将介绍一些基本的查找算法及其特点。
2024-09-27 15:00:00
1443
原创 【数据结构与算法】二叉树
对于前、中两种遍历,实际以上代码从右子树向回走时,并未走完全程(stack 提前出栈了)后序遍历以上代码是走完全程了。例如,下面的树遇到的第一个叶子节点 3 所在的层就是最小深度,其他 4,7 等叶子节点深度更深,也更晚遇到。上面两种情况满足时,不应该再把为 null 子树的深度 0 参与最小值比较,例如这样。效率会高于之前后序遍历解法,因为找到第一个叶子节点后,就无需后续的层序遍历了。对于数组表现的二叉树,则直接遍历数组即可,自然为层序遍历的顺序。,有大厂完整面经,工作技术,架构师成长之路,等经验分享!
2024-09-27 10:00:00
1050
原创 【数据结构与算法】阻塞队列
队列从 0 变化到不空,会唤醒一个等待的 poll 线程,这个线程被唤醒后,肯定能拿到 headLock 锁,因此它具备了唤醒 headWaits 上其它 poll 线程的先决条件。下面来看一个难题,就是如何通知 headWaits 和 tailWaits 中等待的线程,比如 poll 方法拿走一个元素,通知 tailWaits:我拿走一个,不满了噢,你们可以放了,因此代码改为。糟糕的是,由于指令交错的顺序不同,得到的结果不止以上一种,宏观上造成混乱的效果。两把锁这么嵌套使用,非常容易出现死锁,如下所示。
2024-09-26 10:00:00
1535
Java项目-企业进销存管理系统
2024-12-25
2024java面试题,Java面试题
2024-07-26
flowable 6.7.2 源码压缩包
2022-10-20
Elasticsearch安装包和IK分词器
2022-05-19
redis和Nginx的Linux软件安装包
2022-05-19
数据库设计工具-PDMan
2022-05-11
接口测试工具(包含ApiPost和Postman)
2022-05-11
Redis和MongoDB的客户端连接工具
2022-05-11
Java开发常用软件包(finalshell、xftp、xshell、wireshark、typora、postman等)
2022-05-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人