----我的分析
菜单表
m1001 update update.action ..
m1002 delete delete.action ..
m1003 add add.action ...
用户表
u1001 zhangsan
u1002 lisi
角色表
r1001 管理员
r1002 普通管理员
--角色授权表(角色,和模块)
r1001 m1001 --这个联合主键的意识是(角色表的管理员具有修改模块的权限)
rl001 m1002 --这个联合主键的意识是(角色表的管理员具有删除模块的权限)
rl002 m1003 --这个联合主键的意识是(角色表的系统具有添加模块的权限)
--角色用户表 (这个表实现了授权)
u1001 rl001 --说明zhangsan是管理员具有删除和修改模块的权限
ul002 rl002 --说明lisi是普通管理员具有添加模块的权限
以上已经实现了授权,不过有时候关联的权限过多,比如有这样的需求授权普通管理员,只要他有修改模块的权限,
比如我添加一个用户叫王五
给他授权为管理员,如果按以上设计他就不止有修改的权限了,而且他也是删除的权限,此时
就不能满足需求了,不是不能满足需求(比如要删除脚色表管理员对应的删除模块的权限)
一下设计解决此问题
--用户授权表:存储用户的授权信息(这个表实现了一步到位的授权)
u1001 m1001
用户直接和模块发生关系 这说明了用户张三直接单独拥有了修改模块的信息
注意:不是管理员张三
################################################################################################################ # # 通用Makefile模板 # 自动将src目录下中的.c文件编译,生成所有.o文件保存在bin/objs下 # 修改TARGETS和CC以及CFLAGS和LDFLAG即可完成工程的配置 # by jieen 2013-4-27 # ################################################################################################################# PROJECT_TOP_DIR=$(shell cd ../; pwd) PROJECT_BIN_DIR=$(PROJECT_TOP_DIR)/bin PROJECT_SRC_DIR=$(PROJECT_TOP_DIR)/src PROJECT_INC_DIR=$(PROJECT_TOP_DIR)/inc PROJECT_LIB_DIR=$(PROJECT_TOP_DIR)/lib PROJECT_OBJ_DIR=$(PROJECT_BIN_DIR)/objs MKDIR := mkdir -p CC := gcc TARGETS = opxl CFLAGS := -g -I$(PROJECT_INC_DIR) LDFLAG := -L$(PROJECT_LIB_DIR) src :=$(wildcard $(PROJECT_SRC_DIR)/*.c) dir := $(notdir $(src)) PROJECT_OBJ := $(patsubst %.c,%.o,$(dir) ) PROJECT_ALL_OBJS := $(addprefix $(PROJECT_OBJ_DIR)/, $(PROJECT_OBJ)) all:$(PROJECT_SRC_DIR) $(PROJECT_ALL_OBJS) $(CC) $(CFLAGS) $(PROJECT_ALL_OBJS) -o $(PROJECT_BIN_DIR)/$(TARGETS) $(LDFLAG) $(PROJECT_OBJ_DIR)/%.o : $(PROJECT_SRC_DIR)/%.c $(MKDIR) $(PROJECT_OBJ_DIR) $(CC) -c $(CFLAGS) $< -o $@ clean: rm -fr $(PROJECT_OBJ_DIR) rm -fr $(TARGETS)
出于兴趣专门买了版本git权威指南来学习,刚开始觉得git很好很灵活,越往书后面看越觉得太灵活了,灵活来不利于推广了。
不过里面有一个功能很使用git-svn,可以实现svn和git的联合使用,但是从git检出到svn的会很久(git会导出svn的所有版本然后转换为git的格式),这导致用户体验相当不好。
背景:需要实现出差的时候文件修改记录仍然保留,并且能离线提交
实现方式:出差时检出svn最新版本,然后在该文件夹内初始化git并提交为git的第一个版本,把.svn改为tempsvn并把tempsvn添加到忽略文件夹。出差后使用方法同svn类似,修改后提交最基本的几乎不用另外培训(懂git的人知道要玩花样想怎么玩就怎么玩),出差回来后,把关键版本提交到svn,使用方法:git更新到指定版本,把.git改为tempgit,tempsvn改为.svn,更新然后提交。
结论:这样可以实现git和svn结合使用且速度有保障,而且将修改记录全部保留,目前感觉比较完美。
首先安装git
msysgit:https://code.google.com/p/msysgit/downloads/list
msysgit的bin目录需要添加到path的环境变量里面并重启
tortoisegit:https://code.google.com/p/tortoisegit/wiki/Download?tm=2(选择安装,如果不使用图像界面可以不安装)
git
svn切换工具V1.0下载地址:(csdn下载链接还没有生成,稍后修改)http://www.scmeye.com/forum.php?mod=viewthread&tid=3326&page=1&extra=#pid15816
压缩包内包含64位和32位的安装包。
使用方法:
- 使用svn检出版本库
- “初始化git“,并把tempgit添加到svn的忽略列表并提交
- “2git”,提交git并把tempsvn设置为忽略文件,然后提交
- 然后就正常使用git功能
- 需要提交svn时,git更新到需要提交的版本,然后选择"2svn",更新提交
- 需要将多个git版本提交到svn重复“2git”更新到需要版本,“2svn”提交