2022-09-24 张鑫 第二小组 学习笔记 八股文(未完待续)

数据库JDBC

1.数据库的三范式

  • 第一范式-对列原子性,字段不能再拆分
  • 第二范式-非主键依赖主键
  • 第三范式-非主键直接依赖主键,不存在传递依赖,避免数据冗余

2.Mysql常用引擎

  • InnoDB 5.1版本后,提供数据库事务支持,行级锁和外键约束,并发度高使用
  • MyIASM 不提供事务支持,不支持行级锁和外键,读操作远多于写操作时使用

3.获取数据库版本

  • select version()

4.ACID

  • A(原子性) 一个事物的操作要么全部完成,要么全部不完成
  • C(一致性) 事务开始前和结束后,数据库完整性不会被破坏
  • I(隔离性) 允许多个并发事务同时进行读写修改能力
  • D(持久性) 事务结束后的修改是永久的

5.char与varchar

  • char 固定长度 varchar 可变长度

6.float与double

  • float存储8位十进制数,内存占4字节
  • double存储16位十进制数,内存占8字节

7.内连接,左连接,右连接

  • 内连接 inner join 把匹配的关联数据显示出来
  • 左连接 left join 把左表全部展示
  • 右连接 right join 把右表全部展示

8.数据库的索引,实现方式,验证方式

  • 普通索引 唯一索引 主键索引 联合索引
  • 实现方式-B树
  • 验证方式-explain语句

9.数据库事务隔离

  • 事务是逻辑上的一组数据库操作,要么都执行,要么都不执行
  • 读未提交
  • 读已提交
  • 可重复读
  • 可串行化
  • 脏读
  • 不可重复读
  • 幻读

10.行锁表锁 乐观锁悲观锁

  • 表级锁 不会出现死锁 并发度最低
  • 行级锁 会出现死锁并发度最高
  • 乐观锁 每次用不上锁,更新提交后判断别人是否更新
  • 悲观锁 每次用上锁,别人用不了直到锁释放

11.JDBC使用步骤

  • 加载驱动
  • 创建连接
  • 创建命令
  • 处理结果

12.Statement和PreparedStatement区别

  • 预编译
  • 支持?操作
  • 防止SQL注入

13.SQL注入

  • Web安全漏洞
  • 交互时数据传入被拼接到SQL语句
  • 相关参数未经过滤

14.MYSQL问题排查

  • show processlist 查看所有连接信息
  • explain 查询SQl语句执行计划
  • 慢查询日志 查看慢查询

15.MYSQL性能优化

  • 创建索引
  • 不使用select *
  • 垂直分割分表
  • 存储引擎

JavaWeb

1.HTTP协议

  • 超文本传输,规定浏览器-服务器之间的数据传输规则
  • 基于TCP 面向连接 应用层协议
  • 基于请求
  • 无状态协议

2.Http和Https的区别

  • HTTP 不安全 数据拦截 数据攻击 数据篡改
  • HTTPS 安全 数据加密 身份验证 保证完整性 对称加密 非对称加密

3.请求与响应

  • 请求行(请求方法 请求URL HTTP协议版本),头,体
  • 响应行(报文协议版本 状态码及描述),头,体

4.Get和Post区别

  • 请求参数 Get 地址栏可见 Post不可见 在请求体中
  • URL长度 Get有限制 Post无限制
  • 安全性 Get不安全敏感数据地址栏可见 Post不可见 相对安全

5.Servlet执行流程,生命周期

  • 初始化
  • 提供服务
  • 销毁

6.请求转发与重定向区别

  • 请求转发 服务器跳转 产生一次请求 URL地址栏不可见 可共享请求对象
  • 重定向 浏览器跳转 产生两次请求 URL地址栏可见 不可共享Request对象,需选择Session

7.四大作用域

  • page jsp
  • request 当前请求
  • session 一次会话
  • application web加载

8.Cookie和Session

  • Cookie 为会话存储的键值信息 不可跨域名 有效期限制 不安全 不超过4K
  • Session 服务器端基于内存的缓存技术 保存每个用户的会话数据 通过ID区分用户 也有失效时间
  • 服务器设置Cookie -> 浏览器接收并保存,下次请求携带Cookie -> sessionID被服务器设置进cookie 以后浏览器请求携带id,服务器进行检索对应session

