基于SSM框架的生活论坛系统的设计与实现

基于SSM框架的生活论坛系统的设计与实现

✌全网粉丝20W+,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌

🍅文末获取项目下载方式🍅


一、项目背景介绍:

BBS 是 Bulletin Board System 的英文缩写,中文翻译为电子广播公告牌。是一种在 Internet 上常见的一种用于提供信息服务的 Web 系统,是与浏览者进行相互交流和沟通的一个平台。 bbs 现在已经发展成为 internet 上最为知名的网络服务之一,它已经打开了一块"公共"的空间,以便供所有的用户阅读其中的资料。 bbs 网络论坛最早可以说是起源于20世纪80年代,最早这个网络论坛只是专门为联络网民及时地发布公告以及最新信息,讨论与网络技术密切关联的相关问题的一个网络信息技术交流平台,后来随着我国的互联络和网路的不断发展普及,论坛的网络信息服务范围面和功能越来越丰富,受到广大联络受到广大网民参与欢迎。因此,商业网站也对各个大型的商业网站和论坛本着更高层次的重视以及行动上的高度认真地建立起来,纷纷针对自己的各个大型商业网站上专门地策划打造开辟一个大型的商业网站和论坛,作为广大商业主站网民相互学习交流的最佳网络园地。同时,在线上的技术支持和新的在线客户服务也在这个论坛中迅速开展动了起来。 bbs 通常会为你提供一些多人间实时通信交谈,游戏通信服务,公布行业内部的最新信息甚至也都会为你提供各种类型的免费通信软件。各个新的 bbs 专业网站对所需要涉及的相关专业网站主题和其他相关的专业网站覆盖范围各自都会具有不同的侧重,我们为了让你可以自由地选择一个你较为熟悉和感兴趣的专业网站,或者直接进入各个 bbs 专业网站参与话题的讨论,发表观点意见,征求专业的建议,并且结识更多的朋友。介入 bbs 的各种话题性讨论,能够真正做到让你充分发挥自己的聪明才智,不断改善和拓宽你的知识面,丰富你的精彩生活。原来的软件 bbs 仅仅是主要为了提供信息的传送和文档阅读两种操作,用户一般大多都是些年轻的电脑软件喜欢者。随后,系统就可以实现了允许网络用户之间实时共同分享网络软件、文档,进行网络信息实时化对话、信件实时传输,等等。为了给你的建站工作者提供一个更好的企业建站收费服务一些著名企业的网站已经开始推行并且发起了关于建站收费也包括补贴等政策。但目前仅在erinternet上还是一直保持着只有无数用户可以看到免费同时显示数字bbs的官方站点。一般来说是abbs远程域名中的站点直接登录文件地址以多个远程域名中的站点登录形式同时登录出现,这些多个域名中的站点登录地址很有可能指的是通过远程域名用户直接登录的的方式用来进行远程用户连接。
目前各类BBS的主要功能有:
(1)学术信息资源供应者注册可由用户自我选择进行自由选择并注册可自由阅读若干自己可能感兴趣的相关学术课题专业组和相关学术课题讨论组内的其他相关学术信息;
(2)可随意检查是否有新消息发布并选择阅读;
(3)其他用户被许可在这个站点内随时发布个人消息或发表文章等以供他人浏览查阅;
(4)本站用户有权可就自己站点内其他发表人的发布消息或者对文章内容进行发表评论;
正像广告 bbs 的所有文本意思都包含了一个词,早期广告 bbs 就只是一块街头上的一块广告牌,主要目标是专门为了在两台电脑之间直接发射并传播或者接收广告消息。但它已经开始做为一种新型网络上进行信息的运输和传播的方式,以其特有的方便和快捷逐渐开始得到现代社会中的广泛重视和青睐,随着网络上传递 bbs 的这种快捷,准确信息的传输也使得信息的这种特别重要的作用被越来越多的现代社会中的人们广泛地认识和合理充分利用, bbs 的信息传输功能也在不断地得到了扩充, bbs 的传输科学技术也在逐步开始发展并走向了成熟。正像 bbs 的字面意思一样,早期开始使用 bbs 就像街头上的一张广告牌,主要目的是为了在电脑之间进行发送与接收。然而它作为一种新型的信息传递方式,以其独特的便捷性与迅速快捷性逐渐得到了人们的重视与青睐,随着 bbs 的这种快捷、准确传输信息的独特性与特殊功能已经被越来更多的人认识与利用, bbs 的功能也在不断拓展, bbs 的技术逐步进一步走向成熟。

