权限分为:数据权限和功能权限

数据权限:

查询提供附加表达式的支持:

//提供附加表达式的支持
List<TAggreateRoot> GetByCondition(Expression<Func<TAggreateRoot, bool>> condition,
Expression<Func<TAggreateRoot,bool>> definecondition);
//返回聚合根分页的方法
List<TAggreateRoot> GetByConditionPages(Expression<Func<TAggreateRoot, bool>> condition,
Expression<Func<TAggreateRoot, bool>> definecondition,
RequestPage request, out int totalcount);
List<TAggreateRoot> GetByConditionPages(List<Conditions> condition,
Expression<Func<TAggreateRoot, bool>> definecondition,
RequestPage request, out int totalcount);
List<TDTO> GetByCondition<TDTO>(Expression<Func<TAggreateRoot, bool>> condition,
Expression<Func<TAggreateRoot, bool>> definecondition);
List<TDTO> GetByConditionPages<TDTO>(Expression<Func<TAggreateRoot, bool>> condition,
Expression<Func<TAggreateRoot, bool>> definecondition,
RequestPage request, out int totalcount);
List<TDTO> GetByConditionPages<TDTO>(List<Conditions> condition,
Expression<Func<TAggreateRoot, bool>> definecondition,
RequestPage request, out int totalcount);

不需要查询条件的写法: 

 var query = orderdbcontext.Set<TAggreateRoot>().Where(condition.And(definecondition));

在工程DDD.Domain新建文件夹ModelPermission: BAS_Department类

  public partial class BAS_Department:AggreateRoot
{
private IRepository<BAS_Department> irepository;
public BAS_Department(IRepository<BAS_Department> irepository)
{
this.irepository = irepository;
} /// <summary>
/// 创建部门对象
/// </summary>
/// <param name="name"></param>
/// <param name="description"></param>
/// <param name="con_id"></param>
public void CreateDepartment(string name,string description,Guid con_id)
{
var bas_department = new BAS_Department();
bas_department.Id = base.Id;
bas_department.Name = name;
bas_department.Description = description;
bas_department.Con_Id = con_id;
irepository.Create(bas_department);
} /// <summary>
/// 根据部门名称返回部门对象
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public BAS_Department GetDepartmentByName(string name)
{
return irepository.GetByCondition(p => p.Name == name, p => true).SingleOrDefault();
}
}

BAS_DR类:

 public partial class BAS_DR:AggreateRoot
{
private IRepository<BAS_DR> irepository;
public BAS_DR(IRepository<BAS_DR> irepository)
{
this.irepository = irepository;
}
public BAS_DR() { } /// <summary>
/// 创建DR对象,将多个部门添加到角色中
/// </summary>
/// <param name="departments"></param>
/// <param name="role"></param>
public void CreateBAS_DR(List<BAS_Department> departments,BAS_Role role)
{
foreach(var department in departments)
{
var bas_dr = new BAS_DR();
bas_dr.Id = base.Id;
bas_dr.BAS_Department = department;
bas_dr.BAS_Role = role;
irepository.Create(bas_dr);
}
} /// <summary>
/// 根据部门对象获取对应的DR信息
/// </summary>
/// <param name="department"></param>
/// <returns></returns>
public List<BAS_DR> GetDRSByDepartment(BAS_Department department)
{
return irepository.GetByCondition(p => p.BAS_Department.Id == department.Id,p=>true);
} /// <summary>
/// 根据角色对象获取对应的DR信息
/// </summary>
/// <param name="role"></param>
/// <returns></returns>
public List<BAS_DR> GetDRSByRole(BAS_Role role)
{
return irepository.GetByCondition(p => p.BAS_Role.Id == role.Id, p => true);
}
}
}

