- 博客(64)
- 收藏
- 关注
原创 一个代理类为什么不可以用他的bean获得他的类
EnableAspectJAutoProxy(proxyTargetClass = true) 注解的主要作用是启用 Spring AOP 的自动代理功能,并指定使用 CGLIB 代理来生成代理类。总的来说,由于代理类的生成机制、Java反射机制的限制以及Spring框架对代理类的管理方式等因素,导致不能直接通过代理类的Bean获得被代理的原始类。如果需要获取被代理的原始类的信息,可能需要借助一些额外的手段或工具,例如Spring提供的用于获取目标类的实用工具类等。
2025-02-21 18:02:38
328
原创 BigMarket-抽奖中置规则
过滤检查,主要模型即过滤是否为空,为空则直接放行,表没有这个工厂方法,要将新建的对应的RuleLock过滤类标记上自定义注解才能被工厂找到,然后就是照例的调用filter进行转化判断是否放行这里调用哪个都是工厂负责。file判断是否放行code由抽奖的次数是否大于目标次数决定,这里的查询交给dao去完成通过策略id奖品id去获得对应的Rule的值这里值复用以前的。抽奖前的规则在策略表中就有,抽奖中的规则在奖品表中要有策略id和奖品id才能查询,测试时专门建立一个都用的10003策略部分有的以后优化。
2024-07-17 12:22:16
308
1
原创 BigMarker-抽奖前置规则过滤
在这个类中,定义了一个名为`doCheckRaffleBeforeLogic`的方法,该方法接收一个`RaffleFactorEntity`对象和一个可变参数`logics`,用于检查抽奖前的逻辑。然后,它会检查传入的`logics`数组中是否包含黑名单规则(`RULE_BLACKLIST`),如果包含,则使用相应的逻辑过滤器对用户进行过滤。接下来,方法会过滤剩余的规则,并依次应用这些规则。最后,返回抽奖结果。分为抽奖前过滤规则,抽奖中过滤规则,抽奖后过滤规则(如抽到了但未解锁,返回随机积分)
2024-07-16 22:02:18
816
原创 BigMarket-策略概率装配处理
方法二:时间换空间,直接用key:value更快用概率生成,搜索时可以判断是否解锁再考虑去搜索。引入app(启动)infrastructure(基础层)要引用在对应的类下引入不需要版本。添加redis依赖,只是管理版本,可以看见redis已经有了缓存。在启动层添加config。配置redis启动配置。方便后续上线配置密码。
2024-07-14 17:05:38
282
原创 配置Redis时yml的格式导致报错
这个错误是由于在创建名为'redissonClient'的bean时出现了问题。具体原因是Redis连接异常,无法解析主机名'null'。请检查您的Redis配置,确保主机名和端口号正确。但是我明明已经配置了,一番排查后发现是缩进问题。
2024-07-12 12:54:21
1018
原创 力扣-2972
给你一个下标从开始的整数数组nums。如果nums的一个子数组满足:移除这个子数组后剩余元素,那么我们称这个子数组为子数组。比方说,中的[3, 4]是一个移除递增子数组,因为移除该子数组后,变为[5, 6, 7],是严格递增的。请你返回nums中子数组的总数目。,剩余元素为空的数组也视为是递增的。指的是一个数组中一段连续的元素序列。10。
2024-07-11 17:19:14
556
原创 IOC DI详解
RsetController(本身就包含了Controller和ResponseBody)已经有了依赖注入(IOC)通常会依赖于Repository来获取或操作数据例子可以看见所有bean和默认的名称类名首字母小写也可以在注解中改名,value=可以不写声明bean的时候,可以通过value属性指定bean的名字,如果没有指定,默认为类名首字母小写。使用以上四个注解都可以声明bean,但是在springboot集成web开发中,声明控制器bean只能用@Controller。
2024-07-11 11:58:08
229
原创 windows用docker-compose.yml拉取镜像报错
所以在执行docker-compose up -d之前,可以先执行docker pull registry.cn-hangzhou.aliyuncs.com/xfg-studio/(对应的image的名称版本)进行下载在执行docker-compose.yml即可。在经历一番筛查后发现是配置的镜像库里没有这些镜像,换了很多国内镜像库都不靠谱,导致默认走国外的docker远程库去拉太慢就超时了。
2024-07-10 14:45:49
1829
原创 在生成token时报错
类是Java 8中的一部分,但在Java 9及更高版本中已被移除。因此,如果你使用的是Java 9或更高版本,你需要添加一个依赖来提供这个类。这个错误是因为你的应用程序试图在32位的Java运行时环境中加载64位的库文件。你需要确保你的Java运行时环境与Tomcat的本地库兼容。我是直接更换里jdk的版本解决的问题。要解决这个问题,你可以在项目的。
2024-07-09 09:20:38
221
原创 Nginx auth 的权限验证
整个流程为;以用户视角访问API开始,进入 Nginx 的 auth 认证模块,调用 SpringBoot 提供的认证服务。根据认证结果调用重定向到对应的 API 接口或者 404 页面。查看版本保证有 Nginx auth 模块由于 OpenAI 或者本身自己训练的一套服务,都会有服务器成本。所以基于这样一个模型结构,后续可以通过用户购买 Token 的时效性进行成本回收。这也是其中一种商业变现的思路。
2024-07-07 15:50:28
619
原创 Tomcat
Tomcat是Apache 软件基金会一个核心项目,是一个开源免费的轻量级Web服务器,支持Servlet/SP少量JavaEE规范JavaEE:Java Enterprise Edition,java企业版。指]ava企业级开发的技术规范总和。包含13项技术规范:JDBC、JNDI、EIBRMl、JSP、Servlet、XML、JMS、Java IDL、JTS、JTA、JavaMail、JAFTomcat 也被称为 Web容器、Servlet容器。Servlet程序需要依赖于 Tomcat才能运行。
2024-07-06 17:02:49
989
原创 SpringBoot项目报错解决:“Error starting ApplicationContext. To display the conditions report re-run ...”
新建的时候自动生成了一类导致RequestMapping重名。
2024-07-05 23:17:35
175
原创 idea创建spring boot项目,java版本只能选择17和21
修改Server URL为https://start.aliyun.com。创建spring boot没有java对应11的可选。目前阿里云还是支持创建Spring2.X版本的项目的。
2024-07-05 22:28:52
351
原创 maven-依赖管理
依赖具有传递性projectA不止依赖自己目录下的jar包还会依赖projectB,projectC下的jar包,以此类推直接依赖的资源称为直接依赖间接依赖的资源称为间接依赖在4.1中依赖了4.04.0又依赖了1.2.62由此可见实现了依赖传递可以在pom.xml文件中右键打开查看其依赖关系。
2024-07-05 15:50:38
561
原创 在docker配置Nginx环境配置
应用于商业模式集中,对于各种API的调用,对于我们想要的功能进行暴露,对于不用的进行拦截进行鉴权。可以通过控制台看见nginx 的各种文件,由于实际开发操作过于麻烦我们需要把文件拷贝关联到本地。可以在portainer看见点击>_进入控制台。修改一下访问的主页面。
2024-07-04 19:36:04
509
原创 Vue前端打包
介绍:Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。其特点是占有内存少,并发能力强,在各大型互联网公司都有非常广泛的使用。启动:双击nginx.exe 文件启动,服务器默认占用80端口。官网:https://nginx.org/打包好的dist目录赋值到html下。html静态资源文件目录。conf 配置文件目录。logs日志文件目录。temp临时文件目录。
2024-07-04 00:59:27
407
原创 Vue路由
VueRouter:路由器类,根据路由请求在路由视图中动态渲染选中的组件<router-link>:请求链接组件,浏览器会解析成<a><router-view>:动态视图组件,用来染展示与路由路径对应的组件。: Vue Router 是 Vue 的官方路由。
2024-07-04 00:28:05
228
原创 Element
Element:是饿了么团队研发的,一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库。打开项目终端,输入npm install element-ui@2.15.3对应的版本即可。官网:https://element.eleme.cn/#/zh-CNListener。组件:组成网页的部件,例如 超链接、按钮、图片、表格、表单、分页条等等。由于启动服务进入的App.vue所以还要修改。下载element-ui组件。
2024-07-02 00:11:06
828
原创 Vue-cli
package.json :模块基本信息,项目开发所需的模块,版本信息。vue.config.js 存放vue配置的文件,如:代理端口的配置等。在项目目录下输入 npm run serve。node_modules:整个项目的依赖包。可以在vue.config.js改变端口。public:存放项目的静态文件。src:存放项目的源代码。这就是vue的热部署功能。
2024-06-27 21:55:37
236
原创 力扣503
给定一个循环数组nums的下一个元素是nums[0]),返回 nums中每个元素的。数字x的是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出-1。[2,-1,2]第一个 1 的下一个更大的数是 2;数字 2 找不到下一个更大的数;第二个 1 的下一个最大的数需要循环搜索,结果也是 2。
2024-06-27 17:17:34
352
原创 力扣-2663
如果一个字符串满足以下条件,则称其为k2给你一个长度为n的美丽字符串s和一个正整数k。请你找出并返回一个长度为n的美丽字符串,该字符串还满足:在字典序大于s的所有美丽字符串中字典序最小。如果不存在这样的字符串,则返回一个空字符串。对于长度相同的两个字符串a和b,如果字符串a在与字符串b不同的第一个位置上的字符字典序更大,则字符串a的字典序大于字符串b。"abcd""abcc"dc"abda"字符串 "abda" 既是美丽字符串,又满足字典序大于 "abcz"。
2024-06-23 11:21:57
388
原创 Axios-入门
axios({....对象信息....mehod,url(data)}).then(result)=>{}案例:网页加载完成,调用vue生命周期的mounted()向服务器发送请求返回数据赋值遍历渲染表格。Axios对原生Ajax进行了封装,简化书写,快速开发。then后面接一个result的自定义函数。2使用Axios发送请求,并获取响应结果。1引入Axios的js文件。post有个而外的data。
2024-06-22 22:55:44
380
原创 力扣-522
给定字符串列表strs,返回其中的长度。如果最长特殊序列不存在,返回-1。定义如下:该序列为某字符串。s的可以通过删去字符串s中的某些字符实现。"abc""aebdc""aebdc""abc""aebdc""aebdc""aeb"""3-1给定字符串列表strs,返回其中的长度。如果最长特殊序列不存在,返回-1。定义如下:该序列为某字符串。s的可以通过删去字符串s中的某些字符实现。
2024-06-18 00:09:43
154
原创 力扣2779
给你一个下标从开始的整数数组nums和一个整数k。inums[i]数组的定义为数组中由相等元素组成的最长子序列的长度。对数组nums执行上述操作任意次后,返回数组可能取得的美丽值。你能对每个下标执行此操作。数组的定义是:经由原数组删除一些元素(也可能不删除)得到的一个新数组,且在此过程中剩余元素的顺序不发生改变。3在这个示例中,我们执行下述操作:- 选择下标 1 ,将其替换为 4(从范围 [4,8] 中选出),此时 nums = [4,4,1,2]。
2024-06-15 18:13:21
439
原创 力扣-2813
给你一个长度为n的二维整数数组items和一个整数k。,其中profiti和categoryi分别表示第i个项目的利润和类别。现定义items的的可以用计算,其中是子序列中所有项目的利润总和,是所选子序列所含的所有类别中不同类别的数量。你的任务是从items所有长度为k的子序列中,找出。用整数形式表示并返回items中所有长度恰好为k的子序列的最大优雅度。数组的子序列是经由原数组删除一些元素(可能不删除)而产生的新数组,且删除不改变其余元素相对顺序。17。
2024-06-15 17:34:56
382
原创 力扣-2786
给你一个下标从开始的整数数组nums和一个正整数x。你在数组的位置0ii < jjinums[i]ijnums[i]nums[j]x请你返回你能得到的得分之和。,你一开始的分数为nums[0]。13我们可以按顺序访问数组中的位置:0 -> 2 -> 3 -> 4。对应位置的值为 2 ,6 ,1 和 9。因为 6 和 1 的奇偶性不同,所以下标从 2 -> 3 让你失去 x = 5 分。总得分为:2 + 6 + 1 + 9 - 5 = 13。20。
2024-06-14 23:49:47
393
原创 力扣每日一题-2806
一开始,你的银行账户里有100块钱。给你一个整数,它表示你在一次购买中愿意支出的金额。在一个商店里,你进行一次购买,实际支出的金额会向的10的取整。换句话说,你实际会支付一个金额,满足是10的倍数且的值。如果存在多于一个最接近的10的倍数,是你的实际支出金额。请你返回一个整数,表示你在愿意支出金额为块钱的前提下,购买之后剩下的余额。0也是10的倍数。90这个例子中,最接近 9 的 10 的倍数是 10。所以你的账户余额为 100 - 10 = 90。80。
2024-06-13 15:48:57
227
原创 力扣-1953
给你n个项目,编号从0到n - 1。同时给你一个整数数组milestones,其中每个表示第i个项目中的阶段任务数量。一旦所有项目中的全部阶段任务都完成,那么你将停止工作;如果选择任意剩余任务都会导致违反上述规则,那么你也会。注意,由于这些条件的限制,你可能无法完成所有阶段任务。返回在不违反上面规则的情况下你能工作多少周。6一种可能的情形是:- 第 1 周,你参与并完成项目 0 中的一个阶段任务。- 第 2 周,你参与并完成项目 2 中的一个阶段任务。
2024-06-11 17:25:59
414
原创 力扣-826
你有n个工作和m个工人。给定三个数组:difficultyprofit和workeriprofit[i]iworker[i]iworker[i]每个工人只能安排工作,但是一个工作可以。$1$3$0返回在把工人分配到工作岗位后,我们所能获得的最大利润。100工人被分配的工作难度是 [4,4,6,6] ,分别获得 [20,20,30,30] 的收益。0。
2024-06-11 17:15:45
262
原创 力扣-2225
给你一个整数数组matches其中表示在一场比赛中winneri击败了loseri。返回一个长度为 2 的列表answeranswer[0]answer[1]两个列表中的值都应该按顺序返回。玩家 1、2 和 10 都没有输掉任何比赛。玩家 4、5、7 和 8 每个都输掉一场比赛。玩家 3、6 和 9 每个都输掉两场比赛。因此,answer[0] = [1,2,10] 和 answer[1] = [4,5,7,8]。玩家 1、2、5 和 6 都没有输掉任何比赛。
2024-06-11 17:09:56
413
原创 力扣-2831
给你一个下标从开始的整数数组nums和一个整数k。如果子数组中所有元素都相等,则认为子数组是一个。注意,空数组是。从nums中删除最多k个元素后,返回可能的最长等值子数组的长度。是数组中一个连续且可能为空的元素序列。3最优的方案是删除下标 2 和下标 4 的元素。删除后,nums 等于 [1, 3, 3, 3]。最长等值子数组从 i = 1 开始到 j = 3 结束,长度等于 3。可以证明无法创建更长的等值子数组。4最优的方案是删除下标 2 和下标 3 的元素。
2024-06-11 16:56:33
368
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人