目录

一、多表查询的两种方法

方式1:连表操作

inner join(内连接)

select * from emp inner join dep on emp.dep_id=dep.id;

只连接两张表中公有的数据部分

left join(左连接)

select * from emp left join dep on emp.dep_id=dep.id;

以左表为基准 展示左表所有的数据 如果没有对应项则用NULL填充

right join(右连接)

select * from emp right join dep on emp.dep_id=dep.id;

以右表为基准 展示右表所有的数据 如果没有对应项则用NULL填充

union(全连接)

select * from emp left join dep on emp.dep_id=dep.id
union
select * from emp right join dep on emp.dep_id=dep.id;

以左右表为基准 展示所有的数据 各自没有的全部NULL填充

学会了连表操作之后也就可以连接N多张表

思路:将拼接之后的表起别名当成一张表再去与其他表拼接,再起别名当一张表,再去与其他表拼接,其次往复即可。

方式2:子查询

将一条SQL语句用括号括起来当成另外一条SQL语句的查询条件

题目:求姓名是jason的员工部门名称

ps:子查询类似于我们日常生活中解决问题的方式>>>:分步操作

步骤1:先根据jason获取部门编号

select dep_id from emp where name='jason';

步骤2:再根据部门编号获取部门名称

select name from dep where id=200;

步骤3:整合上面的代码

select name from dep where id=(select dep_id from emp where name='jason');

很多时候多表查询需要结合实际情况判断用哪种,更多时候甚至是相互配合使用。

二、小知识点补充说明

1.concat与concat_ws

之前我们学习到group_concat()可以获得分组字段以外的字段数据,并支持拼接。

concat和concat_ws也是用于获取字段数据,并支持拼接。

concat用于分组之前的字段拼接操作

select concat(name,'$',sex) from emp;

concat_ws拼接多个字段并且中间的连接符一致

select concat_ws('|',name,sex,age,dep_id) from emp;

2.exists

sql1 exists (sql2);

select * from dep where exists (select * from emp where emp.id>1);

sql2有结果的情况下才会执行sql1,否则不执行sql1,返回空数据。

3.表相关SQL补充

alter table 表名 rename 新表名;  # 修改表名
alter table 表名 add 字段名 字段类型(数字) 约束条件; # 添加字段
alter table 表名 add 字段名 字段类型(数字) 约束条件 after 已有字段;
alter table 表名 add 字段名 字段类型(数字) 约束条件 first;# 修改字段
alter table 表名 change 旧字段名 新字段名 字段类型(数字) 约束条件;
alter table 表名 modify 字段名 新字段类型(数字) 约束条件;
alter table 表名 drop 字段名; # 删除字段

三、可视化软件Navicat

1、Navicat简介

Navicat 是一套快速、可靠并价格适宜的数据库管理工具, 适用于三种平台: Windows、mac OS 及 Linux。 可以用来对本机或远程的 MySQL、SQL Server、SQLite、Oracle 等数据库进行管理及开发。 专门为简化数据库的操作而设计。 它的设计符合数据库管理员、开发人员及中小企业的需求。 Navicat 是一个数据库图形化客户端软件, 让你可以以安全并且简单的方式对数据库进行操作。

能够操作数据库的第三方可视化软件有很多 其中针对MySQL最出名的就是Navicat

ps:Navicat是一个第三方数据库客户端,提供简单快捷的操作界面,本质还是使用sql语言对数据库进行操作。

2、安装教程

正版教程

官网地址:http://www.navicat.com.cn/

步骤一:

进入官网点击上方的产品

步骤二:

如果想要先使用可以点击免费使用,如果想要直接购买的可以点击购买,试用满十四天后就需要收费了。

步骤三:

参考破解版的安装教程

破解版教程

文件获取和简单教程可以参考这两个网站。

https://www.jb51.net/database/803226.html

https://www.jb51.net/softjc/823874.html

步骤一:

获取文件,下载后解压。然后双击运行navicat161_premium_cs_x64.exe

