接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡

接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡

问题背景

修一下这坨山,这个不是屎山,但是确实已经成一坨山了,此前由于每个同事都有接手过蜻蜓z系统项目,总参与开发人数高达20人以上,到了卓伊凡这里每次要搭建总是不是这个有问题就是那个有问题,看了连续很多同事做的教程,方法都不太通也不太同,卓伊凡花了2个月去学习java并且对maven构建项目,gradle构建项目,java运行机制,Nginx配置整体有了清晰的认知,包括对java运行jdk的版本问题也做了学习,最终发布本篇神作!!!本篇即将要将曾经蜻蜓z系统要搭建3-5天,最少1-2天的问题攻破了,本文把snow-server,snow-manage-vue,snow-manage服务端的三大部分,服务端server,服务端后台前端源码,服务端后台全部融合在了一个库,有些同事(当然我只是说有些同事,不是所有,我们还是有很多大佬既谦卑又特别负责任)一个个总觉得自己不得了,了不得,总觉得我在前面指挥这指挥那我不懂这不懂那,好好好,逼我实力来打你们脸!!!后面我的搭建基本上能够削减在30分钟以内!!

原文:

写到一半弄不下去了,问这个同事有这样的说法,问另一个同事有另一个说法,现在整合起来在一个库,并且简化搭建过程,需要做到这步是花了2个月废寝忘食的学习,不过不打紧,卓伊凡现在的人生目标就是学习,我学习我快乐,我挣钱!!!!那也是我该得的!!!,接下来六边形战士要开始了!
这个搭建真的气得我肺疼,搭建到一半实在搞不下去了!

而且优雅草做了 起码有不下8个教程,还是不同人做的,然后没有一个是完全完整的!!!!

基础环境

原版本写的:

操作系统版本:Linux Ubuntu Ubuntu Server 24.04 LTS 64bit (22版本也行)
Nginx版本:1.22+(开发环境1.22)
MySQL版本:建议是mysql8.0+(数据库mysql8.0会要求内存不低于6G,如果服务器实在达不到 最低也要mysql5.6)
JAVA JDK版本:v1.8(目前开发环境为jdk1.8.0_371)
redis版本:v7.4.1(7.2.4版本以上皆可)
node.js版本 v16.x (此很重要,版本不对基本上前端无法打包成功)
flutter打包版本 3.7.x (flutter客户端打包版本-安卓-IOS)
flutter打包版本 3.13.x (雪花版snow的 fluttersdk版本要高一些请注意,flutter客户端打包版本-安卓-IOS)

node版本在最后一步才确定好,然后用nvm安装 nvm install 16.14.2

新版本:

