Spark--经典SQL50题
目录
连接数据库准备工作
1、查询"01"课程比"02"课程成绩高的学生的信息及课程分数
2、查询"01"课程比"02"课程成绩低的学生的信息及课程分数
3、查询平均成绩大于等于60分的同学的学生编号和学生姓名和平均成绩
4、查询平均成绩小于60分的同学的学生编号和学生姓名和平均成绩
5、查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩
6、查询"李"姓老师的数量
7、查询学过"李四"老师授课的同学的信息
8、查询没有学过"李四"老师授课的同学的信息
9、查询学过编号为"01"并且也学过编号为"02"的课程的同学的信息
10、查询学过编号为"01"并且没有学过编号为"02"的课程的同学的信息
11、查询没有学全所有课程的同学的信息
12、查询至少有一门课与学号为"01"的同学所学相同的同学的信息
13、查询和"01"号的同学学习的课程完全相同的其他同学的信息
14、查询没学过"张三"老师讲授的任一门课程的学生姓名
15、查询两门及其以上不及格课程的同学的学号,姓名及其平均成绩
16、检索"01"课程分数小于60,按分数降序排列的学生信息
17、按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩
18、查询各科成绩最高分、最低分和平均分:
以如下形式显示:课程ID,课程name,最高分,最低分,平均分,及格率,中等率,优良率
及格为>=60,中等为:70-80,优良为:80-90,优秀为:>=90
19、按各科成绩进行排序,并显示排名
20、查询学生的总成绩并进行排名
21、查询不同老师所教不同课程平均分从高到低显示
22、查询所有课程的成绩第2名到第3名的学生信息及该课程成绩
23、统计各科成绩各分数段人数:课程编号,课程名称, 100-85 , 85-70 , 70-60 , 0-60 及所占百分比
24、查询学生平均成绩及其名次
25、查询各科成绩前三名的记录
26、查询每门课程被选修的学生数
27、查询出只有两门课程的全部学生的学号和姓名
28、查询男生、女生人数
29、查询名字中含有"风"字的学生信息
30、查询同名同性学生名单,并统计同名人数
31、查询1990年出生的学生名单(注:Student表中Sage列的类型是datetime)
32、查询每门课程的平均成绩,结果按平均成绩降序排列,平均成绩相同时,按课程编号升序排列
33、查询平均成绩大于等于85的所有学生的学号、姓名和平均成绩
34、查询课程名称为"数学",且分数低于60的学生姓名和分数
35、查询所有学生的课程及分数情况
36、查询任何一门课程成绩在70分以上的姓名、课程名称和分数
37、查询课程不及格的学生
38、查询课程编号为01且课程成绩在80分及以上的学生的学号和姓名
39、求每门课程的学生人数
40、查询选修"张三"老师所授课程的学生中,成绩最高的学生信息及其成绩
41、查询不同课程成绩相同的学生的学生编号、课程编号、学生成绩
42、查询每门功课成绩最好的前两名
43、统计每门课程的学生选修人数(超过5人的课程才统计)。要求输出课程号和选修人数, 查询结果按人数降序排列,若人数相同,按课程号升序排列
44、检索至少选修两门课程的学生学号
45、查询选修了全部课程的学生信息
46、查询各学生的年龄
47、查询本周过生日的学生
48、查询下周过生日的学生
49、查询本月过生日的学生
50、查询下月过生日的学生
连接数据库准备工作
创建DataFrame
val spark: SparkSession = SparkSession.builder().appName("Spark_SQL50").master("local[*]").getOrCreate()import spark.implicits._import org.apache.spark.sql.functions._val url = "jdbc:mysql://192.168.142.129:3306/sql50"val user = "root"val pwd = "123456"val driver = "com.mysql.cj.jdbc.Driver"val properties = new Properties()properties.setProperty("user", user)properties.setProperty("password", pwd)properties.setProperty("driver", driver)val score = spark.read.jdbc(url, "score", properties)val course = spark.read.jdbc(url, "course", properties)val student = spark.read.jdbc(url, "student", properties)val teacher = spark.read.jdbc(url, "teacher", properties)val student_copy1 = spark.read.jdbc(url, "student_copy1", properties)
1、查询"01"课程比"02"课程成绩高的学生的信息及课程分数
score.as("s1").join(score.as("s2"), "s_id").where("s1.s_score>s2.s_score and s1.c_id = 01 and s2.c_id = 02").join(student, "s_id").select("s_name", "s1.c_id", "s1.s_score", "s2.c_id", "s2.s_score").show()