步骤二:

点击下一步,并同意规定,然后选择安装路径(安装路径后面要用到)

步骤三:

然后一路下一步一路到安装成功。

步骤四:

解压NavicatCracker.rar,然后打开解压得到的文件夹中的NavicatCracker v16.0.7.0 .exe

步骤五:

出现窗口后点击patch边上的两个点,把目录选择到navicat的安装目录

步骤六:

接着点击patch,如果成功了会有一个如下的弹窗,然后点击是

步骤七:

接着断网,然后点击generate获得激活码

步骤八:

然后打开navicat软件,点击注册,在激活码处输入获得的激活码

步骤九:

点击激活后会出现一个弹窗,点击手动激活,这时候会再出现一个弹窗

步骤十:

把新出现的弹窗中的请求码复制,然后粘贴到request code的窗口中

步骤十一:

点击Generate Activation Code按钮,这时候会在Activation Code中生成一串字符,把他复制然后粘贴到请求码的窗口下方

步骤十二:

点击激活就可以永久激活,但是不支持更新。

3、常用操作

1.连接数据库

步骤一:

打开软件后点击左上角的连接然后点击MySQL

步骤二:

输入用户名和密码,然后点击测试连接,试试看能不能连上,如果可以就点击确定创建连接

步骤三:

接下去会出现如下界面,这就表示连接数据库成功了

2.创建库

前置条件:连接数据库

步骤一:

选中连接,右键点击新建数据库,这时候会出现一个弹窗

步骤二:

填写数据库名称和字符集(就是字符编码类型,建议选utf8或utf8mb4),排序规则不要动,让他空着

步骤三:

点击确定就可以在左边看到新创的数据库了

3.创建表

步骤一:

双击一个数据库

步骤二:

点击表,然后右键点击新建表

步骤三:

这时候右边窗口会出现创建表的窗口,我们在内部可以更简单的创建表,创建表的时候需要设置上主键(使用tab可以换到下一行)

步骤四:

设置好了之后点击保存就可以创建出这个表了,我们可以在左边查看到表的信息

4.往表中添加记录

在左边双击表,就能开始添加表的记录

5.设置外键

需要在创建表的时候就进行设置

ps:还有很多实用的功能,可以自行探索,比如编写sql代码会出现提示可以用Tab补全,类似pycharm。

4.SQL语句注释语法

方式一:--

在一行代码的开头加上两个横杠就可以将其注释

注释快捷键就是用这种方式,使用ctrl+?是将代码注释,使用ctrl+shift+?是解开注释

方式二:#

在一行代码的开头加上一个井号就可以将其注释

方式三:\**\

这是sql代码中的多行注释

5.运行、转储SQL文件

在左侧选中一个数据库,然后右键点击运行/转储SQL文件就可以导入或是到处数据库文件

四、多表查询练习题

提示:

  • 编写复杂的SQL不要想着一口气写完
  • 一定要先明确思路 然后一步步写一步步查一步步补

题目:

1、查询所有的课程的名称以及对应的任课老师姓名

4、查询平均成绩大于八十分的同学的姓名和平均成绩

7、查询没有报李平老师课的学生姓名

8、查询没有同时选修物理课程和体育课程的学生姓名

9、查询挂科超过两门(包括两门)的学生姓名和班级