BAS_IdentityContainer类:

  public partial class BAS_IdentityContianer:AggreateRoot
{
private IRepository<BAS_IdentityContianer> irepository;
public BAS_IdentityContianer(IRepository<BAS_IdentityContianer> irepository)
{
this.irepository = irepository;
} /// <summary>
/// 创建标识容器对象
/// </summary>
/// <param name="con_id"></param>
public void CreateIdentityContainer(Guid con_id)
{
var bas_identitycontainer = new BAS_IdentityContianer();
bas_identitycontainer.Id = con_id;
irepository.Create(bas_identitycontainer);
} }

BAS_Post类:

    public partial class BAS_Post:AggreateRoot
{
private IRepository<BAS_Post> irepository;
public BAS_Post(IRepository<BAS_Post> irepository)
{
this.irepository = irepository;
} /// <summary>
/// 创建岗位对象
/// </summary>
/// <param name="name"></param>
/// <param name="description"></param>
/// <param name="con_id"></param>
public void CreatePost(string name,string description,Guid con_id)
{
var bas_post = new BAS_Post();
bas_post.Id = base.Id;
bas_post.Name = name;
bas_post.Description = description;
bas_post.Con_Id = con_id;
irepository.Create(bas_post);
} /// <summary>
/// 根据岗位名返回岗位对象
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public BAS_Post GetPostByName(string name)
{
return irepository.GetByCondition(p => p.Name == name, p => true).SingleOrDefault();
}
}

BAS_PR类:

public partial class BAS_PR:AggreateRoot
{
public IRepository<BAS_PR> irepository;
public BAS_PR(IRepository<BAS_PR> irepository)
{
this.irepository = irepository;
} public BAS_PR() { } /// <summary>
/// 创建PR对象,将多个岗位添加到角色中
/// </summary>
/// <param name="posts"></param>
/// <param name="role"></param>
public void CreateBAS_PR(List<BAS_Post> posts,BAS_Role role)
{
foreach(var post in posts)
{
var bas_pr = new BAS_PR();
bas_pr.Id = base.Id;
bas_pr.BAS_Post = post;
bas_pr.BAS_Role = role;
irepository.Create(bas_pr);
}
} /// <summary>
/// 根据岗位对象获取PR信息
/// </summary>
/// <param name="post"></param>
/// <returns></returns>
public List<BAS_PR> GetPRSByPost(BAS_Post post)
{
return irepository.GetByCondition(p => p.BAS_Post.Id == post.Id, p => true);
} /// <summary>
/// 根据角色对象获取PR信息
/// </summary>
/// <param name="role"></param>
/// <returns></returns>
public List<BAS_PR> GetPRSByRole(BAS_Role role)
{
return irepository.GetByCondition(p => p.BAS_Role.Id == role.Id, p => true);
}
}

BAS_Role类:

 public partial class BAS_Role:AggreateRoot
{
private IRepository<BAS_Role> irepository;
public BAS_Role(IRepository<BAS_Role> irepository)
{
this.irepository = irepository;
} /// <summary>
/// 创建角色对象
/// </summary>
/// <param name="name"></param>
/// <param name="description"></param>
/// <param name="con_id"></param>
public void CreateRole(string name,string description,Guid con_id)
{
var bas_role = new BAS_Role();
bas_role.Id = base.Id;
bas_role.Name = name;
bas_role.Description = description;
bas_role.Con_Id = con_id;
irepository.Create(bas_role);
}
/// <summary>
/// 根据角色名返回角色对象
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public BAS_Role GetRoleByName(string name)
{
return irepository.GetByCondition(p => p.Name == name, p => true).SingleOrDefault();
}
}
}

  BAS_UDPSet类:

