自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

东篱君的博客

学习技术,掌握技术,创造技术!

  • 博客(74)
  • 资源 (10)
  • 问答 (1)
  • 收藏
  • 关注

原创 像素鸟 app 的设计与实现

在飞速发展的互联网时代,快捷生活的学生可以在碎片化的时间里使用像素鸟进行娱乐放松。Android studio SQLite 音乐播放 小游戏

2021-06-29 18:03:13 966 3

原创 商城购物系统【用户登录注册,购物页面,购物车页面,订单页面】

java web实现商城购物系统。

2020-12-19 15:23:07 13641 11

原创 数据库学生信息管理系统

本数据库管理系统基于学生表进行数据的存储和读取,首先由一个登陆界面,输入正确的学生的学号和密码才能进入系统,如果学生登陆成功,曾通过菜单命令显示所有学生信息、添加学生、插入学生、删除学生、根据姓名查询学生信息,查看学生平均成绩和成绩统计分析等。

2020-06-16 14:03:51 10071 4

原创 最详细的建立二叉树的代码【深搜和层次遍历实现】

采用深搜时:上述输入[5,4,8,11,null,null,13,4,7,2,null,null,null,null,5,1]采用层次时:上述输入[5,4,8,11,null,13,4,7,2,null,null,5,1]上述代码可以直接运行,举个例子说明输入。注意选取何种建树方法取决输入形式。

2024-07-16 21:55:56 180

原创 Spring注解的实现原理【简单实现一个注解】

注解本身是通过@interface关键字定义的一个特殊接口,使用反射API,如Class.getAnnotation()、Method.getAnnotation()等,可以获取到指定程序元素上的注解实例。当我们通过反射API获取注解时,实际上返回的是一个代理实例,这个代理实现了注解接口,并覆盖了接口中定义的所有方法。当这个注解被用在Java代码中时,它可以提供声明式的验证,使得代码更加清晰,易于维护。添加元注解:使用元注解(如@Target和@Retention)来定义注解的作用域和生命周期。

2024-07-16 18:58:47 266

原创 动态代理实现AOP技术【代码演示】

AOP技术利⽤"横切"技术,剖解开封装的对象内部,并将那些影响了多个类的公共⾏为封装到⼀个可重⽤模块,并将其命名为"Aspect",即切⾯。所谓"切⾯",简单说就是那些与业务⽆关,却为业务模块共同调⽤的逻辑或责任封装起来,便于减少系统的重复代码,降低模块之间的耦合度,并有利于未来的可操作性和可维护性。3、连接点(joinpoint) 被拦截到的点,因为Spring只⽀持⽅法类型的连接点,所以在Spring中连接点指的就是被截到的⽅法,实际上连接点还可以是字段或者构造器。2、切⾯就是对横切关注点的抽象。

2024-07-15 10:30:00 152

原创 力扣207【课程表】

例如,先修课程对 [0, 1] 表示:想要学习课程 0 ,你需要先完成课程 1。正确代码如下:按a->b记录边,同时记录每个节点的入度,判断是否可行时要求此节点的入度为0,同时以此节点为头的边界点入度减一,满足入度为0继续入队。先贴一下错误代码:(思路,使用map存储有入度的节点,将入度为0的点入队,出队的点为前置节点,遍历数组判断加入后置节点)你这个学期必须选修 numCourses 门课程,记为 0 到 numCourses - 1。上述代码的问题,无法处理有环出现的情况。

2024-07-14 10:15:00 191

原创 作业帮笔试1【简单版接雨水】

已经做过接雨水的题解,本题略有不同,描述是给定一个数组,每个值代表对应坐标的高度,从中选择两个坐标,与x轴组成的容器能接最多的水。算法:使用双指针从两边选取,哪一边坐标低哪一边移动。每次计算结果与最大值对比。输入是字符串形式【1,2,3】需要自己转换成数组。

2024-07-12 20:59:08 191

原创 NIO(NO-Blocking I/O)模型

处理事件: 在⼀个循环中调⽤ Selector 的 select() ⽅法,该⽅法会阻塞直到⾄少⼀个注册的 Channel发⽣了感兴趣的事件。注册 Channel 到 Selector: 通过 Selector 监听⼀个或多个 Channel ,当 Channel 上发⽣感兴趣的事件时, Selector 将通知程序;Selectors(选择器):如果应用需要处理多个通道,选择器可以监控多个通道的 I/O 事件,如连接请求、数据到达等。Buffers(缓冲区):是数据容器,用于存储不同类型的数据。