二、项目技术简介:

  1. JAVA:Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
  2. Spring:Spring框架是一个开放源代码的J2EE应用程序框架,由Rod Johnson发起,是针对bean的生命周期进行管理的轻量级容器(lightweight container)。 Spring解决了开发者在J2EE开发中遇到的许多常见的问题,提供了功能强大IOC、AOP及Web MVC等功能。Spring可以单独应用于构筑应用程序,也可以和Struts、Webwork、Tapestry等众多Web框架组合使用,并且可以与 Swing等桌面应用程序AP组合。因此, Spring不仅仅能应用于J2EE应用程序之中,也可以应用于桌面应用程序以及小应用程序之中。Spring框架主要由七部分组成,分别是 Spring Core、 Spring AOP、 Spring ORM、 Spring DAO、Spring Context、 Spring Web和 Spring Web MVC。
  3. Mybatis:MyBatis本是apache的一个开源项目iBatis,2010年这个项目由apache software foundation迁移到了google code,并且改名为MyBatis。2013年11月迁移到Github。
    iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAOs)。
  4. Jsp:JSP(全称JavaServer Pages)是由Sun Microsystems公司主导创建的一种动态网页技术标准。JSP部署于网络服务器上,可以响应客户端发送的请求,并根据请求内容动态地生成HTML、XML或其他格式文档的Web网页,然后返回给请求者。JSP技术以Java语言作为脚本语言,为用户的HTTP请求提供服务,并能与服务器上的其它Java程序共同处理复杂的业务需求。
    JSP将Java代码和特定变动内容嵌入到静态的页面中,实现以静态页面为模板,动态生成其中的部分内容。JSP引入了被称为“JSP动作”的XML标签,用来调用内建功能。另外,可以创建JSP标签库,然后像使用标准HTML或XML标签一样使用它们。标签库能增强功能和服务器性能,而且不受跨平台问题的限制。JSP文件在运行时会被其编译器转换成更原始的Servlet代码。JSP编译器可以把JSP文件编译成用Java代码写的Servlet,然后再由Java编译器来编译成能快速执行的二进制机器码,也可以直接编译成二进制码。
  5. Spring-Mvc:Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的Spring MVC框架或集成其他MVC开发框。
  6. Html:HTML的全称为超文本标记语言,是一种标记语言。它包括一系列标签.通过这些标签可以将网络上的文档格式统一,使分散的Internet资源连接为一个逻辑整体。HTML文本是由HTML命令组成的描述性文本,HTML命令可以说明文字,图形、动画、声音、表格、链接等。
    超文本是一种组织信息的方式,它通过超级链接方法将文本中的文字、图表与其他信息媒体相关联。这些相互关联的信息媒体可能在同一文本中,也可能是其他文件,或是地理位置相距遥远的某台计算机上的文件。这种组织信息方式将分布在不同位置的信息资源用随机方式进行连接,为人们查找,检索信息提供方便。

三、系统功能模块介绍:

功能模块图

四、数据库设计:

1:jbbs_bankuai(jbbs_bankuai)

字段名类型默认值列注释
idint(11)NULL
namevarchar(255)NULL
imgvarchar(255)NULL
typevarchar(1)NULL
descsvarchar(2000)NULL
parentidint(11)NULL
orderbyint(11)NULL
createtimevarchar(255)NULL
createuseridint(11)NULL
fatiegroupvarchar(2000)NULL
huifugroupvarchar(2000)NULL
findgroupvarchar(2000)NULL
yumingvarchar(255)NULL

2:jbbs_group(jbbs_group)

