自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(336)
  • 资源 (7)
  • 论坛 (8)
  • 收藏
  • 关注

原创 无他,惟手熟尔

卖油翁陈康肃公善射,当世无双 ,公亦以此自矜。尝射于家圃,有卖油翁释担而立,睨之久而不去。见其发矢十中八九,但微颔之。  康肃问曰:“汝亦知射乎?吾射不亦精乎?”翁曰:“无他, 但手熟尔。”康肃忿然曰:“尔安敢轻吾射!”翁曰:“以我酌油知之。”乃取一葫芦置于地,以钱覆其口,徐以杓酌油沥之,自钱孔...

2020-04-22 21:25:55 318 6

原创 Django——图书管理系统(六)

本文将讲述设置外键操作,关于外键的更多知识,大家可以看看数据库的知识。当然我依旧会在注释中做出一些解释。现在我们已经有了出版社这张表,现在我们添加书籍这张表。由于出版社和书籍之间是有关系的,我们使用外键来连接两者之间的关系。在models.py的内容如下:from django.db import models# Create your models here."""书和出版社之间是有关系的。书是出版社出版的。例如机械工业出版社出版了《数据结构和算法分析——C语言描述》这本书。那么,

2021-01-19 23:31:42 11

原创 Django——图书管理系统(五)

本文接着来给网页添加bootstrap样式。首先,需要在settings.py文件中加入静态文件的配置,如下所示:# 静态文件配置STATICFILES_DIRS = [BASE_DIR / 'static']然后将bootstrap3加入到项目中,并且把这个页面https://v3.bootcss.com/examples/dashboard/的body和css都拿下来。现在项目的目录应该如下所示:但是我们需要改动publisher_list.html文件的内容如下。<!D

2021-01-19 22:52:29 12

原创 Django——实现增删改查总结

Django实现增删改查,主要是依赖于models来实现的。下面是一个非常简单的models.py文件,该文件只有一个model,名为Publisher。models.py文件中每一个类都对应于数据库中的一张表。这个类中定义的变量就是数据库中表的相应字段。只不过现在Django给我们统一了数据库的操作,程序开发者无须考虑数据库语句的操作,也无需考虑是什么数据库。因为开发者只需要对model进行操作即可实现增删改查。from django.db import models# Create you

2021-01-13 23:34:56 27

原创 Django——图书管理系统(四)

新增出版社前端页面publisher_edit.html文件的代码如下:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body> <form action="" method="post"> 出版社名称: &

2021-01-13 22:52:12 17

原创 Django——图书管理系统(三)

删除出版社前端页面删除出版社的前端页面是在list上做一些修改。代码如下:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body><a href="/publisher_add/">新增出版社</a><table

2021-01-13 22:07:01 15

原创 Django——图书管理系统(二)

新增出版社前端代码前端publisher_add页面代码如下:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body><form action="" method="post"> 出版社名称: <input typ

2021-01-13 21:55:00 11

原创 Django——图书管理系统(一)

首先,我们创建一个名为bookmanager的项目。命令行如下:django-admin startproject bookmanager接着,创建一个名为app01的APP,使用命令如下:python manage.py startapp app01然后,修改settings.py文件如下所示:"""Django settings for bookmanager project.Generated by 'django-admin startproject' using

2021-01-10 23:49:58 51

原创 Django——使用MySQL数据库

首先,这需要更改settings.py文件中的DATABASES。更改为如下所示即可。DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', # 选择数据库为MySQL 'NAME': 'login', # 数据库名称 'HOST': '127.0.0.1', #

2021-01-10 22:18:58 19

原创 Django——ORM(对象关系映射)

对象关系映射(英语:Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序设计技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”。——百度百科简而言之,ORM就是面向对象语言使用关系型数据库的中转站。ORM能使开发人员专注于业务逻辑,减少开发人员的负担,但是ORM的缺点也很明显,效率不高。在Django中使用ORM需要在APP下面的models.py文件中写类,

2021-01-10 21:30:40 25

原创 Django——使用APP

Django中的APP的功能就是使得项目更加规范化,创建APP把项目相应的功能划分成不同的模块。创建APP命令:python manage.py startapp myapp1这样就创建了一个名为myapp1的APP。你就能在你的项目下面看到一个名为myapp1的目录。创建完成APP以后,Django并不会感知到APP,需要我们在settings.py文件中进行设置。INSTALLED_APPS = [ 'django.contrib.admin', 'djan

2021-01-07 23:51:39 91 2

原创 Django——登录功能

我们新建一个项目,叫做login。然后

2021-01-07 23:10:44 23

原创 Django——简单使用Django

settings.py文件"""Django settings for myfirstdjango project.Generated by 'django-admin startproject' using Django 3.1.5.For more information on this file, seehttps://docs.djangoproject.com/en/3.1/topics/settings/For the full list of settings and t