9.Servlet和Jsp区别

  • Servlet 服务器端小应用程序
  • Jsp 服务器端页面技术
  • 联系 都是服务器处理动态资源技术(Tomcat) 接收HTTP请求,返回HTTP应答 JSP实现转化Servlet
  • 区别 Servlet强调类,控制转发 JSP强调页面,显示页面 JSP是Servlet简化

10.JSP九大内置对象

  • request 请求对象
  • response 响应对象
  • session 用户会话
  • application 应用全局对象
  • out 输出对象
  • page 当前页面对象
  • pageContext 页面上下文对象
  • config 应用配置对象
  • exception 应用异常对象

11.Servlet和Filter的区别?

  • Servlet 服务器小应用程序 继承HttpServlet 处理业务 后执行
  • Filter 过滤器 实现Filter接口 辅助过滤 先执行

12.MVC

  • 分层开发模式

  • M Model 业务模型,处理业务

  • V View 视图 ,界面展示

  • C Controller 控制器,处理请求和视图

  • 控制器(serlvlet)用来接收浏览器发送过来的请求,控制器调用模型(JavaBean)来获取数据,比如从数据库查询数据;控制器获取到数据后再交由视图(JSP)进行数据展示。

  • 优点 职责单一互不影响,各司其职 利于分工协作 利于组件重用

13.三层架构

  • 表现层 接受请求,封装数据,调用业务逻辑层,响应数据
  • 业务逻辑层 对业务逻辑封装,组合数据访问层中基本功能
  • 数据访问层 对数据库的基本操作

14.Tomcat优化

  • 去除web.xml监视
  • 将JSP提前编译成Servlet
  • 加大Tomcat的JVM使用内存
  • 解决JRE内存泄漏
  • 线程池
  • 缓存压缩
  • 采用集群

Java基础

1.面向对象

  • 面向对象:注重参与者,各自需要做的事,易于复用、扩展和维护
  • 面向过程:注重步骤及顺序,更加高效直接

2.三大特征

  • 封装 明确标识允许外部使用的所有成员函数和数据项
  • 继承 继承基类方法,并作出自己的改变和扩展
  • 多态 基于对象所属类的不同,外部对同一方法的调用

3.JDK JRE JVM

  • JDK java 开发工具
  • JRE java 运行环境
  • JVM java 虚拟机

4.==与equals

  • ==对比栈中值,基本数据类型是变量值,引用类型比较地址
  • equals:object默认采用==比较,重写后比较内容

5.hashCode和equals

  • hashCode获取哈希码(散列表),返回一个int整数,确定对象在哈希表中索引位置
  • 散列表存储的是键值对,特点:依据键快速检索对应的值
  • 如果equals比较两个对象相等,那么调用hashCode一定会生成相同整数 必须同时被覆盖

6.final

  • 最终的 修饰类:类不可被继承 修饰方法:方法不可被子类覆盖,可以重载 修饰变量:变量一旦赋值就不可改变
  • 类变量-只能在静态初始化块中指定初始值或声明该类时指定 成员变量-可以在非静态初始化块,声明该变量或者构造器中执行初始值
  • 局部变量-可以定义时指定默认值(后续不能赋值),也可以不指定默认值,在后面对final赋值(仅一次)
  • 基本数据类型变量-初始化后不可更改 引用类型-初始化后不能指向另一对象,但值可变

7.string stringbuffer stringbuilder

  • string final修饰 不可变 每次操作生成一个新的string对象 性能差
  • stringbuffer 操作原对象 线程安全 都是synchronized修饰 性能好
  • stringbuilder 操作原对象 线程不安全 性能最好

8.重写和重载

  • 重载 同一个类中 方法名必须相同 参数类型,个数,顺序不同 方法返回值和访问修饰符在编译时可以不同
  • 重写 发生在父子类中 方法名,参数列表必须相同 返回值,抛出异常的范围小于父类 访问修饰符范围大于父类 若父类修饰符private不能重写