2、查询"01"课程比"02"课程成绩低的学生的信息及课程分数
score.as("s1").join(score.as("s2"), "s_id").where("s1.s_score < s2.s_score and s1.c_id = 01 and s2.c_id = 02").join(student, "s_id").select("s_name", "s1.c_id", "s1.s_score", "s2.c_id", "s2.s_score").show()


3、查询平均成绩大于等于60分的同学的学生编号和学生姓名和平均成绩
score.groupBy("s_id").avg("s_score").where($"avg(s_score)">=60).join(student, "s_id").select("s_id", "s_name", "avg(s_score)").show


4、查询平均成绩小于60分的同学的学生编号和学生姓名和平均成绩
student.join(score.groupBy("s_id").avg("s_score"), Seq("s_id"), "left").where($"avg(s_score)" < 60 || $"avg(s_score)".isNull).select("s_id", "s_name", "avg(s_score)").show


5、查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩
student.join(score.groupBy("s_id").count(),Seq("s_id"), "left").join(score.groupBy("s_id").sum("s_score"), Seq("s_id"), "left").select("s_id", "s_name", "count", "sum(s_score)").show()

6、查询"李"姓老师的数量
println(teacher.where($"t_name".like("李%")).count())

7、查询学过"李四"老师授课的同学的信息
student.join(score,"s_id").join(course, "c_id").join(teacher, "t_id").where($"t_name" === "李四").select("s_name", "c_name","t_name").show


8、查询没有学过"李四"老师授课的同学的信息
student.join(student.join(score,Seq("s_id"), "left").join(course,Seq("c_id"), "left").join(teacher,Seq("t_id"), "left").where($"t_name" === "李四").select("s_id","s_score"),Seq("s_id"), "left").where($"s_score".isNull).select("s_id", "s_name").show()


9、查询学过编号为"01"并且也学过编号为"02"的课程的同学的信息
student.join(score,Seq("s_id")).where("c_id == 01").join(student.join(score,Seq("s_id")).where("c_id == 02"),"s_id").show()


10、查询学过编号为"01"并且没有学过编号为"02"的课程的同学的信息
student.as("s1").join(score, "s_id").where("c_id == 01").join(student.as("s2").join(score, "s_id").where("c_id == 02"), Seq("s_id"), "left").where($"s2.s_name".isNull).show()


11、查询没有学全所有课程的同学的信息
student.join(
student.join(score,"s_id").join(course,"c_id").groupBy("s_id").count(), Seq("s_id"), "left"
).where($"count" < course.count() || $"count".isNull).show()


12、查询至少有一门课与学号为"01"的同学所学相同的同学的信息
student.as("stu").join(score.as("sc").join(score.where($"s_id"==="01"),Seq("c_id"), "left"),Seq("s_id")).where($"stu.s_id".notEqual("01")).select("stu.s_id","s_name").distinct().show


13、查询和"01"号的同学学习的课程完全相同的其他同学的信息
student.join(score, "s_id").groupBy($"s_id").count().where($"count".equalTo(3)).where($"s_id".notEqual("01")).join(student, Seq("s_id"), "left").show()


14、查询没学过"张三"老师讲授的任一门课程的学生姓名
student.join(score, "s_id").join(course,"c_id").join(teacher,"t_id").where($"t_name"==="张三").as("stu1").join(student.as("stu2"),Seq("s_id"),"right").where($"t_name".isNull).select("stu2.s_id","stu2.s_name").show


15、查询两门及其以上不及格课程的同学的学号,姓名及其平均成绩
score.where($"s_score" < 60).groupBy("s_id").count().where($"count" >= 2).join(score,"s_id").groupBy("s_id").agg(round(avg("s_score"),2)).join(student,"s_id").show


16、检索"01"课程分数小于60,按分数降序排列的学生信息
score.where($"c_id"==="01" && $"s_score" < 60).join(student,"s_id").sort(desc("s_score")).show


17、按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩
score.groupBy("s_id").agg(round(avg("s_score"),2).as("avgScore")).join(score,"s_id").join(student,"s_id").orderBy($"avgScore".desc).show