2024-07-12 11:33:19 880

原创 7.10飞书一面面经

B+树的⾮叶⼦节点不存放实际的记录数据,仅存放索引,所以数据量相同的情况下,相⽐存储即存索引⼜存记录的 B 树,B+树的⾮叶⼦节点可以存放更多的索引,因此 B+ 树可以⽐ B 树更「矮胖」,查询底层节点的磁盘 I/O次数会更少。主从复制:单节点Redis的并发能力是有上限的,要进一步提高Redis的并发能力,可以搭建主从集群,实现读写分离。B+ 树有⼤量的冗余节点(所有⾮叶⼦节点都是冗余索引),这些冗余索引让 B+ 树在插⼊、删除的效率都更⾼,⽐如删除根节点的时候,不会像 B 树那样会发⽣复杂的树的变化;

2024-07-10 22:41:59 1308

原创 7.10飞书一面

面试官人很好,不断地帮助我代入状态,自己在知识点上面花的时间还不够,算法比较简单A了,找时间写下面经。首先,太紧张很多问题能答得更好,大脑混在一起,语音比较紊乱。算法:求一个数组的峰值(大于左右相邻元素即可)。2、优化,使用二分查找降低到logn复杂度。2、介绍一下Mysql的索引?说一下验证码实现验证的逻辑;3、说一下Redis集群。1、Redis为什么快?用到线程池是自己搭的吗?1、直接遍历进行比较。

2024-07-10 17:21:16 407

原创 力扣215 数组中第k大的数

算法:由于数组最大范围是10000,存在负数。申请一个20000的数组,将原数组的数作为新数组下标(+10000因为存在负数),然后从后往前减,求出第K大的数。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。本题主要考察各种排序算法,要求时间O(n),严格意义上说只有计数排序满足条件。给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。

2024-07-10 11:04:17 308

原创 软件工程常见知识点

最终,选择最佳设计是一个权衡的过程。作为一名架构师,我们需要具备广泛的技术知识、敏锐的业务洞察力和良好的沟通能力,以确保系统能够满足用户和业务的需求。首先,模块化是我们的基石,通过将系统拆分成独立的、职责明确的模块,我们可以灵活地替换和升级各个部分,而不影响整个系统。在设计验证阶段,我们将组织设计评审会议,让团队成员和利益相关者对设计进行评审,并通过原型验证设计的可行性和有效性。其次,采用服务化架构,比如微服务,可以让我们按需扩展特定服务,而不必对整个系统进行扩展,这大大提高了资源利用率和系统的响应速度。

2024-07-08 21:59:31 2590

原创 力扣394 字符串解码

编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k ,例如不会出现像 3a 或 2[4] 的输入。你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。算法:使用栈模拟解码规则,遇到】就考虑最近的字符串次数,依次往最外层处理。给定一个经过编码的字符串,返回它解码后的字符串。

2024-07-08 15:27:03 142

原创 线程池实战【多线程实时转录语音】

对电话进行监听,有电话接入首先判断线程池里的核心线程是否都在执行任务,如果不是则创建一个新的工作线程来执行任务。如果核心线程都在执行任务,则线程池判断工作队列是否已满,如果工作队列没有满,则将新提交的任务存储在这个工作队 列里。如果工作队列满了,则判断线程池里的线程是否都处于工作状态,如果没有,则创建一个新的工作线程来执行任 务。如果已经满了,则交给拒绝策略来处理这个任务。ThreadLocal用于在每个线程中存储独立的变量副本,这样每个线程都可以独立地访问和修改自己的变量副本,而不会相互干扰。

2024-07-07 17:20:09 244

原创 力扣128 最长连续序列

算法 通过HashSet对数组去重,判断这个元素是否有前置元素,如果有就不进行操作,因为它的前置元素求的最长序列一定比它长;如果没有判断这个元素作为头元素的最长序列;给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。最近在准备项目和八股文,更新的比较少,还是要继续保持更新。请你设计并实现时间复杂度为 O(n) 的算法解决此问题。

2024-07-07 11:29:08 122

原创 安装Rabbitmq遇到的坑

