delete

mysql注释方法【自用】

こ雲淡風輕ζ 提交于 2020-02-13 14:06:13
原文链接: https://www.jb51.net/article/125991.htm 一、MySQL支持三种注释方式: 1.从‘#'字符从行尾。 2.从‘-- '序列到行尾。请注意‘-- '(双破折号)注释风格 要求第2个破折号后面至少跟一个空格符(例如空格、tab、换行符等等) 。 3.从/*序列到后面的*/序列。结束序列不一定在同一行中,因此该语法允许注释跨越多行。 二、SQL语句(delete与truncate的区别 链接: https://blog.csdn.net/helloboat/article/details/51481913 ) #use sqltest /*create table people( id int not null PRIMARY key, name varchar(50), age int );*/ #insert into people values(2,"大红花",45) #select * from people #where id=2 #update people set name="娃哈哈" where id=2 #delete from people where id=1 #delete from people #truncate people #drop table people 来源: https://www.cnblogs

c++之智能指针,异常处理,枚举

拈花ヽ惹草 提交于 2020-02-13 11:15:32
智能指针,文件IO 二、智能指针&动态内存 1. 指针潜在问题 c++ 把内存的控制权对程序员开放,让程序显式的控制内存,这样能够快速的定位到占用的内存,完成释放的工作。但是此举经常会引发一些问题,比如忘记释放内存。由于内存没有得到及时的回收、重复利用,所以在一些c++程序中,常会遇到程序突然退出、占用内存越来越多,最后不得不选择重启来恢复。造成这些现象的原因可以归纳为下面几种情况: 野指针: 内存已经被释放、但是指针仍然指向它。这时内存有可能被系统重新分配给程序使用,从而会导致无法估计的错误 重复释放:程序试图释放已经释放过的内存,或者释放已经被重新分配过的内存,就会导致重复释放错误. 内存泄漏: 不再使用的内存,并没有释放,或者忘记释放,导致内存没有得到回收利用。 忘记调用delete 随着多线程程序的广泛使用,为了避免出现上述问题,c++提供了智能指针,并且c++11对c++98版本的智能指针进行了修改,以应对实际的应用需求。 2. 智能指针 在98版本提供的 auto_ptr 在 c++11得到删除,原因是拷贝是返回左值、不能调用delete[] 等。 c++11标准改用 unique_ptr | shared_ptr | weak_ptr 等指针来自动回收堆中分配的内存。智能指针的用法和原始指针用法一样,只是它多了些释放回收的机制罢了。 智能指针位于 头文件中

内存池的设计和实现总结(一)

回眸只為那壹抹淺笑 提交于 2020-02-13 08:19:36
  C/C++下内存管理是让几乎每一个程序员头疼的问题,分配足够的内存、追踪内存的分配、在不需要的时候释放内存——这个任务相当复杂。而直接使用系统调用malloc/free、new/delete进行内存分配和释放,有以下弊端: 调用malloc/new,系统需要根据“最先匹配”、“最优匹配”或其他算法在内存空闲块表中查找一块空闲内存,调用free/delete,系统可能需要合并空闲内存块,这些会产生额外开销 频繁使用时会产生大量内存碎片,从而降低程序运行效率 容易造成内存泄漏   内存池则是在真正使用内存之前,先申请分配一定数量的、大小相等(一般情况下)的内存块留作备用。当有新的内存需求时,就从内存池中分出一部分内存块,若内存块不够再继续申请新的内存。这样做的一个显著优点是,使得内存分配效率得到提升。   本章先实现一个简单的内存池(CSingleMemoryPools)。该内存池提供一定数量、大小相等的内存块。该实例中,CSingleMemoryPools中的m_pMemoryFreeList负责对空闲内存块进行管理,每个内存块以_MemoryBlock类进行管理,其中首部有4个字节的指针块地址 + 4个字节的list表首地址 + 4位验证码,然后才是分配的内存。 1 #pragma once 2 3 //开发一个简单的内存池,用于内存管理。 4 5 #include

MySQL外键与外键关系说明(简单易懂)

心已入冬 提交于 2020-02-12 05:28:51
MySQL主键和外键使用及说明 一、外键约束 MySQL通过外键约束来保证表与表之间的数据的完整性和准确性。 外键的使用条件:     1.两个表必须是InnoDB表,MyISAM表暂时不支持外键(据说以后的版本有可能支持,但至少目前不支持);    2.外键列必须建立了索引,MySQL 4.1.2以后的版本在建立外键时会自动创建索引,但如果在较早的版本则需要显示建立;    3.外键关系的两个表的列必须是数据类型相似,也就是可以相互转换类型的列,比如int和tinyint可以,而int和char则不可以;           外键的好处:可以使得两张表关联,保证数据的一致性和实现一些级联操作; 外键的定义语法: [CONSTRAINT symbol] FOREIGN KEY [id] (index_col_name, ...) REFERENCES tbl_name (index_col_name, ...) [ON DELETE {RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT}] [ON UPDATE {RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT}] 该语法可以在 CREATE TABLE 和 ALTER TABLE 时使用

清空IE缓存

泄露秘密 提交于 2020-02-12 02:21:19
 使用RunDll32.exe 来运行Internet选项的对应功能:   Temporary Internet Files (Internet临时文件)   RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 8   Cookies   RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 2   History (历史记录)   RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 1   Form Data (表单数据)   RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 16   Passwords (密码)   RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 32   Delete All (全部删除)   RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 255   Delete All - "Also delete files and settings stored by add-ons"   RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 4351 来源