操作系统版本:Linux Ubuntu Ubuntu Server 24.04 LTS 64bit (22版本也行)
Nginx版本:1.22+(开发环境1.22,这个无所谓,Nginx基本上你用最新的版本就好了,)
MySQL版本:建议是mysql5.7+(这里也是坑,数据库 因为mysql5.7和8的是可兼容的,因此最低要5.7+不是5.6把卓伊凡坑惨了!!!!)
JAVA JDK版本:v1.8(目前开发环境为jdk1.8.0_371,这里真的有误区,jdk版本矮了不行,高是没问题的,也就是说最低1.8但是你们知道1.8有多老吗?很多年前的东西,目前卓伊凡采用 jdk 17)
redis版本:v7.4.1(7.2.4版本以上皆可)
node.js版本 v16.x (node确实没办法必须,这样,)
flutter打包版本 3.7.x (原始开发环境3.7.x,但是根本不一样,升级版本高一点,有问题看问题,版本3以上即可snow-manage-vue即可。
Tomacat:这个是推荐安装的,安装了 对java配置变得更加容易,
后台框架:若依框架 (之前都没人说后台管理admin框架是若依框架,但是还有个问题 那分布式那套蜻蜓z旗舰版 design的后台系统又是怎么改的,好多谜团)

——最后一步了 发现问题——追加 node版本

域名分配

默认需要解析的域名数量为5个,目前以我们demo站为例
后台管理:shadowadmin.youyacao.com
服务端请求域名:shadowapi.youyacao.com
PC端访问域名:shadowpc.youyacao.com
H5端独立访问域名:shadowh5.youyacao.com

这个由于要搭建那么多那肯定没得说需要搞,但是本文主做服务端+后台管理搭建,其他至于pc,h5,那就是轻轻打包一下的问题,参考我们

以下演示为例 我们由于demo要搭建雪花版因此以雪花版为例,雪花版(暗影版)内核是通的一模一样,只是我这里域名不一样,这里须知

后台管理:snowadmin.youyacao.com
服务端请求域名:snowapi.youyacao.com

再吐槽下文件:

这谁看得懂是啥,我打开了assets 分析了 资源才明白,第一个是pc的,第二个是独立vue写的前端这命名我要吐血了,下面三个是之前老同事命名的。

接下来我改名,

然后此前我manage 和 server 为啥会分开呢,我仔细看了下原来,manage是后台vue对应要连接的,框架是ruoyi若依框架

然后server才是真正的项目的接口以及各项服务的,其中还包含上传服务的两个配置,也不知道为啥要这么写

经过我的梳理整理得到如下:

全部分明了,包括sql数据库也都放进去了,

而且还有vue的项目基本都把node要去掉,太大了,我新建了.gitignore 文件
并且做了做了调整:

###############################这是卓伊凡我添加的
snow-manage-vue/node_modules
snow-server/.idea
vue-h5/node_modules
vue-pc/node_modules
###############################以下是默认必须的
# Build Tools
.gradle
/build/
!gradle/wrapper/gradle-wrapper.jar
target/
!.mvn/wrapper/maven-wrapper.jar
######################################################################
# IDE
### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
### JRebel ###
rebel.xml
### NetBeans ###
nbproject/private/
build/*
nbbuild/
dist/
nbdist/
.nb-gradle/
######################################################################
# Others
*.log
*.xml.versionsBackup
*.swp
!*/build/*.java
!*/build/*.html
!*/build/*.xml

打开项目第一件事,clean!!!!

正式搭建

打包jar包

首先打包整体外部 这个,也就是 后台管理 admin的 jar包

点击maven 点击 package,在打包的同时我们来把 服务建立起来

这里我想了下名字改成ff-admin,再多建立个server放服务端

我们在idea中单独打开snow-server


选择新窗口打开

打开后提示加载maven 我们加载

完成后以此点击 clean ,install,然后 package 打包

不过 从子目录打开卓伊凡 发现个问题,maven压根识别不到, 可能是上级有maven的原因????对于此卓伊凡不太理解,不过就任他吧所以就只能单独又放到一个根目录去打开

终于正常了 不过我们发现数据库信息没有改,因此我们需要修改,想到这里,之前的打包admin的时候也没有修改,我们都要修改,修改之前我们去宝塔建立个数据库

接下来修改数据库信息,

修改这三个部分,

不过我在src/main/resources/generatorConfig.xml 文件发现很多地方 数据库名字都用的songshu 因此我们数据库名还是用songshu比较好 怕有未知问题,第一代java总监项目负责人去米国做贸易了,所以这摊子很难收。

这样子保险一些,重新分别执行clean ,install,然后 package 打包,

这样我们就得到了 两个包 一个叫做 yyc-admin 一个叫做 snow-jar
路劲
yyc-admin/target/yyc-admin.jar 我们已经成功输出

server 执行报错,提示没有找到sdk路劲,以前这个问题卓伊凡头大,现在卓伊凡轻车熟路,

点击菜单,项目结构,

修改 正确的sdk路径,保存,ok clean 正确执行,但是
install 就报错了

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project z-server: Fatal error compiling: java.lang.IllegalAccessError: class lombok.javac.apt.LombokProcessor (in unnamed module @0x3875b3c9) cannot access class com.sun.tools.javac.processing.JavacProcessingEnvironment (in module jdk.compiler) because module jdk.compiler does not export com.sun.tools.javac.processing to unnamed module @0x3875b3c9 -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:

这个错误通常是由于 Lombok 和 JDK 版本不兼容导致的。可以尝试以下几种方法来解决这个问题:

  1. 升级 Lombok 版本: 确保你使用的是最新版本的 Lombok。在你的 pom.xml 文件中添加以下依赖:
<dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.20</version>
        <scope>provided</scope>
    </dependency>
    ```

我们选择升级lombok,问题不大

  1. 降低 JDK 版本: 如果你不想升级 Lombok,可以尝试降低你的 JDK 版本。例如,你可以将 JDK 版本降到 1.8。
  2. 配置 Maven 编译器插件: 确保你使用的是最新版本的 Maven 编译器插件1。在你的 pom.xml 文件中添加以下依赖:
<dependency>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.1</version>
    </dependency>
    ```
  1. 清理并重新构建项目: 在进行以上修改后,请清理并重新构建项目以验证问题是否已解决:

完成打包

target/z-server.jar

放入对应服务器的文件目录下,

接下来 导入数据库,


蜻蜓z系统 雪花版做了演员数据库 量很大,几十万条,还有其他影视采集数据,所以数据集100多M,需要慢慢等待,等后面 我们再处理清空一次。

找到服务器的 java 项目配置,这里我们服务器也要对应是 jdk 17的版本 毕竟本地是17版本打包的。

目录选择 我们刚刚放好的jar包,一个个添加,端口对应自己弄,自己放行。

提示application-druid.yml 这个数据库文件没有改

这时候数据库已经好了,我们去导入先,然后重新打包并且上传jar,这里卓伊凡不再重复步骤

一运行,启动失败,一看原来是数据库配置 mysql://localhost:3306 这里都能写错,还有这里下面顺便改了,端口要对应,还有上传目录

还有server 这里的 也要改

at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166) at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:722) at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:658) at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:584) at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:496) at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:995) at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) at java.lang.Thread.run(Thread.java:745)

pia ,这堆报错 直接给卓伊凡一顿搓,这下老实了,这段错误堆栈信息表明在使用 Netty 的过程中发生了异常

看来我们本地还是老老实实用jdk1.8吧,前同事留下来的就是jdk1.8所以我们还是老实了

然后又是一堆

... 61 common frames omitted
Caused by: io.lettuce.core.RedisConnectionException: Unable to connect to 127.0.0.1:6379
    at io.lettuce.core.RedisConnectionException.create(RedisConnectionException.java:78)
    at io.lettuce.core.RedisConnectionException.create(RedisConnectionException.java:56)
    at io.lettuce.core.AbstractRedisClient.getConnection(AbstractRedisClient.java:330)
    at io.lettuce.core.RedisClient.connect(RedisClient.java:216)
    at org.springframework.data.redis.connection.lettuce.StandaloneConnectionProvider.lambda$getConnection$1(StandaloneConnectionProvider.java:115)
    at java.util.Optional.orElseGet(Optional.java:267)
    at org.springframework.data.redis.connection.lettuce.StandaloneConnectionProvider.getConnection(StandaloneConnectionProvider.java:115)
    at org.springframework.data.redis.connection.lettuce.LettucePoolingConnectionProvider.lambda$null$0(LettucePoolingConnectionProvider.java:97)
    at io.lettuce.core.support.ConnectionPoolSupport$RedisPooledObjectFactory.create(ConnectionPoolSupport.java:211)
    at io.lettuce.core.support.ConnectionPoolSupport$RedisPooledObjectFactory.create(ConnectionPoolSupport.java:201)
    at org.apache.commons.pool2.BasePooledObjectFactory.makeObject(BasePooledObjectFactory.java:58)
    at org.apache.commons.pool2.impl.GenericObjectPool.create(GenericObjectPool.java:918)
    at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:431)
    at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:356)
    at io.lettuce.core.support.ConnectionPoolSupport$1.borrowObject(ConnectionPoolSupport.java:122)
    at io.lettuce.core.support.ConnectionPoolSupport$1.borrowObject(ConnectionPoolSupport.java:117)
    at org.springframework.data.redis.connection.lettuce.LettucePoolingConnectionProvider.getConnection(LettucePoolingConnectionProvider.java:103)
    ... 62 common frames omitted
Caused by: io.lettuce.core.RedisCommandExecutionException: WRONGPASS invalid username-password pair or user is disabled.
    at io.lettuce.core.internal.ExceptionFactory.createExecutionException(ExceptionFactory.java:147)
    at io.lettuce.core.internal.ExceptionFactory.createExecutionException(ExceptionFactory.java:116)
    at io.lettuce.core.protocol.AsyncCommand.completeResult(AsyncCommand.java:120)
    at io.lettuce.core.protocol.AsyncCommand.complete(AsyncCommand.java:111)
    at io.lettuce.core.protocol.CommandHandler.complete(CommandHandler.java:746)
    at io.lettuce.core.protocol.CommandHandler.decode(CommandHandler.java:681)
    at io.lettuce.core.protocol.CommandHandler.channelRead(CommandHandler.java:598)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
    at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
    at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)
    at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:722)
    at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:658)
    at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:584)
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:496)
    at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:995)
    at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
    at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
    at java.lang.Thread.run(Thread.java:745)

配置redis

一看是,redis配置,对了这个忘记了

修改和服务器对应的redis信息

部署jar包

终于成功一个, 然后 第二个 报错,由于pagehelp 又改了一些

报错

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'com.github.pagehelper.autoconfigure.PageHelperAutoConfiguration': Invocation of init method failed; nested exception is org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'com.github.pagehelper.autoconfigure.PageHelperAutoConfiguration': Requested bean is currently in creation: Is there an unresolvable circular reference? 2025-02-10 20:54:22.038 INFO 516100 --- [ main] o.apache.catalina.core.StandardService : Stopping service [Tomcat] 2025-02-10 20:54:22.064 INFO 516100 --- [ main] ConditionEvaluationReportLoggingListener :
Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. 2025-02-10 20:54:22.095 ERROR 516100 --- [ main] o.s.b.d.LoggingFailureAnalysisReporter :
APPLICATION FAILED TO START
Description:
The dependencies of some of the beans in the application context form a cycle:
-> | com.github.pagehelper.autoconfigure.PageHelperAutoConfiguration <-
Action:
Relying upon circular references is discouraged and they are prohibited by default. Update your application to remove the dependency cycle between beans. As a last resort, it may be possible to break the cycle automatically by setting spring.main.allow-circular-references to true.

手动配置 pagehelp的方案

import com.github.pagehelper.PageHelper;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.Properties;
@Configuration
public class PageHelperConfig {
    @Bean
    public PageHelper pageHelper() {
        PageHelper pageHelper = new PageHelper();
        Properties p = new Properties();
        p.setProperty("helperDialect", "mysql");
        p.setProperty("reasonable", "true");
        p.setProperty("supportMethodsArguments", "true");
        p.setProperty("params", "count=countSql");
        pageHelper.setProperties(p);
        return pageHelper;
    }
}

终于两个都成功了

admin的Nginx访问添加以及伪静态

回到添加网站,添加ffadmin 先

伪静态配置

location / {
  try_files $uri $uri/ /index.html;
}

打包admin的文件

由于前车之鉴 我们还是不要自作聪明拉,根目录打开项目 ,并且npm install

修改请求地址

执行打包命令:

npm run build:prod

然后又报错,,

各种依赖不匹配,版本原来是 大于14小于15,

切换16.14.3版本

部署dist后台前端

成功打包

将dist目录里面的文件 放入网站ffadmin里面,

添加ff服务端了,添加完了 突然反应过来地址错了,应该用ff,也就是后端请求这个地址应该用ff才对,ff才是server admin 是后台。

配置服务端伪静态

对应伪静态:

location / {
  try_files $uri $uri/ /index.html;
}
location /prod-api/{
  proxy_set_header X-Forwarded-Scheme https;
  proxy_set_header Host $http_host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header REMOTE-HOST $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_pass http://127.0.0.1:8796/; 
}

重新再打包下admin的vue,

访问提示跨域,卓伊凡就没明白怎么就又不对

然后终于又找到解决问题的地方,

哎!!!java的项目流程复杂,所以每天都有一万多个问题,因此贵有贵的道理,真复杂。

这个地址一旦不一致就要跨域,

这段代码配置了Vue CLI的代理设置,用于开发环境中的API请求转发。具体功能如下:
将process.env.VUE_APP_BASE_API指定的API路径请求转发到http://localhost:8796。
启用changeOrigin以解决跨域问题。
使用pathRewrite去掉请求路径中的process.env.VUE_APP_BASE_API前缀。

最后还有个这个方法,但是没试,因为已经可以了,这篇文章耗费心力,但是非常值得 直接提升我们团队 开发效率,让每个同事都能搭建!

目录
相关文章
|
11天前
|
Kubernetes 应用服务中间件 nginx
【赵渝强老师】K8s中Pod探针的TCPSocketAction
在K8s集群中,kubelet通过探针(如livenessProbe、readinessProbe和startupProbe)检查容器健康状态。探针支持HTTPGetAction、ExecAction和TCPSocketAction三种检查方法。本文重点介绍TCPSocketAction,它通过尝试建立TCP连接来检测容器的健康状况。示例中创建了一个Nginx Pod,并配置了两个探针(readinessProbe和livenessProbe),它们每隔5秒检查一次容器的8080端口,首次检查在启动后10秒进行。若连接失败,容器将重启。视频讲解和命令演示进一步详细说明了这一过程。
140 83
|
12天前
|
机器学习/深度学习 存储 人工智能
《深度剖析:Q-learning与策略梯度方法的本质区别》
在强化学习领域,Q-learning和策略梯度方法是两种重要的算法。Q-learning通过迭代更新状态-动作值(Q值),评估动作价值,适用于离散动作空间;策略梯度方法则直接优化参数化策略,适合连续动作空间。前者收敛稳定但速度较慢,后者收敛快但稳定性差。两者各有优劣,适用于不同场景。
67 27
|
28天前
|
安全 网络安全 数据库
Access denied for user ‘qingtingstpublic’@’171.213.253.88’ (using password: YES)宝塔数据库远程无法连接-宝塔数据远程无法连接的正确解决方案-优雅草央千澈-问题解决
Access denied for user ‘qingtingstpublic’@’171.213.253.88’ (using password: YES)宝塔数据库远程无法连接-宝塔数据远程无法连接的正确解决方案-优雅草央千澈-问题解决
45 28
|
17天前
|
Dart 前端开发 容器
【07】flutter完成主页-完成底部菜单栏并且做自定义组件-完整短视频仿抖音上下滑动页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【07】flutter完成主页-完成底部菜单栏并且做自定义组件-完整短视频仿抖音上下滑动页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
66 18
【07】flutter完成主页-完成底部菜单栏并且做自定义组件-完整短视频仿抖音上下滑动页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
|
19天前
|
Dart 前端开发
【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
112 75
【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
|
13天前
|
人工智能 自然语言处理 Java
Spring AI,搭建个人AI助手
本期主要是实操性内容,聊聊AI大模型,并使用Spring AI搭建属于自己的AI助手、知识库。本期所需的演示源码笔者托管在Gitee上(https://gitee.com/catoncloud/spring-ai-demo),读者朋友可自行查阅。
966 42
Spring AI,搭建个人AI助手
|
12天前
|
机器学习/深度学习 人工智能 算法
《深度剖析Q-learning中的Q值:解锁智能决策的密码》
Q-learning是强化学习中的重要算法,其核心是Q值,即智能体在特定状态下采取某一动作后预计能获得的长期累积奖励。Q值如同“智慧密码”,指导智能体做出最优决策。通过贝尔曼方程更新Q值,智能体能在探索与利用之间找到平衡,逐渐学习到最优策略。在简单场景中,Q表可有效存储和更新Q值;而在复杂场景如自动驾驶中,则需借助深度神经网络近似Q值函数,推动强化学习在实际应用中的突破。
69 23
|
12天前
|
机器学习/深度学习 算法 自动驾驶
《深度剖析:Q-learning为何被归为无模型强化学习算法》
Q-learning是无模型的强化学习算法,不依赖环境模型,而是通过与环境实时交互学习最优策略。它通过更新状态-动作值函数(Q函数)来评估行动价值,适用于多变环境,具有灵活性和简单性优势。然而,Q-learning探索效率较低,样本复杂性高,需大量尝试才能找到有效策略。这种特性使其在实际应用中既有机会也有挑战。
80 24
|
2天前
|
前端开发 JavaScript Java
【03】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架搭建-服务端-后台管理-整体搭建-优雅草卓伊凡商业项目实战
【03】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架搭建-服务端-后台管理-整体搭建-优雅草卓伊凡商业项目实战
38 13
【03】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架搭建-服务端-后台管理-整体搭建-优雅草卓伊凡商业项目实战
|
17天前
|
API 开发工具 Android开发
【01】完整开发即构美颜sdk的uni官方uts插件—让所有开发者可以直接使用即构美颜sdk的能力-优雅草卓伊凡
【01】完整开发即构美颜sdk的uni官方uts插件—让所有开发者可以直接使用即构美颜sdk的能力-优雅草卓伊凡
63 23
【01】完整开发即构美颜sdk的uni官方uts插件—让所有开发者可以直接使用即构美颜sdk的能力-优雅草卓伊凡

热门文章

最新文章