不同的虚拟机unbontu、cetenos和不同的erlang和不同的rabbitmq之间要对应。分割线= =====================================安装好后,如果在虚拟机的服务器上可以打开,在本地浏览器无法打开rabbitmq。下面给出我的版本centos7+erlang+rabbitmq。显示在允许,关闭防火墙。

2024-07-01 16:41:30 261

原创 使用Token管理用户session

起因:单点登录问题,登录时访问的是tomcat1,访问获取用户数据时访问的是tomcat2,而用户的session信息在tomcat1上存储,tomcat2并不知道该用户来过,所以在获取个人信息时从session中获取不到数据,所以就显示该用户未登录。然后在doLogin方法中使用JwtUtil.generateToken(user)来生成Token,并将Token返回给客户端。

2024-06-28 20:31:28 564

原创 力扣32 最长有效括号

算法:使用栈进行模拟括号匹配,将可以匹配的括号对应位置置为0,求这个序列连续0的最长子序列长度。给你一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长有效(格式正确且连续)括号。进一步优化,可以直接计算最长序列。

2024-06-25 21:49:54 293

原创 力扣43 字符串相乘

给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。算法:实际上就是模拟乘法,不同的是本题数值会超过long表示的最大范围。而123 * 5 = 100 * 5 + 2 * 5 + 3 * 5。第五个放入3 * 5,第四个放2 * 5 ,第三个放1 * 5。举例要求123*45 = 123 * 40 + 123 * 5。第四个加4 * 3,第三个加4 * 2,第二个加4 * 1。可证:N长度的数乘M长度的数,最长不超过N+M。

2024-06-25 20:04:06 236

原创 力扣155 最小栈引发的==的小问题

这就是为什么当Integer对象的值超过127时,使用==运算符比较这些对象会返回false的原因。设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。算法:使用两个栈分别存放数据、当前元素对应的栈里的最小值,将这两个栈进行同步。void push(int val) 将元素val推入堆栈。int getMin() 获取堆栈中的最小元素。void pop() 删除堆栈顶部的元素。int top() 获取堆栈顶部的元素。MinStack() 初始化堆栈对象。

2024-06-24 17:09:47 348

原创 力扣78 子集

本题不难,但是长时间没做和全排列搞混淆了,这里不需要判断当前数是否在本次递归中是否使用,因为每次进递归都是从上次数的下一个进的。输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]给你一个整数数组 nums ,数组中的元素 互不相同。返回该数组所有可能的。算法:按数组顺序进行递归,每次的结果都保存下来,然后进行回溯继续递归。解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。输入:nums = [1,2,3]

2024-06-24 11:36:02 228

原创 力扣105 根据先序和中序遍历结果建树

算法:根据提供的先序、中序序列可以唯一确定一颗二叉树,而通过函数可以每次根据提供的二叉树同一部分的两个序列建立这部分,从而使用递归完整的构建整棵树。

2024-06-24 11:26:30 210

原创 6.22面试问题【1】长链表排序选择归并还是快排

内存访问模式:快速排序的效率主要来源于引用的局部性,计算机硬件在这里得到了优化,因此访问彼此相邻的内存位置往往比访问分散在内存中的内存位置更快。然而,链表单元格经常分散在内存中,所以访问相邻的链表单元格没有局部性的好处。这在数组排序中是一个巨大的优势,因为分配和释放辅助数组所需的时间是显而易见的。然而,对于链表来说,归并排序的链表算法并不需要任何额外的辅助存储空间。排序效率:归并排序往往更快,因为它更平均地将列表一分为二,并且在每次迭代中进行归并比执行分区步骤所做的工作更少。先问快排和归并的思路?

2024-06-22 12:31:22 456

原创 76.最小覆盖子串

给你一个字符串 s 、一个字符串 t。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 “”。对于 t 中重复字符,我们寻找的子字符串中该字符数量必须不少于 t 中该字符数量。如果 s 中存在这样的子串,我们保证它是唯一的答案。

2024-06-21 21:11:40 257

原创 力扣41 缺失的正数

那第一个要解决的问题就是长度,这题答案其实只能在【1,length+1】中出现,因为但凡有一个位置不是这个范围内的数,那就必定有一个这个范围内的数没出现。解决了第一个长度问题,那就还有如何映射的问题,也就是我怎么知道范围里的数有没有出现过。那么最后没有变成负值的数,它对应的下标就是我们要找的范围里的数咯!这题最初的思路是用一个哈希表,将数组存入,然后从1开始找第一个哈希表中不存在的数就是缺失的正数。给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。解释:1 在数组中,但 2 没有。

