程序设计训练课程设计
目录
前言 1
第1章 数据导入功能设计 1
1.1总体功能说明 1
1.2程序分析 1
1.3主要技术说明 2
1.4主要文件代码和程序说明 2
第2章 统计分析设计 7
2.1总体功能说明 7
2.2程序分析 8
2.3主要技术说明 8
2.4主要文件代码和程序说明 8
第3章 统计结果展示 15
3.1 每个顾客的消费额统计结果展示与说明 15
3.2 每个顾客每年的消费额统计结果展示与说明 15
3.3总消费构成统计结果展示与说明 15
3.4每一年的总消费构成统计结果展示与说明 16
结束语 16
附录:源代码清单 17
前言
本次课程设计使⽤ Java 和 Hadoop等相关技术对14万条脱敏交易数据进⾏统计分析,首先使用java将数据切分并导入到数据库,然后将数据导出到CSV文件,最后在虚拟机中利用MapReduce对数据进行整理分析。
第1章 数据导入
1.1 总体功能说明
********************************
- 连接数据库
- 数据切片
- 将数据导入MySQL数据表
- 将数据导出到CSV文件
1.2 程序分析
*************************************************
1.3主要技术说明
*************************************************
1.java读取文件、创建类
2.利用循环、遍历java的split方法与replace方法与进行切片
3.连接数据库,将数据导入数据库
4.导出CSV
1.4主要文件代码和程序说明
*************************************************
一.对数据进行清洗插入
package hfy;
import java.sql.*;
import java.io.*;
public class hufangyu
{
private static String driver="com.mysql.cj.jdbc.Driver";
private static String url="jdbc:mysql://localhost/hufangyu?serverTimezone=UTC";
private static String user="root";
private static String password="qazwsx";
public static void main(String[] args) throws Exception
{
String thisLine;
String[] oneline;
String[] twoline = new String[5];
String[] threeline = new String[6];
String user_id;
String describe_info;
int s = 0;
int i;
int gg =0;
try(
FileReader fr=new FileReader("D:/数据.txt");
BufferedReader bfr=new BufferedReader(fr);
)
{
while ((thisLine=bfr.readLine())!=null)
{
int g =0;
if(gg==10001)
{gg++;
continue;}
else {
if(thisLine.length()>0)
{
oneline = thisLine.split("\\, \\(|\\(\\(|'\\)\\)");
//遍历每一行
for( i = 0;i<oneline.length;i++)
{
if(oneline[i]!="") {
g++;
System.out.println(oneline[i]);
twoline = oneline[i].split("', '|, '|'\\)|', \"|\", '|', ");
for(int a =0;a<twoline.length;a++)
{
threeline[a]=twoline[a];
//System.out.println(twoline[a]);
}
user_id = threeline[0];
describe_info = threeline[2]; Connection conn=null;
PreparedStatement ps=null;
ResultSet rs=null;
String insertSql="INSERT INTO flow_data1(user_id,payment,describe_info,time)"+
"VALUES(?,?,?,?);";
if(threeline[1]!=null && threeline[2]!=null &&threeline[3]!=null &&threeline[0]!=null)
{
try
{
Class.forName(driver);
conn=DriverManager.getConnection(url,user,password);
//插入数据操作
ps=conn.prepareStatement(insertSql);
ps.setInt(1,Integer.parseInt(user_id));
ps.setFloat(2,Float.parseFloat(threeline[1]));
ps.setString(3,describe_info.replaceAll(",",""));
ps.setInt(4,Integer.parseInt(threeline[3]));
int count=ps.executeUpdate();
System.out.println("添加"+ count+"条记录到Student表中");
s++;
}//try结束
catch(Exception e)
{
e.printStackTrace();
}//catch结束
finally
{
try
{
if(rs!=null) rs.close();
if(ps!=null) ps.close();
if(conn!=null) conn.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}// try catch finally 结束
}//if 结束
else
{}
System.out.println("共插入了" + s + "条记录");
}
}
}
}
gg=g;
System.out.println("***************************************" + g);
}//whlie语句结束
}
//System.out.println(count1);
}
}
二.导出到CSV文件
package hfy;
import java.sql.*;
import java.io.*;
public class hufangyu1
{
private static String driver="com.mysql.cj.jdbc.Driver";
private static String url="jdbc:mysql://localhost/hufangyu?serverTimezone=UTC";
private static String user="root";
private static String password="qazwsx";
public static void main(String[] args) throws Exception
{
Connection conn=null;
PreparedStatement ps=null;
ResultSet rs=null;
try {
String insertSql="select user_id,payment,describe_info,(select FROM_UNIXTIME(time,'%Y-%m-%d')) time from flow_data1 into outfile 'D:\\flow_data.csv' fields terminated by ',' lines terminated by '\\r\\n'";
Class.forName(driver);
conn=DriverManager.getConnection(url,user,password);
ps=conn.prepareStatement(insertSql);
rs=ps.executeQuery(insertSql);
}//try结束
catch(Exception e)
{
e.printStackTrace();
}//catch结束
finally
{
try
{
if(rs!=null) rs.close();
if(ps!=null) ps.close();
if(conn!=null) conn.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
}
第2章 统计分析
2.1 总体功能说明
********************************
1.统计每个顾客的消费额;
2.统计每个顾客每⼀年的消费额;
3.统计总消费构成;
4.统计每⼀年的消费构成;
2.2 程序分析
*************************************************
2.3主要技术说明
*************************************************
- 编写mapper reduce函数
- 在终端上运行
- 列出目录并查看文件内容
2.4主要文件代码和程序说明
*************************************************
MapReduce主类
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
public class WordMain {
public static void main(String[] args) throws Exception {
// 创建一个job和任务入口
Job job = Job.getInstance(new Configuration());
job.setJarByClass(WordMain.class); //main方法所在的class
//指定job的mapper和输出的类型<k2 v2>
job.setMapperClass(WordMapper.class);
job.setMapOutputKeyClass(Text.class); //k2的类型
job.setMapOutputValueClass(LongWritable.class); //v2的类型
//指定job的reducer和输出的类型<k4 v4>
job.setReducerClass(WordReducer.class);
job.setOutputKeyClass(Text.class); //k4的类型
job.setOutputValueClass(LongWritable.class); //v4的类型
//指定job的输入和输出
FileInputFormat.setInputPaths(job, new Path(args[0]));
FileOutputFormat.setOutputPath(job, new Path(args[1]));
//执行job
job.waitForCompletion(true);
}
}
MapReduce reduceer类
import java.io.IOException;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;
public class WordReducer extends Reducer<Text, LongWritable, Text, LongWritable> {
@Override
protected void reduce(Text k3, Iterable<LongWritable> v3, Context context) throws IOException, InterruptedException {
//K3,V3 -> <”hello”,<1,1,1,1,1,1>>
// TODO Auto-generated method stub
long count = 0;
for(LongWritable l : v3) {
count += l.get();
}
context.write(k3, new LongWritable(count));
}
}
MapReduce 每个顾客的消费额mapper类
package 每个顾客的消费记录;
import java.io.IOException;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;
public class WordMapper extends Mapper<LongWritable, Text, Text, LongWritable> {
String[] s ;
@Override
protected void map(LongWritable key, Text value, Context context)
throws IOException, InterruptedException {
s = value.toString().split(",");
for(int i =0;i<s.length;i++) {
//for(String s : value.toString().split(",")) {
int payment = Integer.parseInt(s[1]);
context.write(new Text(s[0]), new LongWritable(payment));
}
}
// hello,hello
}
MapReduce 每个顾客每一年的的消费额mapper类
package 每个顾客每年的消费记录;
import java.io.IOException;
import java.util.Arrays;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;
public class WordMapper extends Mapper<LongWritable, Text, Text, LongWritable> {
String[] s ;
String[] iy = new String[2];
@Override
protected void map(LongWritable key, Text value, Context context)
throws IOException, InterruptedException {
s = value.toString().split(",");
for(int i =0;i<s.length;i++) {
//for(String s : value.toString().split(",")) {
int payment = Integer.parseInt(s[1]);
iy[0]=s[0];
iy[1]=s[s.length-1].split("/")[0];
context.write(new Text(Arrays.toString(iy)), new LongWritable(payment));
}
}
// hello,hello
}
MapReduce 总消费构成mapper类
package 总消费构成;
import java.io.IOException;
import java.util.Arrays;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;
public class WordMapper extends Mapper<LongWritable, Text, Text, LongWritable> {
@Override
protected void map(LongWritable key, Text value, Context context)
throws IOException, InterruptedException {
String[] liebiao = {"充值","支付宝","消费","网银","美团","还款"};
String line = new String(value.getBytes(),0,value.getLength(),"GBK");
String data =line.toString();
String[] s = data.split(",");
for(int i =0;i<liebiao.length;i++)
{
if(s[2].contains(liebiao[i]))
{
String k2 = liebiao[i];
context.write(new Text(k2),new LongWritable(Long.parseLong(s[1])));
}
}
//}
}
// hello,hello
}
MapReduce 每一年的消费构成mapper类
package 每一年的消费构成;
import java.io.IOException;
import java.util.Arrays;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;
public class WordMapper extends Mapper<LongWritable, Text, Text, LongWritable> {
String[] dy = new String[2];
@Override
protected void map(LongWritable key, Text value, Context context)
throws IOException, InterruptedException {
String[] liebiao = {"充值","支付宝","消费","网银","美团","还款"};
String line = new String(value.getBytes(),0,value.getLength(),"GBK");
String data =line.toString();
String[] s = data.split(",");
for(int i =0;i<liebiao.length;i++)
{
if(s[2].contains(liebiao[i]))
{
String k2 = liebiao[i];
dy[0] = k2;
dy[1] = s[s.length-1].split("/")[0];
context.write(new Text(Arrays.toString(dy)),new LongWritable(Long.parseLong(s[1])));
}
}
//}
}
// hello,hello
}
第3章 统计结果展示
3.1 每个顾客的消费额统计结果展示与说明
********************************
左侧为user_id,右侧为该user_id的payment的总和
3.2 每个顾客每⼀年的消费额统计结果展示与说明
*************************************************
左侧为user_id和time转换为时间后的样式,右侧为该user_id在每年花费的总额。
3.3 总消费构成统计结果展示与说明
*************************************************
左侧为describe_info,右侧为该关键词花费总和。
3.4 每⼀年的消费构成统计结果展示与说明
*************************************************
左侧为describe_info,右侧为该关键词每年花费总和。
第4章 结束语
经过这二十天的努力,课程设计也要告一段落了,在这二十天里,我遇到了许多问题,有的通过自己思考解决,有的通过同学们的帮助解决,有的在网上寻找到了答案。在这个发现问题到解决问题的过程中,我收获了很多,也有很多心得体会。
(1)在清洗数据并导入数据库中我就遇到了无法将数据导入数据库的问题,每次运行程序总是插入0行记录,出现java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver错误,然后我通过百度查到这个错误是缺少了一个jar包导致,我将相应的jar包导入eclipse中,最终解决了这个问题。
(2)我在csv文件导出时出现The MySQL server is running with the --secure-file-priv option so it cannot execute this statement,但是我通过百度没用解决这个问题,然后我询问同学,将MySQL中my文件的路径修改正确然后重启mysql,成功解决这个问题。
除此之外,我还遇到了一些函数、类的使用上的小问题,经过仔细检查,都被一一解决。
本次课程设计让我对这学期所学知识进行了巩固和加强,学到了更多的知识,同时也提高了我发现问题、解决问题的能力。让我对java程序的编写更加熟练,能够连接数据库并通过Java程序将数据导入数据库,对hadoop的应用能力也有所提升,能够使用mapper reduce对数据进行整理。纸上得来终觉浅,绝知此事要躬行,在课堂上听老师讲课感觉自己都能够掌握,但是到了实战阶段就会发现自己有很多不足之处,很多问题都需要认真思考、或者到网上寻找答案,甚至需要请教他人。但是发现问题才能提高自己,只有将这些困难一一克服,才算是真正掌握了这些知识。
附录:源代码清单
所有的程序源代码
1.对数据进行清洗插入
package hfy;
import java.sql.*;
import java.io.*;
public class hufangyu
{
private static String driver="com.mysql.cj.jdbc.Driver";
private static String url="jdbc:mysql://localhost/hufangyu?serverTimezone=UTC";
private static String user="root";
private static String password="qazwsx";
public static void main(String[] args) throws Exception
{
String thisLine;
String[] oneline;
String[] twoline = new String[5];
String[] threeline = new String[6];
String user_id;
String describe_info;
int s = 0;
int i;
int gg =0;
try(
FileReader fr=new FileReader("D:/数据.txt");
BufferedReader bfr=new BufferedReader(fr);
)
{
while ((thisLine=bfr.readLine())!=null)
{
int g =0;
if(gg==10001)
{gg++;
continue;}
else {
if(thisLine.length()>0)
{
oneline = thisLine.split("\\, \\(|\\(\\(|'\\)\\)");
//遍历每一行
for( i = 0;i<oneline.length;i++)
{
if(oneline[i]!="") {
g++;
System.out.println(oneline[i]);
twoline = oneline[i].split("', '|, '|'\\)|', \"|\", '|', ");
for(int a =0;a<twoline.length;a++)
{
threeline[a]=twoline[a];
//System.out.println(twoline[a]);
}
user_id = threeline[0];
describe_info = threeline[2];
Connection conn=null;
PreparedStatement ps=null;
ResultSet rs=null;
String insertSql="INSERT INTO flow_data1(user_id,payment,describe_info,time)"+
"VALUES(?,?,?,?);";
if(threeline[1]!=null && threeline[2]!=null &&threeline[3]!=null &&threeline[0]!=null)
{
try
{
Class.forName(driver);
conn=DriverManager.getConnection(url,user,password);
//插入数据操作
ps=conn.prepareStatement(insertSql);
ps.setInt(1,Integer.parseInt(user_id));
ps.setFloat(2,Float.parseFloat(threeline[1]));
ps.setString(3,describe_info.replaceAll(",",""));
ps.setInt(4,Integer.parseInt(threeline[3]));
int count=ps.executeUpdate();
System.out.println("添加"+ count+"条记录到Student表中");
s++;
}//try结束
catch(Exception e)
{
e.printStackTrace();
}//catch结束
finally
{
try
{
if(rs!=null) rs.close();
if(ps!=null) ps.close();
if(conn!=null) conn.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}// try catch finally 结束
}//if 结束
else
{}
System.out.println("共插入了" + s + "条记录");
}
}
}
}
gg=g;
System.out.println("***************************************" + g);
}//whlie语句结束
}
//System.out.println(count1);
}
}
2.导出到CSV文件
package hfy;
import java.sql.*;
import java.io.*;
public class hufangyu1
{
private static String driver="com.mysql.cj.jdbc.Driver";
private static String url="jdbc:mysql://localhost/hufangyu?serverTimezone=UTC";
private static String user="root";
private static String password="qazwsx";
public static void main(String[] args) throws Exception
{
Connection conn=null;
PreparedStatement ps=null;
ResultSet rs=null;
try {
String insertSql="select user_id,payment,describe_info,(select FROM_UNIXTIME(time,'%Y-%m-%d')) time from flow_data1 into outfile 'D:\\flow_data.csv' fields terminated by ',' lines terminated by '\\r\\n'";
Class.forName(driver);
conn=DriverManager.getConnection(url,user,password);
ps=conn.prepareStatement(insertSql);
rs=ps.executeQuery(insertSql);
}//try结束
catch(Exception e)
{
e.printStackTrace();
}//catch结束
finally
{
try
{
if(rs!=null) rs.close();
if(ps!=null) ps.close();
if(conn!=null) conn.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
}
MapReduce主类
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
public class WordMain {
public static void main(String[] args) throws Exception {
// 创建一个job和任务入口
Job job = Job.getInstance(new Configuration());
job.setJarByClass(WordMain.class); //main方法所在的class
//指定job的mapper和输出的类型<k2 v2>
job.setMapperClass(WordMapper.class);
job.setMapOutputKeyClass(Text.class); //k2的类型
job.setMapOutputValueClass(LongWritable.class); //v2的类型
//指定job的reducer和输出的类型<k4 v4>
job.setReducerClass(WordReducer.class);
job.setOutputKeyClass(Text.class); //k4的类型
job.setOutputValueClass(LongWritable.class); //v4的类型
//指定job的输入和输出
FileInputFormat.setInputPaths(job, new Path(args[0]));
FileOutputFormat.setOutputPath(job, new Path(args[1]));
//执行job
job.waitForCompletion(true);
}
}
MapReduce reduceer类
import java.io.IOException;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;
public class WordReducer extends Reducer<Text, LongWritable, Text, LongWritable> {
@Override
protected void reduce(Text k3, Iterable<LongWritable> v3, Context context) throws IOException, InterruptedException {
//K3,V3 -> <”hello”,<1,1,1,1,1,1>>
// TODO Auto-generated method stub
long count = 0;
for(LongWritable l : v3) {
count += l.get();
}
context.write(k3, new LongWritable(count));
}
}
MapReduce 每个顾客的消费额mapper类
package 每个顾客的消费记录;
import java.io.IOException;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;
public class WordMapper extends Mapper<LongWritable, Text, Text, LongWritable> {
String[] s ;
@Override
protected void map(LongWritable key, Text value, Context context)
throws IOException, InterruptedException {
s = value.toString().split(",");
for(int i =0;i<s.length;i++) {
//for(String s : value.toString().split(",")) {
int payment = Integer.parseInt(s[1]);
context.write(new Text(s[0]), new LongWritable(payment));
}
}
// hello,hello
}
MapReduce 每个顾客每一年的的消费额mapper类
package 每个顾客每年的消费记录;
import java.io.IOException;
import java.util.Arrays;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;
public class WordMapper extends Mapper<LongWritable, Text, Text, LongWritable> {
String[] s ;
String[] iy = new String[2];
@Override
protected void map(LongWritable key, Text value, Context context)
throws IOException, InterruptedException {
s = value.toString().split(",");
for(int i =0;i<s.length;i++) {
//for(String s : value.toString().split(",")) {
int payment = Integer.parseInt(s[1]);
iy[0]=s[0];
iy[1]=s[s.length-1].split("/")[0];
context.write(new Text(Arrays.toString(iy)), new LongWritable(payment));
}
}
// hello,hello
}
MapReduce 总消费构成mapper类
package 总消费构成;
import java.io.IOException;
import java.util.Arrays;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;
public class WordMapper extends Mapper<LongWritable, Text, Text, LongWritable> {
@Override
protected void map(LongWritable key, Text value, Context context)
throws IOException, InterruptedException {
String[] liebiao = {"充值","支付宝","消费","网银","美团","还款"};
String line = new String(value.getBytes(),0,value.getLength(),"GBK");
String data =line.toString();
String[] s = data.split(",");
for(int i =0;i<liebiao.length;i++)
{
if(s[2].contains(liebiao[i]))
{
String k2 = liebiao[i];
context.write(new Text(k2),new LongWritable(Long.parseLong(s[1])));
}
}
//}
}
// hello,hello
}
MapReduce 每一年的消费构成mapper类
package 每一年的消费构成;
import java.io.IOException;
import java.util.Arrays;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;
public class WordMapper extends Mapper<LongWritable, Text, Text, LongWritable> {
String[] dy = new String[2];
@Override
protected void map(LongWritable key, Text value, Context context)
throws IOException, InterruptedException {
String[] liebiao = {"充值","支付宝","消费","网银","美团","还款"};
String line = new String(value.getBytes(),0,value.getLength(),"GBK");
String data =line.toString();
String[] s = data.split(",");
for(int i =0;i<liebiao.length;i++)
{
if(s[2].contains(liebiao[i]))
{
String k2 = liebiao[i];
dy[0] = k2;
dy[1] = s[s.length-1].split("/")[0];
context.write(new Text(Arrays.toString(dy)),new LongWritable(Long.parseLong(s[1])));
}
}
//}
}
// hello,hello
}
指导教师评语 |
|
成绩 |
签字: 年 月 日 |
程序设计训练课程设计相关推荐
- “程序设计与算法训练”课程设计“二值图像数字水印技术的实践”
数据结果课程设计(题目抄袭自某牛逼985高校). github项目地址(含报告等) 课程编号:0521733B ...
- java打字训练课程设计_Java打字训练课程设计
Java打字训练课程设计 软 件 学 院课程设计报告书课程名称 设计题目 专业班级 学 号 姓 名 指导教师 年 月目录1 设计时间 12 设计目的 13 设计任务 14 设计内容 14.1 需求分析 ...
- java课程设计日历记事本_《Java程序设计》课程设计日历记事本.doc
<Java程序设计>课程设计日历记事本 PAGE PAGE 2 本科生课程设计 课程名称 Java程序设计课程设计 课程编号 j1620011 题目 日历记事本 学号 2008116222 ...
- 《C语言程序设计》课程设计实践考核说明
<C语言程序设计>课程设计实践考核说明 <C语言程序设计>课程设计实践考核说明 本次设计是为加强学生的<C语言程序设计>课程的实际应用能力而进行的专门训练.选题考虑 ...
- java课设推荐,《Java程序设计》课程设计报告推荐.docx
<Java程序设计>课程设计报告推荐 <Java程序设计>课程设计报告2015-2016学年 第一学期设计题目整数进制转换学生姓名邹晓刚学 号0专业班级信管1303指导教师 姜 ...
- c语言程序设计样板,《C语言程序设计》课程设计报告书样板.doc
<C语言程序设计>课程设计报告书样板 电子系<C语言程序设计> 课程设计报告书 题目:ATM机模拟操作程序的设计 专业:__________________________ 学 ...
- c语言程序设计 在线课程设计,c语言程序设计 本科课程设计
<c语言程序设计 本科课程设计>由会员分享,可在线阅读,更多相关<c语言程序设计 本科课程设计(11页珍藏版)>请在人人文库网上搜索. 1.河北农业大学本 科 课 程 设 计课 ...
- java人力资源管理系统设计_人力资源管理系统——《Java Web程序设计》课程设计...
内容简介: 人力资源管理系统--<Java Web程序设计>课程设计,正文共24页,7418字,附源程序. 0 引言 全球范围内的企业内部组织正在发生巨变,未来企业成功的关键的依靠企业人力 ...
- c语言银行卡管理系统程序设计报告,《c语言程序设计》课程设计报告-职工信息管理系统.doc...
<c语言程序设计>课程设计报告-职工信息管理系统.doc 还剩 24页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环 ...
最新文章
- java二维数组从键盘更改_互换二维数组的行列。要求数组的行数、列数以及各元素均从键盘输入;输出互换前数组内容和互换后数组内容。(要求循环输入进行测试)Java...
- Web服务之Nginx浅析
- Only a type can be imported. xxxx resolves to a package
- java:数据库连接池
- iOS 架构模式--解密 MVC,MVP,MVVM以及VIPER架构
- RestTemplate发起HTTPS请求
- go语言:函数参数传递详解
- 软件测试的方法有哪些?
- c语言 画图软件哪个好,电脑画图软件推荐
- 数字电路:边沿触发的D触发器简析
- 联想服务器硬盘启动设置方法,教你联想台式机bios设定硬盘启动方法
- springboot 使用mybatis-plus 配置乐观锁。
- “手术机器人”掀起融资潮,行业正加速打破“达芬奇”神话
- 清除Windows系统用户密码
- Kelvin connection-开尔文连接
- Kaggle教程 机器学习中级7 数据泄露
- 打印机设置为双面打印
- 直播行业寻破局之策,映客的转型是否奏效?
- 前端面试题--水平垂直居中的方法
- android悬浮按钮组件