2021-01-05 20:52:03 66

原创 Django——第一个Django程序

在创建Django项目之前,有个叫虚拟环境的东西需要交待一下。我们在此处使用virtualenv来创建虚拟环境,这是Python的一个工具。下载virtualenv非常简单,使用如下命令:pip install virtualenv之后,创建一个名为venv的环境,使用如下命令:virtualenv venv之后,启用该虚拟环境,使用命令:source venv/bin/activate之后,你会看到你的shell前有一个venv的标识。如下图所示:退出虚拟环境使用d

2021-01-05 20:50:12 33 2

转载 python三大神器之virtualenv

python三大神器之virtualenv pip, virtualenv, fabric通称为pythoner的三大神器。virtualenv virtualenv------用来建立一个虚拟的python环境,一个专属于项目的python环境。用virtualenv 来保持一个干净的环境非常有用测试环境:linux下1、基本使用 通过pip安装virtualenv:pip install virtualenv 测试安装:virtualen...

2021-01-03 21:32:14 25

原创 SQL约束

约束约束是对表中的数据进行限定,从而保证数据的有效性,正确性,完整性。在MySQL中有四类约束。分别是:主键约束(primary key),非空约束(not null),唯一约束(unique),外键约束(foreign key)。非空约束在创建表的时候,加入非空约束。CREATE TABLE stu(id INT,VARCHAR(100) NOT NULL);现在,指定name不能为空,下面来试试,插入一个没有名字的记录到表中。MySQL报错,告诉我们name不能是NULL

2020-12-23 14:47:49 47

原创 SQL基本查询语句(二)

投影查询无论是基础查询还是条件查询,最终的结果都是显示了所有字段。即:包含了id, class_id, name, gender, score。如果我们只关心name字段,那么查询语句应该按照如下格式:SELECT <字段列表> FROM <表名>;下面是一个实例,展示了如何指定相关字段进行查询。SELECT class_id, name FROM students WHERE class_id = 1;查询结果显示了表中一班所有的同学。如果你不想显示cl

2020-12-23 09:39:14 67

原创 SQL操作表

操作数据库中的表无非也是4种方式。增删改查(CRUD)。1.查询查询当前数据库中所有的表:SHOW TABLES;这张表是MySQL数据库中默认的名为mysql的数据库所含有的表。查询表的结构:DESC user;查询名为user的表的结构。2.创建现在,我们来创建一个自己的数据库,名字就叫test吧!然后,我们在test数据库中创建一张表。在干这些之前,我们必须了解MySQL的数据类型。MySQL 数据类型在 MySQL 中,有三种主要的类型:Text(文本)、..

2020-12-16 23:39:14 49

原创 SQL操作数据库

操作数据库,可以分为下面5个方面的操作。1.查询(retrieve)查询MySQL数据库软件中所有数据库:SHOW DATABASES;图中的数据库是MySQL8.0自带的数据库。这四个数据库对于不是DBA的人而言,我们就不要去动它。创建自己的数据库即可。查询数据库的创建语句:SHOW CREATE DATABASE mysql;2.创建(create)创建数据库:CREATE DATABASE test;一般我们在创建数据库的时候,更常用的语句是:CREATE.

2020-12-16 20:58:53 33

原创 同步说明

我的博客即将同步至 OSCHINA 社区,这是我的 OSCHINA ID:zy010101,邀请大家一同入驻:https://www.oschina.net/sharing-plan/apply

2020-12-04 16:21:02 26

原创 SQL删除表中数据语句