2024-06-20 21:28:22 325

原创 使用ReentrantLock和ThreadPoolExecutor模拟抢课

为了简化示例,这里使用了 ReentrantLock来控制对 availableSeats 的访问,保证了线程安全。在实际应用中,可能需要更复杂的并发控制机制。在真实的抢课系统中,抢课的逻辑会更加复杂,需要考虑数据库的并发访问、事务处理、网络延迟等因素。这里主要是在场景下帮助理解ReentrantLock和线程池的使用。

2024-06-18 22:45:18 507

原创 ReentrantLock可重入锁

在并发量较⼩的多线程应⽤程序中,ReentrantLock与synchronized性能相差⽆⼏,但在⾼ 并发量的条件下,synchronized性能会迅速下降⼏⼗倍,⽽ReentrantLock的性能却能依然维持⼀个⽔ 准。ReentantLock继承接⼝Lock并实现了接⼝中定义的⽅法,除了能完成synchronized所能完成的所有⼯作 外,还提供了诸如可响应中断锁、可轮询锁请求、定时锁等避免多线程死锁的⽅法。可重⼊锁,这个锁可以被线程多次重复进⼊进⾏获取操作。

2024-06-18 21:09:30 222

原创 一文了解IO流

文件读写:这是IO流最常见的用途之一。例如,FileInputStream和FileOutputStream用于处理文件的二进制数据,而FileReader和FileWriter则用于处理字符数据。IO流根据处理数据的类型可以分为字节流(以InputStream和OutputStream为基础)和字符流(以Reader和Writer为基础)。管道通信:Java IO提供了管道相关的流(PipedInputStream和PipedOutputStream),允许在不同线程之间进行数据传输,实现线程间的通信。

2024-06-16 16:21:04 767 3

原创 力扣93 复原地址

算法:递归判断每次选择的数字符不符合要求,一共只能选择4次,字符串必须正好用完。建议参考官方题解,递归函数中参数不应该这么复杂。数据结构:数组+字符串+递归栈。

2024-06-14 16:28:50 125

原创 观察者设计模型【代码详解】

NewsAgency是一个具体的主题,它通知所有注册的观察者(如NewsChannel)状态改变(新闻更新)的消息。Pattern)是一种行为设计模式,它定义了对象间的一种一对多的依赖关系,以便当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。当主题对象的状态发生变化时,主题对象会遍历注册到它上面的所有观察者,并调用观察者的更新方法,以通知所有观察者状态已经改变。观察者在得到状态更新的通知后,可以相应地更新自己的状态或执行相应的操作。观察者模式的主要角色。观察者模式的工作原理。

2024-06-14 09:45:00 475

原创 代码详解工厂设计模式【2】

这样,如果未来需要添加更多类型的文档处理,我们只需添加相应的具体产品和工厂类,无需修改现有代码,从而达到了开闭原则的要求。暴露了简单工厂模式的一些局限性。在工厂方法模式中,我们为每种产品提供一个工厂类,这样就避免了在一个工厂类中集中所有产品的创建逻辑,同时也使得新增产品时不需要修改已有的工厂类,只需要添加新的具体工厂类即可。工厂方法模式通过这种方式,将对象的创建逻辑分散到了各个具体工厂类中,每个具体工厂类负责创建一种具体产品,这样就避免了简单工厂模式中的问题,提高了系统的扩展性和可维护性。

2024-06-13 19:29:34 614

原创 代码理解工厂模式【1】

在这个例子中,DocumentFactory是一个简单工厂,它根据传入的字符串参数决定创建哪种类型的文档对象。⼯⼚类集合了所有产品的创建逻辑,职责过重,同时新增⼀个产品就需要在原⼯⼚类内部添加⼀个分⽀,违反了开闭原则。在创建对象时,不会对客户端暴露对象的创建逻辑,⽽是通过使⽤共同的接⼝来创建对象。如果现在又有新产品进来,实现完产品后还要到简单工厂加入对应的逻辑代码,如果有很多新产品,那么这样的处理是不是太麻烦?⼀般情况下,⼯⼚模式分为三种更加细分的类型:简单⼯⼚、⼯⼚⽅法和抽象⼯⼚。

