走向面试之数据库基础:一、你必知必会的SQL语句练习-Part 1
本文是在Cat Qi的参考原帖的基础之上经本人一题一题练习后编辑而成,非原创,仅润色而已。另外,本文所列题目的解法并非只有一种,本文只是给出比较普通的一种而已,也希望各位园友能够自由发挥。
一、三点一线当学霸:“学生-课程-成绩”类题目
1.1 本题目的表结构
Student(S#,Sname,Sage,Ssex) 学生表
Course(C#,Cname,T#) 课程表
SC(S#,C#,score) 成绩表
Teacher(T#,Tname) 教师表
1.2 本题目的建表及测试数据
(1)建表:
CREATE TABLE Student
(
S# INT,
Sname nvarchar(32),
Sage INT,
Ssex nvarchar(8)
) CREATE TABLE Course
(
C# INT,
Cname nvarchar(32),
T# INT
) CREATE TABLE Sc
(
S# INT,
C# INT,
score INT
) CREATE TABLE Teacher
(
T# INT,
Tname nvarchar(16)
)
注意:建表语句暂未考虑主键以及外键的问题;
(2)测试数据:
insert into Student select 1,N'刘一',18,N'男' union all
select 2,N'钱二',19,N'女' union all
select 3,N'张三',17,N'男' union all
select 4,N'李四',18,N'女' union all
select 5,N'王五',17,N'男' union all
select 6,N'赵六',19,N'女' insert into Teacher select 1,N'叶平' union all
select 2,N'贺高' union all
select 3,N'杨艳' union all
select 4,N'周磊' insert into Course select 1,N'语文',1 union all
select 2,N'数学',2 union all
select 3,N'英语',3 union all
select 4,N'物理',4 insert into SC
select 1,1,56 union all
select 1,2,78 union all
select 1,3,67 union all
select 1,4,58 union all
select 2,1,79 union all
select 2,2,81 union all
select 2,3,92 union all
select 2,4,68 union all
select 3,1,91 union all
select 3,2,47 union all
select 3,3,88 union all
select 3,4,56 union all
select 4,2,88 union all
select 4,3,90 union all
select 4,4,93 union all
select 5,1,46 union all
select 5,3,78 union all
select 5,4,53 union all
select 6,1,35 union all
select 6,2,68 union all
select 6,4,71
1.3 开始实战吧小宇宙
(1)查询“001”课程比“002”课程成绩高的所有学生的学号;
select a.S# from
(select S#,Score from SC where C#='') a,
(select S#,Score from SC where C#='') b
where a.S#=b.S# and a.Score>b.Score
(2) 查询平均成绩大于60分的同学的学号和平均成绩;
select S#,AVG(Score) as AvgScore
from SC
group by S#
having AVG(Score)>60
(3)查询所有同学的学号、姓名、选课数、总成绩;
select s.S#,s.Sname,COUNT(sc.C#) as CourseCount,SUM(sc.Score) as ScoreSum
from Student s left outer join SC sc
on s.S# = sc.S#
group by s.S#,s.Sname
order by s.S#
(4)查询姓“李”的老师的个数;
select COUNT(distinct Tname) as count
from Teacher
where Tname like '李%'
(5)查询没学过“叶平”老师课的同学的学号、姓名;
select s.S#,s.Sname
from Student s
where s.S# not in
(
select distinct(sc.S#) from SC sc,Course c,Teacher t
where sc.C#=c.C# and c.T#=t.T# and t.Tname='叶平'
)
(6)查询学过“001”并且也学过编号“002”课程的同学的学号、姓名;
--解法一:求交集
select s.S#,s.Sname
from Student s,SC sc
where s.S#=sc.S# and sc.C#=''
intersect
select s.S#,s.Sname
from Student s,SC sc
where s.S#=sc.S# and sc.C#=''
--解法二:使用exists
select s.S#,s.Sname
from Student s,SC sc
where s.S#=sc.S# and sc.C#='' and exists
(
select * from SC sc2 where sc.S#=sc2.S# and sc2.C#=''
)
PS:EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或False。那么,这里我们来看一下in和exists的区别:
①in 是把外表和内表作hash 连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询。
②一直以来认为exists比in效率高的说法是不准确的。
-->如果查询的两个表大小相当,那么用in和exists差别不大。
-->如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in。
(7)查询学过“叶平”老师所教的所有课的同学的学号、姓名;
select s.S#,s.Sname
from Student s
where s.S# in
(
select sc.S#
from SC sc,Course c,Teacher t
where c.C#=sc.C# and c.T#=t.T# and t.Tname='叶平'
group by sc.S#
having COUNT(sc.C#)=
(
select COUNT(c1.C#)
from Course c1,Teacher t1
where c1.T#=t1.T# and t1.Tname='叶平'
)
)
①测试数据教师表中,叶平老师只有一门课
②修改测试数据教师表,将T#=2的TName也改为叶平,叶平就有两门主讲课程了
(8)查询课程编号“002”的成绩比课程编号“001”课程低的所有同学的学号、姓名;
select s.S#,s.Sname
from Student s,
(select sc1.S#,sc1.Score from SC sc1 where sc1.C#='') a,
(select sc2.S#,sc2.Score from SC sc2 where sc2.C#='') b
where s.S#=a.S# and s.S#=b.S# and a.S#=b.S# and a.Score<b.Score
(9)查询有课程成绩小于60分的同学的学号、姓名;
select s.S#,s.Sname
from Student s
where s.S# in
(
select distinct(sc.S#) from SC sc
where s.S#=sc.S# and sc.Score<60
)
(10)查询没有学全所有课的同学的学号、姓名;
select s.S#,s.Sname
from Student s
where s.S# not in
(
select sc.S# from SC sc
group by sc.S#
having COUNT(distinct sc.C#)=
(
select COUNT(distinct c.C#) from Course c
)
)
(11)查询至少有一门课与学号为“001”的同学所学相同的同学的学号和姓名;
select distinct(s.S#),s.Sname
from Student s,SC sc
where s.S#=sc.S# and sc.C# in
(
select distinct(sc2.C#) from SC sc2
where sc2.S#=''
)
order by s.S# asc
(12)查询至少学过学号为“001”同学所有一门课的其他同学学号和姓名;(感觉跟11题有重叠)
select distinct(s.S#),s.Sname
from Student s,SC sc
where s.S#=sc.S# and s.S#!='' and sc.C# in
(
select distinct(sc2.C#) from SC sc2
where sc2.S#=''
)
order by s.S# asc
(13)把“SC”表中“叶平”老师教的课的成绩都更改为此课程的平均成绩;
update SC set Score=
(
select AVG(score) from SC sc,Course c,Teacher t
where sc.C#=c.C# and c.T#=t.T# and t.Tname='叶平'
)
where C# in
(
select distinct(sc.C#) from SC sc,Course c,Teacher t
where sc.C#=c.C# and c.T#=t.T# and t.Tname='叶平'
)
(14)查询和“002”号的同学学习的课程完全相同的其他同学学号和姓名;
select s.S#,s.Sname
from Student s
where s.S#!='' and s.S# in
(
select distinct(S#) from SC
where C# in (select C# from SC where S#='')
group by S#
having COUNT(distinct C#)=
(
select COUNT(distinct C#) from SC
where S#=''
)
)
(15)删除学习“叶平”老师课的SC表记录;
delete from SC where C# in
(
select c.C# from Course c,Teacher t
where c.T#=t.T# and t.Tname='叶平'
)
(16)向SC表中插入一些记录,这些记录要求符合以下条件:①没有上过编号“002”课程的同学学号;②插入“002”号课程的平均成绩;
insert into SC
select s.S#,'',(select AVG(score) from SC where C#='')
from Student s
where s.S# not in (select distinct(S#) from SC where C#='')
(17)按平均成绩从低到高显示所有学生的“语文”、“数学”、“英语”三门的课程成绩,按如下形式显示: 学生ID,语文,数学,英语,有效课程数,有效平均分;
select t.S# as '学生ID',
(select Score from SC where S#=t.S# and C#='') as '语文',
(select Score from SC where S#=t.S# and C#='') as '数学',
(select Score from SC where S#=t.S# and C#='') as '英语',
COUNT(t.C#) as '有效课程数',
AVG(t.Score) as '有效平均分'
from SC t
group by t.S#
order by AVG(t.Score)
(18)查询各科成绩最高和最低的分:以如下形式显示:课程ID,最高分,最低分;
select sc.C# as '课程ID',MAX(Score) as '最高分',MIN(Score) as '最低分'
from SC sc
group by sc.C#
(19)按各科平均成绩从低到高和及格率的百分数从高到低顺序;
select sc.C#,c.Cname,ISNULL(AVG(sc.Score),0) as 'AvgScore',
100 * SUM(CASE WHEN ISNULL(sc.Score,0)>=60 THEN 1 ELSE 0 END)/COUNT(*) as 'Percent(%)'
from SC sc,Course c
where sc.C#=c.C#
group by sc.C#,c.Cname
order by [Percent(%)] desc
PS:此题难点在于如何求及格率的百分比,我们可以通过判断每一行的Score是否大于等于60分的人数除以该课程的人数获得及格率,然后统一乘以100便得到百分比。这里使用了聚合函数SUM(PassedCounts)/COUNT(AllCounts)得到及格率(小于1的概率),最后乘以100获得百分比。核心是这里的PassedCounts(及格人数)的计算,这里使用了CASE WHEN *** THEN *** ELSE *** END的语句,灵活地对Score进行了判断并赋值(1和0)进行计算。
另外,这里[Percent(%)]可以使用100 * SUM(CASE WHEN ISNULL(sc.Score,0)>=60 THEN 1 ELSE 0 END)/COUNT(*)替代。
(20)查询如下课程平均成绩和及格率的百分数(备注:需要在1行内显示): 企业管理(002),OO&UML (003),数据库(004)
select
SUM(CASE WHEN C#='' THEN Score ELSE 0 END)/SUM(CASE C# WHEN '' THEN 1 ELSE 0 END) as '企业管理平均分',
100 * SUM(CASE WHEN C#='' and Score>=60 THEN 1 ELSE 0 END)/SUM(CASE C# WHEN '' THEN 1 ELSE 0 END) as '企业管理及格百分比',
SUM(CASE WHEN C#='' THEN Score ELSE 0 END)/SUM(CASE C# WHEN '' THEN 1 ELSE 0 END) as 'OO&UML平均分',
100 * SUM(CASE WHEN C#='' and Score>=60 THEN 1 ELSE 0 END)/SUM(CASE C# WHEN '' THEN 1 ELSE 0 END) as 'OO&UML及格百分比',
SUM(CASE WHEN C#='' THEN Score ELSE 0 END)/SUM(CASE C# WHEN '' THEN 1 ELSE 0 END) as '数据库平均分',
100 * SUM(CASE WHEN C#='' and Score>=60 THEN 1 ELSE 0 END)/SUM(CASE C# WHEN '' THEN 1 ELSE 0 END) as '数据库及格百分比'
from SC
PS:这里出现了两种格式的CASE WHEN语句,但其实这两种方式,可以实现相同的功能。简单case函数(例如上面的:CASE C# WHEN '002' THEN 1 ELSE 0 END)的写法相对比较简洁,但是和case搜索函数(例如上面的:CASE WHEN C#='002' THEN Score ELSE 0 END)相比,功能方面会有些限制,比如写判定式。
(21)查询不同老师所教不同课程平均分从高到低显示;
select c.C#,MAX(c.Cname) as 'Cname',MAX(t.T#) as 'T#',MAX(t.Tname) as 'Tname',
AVG(sc.Score) as 'AvgScroe'
from SC sc,Course c,Teacher t
where sc.C#=c.C# and c.T#=t.T#
group by c.C#
order by AvgScroe desc
PS:可能有园友会对上题中的很多个MAX(列名)有疑惑,这里我们再来看下Group By语句。这里需要注意的一点就是,在select指定的字段要么就要包含在Group By语句的后面,作为分组的依据;要么就要被包含在聚合函数中。因此,上题中我们需要查询课程名,教师名等信息,但又不是分组的依据(分组依据应该是课程号),因此就用MAX()这个聚合函数包裹起来。
(22)查询如下课程成绩第 3 名到第 6 名的学生成绩单:企业管理(001),马克思(002),UML (003),数据库(004)
[学生ID],[学生姓名],企业管理,马克思,UML,数据库,平均成绩
此题没有看明白,跳过。
(23)统计列印各科成绩,各分数段人数:课程ID,课程名称,[100-85],[85-70],[70-60],[ <60]
select sc.C#,MAX(c.Cname) as 'CourseName',
SUM(CASE WHEN sc.Score BETWEEN 85 and 100 THEN 1 ELSE 0 END) as '[85-100]',
SUM(CASE WHEN sc.Score BETWEEN 70 and 85 THEN 1 ELSE 0 END) as '[70-85]',
SUM(CASE WHEN sc.Score BETWEEN 60 and 70 THEN 1 ELSE 0 END) as '[60-70]',
SUM(CASE WHEN sc.Score BETWEEN 0 and 60 THEN 1 ELSE 0 END) as '[<60]'
from SC sc,Course c
where sc.C#=c.C#
group by sc.C#
(24)查询学生平均成绩及其名次;
select s.S#,s.Sname,T2.AvgScore,
(select COUNT(AvgScore) from
(select S#,AVG(Score) as 'AvgScore' from SC group by S#) as T1
where T2.AvgScore<T1.AvgScore)+1 as 'Rank'
from
(select S#,AVG(Score) as 'AvgScore' from SC
group by S#) as T2,
Student s
where s.S#=T2.S#
order by AvgScore desc
PS:本题目中的名次计算是一个难点,换个思路,我们如何计算当前学生的平均成绩的排名可以通过计算有多少个成绩小于当前学生的成绩再加上1即可得到,如上题目中的:
(select COUNT(AvgScore) from
(select S#,AVG(Score) as 'AvgScore' from SC group by S#) as T1
where T2.AvgScore<T1.AvgScore)+1 as 'Rank'
(25)查询各科成绩前三名的记录:(不考虑成绩并列情况)
select sc.C#,c.Cname,sc.S#,s.Sname,sc.Score
from Student s,SC sc,Course c
where sc.C#=c.C# and sc.S#=s.S# and sc.Score in
(
select top 3 Score from SC sc2
where sc.C#=sc2.C#
Order by Score desc
)
order by sc.C#,sc.Score desc
(26)查询每门课程被选修的学生数;
select sc.C#,MAX(c.Cname) as 'CName',COUNT(distinct sc.S#) as 'StudentCount'
from SC sc,Course c
where sc.C#=c.C#
group by sc.C#
(27)查询出只选修了一门课程的全部学生的学号和姓名;
select s.S#,s.Sname
from Student s
where s.S# in
(
select sc.S# from SC sc
group by sc.S#
having COUNT(distinct sc.C#)=1
)
这里SC表中没有一个只选了一门课程的学生,可以将语句改为:having COUNT(distinct sc.C#)=2,便可得到以下结果:
(28)查询男生、女生的人数;
select COUNT(S#) as 'BoysCount' from Student s where s.Ssex='男'
select COUNT(S#) as 'GirlsCount' from Student s where s.Ssex='女'
(29)查询姓“张”的学生名单;
select s.S#,s.Sname
from Student s
where s.Sname like '张%'
(30)查询同名同姓学生名单,并统计同名人数;
select s.Sname,COUNT(Sname) as 'SameCount'
from Student s
group by s.Sname
having COUNT(Sname)>1
这里Student表中并没有两个同名同姓的学生信息,因此我们插入一条:{7,钱二,20,女},再执行上面的SQL语句可得以下结果:
(31)查询1981年出生的学生名单(注:Student表中Sage列的类型是datetime) ;
这个题目很怪,明明设计数据库时Sage是int型,这里又是datetime型,我晕死了。故只给出参考答案,我无法执行看结果。
select Sname,CONVERT(char (11),DATEPART(year,Sage)) as Age
from Student
where CONVERT(char(11),DATEPART(year,Sage))='';
(32)查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程号降序排列;
select sc.C#,AVG(sc.Score) as 'AvgScore'
from SC sc
group by sc.C#
order by AvgScore asc,C# desc
(33)查询平均成绩大于85的所有学生的学号、姓名和平均成绩;
select sc.S#,s.Sname,AVG(sc.Score) as 'AvgScore'
from Student s,SC sc
where s.S#=sc.S#
group by sc.S#,s.Sname
having AVG(sc.Score)>85
(34)查询课程名称为“数学”,且分数低于60的学生姓名和分数;
select s.Sname,sc.Score from Student s,SC sc,Course c
where s.S#=sc.S# and sc.C#=c.C# and c.Cname='数学' and sc.Score<60
(35)查询所有学生的选课情况;
select s.S#,s.Sname,c.C#,c.Cname from Student s,SC sc,Course c
where s.S#=sc.S# and c.C#=sc.C#
order by c.C#,s.S#
(36)查询任何一门课程成绩在70分以上的姓名、课程名称和分数;
select distinct s.S#,s.Sname,c.Cname,sc.Score
from Student s,SC sc,Course c
where s.S#=sc.S# and sc.C#=c.C# and sc.Score>=70
(37)查询不及格的课程,并按课程号从大到小排列;
select distinct sc.C#,c.Cname from SC sc,Course c
where sc.C#=c.C# and sc.Score<60
order by sc.C# desc
(38)查询课程编号为003且课程成绩在80分以上的学生的学号和姓名;
select sc.S#,s.Sname from Student s,SC sc
where s.S#=sc.S# and sc.C#='' and sc.Score>=80
(39)求选了课程的学生人数(超简单的一题)
select COUNT(distinct S#) as 'StuCount' from SC
(40)查询选修“杨艳”老师所授课程的学生中,成绩最高的学生姓名及其成绩;
select s.S#,s.Sname,sc.Score
from Student s,SC sc,Course c,Teacher t
where s.S#=sc.S# and sc.C#=c.C# and c.T#=t.T# and t.Tname='杨艳'
and sc.Score =
(
select MAX(sc2.Score) from SC sc2
where sc.C#=sc2.C#
)
(41)查询各个课程及相应的选修人数;
select sc.C#,c.Cname,COUNT(distinct S#) as 'StuCount' from SC sc,Course c
where sc.C#=c.C#
group by sc.C#,c.Cname
(42)查询不同课程但成绩相同的学生的学号、课程号、学生成绩;
select distinct sc1.S#,sc1.C#,sc1.Score from SC sc1,SC sc2
where sc1.C#!=sc2.C# and sc1.Score=sc2.Score
order by sc1.Score asc
(43)查询每门课程成绩最好的前两名;
select sc.C#,c.Cname,sc.S#,s.Sname,sc.Score from Student s,SC sc,Course c
where s.S#=sc.S# and sc.C#=c.C# and sc.Score in
(
select top 2 sc2.Score from SC sc2
where sc2.C#=sc.C#
order by sc2.Score desc
)
order by sc.C#
(44)统计每门课程的学生选修人数(超过10人的课程才统计)。要求输出课程号和选修人数,查询结果按人数降序排列,查询结果按人数降序排列,若人数相同,按课程号升序排列
select sc.C#,COUNT(distinct S#) as 'StuCount' from SC sc
group by sc.C#
having COUNT(distinct S#)>=10
order by StuCount desc,sc.C# asc
因为SC表中并没有超过10人的课程,因此本查询结果为空。
(45)检索至少选修两门课程的学生学号;
select distinct sc.S# from SC sc
group by sc.S#
having COUNT(sc.C#)>=2
SC表中所有的数据都选了超过两门课,因此结果是所有的学号;
(46)查询全部学生都选修的课程的课程号和课程名;
select sc.C#,c.Cname from SC sc,Course c
where sc.C#=c.C#
group by sc.C#,c.Cname
having COUNT(sc.S#)=(select COUNT(distinct s.S#) from Student s)
SC表中插入一条数据{7,2,80},再执行一下上面的SQL语句可以得到下面的结果:
(47)查询没学过“叶平”老师讲授的任一门课程的学生姓名;
select s.Sname from Student s where s.S# not in
(
select sc.S# from SC sc,Course c,Teacher t
where sc.C#=c.C# and c.T#=t.T# and t.Tname='杨艳'
)
(48)查询两门以上不及格课程的同学的学号及其平均成绩;
select sc.S#,AVG(ISNULL(sc.Score,0)) as 'AvgScore' from SC sc
where sc.S# in
(
select sc2.S# from SC sc2
where sc2.Score<60
group by sc2.S#
having COUNT(sc2.C#)>2
)
group by sc.S#
因SC表中木有两门以上不及格的屌丝,因此查询结果为空;
(49)检索“004”课程分数小于60,按分数降序排列的同学学号;(很简单的一题)
select sc.S# from SC sc
where sc.C#='' and sc.Score<60
order by sc.Score desc
查询结果:S#为1,3,5
(50)删除“002”同学的“001”课程的成绩;(很简单的一题)
delete from SC where S#='' and C#=''
二、练习总结
本篇是从Cat Qi的原文《SQL面试题(学生表-教师表-课程表-选课表)》中摘抄的,前半部分难度较大,后半部分难度减小,经过我一题一题的练习,也还是得到了很大的锻炼。下一篇Part 2,将针对另外两个类型的题目,我暂时取名为“书到用时方恨少:图书-读者-借阅”类题目,这一类题目也是非常常见的题目,大概会有15个题目左右。
参考原帖
(1)Cat Qi,《SQL面试题(学生表-教师表-课程表-选课表)》:http://www.cnblogs.com/qixuejia/p/3637735.html
(2)CSDN,《找些不错的SQL面试题》讨论帖,http://bbs.csdn.net/topics/280002741
走向面试之数据库基础:一、你必知必会的SQL语句练习-Part 1的更多相关文章
- 走向面试之数据库基础:二、SQL进阶之case、子查询、分页、join与视图
一.CASE的两种用法 1.1 等值判断->相当于switch case (1)具体用法模板: CASE expression WHEN value1 THEN returnvalue1 WHE ...
- 走向面试之数据库基础:三、SQL进阶之变量、事务、存储过程与触发器
一.变量那点事儿 1.1 局部变量 (1)声明局部变量 DECLARE @变量名 数据类型 ) DECLARE @id int (2)为变量赋值 SET @变量名 =值 --set用于普通的赋值 SE ...
- 你必知必会的SQL面试题
写在前面的话 本文参考原博<走向面试之数据库基础:一.你必知必会的SQL语句练习-Part 1>和<走向面试之数据库基础:一.你必知必会的SQL语句练习-Part 2>进行练习 ...
- Java面试必知必会:基础
面试考察的知识点多而杂,要完全掌握需要花费大量的时间和精力.但是面试中经常被问到的知识点却没有多少,你完全可以用 20% 的时间去掌握 80% 常问的知识点. 一.基础 包括: 杂七杂八 面向对象 数 ...
- 【SQL必知必会笔记(1)】数据库基础、SQL、MySQL8.0.16下数据库、表的创建及数据插入
文章目录 1.数据库基础 1.1 数据库(database) 1.2 表(table) 1.3 列和数据类型 1.4 行 1.5 主键 2.什么是SQL 3.创建后续练习所需数据库.表(MySQL8. ...
- Java面试必知必会(扩展)——Java基础
float f=3.4;是否正确? 不正确 3.4是双精度,将双精度赋值给浮点型属于向下转型,会造成精度损失: 因此需要强制类型转换: 方式一:float f=(float)3.4 方式二:float ...
- .NET零基础入门09:SQL必知必会
一:前言 仿佛到了更进一步的时候了,每一个程序员迟早都会遇到数据存储的问题.我们拿什么来存储程序产生的数据?举例来说,用什么来存储我们的打老鼠游戏每次的成绩呢?选择如下: 1:内存中.缺点,退出游戏, ...
- 第4节:Java基础 - 必知必会(中)
第4节:Java基础 - 必知必会(中) 本小节是Java基础篇章的第二小节,主要讲述抽象类与接口的区别,注解以及反射等知识点. 一.抽象类和接口有什么区别 抽象类和接口的主要区别可以总结如下: 抽象 ...
- 第3节:Java基础 - 必知必会(上)
第3节:Java基础 - 必知必会(上) 本篇是基础篇的第一小节,我们从最基础的java知识点开始学习.本节涉及的知识点包括面向对象的三大特征:封装,继承和多态,并且对常见且容易混淆的重要概念覆盖和重 ...
随机推荐
- Spring-boot 开发Web应用
动态修改Freemarker模版: 设置模版属性: spring.freemarker.cache=false 启动应用方式有两种: a. 运行main()函数启动应用:则修改完模版文件后,需要把 ...
- 远程登录VirtualBox虚拟机Linux
通过端口转发的方式,使用终端(如MobaXterm,Xshell,putty等终端)远程登录本机虚拟机Linux, 打开虚拟机,找到 [设置]-->[网络]--> [网卡1] 确认以下设置 ...
- Kinect开发随笔①——红外扫描仪(Kinect 数据源)
来源于 MVA 的 快速入门:Kinect for Windows v2 开发 的学习随笔 具体内容为上图所示章节内容 章节内全部代码:GitHub地址点我(链接失效,待补档) <Page &l ...
- 统计java中字符串,数组,集合大小(长度)
字符串长度用String.length(); 数组用String[].length; 集合用collection.size();
- hellocharts的折线图与柱状图的结合之ComboLineColumnChartView
哼哼,网上找了半天都不全,所以决定自己写一个完整的可以直接贴代码的 test.xml <?xml version="1.0" encoding="utf-8&quo ...
- java网络编程1
Socket的构造方法包括: 1.Socket(),无参构造方法: 2.Socket(InetAddress address,int port) throws UnknownHostException ...
- spring-aop学习【基于注解】
我个人觉得,这个好像就是用在定制日志输出上,和log4j很像. 用途: 如果业务方法调用每一步都需要详细的日志,那就用这个吧 好处就是: 方便维护,只包含业务代码 下面开始说明: 所需要的jar包: ...
- datatable 加序号列
最近使用datatable时,发现没有像jqgrid那样生成序号列,在国外网站搜罗了一下还是很简单的,就要在aoColumns中添加一空列占位就行,然后再用fnRowCallback添加序号 示例如下 ...
- C# 解析JSON的几种办法
欲成为海洋大师,必知晓海中每一滴水的真名. 刚开始只是想找一个转换JSON数组的方法,结果在MSDN翻到一大把. 搜索过程中免不了碰到一大堆名词:WCF => DataContract => ...
- C++Primer学习笔记(1)
序: 为了重新扎扎实实地再深入学习一遍C++,我选择了C++ Primer这本经典.又开了这个系列的随笔,用于记录学习过程中遇到的一些有趣的问题和心得.同时,也是想通过写随笔的方式督促自己不断进步,争 ...