9.抽象类 接口

  • 抽象类 可以定义构造器 可以有抽象方法和具体方法 成员类型不限 可以定义成员变量 包含静态方法 若含有抽象方法则必须声明抽象类 有抽象类的未必是抽象方法 一个类只能继承一个抽象类
  • 接口 不能定义构造器 方法都是抽象方法 成员全是public 成员变量实际都是常量 不能有静态方法 一个类可以实现多个接口

10.List Set

  • List 有序 可重复 允许多个Null对象
  • Set 无序 不可重复 最多只允许一个Null对象

11.ArrayList LinkedList

  • ArrayList 基于动态数组 连续内存存储 适用大量数据读取
  • LinkedList 基于链表 遍历基于指针 适用于频繁的新增和插入

12.HashMap HashTable

  • HashMap没有synchronized修饰,线程非安全 允许key和value为null
  • HashTable 线程安全 不允许key和value为空

13.HashMap 原理

  • 1.5 引入ConcurrentHashMap
  • 1.6 对synchronized锁进行优化,锁升级
  • 1.7 数据结构-数组+链表
  • 1.8 新增红黑树

14.字节码

  • 虚拟机理解的代码(.class文件)只面向虚拟机
  • 优点 程序运行更加高效,可在多种不同计算机运行

15.异常体系

  • 顶级父类 Throwable
  • 子类 Exception 异常 RunTimeException 运行期异常-导致执行失败 CheckedException 编译器异常-导致程序不通过
  • 子类 Error 错误 程序无法处理

16.Throw Throws finally

  • Throw 作为方法中的内容 执行一定抛出某种异常
  • Throws 在方法外声明 表示出现异常的可能
  • finally 无论是否抛出异常都执行

17.IO流

  • 字节流 - InputStream : OutputStream
  • 字符流 - Reader : Writer
  • 缓冲流 - BufferedInputStream BufferedReader : BufferedOutputStream BufferedWriter
  • 数据流 - DataInputStream : DataOutputStream
  • 对象流 - ObjectInputStream : ObjectOutputStream

18.线程创建

  • 继承Thread类
  • 实现Runnable接口
  • 实现Callable接口
  • 基于线程池

19.线程的生命周期

  • New 新建 创建新线程
  • Runnable 就绪 位于可运行线程池中,等待获取CPU
  • Running 运行 获取CPU 执行程序代码
  • Blocked 阻塞 因某种原因放弃CPU使用权,暂停运行
  • Waiting 等待 等待其他线程执行某一特定动作
  • Dead 死亡 执行完毕或因异常退出

20.进程与线程

  • 进程让操作系统的并发性成为可能 线程让进程内部并发成为可能
  • 一个进程包括多个线程,共占进程占有的内存地址空间和资源
  • 进程是操作系统资源分配的基本单位 线程是操作系统调度的基本单位

21.start run

  • start() 执行thread线程 创建新的子线程并使用 真正实现多线程
  • run() 执行main线程 方法的普通调用

22.锁池 等待池

  • 锁池 竞争同步锁的线程都会放进锁池
  • 等待池 调用wait方法后,线程进入等待池,不会竞争同步锁,只通过notify()或notifyAll()才会释放进入锁池去竞争锁

23.sleep wait

  • sleep是Thread类静态本地方法 wait是Object类的本地方法
  • sleep不会释放lock wait会释放,并加入等待队列
  • sleep不依赖同步器synchronized wait需要依赖synchronized关键字
  • sleep不需要被唤醒 wait需要
  • sleep一般用于线程休眠,轮循暂停 wait用于线程通信
  • sleep会让出CPU执行时间强制上下文切换 wait不一定

24.yield join

  • yield 让步 执行后线程直接进入就绪状态 释放CPU执行权,但依然保留执行资格
  • join 执行后线程进入阻塞状态 直至调用的线程结束

25.线程安全

  • 当多个线程访问一个对象时,如果不用进行额外同步控制或其他协调操作,调用这个对象的行为都可以获得正确结果,就是线程安全的
  • 堆 共有的空间 所有线程都能访问该区域 造成问题的潜在原因
  • 栈 独有的 在线程开始时初始化 相对独立 线程安全

26.Thread Runable

  • Thread和Runable存在继承关系
  • Thread适用于复杂的线程操作需求
  • Runable适用简单执行一个任务

27.守护线程

  • 后台线程 为所有非守护线程提供服务的线程
  • 程序结束时必须正常且立刻关闭
  • 必须在线程启动前设置
  • 垃圾回收线程