public partial class BAS_UDPSet:AggreateRoot
{
private IRepository<BAS_UDPSet> irepository;
public BAS_UDPSet(IRepository<BAS_UDPSet> irepository)
{
this.irepository = irepository;
} public BAS_UDPSet() { } /// <summary>
/// 创建UDP对象,将用户添加到某个部门某个岗位
/// </summary>
/// <param name="user"></param>
/// <param name="department"></param>
/// <param name="post"></param>
/// <param name="ismain">是否为主部门主岗位</param>
public void CreateDepartmentPostToUser(BAS_User user,BAS_Department department,
BAS_Post post,bool ismain)
{
var udp = new BAS_UDPSet();
udp.Id = base.Id;
udp.BAS_Department = department;
udp.BAS_Post = post;
udp.BAS_User = user;
udp.IsMain = ismain;
irepository.Create(udp);
} /// <summary>
/// 根据部门获取对应的UDP信息
/// </summary>
/// <param name="department"></param>
/// <returns></returns>
public List<BAS_UDPSet> GetUDPByDepartment(BAS_Department department)
{
return irepository.GetByCondition(p => p.BAS_Department.Id == department.Id,
p => true);
} /// <summary>
/// 根据用户获取对应的UDP信息
/// </summary>
/// <param name="user"></param>
/// <returns></returns>
public List<BAS_UDPSet> GetUDPByUser(BAS_User user)
{
return irepository.GetByCondition(p => p.BAS_User.Id == user.Id, p => true);
} /// <summary>
/// 根据岗位获取对应的UDP信息
/// </summary>
/// <param name="post"></param>
/// <returns></returns>
public List<BAS_UDPSet> GetUDPByPost(BAS_Post post)
{
return irepository.GetByCondition(p => p.BAS_Post.Id == post.Id, p => true);
}
}

BAS_UR类:

   public partial class BAS_UR:AggreateRoot
{
private IRepository<BAS_UR> irepository;
public BAS_UR(IRepository<BAS_UR> irepository)
{
this.irepository = irepository;
}
public BAS_UR() { } /// <summary>
/// 创建UR对象,将多个用户添加到角色中
/// </summary>
/// <param name="users"></param>
/// <param name="role"></param>
public void CreateBAS_UR(List<BAS_User> users,BAS_Role role)
{
foreach(var user in users)
{
var bas_ur = new BAS_UR();
bas_ur.Id = base.Id;
bas_ur.BAS_User = user;
bas_ur.BAS_Role = role;
irepository.Create(bas_ur);
}
}
/// <summary>
/// 根据用户对象获取对应的UR信息
/// </summary>
/// <param name="user"></param>
/// <returns></returns>
public List<BAS_UR> GetURSByUser(BAS_User user)
{
return irepository.GetByCondition(p => p.BAS_User.Id == user.Id, p => true);
} public List<BAS_UR> GetURSByRole(BAS_Role role)
{
return irepository.GetByCondition(p => p.BAS_Role.Id == role.Id, p => true);
}
}

BAS_User类:

  public partial class BAS_User:AggreateRoot
{
private IRepository<BAS_User> irepository;
public BAS_User(IRepository<BAS_User> irepository)
{
this.irepository = irepository;
} /// <summary>
/// 在仓储中创建用户对象
/// </summary>
/// <param name="no"></param>
/// <param name="name"></param>
/// <param name="mobile"></param>
/// <param name="con_id"></param>
/// <param name="password"></param>
public void CreateUser(string no,string name,string mobile,Guid con_id,string password)
{
BAS_User bas_user = new BAS_User();
bas_user.Id = base.Id;
bas_user.No = no;
bas_user.Name = name;
bas_user.Mobile = mobile;
bas_user.Con_Id = con_id;
var userlogin = new BAS_UserLogin(password);
bas_user.BAS_UserLogin = userlogin;
irepository.Create(bas_user);
} /// <summary>
/// 根据用户NO返回用户对象
/// </summary>
/// <param name="no"></param>
/// <returns></returns>
public BAS_User GetUserByNo(string no)
{
return irepository.GetByCondition(p => p.No == no, p => true).SingleOrDefault();
} /// <summary>
/// 用户登录验证
/// </summary>
/// <param name="userno"></param>
/// <param name="password"></param>
/// <returns></returns>
public bool LoginVerify(string userno,string password)
{
return irepository.GetByCondition(p => p.No == No && p.BAS_UserLogin.Password == password,
p => true).Count == 1;
}
}