-- 1、查询所有的课程的名称以及对应的任课老师姓名
# 1.先确定需要用到几张表 课程表 分数表
# 2.预览表中的数据 做到心中有数
-- select * from course;
-- select * from teacher;
# 3.确定多表查询的思路 连表 子查询 混合操作
-- SELECT
-- teacher.tname,
-- course.cname
-- FROM
-- course
-- INNER JOIN teacher ON course.teacher_id = teacher.tid;
-- 4、查询平均成绩大于八十分的同学的姓名和平均成绩
# 1.先确定需要用到几张表 学生表 分数表
# 2.预览表中的数据
-- select * from student;
-- select * from score;
# 3.根据已知条件80分 选择切入点 分数表
# 求每个学生的平均成绩 按照student_id分组 然后avg求num即可
-- select student_id,avg(num) as avg_num from score group by student_id having avg_num>80;
# 4.确定最终的结果需要几张表 需要两张表 采用连表更加合适
-- SELECT
-- student.sname,
-- t1.avg_num
-- FROM
-- student
-- INNER JOIN (
-- SELECT
-- student_id,
-- avg(num) AS avg_num
-- FROM
-- score
-- GROUP BY
-- student_id
-- HAVING
-- avg_num > 80
-- ) AS t1 ON student.sid = t1.student_id;
-- 7、查询没有报李平老师课的学生姓名
# 1.先确定需要用到几张表 老师表 课程表 分数表 学生表
# 2.预览每张表的数据
# 3.确定思路 思路1:正向筛选 思路2:筛选所有报了李平老师课程的学生id 然后取反即可
# 步骤1 先获取李平老师教授的课程id
-- select tid from teacher where tname = '李平老师';
-- select cid from course where teacher_id = (select tid from teacher where tname = '李平老师');
# 步骤2 根据课程id筛选出所有报了李平老师的学生id
-- select distinct student_id from score where course_id in (select cid from course where teacher_id = (select tid from teacher where tname = '李平老师'))
# 步骤3 根据学生id去学生表中取反获取学生姓名
-- SELECT
-- sname
-- FROM
-- student
-- WHERE
-- sid NOT IN (
-- SELECT DISTINCT
-- student_id
-- FROM
-- score
-- WHERE
-- course_id IN (
-- SELECT
-- cid
-- FROM
-- course
-- WHERE
-- teacher_id = (
-- SELECT
-- tid
-- FROM
-- teacher
-- WHERE
-- tname = '李平老师'
-- )
-- )
-- )
-- 8、查询没有同时选修物理课程和体育课程的学生姓名(报了两门或者一门不报的都不算)
# 1.先确定需要的表 学生表 分数表 课程表
# 2.预览表数据
# 3.根据给出的条件确定起手的表
# 4.根据物理和体育筛选课程id
-- select cid from course where cname in ('物理','体育');
# 5.根据课程id筛选出所有跟物理 体育相关的学生id
-- select * from score where course_id in (select cid from course where cname in ('物理','体育'))
# 6.统计每个学生报了的课程数 筛选出等于1的
-- select student_id from score where course_id in (select cid from course where cname in ('物理','体育'))
-- group by student_id
-- having count(course_id) = 1;
# 7.子查询获取学生姓名即可
-- SELECT
-- sname
-- FROM
-- student
-- WHERE
-- sid IN (
-- SELECT
-- student_id
-- FROM
-- score
-- WHERE
-- course_id IN (
-- SELECT
-- cid
-- FROM
-- course
-- WHERE
-- cname IN ('物理', '体育')
-- )
-- GROUP BY
-- student_id
-- HAVING
-- count(course_id) = 1
-- )
-- 9、查询挂科超过两门(包括两门)的学生姓名和班级
# 1.先确定涉及到的表 分数表 学生表 班级表
# 2.预览表数据
-- select * from class
# 3.根据条件确定以分数表作为起手条件
# 步骤1 先筛选掉大于60的数据
-- select * from score where num < 60;
# 步骤2 统计每个学生挂科的次数
-- select student_id,count(course_id) from score where num < 60 group by student_id;
# 步骤3 筛选次数大于等于2的数据
-- select student_id from score where num < 60 group by student_id having count(course_id) >= 2;
# 步骤4 连接班级表与学生表 然后基于学生id筛选即可
SELECT
student.sname,
class.caption
FROM
student
INNER JOIN class ON student.class_id = class.cid
WHERE
student.sid IN (
SELECT
student_id
FROM
score
WHERE
num < 60
GROUP BY
student_id
HAVING
count(course_id) >= 2
);

五、python操作MySQL

