自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

东篱君的博客

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

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

原创 装饰器模式及应用【理论+代码】

Pattern)是一种结构型设计模式,它允许向一个现有的对象添加新的功能,同时又不改变其结构。责任分离:装饰器模式将系统的不同功能分离开来,每个装饰器类负责特定的功能扩展。装饰器模式提供了一种灵活的替代继承的方法来扩展对象的行为。通过添加新的装饰器类,可以轻松地为现有对象添加新功能,而不需要修改原有代码。低耦合性:装饰器模式通过组合而非继承来扩展功能,减少了类之间的依赖关系。可以通过添加新的装饰器来扩展系统功能,而不需要修改现有代码。装饰器:持有一个组件对象的引用,并定义一个与组件接口一致的接口。

2024-08-31 22:16:03 717

原创 校园选课助手【1】-项目整体架构从此开始

后端:Spring MVC、Mybatis、Redis、RabbitMQ、MySQL、Elasticsearch。课程查询:用户可按课程名称、课程代码、教师姓名等条件查询课程信息。课程表:包含课程名称、课程代码、教师姓名、学分、课时、余量等信息。选课表:包含选课ID、用户ID、课程ID、选课状态等信息。软件开发:包括需求分析、设计、编码、测试和部署等环节。个人中心:用户可查看已选课程、课程表、成绩等信息。用户表:包含用户ID、用户名、密码、手机号等信息。功能性:满足学生选课、退课、查询课程信息等需求。

2024-08-01 11:11:03 952

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

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

2024-07-16 18:58:47 291

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

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

2024-07-07 17:20:09 259

原创 使用ReentrantLock和ThreadPoolExecutor模拟抢课

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

2024-06-18 22:45:18 531

原创 浅谈InoDB中的行级锁

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

2024-06-06 16:19:57 223

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

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

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

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

java web实现商城购物系统。

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

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

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

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

原创 走迷宫变体【拼多多1面0905】