BAS_UserLogin类:

 public partial class BAS_UserLogin:ValueObject
{
public BAS_UserLogin(string password)
{
Id = base.Id;
Password = password;
}
}

部门的领域服务:BAS_DepartmentService

 public class BAS_DepartmentService
{
private IRepository<BAS_Department> irepositorydepartment;
private IRepository<BAS_IdentityContianer> irepositoryidentitycontainer;
private IRepository<BAS_UDPSet> irepositoryudp;
private IRepository<BAS_User> irepositoryuser; public BAS_DepartmentService(IRepository<BAS_Department> irepositorydepartment,
IRepository<BAS_IdentityContianer> irepositoryidentitycontainer,
IRepository<BAS_UDPSet> irepositoryudp,
IRepository<BAS_User> irepositoryuser)
{
this.irepositorydepartment = irepositorydepartment;
this.irepositoryidentitycontainer = irepositoryidentitycontainer;
this.irepositoryudp = irepositoryudp;
this.irepositoryuser = irepositoryuser;
} /// <summary>
/// 协调创建部门与标识容器对象
/// </summary>
/// <param name="name"></param>
/// <param name="description"></param>
public void CreateDepartment(string name,string description)
{
var bas_department = new BAS_Department(irepositorydepartment);
var con_id = Guid.NewGuid();
bas_department.CreateDepartment(name, description, con_id); var bas_identitycontainer = new BAS_IdentityContianer(irepositoryidentitycontainer);
bas_identitycontainer.CreateIdentityContainer(con_id);
} public List<BAS_Department> GetDepartmentByUserNo(string no)
{
var udps = new BAS_UDPService(irepositoryudp, irepositoryuser,
irepositorydepartment, null).GetUdpByUser(no);
var departments = new List<BAS_Department>();
foreach(var udp in udps)
{
var department = irepositorydepartment.GetByCondition(p => p.Id == udp.BAS_Department.Id, p => true).SingleOrDefault();
departments.Add(department);
}
return departments;
}
}
中间服务UDP:BAS_UDPService
public class BAS_UDPService
{
private IRepository<BAS_UDPSet> irepositoryudp;
private IRepository<BAS_User> irepositoryuser;
private IRepository<BAS_Department> irepositorydepartment;
private IRepository<BAS_Post> irepositorypost;
BAS_UDPSet udp;
public BAS_UDPService( IRepository<BAS_UDPSet> irepositoryudp,
IRepository<BAS_User> irepositoryuser,
IRepository<BAS_Department> irepositorydepartment,
IRepository<BAS_Post> irepositorypost)
{
this.irepositoryudp = irepositoryudp;
this.irepositoryuser = irepositoryuser;
this.irepositorydepartment = irepositorydepartment;
this.irepositorypost = irepositorypost; udp = new BAS_UDPSet(irepositoryudp);
} /// <summary>
/// 将用户添加到部门和岗位
/// </summary>
/// <param name="userno"></param>
/// <param name="departmentname"></param>
/// <param name="postname"></param>
/// <param name="ismain"></param>
public void CreateDepartmentPostToUser(string userno,string departmentname,
string postname,bool ismain)
{
var user = irepositoryuser.GetByCondition(p => p.No == userno, p => true).SingleOrDefault();
var department = irepositorydepartment.GetByCondition(p => p.Name == departmentname,
p => true).SingleOrDefault();
var post = irepositorypost.GetByCondition(p => p.Name == postname, p => true).SingleOrDefault();
udp.CreateDepartmentPostToUser(user, department, post,ismain);
} /// <summary>
/// 根据部门名获取UDP信息
/// </summary>
/// <param name="departmentname"></param>
/// <returns></returns>
public List<BAS_UDPSet> GetUdpByDepartment(string departmentname)
{
var department = irepositorydepartment.GetByCondition(
p => p.Name == departmentname, p => true).SingleOrDefault();
return udp.GetUDPByDepartment(department);
} /// <summary>
/// 根据用户NO获取UDP信息
/// </summary>
/// <param name="userno"></param>
/// <returns></returns>
public List<BAS_UDPSet> GetUdpByUser(string userno)
{
var user = irepositoryuser.GetByCondition(p => p.No == userno, p => true).SingleOrDefault();
return udp.GetUDPByUser(user);
} /// <summary>
/// 根据岗位名获取UDP信息
/// </summary>
/// <param name="postname"></param>
/// <returns></returns>
public List<BAS_UDPSet> GetUdpByPost(string postname)
{
var post =
irepositorypost.GetByCondition(p => p.Name == postname, p => true).SingleOrDefault();
return udp.GetUDPByPost(post);
}
}