需要用到一个第三方模块——pymysql,需要导入,通过pymysql模块就可以充当客户端存储数据了。

部分方法简介

参数 说明
dsn 数据源名称,给出该参数表示数据库依赖
host=None 数据库连接地址
user=None 数据库用户名
password=‘’ 数据库用户密码
database=None 要连接的数据库名称
port=3306 端口号,默认为3306
charset=‘’ 要连接的数据库的字符编码(可以在终端登陆mysql后使用 \s 查看,如下图)
connect_timeout=10 连接数据库的超时时间,默认为10
port=3306 端口号,默认为3306

代码实操

pymysql模块
pip3 install pymysql
import pymysql # 1.连接MySQL服务端
conn = pymysql.connect(
host='127.0.0.1',
port=3306,
user='root',
password='976863429',
db='infor-1',
charset='utf8mb4',
autocommit=True # 针对增 删 改 自动确认
)
# 2.产生游标对象
# cursor = conn.cursor() # 括号内不填写额外参数 数据是元组 指定性不强 [(),()]
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) # [{},{}]
# 3.编写SQL语句
sql = 'select * from teacher;' # 查询是可以
# sql = 'insert into teacher(tname) values("Jason老师");' # 插入不可以
# sql = 'update teacher set tname="tony老师" where tid=7;' # 修改不可以
# sql = 'delete from teacher where tid=7;' # 删除不可以
# sql = 'select * from score;'
# 4.发送SQL语句
affect_rows = cursor.execute(sql) # execute也有返回值 接收的是SQL语句影响的行数
print(affect_rows) # conn.commit() # 针对 增 删 改 需要二次确认
# 5.获取SQL语句执行之后的结果
res1 = cursor.fetchall()
# res2 = cursor.fetchall()
# res3 = cursor.fetchall()
print(res1)
# print(res2)
# print(res3)
# res1 = cursor.fetchone()
# print(res1)
# res2 = cursor.fetchone()
# print(res2)
# res2 = cursor.fetchmany(2)
# print(res2) # res1 = cursor.fetchall()
# print(res1)
# cursor.scroll(1,'relative') # 基于当前位置往后移动
# cursor.scroll(-1, 'relative') # 基于当前位置往后移动
# cursor.scroll(0,'absolute')
# res1 = cursor.fetchall()
# print(res1)

六、pymysql补充说明

1.获取数据
fetchall() 获取所有的结果
fetchone() 获取结果集的第一个数据
fetchmany() 获取指定数量的结果集
ps:注意三者都有类似于文件光标移动的特性
cursor.scroll(-1, 'relative') # 基于末尾移动
cursor.scroll(1,'relative') # 基于当前位置往后移动
cursor.scroll(0,'absolute') # 基于数据的开头往后移动 2.增删改查
autocommit=True # 针对增 删 改 自动确认(直接配置)
conn.commit() # 针对 增 删 改 需要二次确认(代码确认)

七、作业

1.抽空练习博客内更多练习题(能完成三分之一即可 答案可能有小错)

网址:https://www.cnblogs.com/Dominic-Ji/p/10875493.html