字段名类型默认值列注释
idint(11)NULL
groupnamevarchar(255)NULL
createtimevarchar(255)NULL
createuseridint(11)NULL
statevarchar(2)NULL
isdelvarchar(2)NULL

3:jbbs_group_user(jbbs_group_user)

字段名类型默认值列注释
idint(11)NULL
useridint(11)NULL
groupidint(11)NULL

4:jbbs_huifu(jbbs_huifu)

字段名类型默认值列注释
idint(11)NULL
tieziidint(11)NULL
huifuidint(11)NULL
contenthtmlVARCHAR(255)NULL
contenttxtVARCHAR(255)NULL
createtimevarchar(255)NULL
createuseridint(11)NULL
lastupdatevarchar(2000)NULL
isdelvarchar(2)NULL
orderbyint(11)NULL

5:jbbs_info(jbbs_info)

字段名类型默认值列注释
idint(11)NULL
indextitlevarchar(2000)NULL
namevarchar(2000)NULL
keywordsvarchar(2000)NULL
descriptionvarchar(2000)NULL
logoimgvarchar(2000)NULL
foothtmlvarchar(2000)NULL

6:jbbs_inner_link(jbbs_inner_link)

字段名类型默认值列注释
idint(11)NULL
namevarchar(255)NULL
innerlinkvarchar(1000)NULL
typevarchar(1)NULL
isusevarchar(1)NULL
createuseridint(11)NULL
createtimevarchar(255)NULL

7:jbbs_jifen(jbbs_jifen)

字段名类型默认值列注释
idint(11)NULL
tieziidint(11)NULL
contentvarchar(2000)NULL
typevarchar(10)NULL
createtimevarchar(255)NULL
fenshuint(11)NULL
useridint(11)NULL
operateuseridint(11)NULL

8:jbbs_jifen_group(jbbs_jifen_group)

字段名类型默认值列注释
idint(11)NULL
namevarchar(255)NULL
jifenint(11)NULL
classnamevarchar(255)NULL
createtimevarchar(255)NULL
descsvarchar(2000)NULL
createuseridint(11)NULL

9:jbbs_link(jbbs_link)

字段名类型默认值列注释
idint(11)NULL
namevarchar(2000)NULL
linkvarchar(2000)NULL
createuseridint(11)NULL
createtimevarchar(255)NULL
orderbyint(11)NULL
bankuaiidint(11)NULL
imgvarchar(255)NULL
typevarchar(2)NULL
isshowvarchar(2)NULL

10:jbbs_message(jbbs_message)

字段名类型默认值列注释
idint(11)NULL
titleVARCHAR(255)NULL
contentVARCHAR(255)NULL
createtimevarchar(255)NULL
useridsendint(11)NULL
useridacceptint(11)NULL
messagetypevarchar(1)NULL
isreadvarchar(1)NULL

11:jbbs_pic(jbbs_pic)

字段名类型默认值列注释
idint(11)NULL
pathvarchar(1000)NULL
tieziidint(11)NULL
bankuaiidint(11)NULL
pictypevarchar(2)NULL
createuseridint(11)NULL
widthint(11)NULL
heightint(11)NULL
isdelvarchar(1)NULL

12:jbbs_stop_ip(jbbs_stop_ip)

字段名类型默认值列注释
idint(11)NULL
startipvarchar(255)NULL
endipvarchar(255)NULL
typevarchar(255)NULL
createtimevarchar(255)NULL
createuseridint(11)NULL
isusevarchar(1)NULL
remarksvarchar(2000)NULL

13:jbbs_tiezi(jbbs_tiezi)

字段名类型默认值列注释
idint(11)NULL
namevarchar(2000)NULL
createtimevarchar(255)NULL
createuseridint(11)NULL
bankuai_idint(11)NULL
zhutiidvarchar(255)NULL
lastupdatevarchar(2000)NULL
jinghuavarchar(255)NULL
zhidingvarchar(255)NULL
findcountint(11)NULL
huifuidint(11)NULL
isusevarchar(1)NULL

14:jbbs_user(jbbs_user)