岗位BAS_PostService服务:

 public class BAS_PostService
{
private IRepository<BAS_Post> irepositorypost;
private IRepository<BAS_IdentityContianer> irepositoryidentitycontianer;
private IRepository<BAS_User> irepositoryuser;
private IRepository<BAS_UDPSet> irepositoryudp; public BAS_PostService(IRepository<BAS_Post> irepositorypost
,IRepository<BAS_IdentityContianer> irepositoryidentitycontianer,
IRepository<BAS_User> irepositoryuser,
IRepository<BAS_UDPSet> irepositoryudp)
{
this.irepositorypost = irepositorypost;
this.irepositoryidentitycontianer = irepositoryidentitycontianer;
this.irepositoryuser = irepositoryuser;
this.irepositoryudp = irepositoryudp;
} /// <summary>
/// 创建岗位
/// </summary>
/// <param name="name"></param>
/// <param name="description"></param>
public void CreatePost(string name,string description)
{
var bas_post = new BAS_Post(irepositorypost);
var con_id = Guid.NewGuid();
bas_post.CreatePost(name, description, con_id); var bas_identitycontainer = new BAS_IdentityContianer(irepositoryidentitycontianer);
bas_identitycontainer.CreateIdentityContainer(con_id);
} /// <summary>
/// 通过用户NO获取用户岗位信息
/// </summary>
/// <param name="no"></param>
/// <returns></returns>
public List<BAS_Post> GetPostsByUserNO(string no)
{
var udps = new BAS_UDPService(irepositoryudp, irepositoryuser, null, irepositorypost)
.GetUdpByUser(no); var posts =new List<BAS_Post>();
foreach(var udp in udps)
{
var post = irepositorypost.GetByCondition(p => p.Id == udp.BAS_Post.Id, p => true)
.SingleOrDefault();
posts.Add(post);
}
return posts;
}
}

BAS_DRService 角色:

  public class BAS_DRService
{
private IRepository<BAS_Department> irepositorydepartment;
private IRepository<BAS_Role> irepositoryrole;
private IRepository<BAS_DR> irepositorydr;
BAS_DR bas_dr; public BAS_DRService(IRepository<BAS_Department> irepositorydepartment,
IRepository<BAS_Role> irepositoryrole,
IRepository<BAS_DR> irepositorydr)
{
this.irepositorydepartment = irepositorydepartment;
this.irepositoryrole = irepositoryrole;
this.irepositorydr = irepositorydr; bas_dr = new BAS_DR(irepositorydr);
} /// <summary>
/// 将多个部门添加到角色中
/// </summary>
/// <param name="departmentnames"></param>
/// <param name="rolename"></param>
public void CreateBAS_DR(string [] departmentnames,string rolename)
{
var listdepartment = new List<BAS_Department>();
for(int i=0;i<departmentnames.Length;i++)
{
var department =
irepositorydepartment.GetByCondition(p => p.Name == departmentnames[i]
, p => true).SingleOrDefault();
listdepartment.Add(department);
} var role = irepositoryrole.GetByCondition(p => p.Name == rolename, p => true).SingleOrDefault(); bas_dr.CreateBAS_DR(listdepartment, role);
} /// <summary>
/// 根据部门名获取DR信息
/// </summary>
/// <param name="departmentname"></param>
/// <returns></returns>
public List<BAS_DR> GetDRSByDepartmentName(string departmentname)
{
var department =
irepositorydepartment.GetByCondition(p => p.Name == departmentname, p => true)
.SingleOrDefault();
return bas_dr.GetDRSByDepartment(department);
} /// <summary>
/// 根据角色名获取DR信息
/// </summary>
/// <param name="rolename"></param>
/// <returns></returns>
public List<BAS_DR> GetDRSbyRoleName(string rolename)
{
var role =
irepositoryrole.GetByCondition(p => p.Name == rolename, p => true).SingleOrDefault();
return bas_dr.GetDRSByRole(role);
} }