有一个N*M的迷宫,主角被放在随机的位置上,给你一个函数,控制主角逃离迷宫。可以使用的函数:int move(String direction) (//direction代表上下左右四个方向,分别是“U"、“D"、“L"、“R"//返回值有3种,包括-1、0、1;-1表示前面是陷阱或墙,主角不能往前走,会留在原地;0表示迷宫出口,恭喜成功逃离;输出:若找到出口,则移动到出口位置并输出”Y”;若没有可逃离的路线,则输出”N"。这里我事后考虑是这样解的,还有个问题是如何判断走回头路?

2024-09-05 22:18:10 240 1

原创 单点登录问题【拼多多0905一面】

这里我思考后给出的解决办法:在用户第一次登录成功后,还要把(用户id:uuid)作为hashmap存入Redis,用户在其它设备登录后,会先判断Redis中有没有uuid,然后根据uuid获取用户密码,同时此次会使用新生成的uuid作为key,将上次的uuid替换掉(当然不替换增加uuid也可以,然后定时删除。刚开始状态真的很差,大脑思考不动,面试中2个手撕,做出来一个,两个项目问题,没有八股。单点登录中,如何保证用户在不同设备上登录时,能够知道在另一个设备已经登录了。希望大家给出不同的解法。

2024-09-05 21:26:46 331

原创 协同开发工具Git

非常不建议直接在安装路径下使用初始化仓库,换句话说,git init 路径,这个路径最好是空文件夹,避免出现访问权限错误的问题。这应该是每个初学者都会犯得错误,当出现这种错误还是比较好排查出来的,一般提示命令不正确时就要注意检查关键字哦!网上对于Git的使用方法介绍的很多,在日常工作中,Git是团队开发必不可少的工具之一,我想为一些。解决办法:首先退出到.git目录外,查找已有工作数目录。,查找你要操作工作树路径以及切换到正确的工作树目。的小伙伴们介绍一下常遇到的小问题。进入目录,进行后续操作。

2024-09-03 16:21:38 502

原创 0829二面中一个问题

在Spring框架中,如果一个@Controller类实现了InitializingBean接口,那么它的afterPropertiesSet方法会在Spring容器完成该Bean的所有属性注入之后被调用。默认情况下,如果Bean的初始化失败,容器可能会记录这个异常并继续尝试创建Bean,或者可能会标记这个Bean为失败状态。如果Spring容器因为某些原因关闭并重新启动,所有的Bean,包括@Controller,将被重新创建,并且它们的afterPropertiesSet方法将再次被调用。

2024-08-30 11:09:55 421

原创 美团一面部分问题

每当一个方法被调用,一个栈帧(stack frame)就会在栈中创建,用于存储该方法的信息,当方法执行完毕,栈帧也会被移除。生命周期:栈中的数据具有确定的生命周期,当一个方法调用结束时,其对应的栈帧就会被销毁,栈中存储的局部变量也会随之消失。堆的存取速度相对较慢,因为对象在堆上的分配和回收需要更多的时间,而且垃圾回收机制的运行也会影响性能。存储空间:栈的空间相对较小,且固定,由操作系统管理。可见性:栈中的数据对线程是私有的,每个线程有自己的栈空间。堆中的数据对线程是共享的,所有线程都可以访问堆上的对象。

2024-08-25 21:24:14 861

原创 校园课程助手【9】-暂时完结撒花版

对此项目做一个阶段性总结,后续有新的优化会继续更新。

2024-08-06 12:22:59 240

原创 力扣170【交易逆序对的总数】

在股票交易中,如果前一天的股价高于后一天的股价,则可以认为存在一个「交易逆序对」。请设计一个程序,输入一段时间内的股票交易记录 record,返回其中存在的「交易逆序对」总数。解释:交易中的逆序对为 (9, 7), (9, 5), (9, 4), (9, 6), (7, 5), (7, 4), (7, 6), (5, 4)。两两归并到四四归并,这个过程就可以用来记录逆序数。这题不看题解真没想到用归并排序的原理做,说明对于归并排序没有真正意义的理解。输入:record = [9, 7, 5, 4, 6]

2024-08-05 20:02:45 295

原创 力扣41【缺失的正数】

给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。

2024-08-05 12:09:54 340

原创 校园课程助手【8】-RabbitMQ实现异步选课

RabbitMQ实现异步抢课

2024-08-05 11:17:48 389

原创 力扣287【寻找重复数】

给定一个包含 n + 1 个整数的数组 nums ,其数字都在 [1, n] 范围内(包括 1 和 n),可知至少存在一个重复的整数。你设计的解决方案必须 不修改 数组 nums 且只用常量级 O(1) 的额外空间。假设 nums 只有 一个重复的整数 ,返回 这个重复的数。脑子不好使了,只能这样解决了!

2024-08-04 20:54:32 224

原创 力扣240【搜索二维矩阵2】

右上角元素是所在行的最大值:如果目标值大于右上角的元素,那么目标值肯定不在当前行,因此我们可以向下移动到下一行。编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target。右上角元素是所在列的最小值:如果目标值小于右上角的元素,那么目标值肯定不在当前列,因此我们可以向左移动到前一列。比较好玩的一题,上来一下被吓到了,找不出规律。看了题解,还真有规律,其实本质还是一种二分查找,只是比较值并不是中点,而是矩阵的右上角,为什么呢?每列的元素从上到下升序排列。

2024-08-04 16:08:45 197

原创 校园抢课助手【7】-抢课接口限流

接口限流常用策略

2024-08-03 22:44:35 801

原创 校园选课助手【6】-使用验证码验证抢课接口

3.CourseOrderservice中编写验证码检验逻辑代码,使用的是数字验证码,用户输入结果后传入与Redis中预存的结果进行比较。需求分析:抢课开放时,大量用户同时访问抢课接口,防止有人利用程序恶意刷接口进行抢课。

2024-08-03 21:09:59 221

原创 校园选课助手【5】-解决Elasticsearch和MySQL同步

Elasticsearch实现课程查询

2024-08-02 21:01:09 475

原创 校园课程助手【4】-使用Elasticsearch实现课程检索

3.在项目中建立elasticsearch.document和elasticsearch.repository包,用于存放elasticsearch文档类和接口操作。4、在repository包下新建操作Elasticsearch的接口继承ElasticsearchRepository。5.在service包下新建Elasticsearch商品搜索Service类EsCourseService。6.在dao包下新建操作数据库接口EsProductDao和映射xml文件EsProductDao.xml。

2024-08-02 12:12:28 982

原创 校园课程助手【3】-使用枚举类封装异常优雅处理全局异常

首先:在本项目中,所有的Controller类返回给前端控制器的都是ResBean对象,下面是这个类的实现,属性包括返回代码,提示信息以及一个Object类。这样使用枚举类优雅的封装异常信息,通过自定义异常类型,最后交给全局异常类处理就可以啦啦啦啦啦!最后:介绍本项目使用上述枚举类封装一个优雅的 Spring Boot 全局异常处理的过程。

2024-08-01 22:00:03 410

原创 校园选课助手【2】-重要的登录模块

1.使用 MD5 二次加密用户登录信息,前端先通过密码加上盐进行MD5加密交给服务器,在userSeverice验证时再对此密码加盐进行一次MD5加密才和数据库中查询的密码对比;两种方法获取用户登录信息,一种是通过获取Redis里存储的用户信息;登录验证的service代码: 随机生成一个uuid作为key,将用户登陆信息使用Redis存储,将key作为cookie返回。实现自定义拦截器方法:实现WebMvcConfigurer 接口,使得springMVC调用服务接口时进行用户身份解析。

2024-08-01 15:48:00 647

原创 电脑端QQ修改自定义存储文件失败

也就是自定义退出时显:个人文件夹路径无法保存,具体原因是无权限写入(比较有误导性,实际上是无权限写入配置文件,需要我们手动写入配置文件)今天看见C盘只有30g了,对于强迫症患者来说简直折磨,通过磁盘分析发现qq安装在D盘,消息7个g都存在C盘的文档里,这简直暴殄天物啊。1.找到路径(注意在电脑上显示可能是中文)忘记截图了,只能放个成功的在这。3.再次修改自定义文件就成功了。

2024-07-31 16:59:31 472

原创 力扣134【加油站】

给定两个整数数组 gas 和 cost ,如果你可以按顺序绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1。如果存在解,则 保证 它是 唯一 的。你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。在一条环路上有 n 个加油站,其中第 i 个加油站有汽油 gas[i] 升。

2024-07-31 11:42:03 147

原创 力扣376【摆动序列】

求最长摆动序列时:当求up[3]时,由于3 > 2,可知up[3]只能=up[2]或者down[2]+1中选最大的;而求up[4]时,由于2<3,up[4]=up[3]相反,[1, 4, 7, 2, 5] 和 [1, 7, 4, 5, 5] 不是摆动序列,第一个序列是因为它的前两个差值都是正数,第二个序列是因为它的最后一个差值为零。例如, [1, 7, 4, 9, 2, 5] 是一个 摆动序列 ,因为差值 (6, -3, 5, -7, 3) 是正负交替出现的。有序列:1 2 3 2。

2024-07-30 19:36:20 673

原创 力扣402【移掉k位数字】

给你一个以字符串表示的非负整数 num 和一个整数 k ,移除这个数中的 k 位数字,使得剩下的数字最小。请你以字符串形式返回这个最小的数字。思路:维护一个递增的单调栈,保证栈内元素从头到尾是增加的;

2024-07-30 12:01:42 203

原创 两种经典的索引优化方式

在这个例子中,由于order_date和amount列都在索引idx_order_date_amount中,数据库可以直接从索引中获取查询所需的所有数据,而无需访问orders表本身。由于电子邮件地址通常很长,且具有一定的规律性(即“用户名@域名”),如果我们为整个email字段创建索引,则会占用大量空间,并且可能不会那么高效。换句话说,如果你有一个查询只需要读取索引中的数据,而无需访问数据表本身,那么这个索引就是一个覆盖索引。对于某些类型的查询,可以减少数据库的I/O操作,因为只需要读取索引。

2024-07-29 22:33:22 354

原创 力扣227【基本计算器】

你可以假设给定的表达式总是有效的。所有中间结果将在 [-231, 231 - 1] 的范围内。这题跟上一个题很像,但由于我想用Deque,对出队的函数不熟悉导致一直没排查到bug。s 由整数和算符 (‘+’, ‘-’, ‘*’, ‘/’) 组成,中间由一些空格隔开。注意:不允许使用任何将字符串作为数学表达式计算的内置函数,比如 eval()。给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。表达式中的所有整数都是非负整数,且在范围 [0, 231 - 1] 内。

2024-07-26 16:32:35 224

原创 力扣224【基本计算器】

注意:不允许使用任何将字符串作为数学表达式计算的内置函数,比如 eval()。‘+’ 不能用作一元运算(例如, “+1” 和 “+(2 + 3)” 无效)‘-’ 可以用作一元运算(即 “-1” 和 “-(2 + 3)” 是有效的)给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。s 由数字、‘+’、‘-’、‘(’、‘)’、和 ’ ’ 组成。每个数字和运行的计算将适合于一个有符号的 32位 整数。输入中不存在两个连续的操作符。s 表示一个有效的表达式。

2024-07-25 19:25:17 352

原创 力扣138【随机链表的复制】

解决方法:关键就是解决深拷贝代码的random指针,根据原链表的位置去找新链表的相对位置,这里要么用map记录索引位置去找;这题比较难的是理解题意:中文翻译过来比较难理解,实际上就是深拷贝一个链表,(这个链表多一个random属性,它指向链表某个节点),深拷贝的这个链表也必须有这种结构关系!指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。

2024-07-24 21:26:46 306

原创 力扣725【分隔链表】

给你一个头结点为 head 的单链表和一个整数 k ,请你设计一个算法将链表分隔为 k 个连续的部分。每部分的长度应该尽可能的相等:任意两部分的长度差距不能超过 1。这可能会导致有些部分为 null。这 k 个部分应该按照在链表中出现的顺序排列,并且排在前面的部分的长度应该大于或等于排在后面的长度。一道综合性比较强的题,主要考察对链表的使用。返回一个由上述 k 部分组成的数组。

2024-07-23 16:35:47 283

原创 力扣86【分割链表】

给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。你应当 保留 两个分区中每个节点的初始相对位置。最近在速刷算法题:刷题链接如下。

2024-07-23 15:51:40 329

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

采用深搜时:上述输入[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 197

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

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

2024-07-15 10:30:00 169

原创 力扣207【课程表】

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

2024-07-14 10:15:00 203

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

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

2024-07-12 20:59:08 217

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

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