如果你想从数据库删除记录,那么需要使用DELETE语句。DELETE语句的基本格式如下:DELETE FROM <表名> WHERE ...;如果WHERE条件没有匹配到任何记录,DELETE语句不会报错,也不会有任何记录被删除。可以看到显示没有任何一行记录被删除。最后,要特别小心的是,和UPDATE类似,不带WHERE条件的DELETE语句会删除整个表的数据:DELETE FROM students;这时,整个表的所有记录都会被删除。所以,在执行DELET

2020-12-04 14:19:12 59

原创 SQL更新表中数据语句

如果,你想更新数据库中其中某一条数据。那么你需要使用UPDATE语句。基本的UPDATE语句如下。UPDATE <表名> SET 字段1=值1, 字段2=值2, ... WHERE ...;例如,我们想更新students表id=12的记录的score和class_id这两个字段,先写出UPDATE students SET score=98, class_id = 4然后在WHERE子句中写出需要更新的行的筛选条件id=12:WHERE id = 12;UPDATE stude

2020-12-04 14:18:47 323

原创 SQL插入数据到表中

我们常说,对于数据库的操作实际上只有增删改查。INSERT INTO <表名> (字段1, 字段2, ...) VALUES (值1, 值2, ...);

2020-12-04 14:18:19 41

原创 SQL查询语句(一)

基本查询SELECT * FROM <tablename>;SELECT是SQL关键字,SQL关键字是不区分大小写的,但是表名是区分大小写的。SELECT关键字表示查询操作,而*表示查询所有字段。FROM是SQL关键字,表示从哪张表查询。tablename是表名。分号是在数据库系统中分隔每条 SQL 语句的标准方法,这样就可以在对服务器的相同请求中执行一条以上的 SQL 语句。另外MySQL要求每条SQL语句的结束都需要加上分号。例如:SELECT * FROM studen

2020-12-04 14:17:27 57

原创 Git常用命令总结

Git设置Git在初次使用之前,应该进行一些设置。主要是设置user.name和user.emailgit config --global user.name "xxx" #"xxx"是你的名字git config --global user.email "email address" #"email address" 是你的电子邮件地址初始化仓库新建一个目录,作为你的项目目录,或者是在已有的项目目录下,输入下面的命令,来初始化一个仓库。git init使用

2020-12-01 16:15:48 48

原创 动态链接库

动态链接库介绍动态链接库,又称为共享链接库。采用动态链接库实现链接操作时,程序文件中哪里需要库文件的功能模块,GCC 编译器不会直接将该功能模块的代码拷贝到文件中,而是将功能模块的位置信息记录到文件中,直接生成可执行文件。这样带来的好处是可执行文件中记录的是功能模块的地址,真正的实现代码会在程序运行时被载入内存,这意味着,即便功能模块被调用多次,使用的都是同一份实现代码(这也是将动态链接库称为共享链接库的原因)。同样这也带来了缺陷,此方式生成的可执行文件无法独立运行,必须借助相应的库文件。和使用静态

2020-11-30 14:42:10 41

原创 静态链接库

库库的存在,大大方便了我们进行编程。因为有了库,我们不必再从0开始,例如我们大多数人C语言写的第一个程序Hello World!都是用了库函数。以printf为例,我们只需要在程序源代码中包含<stdio.h>这个头文件之后,就可以使用printf函数了。这极大的方便了编程。同时库所带来的好处在于,头文件和库文件相结合的访问机制。有时候我们只想让别人使用自己实现的功能,并不想公开实现功能的源码,就可以将其制作为库文件,这样用户获取到的是二进制文件,而头文件又只包含声明部分,这样就实现了“将源

2020-11-30 14:06:11 23

原创 GCC编译器的-std选项

GCC支持在编译的时候使用-std选项来选择编译语言的标准。程序本身也是在发展的,不断变化的。以 C 语言为例,发展至今该编程语言已经迭代了诸多个版本,例如 C89(偶尔又称为 C90)、C94(C89 的修订版)、C99、C11。同样,C++语言也经历了很多的标准变化,例如C++11,C++14,以及现在最新的C++20。既然语言都发展了这么多的标准,GCC编译器当然也要提供一个标准开关,他就是-std选项。对于编译 C、C++ 程序来说,借助 -std 选项即可手动控制 GCC 编译程序时所使用的编译标