18、查询各科成绩最高分、最低分和平均分:
以如下形式显示:课程ID,课程name,最高分,最低分,平均分,及格率,中等率,优良率
及格为>=60,中等为:70-80,优良为:80-90,优秀为:>=90
//1 先求出 及格,中等,优良,优秀 各阶段人数
val numDF = score.groupBy("c_id").count()
val passDF = score.where($"s_score" >= 60).groupBy("c_id").count()
val midDF = score.where($"s_score" >= 70 && $"s_score" < 80).groupBy("c_id").count()
val goodDF = score.where($"s_score" >= 80 && $"s_score" < 90).groupBy("c_id").count()
val bestDF = score.where($"s_score" >= 90).groupBy("c_id").count()//2 求出及格率,中等率,优良率,优秀率
val passPerDF = numDF.as("n").join(passDF.as("m"), "c_id").withColumn("passPer", round($"m.count" / $"n.count", 2)).drop("count")
val midPerDF = numDF.as("n").join(midDF.as("m"), "c_id").withColumn("midPer", round($"m.count" / $"n.count", 2)).drop("count")
val goodPerDF = numDF.as("n").join(goodDF.as("m"), "c_id").withColumn("goodPer", round($"m.count" / $"n.count", 2)).drop("count")
val bestPerDF = numDF.as("n").join(bestDF.as("m"), "c_id").withColumn("bestPer", round($"m.count" / $"n.count", 2)).drop("count")//3 求出课程最高分,最低分,平均分 join各比率
course.join(score.groupBy("c_id").agg(max("s_score").as("maxScore"),min("s_score").as("minScore"),round(avg("s_score"),2).as("avgScore")),"c_id").join(passPerDF,Seq("c_id"),"left").join(midPerDF,Seq("c_id"),"left").join(goodPerDF,Seq("c_id"),"left").join(bestPerDF,Seq("c_id"),"left").drop("t_id").show


19、按各科成绩进行排序,并显示排名
score.withColumn("rank",dense_rank().over(Window.partitionBy("c_id").orderBy($"s_score".desc))).show()


20、查询学生的总成绩并进行排名
score.groupBy("s_id").sum("s_score").withColumn("rank",dense_rank().over(Window.orderBy($"sum(s_score)".desc))).show()


21、查询不同老师所教不同课程平均分从高到低显示
score.groupBy("c_id").agg(round(avg("s_score"), 2).as("avgScore")).withColumn("rank", dense_rank().over(Window.orderBy($"avgScore".desc))).show()


22、查询所有课程的成绩第2名到第3名的学生信息及该课程成绩
score.withColumn("rank", dense_rank().over(Window.partitionBy("c_id").orderBy($"s_score".desc))).where($"rank".isin(2,3)).join(student,"s_id").show()


23、统计各科成绩各分数段人数:课程编号,课程名称, 100-85 , 85-70 , 70-60 , 0-60 及所占百分比
//方法一
//1 先求出 总人数 及 100-85 , 85-70 , 70-60 , 0-60 各阶段人数
val numDF = score.groupBy("c_id").count()
val passDF = score.where($"s_score" >= 0 && $"s_score" < 60).groupBy("c_id").count()
val midDF = score.where($"s_score" >= 60 && $"s_score" < 70).groupBy("c_id").count()
val goodDF = score.where($"s_score" >= 70 && $"s_score" < 85).groupBy("c_id").count()
val bestDF = score.where($"s_score" >= 85 && $"s_score" <= 100).groupBy("c_id").count()//2 求出 100-85 , 85-70 , 70-60 , 0-60所占百分比
val passPerDF = numDF.as("n").join(passDF.as("m"), "c_id").withColumn("lt60", round($"m.count" / $"n.count", 2)).drop("count")
val midPerDF = numDF.as("n").join(midDF.as("m"), "c_id").withColumn("70-60", round($"m.count" / $"n.count", 2)).drop("count")
val goodPerDF = numDF.as("n").join(goodDF.as("m"), "c_id").withColumn("85-70", round($"m.count" / $"n.count", 2)).drop("count")
val bestPerDF = numDF.as("n").join(bestDF.as("m"), "c_id").withColumn("100-85", round($"m.count" / $"n.count", 2)).drop("count")//3 course表 join各比率
course.join(passPerDF,Seq("c_id"),"left").join(midPerDF,Seq("c_id"),"left").join(goodPerDF,Seq("c_id"),"left").join(bestPerDF,Seq("c_id"),"left").drop("t_id").show//方法2 count(when(condition), value),
// 由于between操作符是包含左右边界的,临界点分数存在重复计算,此方法仅供参考
score.groupBy("c_id").agg(count("s_score").as("count"),count(when($"s_score".between(85, 100), 1)).as("lt60Row"),count(when($"s_score".between(70, 85), 1)).as("60-70Row"),count(when($"s_score".between(60, 70), 1)).as("70-85Row"),count(when($"s_score".between(0, 60), 1)).as("85-100Row")
).withColumn("lt60", round($"lt60Row" / $"count", 2)).withColumn("60-70", round($"60-70Row" / $"count", 2)).withColumn("70-85", round($"70-85Row" / $"count", 2)).withColumn("85-100", round($"85-100Row" / $"count", 2)).join(course, "c_id").select("c_id", "c_name", "lt60", "60-70", "70-85", "85-100").show()