字段名类型默认值列注释
idint(11)NULL
namevarchar(255)NULL
loginnamevarchar(255)NULL
pwdvarchar(255)NULL
imgvarchar(255)NULL
emailvarchar(255)NULL
birthdayvarchar(255)NULL
sexvarchar(2)NULL
mobilevarchar(255)NULL
qianmingvarchar(2000)NULL
createtimevarchar(255)NULL
lastlogintimevarchar(255)NULL
zhuceipvarchar(255)NULL
loginipvarchar(255)NULL
flagvarchar(2)NULL
jifenint(11)NULL
onlinetimeint(11)NULL
cookieidvarchar(255)NULL

15:jbbs_user_liuyan(jbbs_user_liuyan)

字段名类型默认值列注释
idint(11)NULL
contenthtmlVARCHAR(255)NULL
liuyanuseridint(11)NULL
createuseridint(11)NULL
createtimevarchar(20)NULL

16:jbbs_zhuti(jbbs_zhuti)

字段名类型默认值列注释
idint(11)NULL
namevarchar(255)NULL
bankuai_idint(11)NULL
orderbyint(11)NULL
createtimevarchar(255)NULL

五、功能模块:

  1. 用户注册实现:用户在第一次登录系统时,输入http://127.0.0.1:8080/bbs/进入页面,随后可以进行注册,注册时所需要的信息包括账号密码和身份认证码,用户在注册时通过信息中输入了用户名、密码以及身份认证码。
    为了防止恶意注册以及注册脏数据,我们对注册时的数据做了一定的限制,如用户名长度不能小于6位、两次输入的密码是否一致

    用户注册实现

  2. 用户登录:如果一个用户已经在系统中注册了自己的账号和密码的话,即可以直接登录本站的系统,同时对于登录的校验同样具有着多重的特点,同时把所有登录的用户信息都存入 session

    用户登录

  3. 看帖子:查看帖子功能是没有做任何权限校验的,属于任何人都可以访问的资源,用户点击帖子的时候,通过携带帖子的id可以查询到具体帖子的内容,通过geiById方法可以查询到帖子的内容、回复以及评论。

    看帖子

  4. 回复帖子:回复生活帖子必须要在登录的前提下进行回复,如果没有登录,系统会去session中拿到登录用户,如果存在则可以进行评论,如果不存在则无法进行评论。

    回复帖子

  5. 系统后台功能的实现-友情链接:可以给用户增加相关的网页链接端口,并且可以随时进行终止,失效等相关操作

    系统后台功能的实现-友情链接

  6. 用户管理:可以对论坛内注册的用户进行管理监控,只有论坛负责人具有该权限,相关的用户管理页面如图

    用户管理

  7. 网站设置:负责人可以给网站进行名称,标题,logo关键字和描述等内容进行编辑,最后通过网站审核后可以提交使用

    网站设置

六、代码示例:

用户注册实现
		//判断是否需要登陆
		boolean islogin = islogin(request, response, chain);
		if(islogin){
			return;
		}
		String urlString=request.getRequestURI();
		int lastIndexOf = urlString.lastIndexOf(".")+1;
		//静态化转换
		if(PublicStatic.HTML.equals(urlString.substring(lastIndexOf, urlString.length()))){
			htmlfilter(request, response, chain, urlString);
		}else{
			String path=request.getServletPath();
			Integer id=isbankuai(path);
			//板块映射成二级目录
			if(id!=null){
				String url="/bk/index.do?bankuaiid="+id+"&pagestart=1&zhutiid=0&orderby=0";
				request.getRequestDispatcher(url).forward(request, response);
				return;
			}else if(path.startsWith("/file/")){
				filefilter(request, response, chain, path);
			}else{
				chain.doFilter(request, response);
			}
		}
	}
用户登录
	public PageBean<Message> findpage(Message message,PageBean<Message> page) {
		page.setBean(message);
		int count = MessageDao.findpagecount(page);
		page.setTotalRecords(count);
		List<Message> list = MessageDao.findpage(page);
		for (Message message2 : list) {
			String content = message2.getContent();
			if(content!=null&&content.length()>130){
				content=content.substring(0, 130)+"......";
				message2.setContent(content);
			}
		}
		page.setList(list);
		return page ;
	}