-- 1、查询所有的课程的名称以及对应的任课老师姓名
-- SELECT * from course;
-- select * from teacher;
select cname,tname from course inner join teacher on course.teacher_id=teacher.tid;
-- 2、查询学生表中男女生各有多少人
select gender as '性别',count(sid) as '人数' from student group by gender;
-- 3、查询物理成绩等于100的学生的姓名
-- select * from course;
-- select * from student;
-- select * from score;
-- select student_id from score inner join course on course.cid=score.course_id where cname='物理' and num=100;
-- 这里获得了物理满分的学生编号
select student.sname from student where sid in (select student_id from score inner join course on course.cid=score.course_id where cname='物理' and num=100); -- 4、查询平均成绩大于八十分的同学的姓名和平均成绩
-- select * from score;
-- select * from student;
-- select student_id,avg(num) from score group by student_id having avg(num)>80;
select student.sname as '学生姓名',t1.avg_num as '学生平均成绩' from student inner join (select student_id,avg(num) as avg_num from score group by student_id having avg(num)>80) as t1 on student.sid=t1.student_id;
-- 5、查询所有学生的学号,姓名,选课数,总成绩
-- select * from student;
-- select * from score;
-- select * from course;
-- select student_id,GROUP_CONCAT(course_id),count(course_id),sum(num) from score group by student_id;
select student.sid,student.sname,count_course,sum_num from student inner join (select student_id,GROUP_CONCAT(course_id),count(course_id) as count_course,sum(num) as sum_num from score group by student_id) as t1 on student.sid=t1.student_id; -- 6、 查询姓李老师的个数
select * from teacher where tname like '李%'; -- 7、 查询没有报李平老师课的学生姓名
-- select * from teacher;
-- select * from course;
-- select course.cid,course.cname,teacher.tid,teacher.tname from course inner join teacher on course.teacher_id=teacher.tid; -- select score.student_id from score inner join (select course.cid,course.cname,teacher.tid,teacher.tname from course inner join teacher on course.teacher_id=teacher.tid) as t1 on t1.cid=score.course_id where t1.tid=2; select sname from student where sid not in (select score.student_id from score inner join (select course.cid,course.cname,teacher.tid,teacher.tname from course inner join teacher on course.teacher_id=teacher.tid) as t1 on t1.cid=score.course_id where t1.tid=2); -- 8、 查询物理课程比生物课程高的学生的学号
-- select * from score;
-- select * from course;
-- select * from course where cid in (1,2); -- select * from score where course_id=1 group by student_id;
-- select * from score where course_id=2 group by student_id; select t1.student_id from (select * from score where course_id=1 group by student_id) as t1 inner join (select * from score where course_id=2 group by student_id) as t2 on t1.student_id=t2.student_id where t1.num>t2.num;
-- 9、 查询没有同时选修物理课程和体育课程的学生姓名
-- select * from score;
-- select * from student;
-- select cid from course where cid=2 or cid=3;
-- select * from student where class_id in (select cid from course where cid=2 or cid=3) group by sname; -- select * from score where course_id in (select cid from course where cid=2 or cid=3); -- select student_id,COUNT(course_id) from score where course_id in (select cid from course where cid=2 or cid=3) group by student_id having count(course_id)<2; select sname from student inner join (select student_id,COUNT(course_id) from score where course_id in (select cid from course where cid=2 or cid=3) group by student_id having count(course_id)<2) as t1 on student.sid=t1.student_id; -- 10、查询挂科超过两门(包括两门)的学生姓名和班级
-- select student_id,count(course_id) from score where num<60 group by student_id HAVING count(course_id)>1; -- select sname,class_id from student inner join (select student_id,count(course_id) from score where num<60 group by student_id HAVING count(course_id)>1) as t1 on student.sid=t1.student_id; select class.caption,t1.sname from class inner join (select sname,class_id from student inner join (select student_id,count(course_id) from score where num<60 group by student_id HAVING count(course_id)>1) as t1 on student.sid=t1.student_id) as t1 on class.cid=t1.class_id; -- 11、查询选修了所有课程的学生姓名
-- select student_id,count(course_id) from score GROUP BY student_id HAVING count(course_id)=4; select student.sname from student INNER JOIN (select student_id,count(course_id) from score GROUP BY student_id HAVING count(course_id)=4) as t1 on student.sid=t1.student_id;
-- 12、查询李平老师教的课程的所有成绩记录
-- select * from course;
-- select tid from teacher where tname like '李平%';
-- select cid from course where teacher_id=(select tid from teacher where tname like '李平%'); select * from score where course_id in (select cid from course where teacher_id=(select tid from teacher where tname like '李平%'));
-- 13、查询全部学生都选修了的课程号和课程名
-- select * from student;
-- select * from score;
--
-- select student_id,count(course_id) from score GROUP BY student_id HAVING count(course_id)<>4; SELECT cid,cname FROM course WHERE cid IN (SELECT course_id FROM score GROUP BY course_id HAVING COUNT(student_id) = (SELECT COUNT(sid) FROM student)); -- 14、查询每门课程被选修的次数
select course_id,count(student_id) from score GROUP BY course_id;
-- 15、查询之选修了一门课程的学生姓名和学号
select student_id,count(course_id) from score GROUP BY student_id HAVING count(course_id)=1;
-- 16、查询所有学生考出的成绩并按从高到低排序(成绩去重)
select distinct NUM from score ORDER BY num;