多个用户添加到角色 BAS_URService:

public class BAS_URService
{
private IRepository<BAS_User> irepositoryuser;
private IRepository<BAS_Role> irepositoryrole;
private IRepository<BAS_UR> irepositoryur;
BAS_UR bas_ur;
public BAS_URService(IRepository<BAS_User> irepositoryuser,
IRepository<BAS_Role> irepositoryrole,
IRepository<BAS_UR> irepositoryur)
{
this.irepositoryuser = irepositoryuser;
this.irepositoryrole = irepositoryrole;
this.irepositoryur = irepositoryur;
bas_ur = new BAS_UR(irepositoryur);
} /// <summary>
/// 将多个用户添加到角色
/// </summary>
/// <param name="usernos"></param>
/// <param name="rolename"></param>
public void CreateBAS_UR(string[] usernos,string rolename)
{
var listuser = new List<BAS_User>();
for(int i=0;i<usernos.Length;i++)
{
var user = irepositoryuser.GetByCondition(p => p.No == usernos[i], p => true)
.SingleOrDefault();
listuser.Add(user);
} var role = irepositoryrole.GetByCondition(p => p.Name == rolename, p => true).SingleOrDefault(); bas_ur.CreateBAS_UR(listuser, role); } /// <summary>
/// 根据用户No获取UR
/// </summary>
/// <param name="userno"></param>
/// <returns></returns>
public List<BAS_UR> GetURSByUserNo(string userno)
{
var user = irepositoryuser.GetByCondition(p => p.No == userno, p => true).SingleOrDefault();
return bas_ur.GetURSByUser(user);
} /// <summary>
/// 根据角色名获取UR
/// </summary>
/// <param name="rolename"></param>
/// <returns></returns>
public List<BAS_UR> GetURsByRoleName(string rolename)
{
var role = irepositoryrole.GetByCondition(p => p.Name == rolename, p => true)
.SingleOrDefault();
return bas_ur.GetURSByRole(role);
} }
												