看帖子

	@RequestMapping("index.do")
	public String findAllWhere(HttpServletRequest request, Model model,Jifen jifen,PageBean<Jifen> page) {
		User sessionuser=(User)request.getSession().getAttribute(PublicStatic.USER);
		jifen.setUserid(sessionuser.getId());
		page = jifenService.findpage(jifen, page);
		model.addAttribute("page", page);
		model.addAttribute("jifen", jifen);
		sessionuser = userService.findbyid(sessionuser);
		request.getSession().setAttribute(PublicStatic.USER,sessionuser);
		if(Tool.ismobile(request)){
			return "jsp/mobile/user/user-jifen";
		}else{
			return "jsp/index/user/user-jifen";
		}
	}
回复帖子
//保存发帖数据
		@RequestMapping("topcorm.do")
		public void add(HttpServletRequest request,HttpServletResponse response,String ismobile,String pathlocation) {
			if(ismobile.equals("1")){
				request.getSession().setAttribute("ismobile", true);
			}else{
				request.getSession().setAttribute("ismobile", false);
			}
			try {
				response.sendRedirect(pathlocation);
			} catch (IOException e) {
				e.printStackTrace();
			}
//			return "redirect:"+pathlocation;
		}
		//跳转页面  http://bbs.javaee.cc/common/tourl.do?url=http://baidu.com
		@RequestMapping("tourl.do")
		public void tourl(HttpServletRequest request,HttpServletResponse response,String url) {
		//userAgent:Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_3 like Mac OS X) AppleWebKit/603.3.8 (KHTML, like Gecko) Mobile/14G60 MicroMessenger/6.5.12 NetType/WIFI Language/zh_CN
				try {
					String userAgent = request.getHeader("user-agent");
					System.out.println("userAgent:"+userAgent);
					if(userAgent.contains("MicroMessenger")){
						response.sendRedirect("wxp://f2f0DNKL4b65dEYJvVblzQE-knpF29yIG709");
					}else if(userAgent.contains("AlipayClient")){
						response.sendRedirect("HTTPS://QR.ALIPAY.COM/FKX00838VO3BEVQISLQW51");
					}else{
						response.sendRedirect("wxp://f2f0DNKL4b65dEYJvVblzQE-knpF29yIG709");
					}
				} catch (IOException e) {
					e.printStackTrace();
				}
		}
}
系统后台功能的实现-友情链接
//首页查询
	@RequestMapping("index.do")
	public String findAllWhere(HttpServletRequest request, Model model,String bankuaiid,String zhutiid,PageBean<Tiezi> page,String orderby) {
		
		
		
//		long currentTimeMillis = System.currentTimeMillis();
		//查询当前板块
		Bankuai bankuai= bankuaiService.findbyid(bankuaiid);
		
		//判断访问权限
		User user=(User)request.getSession().getAttribute(PublicStatic.USER);
		boolean flag=userService.isfind(bankuai.getFindgroup(),user);
		if(!flag){
			return "redirect:/topage/quanxian.do";
		}
		
		
		//查询主题列表
		Zhuti zhuti=new Zhuti();
		zhuti.setBankuaiId(Integer.parseInt(bankuaiid));
		List<Zhuti> zhutilist = zhutiService.find(zhuti);
		
		//查询板块的帖子
		Tiezi tiezi=new Tiezi();
		tiezi.setBankuaiId(Integer.parseInt(bankuaiid));
		tiezi.setOrderby(orderby);
		if(zhutiid!=null&&!zhutiid.equals("0")){
			tiezi.setZhutiid(zhutiid);
		}else{
			zhutiid="0";
		}
		//查询列表
		tiezi.setIsuse("1");
		page = tieziService.findpagebybankuanid(tiezi, page);
		
//		long currentTimeMillis = System.currentTimeMillis();
		//今日的帖子总数
		int nowcount=tieziService.findnowcount(bankuaiid);
		//查询置顶
		List<Tiezi> zhidinglist= tieziService.findzhiding(bankuaiid);
		
		//查询友情链接
		Link link=new Link();
		link.setIsshow("1");
		link.setBankuaiid(Integer.parseInt(bankuaiid));
		List<Link> linklist = linkService.find(link);
		model.addAttribute("linklist", linklist);
		
		model.addAttribute("page", page);
		model.addAttribute("bankuaiid", bankuaiid);
		model.addAttribute("zhutiid", zhutiid);
		model.addAttribute("orderby", orderby);
		model.addAttribute("bankuai", bankuai);
		model.addAttribute("zhutilist", zhutilist);
		model.addAttribute("nowcount", nowcount);
		model.addAttribute("zhidinglist", zhidinglist);
		
		if(Tool.ismobile(request)){
			return "jsp/mobile/bankuai";
		}else{
			return "jsp/index/bankuai";
		}
	}