28.ThreadLocal

  • 每一个Thread都含有ThreadLocalMap类型的成员变量threadlocals,用来存储线程中所有的ThreadLocal对象及其对应值
  • 用于 对象跨层传递 线程间的数据隔离了 事务操作存储线程事务信息 数据库连接 Session会话管理
  • 正确使用方法 每次使用后调用remove()清除数据 将ThreadLocal定义为private static

29.并发 并行 串行

  • 串行 时间上不重叠 前一任务没结束 下个任务只能等待
  • 并行 时间上重叠 两个任务同一时刻互不干扰进行
  • 并发 两个任务比此干扰 同一时间点只有一个任务运行 交替运行

30.并发三大特性

  • 原子性 一个操作必须全部执行完毕,否则都不执行
  • 可见性 多线程访问同一变量时 一个线程修改 其他线程都能看到修改的值
  • 有序性 虚拟机编译代码时可能会对改变顺序但不影响最终结果的代码进行重排序

31.线程池

  • 避免线程频繁创建和销毁带来的性能消耗建立的一种池化技术
  • 优点 降低资源消耗,提高利用率 提高响应速度 提高可管理性 限制最大并发

32.线程池拒绝策略

  • AbortPolicy 直接抛异常 组织线程运行
  • DiscardPolicy 丢弃当前线程任务不做任何处理
  • DiscardOldestPolicy 移除线程队列最早的线程任务并尝试重新提交当前任务
  • CallerRunsPolicy 如果被丢弃的线程任务未关闭则执行该线程任务

33.线程池阻塞队列

  • 是一个支持两个附加操作的队列
  • 在队列为空时,获取元素的线程会等待队列变为非空
  • 当队列满时,存储元素的线程会等待队列可用
  • 阻塞队列通过阻塞保留当前想要继续入队的任务 当任务对列没有任务时再获取任务的线程 使得线程进入wait状态释放CPU
  • 自带阻塞和唤醒功能

34.线程复用

  • 将线程与任务解耦
  • 在线程池中 同一个线程可以从阻塞队列不断获取新任务执行
  • 核心原理:对Thread封装 调用任务中的run方法

35.锁

  • 悲观锁 认为其他线程会修改数据,因此在修改时会锁定线程 容易造成死锁
  • 乐观锁 认为数据修改不会发生冲突 只是在数据提交更改时才会对数据检测 不会造成死锁
  • 独占锁 只能被单线程持有 悲观锁
  • 共享锁 只能被多线程持有 乐观锁
  • 可重入锁 递归锁 外层拥有内层依然可以继续获取

36.synchronized Lock

  • Lock 一个接口 发生异常时需要在finally中手动释放 可以让等待锁的线程中断 可以提高多个线程读操作的效率
  • synchronized 一个关键字 有C语言实现 发生异常会自动释放线程锁不会发上死锁 只能让等待的线程一直等待下去

37.synchronized volatile

  • volatile可以保证内存可见性 禁止指令重排 用于多线程下的一写多读
  • volatile 是变量修饰符 仅能实现变量修改可见性 不能保证原子性 不会造成线程阻塞
  • synchronized 是修饰类 方法 代码段 可以保证可见性和原子性 会造成线程阻塞

38.TCP

  • 面向连接网络通信协议 传输数据前在发送端和接收端建立逻辑连接再传输数据
  • 三次握手 一握 客户端向服务器发送请求等待确认 二握 服务器给出响应,通知客户端收到请求 三握 客户端再次发送请求确认连接
  • 四次挥手 一挥 TCP客户端发送数据请求关闭到服务器的传输 二挥 服务器接受数据后发回确认序号为收到序号+1 三挥 服务器关闭连接 发送数据给客户端 四挥 客户端发回数据确认,将确认序号设置为序号+1

39.tcp udp

  • tcp 面向连接 数据传输慢
  • udp 面向非连接即发送数据前不需要建立连接 数据传输快