24、查询学生平均成绩及其名次
score.groupBy("s_id").agg(round(avg("s_score"), 2).as("avgScore")).withColumn("rank",dense_rank().over(Window.orderBy($"avgScore".desc))).show()


25、查询各科成绩前三名的记录
score.withColumn("rank",dense_rank().over(Window.partitionBy("c_id").orderBy($"s_score".desc))).where($"rank".between(1,3)).show()


26、查询每门课程被选修的学生数
score.groupBy("c_id").count().show()


27、查询出只有两门课程的全部学生的学号和姓名
score.groupBy("s_id").agg(count($"c_id").as("count")).where($"count" === 2).join(student, "s_id").select("s_id", "s_name", "count").show()


28、查询男生、女生人数
student.groupBy("s_sex").count().show()


29、查询名字中含有"风"字的学生信息
student.where($"s_name".contains("风")).show()


30、查询同名同性学生名单,并统计同名人数
student_copy1.groupBy("s_name","s_sex").count().where($"count" > 1).show


31、查询1990年出生的学生名单(注:Student表中Sage列的类型是datetime)
student.where(year($"s_birth")==="1990").show

32、查询每门课程的平均成绩,结果按平均成绩降序排列,平均成绩相同时,按课程编号升序排列
score.groupBy("c_id").avg("s_score").orderBy($"avg(s_score)".desc, $"c_id").show()


33、查询平均成绩大于等于85的所有学生的学号、姓名和平均成绩
score.groupBy("s_id").avg("s_score").where($"avg(s_score)" >= 85).join(student,"s_id").select("s_id", "s_name", "avg(s_score)").show()


34、查询课程名称为"数学",且分数低于60的学生姓名和分数
score.join(course, "c_id").where($"c_name" === "数学" && $"s_score" < 60).join(student, "s_id").select("s_name", "s_score").show


35、查询所有学生的课程及分数情况
student.join(score, Seq("s_id"), "left").show()


36、查询任何一门课程成绩在70分以上的姓名、课程名称和分数
score.where($"s_score" > 70).join(student, "s_id").join(course, "c_id").select("s_name", "c_name", "s_score").show()


37、查询课程不及格的学生
score.where($"s_score" < 60).show()


38、查询课程编号为01且课程成绩在80分及以上的学生的学号和姓名
score.where($"c_id" === "01" && $"s_score" >= 80).join(student, "s_id").select("s_id", "s_name", "c_id","s_score").show()


39、求每门课程的学生人数
score.groupBy("c_id").count().show()


40、查询选修"张三"老师所授课程的学生中,成绩最高的学生信息及其成绩
score.join(course, "c_id").join(teacher, "t_id").where($"t_name" === "张三").orderBy($"s_score".desc).limit(1).join(student, "s_id").show()


41、查询不同课程成绩相同的学生的学生编号、课程编号、学生成绩
score.groupBy("s_score").count().where($"count" > 1).join(score, "s_score").show()


42、查询每门功课成绩最好的前两名
score.withColumn("rank",rank().over(Window.partitionBy("c_id").orderBy($"s_score".desc))).where($"rank".isin(1, 2)).show()


43、统计每门课程的学生选修人数(超过5人的课程才统计)。要求输出课程号和选修人数, 查询结果按人数降序排列,若人数相同,按课程号升序排列
score.groupBy("c_id").count().where($"count" > 5).orderBy($"count".desc, $"c_id").show


44、检索至少选修两门课程的学生学号
score.groupBy("s_id").count().where($"count" >= 2).show()


