刘云宾

刘云宾 查看完整档案

北京编辑太原理工大学  |  计算机科学与技术 编辑  |  填写所在公司/组织 github.com/liuyunbin 编辑
编辑

Linux C++ 程序员

个人动态

刘云宾 赞了回答 · 1月4日

如何修改第一次commit的信息?

关注 4 回答 3

刘云宾 关注了标签 · 2020-07-21

sql

SQL 全名是结构化查询语言(Structured Query Language),是用于数据库中的标准数据查询語言,IBM 公司最早使用在其开发的数据库系统中。
1986年10月,美国国家标准学会(ANSI) 对 SQL 进行规范后,以此作为关系式数据库管理系统的标准語言 (ANSI X3. 135-1986),1987年得到国际标准组织的支持下成为国际标准。

不过各种通行的数据库系统在其实践过程中都对 SQL 规范作了某些编改和扩充。所以,实际上不同数据库系统之间的SQL不能完全相互通用。

关注 1521

刘云宾 关注了标签 · 2020-07-21

mysql

MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。在2008年1月16号被Sun公司收购。而2009年,SUN又被Oracle收购。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内。这样就增加了速度并提高了灵活性。MySQL的SQL“结构化查询语言”。SQL是用于访问数据库的最常用标准化语言。MySQL软件采用了GPL(GNU通用公共许可证)。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。

关注 72751

刘云宾 回答了问题 · 2020-07-21

解决查询年龄为18周岁至35周岁且省份开头为42或者41的身份证号码记录SQL语句怎么写?

差不多类似下面

SELECT
    * 
FROM
    table_name
WHERE
    cert_number LIKE "41%" 
    OR
    cert_number LIKE "42%"
HAVING
    DATE_ADD(MID(cert_number, 7, 8), INTERVAL 18 YEAR) <= CURDATE() 
    AND 
    DATE_ADD(MID(cert_number, 7, 8), INTERVAL 35 YEAR) >  CURDATE()
;

关注 3 回答 4

刘云宾 提出了问题 · 2020-07-09

g++ 如何关闭对函数返回地址的保护?

我想要模拟一下 csapp 的 buf 溢出实验,编写 cc 文件,然后,编译,通过输入的字符串改变函数的返回地址,我尝试使用了

-fno-stack-protector

-fno-stack-check

-fno-stack-clash-protection

-fno-stack-limit

都不行,只要修改了函数的返回地址,就直接段错误,大家知道该如何编译 或者 csapp 的 buffer-lab 的编译选项吗?

关注 1 回答 0

刘云宾 赞了回答 · 2020-04-09

strcpy()函数在内存重叠时字符串拷贝的过程探究

内存重叠时不能用 strcpy, 得用 memmove 。

内存重叠时用 strcpy 是未定义行为,未定义行为什么都可能发生。

你看到的 strcpy 的实现只是一个示例,每个编译器的实现都可能不同。

关注 2 回答 1

刘云宾 赞了回答 · 2019-12-11

解决为什么不能使用右值初始化 auto& 变量?

dcl.spec.auto/6:

6 Once the type of a declarator-id has been determined according to [dcl.meaning], the type of the declared variable using the declarator-id is determined from the type of its initializer using the rules for template argument deduction. ...

auto 的类型推断只与初始化值的类型有关。与其为左值右值没有任何关系。

i1 的类型是 intci 的类型是 const int。所以 #6 的推导结果与 #4 一样,只能是 int &

注意,1 的类型是 int 不是 const int

关注 2 回答 1

刘云宾 提出了问题 · 2019-12-11

解决为什么不能使用右值初始化 auto& 变量?

先定义两个变量:

int i = 1;  
const int ci = 2;

接下来,

const auto& a = i; // a 为 const int& 类型,#1
const auto& b = ci; // b 为 const int& 类型,#2
const auto& c = 1; // c 为 const int& 类型,#3
auto& d = i; // d 为 int& 类型 #4
auto& e = ci; // e 为 const int& 类型 #5
auto& f = 1; // 错误,#6

#6 为什么会错误,我觉得只要将 auto 的类型推导为 const int&,就可以成功,就是 const int& f = 1; 由 #5 可知,auto 可以推导出底层 const(const int&),这个为什么不可以?

关注 2 回答 1

刘云宾 赞了回答 · 2019-10-31

解决为什么在 goto 语句后不能定义变量?

C++14 stmt.dcl/3

It is possible to transfer into a block, but not in a way that bypasses declarations with initialization. A program that jumps from a point where a variable with automatic storage duration is not in scope to a point where it is in scope is ill-formed unless the variable has scalar type, class type with a trivial default constructor and a trivial destructor, a cv-qualified version of one of these types, or an array of one of the preceding types and is declared without an initializer ([dcl.init]).

在 C++ ,一个对象只有它的构造函数执行完之后才是一个“合法的”对象(某些简单对象例外)。

在构造的时候,会发生很多事情,比如参数的计算、传递;参数默认值的计算;构造函数的执行,等等。如果定义语句被“跳过”了,那么这些都不应该发生。于是这个对象就会处于一个“非法”的状态。

另一方面,C++ 没有通用的方法检测一个对象是否已经被正确地构造了,将一个对象留在一个可能的“非法的”的状态将使后续程序逻辑没有办法正确进行。

于是,除了某些没有初始化的简单对象,直接跳过定义语句进入其定义域被禁止了。

关注 3 回答 2

刘云宾 赞了回答 · 2019-10-31

解决为什么在 goto 语句后不能定义变量?

如果你在goto跳转的地方使用了这个变量怎么办?比如说从第一个goto跳到err了,又要使用a,但是你跳过了a的定义怎么处理?

关注 3 回答 2

认证与成就

  • 获得 17 次点赞
  • 获得 11 枚徽章 获得 0 枚金徽章, 获得 1 枚银徽章, 获得 10 枚铜徽章

擅长技能
编辑

开源项目 & 著作
编辑

注册于 2019-09-14
个人主页被 1.2k 人浏览