2020-11-30 09:06:07 48

原创 Linux下制作启动盘

一般我们都是使用U盘制作启动盘。那么在Linux下如何制作启动盘。其实非常简单,首先,格式化U盘。这一步需要注意有些Linux系统会自动挂载U盘。这时候就需要先卸载U盘。所以制作U盘的这个流程如下。卸载U盘(针对自动挂载U盘的情况) 通常情况下,U盘会被自动挂载到/media目录之下,例如我的U盘就被自动挂载在/media/zy/U0。其中U0是我的U盘的名字。卸载U盘的命令如下: sudo umount /media/zy/U0 格式化U盘 既然是制作 ...

2020-11-23 17:35:26 53

原创 挂载存储媒介

mount命令Linux上用来挂载媒体的命令叫作mount。直接使用该命令会输出当前系统上挂载的设备列表。下面是一个例子,我们只分析最后一行。 /dev/sdc on /media/zy/2EB6-956E type vfat这行告诉我们把dev下的设备sdc,挂载到/media目录下的zy目录下的2EB6-956E目录下,文件系统类型是vfat下面,我们来手动挂载一下U盘。首先,我们把U盘给卸载掉,使用umount /dev/sdc下面,我们准备手动挂载U盘,...

2020-11-20 17:33:25 36

原创 Linux下安装sqlite3

在Ubuntu下安装sqlite3非常简单。使用如下命令即可。sudo apt install sqlite3安装完成以后,就可以使用sqlite3了,在终端下输入sqlite3,如果看到下面的结果就说明可以使用sqlite3了。退出sqlite3只需要输入.exit即可。另外,如果你需要使用高级语言来结合sqlite3使用,那么还需要安装libsqlite3-dev库文件,这样高级语言才能看到其接口。也就是你在使用C/C++内嵌sqlite的时候需要include头文件sqlite.

2020-11-12 09:54:43 37

原创 git忽略特殊文件

我们只想在git管理和代码有关的东西,我们并不想管理其他诸如动态链接库,可执行文件等。这时候你就需要在项目目录下建立一个名为".gitignore"的文件。把你需要忽略的文件加进去即可。GitHub已经为我们准备了各种配置文件,只需要组合一下就可以使用了。所有配置文件可以直接在线浏览:https://github.com/github/gitignore例如C++的.gitignore文件就是下面这个样子的。# Prerequisites*.d# Compiled Object files

2020-11-09 10:30:00 22

原创 Git标签

打标签打标签用在版本记录上非常方便。他有下面几个命令。git tag <tagname> #打标签在当前版本。也可以指定某个commit idgit tag #查看所有标签git tag -a <tagname> -m "info" #打标签的同时加上说明信息下图是打标签并查看。给历史commit打标签git tag v0.1 ec1ed55查看标签信息git show v0.1删除标签git tag -d v0..

2020-11-09 10:21:45 20

原创 Git分支(六)

多人合作多人合作开发项目,没人完成的东西不同。大家把代码都提交到同一个服务器。查看远程仓库信息。使用如下命令即可。git remote -v可以看到,显示远程仓库的默认名字是origin。然后也显示了抓取和推送的地址。如果你没有推送权限,那么是看不到推送地址的。推送分支使用如下命令推送dev分支到远程仓库,如果需要推送其他分支,那就换成其他分支的名字。git push origin dev master分支是主分支,因此要时刻与远程同步; dev分支是

2020-11-09 09:57:26 20

原创 Git分支(五)

如果版本已经上线之后,你们项目还在进行开发一些实验性的功能。那么你可以新建一个feature分支。然后进行开发,开发完毕以后,切换回dev分支,然后进行合并即可。但是如果这些实验性的功能被取消了,并且这些实验性功能包含了某些机密,那么需要删除该分支。删除未合并的分支git branch -D feature参考资料:廖雪峰的git教程...

2020-11-09 09:35:33 17

原创 Git分支(四)

