如果表A的主关键字是表B中的字段,则该字段称为表B的外键,表A称为主表,表B称为从表。外键是用来实现参照完整性的,不同的外键约束方式将可以使两张表紧密的结合起来,特别是修改或者删除的级联操作将使得日常的维护工作更加轻松。外键主要用来保证数据的完整性和一致性
两个表必须是InnoDB表,MyISAM表暂时不支持外键
外键列必须建立了索引,MySQL 4.1.2以后的版本在建立外键时会自动创建索引,但如果在较早的版本则需要显示建立;
外键关系的两个表的列必须是数据类型相似,也就是可以相互转换类型的列,比如int和tinyint可以,而int和char则不可以;
创建外键语法:
...
目录
1、什么是MyBatis?
2、MyBatis 入门实例基于xml配置
3、MyBatis 入门实例注解配置
4、MyBatis 入门实例 一对一 基于xml配置
4、MyBatis 入门实例 一对多,多对一 基于xml配置
5、MyBatis 入门实例 多对多 基于xml配置
回到顶部
1、什么是MyB...
模糊查询,注意他的使用方法,其他基本一致
具体的xml配置文件如下
<?xml version="1.0" encoding="UTF-8"?>
<!-- 该文件代表的是user类和user表的映射关系,关于user表的sql语句等等写在这里 -->
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="dao...
用来替代jdbc的一个框架
代码实现功能:
(一) 连接数据库
(二) 简单配置mybatis
(三) 实现数据查询
下载地址:
TestMyBatis.rar
说明:
框架代码主要依靠的是一个google的jar包 gson
包已经打包到源码
需要的自己下载
TestJSON.rar
学习java网络编程的参考代码
直接贴代码吧, 使用javabean制作的界面, 可以直接 eclpse编译通过
GUI-CHAT.rar 直接点击下载即可
直接贴代码, 可以直接测试
#include <windows.h>
#include <stdio.h>
typedef struct _LSA_UNICODE_STRING {
USHORT Length;
USHORT MaximumLength;
PVOID Buffer;
} LSA_UNICODE_STRING, *PLSA_UNICODE_STRING;
typedef LSA_UNICODE_STRING UNICODE_STRING, *PUNICODE_STRING;
// 申明ntd...
#include <windows.h>
#include <stdio.h>
#define NT_SUCCESS(Status) ((NTSTATUS)(Status) >= 0)
#define SystemLoadAndCallImage 38
typedef struct _UNICODE_STRING {
USHORT Length;
USHORT MaximumLength;
PVOID Buffer;
} UNICODE_STRING, *PUNICODE_STRING;
typedef uns...
开发环境: VC6.0
系统环境: xp3
exe驱动加载InstallSysDemo.rar
附件中有完整的测试代码
注意: 驱动的sys文件 需要和 生成的exe文件放到一个文件夹即可执行
背景:
公司阿里云服务器换成 专有网络VPC后出现了问题, 无法对外访问, 最后想起了是ufw的问题, 阻止了 80端口, 以前也是那样配置的,很奇怪,添加了一条命令
sudo ufw allow 80 允许外部访问80端口
搞定了
安装方法
sudo apt-get install ufw
当然,这是有图形界面的(比较简陋),在新立得里搜索gufw试试……
使用方法
1 启用
sudo ufw enable
sudo ufw default deny
作用:开启了防火墙并随系统启动同...
检测事件是否开启
1
show variables like 'event_scheduler';
开启事件
1
...
[该文章已设置加密,请点击标题输入密码访问]
需要了解 内核对象的结构
32位的代码
#include "ntddk.h"
VOID MyUnload(PDRIVER_OBJECT pDriverObject)
{
KdPrint(("驱动卸载成功\n"));
}
NTSTATUS DriverEntry(PDRIVER_OBJECT pDriverObject, PUNICODE_STRING Reg_Path)
{
UNICODE_STRING mingzi;
PVOID dizhi1;
ULONG *biao_neihe1;//内核表的地址
int i=2;...
原理:
段基址 + 偏移地址 = 函数地址
让idt不动的话, 就需要更改段基址
实例代码:
#include "ntddk.h"
#include "ntddk.h"
#define WORD USHORT
#define DWORD ULONG
#define MAKELONG(a, b) ((LONG)(((WORD)(((DWORD_PTR)(a)) & 0xffff)) \
| ((DWORD)((WORD)(((DWORD_PT...
主要理解下面的内容:
1:
KiProcessorBlock数组的每一个非0项都是指向一个_kprcb结构,而_kprcb结构正是再_kpcr结构的+0x120处,_kpcr结构的+0x38就是_IDT结构地址。
2:
通过硬编码 使用ida找到 KiProcessorBlock
3:
IDt的表结构的理解, 进行函数过滤
详细使用代码 (xp3)
#include <ntddk.h>
#define WORD USHORT
#define D...