用户管理
/*
 * 公共的操作
 * 
 */
@Controller
@RequestMapping("/common")
public class CommonController {

	@Autowired
	UserService userService;
	
	private static Logger log = Logger.getLogger(CommonController.class);

	//每五秒钟调用一次,更新在线时间
	@ResponseBody
	@RequestMapping("updateuseronlinetime.do")
	public void updateuseronlinetime(HttpServletRequest request) {
		User user=(User) request.getSession().getAttribute(PublicStatic.USER);
		if(user!=null){
			Map<Integer, Long> map= (Map<Integer, Long>)request.getSession().getServletContext().getAttribute("updateuseronlinetime");
			if(map==null){
				map=new HashMap<Integer, Long>();
			}
			long l=System.currentTimeMillis();
			if(map.get(user.getId())==null||(l-map.get(user.getId())>4*1000)){
				userService.updateuseronlinetime(user);
				map.put(user.getId(), l);
				request.getSession().getServletContext().setAttribute("updateuseronlinetime", map);
			}
		}
	}
网站设置
	@RequestMapping("toupdateoradd.do")
	public String toupdateoradd(Bankuai bankuai, Model model) {
		if(bankuai.getId()!=null){
			bankuai=bankuaiService.findbyid(bankuai);
		}
		model.addAttribute("bankuai", bankuai);
		List<Bankuai> parentList = bankuaiService.findbyparentId(new Bankuai());
		//如果是父板块,删除自己
		for (int i=0;i< parentList.size() ;i++) {
			Bankuai bankuai2=parentList.get(i);
			if(bankuai2.getId()==bankuai.getId()){
				parentList.remove(bankuai2);
			}
		}
		model.addAttribute("parentList", parentList);
		List<JifenGroup> jifengouplist = jifenGroupService.find(new JifenGroup());
		model.addAttribute("jifengouplist", jifengouplist);
		return "jsp/admin/bankuai/updateoradd";
	}

七、论文参考:

八、项目总结:

随着我国信息工程产业的不断壮大,各行业企业信息化的实施和建设正是以各个阶段进行时的举措和动作来运行。 bbs ( bulletin board system )这个电子公告牌已经逐渐地成为 internet上最著名的公告服务之一,它为我们打开了一块"公共"的空间,可以让所有的用户阅读其中的内容。随着世界互联网络化的发展与通讯技术水平的提升,它已经成为互联网时代很重要的一个消息沟通平台。本文将在对 java 技术和系统的需求情况进行深入分析基础上,结合不同研究人员开发技术的具体功能特点,设计了一个可扩展性较强的基于 java 的网上论坛系统。
本系统隶属于web企业信息系统服务的一个重要子系统,用户可以自我自由地选择是否能够阅读若干个自己最为感兴趣的网站专业板块版面及其他相关的专业讨论板块版面内的最新资讯,可以随意地检查自己在网站上是否被发现了有新鲜的资讯及时进行发布并自行选定是否能够进行阅读,在多个网站内随时发布最新资讯或者是发表一篇文章时提供其他人进行阅读或者查看的功能。本系统内容主要涉及系统设计分析、数据库系统设计、软件设计。在软件开发中我选择了SSM+Java+MySQL的开发模式,在其中实现了整个论坛中的基本功能。

九、源码获取:

链接点击直达:下载链接

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值