40.JVM

  • 可运行Java代码的虚拟计算机 包括一套字节码 一组寄存器 一个栈 一个堆 一个垃圾回收 一个存储方法域
  • 运行过程 Java源文件->编译器->字节码文件->JVM->机器码
  • 线程分类 主线程(main) 用户线程(Thread) 守护线程(系统线程)GC线程
  • 类加载机制:加载 验证 准备 解析 初始化
  • 双亲委派机制 一个类收到加载请求,先将其委派给父类

41.反射

  • 在运行状态中,对任意一个类都能知道这个类所有的属性和方法;并且能够调用它的任意方法
  • API Class类 反射核心 可以获取类属性 方法等信息 Field类 表示类的成员变量 用来获取和设置类中属性值 Methods类 表示类的方法 可以用来获取和设置类之中的属性值 Constructor 表示类的构造方法
  • 反射是框架 开发的基础

42.动态语言

  • 程序运行时可以改变其结构
  • JavaScript ruby python
  • 从反射角度Java属于半动态语言

43.获取Class对象

  • 调用某个对象的getClass()方法
  • 调用某个类的class属性获取该类对应的Class对象
  • 使用Class类中的forName()静态方法(最安全,性能最好)

44.注解

  • Annotation 是Java提供的一种对元程序中元素关联信息和元数据的途径和方法
  • 是一个接口 程序通过反射获取指定对象 再通过该对象获取注解中的元信息
  • 分类 容器提供 自定义

45.数据结构

46.算法

47.设计模式

  • 分类 创造型模式 结构型模式 行为型模式
  • 单例模式 一个类有且只有一个实例,并且自行实例化,向整个系统提供
  • 饿汉式 创建对象实例直接初始化 空间换时间
  • 懒汉式 类内实例对象创建时不初始化,知道第一次调用get方法 时间换空间

框架

MyBaits

  • 采用实体关系映射并可以自定义SQL持久层框架
  • 缓存 一级缓存 放在sqlsession默认就有 二级缓存 放在命名空间中 使用二级缓存属性类需要实现序列化接口 可在映射文件中配置
  • 分页 使用RowBounds对象 或直接编写sql 也可以使用分页插件-PageHelper
  • 动态SQl 可以在Xml映射中以标签形式编写动态sql 完成逻辑判断与动态拼接sql功能
    9种动态标签:where set foreach choose when otherwise bind trim
    执行原理 使用OGNL从sql中计算表达式值 根据值动态拼接sql
  • ·#{}预编译动态传参 可以防止SQL注入提高系统安全
    ${}字符串替换
  • 好处 把sql语句独立 放在单独XML文件 便于维护
    封装底层API 简化数据库编程的重复工作
    可自定义sql语句 提高效率和完成复杂查询
  • 通过配置执行一对一 在类中配置类型属性
    通过配置执行一对多 在类中配置List集合
  • 调用要求 Mapper接口方法名和xml种sql的id相同
    输入参数类型和sql的parameterType类型相同
    输出参数类型和sql的resultType类型相同
    xml中的namesapce就是接口的类路径

Spring

  • 分层的开源框架 以IOC和AOP为内核
  • IOC 控制反转 由传统手工管理new对象 反转成Spring容器管理 应用IOC后容器主动将需要依赖Bean对象推送给它所管理的组件 叫依赖注入 可以降低代码耦合度
  • AOP 面向切面 将日志记录 安全控制事务处理异常处理等代码划分形成切面类,可以在运行主要业务时通过代理自动添加方法 扩展方法功能

SpringMVC

  • Spring的一个模块基于MVC的一个web框架
  • 流程 1.用户发送请求经过Filter至前端控制器
    2.前端收到请求调用HandlerMapping处理器映射器
    3.处理器映射器找到具体的处理器,生成处理器对象及处理器拦截器返回前端控制器
    4.前端控制器调用HandlerAdapter处理器适配器
    5.HandlerAdapter经配置调用后端控制器
    6.后端控制器执行完成返回ModelAndView
    7.HandlerAdapter将结果返回给前端控制器
    8.前端控制器将结果传给视图解析器
    9.视图解析后返回具体View
    10.前端控制器根据View渲染视图响应给用户

栈和对列

  • 栈 先进后出 java虚拟机栈只是JVM当中的一块内存,该内存一般用来存局部变量 当调用函数时,我们会为函数开辟一块内存,叫做 栈帧,在 java虚拟机栈中开辟
  • 对列 只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表 先进先出

