技术标签: java
jsp页面直接嵌入就行,src地址你也可以换成你自己服务器上的地址
通过访问
<embed src="https://vod.300hu.com/4c1f7a6atransbjngwcloud1oss/181bf18e201392241334865921/v.f30.mp4" width="300" height="300">
layui分页操作
引入css js文件
<link rel="stylesheet" href="${pageContext.request.contextPath}/layui/css/layui.css" media="all">
<script src="${pageContext.request.contextPath}/layui/layui.js" charset="utf-8"></script>
加载容器位置
<div id="demo5"></div>
laypage.render:点击跳转后执行 getListData(curr,compositor,conditon)函数,将当前页和产品的状态和排序给它,用ajax请求后台资源
<script>
function paged(data,status) {
layui.use(['laypage', 'layer'],function () {
var laypage = layui.laypage
, layer = layui.layer;
var nums = 6; //每页出现数量;
var count=data.count;
laypage.render({
elem: 'demo5'
,count: count
,limit:6
,curr: location.hash.replace('#!fenye=', '') //获取hash值为fenye的当前页
,hash: 'fenye' //自定义hash值
, jump: function (obj, first) {
//首次不执行
if (!first) {
// alert(currPage);
//do something
var curr = obj.curr;//获取当前点击页码
getListData(curr,compositor,conditon);
}
}
});
});
};
$(function () {
var compositor=1;
var conditon=1;
getListData(1,compositor,conditon);
});
function getListData(currPage,com,cod){
if(com!=null)
{
compositor=com;
}
if (cod!=null)
{
conditon=cod;
}
// alert(compositor);
// alert(conditon);
$.ajax({
url:'${pageContext.request.contextPath}/SortProductByAll.action',
type:'post',
data: {
page:currPage, //当前页数
limit:6,
compositor:compositor,
condition:conditon,
},
dataType:'json',
success: function(data){
$("#freeimages") .empty();
$("#productsum").empty();
if(data!=null){
var str = "";
var products=data.data;
var productsum="";
productsum='共<span class="c_yellow">'+data.count+'</span>个项目'
$("#productsum").append(productsum);
$(products).each(function (index) {
var project=products[index];
//达成率
var num=(project.supmoney*project.numsup)/project.needmoney*100;
num = num.toFixed(2);
if(num>100)
{
num=100;
}
//剩余天数
var day=getday(project.startdate,project.deadline);
var image="/file/"+project.image;
str='<li> <a href="ToProductDetail.action?id='+project.id+'">'+
'<p class="s-p-bg"><img src="'+image+'" alt=""></p>'+
' <p class="s-p-mt">'+project.name+'</p>'+
' <p class="s-p-hide dispno"></p>'+
' <p class="s-p-hide1 dispno">'+project.name+'</p> </a>'+
'<div class="count_down"><span class="count_d" style="width:'+num+'%;"></span></div>'+
'<p class="clearfix">'+
'<span class="s-p-mtxt fl">已筹金额<span class="s-p-t">'+project.supmoney+'</span></span>'+
'<span class="s-p-mtxt fr">剩余时间<span class="s-p-t">'+day+'天</span></span>';
$("#freeimages") .append(str);
// window.location.href = "${pageContext.request.contextPath}/ToMain.action";
})
}else {
alert("响应失败1");
}
// alert(data.count);
paged(data,status);
},
error:function (data) {
alert("响应失败2");
}
});
};
function getday(startTime,endTime)
{
var date1= startTime; //开始时间
var date2 =endTime; //结束时间
var date3 = new Date(date2).getTime() - new Date(date1).getTime(); //时间差的毫秒数
//计算出相差天数
var days=Math.floor(date3/(24*3600*1000))
//计算出小时数
var leave1=date3%(24*3600*1000) //计算天数后剩余的毫秒数
var hours=Math.floor(leave1/(3600*1000))
//计算相差分钟数
var leave2=leave1%(3600*1000) //计算小时数后剩余的毫秒数
var minutes=Math.floor(leave2/(60*1000))
//计算相差秒数
var leave3=leave2%(60*1000) //计算分钟数后剩余的毫秒数
var seconds=Math.round(leave3/1000)
//alert(" 相差 "+days+"天 "+hours+"小时 "+minutes+" 分钟"+seconds+" 秒")
return days;
}
</script>
完整的jsp文件
<%--
Created by IntelliJ IDEA.
User: 廖泽铭
Date: 2019/7/14
Time: 11:17
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>浏览项目</title>
<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/css/public.css" />
<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/css/xc-s-p.css" />
<script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery-1.8.0.min.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/js/scanproj.js"></script>
<link rel="stylesheet" href="${pageContext.request.contextPath}/layui/css/layui.css" media="all">
<script src="${pageContext.request.contextPath}/layui/layui.js" charset="utf-8"></script>
</head>
<body>
<!--头部start-->
<div class="header">
<!--top start-->
<div class="top">
<div class="topauto auto clearfix">
<span class="top_l fl">
<span class="mark_tl1"><a href="">无限道生态</a></span>
<span class="mark_tl2"><a href="">添加到桌面</a></span>
</span>
<span class="top_r fr">
<span><a href="#">${sessionScope.user.fname} </a>,欢迎您</span>
<span style="display:none" class="zhuxiao"><a href="${pageContext.request.contextPath}/LoginOut.action">注销</a></span>
<span class="pagelogin lr1"><a href="${pageContext.request.contextPath}/To_login.action">登陆</a></span>
<span><a class="pageregister lr1" href="${pageContext.request.contextPath}/ToRegister_login.action">注册</a></span>
</span>
</div>
</div>
<!--top end-->
<!--logo start-->
<div class="logo auto clearfix">
<span class="logoo fl mt20"><img src="${pageContext.request.contextPath}/images/logo_08.png" alt="logo"></span>
<div class="search fl mt30">
<form method="get">
<input type="text" placeholder="输入关键字" name="keywords">
<img src="${pageContext.request.contextPath}/images/mark_search_05.png" alt="搜索" type="submit"/>
</form>
</div>
<div class="mark_group fr clearfix">
<span class="mark_logo1 fl"><span class="mlogo_1">新品尝鲜</span><span class="mlogo_2">海量商品第一手尝鲜</span></span>
<span class="mark_logo2 fl"><span class="mlogo_1">全额退款</span><span class="mlogo_2">未达成目标全额退款</span></span>
<span class="mark_logo3 fl"><span class="mlogo_1">全国包邮</span><span class="mlogo_2">部分产品港澳台除外</span></span>
</div>
</div>
<!--logo end-->
<!--nav start-->
<nav class="auto clearfix">
<span class="nav_l fl">
<span class="nav_l1 nav_l4 active"><a href="${pageContext.request.contextPath}/ToMain.action">首页</a></span>
<span class="nav_l2 nav_l4"><a href="${pageContext.request.contextPath}/ToVieProducts.action">项目浏览</a></span>
<span class="nav_l3 nav_l4"><a href="${pageContext.request.contextPath}/ToUser.action">我的众筹</a></span>
</span>
<span class="nav_r fr">
<span class="nav_r1 fl"><a href="${pageContext.request.contextPath}/ToDeproj.action">发起项目</a></span>
<span class="nav_r2 fl"><a href="${pageContext.request.contextPath}/ToHelp.action">新手帮助</a></span>
</span>
</nav>
<!--nav end-->
</div>
<!--头部 结束--> <!--浏览项目主体start-->
<div class="s-p-content">
<div class="s-p-auto auto clearfix" >
<!--左侧目录start-->
<div class="s-p-side fl" style="height:727px">
<dl>
<dt class="sort-com">排序 | compositor</dt>
<dd><input type="radio" id="sort1" checked="checked" name="sort"><label name="sort" class="checked" for="sort1" onclick="getListData(1,1,null)"> 综合排序</label></dd>
<dd><input type="radio" id="sort2" name="sort"><label class="label-sort" name="sort" for="sort2" onclick="getListData(1,2,null)">最新上线</label></dd>
<dd><input type="radio" id="sort3" name="sort"><label class="label-sort" name="sort" for="sort3" onclick="getListData(1,3,null)">最高金额</label></dd>
<dd><input type="radio" id="sort4" name="sort"><label class="label-sort" name="sort" for="sort4" onclick="getListData(1,4,null)">最多支持</label></dd>
<dt class="sort-con">状态 | condition</dt>
<dd><input type="radio" id="state1" checked="checked" name="state"><label name="state" class="checked" for="state1" onclick="getListData(1,null,1)">全部</label></dd>
<dd><input type="radio" id="state2" name="state"><label name="state" for="state2" onclick="getListData(1,null,2)">众筹中</label></dd>
<dd><input type="radio" id="state3" name="state"><label name="state" for="state3" onclick="getListData(1,null,3)">即将开始</label></dd>
<dd><input type="radio" id="state4" name="state"><label name="state" for="state4" onclick="getListData(1,null,4)">众筹成功</label></dd>
</dl>
</div>
<!--左侧目录end-->
<!--主体start-->
<div class="s-p-main fl">
<h3 id="productsum">
</h3>
<ul class="main_proj" >
<div id="freeimages">
</div>
<div class="layui-progress">
<div class="layui-progress-bar" lay-percent="10%"></div>
</div>
</ul>
</div>
<!--主体end-->
</div>
<div style=" width:700px;margin-left:310px;">
<ul class="s-p-index clearfix" style="display:block;margin-left:500px;">
<div id="demo5"></div>
</ul>
</div>
</div>
<!--浏览项目主体end-->
<!--尾部start-->
<div class="footer">
<div class="footer_auto auto clearfix">
<div class="footer_a1 fl">
<div class="footer_p pt50">
<span class="footer_process1 w150br30">发起人创建项目</span>
<span class="footer_process">></span>
<span class="footer_process2 w150br30">项目获得支持</span>
<span class="footer_process">></span>
<span class="footer_process3 w150br30">发起人发放回报</span>
<span class="footer_process">></span>
<span class="footer_process4 w150br30">用户得到回报</span>
</div>
<ul>
<li><a href="">关于我们</a></li>
<li><a href="">服务条款</a></li>
<li><a href="">项目教程</a></li>
<li><a href="">新手帮助</a></li>
<li><a href="">常见问题</a></li>
<li class="border_none"><a href="">意见反馈</a></li>
</ul>
</div>
<div class="footer_a2 fl">
<p class="footer_ewm">微信公众号</p>
<img src="${pageContext.request.contextPath}/images/foot_ewm_05.png" alt="">
</div>
<div class="footer_a3 fr">
<p class="footer_inform0"><span>联系我们(9:00 - 18:00)</span></p>
<p class="footer_inform1">400-000-0000</p>
<p class="footer_inform2">[email protected]</p>
<p class="footer_inform0">qq群:123456789</p>
</div>
</div>
<div class="footer_bottom">版权所有</div>
</div>
<!--尾部end-->
</body>
</html>
<script>
function paged(data,status) {
layui.use(['laypage', 'layer'],function () {
var laypage = layui.laypage
, layer = layui.layer;
var nums = 6; //每页出现数量;
var count=data.count;
laypage.render({
elem: 'demo5'
,count: count
,limit:6
,curr: location.hash.replace('#!fenye=', '') //获取hash值为fenye的当前页
,hash: 'fenye' //自定义hash值
, jump: function (obj, first) {
//首次不执行
if (!first) {
// alert(currPage);
//do something
var curr = obj.curr;//获取当前点击页码
getListData(curr,compositor,conditon);
}
}
});
});
};
$(function () {
var compositor=1;
var conditon=1;
getListData(1,compositor,conditon);
});
function getListData(currPage,com,cod){
if(com!=null)
{
compositor=com;
}
if (cod!=null)
{
conditon=cod;
}
// alert(compositor);
// alert(conditon);
$.ajax({
url:'${pageContext.request.contextPath}/SortProductByAll.action',
type:'post',
data: {
page:currPage, //当前页数
limit:6,
compositor:compositor,
condition:conditon,
},
dataType:'json',
success: function(data){
$("#freeimages") .empty();
$("#productsum").empty();
if(data!=null){
var str = "";
var products=data.data;
var productsum="";
productsum='共<span class="c_yellow">'+data.count+'</span>个项目'
$("#productsum").append(productsum);
$(products).each(function (index) {
var project=products[index];
//达成率
var num=(project.supmoney*project.numsup)/project.needmoney*100;
num = num.toFixed(2);
if(num>100)
{
num=100;
}
//剩余天数
var day=getday(project.startdate,project.deadline);
var image="/file/"+project.image;
str='<li> <a href="ToProductDetail.action?id='+project.id+'">'+
'<p class="s-p-bg"><img src="'+image+'" alt=""></p>'+
' <p class="s-p-mt">'+project.name+'</p>'+
' <p class="s-p-hide dispno"></p>'+
' <p class="s-p-hide1 dispno">'+project.name+'</p> </a>'+
'<div class="count_down"><span class="count_d" style="width:'+num+'%;"></span></div>'+
'<p class="clearfix">'+
'<span class="s-p-mtxt fl">已筹金额<span class="s-p-t">'+project.supmoney+'</span></span>'+
'<span class="s-p-mtxt fr">剩余时间<span class="s-p-t">'+day+'天</span></span>';
$("#freeimages") .append(str);
// window.location.href = "${pageContext.request.contextPath}/ToMain.action";
})
}else {
alert("响应失败1");
}
// alert(data.count);
paged(data,status);
},
error:function (data) {
alert("响应失败2");
}
});
};
function getday(startTime,endTime)
{
var date1= startTime; //开始时间
var date2 =endTime; //结束时间
var date3 = new Date(date2).getTime() - new Date(date1).getTime(); //时间差的毫秒数
//计算出相差天数
var days=Math.floor(date3/(24*3600*1000))
//计算出小时数
var leave1=date3%(24*3600*1000) //计算天数后剩余的毫秒数
var hours=Math.floor(leave1/(3600*1000))
//计算相差分钟数
var leave2=leave1%(3600*1000) //计算小时数后剩余的毫秒数
var minutes=Math.floor(leave2/(60*1000))
//计算相差秒数
var leave3=leave2%(60*1000) //计算分钟数后剩余的毫秒数
var seconds=Math.round(leave3/1000)
//alert(" 相差 "+days+"天 "+hours+"小时 "+minutes+" 分钟"+seconds+" 秒")
return days;
}
var user="${sessionScope.user.fname}"
if(user!=null){
$(".lr1").hide()
$(".zhuxiao").show();
}
</script>
Controller层:switch嵌套switch感觉代码重复率过高,但也没有想到其他解决方法,就先这样
@Controller
public class SortProductController {
@Autowired
private ProjectService projectService;
//综合排序
@RequestMapping(value="/SortProductByAll.action",method = RequestMethod.POST)
@ResponseBody
public PageResult<List<Project>> SortProductByAll(int page , int limit,int compositor,int condition) {
List<Project> projectList = null;
int count = 0;
//会自动传入limit和page
System.out.println("11111111111111111111111111111111111111111111111111");
System.out.println(page);
System.out.println(limit);
// 根据status来判断排序的种类
switch (compositor)
{
case 1:
switch (condition)
{
case 1:
//综合排序
// 分页查询,需要参数code(要为0,不然数据表格数据显示不出),msg(返回的消息),data(表格显示的数据),totals(查询到数据的总记录数),
projectList = projectService.sortProductByAll(page, limit);
//返回的总记录数
count = projectService.findProjectPageCount();
break;
case 2:
//综合排序+众筹中
// 分页查询,需要参数code(要为0,不然数据表格数据显示不出),msg(返回的消息),data(表格显示的数据),totals(查询到数据的总记录数),
projectList = projectService.sortProductingByAll(page, limit);
//返回众筹中的总记录数
count = projectService.findProjectingPageCount();
break;
case 3:
//综合排序 即将开始
// 分页查询,需要参数code(要为0,不然数据表格数据显示不出),msg(返回的消息),data(表格显示的数据),totals(查询到数据的总记录数),
projectList = projectService.sortProductWaitByAll(page, limit);
//返回的即将开始总记录数
count = projectService.findProjectWaitPageCount();
break;
case 4:
//综合排序 众筹完成
// 分页查询,需要参数code(要为0,不然数据表格数据显示不出),msg(返回的消息),data(表格显示的数据),totals(查询到数据的总记录数),
projectList = projectService.sortProductENdByAll(page, limit);
//返回的众筹完成总记录数
count = projectService.findProjectEndPageCount();
break;
default:break;
}
break;
case 2:
switch (condition)
{
//最新上线
case 1:
//最新上线
projectList = projectService.sortProductByDay(page, limit);
//返回的总记录数
count = projectService.findProjectPageCount();
break;
//最新上线+众筹中
case 2:
projectList = projectService.sortProductingByDay(page, limit);
//返回众筹中的总记录数
count = projectService.findProjectingPageCount();
break;
//最新上线+即将开始
case 3:
projectList = projectService.sortProductWaitByDay(page, limit);
count = projectService.findProjectWaitPageCount();
break;
//最新上线+完成
case 4:
projectList = projectService.sortProductENdByDay(page, limit);
count = projectService.findProjectEndPageCount();
break;
default:break;
}
break;
case 3:
switch (condition)
{
//根据最高金额排序
case 1:
//根据最高金额排序
projectList = projectService.sortProductByMoney(page, limit);
//返回的总记录数
count = projectService.findProjectPageCount();
break;
//根据最高金额排序+众筹中
case 2:
projectList = projectService.sortProductingByMoney(page, limit);
count = projectService.findProjectingPageCount();
break;
//根据最高金额排序+即将开始
case 3:
projectList = projectService.sortProductWaitByMoney(page, limit);
count = projectService.findProjectWaitPageCount();
break;
//根据最高金额排序+完成
case 4:
projectList = projectService.sortProductENdByMoney(page, limit);
count = projectService.findProjectEndPageCount();
break;
default:break;
}
break;
case 4:
switch (condition)
{
//根据 //最多支持
case 1:
//最多支持
projectList = projectService.sortProductBySup(page, limit);
//返回的总记录数
count = projectService.findProjectPageCount();
break;
//最多支持+众筹中
case 2:
projectList = projectService.sortProductingBySup(page, limit);
count = projectService.findProjectingPageCount();
break;
//最多支持+即将开始
case 3:
projectList = projectService.sortProductWaitBySup(page, limit);
count = projectService.findProjectWaitPageCount();
break;
//最多支持+完成
case 4:
projectList = projectService.sortProductENdBySup(page, limit);
count = projectService.findProjectEndPageCount();
break;
default:break;
}
break;
default:break;
}
PageResult<List<Project>> listPageResult = new PageResult<List<Project>>("", projectList, 0, count);
return listPageResult;
}
}
返回的 PageResult
package com.lzm.utils;
public class PageResult<T> {
private String msg;
//返回的数据
private T data;
private int code;
//总记录数
private int count;
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
public PageResult(String msg, T data, int code, int count) {
this.msg = msg;
this.data = data;
this.code = code;
this.count = count;
}
}
Service层就不贴了
文章浏览阅读1.8k次。安装前先关闭杀毒软件和360卫士,注意安装路径不能有中文,安装包路径也不要有中文。[安装环境]:Win7/Win8/Win101.在桌面上找到“计算机”鼠标右击选择“属性”。2.点击“高级系统设置”。3.点击“环境变量”。4.点击“新建”。5.在“新建用户变量”中分别输入变量名“lang”和变量值“chs”后,点击确定。6.点击确定。7.点击确定。8.鼠标右击软件压缩包,选择解压到“Proe3.0_x64”。9.双击打开“Proe3.0_x64”。10.在文件夹中找到_proe 3.0 m210安装教程
文章浏览阅读3.7k次。STM32 硬件I2C EEPROM命令解析转载▼ 转载自互联网void I2C_EE_BufferWrite(u8* pBuffer, u8 WriteAddr, u16 NumByteToWrite){ u8 NumOfPage = 0, NumOfSingle = 0, Addr = 0, count = 0_i2c_ee_bytewrite(
文章浏览阅读8.7k次,点赞7次,收藏8次。问题写论文用MathType倒腾公式的时候常常碰到公式编号对不齐的问题,如下图所示:都是在第二章中,开头公式2.1-2.5都是正常的解决方法点击MathType-章节,如图:点击下一个,找到类似的多余的章节标识删除即可:..._mathtype公式与序号对不齐
文章浏览阅读105次。##python的高级特性----迭代器 参考:python的高级特性----迭代器 迭代器主要就是节省内存。在python中可以直接作用于for循环的数据类型有以下几种:(1)集合类型的数据:list, tuple, dict, set,str(2)generator: 包括生成器和 带yield 的 generator function上述对象可以直接作用于for循环,统称为可迭代对象:iterable,我们可以通过isinstance() 判断一个对象是否是Iterable对象:i_python gnerator 和iterable
文章浏览阅读1.3k次。首先,通过wx.qy.login获取到code,然后把这个code发送给我们自己写的接口api.getCompanyId,去请求到企业微信的id wx.qy.login({ success(res) { console.log("企业微信登录"); console.log(res); if (res.code && res.code != 6000) { // 通过this.setData方法,将上方d_企业微信静默登录
文章浏览阅读2.8w次。收集到的 hls rtmp rtsp 视频流测试地址hlshttps://video-dev.github.io/streams/x36xhzz/x36xhzz.m3u8http://live.hkstv.hk.lxdns.com/live/hks/playlist.m3u8rtmprtmp://live.hkstv.hk.lxdns.com/live/hksrt..._公开的hlsl监控地址
文章浏览阅读257次。安装方法CentOS8上使用 yum 直接安装,环境变量自动配置好查看是否已安装看到下面结果,说明已经安装配置 jdk[root@xxx ~]# java -versionopenjdk version "1.8.0_222"OpenJDK Runtime Environment (build 1.8.0_222-b10)OpenJDK 64-Bit Server VM (build 25.222..._java-1.8.0-openjdk-headless(aarch-64) = 1:1.8.0.242.b08-1.h5.ky10 被 java-1.
文章浏览阅读1.4k次。(win10 + virtualbox6.0 + centos7.6.1810 + docker18.09.8 + kubernetes1.15.1 + istio1.2.3)本系列分为三章,第一章是创建虚拟机、docker、kubernetes等一些基础设施;第二章是在此基础上创建一个三节点的kubernetes集群;第三章是再在之上搭建istio服务网格。本文参考了大量其他优秀作者的创作(已经在开头列出),自己从零开始,慢慢搭建了istio服务网格,每一步都在文章中详细地列出了。_kubernetes docker 18.09.8
文章浏览阅读626次。picasa被封之后一直找不到合适的地方放相册,后来看到了google app engine。 用GAE开发了一个简单的网络硬盘,支持外链、权限设置和多文件批量上传功能。 权限设置部分通过设置目录属性实现,设为私有则只有APP的管理员登录后才可见,也可设是否对访问者列出目录内容。 多文件批量上传功能通过flex实现的,客户端需要flash player 10以上,上传失败会自动重试。测试中遇到个别文件上传总是失败,原因还未知_google硬盘外链
文章浏览阅读3.1k次。用Matlab进行MK检验用Matlab进行Mann-Kendall分析一、M-K趋势分析法与M-K突变检验的原理介绍1、Mann-Kendall趋势分析法非参数检验,又称任意分布检验,它不对变量的分布做严格假定,检验不针对特定的参数,而是模糊地对变量分布的中心位置或分布状态做检验,由于其不对总体分布做严格假定,因而适用性强[12]。因此,本文采用非参数的Mann-Kendall检验法对昌马河流域..._matlab mk 趋势检测结果
文章浏览阅读6.3k次。windows 开机自动运行bat,bat文件放到“启动”目录即可。具体步骤:(1)打开C盘,依次按下图,查看->隐藏文件项目打勾->打开文件夹ProgrameData。或者直接粘贴访问C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp(2)拷贝bat到该启动目录下。————————————————版权声明:本文为CSDN博主「木易GIS」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声_servers 2016 设置开机启动.bat程序
文章浏览阅读9.8k次,点赞27次,收藏174次。计算机专业常用的网站_计算机学习网站