DDD领域模型数据访问权限(九)的更多相关文章

  1. DDD领域模型数据访问权限之权限(十二)

    实现权限的领域对象:BAS_Permission public partial class BAS_Permission:AggreateRoot { private IRepository<B ...

  2. DDD领域模型数据访问权限之用户权限(十)

    BAS_PRService岗位和角色服务: public class BAS_PRService { //岗位 private IRepository<BAS_Post> ireposit ...

  3. DDD领域模型数据访问之对象(十一)

    在工程DDD.Domain中文件夹ModelPermission新建类:BAS_Object public partial class BAS_Obejct:AggreateRoot { //仓储接口 ...

  4. oracle ebs应用产品安全性-数据访问权限集

    定义 数据访问权限集是一个重要的.必须设定的系统配置文件选项.对具有相同科目表.日历和期间类型的分类帐及其所有平衡段值或管理段值的定义读写权限,系统管理员将其分配至不同的责任以控制不同的责任对分类帐数 ...

  5. SYS_数据访问权限Operation Unit和Ledger的访问设定(案例)

    2014-06-01 Created By BaoXinjian

  6. DDD领域模型之分配权限(十三)

    权限分配和权限查找. 在DDD.Domain工程中新建:BAS_PermissionAssign类 public partial class BAS_PermissionAssgin:Aggreate ...

  7. SpringBoot起飞系列-数据访问(九)

    一.前言 前边我们已经学些了开发的基本流程,最重要的一步来了,怎么样和数据库交互才是最重要的,毕竟没有数据那就相当于什么也没做,本文我们来学习使用springboot整合jdbc.mybatis.jp ...

  8. Oracle EBS 数据访问权限集

    SELECT frv.responsibility_name, fpo.profile_option_name, fpo.user_profile_option_name, fpv.profile_o ...

  9. SSAS中CUBE行权限数据级权限控制

    去年做了一个数据仓库的项目,其中涉及到了CUBE数据级权限的控制.在网上找这方面的资料,找到一个[BI] 通用数据级权限控制解决方案的实现(二):Cube中的角色设置与数据级权限控制.根据这个大牛的思 ...

随机推荐

  1. MapReduce与关系型数据库的不同之处。

    MapReduce能够被视为RDBMS(关系型数据库)的补充. 1.MapReduce适合处理那些需要分析整个数据集的问题(日志分析等),以批处理的方式.RDBMS适合做点查询和更新. 2.MapRe ...

  2. C语言指针详解(经典,非常详细)

    前言:复杂类型说明 要了解指针,多多少少会出现一些比较复杂的类型,所以我先介绍一下如何完全理解一个复杂类型,要理解复杂类型其实很简单,一个类型里会出现很多运算符,他们也像普通的表达式一样,有优先级,其 ...

  3. Python复习笔记(四)高阶函数/返回函数/匿名函数/偏函数/装饰器

    一.map/reduce map map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次 作用到序列的每个元素,并把结果作为新的Iterator返回. reduce r ...

  4. 第二节--Servlet

    1.在tomcat的webapp下新建一个web项目test 要有WEB-INF目录,其下有web.xml.   2.WEB-INF下文件是给tomcat使用的 3.用户访问localhost:848 ...

  5. 51nod1331 狭窄的通道

    题目传送门 这道题 51nod只Ac了十二个人 没有题解可以研究 所以就自己YY了半天 在这里先感谢一波岚清大爷 orz 然后这道题我分了两种情况 一种是左边的往左跑右边的往右跑 中间有一部分直接走不 ...

  6. Qt之QEvent(所有事件的翻译)

    QEvent 类是所有事件类的基类,事件对象包含事件参数. Qt 的主事件循环(QCoreApplication::exec())从事件队列中获取本地窗口系统事件,将它们转化为 QEvents,然后将 ...

  7. 理解django框架中的MTV与MVC模式

    1.Models:一个抽象层,用来构建和操作你的web应用中的数据,模型是你的数据的唯一的.权威的信息源.它包含你所储存数据的必要字段和行为.通常,每个模型对应数据库中唯一的一张表. from dja ...

  8. Educational Codeforces Round 47 (Rated for Div. 2) 题解

    题目链接:http://codeforces.com/contest/1009 A. Game Shopping 题目: 题意:有n件物品,你又m个钱包,每件物品的价格为ai,每个钱包里的前为bi.你 ...

  9. 子元素应该margin-top为何会影响父元素【转】

    这个问题困惑了很久,虽然没有大碍早就摸出来怎么搞定它,但始终不明白原因出在哪里,如果只是IE有问题我也不会太在意,可问题是所有上等浏览器都表现如此,这样叫我怎能安心?今天总算下狠心查出来怎么回事,居然 ...

  10. Linux相关指令和操作

    环境:Ubuntu16.04 1.安装ipython notebook 安装这个软件,必须安装anaconda: 注意几点:1.添加环境变量在安装的时候会自动询问你是否添加: 2.bash命令中应该和 ...