45、查询选修了全部课程的学生信息
score.groupBy("s_id").count().where($"count" === course.count()).join(student, "s_id").show()


46、查询各学生的年龄
student.withColumn("age", year(current_date()) - year($"s_birth")).show()


47、查询本周过生日的学生
student.withColumn("birthOfWeek", weekofyear($"s_birth")).where($"birthOfWeek" === weekofyear(current_date())).show

48、查询下周过生日的学生
student.withColumn("birthOfWeek", weekofyear($"s_birth")).where($"birthOfWeek" === weekofyear(current_date()) + 1).show

49、查询本月过生日的学生
student.withColumn("birthOfMonth", month($"s_birth")).where($"birthOfMonth" === month(current_date())).show

50、查询下月过生日的学生
student.withColumn("birthOfMonth", month($"s_birth")).where($"birthOfMonth" === month(current_date() + 1)).show
相关文章:
Spark--经典SQL50题
目录 连接数据库准备工作 1、查询"01"课程比"02"课程成绩高的学生的信息及课程分数 2、查询"01"课程比"02"课程成绩低的学生的信息及课程分数 3、查询平均成绩大于等于60分的同学的学生编号和学生姓名和平均成绩 4、查询平均成绩…...
数据结构: AVL树
目录 1.AVL树的概念 2.AVL树的模拟实现 AVL树的结构定义 插入 对平衡因子的讨论 旋转 对旋转情况的讨论 1.单旋 1.1左单旋 1.2右单旋 2.双旋 2.1左右双旋 2.2右左双旋 检查是否是AVL树 1.AVL树的概念 当向二叉搜索树中插入新结点后,如果能保证每个结点…...
LeetCode-高频 SQL 50 题:连接 篇
目录 1378. 使用唯一标识码替换员工ID 题目描述: SQL语句: 1068. 产品销售分析 I 题目描述: SQL语句: 1581. 进店却未进行过交易的顾客 题目描述: SQL语句: 197. 上升的温度 题目描述࿱…...
操作系统备考学习 day10
操作系统备考学习 day10 第三章 内存管理3.2 虚拟内存管理3.2.1 虚拟内存的基本概念传统存储管理方式的特征、缺点局部性原理虚拟内存的定义和特征如何实现虚拟内存技术 3.2.2 请求分页管理方式页表机制缺页中断机构地址变换机构 3.2.3 页面置换算法最佳置换算法(OP…...
基于侏儒猫鼬优化的BP神经网络(分类应用) - 附代码
基于侏儒猫鼬优化的BP神经网络(分类应用) - 附代码 文章目录 基于侏儒猫鼬优化的BP神经网络(分类应用) - 附代码1.鸢尾花iris数据介绍2.数据集整理3.侏儒猫鼬优化BP神经网络3.1 BP神经网络参数设置3.2 侏儒猫鼬算法应用 4.测试结果…...
ios safari 正则兼容问题
背景: 系统是自己开发的采购管理系统; 最近升级系统之后客户反馈部分苹果手机现在在进入单据界面的时候报错, 内容显示不全; 安卓手机正常; 苹果首页是之前有使用过系统的才不行, 如果是之前没有使用过系统, 现在也是可以(后面查证这一点可能不是很准确, 跟是否等过过系统…...
Win10下基于VS2015编译SQLite3源码
一、下载SQLite SQLite SQLite Download Page 下载红框部分的3个文件 提示:这里有个 sglite-autoconf-3420000.tar.gz 是免编译版,想省事就下载这个,但我自己用这个老是编译不过 所以我这里不推荐这个了 二、配置SQLite 打开vs 2015或者其他…...
Linux 指令学习
Linux 指令学习 以此为记录,也方便自己日后查看回顾! Linux命令基础格式 无论是什么命令,用于什么用途,在Linux中,命令有其通用的格式: command: 命令本身 options:[可选…...
前端渲染后端返回的HTML格式的数据
在日常开发中,经常有需要前端渲染后端返回页面的需求,对于不同数据结构,前端的渲染方式也不尽相同,本文旨在对各种情况进行总结。 后端返回纯html文件格式 数据包含html标签等元素,数据类型如下图: 前端通…...
身份证读卡器ubuntu虚拟机实现RK3399 Arm Linux开发板交叉编译libdonsee.so找不到libusb解决办法
昨天一个客户要在RK3399 Linux开发板上面使用身份证读卡器,由于没有客户的开发板,故只能用本机ubuntu虚拟机来交叉编译,用客户发过来的交叉编译工具,已经编译好libusb然后编译libdonsee.so的时候提示找不到libusb,报错…...
触想五代强固型工业一体机在近海船舶上的应用
1、行业发展背景 近海船舶的发展紧密关联着海上运输、渔业贸易、旅游开发、能源探测等多领域,带动区域经济、文化繁荣发展。 随着现代科学与信息技术在各行各业的作用增强,工业4.0带动的产业升级逐步渗透进船舶领域,在此背景下,船…...
Node-创建Web应用
题记 node创建web应用,以下是所有流程和代码 与php比较:使用 PHP 来编写后端的代码,需要 Apache 或者 Nginx 的 HTTP 服务器,并配上 mod_php5 模块和 php-cgi。 Node应用的组成 node应用由三部分组成: require 指令&a…...
Redis查找并删除key
redis安装在IP为x.x.x.x的服务器上 redis安装 第一步,安装编译工具及库文件。 命令:yum -y install make zlib zlib-devel gcc-c libtool openssl openssl-devel 第二步,下载redis安装包。 命令:cd /usr/local/src wget ht…...
Spring Security认证架构介绍
在之前的Spring Security:总体架构中,我们讲到Spring Security整个架构是通过Bean容器和Servlet容器对过滤器的支持来实现的。我们将从过滤器出发介绍Spring Security的Servlet类型的认证架构。 1.AbstractAuthenticationProcessingFilter AbstractAut…...
提升代码重用性:模板设计模式在实际项目中的应用
在软件开发中,我们经常面临着相似的问题,需要使用相同的解决方法。当我们希望将这种通用的解决方法抽象出来,并在不同的情境中重复使用时,就可以使用设计模式中的模板模式(Template Pattern)。模板模式是一…...
11-k8s-service网络
文章目录 一、网络相关资源介绍二、开启ipvs三、nginx网络示例四、pod之间的访问示例五、service反向代理示例 一、网络相关资源介绍 Servcie介绍 Service是对一组提供相同功能的Pods的抽象,并为它们提供一个统一的入口。借助Service,应用可以方便的实现…...
MyBatisPlus(二十二)代码生成器
使用场景 使用代码生成器,根据数据库表,自动生成对应的 Entity,Mapper,Service,Controller 。 代码 依赖 两个依赖: 生成器依赖模板依赖 <dependency><groupId>com.baomidou</groupId&…...
git报错The project you were looking for could not be found 解决方式
问题描述: 使用git从远程仓库克隆项目到本地的时候。 git clone http://gitlab.com/project/xxxx.git出现这个问题:The project you were looking for could not be found. 原因分析: 你的账号没有项目的权限,你可以在浏览器输…...
“编辑微信小程序与后台数据交互与微信小程序wxs的使用“
引言 在现代移动应用开发中,微信小程序已经成为了一个非常流行和广泛使用的平台。为了使小程序能够展示丰富的内容和实现复杂的功能,与后台数据的交互是至关重要的。同时,微信小程序还提供了一种特殊的脚本语言——wxs,用于增强小…...
从Linux的tty_struct指针获取驱动上下文
背景 问题 前段时间开发一个tty驱动,用途是实现仪器对GPIB消息的接收、处理和上报。对于上报场景,下位机应用将上报内容写入一个驱动创建的tty设备,tty子系统将应用的输入转发给tty驱动,tty驱动将其转换成对SPI从设备࿰…...
TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...
React Native 开发环境搭建(全平台详解)
React Native 开发环境搭建(全平台详解) 在开始使用 React Native 开发移动应用之前,正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南,涵盖 macOS 和 Windows 平台的配置步骤,如何在 Android 和 iOS…...
linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...
postgresql|数据库|只读用户的创建和删除(备忘)
CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...
《通信之道——从微积分到 5G》读书总结
第1章 绪 论 1.1 这是一本什么样的书 通信技术,说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号(调制) 把信息从信号中抽取出来&am…...
Ascend NPU上适配Step-Audio模型
1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统,支持多语言对话(如 中文,英文,日语),语音情感(如 开心,悲伤)&#x…...
深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...
SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)
上一章用到了V2 的概念,其实 Fiori当中还有 V4,咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务),代理中间件(ui5-middleware-simpleproxy)-CSDN博客…...
Python 包管理器 uv 介绍
Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...