2.尝试使用pymysql编写用户登录注册功能

import pymysql

def log_in():
while True:
log_name = input('请输入用户名:').strip()
log_pwd = input('请输入密码:').strip()
conn = pymysql.connect(
host='127.0.0.1',
port=3306,
user='root',
password='976863429',
db='infor-1',
charset='utf8mb4',
autocommit=True # 针对增 删 改 自动确认
) cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) # [{},{}] sql = 'select * from userinfor;'
affect_rows = cursor.execute(sql)
print(affect_rows)
res1 = cursor.fetchall()
print(res1)
is_correct = False
for i, j in enumerate(res1): if res1[i]['username'] == log_name and res1[i]['pwd'] == log_pwd:
print('用户名重复')
is_correct = True
break if is_correct:
print('登陆成功')
break
print('用户名或密码错误') def sign_in():
while True:
sign_name = input('请输入注册的名称:').strip()
sign_pwd = input('请输入密码:').strip()
sign_pwd_check = input('请重复密码:').strip()
if sign_pwd != sign_pwd_check:
print('两次密码不一致')
continue conn = pymysql.connect(
host='127.0.0.1',
port=3306,
user='root',
password='976863429',
db='infor-1',
charset='utf8mb4',
autocommit=True # 针对增 删 改 自动确认
) cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) # [{},{}] sql = 'select * from userinfor;'
affect_rows = cursor.execute(sql)
print(affect_rows)
res1 = cursor.fetchall()
print(res1)
is_exist=False
for i, j in enumerate(res1): if res1[i]['username'] == sign_name:
print('用户名重复')
is_exist=True
break
if is_exist:
continue
sql1 = 'insert into userinfor(username,pwd) values("%s","%s");'% (sign_name,sign_pwd)
affect_rows1 = cursor.execute(sql1)
print(affect_rows1)
res2 = cursor.fetchall()
print(res2) print('注册成功')
break def run():
while True:
choice = input('1、登陆\n2、注册\n请输入功能编号(q退出):').strip()
if choice == 'q':
print('成功退出')
break
if choice in func_dict:
func_dict[choice]() func_dict = {
'1': log_in,
'2': sign_in
}
run()