项目开发的过程中,我们可能会遇到bug,这时候需要紧急修复。通常,我们都是新建一个bug分支。但是这时候,你当前工作的分支可能并不能提交(你的东西没写完,无法提交,现在还编译不过去。)。那么如何创建并切换分支?Git提供了stash功能。即:git stash场景是这样的,你修改了README文件。然后git add,这时候bug来了,需要修复。那么执行git stash命令。然后,找到bug所在的分支,一般应该是master分支。那么这时候你切换到master分支。然后在maste.

2020-11-09 09:24:52 14

原创 Git分支(三)

分支管理策略在实际开发中,我们应该按照几个基本原则进行分支管理:首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。所以,团队合作的分支看起来就像这样:通常我们在合并分支的时候,

2020-11-08 23:33:46 29

原创 Git分支(二)

上文说了合并分支的时候,有时候会发生冲突。那么这时候该怎么办?本文来讲述这个问题的解决。现在我们先创建一个名为test的分支,并切换到该分支。现在我们在把README最后一行改为TEST.然后提交修改到仓库,接着切换分支到master分支。然后修改README最后一行为“123456”。然后提交修改。最后,进行合并。如下:Git告诉我们合并README文件的时候发生冲突,合并失败,需要修改解决冲突之后在合并。这时候,我们已经知道了那些文件存在冲突。我们可以查看他们的内容。例如。Git

2020-11-08 23:16:40 15

原创 Git分支(一)

分支是Git的杀手级功能,有了这个,才使得Git变得与众不同,脱颖而出。一般而言,会创建master分支和devloper分支,主分支是项目管理者才有权利改变的。(你改变了主分支也没有,因为你没有推送master分支的权限)Git创建分支是非常廉价的,所以git鼓励你多创建分支。git创建分支的时候只不过就是新增了一个名叫dev(大多数时候devloper分支都会简写为dev分支)指针而已,并且把HEAD从指向master变成指向dev。创建分支使用如下命令:git branch dev查

2020-11-08 22:28:33 15

原创 Git远程仓库(二)

从远程仓库克隆到本地仓库一般而言,你大多数时候都是先去克隆一个仓库。那么使用下面这条命令即可完成克隆远程仓库到本地。git clone https://github.com/zy010101/gitpratise.git这样直接克隆下来的仓库,名字也会叫做gitpractise,如果你不想让本地仓库叫这个名字,那么可以使用下面的命令。git clone https://github.com/zy010101/gitpratise.git mypractise可以看到,显示Clon

2020-11-08 21:45:56 31 1

基于51单片机的电子琴设计.zip

本资源对应于博客“基于51单片机设计的简易电子琴”

2020-07-02

二叉树的操作集合

二叉树的层序建立,先序建立。二叉树的前序遍历,中序遍历,后序遍历,层序遍历,求二叉树的高度,输出二叉树的叶节点。递归版本和非递归版本的实现都有。

2018-10-12

1602使用手册和字符手册

1602的使用手册,包括1602的指令,时序图,以及1602的字符手册。

2018-05-23

单片机开发USB转串口CH340驱动

在win8(win10)上安装该驱动后,可能在设备管理器内找不到端口这个选项,这时候需要手动添加过时硬件。不懂如何操作的可以去看我的博客,有介绍。

2018-05-20

51单片机特殊功能寄存器说明表

51单片机特殊功能寄存器的详细的说明表,列举了常用的所有特殊功能寄存器。

2018-04-25

51单片机指令表

51单片机指令表,并附上详细的指令解释。这个文档是51微控制器的附录

2018-04-25

C++知识图谱

这是用XMind写成的C++知识图谱,有C++的详细知识点

2017-07-02

看到C++20标准,有感而发!

发表于 2018-12-12 最后回复 2019-10-23

这次不灌水了!

发表于 2019-03-13 最后回复 2019-08-07

论坛是不是又挂了?

发表于 2019-03-07 最后回复 2019-03-09

IPv6地址的出现会不会导致路由控制表变得非常大,难以处理!

发表于 2019-02-24 最后回复 2019-02-24

steam正版饥荒联机不能搜索到房间

发表于 2018-12-14 最后回复 2018-12-14

灌水

发表于 2018-12-02 最后回复 2018-12-02

各位,你们有没有经历过神经不正常的舍友吗?

发表于 2018-10-30 最后回复 2018-11-03

内容总是出现两次

发表于 2018-04-26 最后回复 2018-04-27

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除