实验: 数据库安全性实验 一、实验目的 创建表和用户管理 创建表单是数据库中最基本的操作,也是使用比较频繁的操作,因此必须掌握SQL的(CREATE语句)的使用方法。而对于用户的管理操作更是一名合格的DBA所必须掌握的.本实验就要求掌握并熟悉这两项基本技能. 用户权限管理 为了保证数据库的安全性,每个DBMS都为系统针对于每一个用户设计了权限管理来保证数据安全.本实验就要求掌握对用户权限管理的... 作者:liushengxi_root 发表于 2018/12/29 11:54:02 原文链接 https://blog.csdn.net/liushengxi_root/article/details/85336762 阅读:88 继续阅读 >>


刘生玺 18/12/29 11:54:02
个人配置说明:5.7.24 MySQL Community Server (GPL),环境CentOS 7 1.MYSQL 不支持语句触发(for each statement),只支持行触发(for each row,新旧数据通过关键字new和old区别) 实验: 数据库存储和触发器实验 一、实验目的 理解,实现并逐渐熟悉存储过程的使用 存储过程(Stored Procedure)是... 作者:liushengxi_root 发表于 2018/12/29 11:47:19 原文链接 https://blog.csdn.net/liushengxi_root/article/details/85333801 阅读:94 继续阅读 >>


刘生玺 18/12/29 11:47:19
协程实现原理 协程的本质都是通过修改 ESP 和 EIP 指针来实现的。其理论上还是单线程在运行. 程序在CPU上运行时依赖3个寄存器: ESP寄存值指向当前栈顶地址,指向当前指令需要的数据 EBP指向当前活动栈帧的基地址 指令寄存器IP,指向当前需要运行的指令 实现协程的多种方法 利用 glibc 的 ucontext 组件(云风的库) 使用汇编来切换上下文(实现miniC协程,腾讯lib... 作者:liushengxi_root 发表于 2018/12/20 22:56:00 原文链接 https://blog.csdn.net/liushengxi_root/article/details/85142236 阅读:56 继续阅读 >>


刘生玺 18/12/20 22:56:00
   首先, linux下的进程地址空间布局是这样子的: 可以看到 整个进程地址空间从上到下地址变化是从高地址到低地址的! 32 位系统有 4G 的地址空间,其中0x08048000-> 0xbfffffff 是用户空间,0xc0000000~0xffffffff 是内核空间,包括内核代码和数据、与进程相关的数据结构(如页表、内核栈)等。其实就是大体上就是下面这样: 另外, %esp 执... 作者:liushengxi_root 发表于 2018/12/20 15:33:26 原文链接 https://blog.csdn.net/liushengxi_root/article/details/85114692 阅读:54 继续阅读 >>


刘生玺 18/12/20 15:33:26
前言: 基于: csdn0 娄神的描述 其实看上面两位大佬的博客就已经ojbk了.写的目地主要是自己总结学习一下. 基础: 1.基础的 WebServer应该支持客户端请求静态文件和动态文件. 2. 浏览器是不能够解析动态的php文件的!那么我们编写服务器程序时候如果遇到请求.php动态文件时就应该将php文件翻译为html文件. 3. php-fpm就能够将php文件翻译为html文件.所以我们... 作者:liushengxi_root 发表于 2018/12/12 22:34:11 原文链接 https://blog.csdn.net/liushengxi_root/article/details/84976353 阅读:70 继续阅读 >>


刘生玺 18/12/12 22:34:11
  单链表以及逆置是什么就不说了,就简单说一下思想: 链表的初始状态: 具体的方法就是将头节点后面的节点,依次通过指针指向,插入head头节点之后,即可完成逆置过程.  示意图(这里我写一下中间处理流程,因为这样比较直观.第一次的处理与正常处理雷同): 需要注意的主要有两点: 1. 逆置之后的链表的尾部要NULL.在这里就是刚开始的时候的pHead->next->next = nu... 作者:liushengxi_root 发表于 2018/12/10 16:39:22 原文链接 https://blog.csdn.net/liushengxi_root/article/details/84940640 阅读:30 继续阅读 >>


刘生玺 18/12/10 16:39:22
(堆和栈又统称为动态存储区!!!!!) 1、栈区(stack):由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) :一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事, 分配方式倒是类似于链表 3、全局区(静态存储区)(static):全局变量和静态变量的存储是放在一块的,初始化的全局变... 作者:liushengxi_root 发表于 2018/12/07 22:47:58 原文链接 https://blog.csdn.net/liushengxi_root/article/details/84888467 阅读:34 继续阅读 >>


刘生玺 18/12/07 22:47:58
1.冒泡与选择 冒泡:冒泡排序只会操作相邻的两个数据。每次冒泡操作都会对相邻的两个数据进行比较,如果前者比后者大,就互相交换,最后就会找到一个最大的落在数组最后.重复以上工作n次即可完成排序. void BubbleSort(vector<int> a) { int len = a.size(); if (len <= 1) 作者:liushengxi_root 发表于 2018/12/07 22:31:36 原文链接 https://blog.csdn.net/liushengxi_root/article/details/84886544 继续阅读 >>


刘生玺 18/12/07 22:31:36
概述:什么是线程池?    因为程序边运行边创建线程是比较耗时的,所以我们通过池化的思想:在程序开始运行前创建多个线程,这样,程序在运行时,只需要从线程池中拿来用就可以了.大大提高了程序运行效率. 如何实现:    一般线程池都会有以下几个部分构成: 1. 线程池管理器(ThreadPoolManager):用于创建并管理线程池 2. 工作线程(WorkThread): 线程池中线程 3. 任务队列:用于存放没有处理的任务。提供一种缓冲机制。 4. 用于添加任务的接口  总的来讲,就是先创建几个线程,然后这些线程等待任务队列,不为空拿出任务执行即可(任务可以是对象,也可以是某个函数). 第一种实现: #ifndef _THREADPOOL_H #define _THREADPOOL_H #include <vector> #include <queue> #include <thread> #include <iostream> #include < 继续阅读 >>


刘生玺 18/11/10 22:57:15
最简单的二分 1.循环实现 template <typename T> int binary_search(const vector<T> &set, const T &value) { auto low = set.begin(); auto high = set.end(); auto high_dump = high; auto low_dump = low; auto mid = low + ((high - low) >> 1); /*1. mid=(low+high)/2,如果 low 和 high 太大就会产生溢出*/ while ((low <= high) && (mid != high_dump)) /*2. 一定是 <= */ { if (*mid == value) return mid - low_dump; /*3. 一定要+1,-1,不然当  继续阅读 >>


刘生玺 18/11/04 22:52:10