11月28日内容总结——多表查询的两种方法及部分小知识点、可视化软件Navicat安装及简单使用讲解及多表查询练习题、python代码操作MySQL(pymysql模块)的更多相关文章

  1. 2016年11月28日 星期一 --出埃及记 Exodus 20:19

    2016年11月28日 星期一 --出埃及记 Exodus 20:19 and said to Moses, "Speak to us yourself and we will listen ...

  2. python数据库操作之pymysql模块和sqlalchemy模块(项目必备)

    pymysql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同. 1.下载安装 pip3 install pymysql 2.操作数据库 (1).执行sql #! ...

  3. day06 python代码操作MySQL

    day06 python代码操作MySQL 今日内容 python代码操作MySQL 基于python与MySQL实现用户注册登录 python操作MySQL python 胶水语言.调包侠(贬义词& ...

  4. 11月30日《奥威Power-BI智能分析报表制作方法》腾讯课堂开课啦

    这么快一周就过去了,奥威公开课又要与大家见面咯,上节课老师教的三种报表集成方法你们都掌握了吗?大家都知道,学习的结果在于实际应用,想要熟练掌握新内容的要点就在于去应用它.正是基于这一要点,每一期的课程 ...

  5. 使用js提交form表单的两种方法

    提交form表单的时候瑶族一些简单的验证,验证完后才能提交,避免无效提交. 1.当输入用户名和密码为空的时候,需要判断.这时候就用到了校验用户名和密码,这个需要在前端页面写:有两种方法,一种是用sub ...

  6. day40:python操作mysql:pymysql模块&SQL注入攻击

    目录 part1:用python连接mysql 1.用python连接mysql的基本语法 2.用python 创建&删除表 3.用python操作事务处理 part2:sql注入攻击 1.s ...

  7. 11月28日 记录一个错误❌,看ruby on rails --active support core extensions--present? && presence && duplicable?

    ❌错误 1. @job.resume.count: 提示❌   undefined method `resume' ✅: @job.resumes.count  //解释:调出某一个job的所有简历, ...

  8. mysql开启远程登陆(修改数据表和授权两种方法)

    一.确认防火墙没有阻止3306端口(一般服务器默认会屏蔽掉) windows防火墙例外设置方法 控制面板(右上角选择查看方式为大图标)---防火墙---高级设置---高级设置---出站规则---最右边 ...

  9. 将DataTable内容导出到Excel表格的两种方法

    方法一:循环DataTable单元格内容拼接字符串,利用StreamWriter的Write方法将字符串写入Excel文件中 这种方法很实现很简单.拼接字符串时,每个单元格之间添加'\t'(表示一个占 ...

  10. spring mvc 防止重复提交表单的两种方法,推荐第二种

    第一种方法:判断session中保存的token 比较麻烦,每次在提交表单时都必须传入上次的token.而且当一个页面使用ajax时,多个表单提交就会有问题. 注解Token代码: package c ...

随机推荐

  1. k8s 中的 ingress 使用细节

    k8s中的ingress 什么是ingress Ingress 如何使用 ingress 使用细节 参考 k8s中的ingress 什么是ingress k8s 中使用 Service 为相同业务的 ...

  2. htaccess如何配置隐藏index.php文件

    <IfModule mod_rewrite.c> Options +FollowSymlinks -Multiviews RewriteEngine On RewriteCond %{RE ...

  3. ubuntu undefined reference to

    温馨提示,请使用ctrl+F进行快速查找 libdl.so undefined reference to `dlsym' undefined reference to `dlopen' undefin ...

  4. ROS应用层通信协议解析

    参考:http://wiki.ros.org/ROS/Master_API http://wiki.ros.org/ROS/Connection Header 说明 ROS本质上就是一个松耦合的通信框 ...

  5. (C++) C++虚函数性能分析

    class baseA { public: virtual float mulTwo(float a, float b) = 0; virtual ~baseA() = default; }; cla ...

  6. 模块/collections/random/time/datetime

    内容概要 模块--包的具体使用 编程思想介绍 软件开发--目录规范 常用模块介绍--collections模块 常用模块介绍--time.datetime 常用模块介绍--random 1.包的具体使 ...

  7. C++快速幂

    C++快速幂 快速幂的作用: 当我们做一些高次幂的计算时,就不能直接进行暴力的计算.例如:需要计算2^n 并且n≤10^18.这时候如果我们直接进行暴力的计算,时间复杂度为O ( n ),那么肯定会超 ...

  8. js判断数组中是否有重复数据

    var arr=[1,3,5,7,9,9,10,10,11,12,34,3,6,92,1]; var tempbool = false; //默认无重复 for (let index = 0; ind ...

  9. docker入门(利用docker部署web应用)

    第一章 什么是docker1.1 docker的发展史2010年几个年轻人成立了一个做PAAS平台的公司dotCloud.起初公司发展的不错,不但拿到过一些融资,还获得了美国著名孵化器YCombina ...

  10. frp内网穿透(已验证)

    # 云服务器frp内网穿透教程 软件源码在https://github.com/fatedier/frp/releases上,根据系统类型,按需下载 教程术语描述 > A 是有固定IP的云服务器 ...