精华内容
下载资源
问答
  • 公司的网站www.studyez.com 在实际开发过程中,经常要对数据库进行操作,搞来搞去常用的也就哪么几种。所以就想把数据库的操作进行一些封装。记得在那本书或是杂志上看到某个牛人这样评价数据库的设计“键,键,键,...

    公司的网站www.studyez.com 在实际开发过程中,经常要对数据库进行操作,搞来搞去常用的也就哪么几种。所以就想把数据库的操作进行一些封装。记得在那本书或是杂志上看到某个牛人这样评价数据库的设计“键,键,键,除了键还是键”,其它的什么一二三范式什么的,在学校里老师也讲过。不过看来看出,也没脱离三种关系。

    就是”一对一,一对多,多对多“三种关系,再复杂的关系也不过是在上面多转了几圈而已。

    后来又抽空了看了些敏捷开发,设计模式之类的书。在网上也找了不少ORM方面的源码看过。搞了半天也就是在三种关系的处理上面应用了反射等一些新东东。可是用起来还是感觉怪怪的。下面我个人的一些看法,欢迎各位老兄指点。但是请不要说脏话。

    ------------------------------基本原理-----------------------------

    1:数据访问的基本行为.
    a)存储。-------将数据保存在持久性存储介质之中。
    b)读取。-------根据唯一标识符从存储介质中读取数据.
    c)删除。-------从持久存储介质当中删除数据及其关联数据《保持数据的完整性》
     d)编辑。-------根据唯一标识符修改特定数据的部分可编辑属性。
     
    e)计数。-------计算持久存储介质中符合某些特定条件的数据记录总数。
    f)分页。-------显示符合某一特定条件下的一部分数据。
     
    -------------说明----------------------------------
    一)e ,f是成对出现的。
    二)数据本身只具a,b,c,d四种的某一种或多种的行为。
    三)e,f是数据编组行为同时又是b行为的扩展或是b是ef的浓缩,主要是为了提高数据读取的性能。
    -----------------------------------------------------------------------------
     
    2:不同数据实体之间存着三种对应关系。
          夫妻关系《1:1,一夫一妻制,一夫多妻就不考虑了啊。》
              可以表示为:M:{N} 或 N:{M}
    行为有:离婚.T(M.Hasband=N and N.Wife=M )
             结婚.T(M.Hasbank=Null and N.Wife=Null )
    -----------Hasbank 好象是拼错,大致是这样拉的吧。
    角色:夫(r1),妻。(r2)
    限制
    [
    一)不许重婚
    二)双方必须同时存在
    ]
         父子关系《1:N,一个人有0到K个儿子(K<N)》
             可以表示为:M:{S0,…,SK} [0<=i<=K]
             行为有:生子认父 T( M.Sons.Add(Si) and Si.Parent=M )
                       断绝父子关系:T( M.Sons.Remove(i) and Si.Parent=Null and Si.Delete() )
             ------------------------------------------
             角色:父(r1),子(r2)
             限制
    [
    一)先生后认,
    二)可以无子但不可以无父
    ]
         伙伴关系《M:N,每个人都有数目不等的平等伙伴》
    其中 M:N是1:N的扩展。M:N
    可以表示为:M1:{N0,…,NK}
                    M2:{N0,…,NK}
                    …
                    MM:{N0,…NK}
                  
                    N0:{M1,…,MM}
                    N1:{M1,…,MM}
                    …
                    NK:{M1,..,MM}
    行为有:结交 T( Mi.Parteners.Add(Nj) and Nj.Parterners.Add(Mi) )
                         绝交 T( Mi.Parteners.Remove(Nj) and Nj.Parents.Remove(Mi) )
               角色:伙伴(r)
               限制
     [
          一)C 可以是A的伙伴的同时也可以是B的伙伴。《多样性》
          二)C是A的伙伴==A是C的伙伴。《等价性》
          三)但是B可以是A的伙伴也可以不是A的伙伴《不可传递性》
     ]。
     ----------------------说明--------------------------
    一)R1,1:1; R2,1:N; R3,M:N; eA:实体A; eB:实体B
    二)数据实体之间的关系可以统一表示为
    eA -----------{R1 or R2 or R3}-------------eB
    三)R1 ,R2,R3是相互排斥的,只能选择其中的一种且必须选择一种。
    ---------------------------------------------------------------
    3:相应的持久化存储文件的存储结构。
    一)R1 关系.
       storageA ---------{a.PK,b.PK}[a.PK唯一,b.PK唯一]-----------storageB
    二)R2 关系
       storageA ----------{a.PK,b.PK}[a.PK唯一]---------------------storageB
    三)R3 关系
       storageA-----------{a.PK,b.PK}-------------------------------storageB
    ======a.PK是storageA的唯一性标识符。b.PK是storageB的唯一性标识符=======
    4:相应的持久化存储文件的表现形式。(以关系数据库为存储介质时)
    用例:
     
     TabGirl(GirlId ,Name,Age,Phone) 
    <-----Wife(GirlId,BoyId) ---->
     TabBoy(BoyId ,Name,Age,Phone)
     <其它类似的关系有:国家与宪法的关系>
     
     TabParent(ManId ,Name,Address,YearIncome,IdentityCardNum)
          <----ParentSons(ManId,ChildrenId)--->
     ChildRen(ChildrenId,birthDate)
    <基它类似的关系有:奴隶与奴隶主的关系>
     
    TabUser(UserId,UserName,RegisterTime)
         <---userRoles(UserId,RoleId)------->
    TabRole(RoleId,RoleName,CreatTime,ApplicationName)
    <其它类似的关系还有:订单与商品的关系>
     
    多表之间的关系我认为可以采用视图之类的东西来形成这样的三种基本关系.
    5:从本质上来讲,关系数据库中只存在两种东西。
       一个是由不可分的原子属性组成的行集。
       另一个不同行集之间的关系。
    一)面向对象的基本原则。
    1)抽象决定细节,细节依赖抽象。

     

    2)模块是可扩展的,但是不可以改动。
    3)接口隔离。
    二)优先考虑系统的行为。
    1)数据库是实现细节!应该尽可能的推迟考虑数据库。有太多的应用程序之所以和数据库绑定在一起而无法分离,就是因为一开始设计时就把数据库考虑在内。
    2)抽象的定义:本质部分的放大,无关紧要的部分去除。在项目的当前阶段数据库是无关紧要的;它只不过是一项用来存储和访问数据的技术细节而已。
    展开全文
  • 第二天CSS简介什么是csscss三种引入方式css选择器引入方式的css优先级三种基本选择器的优先级关系选择器css常用的属性css颜色的表示方法背景属性字体属性边框属性内间距外距盒子模型文本属性布局属性浮动定位 ...

    CSS简介

    什么是css

    重叠样式表
    主要是负责标签的样式 美化页面

    一个网页分三大部分
    结构层: 主要由html负责 负责页面的结构
    表现层: 主要由css负责 页面的展示样式 美化页面
    行为层: 主要由js负责 负责页面和用户的交互效果

    Css是单独的一种文件类型 后缀为.css的文件

    css三种引入方式

    行间样式
    给标签添加style属性 值就是你要设置的css样式
    嵌入式
    将css代码写在 head标签内的style标签内
    外链式
    在head标签内通过link标签的href属性引入外部css文件

    Css语法格式:
    在这里插入图片描述

    <head>
    	<meta charset="utf-8">
    	<title>css使用</title>
    	<style type="text/css">
    		div{
    			width: 200PX;
    			height: 200PX;
    			background: yellow;
    		}
    	</style>
       <!-- <link rel="stylesheet" type="text/css" href="./css/1.css"> -->
    </head>
    
    <body>
    <div style="width: 100px;height: 100px;background: green">行间样式</div>
    <div>内嵌式</div>
    <!-- <div>外链式</div> -->
    </body>
    
    
    
    css文件
    div{
    	width: 200PX;
    	height: 200PX;
    	background: pink;
    }
    
    
    
    
    

    css选择器

    用来选取要设置的html标签

    1、标签选择器:通过标签名来查找元素
    选择符: 标签名
    影响范围最大 一般很少单独使用

    2、Id选择器:通过标签的id属性的值来获取元素
    选择符 #
    Id属性的值不能重复 ,一个id值在一个html文件中只能出现一次
    影响范围最小

    3、Class选择器:通过元素的class属性的值 来获取元素
    选择符: .
    一个标签的class属性可以有多个值,
    一个class属性的值可以被多个标签去使用
    影响范围介于id选择器和标签选择器之间

    引入方式的css优先级

    嵌入式
    外链式
    行间样式
    问题:当使用以上三种方式对一个标签设置样式时,思考到底哪个生效
    注:谁靠近元素越近 谁生效

    三种基本选择器的优先级

    标签选择器<类选择器<id选择器
    谁的影响范围大谁的优先级就小

    关系选择器

    1、后代选择器:选择符 空格
    选择指定标签内的 所有符合要求的标签 忽略层级关系

    2、子元素选择器:选择符>
    只获取指定元素的直接子元素

    3、并集选择器(组选择器/并列选择器):
    选择符 ,
    一次性给多个元素设置相同的样式

    4、伪类选择器::hover
    当鼠标移入指定元素时,修改当前元素的样式

    5、伪元素选择器:
    After 在指定元素内部的后面插入指定的内容
    Before 在指定元素的内部前面插入指定的内容
    以上两个选择器要配合content使用

    /* 后代选择器
    				设置.wrap内的所有p标签的样式
    
    		 */
    		.wrap p{
    			color:red;
    		}
    		/*子选择器
    			设置.wrop的子元素p样式
    		*/
            .wrap>p{
            	color:blue;
            }
            /*并集选择器*/
            .wrap>span,span{
            	color:pink;
            }
    /*伪类选择器 hover*/
            .box:hover{
            	width: 200px;
            	height: 200px;
            	background: pink;
            	color:green;
            }
            /*伪元素选择器*/
            .box:before{
            	content:"你";
            }
            .box:after{
            	content:"?";
            }
    <div class="wrap">
    			<div class="inner">
    				<p>我是inner里的p</p>
    			</div>
    			<p>我是wrap里的p</p>
    			<span>我是span</span>
    		</div>
    
    		<p>我是最外层的p</p>
    
    		<span>我是外部span</span>
    
    

    css常用的属性

    css颜色的表示方法

    A.直接使用单词来表示

    B.十六进制表示方式
    取值范围0-9A-f
    一共有六位十六进制数 来表示最终显示的颜色
    没两个数为一组 分别代表 红 绿 蓝

    C.十进制数表示方式
    由三个进制的数字 来表示最终的显示颜色
    0-255
    rgb(红色,绿色,蓝色)

    D.带透明度的颜色表示
    rgba(红色,绿色,蓝色,透明度)
    0-1之间的小数

    .box{
            	width:100px;
            	height: 100px;
            	/*使用单词来表示*/
            	/*background: red;*/
            	/*十六进制表示方式*/
            	/*background: #ff0000;
            	background: #00ff00;
            	background: #0000ff;*/
            	/*简写*/
            	/*background-color: #00f;*/
            	/*十进制表示*/
            	/*background-color: rgb(255,0,0);*/
            	/*带透明度*/
            	background-color: rgba(255,0,0,0.2);
    
            }
    
    		<div class="box">
    			上来试试
    		</div>
    
    

    背景属性

    background-color
    background-image
    background-position
    background-repeat
    background-size

             style type="text/css">
    		.box{
    			width: 50px;
    			height: 50px;
    			border: 1px solid red;
    			background-image: url(../img/0.jpg);
    			background-repeat: no-repeat;
    			background-position: -3px 6px;
    			/*图片占框的百分比,size不能简写*/
    			/*background-size: 100% 100%*/
    			/*简写*/
    			/*background:url(../img/0.jpg) no-repeat -3px 6px;*/
    			
    			}
    		.box:hover{
    			background-position: -348px -274px;
    			}
    
    	</style>
    <body>
    	<div class="box"></div>
    </body>
    

    字体属性

    1、color 颜色

    2、font-size 大小
    浏览器的默认字体大小是16px
    谷歌浏览器最小只能设置到12px

    3、font-weight 是否加粗
    bold/800

    4、font-family 字体类型
    如果用户电脑没有指定的字体会使用默认字体显示
    font-family:宋体,楷体; 如果第一个字体不存在会去使用第二个字体
    font-family: ‘Angsana New’; 如果字体的名字中有空格需要加引号

    5、font-style 是否倾斜
    nomal 不倾斜
    italic 倾斜

    <head>
    	<meta charset="utf-8">
    	<title>字体</title>
    	<style type="text/css">
    		/* 默认字体大小 16px*/
    		.box{
    			color:red;
    			font-size:50px;
    			font-weight:bold;
    			/*如果电脑没有指定的字体会使用默认字体显示
    			  如果第一个字体不存在会使用第二个
    			  如果字体名字间有空格需要加空格	
    			*/
    			font-family:楷体,宋体;
    			/*font-family: "Angsanna New";*/
    			font-style: italic;
    		}
    		em{
    			font-style: normal;
    		}
    	</style>
    </head>
    <body>
    	<div class="box">大海啊</div>
    	<em>我是斜体</em>
    </body>
    

    边框属性

    border-top:
    border-left:
    border-right:
    border-bottom:
    边框的颜色 边框的样式 边框粗细
    边框样式:solid实线 dotted点状线 dashed虚线

    <head>
    	<meta charset="utf-8">
    	<title>边框</title>
    	<style type="text/css">
    		.box{
    			width: 200px;
    			height: 200px;
    			/*简写 设置四边边框的粗细 设置边框的样式 设置边框的颜色*/
    			/*border:1px solid red;*/
    			border-top:1px solid red;
    			border-bottom:1px solid red;
    			border-left:1px dashed red;
    			border-right:1px dotted red;
    		}
    	</style>
    </head>
    <body>
    	<div class="box"></div>
    </body>
    

    内间距

    设置元素边界距离内部内容之间的间距
    会改变元素的实际大小
    padding-top:20px;
    padding-left:20px;
    padding-right:20px;
    padding-bottom:20px;

    简写
    如果只给一个值代表四边的间距
    如果是四个值 从上开始 依次顺时针旋转 每个值代表一个边
    如果三个值 第一个值是上 第二个值是左右 第三个值是下
    如果是两个值 第一个值是上下 第二个值是左右的

    padding:50px;
    padding:10px 20px 30px 40px;
    padding:10px 20px 30px;
    padding:20px 50px;
    
    <head>
    	<meta charset="utf-8">
    	<title>内间距,外间距</title>
    	<style type="text/css">
    		.box{
    			width: 100px;
    			height: 100px;
    			background:#0f0;
    		/*	padding-top:20px;
    			padding-left:20px;
    			padding-right: 20px;
    			padding-bottom: 20px; */
    			/*简写*
    				如果是一个值代表四边的间距
    				如果是四个值从上开始一次顺时针旋转 每个值代表一边
    				如果是三个值 第一个值是是上边第二个是左右第三个是下
    				如果是两个值 第一个是上下,第二个是左右
    			/
    		/*	padding:50px;
    			padding:10px 20px 30px 40px;
    			padding:10px 20px 30px;*/
    			padding:20px 50px;
    		}
    		/*外间距 外补白 margin*/
    		.item2,.item3{
    			width: 200px;
    			height:200px;
    		}
    		.item2{
    			border:1px solid red;
    			margin-top:20px;
    			margin-bottom:20px;
    			margin-left: 20px;
    			margin-right:20px;
    		}
    		.item3{
    			border: 1px solid blue;
    		}
    		/*设置item4 水平居中*/
    		.item4{
    			width: 200px;
    			height: 200px;
    			border:1px solid red;
    
    			margin:0 auto;
    		}
    		/*margin 为负值 主要应用于边框的合并*/
    		.item5,.item6{
    			width:200px;
    			height:200px;
    			border:5px solid red;
    		}
    		.item6{
    			margin-top:-5px;
    		}
    
    	</style>
    </head>
    <body>
    	<div class="box">1</div>
    	<div class="item2">2</div>
    	<div class="item3">3</div>
    
    	<div class="item4">4</div>
    
    	<div class="item5">5</div>
    	<div class="item6">6</div>
    </body>
    

    外间距

    设置元素距离四周外部元素之间的间距
    margin:
    margin的使用和padding是一样的可以单独指定方向设置
    还可以不指定方向一次设置多个值

    一般情况下
    我们用margin来去实现块元素的 水平居中
    margin 为负值 主要应用于边框的合并

    <head>
    	<meta charset="utf-8">
    	<title>内间距,外间距</title>
    	<style type="text/css">
    		.box{
    			width: 100px;
    			height: 100px;
    			background:#0f0;
    		/*	padding-top:20px;
    			padding-left:20px;
    			padding-right: 20px;
    			padding-bottom: 20px; */
    			/*简写*
    				如果是一个值代表四边的间距
    				如果是四个值从上开始一次顺时针旋转 每个值代表一边
    				如果是三个值 第一个值是是上边第二个是左右第三个是下
    				如果是两个值 第一个是上下,第二个是左右
    			/
    		/*	padding:50px;
    			padding:10px 20px 30px 40px;
    			padding:10px 20px 30px;*/
    			padding:20px 50px;
    		}
    		/*外间距 外补白 margin*/
    		.item2,.item3{
    			width: 200px;
    			height:200px;
    		}
    		.item2{
    			border:1px solid red;
    			margin-top:20px;
    			margin-bottom:20px;
    			margin-left: 20px;
    			margin-right:20px;
    		}
    		.item3{
    			border: 1px solid blue;
    		}
    		/*设置item4 水平居中*/
    		.item4{
    			width: 200px;
    			height: 200px;
    			border:1px solid red;
    
    			margin:0 auto;
    		}
    		/*margin 为负值 主要应用于边框的合并*/
    		.item5,.item6{
    			width:200px;
    			height:200px;
    			border:5px solid red;
    		}
    		.item6{
    			margin-top:-5px;
    		}
    
    	</style>
    </head>
    <body>
    	<div class="box">1</div>
    	<div class="item2">2</div>
    	<div class="item3">3</div>
    
    	<div class="item4">4</div>
    
    	<div class="item5">5</div>
    	<div class="item6">6</div>
    </body>
    

    盒子模型

    使用现实中的盒子来描述页面中的元素的 属性
    盒子的实际宽度=width+左border+右border+左padding+右padding
    盒子的实际高度=height+上border+下border+上padding+下padding

    box-sizing:border-box 让盒子大小=css样式的实际大小

    <head>
    	<meta charset="utf-8">
    	<title>盒子模型</title>
    	<style type="text/css">
    		/* 将外间距,内间距初始值全部设为0*/
    		*{margin:0;padding:0;}	
    		.box1{
    			width: 100px;
    			height:100px;
    			background:yellow;
    		}
    		.box2{
    			width:100px;
    			height:100px;
    			background:yellow;
    			border:20px solid #000;
    			/*让盒子的实际大小=css设置的实际大小*/
    			box-sizing:border-box;
    		}
    		.box3{
    			width:100px;
    			height:100px;
    			background:yellow;
    			border:20px solid #000;
    			padding:20px;
    			box-sizing:border-box;
    		}
    		.box4{
    			/*要求元素大小为100*100
    					边框20
    					padding20
    			*/
    			width:20px;
    			height:20px;
    			background:yellow;
    			border:20px solid #000;
    			padding:20px;
    		}
    
    	</style>
    </head>
    <body>
    	<div class="box1">1</div>
    	<div class="box2">2</div>
    	<div class="box3">3</div>
    	<div class="box4">4</div>
    </body>
    

    文本属性

    text-indent: 设置首行缩进
    text-align: 文本的水平对其方式
    text-decoration: 设置下划线
    line-height: 行高
    设置行于行之间的间距
    一般用于单行文本的垂直居中

    vertical-align:
    让图片中间或顶部和文本对齐
    vertical-align:middle
    vertical-align: top

    <style type="text/css">
    		*{margin:0;padding:0;}
    		.item{
    			width:400px;
    			height:400px;
    			border:1px solid red;
    
    			/*设置首行缩进*/
    			text-indent:32px;
    			text-align:center;
    
    			/*设置行高*/
    			/*line-height:30px;*/
    		}
    		.item1{
    			width:400px;
    			height:400px;
    			border:1px solid red;
    
    			/*文本水平对齐方式 一般用于单行文本*/
    			text-align:center;
    
    			/*添加下划线*/
    			/*text-decoration:underline;*/
    			/*上划线*/
    			/*text-decoration:overline;*/
    			/*中划线 删除线*/
    			/*text-decoration:line-through;*/
    
    			/*设置垂直居中 一般以实际height值设*/
    			line-height:400px;
    
    		}
    
    		a{
    			/*去除下划线*/
    			text-decoration:none;
    		}
    		.item2 img{
    			/*让图片中间或顶部和文本对齐*/
    			/*vertical-align:middle;*/
    			/*vertical-align: top;*/
    
    		}
    	</style>
    </head>
    <body>
    		<div class="item">
    		<span>帝高阳之苗裔兮,朕皇考曰伯庸。</span>
    		
    		摄提贞于孟陬兮,惟庚寅吾以降。
    		皇览揆余初度兮,肇锡余以嘉名:
    		名余曰正则兮,字余曰灵均。
    		纷吾既有此内美兮,又重之以修能。
    		扈江离与辟芷兮,纫秋兰以为佩。
    		汩余若将不及兮,恐年岁之不吾与。
    		朝搴阰之木兰兮,夕揽洲之宿莽。
    		日月忽其不淹兮,春与秋其代序。
    		
    	</div>
    
    	<div class="item1">
    		帝高阳之苗裔兮
    	</div>
    
    	<a href="http://www.baidu.com">百度</a>
    
    	<div class="item2">
    		摄提贞于孟陬兮,惟庚寅吾以降。<img  src="https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=2491562693,485434067&fm=26&gp=0.jpg" alt="">
    	</div>
    
    

    布局属性

    1、块元素: 独占一行 宽度默认是父元素的100% 默认高度由内容决定
    支持所有的样式
    就算设置了宽度也会独占一行

    2、行内元素: 不会独占一行 元素排在一行显示
    默认宽度是0 高度由内容决定
    不支持宽高属性和margin的上下属性

    3、行内快元素 不会独占一行 支持所有的样式 默认宽度0 默认高度由内容决定

    4、display: 规定元素以哪种元素类型显示
    none 隐藏
    block 以块元素显示
    inline-block 以行内快元素显示 此属性已经被废弃 但是还能用
    inline: 以行内元素显示

    补充visibility
    display:none 隐藏 隐藏好不在占据文档位置
    visibility:hidden 隐藏 元素隐藏但是还是会占据文档位置

    注:一般情况下 我们都是将行内元素转变成块元素或者行内快,不会将块元素转成行内元素

    5、overflow:
    visible: 默认值
    hidden: 超出部分隐藏
    scroll: 添加滚动条
    auto: 自检测并添加滚动条

    清除当前元素内部对外部元素的影响

    <style type="text/css">
    		*{margin:0;padding:0;}
    		.item{
    			width:100px;
    			height:100px;
    			border:1px solid red;
    			/*超出部分隐藏*/
    			/*overflow:hidden;*/
    			/*添加滚动条*/
    			/*overflow:scroll;*/
    			/*自动检测内容是否超出 如果超出自动添加滚动条*/
    			overflow:auto;
    
    		}
    	</style>
    </head>
    <body>
    	<div class="item">
    		<img src="../img/3.jpg" alt="">
    	</div>
    

    浮动

    float:只有left和right

    文档流:元素以从上到下,从左向右的排列方式 这种排列规则就是文档流

    A.浮动会脱离文档流 会将后面没有浮动的元素覆盖
    浮动不会覆盖文字

    B.浮动只有两个方向,左浮动或者右浮动

    C.当浮动元素碰到父元素的边界时会停止浮动,碰到前面有浮动元素也会停止浮动,并排在一排显示 如果浮动元素的宽度超过父元素的宽度 会自动换行

    D.如果前面有未浮动的元素 会另起一行进行浮动

    浮动遇到的问题:当父元素没有设置固定高度时,子元素全部浮动,会导致父元素高度无法撑开

    解决办法:
    1.给父元素设置固定高度
    2.给父元素添加overflow:hidden
    3.给父元素的最后添加一个空标签设置clear:both 让该元素不受浮动影响
    这种方式会添加无意义的空标签 影响页面结构 所以不推荐
    4.使用伪元素选择
    给父元素添加伪类 after

    <style type="text/css">
    		.wrap{
    			width:300px;
    			border:2px solid red;
    			/*清除浮动对外部元素的影响*/
    			/*overflow:hidden;*/
    
    		}
    		/*清除浮动对外部元素的影响*/
    		.wrap:after{
    		/*	content:'';
    			display: table;
    			clear:both;*/
    			content:'';
    			display:block;
    			clear:both;
    
    		}
    		.item1{
    			width:100px;
    			height:100px;
    			background:green;
    			/*添加左浮动*/
    			float:left;
    			/*添加右浮动*/
    			/*float:right;*/
    		}
    
    		.item2{
    			width:105px;
    			height:105px;
    			background:blue;
    			/*左浮动*/
    			float:left;
    		}
    		.item3{
    			width:100px;
    			height:100px;
    			background:#f39;
    			float:left;
    
    
    		}
    		.clear{
    			/*width:100px;
    			height:100px;*/
    			/*background:yellow;*/
    
    			/*清除浮动
    				clear:
    					both   清除两边元素浮动产生的影响
    					left   清除前面元素左浮动 带来的影响
    					right  清除前面元素右浮动带来的影响
    			*/
    			clear:both;
    
    
    		}
    		
    	</style>
    
    </head>
    <body>
    	
    	<div class="wrap">
    		<div class="item1">1</div>
    		<div class="item2">2</div>
    		<div class="item3">3</div>
    		<!-- <div class="clear"></div> -->
    	</div>
    

    定位

    position
    1、相对定位 relative
    相对于元素原来的位置进行偏移 参考点是原来位置的起始点
    不会脱离文档流

    2、绝对定位 absolute
    会脱离文档流 默认以body的00点位参考点进行位移
    如果父元素有定位属性,绝对定位就以父元素的00点位参考点进行偏移
    如果父元素没有定位属性,就找爷爷元素,以此向上找,找到body为止

    3、固定定位(绑定定位)fixed
    脱离文档流
    相对于浏览器窗口进行定位

    4、定位的层级:
    只能给有定位属性的元素设置
    z-index:
    z-index:1
    z-index:2
    数字越大越在上层

    <title>相对定位</title>
    	<style type="text/css">
    		*{margin:0;padding:0;}
    		.wrap{
    			width:600px;
    			height:600px;
    			border:1px solid red;
    			margin-left:100px;
    		}
    
    		.item1{
    			width:200px;
    			height:200px;
    			background:#f33;
    
    			/*相对定位*/
    			position:relative;
    			top:200px;
    			left:200px;
    		}
    		.item2{
    			width:200px;
    			height:210px;
    			background: blue;
    
    		}
    	</style>
    </head>
    <body>
    	<div class="wrap">
    		<div class="item1"></div>
    	    <div class="item2"></div>
        </div>
    
    
    <title>绝对定位</title>
    	<style type="text/css">
    		*{margin:0;padding:0;}
    		.wrap{
    			width:600px;
    			height:600px;
    			border:1px solid red;
    			margin-left:200px;
    
    			position:relative;
    		}
    
    		.item1{
    			width:200px;
    			height:200px;
    			background:#f33;
    			/*绝对定位*/
    			position:absolute;
    			top:200px;
    			left:200px;
    		}
    		.item2{
    			width:200px;
    			height:200px;
    			background: blue;
    		}
    	</style>
    </head>
    <body>
    	<div class="wrap">
    		<div class="item1"></div>
    	    <div class="item2"></div>
        </div>
    
    
    
    
    <title>固定定位</title>
    	<style type="text/css">
    		*{margin:0;padding:0;}
    		body{
    			height:2000px;
    		}
    		.top{
    			width:100px;
    			height:50px;
    			background:green;
    			text-align:center;
    			line-height:50px;
    
    			/*国定定位*/
    			position:fixed;
    			right:20px;
    			bottom:20px;
    		}
    	</style>
    <div class="top">返回顶部</div>
    
    
    展开全文
  • 交叉表是一种常用的分类汇总表格,用于频数分布统计,主要价值在于描述了变量间关系的深刻含义。虽然两个(或以上)变量可以分类的或数量的,但是以都分类的情形最为常见。假设我们有两个变量,性别(男性或女性)和...

    本文需要用到的Python库:

    Pandas

    Seaborn

    本文纲要:

    一、什么是交叉表?

    二、例子中用到的数据

    三、用Pandas构建交叉表

    四、交叉表可视化

    一、什么是交叉表?

    交叉表是一种常用的分类汇总表格,用于频数分布统计,主要价值在于描述了变量间关系的深刻含义。虽然两个(或以上)变量可以是分类的或数量的,但是以都是分类的情形最为常见。

    假设我们有两个变量,性别(男性或女性)和手性(右或左手)。 进一步假设,从非常大的人群中随机抽取100个人,作为对手性的性别差异研究的一部分。 可以创建一个交叉表来显示男性和右撇子,男性和左撇子,女性和右撇子以及女性和左撇子的个人数量。 这样的交叉表如下所示。

    男性,女性以及右撇子和左撇子个体的数量称为边际总数。总计(即交叉表中所代表的个人总数)是右下角的数字。

    二、例子中用到的数据

    例子中用到的数据来自http://Kaggle.com,是一个关于facebook的真实和虚假账号的数据集,包含了889个账户真实与否信息、好友数、教育情况、性别、等信息。数据集里有一个缺失值,进一步处理之前,先把缺失值去掉。数据集链接​www.kaggle.com

    import pandas as pd

    df = pd.read_csv('facebookac.csv')

    dr = df.dropna()

    df.columns

    #Index(['Status', 'No Friend', 'education', 'about me', 'family', 'gender',

    'relationship', 'phototag*', 'photopost*', 'video', 'checkin', 'sport',

    'player', 'music', 'film', 'series', 'book', 'game', 'restaurant',

    'like', 'group', 'note', 'post shared/post posted rate'],

    dtype='object')

    我们发现有的账户没有显示情感关系状态,因此那一行显示的是“ ”(空格)。为了不引起混淆,我们把这些空格改成“not available”。

    df = df.replace(' ', 'not available')

    比如我们可以账户真实与否和情感关系状态的交叉频数。账户真实与否是表格中的“Status”列,情感关系状态是表格中的“relationship”列。

    三、用Pandas构建交叉表

    1、基本的pandas方法

    Pandas的crosstab()方法(官方文档在此)能够快速构建交叉表,并可以通过参数加以个性化的设置。其中,第一个参数将构成交叉表的行,第二个参数将构成交叉表的列。通过这个快捷的方法,我们能看到真实和虚假账户中不同情感关系状态的频数,非常清晰明了。

    pd.crosstab(df['relationship'], df['Status'])

    pandas的DataFrame中的另外两个用于数据汇总转换的方法——groupby()、pivot_table()——也分别都可以实现这个效果,不过会麻烦一些。DataFrame.grouby()官方文档在此,DataFrame.pivot_table()官方文档在此。

    df.groupby(['relationship','Status'])['relationship'].count().unstack()

    df.pivot_table(values='education', index='relationship', columns='Status', aggfunc=len)

    可以看到,用corsstab()一句就解决了,实乃交叉表构建神器。

    2.crosstab()重要参数

    在交叉表中,我们常常需要统计边际总数(各行和各列的总和)。当然我们可以用sum()先算出各行、各列的和再用cancat()合并到交叉表中,不过这样实在太麻烦了。Crosstab()的参数margins可以帮我们“一键解决”,还可以通过margins_name设置总计行(列)的名称(默认名称是“All”)。

    pd.crosstab(df['relationship'], df['Status'], margins=True, margins_name='Total')

    在实际应用中,我们常常需要统计交叉表中各项的相对频率(即所占百分比)。一开始,我总是繁琐地先用sum()算出总和,然后用div()来求出相对相对频率。后来发现可以在crosstab()中,直接通过参数normalize设置,方便多了。

    pd.crosstab(df['relationship'], df['Status'], normalize=True)

    如果需要计算的是各项在所在行(列)的相对频数,normalize一样可以解决。normalize可以接受三种不同类型的参数,分别是{True, False}、{‘all’, ‘index’, ‘columns’}和 {0,1}。其中“index”或0表示按行统计(每行总和都为1),“columns”或“1”表示按列统计(每列总和都为1)。

    pd.crosstab(df['relationship'], df['Status'], normalize=0)

    pd.crosstab(df['relationship'], df['Status'], normalize=1)

    3. 分层交叉表

    crosstab()的参数index和columns可以接受列表传入,构建分层交叉表。比如,我们在交叉表中再加入性别(表格中的“gender”列)信息,并按列计算相对频率,看看在真实和虚假账户中,不同的性别和情感关系状态和是怎么分布的。这个交叉表中,每一列的总和为1。

    dfv = pd.crosstab([df['gender'], df['relationship']], df['Status'],normalize=1)

    dfv

    四、交叉表可视化

    看到上面的这个交叉表,大家心里可能会默默算一下哪些类型占比高,哪些类型占比低。如果数据多了,就会很难有直观感受。好在,我们有热图。Seaborn库中的heatmap()能快速生成热图,官方文档在此。

    import seaborn as sns

    sns.heatmap(dfv, cmap='YlOrRd', annot=True)

    cmap='YlOrRd'是把颜色设置为:数值从低到高,颜色依次是黄色、橙色、红色。annot=True是指在热图中保留数值。可以看到,返回的热图中,每一列的把两层分组的索引值标注了出来,非常清晰。在虚假账户中,最多的是“单身女性”,其次是“单身男性”,其他的组合极少甚至没有。而真实账户中,最多的是“单身男性”,并且在各种组合中都有分布。

    交叉表数据量大的时候,即使热图也会让人看不过来。这时可以通过参数mask来筛选热图中显示的数据,不符合条件的就不会显示了。这样,我们就可以更集中地关注特定的数据。比如,我们只关注占比超过10%的类型,dfv<0.1可以把小于0.1的值过滤掉。

    sns.heatmap(dfv, cmap='YlOrRd', annot=True, mask=dfv<0.1)

    参考文献:

    商务与经济统计(原书第13版). 机械工业出版社. 2018:33-34

    展开全文
  • MYSQL常用命令大全

    2011-05-30 13:31:24
    MySql的用户管理通过 User来实现的,添加新用户常用的方法有两个,一在User插入相应的数据行,同时设置相应的权限;二通过GRANT命令创建具有某种权限的用户。其中GRANT的常用用法如下: grant all on mydb...
  • 3.4.2 实体间关系 76 3.4.3 识别属性和域 82 3.5 识别业务规则和业务过程 90 3.5.1 识别业务规则 90 3.5.2 识别基础业务过程 92 3.6 完成概念模型 93 3.6.1 识别明显、额外数据需求 94 3.6.2 和客户一起...
  • catalog和schema区别

    2019-12-10 15:06:26
    直接上图,直观一点: 什么是catalog 从概念上说,一个catalog包含多个schema,一个schema下...一般来说,schema指数据库表的组织和定义,定义了、字段以及和字段间的关系。可以理解为表的命名空间。 推荐下...

    直接上图,直观一点:
    在这里插入图片描述

    什么是catalog

    从概念上说,一个catalog包含多个schema,一个schema下可以包含多个数据库对象(表,视图,字段),catalog可以理解为数据库实例的元数据集合。

    常用数据库对catalog和schema的支持如下:
    在这里插入图片描述

    什么是schema

    一般来说,schema是指数据库表的组织和定义,定义了表、字段以及表和字段间的关系。可以理解为表的命名空间。

    推荐下stack overflow上的优秀回答:
    What’s the difference between a catalog and a schema in a relational database?

    展开全文
  • 但不经意发现,这张图其实一张精简版,还有一些,只不过常用罢了,而且没怎么细化。 这次只谈Set集合,看一下,Set有什么猫腻! - HashSet:哈希表是通过使用称为散列法机制来存储信息,元素并没有...
  • 34、j2ee常用的设计模式?说明工厂模式。 Gof23种设计模式 工厂模式:Factory 网上答案: Java中的23种设计模式: Factory(工厂模式), Builder(建造模式), Factory Method(工厂方法模式), ...
  • 简单来说,向量空间模型就是希望把查询关键字和文档都表达成向量,然后利用向量之间的运算来进一步表达向量关系。比如,一个比较常用的运算就是计算查询关键字所对应的向量和文档所对应的向量之间的 “相关度”...
  • 格雷码与二进制转换

    万次阅读 多人点赞 2016-06-16 13:02:09
    一、什么是格雷码?格雷码,又叫循环二进制码或反射二进制码,...常用的二进制数与格雷码的转换关系如下: 二、二进制格雷码与自然二进制码的互换1、二进制码转换成二进制格雷码  二进制码转换成二进制格雷码,
  • assertion(断言)在软件开发中一种常用的调试方式,很多开发语言中都支持这种机制。在实现中,assertion就是在程序中的一条语句,它对一个boolean表达式进行检查,一个正确程序必须保证这个boolean表达式的值为...
  • 前端开发

    2015-04-24 09:44:05
    页面重构基础 包含了HTML以及CSS基本知识。 知识点 ...h1~h6区别是什么?ul、ol区别呢? 有用过dl、dt、dd这三个元素吗?其表达语义是什么? 如何实现定宽、自适应两列、三列布局? flo
  • ABAP面试大全

    2013-12-30 15:44:36
    2.3.5财务模块:财务模块开发中常用的表有哪些,简单举例说明: 12 2.3.6 PM 常用的TABLE 12 2.3.6 inner join 与 left-outer join的区别? 13 3. 权限相关 14 3.1 什么是权限对象(Authorization Objects)?在 ...
  • B2.7 如果一个函数是两个其他函数卷积,它DFT 与另两个函数DFT 是什么关系? 79 2.3.7 如何显示一幅图像离散傅里叶变换? 83 2.3.8 当图像旋转后其离散傅里叶变换将会怎么样? 84 2.3.9 当图像平移后其...
  • AVR,PIC 等常用的MCU 及其外围电路(如LCD,RAM,ROM,键盘,马 达,LED,AD/DA,部分SPI 器件,部分IIC 器件,...) 其实proteus 与 multisim 比较类似,只不过它可以仿真MCU!唯一的缺点,软件仿真精度有 限,...
  • 回调不算模式,它更多地处理对象间的相互调用关系。回调一般行为已经确定,而不确定调用者时常用。回调也就是把具体行为传递给调用者。因为模板和回调都将实际对象调用关系延迟,所以会让人有一种错觉...
  • 格雷码与二进制之间转换及VHDL实现

    千次阅读 2019-02-11 17:45:58
    一、什么是格雷码? 格雷码,又叫循环二进制码或反射二进制码,格雷码我们在工程中...常用的二进制数与格雷码的转换关系如下: 十进制数 自然二进制数 格雷码 十进制数 自然二进制数 格雷码 ...
  • 7.5.2 学习

    2021-02-03 09:42:53
    若网络结构已经知道,则属性间的依赖关系已经知道,则贝叶斯学习过程相对简单,只需要对训练样本进行“计数”,估计处每个结点条件概率即可以了,但在现实应用中我们往往并不知道网络结构。于是,贝叶斯学习...
  • 8.1.1 什么是面向对象程序设计 8.1.2 面向对象程序设计特点 8.1.3 类和对象作用 8.1.4 面向对象软件开发 8.2 类声明和对象定义 8.2.1 类和对象的关系 8.2.2 声明类类型 8.2.3 定义对象方法 8.2.4 类和...
  • TD-IDF

    2020-05-15 14:39:38
    什么是 TF-IDF 算法? 简单来说,向量空间模型就是希望把查询关键字和文档都表达成向量,然后利用向量之间的运算来进一步表达向量关系。比如,一个比较常用的运算就是计算查询关键字所对应的向量和文档所对应的...
  • 转载:格雷码

    2018-10-02 16:26:48
    一、什么是格雷码? 格雷码,又叫循环二进制码或反射二进制码,格雷码...常用的二进制数与格雷码的转换关系如下: 二、二进制格雷码与自然二进制码的互换 1、二进制码转换成二进制格雷码  二进制码转换成...
  • 3.1.5 常用的Linux命令 3.1.6 C中变量的存储类型有哪些? 3.1.7 动态规划的本质 3.1.8 实践中如何优化MySQL? 3.1.9 什么情况下设置了索引但无法使用? 3.2.0 SQL语句的优化 3.2.1 数据库索引的底层实现原理和...
  • 我们为什么要讲电流,因为PCB设计时,每条线宽度不是随便设要根据原理图里元件节点间的电流大小来确定(请百度《PCB设计铜铂厚度、线宽和电流关系表》)。电流大小、电流流向要搞清楚,做板才恰到好处。...
  • (15) 在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能阶段(D) 注:即第一个阶段 A. 概要设计 B. 详细设计 C. 可行性分析 D. 需求分析 (16) 数据流图用于抽象描述一个软件逻辑模型,数据...

空空如也

空空如也

1 2 3 4 5 6
收藏数 116
精华内容 46
关键字:

常用的表间关系是什么