springboot---数据整合篇

我只是一个虾纸丫 提交于 2020-02-11 22:56:33
本文讲解 Spring Boot 基础下,如何使用 JDBC,配置数据源和通过 JdbcTemplate 编写数据访问。 环境依赖 修改 POM 文件,添加spring-boot-starter-jdbc依赖。 <dependency> <groupId> org.springframework.boot </groupId> <artifactId> spring-boot-starter-jdbc </artifactId> </dependency> 添加mysql依赖。 <dependency> <groupId> mysql </groupId> <artifactId> mysql-connector-java </artifactId> <version> 5.1.35 </version> </dependency> <dependency> <groupId> com.alibaba </groupId> <artifactId> druid </artifactId> <version> 1.0.14 </version> </dependency> 数据源 方案一 使用 Spring Boot 默认配置 使用 Spring Boot 默认配置,不需要在创建 dataSource 和 jdbcTemplate 的 Bean。 在 src/main

new和delete关键字

。_饼干妹妹 提交于 2020-02-11 14:11:59
new关键字创建出来的对象位于什么地方? 很明显嘛,new关键字创建出来的对象一定位于堆空间,这种说法一定正确吗?本篇博客帮你揭开其神秘的面纱。 被忽略的事实 new/delete的本质是C++预定义的操作符 C++对这两个操作符做了严格的行为定义 -new: 1.获取足够大的内存空间(默认为堆空间) 2.在获取的空间中调用构造函数创建对象 -delete: 1.调用析构函数销毁对象 2.归还对象所占用的空间(默认为堆空间) 在C++中能够重载new/delete操作符 全局重载(不推荐) 局部重载(针对具体类进行重载) 重载new/delete的意义在于改变动态对象创建时的内存分配方式 new/delete的重载方式 //static member function,写不写static都是静态成员函数。 void* operator new(unsigned int size) { void* ret = NULL; /*ret pointer to allocated memory*/' return ret; } //static member function void operator delete(void* p) { /*free the memory which is pointed by p*/ } 来源: https://www.cnblogs.com/-glb

PL/SQL触发器

大兔子大兔子 提交于 2020-02-11 11:48:46
在本章中,我们将讨论和学习PL/SQL中的触发器。 触发器是存储的程序,在发生某些事件时会自动执行或触发。事实上,触发器是为了响应以下任何事件而被执行的 - 数据库操作(DML)语句( DELETE , INSERT 或 UPDATE ) 数据库定义(DDL)语句( CREATE , ALTER 或 DROP )。 数据库操作( SERVERERROR , LOGON , LOGOFF , STARTUP 或 SHUTDOWN )。 可以在事件关联的表,视图,模式或数据库上定义触发器。 使用触发器的好处 触发器可以用于以下目的 - 自动生成一些派生列值 强化参照完整性 事件记录和存储表访问信息 审计 表的同步复制 实施安全授权 防止无效的事务 创建触发器 创建触发器的语法是 - CREATE [OR REPLACE ] TRIGGER trigger_name {BEFORE | AFTER | INSTEAD OF } {INSERT [OR] | UPDATE [OR] | DELETE} [OF col_name] ON table_name [REFERENCING OLD AS o NEW AS n] [FOR EACH ROW] WHEN (condition) DECLARE Declaration-statements BEGIN Executable

2 - laravel 基础 - 路由

荒凉一梦 提交于 2020-02-11 10:25:27
laravel version: 5.5.* 路由文件: route/web.php 路由类型 get 只匹配get类型的请求 post 只匹配post类型的请求 delete 只匹配delete类型的请求 put 只匹配put类型的请求 any 匹配 get post delete put 任意一种类型的请求 基本使用 基本格式: Route::路由方式('路由', '命名空间\控制器@方法'); 在PHP中.. // 基本路由 Route::get('/', 'TestController@index'); Route::post('/store', 'TestController@store'); Route::put('/update/{id}', 'TestController@update'); Route::delete('/delete/{id}', 'TestController@destroy'); RouteW::any('/test', 'TestController@test'); // 特殊路由 Route::resource('/article', 'ArticleController'); Route::resources([ '/article' => 'ArticleController', '/comment' =>

c++ new 与malloc有什么区别

◇◆丶佛笑我妖孽 提交于 2020-02-11 09:26:03
转自:https://www.cnblogs.com/ywliao/articles/8116622.html new与malloc的10点区别 1. 申请的内存所在位置 new操作符从自由存储区(free store)上为对象动态分配内存空间,而malloc函数从堆上动态分配内存。自由存储区是C++基于new操作符的一个抽象概念,凡是通过new操作符进行内存申请,该内存即为自由存储区。而堆是操作系统中的术语,是操作系统所维护的一块特殊内存,用于程序的内存动态分配,C语言使用malloc从堆上分配内存,使用free释放已分配的对应内存。 那么自由存储区是否能够是堆(问题等价于new是否能在堆上动态分配内存),这取决于operator new 的实现细节。自由存储区不仅可以是堆,还可以是静态存储区,这都看operator new在哪里为对象分配内存。 特别的,new甚至可以不为对象分配内存!定位new的功能可以办到这一点: new (place_address) type place_address为一个指针,代表一块内存的地址。当使用上面这种仅以一个地址调用new操作符时,new操作符调用特殊的operator new,也就是下面这个版本: void * operator new (size_t,void *) //不允许重定义这个版本的operator new