<转>getResourceAsStream和getResource的用法

本文详细介绍了Java中使用getClass().getResourceAsStream()与getClass().getResource()方法来加载资源的具体方式及区别。通过示例代码展示了如何读取文件内容,并解释了路径指定的重要性。

getResourceAsStream:查找具有给定名称的资源。返回InputStream

getResource:查找带有给定名称的资源路径。返回URL

简单示例:(注:任何一个类都有一个getClass()的方法)

public class Test {
 public void getResource(String url){
  InputStream stream = getClass().getResourceAsStream(url);


  System.out.println(getClass().getResource(url));


  byte[] line = new byte[1024*1024];
  try {
   stream.read(line);
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  String str = new String(line);


  System.out.println(str.trim());


 }
 
 public static void main(String[] args) {
  new Test().getResource("/io/aaa.txt");
 }
}
运行结果:
file:/D:/IBM/workspace/HtmlParser/io/aaa.txt


abceefghijklmn

 


第一行得到的是aaa.txt的路径,

第二行是aaa.txt的内容。


需要注意的是必须有前面的“/”,代表的是工程目录,否则找不到。

 

 

 

 

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Emp表的CRUD操作</title> <!-- 引入样式 --> <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css"> <link rel="icon" href="data:;base64,iVBORw0KGgo="> </head> <body> <div id="app"> <el-table :data="tableData" style="width: 100%;margin: auto"> <el-table-column fixed prop="empNo" label="编号" width="120"> </el-table-column> <el-table-column prop="ename" label="姓名" width="150"> </el-table-column> <el-table-column prop="job" label="职位" width="120"> </el-table-column> <el-table-column prop="mgr" label="上司ID" width="120"> </el-table-column> <el-table-column prop="hireDate" label="入职时间" width="300"> </el-table-column> <el-table-column prop="sal" label="工资" width="120"> </el-table-column> <el-table-column prop="comm" label="奖金" width="120"> </el-table-column> <el-table-column prop="deptNo" label="部门ID" width="120"> </el-table-column> <el-table-column fixed="right" label="操作" width="120"> <template slot-scope="scope"> <el-button type="text" size="small"> 移除 </el-button> </template> </el-table-column> </el-table> </div> </body> </html> <script src="js/vue.min.js"></script> <script src="js/axios.min.js"></script> <!-- 引入组件库 --> <script src="https://unpkg.com/element-ui/lib/index.js"></script> <script> new Vue({ el: '#app', data() { return { tableData: [] } }, methods: { loadEmpData() { axios({ method: 'get', url: 'emp_find_all', }).then(resp => { this.tableData =JSON.parse(resp.data.data) }) } }, created() { this.loadEmpData(1) } }) </script>package service.EmpServicelmpl; import com.alibaba.fastjson.JSONArray; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import mapper.EmpMapper; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.example.commons.bean.Emp; import org.example.commons.util.JsonResult; import service.EmpService; import test.App; import java.io.InputStream; import java.util.List; public class EmpServicelmpl implements EmpService{ private EmpMapper mapper; public EmpServicelmpl(){ InputStream inputStream = App.class.getClassLoader().getResourceAsStream("config.xml"); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); SqlSession sqlSession = sqlSessionFactory.openSession(); mapper = sqlSession.getMapper(EmpMapper.class); } @Override public String findAll() { List<Emp> list = mapper.findAll(); return JSONArray.toJSONString(list); } @Override public String save(Emp emp) { int save = mapper.save(emp); return save == 0 ?"添加失败":"添加成功"; } @Override public JsonResult findByPage(int page, int size) { PageHelper.startPage(page,size); List<Emp> list = mapper.findAll(); PageInfo<Emp> pageInfo = new PageInfo<>(list); String str = JSONArray.toJSONString(pageInfo); return new JsonResult(str); } @Override public String update(Emp emp) { int row = mapper.update(emp); return row==1?"修改成功":"修改失败"; } @Override public String findById(int id) { Emp emp = mapper.findById(id); return JSONArray.toJSONString(emp); } @Override public String delete(int id) { int row = mapper.delete(id); return row==1?"删除成功":"删除失败"; } @Override public JsonResult findByEname(String ename, int page) { PageHelper.startPage(page,10); List<Emp> list = mapper.findByEname(ename == null?"%%":"%"+ename+"%"); PageInfo<Emp> pageInfo = new PageInfo<>(list); String str = JSONArray.toJSONString(pageInfo); return new JsonResult(str); } } package service; import org.example.commons.bean.Emp; import org.example.commons.util.JsonResult; public interface EmpService { String findAll(); String save(Emp emp); JsonResult findByPage(int page, int size); String update(Emp emp); String findById(int id); String delete(int id); JsonResult findByEname(String ename, int page); } <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <properties resource="datasource.properties"/> <settings> <!--输出日志到控制台中--> <setting name="logImpl" value="STDOUT_LOGGING"/> </settings> <typeAliases> <package name="org.example.commons.bean"/> </typeAliases> <!--分页插件拦截器--> <plugins> <plugin interceptor="com.github.pagehelper.PageInterceptor"> <property name="reasonable" value="true"/> </plugin> </plugins> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="com.mysql.cj.jdbc.Driver"/> <!-- 添加了必要的连接参数 --> <property name="url" value="${datasource.url}?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC"/> <property name="username" value="${datasource.username}"/> <property name="password" value="${datasource.password}"/> </dataSource> </environment> </environments> <mappers> <mapper resource="org.example.servlet-4.mapper"/> </mappers> </configuration><?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.example</groupId> <artifactId>UK</artifactId> <version>1.0-SNAPSHOT</version> </parent> <groupId>org.example.servlet</groupId> <artifactId>servlet</artifactId> <packaging>pom</packaging> <modules> <module>servlet-1</module> <module>servlet-2</module> <module>servlet-3</module> <module>servlet-4</module> <module>servlet-5</module> </modules> <properties> <maven.compiler.source>17</maven.compiler.source> <maven.compiler.target>17</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.36</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>2.0.32</version> </dependency> <dependency> <groupId>org.example.commons</groupId> <artifactId>com.commons</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> </dependency> </dependencies> </project>为什么报错500
07-18
实验内容步骤: (一) 实验内容 查询商品类别为“白色家电”的所有商品信息,使用关联映射一次性加载类别及其下属商品。 1、创建商品表product,并插入数据。 商品编号(id) 商品名称(goodsname) 商品单价(price) 商品类别(typeid) 1 电视机 5000 1 2 冰箱 4000 2 3 空调 3000 2 4 洗衣机 2000 2 2、创建商品类别表category,并插入数据。 商品类别编号(id) 商品类别名称(typename) 1 黑色家电 2 白色家电 (二) 实验步骤 1、项目搭建 创建一个名称为DynamicSql的项目,并在项目中引入MySQL驱动包、 JUnit测试包、MyBatis的核心包等相关依赖、创建数据库连接信息配置文件、创建MyBatis的核心配置文件。 pom.xml文件中相关依赖引入部分: <dependencies> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.11</version> </dependency> <!--MYSQL驱动包--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.29</version> </dependency> <!--junit测试包--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> </dependencies> 在mybatis-config.xml文件中进行编写,按照mybatis规定的元素顺序进行编写。 2、创建商品表商品类别表 1) 在mybatis数据库中创建商品表商品类别表,并在创建商品表商品类别表中插入相应数据。 3.编写POJO类 1) 在src→main→java→org.example(此处为自己的包名)→POJO新建两个类名分别为CategoryProduct。 2) 在Category类中声明id(商品类别编号)、typename(商品类别名称)productList(商品列表)属性,以及属性对应的getter/setter方法(getter/setter方法的快捷键alt+insert)。 3) 在Product类中声明id(商品编号)、goodsname(商品名称)price(商品单价)属性,以及属性对应的getter/setter方法(getter/setter方法的快捷键alt+insert)。 4、编写映射文件 1) 在resources文件夹下建立一个mappers文件夹 2) 在mappers文件夹下创建CategoryMapper.xml文件,该文件主要用于实现SQL语句Java对象之间的映射。该文件用于实现一对多映射。 5、修改mybatis-config.xml核心配置文件 在mybatis-config.xml映射文件的<mappers>元素下添加CategoryMapper.xml映射文件路径的配置,用于将CategoryMapper.xml映射文件加载到程序中。 6、使用工具类创建SqlSession对象 在src→main→java→org.example(此处为自己的包名)下创建一个Utils包,新建一个名为MyUtils的java类,复刻课本28页的文件2-4代码,注意包名类名的命名是否符合自己的项目。 7、编写测试类 1) 在项目src/test/java目录下创建Test包,在Test包下创建MyBatisTest测试类,用于程序测试。 2) 编写查询方法,参考课本54页(6)步骤代码,实现一对多关联查询。 给出上述实验步骤,要具体给出每一步 包括右键点哪里新建文件、包
10-14
import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import java.io.IOException; import java.io.InputStream; import java.util.List; public class mbdemo { public static void main(String[] args) throws IOException { String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); SqlSession sqlSession = sqlSessionFactory.openSession(); sqlSession.selectOne("test.selectall"); List<Object> objects = sqlSession.selectList("test.selectall"); System.out.println(objects); sqlSession.close(); } } public class user { private Integer id; private String name_; private Integer age; private Integer birth; private Integer tall; public user(Integer id, String name_, Integer age, Integer birth, Integer tall) { this.id = id; this.name_ = name_; this.age = age; this.birth = birth; this.tall = tall; } @Override public String toString() { return "user{" + "id=" + id + ", name_='" + name_ + '\'' + ", age=" + age + ", birth=" + birth + ", tall=" + tall + '}'; } } <?xml version="1.0" encoding="UTF-8"?> <configuration> <!-- CONSOLE :表示当前的日志信息是可以输出到控制台的。 --> <appender name="Console" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>[%level] %blue(%d{HH:mm:ss.SSS}) %cyan([%thread]) %boldGreen(%logger{15}) - %msg %n</pattern> </encoder> </appender> <logger name="com.itheima" level="DEBUG" additivity="false"> <appender-ref ref="Console"/> </logger> <!-- level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL OFF , 默认debug <root>可以包含零个或多个<appender-ref>元素,标识这个输出位置将会被本日志级别控制。 --> <root level="DEBUG"> <appender-ref ref="Console"/> </root> </configuration><?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <!--数据库连接信息--> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql:///mybatis?useSSL=false"/> <property name="username" value="root"/> <property name="password" value="root"/> </dataSource> </environment> </environments> <mappers> <!--加载sql的映射文件--> <mapper resource="tablemapper.xml"/> </mappers> </configuration><?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- namespace 名称空间 --> <mapper namespace="test"> <select id="selectall" resultType="user"> select * from student; </select> </mapper><?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>mybatis-demo</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.5</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.33</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.1</version> <scope>test</scope> </dependency> <!-- 添加slf4j日志api --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.20</version> </dependency> <!-- 添加logback-classic依赖 --> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.3</version> </dependency> <!-- 添加logback-core依赖 --> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</artifactId> <version>1.2.3</version> </dependency> </dependencies> </project>"C:\Program Files\Java\jdk-1.8\bin\java.exe" "-javaagent:D:\idea\IntelliJ IDEA 2020.1.2\lib\idea_rt.jar=51781:D:\idea\IntelliJ IDEA 2020.1.2\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk-1.8\jre\lib\charsets.jar;C:\Program Files\Java\jdk-1.8\jre\lib\deploy.jar;C:\Program Files\Java\jdk-1.8\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk-1.8\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk-1.8\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk-1.8\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk-1.8\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk-1.8\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk-1.8\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk-1.8\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk-1.8\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk-1.8\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk-1.8\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk-1.8\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk-1.8\jre\lib\javaws.jar;C:\Program Files\Java\jdk-1.8\jre\lib\jce.jar;C:\Program Files\Java\jdk-1.8\jre\lib\jfr.jar;C:\Program Files\Java\jdk-1.8\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk-1.8\jre\lib\jsse.jar;C:\Program Files\Java\jdk-1.8\jre\lib\management-agent.jar;C:\Program Files\Java\jdk-1.8\jre\lib\plugin.jar;C:\Program Files\Java\jdk-1.8\jre\lib\resources.jar;C:\Program Files\Java\jdk-1.8\jre\lib\rt.jar;C:\Users\22844\IdeaProjects\mybatis-demo\target\classes;C:\Users\22844\.m2\repository\org\mybatis\mybatis\3.5.5\mybatis-3.5.5.jar;C:\Users\22844\.m2\repository\com\mysql\mysql-connector-j\8.0.33\mysql-connector-j-8.0.33.jar;C:\Users\22844\.m2\repository\com\google\protobuf\protobuf-java\3.21.9\protobuf-java-3.21.9.jar;C:\Users\22844\.m2\repository\org\slf4j\slf4j-api\1.7.20\slf4j-api-1.7.20.jar;C:\Users\22844\.m2\repository\ch\qos\logback\logback-classic\1.2.3\logback-classic-1.2.3.jar;C:\Users\22844\.m2\repository\ch\qos\logback\logback-core\1.2.3\logback-core-1.2.3.jar" mbdemo [DEBUG] 12:16:35.713 [main] o.a.i.l.LogFactory - Logging initialized using 'class org.apache.ibatis.logging.slf4j.Slf4jImpl' adapter. [DEBUG] 12:16:35.728 [main] o.a.i.d.p.PooledDataSource - PooledDataSource forcefully closed/removed all connections. [DEBUG] 12:16:35.728 [main] o.a.i.d.p.PooledDataSource - PooledDataSource forcefully closed/removed all connections. [DEBUG] 12:16:35.728 [main] o.a.i.d.p.PooledDataSource - PooledDataSource forcefully closed/removed all connections. [DEBUG] 12:16:35.728 [main] o.a.i.d.p.PooledDataSource - PooledDataSource forcefully closed/removed all connections. [DEBUG] 12:16:35.768 [main] o.a.i.t.j.JdbcTransaction - Opening JDBC Connection Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary. Exception in thread "main" org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed ### The error may exist in tablemapper.xml ### The error may involve test.selectall ### The error occurred while executing a query ### Cause: java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:149) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:140) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:76) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:70) at mbdemo.main(mbdemo.java:16) Caused by: java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:111) at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:825) at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:446) at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:239) at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:188) at java.sql.DriverManager.getConnection(DriverManager.java:664) at java.sql.DriverManager.getConnection(DriverManager.java:208) at org.apache.ibatis.datasource.unpooled.UnpooledDataSource.doGetConnection(UnpooledDataSource.java:224) at org.apache.ibatis.datasource.unpooled.UnpooledDataSource.doGetConnection(UnpooledDataSource.java:219) at org.apache.ibatis.datasource.unpooled.UnpooledDataSource.getConnection(UnpooledDataSource.java:95) at org.apache.ibatis.datasource.pooled.PooledDataSource.popConnection(PooledDataSource.java:432) at org.apache.ibatis.datasource.pooled.PooledDataSource.getConnection(PooledDataSource.java:89) at org.apache.ibatis.transaction.jdbc.JdbcTransaction.openConnection(JdbcTransaction.java:139) at org.apache.ibatis.transaction.jdbc.JdbcTransaction.getConnection(JdbcTransaction.java:61) at org.apache.ibatis.executor.BaseExecutor.getConnection(BaseExecutor.java:337) at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:86) at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:62) at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:325) at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156) at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109) at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:89) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:147) ... 4 more Caused by: com.mysql.cj.exceptions.UnableToConnectException: Public Key Retrieval is not allowed at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:62) at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:86) at com.mysql.cj.protocol.a.authentication.CachingSha2PasswordPlugin.nextAuthenticationStep(CachingSha2PasswordPlugin.java:130) at com.mysql.cj.protocol.a.authentication.CachingSha2PasswordPlugin.nextAuthenticationStep(CachingSha2PasswordPlugin.java:49) at com.mysql.cj.protocol.a.NativeAuthenticationProvider.proceedHandshakeWithPluggableAuthentication(NativeAuthenticationProvider.java:443) at com.mysql.cj.protocol.a.NativeAuthenticationProvider.connect(NativeAuthenticationProvider.java:213) at com.mysql.cj.protocol.a.NativeProtocol.connect(NativeProtocol.java:1430) at com.mysql.cj.NativeSession.connect(NativeSession.java:134) at com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:945) at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:815) ... 24 more Process finished with exit code 1
05-12
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值