2024-06-13 19:19:47 483

原创 力扣42 接雨水

算法:核心是计算这一列接到多少雨水,它取决于它左边的最大值和右边的最大值,如下图第三根柱子能接到的雨水应该是第一根柱子高度和第五根柱子高度的最小值减去第三根柱子高度。听说字节每人都会接雨水,我也要会哈哈哈。

2024-06-12 11:48:24 390

原创 力扣143 重排链表

算法:使用数组保存链表的每个节点,按规律取出并重连链表。

2024-06-11 21:48:10 205

原创 力扣23 合并k个升序链表

算法:将链表中的数据先存入数组,然后建立小根堆,依次取出堆顶置于新链表。数据结构:小根堆+链表。

2024-06-07 16:28:56 266 2

原创 力扣54 螺旋矩阵【如何优雅的写好代码】

这题本质是二维数组的遍历,更多考察的是对写代码的基本功。建议先写好伪代码这样才不会乱,特别是对边界条件的把握。

2024-06-07 10:57:57 145

原创 浅谈InoDB中的行级锁

Next-key lock本质上是一个组合锁,它结合了行锁(记录锁)和间隙锁(gap lock)。Next-key lock锁定的是一个前开后闭区间((a, b]),这意味着它锁定从a到b之间的间隙以及b这条记录本身,但不包括a。:这只是一个概念性的表示,为了加强理解方便记,而不是数据库锁的实际实现,因为next-key锁定是由数据库引擎本身管理的行为。Java不能直接控制数据库的锁定机制,而是依赖于数据库引擎的事务和并发控制。发⽣锁冲突的概率是最低的,并发度是最⾼的。每次操作锁住⼀⾏数据。

2024-06-06 16:19:57 214

原创 力扣236 二叉树的最近祖先

算法:二叉树的先序遍历,先判断根结点是不是空或者最近祖先,不是则递归遍历左子树,判断左子树是不是空或是最近祖先,再递归判断右子树是不是空或者最近祖先。留个眼,这题做了几次还是忘记,说明理解不深刻。

2024-06-05 20:56:08 110

原创 如何评价GPT-4o

首先,从模型容量上来看,GPT-4o相比其前身GPT-4,可能拥有更大的参数量,这意味着它能够更好地理解和生成更复杂的文本信息。GPT-4o的技术能力值得详细探讨。其次,在理解方面,GPT-4o对于复杂句子结构和隐含语义的把控更加准确,对上下文的维持和理解也更加深刻。此外,GPT-4o在处理多语言文本的能力上也有显著提升,支持更广泛的语言和方言,这使其在全球范围内的应用更加广泛。在理解和处理自然语言方面,GPT-4o也显示出了比GPT-4更加精准的语义捕捉能力,尤其是在理解上下文和长篇文本的连贯性方面。

2024-06-05 15:42:20 457

nvrtc-builtins64-117.dll

nvrtc-builtins64-117.dll

2023-07-31

南理877数据结构课件

里面有南理数据结构上课时学的代码,都是考研重点

2022-05-01

南理877计算机组成原理课件

适合于考南理877专业的研友,机组一直是877最难的一科,大家一定要自己花大功夫去学

2022-05-01

javaWeb购物商城源码

javaWeb购物商城源码

2021-06-18

数据库课设源码,完整项目,导入eclipse,配置好oracle数据库即可使用

数据库课设源码

2021-06-18

《数据库概论》课程设计 .doc

《数据库概论》课程设计 .doc

2021-06-01

安卓开发简单登录注册界面跳转exam1.zip

安卓开发简单登录注册界面跳转exam1.zip

2021-04-12

购物商城javaWeb课设

含有完整项目思路,项目结构图以及代码截图,心得体会

2021-01-10

CSAE工具辅助生成数据库操纵语言

使用c#+mysql实现自动生成数据库操作代码,一个简单的case工具

2020-12-21

购物商城项目源码,前端加后台以及数据库管理

使用HTML+css布局设计前台页面,java连接mysql数据库,以及对购物车的实现,订单的查询。

2020-12-21

java五子棋单机版程序

此五子棋小程序是在java环境下编译运行,含有用户界面类,棋盘类,棋子类。代码有行注释便于理解,含有悔棋功能。解压后直接放到eslipse里即可运行。

2020-06-16

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

TA关注的人

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