Servlet和Jsp区别

  • Servlet 服务器端小应用程序
  • Jsp 服务器端页面技术
  • 联系 都是服务器处理动态资源技术(Tomcat) 接收HTTP请求,返回HTTP应答 JSP实现转化Servlet
  • 区别 Servlet强调类,控制转发 JSP强调页面,显示页面 JSP是Servlet简化
  • json是用来存储简单的数据结构和对象的文件

冒泡排序

  • 冒泡排序的原理是:从左到右,相邻元素进行比较。每次比较一轮,就会找到序列中最大的一个或最小的一个。这个数就会从序列的最右边冒出来

循环和递归

  • 递归 自己调用自己 写法简洁 但是容易造成栈溢出问题
  • 循环 一个正向的过程

SSM

  • spring实现业务对象管理,使用spring MVC负责请求的转发和视图管理,mybatis作为数据对象的持久化引擎
    前置通知
    环绕通知
    后置通知
    异常通知
    最终通知
  • mybatis是对jdbc的封装,它让数据库底层操作变的透明。mybatis的操作都是围绕一个sqlSessionFactory实例展开的。mybatis通过配置文件关联到各实体类的Mapper文件,Mapper文件中配置了每个类对数据库所需进行的sql语句映射。在每次与数据库交互时,通过sqlSessionFactory拿到一个sqlSession,再执行sql命令
    -1.mvc-客户端发送请求到DispacherServlet(分发器)2.由DispacherServlet控制器查询HanderMapping,找到处理请求的Controller 3.Controller调用业务逻辑处理后,返回ModelAndView 4.DispacherSerclet查询视图解析器,找到ModelAndView指定的视图 5.视图负责将结果显示到客户端
    @Controller注解的类不需要继承特定的父类或者实现特定的接口,相对之前的版本实现Controller接口变的更加简单
    @RequestParam注解,该注解类型用于将指定的请求参数赋值给方法中的形参。
  • IOC(控制反转)
    它可以装载bean,也是一种降低对象之间耦合关系的设计思想。(比如租房子。以前租房子需要一个房子一个房子找,费时费力,然后现在加入一个房屋中介,把你需要的房型告诉中介,就可以直接选到需要的房子,中介就相当于spring容器。)
  • AOP(面向切面)
    是面向对象开发的一种补充,它允许开发人员在不改变原来模型的基础上动态的修改模型以满足新的需求,如:动态的增加日志、安全或异常处理等。AOP使业务逻辑各部分间的耦合度降低,提高程序可重用性,提高开发效率

vue

  • vue是一个js框架,提供了一套开发规则,按照这个开发规则可提高开发效率
    v-for 通过数据动态遍历标签
    v-text更新替换标签内容,文本
    v-html更新替换标签内容,html
    v-if是动态的向dom树内添加或者删除DOM元素
    v-show是通过设置DOM元素的display样式属性控制显示隐藏编译过程 v-if有更高的切换消耗;v-show有更高的初始渲染消耗
    v-on在基于vue的程序中绑定事件
    v-model 数据的双向绑定

切面

1、切面(aspect):类是对物体特征的抽象,切面就是辅助功能的抽象
2、横切关注点:对哪些方法进行拦截,拦截后怎么处理,这些关注点称之为横切关注点。
3、连接点(joinpoint):被拦截到的点,因为 Spring 只支持方法类型的连接点,所以在
Spring 中连接点指的就是被拦截到的方法,实际上连接点还可以是字段或者构造器。
4、切入点(pointcut):对连接点进行拦截的定义(目标对象包)
5、通知(advice):所谓通知指的就是指拦截到连接点之后要执行的代码,通知分为前置、后
置、异常、最终、环绕通知五类。
6、目标对象(target):代理的目标对象
7、织入(weave):将切面应用到目标对象并导致代理对象创建的过程
8、引入(introduction):在不修改代码的前提下,引入可以在运行期为类动态地添加一些方
法或字段。(Aop最终效果)

开始创建、初始化数据、编译模版、挂载Dom -> 渲染、更新 -> 渲染、卸载 等⼀系列过程,称这是Vue的⽣命周期

代理模式

代理模式的定义:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。

posted @   菜鸡成长记  阅读(78)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示