精华内容
下载资源
问答
  • 这些成功的项目管理案例可以实实在在地告诉我们,项目应该如何管理,什么样的项目管理是卓越的,这对提高我国的项目管理水平具有积极的指导意义。, 我们希望《项目管理成功案例精选》能为本同行业、不同管理层次、...
  • 网页设计案例 马拉松宣传网页设计

    千次阅读 多人点赞 2020-02-02 23:02:59
    囊括了主页设计,联系方式页面设计, 旋转唱片音乐页面,图片库页面,幻灯片设计,表单页面等等,同时布局方法具有一定的指导意义,最后提供了源码下载。 资源结构 页面结构 导航栏设计 幻灯片 网页内部导航 图片库...

    博客简介

    本篇博客介绍一个典型而有效的网页设计案例,这个案例用到了HTML,HTML5,CSS,CSS3,JavaScript。囊括了主页设计,联系方式页面设计, 旋转唱片音乐页面,图片库页面,幻灯片设计,表单页面等等,最后提供了源码下载。源码地址

    • 资源结构
    • 页面结构
    • 导航栏设计
    • 幻灯片
    • 网页内部导航
    • 图片库
    • 旋转唱片音乐页面
    • 增强表格
    • 联系方式页面
    • 压缩代码

    样例展示

    可能会有广告,请直接跳过看下面的代码

    网页设计——一张介绍马拉松keep训练的网页

    在这里插入图片描述

    资源结构

    整个图片,audio,video,HTML,以及CSS ,JavaScript文件的布局如下:
    在这里插入图片描述

    HTML的文件设置

    我们设想,整个网页由多个结构相似的页面组成,通过页面上部的导航栏链接起来。那么为什么不 给所有的页面设计一个模板 呢?设置好模板之后,每个页面只需要在当前模板的基础上稍加改动就能达到我们想要的效果。这样整个模板的重用性将会大大提高,也给后期的维护带来便利
    在这里插入图片描述
    在这里插入图片描述

    CSS文件设置

    令人眼花缭乱的CSS文件如何设置?关键在于你的文件布局是否有利于后期的维护,如果布局不合理,那么CSS的设置将会是一个让人头疼的问题,这里我们的处理办法是:按照布局layout,颜色color,排版typography归为三个文件进行处理,最后在basic.css文件中综合起来:

    @import url(color.css);
    @import url(layout.css);
    @import url(typography.css);
    

    在这里插入图片描述

    JScript文件设置

    关于JavaScript文件,我们一般是尽可能的少,尽可能的让JavaScript综合在一个文件里。为什么?因为一些jS函数是能够重用的,我们尽量将所有的JS放在一个文件中,方便函数重用。当然在特殊情况下我们可以创建格外的JS文件:
    在这里插入图片描述

    资源文件设置

    我们将照片,音频,视频分别放在images,audioes,videoes文件中:
    在这里插入图片描述

    页面结构

    关于页面结构,我们主要关注的是template模板页面的布局,这个布局很大程度上决定了我们整个网页的布局:

    <!DOCTYPE html>
    <html>
    <head>
    	<meta charset="utf-8">
    	<title>Are you ready for the marathon?</title>
    	<link rel="stylesheet" type="text/css" href="styles/basic.css">
    </head>
    <body id="about1">
    <header id="about2">
    	<img src="images/logo.jpg" width="640">
    	<nav>
    		<ul>
    			<li><a href="Home.html"> Home</a></li>
    			<li><a href="About.html"> About</a></li>
    			<li><a href="Photos.html"> Photos</a> </li>   
    			<li><a href="Music.html"> Music</a> </li>
    			<li><a href="Schedule.html"> Schedule</a> </li>
    			<li><a href="Contact.html"> Contact</a> </li>
    		</ul>
    	</nav>
    </header>
    <article>
    	<h1>Are you ready for the marathon?</h1>
    	<p>
    		There is no doubt that Kipchog is a hero, in fact we can be heroes too. If you want to run a marathon like him, you'll be ready for a marathon. 
    		But how to preper for a marathon?
    		It is difficult for a novice who has just entered the marathon to be fully prepared, so let's introduce it in a few simple ways. 
    	</p>
    	<h1>tips</h1>
    		<ul id="tip">
    			<li><a href="#equipment">equipment</a></li>
    			<li><a href="#training">training</a></li>
    			<li><a href="#food">food</a></li>
    		</ul>		
    
    	<h2>training</h2>
    	<p>Behind every top athlete is endless training. After basic preparation, you have to start hard training. 
    	Training is not an endless repetition of a process, but a scientific and effective arrangement of implementation time. </p>
    
    </article>
    	<script src="scriptes/global.js"></script>
    </body>
    </html>
    

    这里我们主要是按照如下布局来设置的:
    在这里插入图片描述
    在这里插入图片描述

    导航栏设计

    导航栏布局

    导航栏的设计一般是采用的无序列表,列表内部嵌套a标签超链接,我们给超链接设置样式,并且设置display样式为block来实现,同时设置a标签的内外边距可以有较好的展示效果:

    HTML:

    	<nav>
    		<ul>
    			<li><a href="Home.html"> Home</a></li>
    			<li><a href="About.html"> About</a></li>
    			<li><a href="Photos.html"> Photos</a> </li>   
    			<li><a href="Music.html"> Music</a> </li>
    			<li><a href="Schedule.html"> Schedule</a> </li>
    			<li><a href="Contact.html"> Contact</a> </li>
    		</ul>
    	</nav>
    

    CSS:

    header nav{
    	border:0.1em solid;
    	border-top: 0;
    	padding-left: 10%;
    	border-radius: 3px;
    }
    header nav ul{
    	width: 100%;
    	overflow: hidden;
    	border-left: 0.1em solid;
    }
    header nav li{
    	display: inline;
    	border-radius: 3px;
    }
    header nav li a{
    	display: block;
    	float: left;
    	padding: 0.7em 2em;
    	border-right: 0.1em solid;
    }
    header nav{
    	font-family: "Lucida Grande","Helvetica","Arial",sans-serif;
    }
    header nav a{
    	text-decoration: none;
    	font-weight: bold;
    }
    

    当前页面的导航栏选项点亮

    我们想要实现这样一个效果,我们点击链接,到达相应的链接网页。我们想要看到当前所在网页的导航栏选项处于高亮的状态。这样的效果很好实现,只需要获取当前网页的链接,历遍nav中的超链接,对比,如果相同则将其class属性设置为高亮的类here,用

    window.location.href.indexOf(url)
    

    获取当前网页,并且进行对比。

    function prepareSlidshow()
    {
    	if(!document.getElementById) return false;
    	if(!document.getElementsByTagName) return false;
    	var slideShow=document.createElement("div");
    	slideShow.setAttribute("id","slideShow");
    	
    	var preview=document.createElement("img");
    	preview.setAttribute("src","images/test.jpg");
    	preview.setAttribute("alt","Choose a picture");
    	preview.setAttribute("id","preview");
    	slideShow.appendChild(preview);
    
    	var gallery=document.getElementById("gallery");//找到插入位置
    	insertAfter(slideShow,gallery);
    
    	preview.style.position="absolute";
    	preview.style.left="0px";
    	preview.style.top="0px";
    	var move=0;
    	loop("preview",move,2000,20);
    }
    function hightLightPage()
    {
    	if(!document.getElementsByTagName) return false;
    	if(!document.getElementById) return false;
    	var header=document.getElementsByTagName("header");
    	if(header.length==0) return false;
    	var vans=header[0].getElementsByTagName("ul");
    	if(vans.length==0) return false;
    	var links=vans[0].getElementsByTagName("a");
    	for(var i=0;i<links.length;i++)
    	{
    		var url=links[i].getAttribute("href");
    		if(window.location.href.indexOf(url)!=-1)
    		{
    			links[i].className="here";
    		}
    	}
    }
    

    幻灯片设计

    和很多网站类似(比如说淘宝,京东)有一个幻灯片的展示区域,我们实现的思路有很多,可以直接用canvas画布设置动画来实现,也可以将几张图片拼接成一张横向的长图,然后设计一个loop函数来递归地移动这张图片,到达边界后又移回起点:

    function loop(id,move,time,movetime)//动画
    {
    	if(move<=-2000) move=0;//边界
    	else move-=400;
    	moveElement(id,move,0,movetime);
    	//loop(id,move,time,movetime);
    	var repeat="loop('"+id+"',"+move+","+time+","+movetime+")";
    	t=setTimeout(repeat,time);
    }
    function moveElement(elementId,final_x,final_y,interval)
    {
    	if(!document.getElementById) return false;
    	if(!document.getElementById(elementId)) return false;
    	var elem=document.getElementById(elementId);
    	var x=parseInt(elem.style.left);
    	var y=parseInt(elem.style.top);
    	if(elem.timer) clearTimeout(elem.timer);
    	if(x==final_x&&y==final_y) return true;//边界条件
    	var dis_x,dis_y;
    	dis_x=Math.ceil((final_x-x)/10);//向上取整
    	x+=dis_x;
    	//round向下取整
    	dis_y=Math.ceil((final_y-y)/10);//向上取整
    	y+=dis_y;
    	elem.style.left=x+"px";
    	elem.style.top=y+"px";
    	var repeat="moveElement('"+elementId+"',"+final_x+","+final_y+","+interval+")";
    	elem.timer=setTimeout(repeat,interval);//定时器设置,递归调用
    }
    

    在这里插入图片描述

    网页内部导航

    比如说CSDN博客的文章,右侧有一个内部导航栏,点击一个标题我们就能跳转到网页中的相应段落,网页内部导航是一种常见的导航形式,对于长篇幅的页面十分重要,如何实现?

    • 在网页内部设置一个超链接列表
    • 给每一个标题设置一个id
    • 将超链接列表的超链接href设置为相应的“”#”+id
    	<h1>tips</h1>
    		<ul id="tip">
    			<li><a href="#equipment">equipment</a></li>
    			<li><a href="#training">training</a></li>
    			<li><a href="#food">food</a></li>
    		</ul>		
    	<section id="equipment">
    		<h2>Equipment</h2>
    		<p>As the king of running shoes, Asics is undoubtedly the best choice.</p>
    	</section>
    
    	<section id="training">
    		<h2>training</h2>
    		<p>Behind every top athlete is endless training. After basic preparation</p>
    	</section>
    
    	<section id="food">
    		<h2>Food</h2>
    		<p>Take care of rest and recovery to avoid pain.</p>
    	</section>
    

    在这里插入图片描述
    section标签不是必要的,我们完全可以将id设置在h1内部.< section > 只是标签定义文档中的节(section、区段)。比如章节、页眉、页脚或文档中的其他部分。

    图片库

    可以将所有图片直接统一放在网页里,但是这样加载网页就会十分缓慢。我们也可以为每一张图片设计一个像网页,就不存在加载缓慢的问题,但是这对于设计人员来说是繁琐的,这个时候我们可以考虑创建一个图片库:
    把整个图片库的浏览链接集中放在图片库主页里,只在用户点击了这个主页的链接时才把相应的链接发送给他,图片库里阻断click的方法值得回味,这里我直接贴出代码,因为在前面我已经介绍过了,直接参考我之前的博客即可:

    function prepareGallery()
    {
    	if(!document.getElementsByTagName) return false;
    	if(!document.getElementById) return false;
    	if(!document.getElementById("photoGallery")) return false;
    	var gallery=document.getElementById("photoGallery");
    	var links=gallery.getElementsByTagName("a");
    	for(var i=0;i<links.length;i++)
    	{
    		links[i].onclick=function()
    		{
    			return !showPic(this);//调用showPic函数
    		}
    		links[i].onkeypress=links[i].onclick;
    	}                                                         
    }
    function showPic(element){
    	if(!document.getElementById("placeholder")) return false;
    	var source=element.getAttribute("href");//获取元素节点的src属性值
    	var placeholder=document.getElementById("placeholder");//查找placeholder元素节点
    	if(placeholder.nodeName!="IMG") return false;//nodeName总是返回大写字母
    	placeholder.setAttribute("src",source);//设置placeholder的src属性值为
    	if(document.getElementById("description"))
    	{
    		var description=document.getElementById("description");//获取元素
    		var text=element.getAttribute("title")?element.getAttribute("title"):"";
    		//查找成功则获取title,否则获取空串,这样不会因为无法访问title而导致图片也无法加载
    		if (description.firstChild.nodeType==3) description.firstChild.nodeValue=text;//当节点类型为3的时候,添加
    	}
    	return true;
    }
    function preparePlaceHolder()
    {
    	if(!document.createTextNode) return false;
    	if(!document.createElement) return false;
    	if(!document.getElementById) return false;
    	if(!document.getElementById("photoGallery")) return false;
    	var placeholder=document.createElement("img");
    	placeholder.setAttribute("id","placeholder");
    	placeholder.setAttribute("src","images/background6.jpg");
    	placeholder.setAttribute("alt","This is my photoGallery");
    	placeholder.setAttribute("height","400");
    	placeholder.setAttribute("width","629");
    	var description=document.createElement("p");
    	description.setAttribute("id","description");
    	var txt=document.createTextNode("Choose an image");
    	description.appendChild(txt);
    	var photoGallery=document.getElementById("photoGallery");
    	//photoGallery.parentNode.insertBefore(placeholder,photoGallery);
    	//photoGallery.parentNode.insertBefore(description,photoGallery);
    	insertAfter(placeholder,photoGallery);
    	insertAfter(description,placeholder);
    }
    

    在这里插入图片描述

    旋转唱片音乐页面

    • 用audio插入音频
    • 设置div插入照片,设置边框为圆形
    • 设置CSS动画
    • 设置监听,当点击播放时,设置div的class为animation2,点击暂停设置div的class为animation2
    • 更为详细的展示可以参见唱片旋转播放效果

    CSS 设置动画关键帧,设置两个class对应停止和永动旋转:

    .animation1{	
    	width: 200px;
    	height: 200px;
    	border:1px solid white;
    	border-radius: 100px;
    	overflow: hidden;
    	float: left;
    	animation:frame 6s  linear paused;
    }
    .animation2{	
    	width: 200px;
    	height: 200px;
    	border:1px solid white;
    	border-radius: 100px;
    	overflow: hidden;
    	float: left;
    	animation:frame 6s  linear infinite;
    }
    .animation1 img,.animation2 img{
    	width: 200px;
    	height: 200px;
    
    }
    @keyframes frame{
    	0% {transform:rotate(0deg); }
    	20%{transform: rotate(72deg);}
    	40%{transform: rotate(144deg);}
    	60%{transform: rotate(216deg);}
    	80%{transform: rotate(288deg);}
    	100%{transform: rotate(360deg);}
    }
    

    Jscript:

    function addLoadEvent(func)
    {
    	var oldonload=window.onload;
    	if(typeof window.onload!='function')//未被绑定
    	{
    		window.onload=func;
    	}
    	else
    	{
    		window.onload=function()//匿名函数添加
    		{
    			oldonload();
    			func();
    		}
    	}
    }
    //唱片的旋转
    function player(audio,pic)
    {
    	if(audio.paused)//当前状态
    	{
    		pic.setAttribute("class","animation1");
    	}
    	else
    	{
    		pic.setAttribute("class","animation2");
    	}
    }
    function playe_Pause()
    {
    	if(!document.getElementsByTagName) return false;
    	var audioes=document.getElementsByTagName("audio");
    	var pictures=document.getElementsByTagName('article')[0].getElementsByTagName("img");
    	if(!audioes||!pictures) return false;
    
    	audioes[0].addEventListener("pause",function(){
    		player(audioes[0],pictures[0].parentNode);
    	});
    	audioes[0].addEventListener("play",function(){
    		player(audioes[0],pictures[0].parentNode);
    	});			
    	audioes[1].addEventListener("pause",function(){
    		player(audioes[1],pictures[1].parentNode);
    	});
    	audioes[1].addEventListener("play",function(){
    		player(audioes[1],pictures[1].parentNode);
    	});		
    	audioes[2].addEventListener("pause",function(){
    		player(audioes[2],pictures[2].parentNode);
    	});
    	audioes[2].addEventListener("play",function(){
    		player(audioes[2],pictures[2].parentNode);
    	});	
    	audioes[3].addEventListener("pause",function(){
    		player(audioes[3],pictures[3].parentNode);
    	});
    	audioes[3].addEventListener("play",function(){
    		player(audioes[3],pictures[3].parentNode);
    	});		
    	audioes[4].addEventListener("pause",function(){
    		player(audioes[4],pictures[4].parentNode);
    	});
    	audioes[4].addEventListener("play",function(){
    		player(audioes[4],pictures[4].parentNode);
    	});	
    	audioes[5].addEventListener("pause",function(){
    		player(audioes[5],pictures[5].parentNode);
    	});
    	audioes[5].addEventListener("play",function(){
    		player(audioes[5],pictures[5].parentNode);
    	});		
    	audioes[6].addEventListener("pause",function(){
    		player(audioes[6],pictures[6].parentNode);
    	});
    	audioes[6].addEventListener("play",function(){
    		player(audioes[6],pictures[6].parentNode);
    	});				
    	
    }
    addLoadEvent(playe_Pause);
    

    在这里插入图片描述

    增强表格

    关于表单的增强,我们主要是设置表单的奇偶行的颜色以及鼠标悬停时的高光。完全可以采用CSS实现,但是这里我们采用的是JavaScript,可以给所有的表格都设置这样的样式:

    • 历遍表格的tr行,如果是奇数行更新className为’odd’
    • 历遍表格的tr行,如果是偶数行更新className为’even’
    • 历遍表格的tr行,设置监听,如果鼠标悬停,则先保存当前oldclass,更新为新的styleover。如果鼠标移出,则将oldclass设置回去。
    function tripeTables()
    {
    	if(!document.getElementsByTagName) return false;
    	var tables=document.getElementsByTagName("table");
    
    	for(var i=0;i<tables.length;i++)
    	{
    		var rows=tables[i].getElementsByTagName("tr");//取得所有列
    		for(var j=0;j<rows.length;j++)
    		{
    			if(j%2) rows[j].setAttribute("class",'odd');
    				else rows[j].setAttribute("class",'even')
    		}
    	}
    }
    function HightRows()
    {
    	if(!document.getElementsByTagName) return false;
    	var rows=document.getElementsByTagName("tr");
    	var oldClass;
    	for(var i=0;i<rows.length;i++)
    	{
    		rows[i].onmouseover=function()
    		{
    			oldClass=this.getAttribute("class");
    			this.setAttribute("class","styleover")
    		}
    		rows[i].onmouseout=function()
    		{
    			this.className=oldClass;
    		}
    	}
    }
    addLoadEvent(tripeTables);
    addLoadEvent(HightRows);
    

    在这里插入图片描述

    联系方式页面

    联系方式页面的设计时绝对必要的,为了让用户能够很方便的反馈,获取联系方式,我们可以用form表单完成,得益于HTML5中表单的新属性,给我们提供了很多便捷的标签。在开始设置之前,我们可以简单地用标签设置标记:

    创建标记

    • post输入框,输入Name信息
    • email输入框,输入联系邮件
    • textarea输入框,输入文本
    • submit提按钮,提交当前页面
    • label可以在点击name时获取焦点
    • placeholder占位符可以在文本框里显示对应的提示消息
    	<form method="post" action="submit.html">
    	<fieldset>
    		<p>
    			<label for="name">Name:</label>
    			<input type="post" id="name" name="name" placeholder="Your name" required="required">
    		</p>
    		<p>
    			<label for="email">Email:</label>
    			<input type="email" id="email" name="email" placeholder="Your email address" required="required"> 
    		</p>
    		<p>
    			<label for="message">Message:</label>
    			<textarea cols="45" rows="7" id="message" name="message" require="require" placeholder="Write your message here."></textarea>
    		</p>
    		<input  id="submit" type="submit" value="Send">
    	</fieldset>
    	</form>
    

    设置样式

    必要的CSS样式,设置如下

    label{
    	display: block;
    }
    fieldset{
    	border:0;
    }
    input{
    	height: 18px;
    	border-radius: 5px;
    	padding: 8px;
    	border:1px solid white;
    	line-height: 18px;
    }
    textarea{
    	border-radius: 5px;
    }
    #submit{
    	background-color: #9370DB;
    	font-weight: bold;
    	width: 65px;
    	height: 40px;
    	border-radius: 5px;
    	padding: 8px;
    	border:1px solid white;
    	line-height: 18px;
    }
    input:hover{
    	transform: scale(1.1);
    }
    

    在这里插入图片描述

    表单验证

    我们可以用JavaScript设置一个验证函数,进行简单的格式处理一般验证是否填入,邮件格式是否正确,我们完全可以设置两个函数来验证ifFilll和isEmail但是得益于:

    • 具有require属性的表格不能为空
    • email表单会自动检验是email格式

    HTML5的新标签帮我们更加完善地解决了这些问题,我们不需要过度的预处理,切记JScript脚本写得不好不如没有编写脚本验证

    在这里插入图片描述
    在这里插入图片描述

    提交表单

    关于表单的提交,此处设置了一个新的页面submit.html,当用户提交成功后页面就会自动跳转到submit页面,显示感谢信息:

    • < form method=“post” action=“submit.html” >设置form标签的action属性,提交表单后将会跳转到相应页面
    • 建立一个新的页面submit.html
    <!DOCTYPE html>
    <html>
    <head>
    	<meta charset="utf-8">
    	<title>Are you ready for the marathon?</title>
    	<link rel="stylesheet" type="text/css" href="styles/basic.css">
    </head>
    <body id="contact1">
    <header id="contact2">
    	<img src="images/logo.jpg" width="640">
    	<nav>
    		<ul>
    			<li><a href="Home.html"> Home</a></li>
    			<li><a href="About.html"> About</a></li>
    			<li><a href="Photos.html"> Photos</a> </li>   
    			<li><a href="Music.html"> Music</a> </li>
    			<li><a href="Schedule.html"> Schedule</a> </li>
    			<li><a href="Contact.html"> Contact</a> </li>
    		</ul>
    	</nav>
    </header>
    <article>
    	<h1>Thanks!</h1>
    	<br>
    	<br>
    	<h4>Thanks for contacting us.We will get back to you as soon as we can.</h4>
    	<br>
    	<br>
    	<br>
    	<br>
    </article>
    	<script src="scriptes/global.js"></script>
    </body>
    </html>
    

    在这里插入图片描述

    压缩代码

    关于代码压缩我们不再赘述,我们在谷歌的Closure Compiler上粘贴代码就能得到压缩的代码了,为了减少用户的网页加载时间,增强体验感,压缩代码不可忽略,十分重要。

    最后我们的网页就设置完成了,虽然说还有很多地方需要改进,比如说最后表单的提交可以用Ajax技术进行优化,界面设计可以更加完美,但是这张网页还是十分具有价值和启发意义,希望所有的Web爱好者,都能在Web开发这条路上越走越宽,越走越远,永远保持一颗积极进取,不断开拓的心。

    网页设计——一张介绍马拉松keep训练的网页

    展开全文
  •  本书由多位工作在数据库维护一线的工程师合著而成,包含了精心挑选的数据库诊断案例与性能优化实践经验,内容涉及oracle典型错误的分析和诊断,各种sql优化方法(包括调整索引,处理表碎片,优化分页查询,改善...
  • 本书是近年来国内出版的唯一一本与Java虚拟机相关的专著,也是唯一一本同时从核心理论和实际运用这两个角度去探讨Java虚拟机的著作,不仅理论分析得透彻,而且书中包含的典型案例和最佳实践也极具现实指导意义
  • 物资运输最优方案的求解过程中通常涉及大量的...以运输问题中一个典型案例为例阐述了基于Matlab的定量分析方法,解决了运输最优方案编制中求解这一大难题"可以广泛应用于物流配送领域"对实践工作具有较强的指导意义
  • 指导教师 完成日期 D2C电子商务模式的研究 以服装行业为例 摘 要本选题以服装行业为例主要探讨新兴发展的一种电子商务模式D2C电子商务模式主要阐述它的概念产生的背景以及对于电子商务和服装设计师的意义同时结合...
  • 10本Java书籍推荐

    2018-01-02 02:11:01
    也是唯一一本同时从核心理论和实际运用这两个角度去探讨Java虚拟机的著作,不仅理论分析得透彻,而且书中包含的典型案例和最佳实践也极具现实指导意义。下载地址:深入理解Java虚拟机2.Effective Java中文版 第2版...

    1.


    《深入理解Java虚拟机》是近年来国内出版的唯一一本与Java虚拟机相关的专著,也是唯一一本同时从核心理论和实际运用这两个角度去探讨Java虚拟机的著作,不仅理论分析得透彻,而且书中包含的典型案例和最佳实践也极具现实指导意义。

    下载地址:深入理解Java虚拟机


    2.


    Effective Java中文版 第2版介绍了在java编程中78条极具实用价值的经验规则,这些经验规则涵盖了大多数开发人员每天所面临的问题的解决方案。通过对java平台设计专家所使用的技术的全面描述,揭示了应该做什么,不应该做什么才能产生清晰、健壮和高效的代码。

    下载地址:Effective Java


    3.


    Java领域最有影响力和价值的著作之一,拥有20多年教学与研究经验的资深Java技术专家撰写(获Jolt大奖),与《Java编程思想》齐名,10余年全球畅销不衰,广受好评。第9版根据JavaSE7全面更新,同时修正了第8版中的不足,系统全面讲解Java语言的核心概念、语法、重要特性和开发方法,包含大量案例,实践性强。

    下载地址:Java核心技术 卷1


    4.


    《Java并发编程的艺术》内容涵盖Java并发编程机制的底层实现原理、Java内存模型、Java并发编程基础、Java中的锁、并发容器和框架、原子类、并发工具类、线程池、Executor框架等主题,每个主题都做了深入的讲解,同时通过实例介绍了如何应用这些技术。


    下载地址:Java并发编程的艺术


    5.


    《Java编程思想(第4版)》就是一本能够让Java程序员轻松面对这一挑战,并最终取得胜利的经典书籍。本书深入浅出、循序渐进地把我们领入Java的世界,让我们在不知不觉中就学会了用Java的思想去考虑问题、解决问题。本书不仅适合Java的初学者,更适合于有经验的Java程序员,这正是本书的魅力所在。但是,书中并没有涵盖Java所有的类、接口和方法,因此,如果你希望将它当作Java的字典来使用,那么显然就要失望了。

    下载地址:Java编程思想(第4版)


    6.


    本书详细介绍Java虚拟机的基本原理和优化诊断方法。其中重点介绍Java虚拟机的体系结构、常用的虚拟机参数、Java虚拟机的垃圾回收原理、算法以及目前虚拟机所支持的各种垃圾回收器及其区别、特点和使用方法。在实践和调优方面,重点介绍了Java的堆、栈分析方法,性能调优的一般思路、手段和工具。此外,还详细介绍了虚拟机内有关“锁”的实现以及优化方法。

    下载地址:实战Java虚拟机


    7.


    《Java性能调优指南》主要展示了如何在当今先进的多核硬件和复杂的操作系统环境下,系统且主动地提高Java性能。本书对Charlie Hunt 和Binu John的经典图书《Java Performance》进行延伸,提供了两个前所未有的、强大的Java平台创新细节:Garbage First(G1)垃圾收集器和HotSpot虚拟机服务代理。

    下载地址:Java性能调优指南


    8.


    《大型网站技术架构:核心原理与案例分析》通过梳理大型网站技术发展历程,剖析大型网站技术架构模式,深入讲述大型互联网架构设计的核心原理,并通过一组典型网站技术架构设计案例,为读者呈现一幅包括技术选型、架构设计、性能优化、Web安全、系统发布、运维监控等在内的大型网站开发全景视图。

    下载地址:大型网站技术架构:核心原理与案例分析


    9.


    本书为中高级 Java 程序员所写:他们熟练掌握这门语言,在完成大规模、复杂的数据处理任 务时,有充分利用 Java NIO 所提供之新特性的愿望和需求。在写作的过程中,假定您对 JDK 标 准类软件包、面向对象的设计技巧、继承等等都有充分了解。还假定您了解 I/O 在操作系统层面 的基本工作原理,知道什么是文件,什么是套接字,什么是虚拟内存,诸如此类。

    这是一本难度不高的书, 值得所有java程序员阅读, 尤其是需要编写网络层代码的程序员. 我曾多次在工作中使用NIO做网络通信, 本书给我帮助很大。

    下载地址:Java NIO

    10.


    本书的产品设计应用神经生物学、认知科学,以及学习理论,这使得这本书能够将这些知识深深地印在你的脑海里,不容易被遗忘。本书的编写方式采用引导式教学,不直接告诉你该怎么做,而是利用故事当作引子,带领读者思考并想办法解决问题。解决问题的过程中又会产生一些新的问题,再继续思考、继续解决问题,这样可以加深体会。

    下载地址:Head First 设计模式

    关注微信公众号:白玉盘(baiyu_pan)。


    转载于:https://juejin.im/post/5a4a1b61f265da43176a7ee4

    展开全文
  • k8s学习资料.txt

    2020-01-06 10:37:51
    并围绕在生产环境中可能出现的问题,给出了大量的典型案例,比如安全配置方案、网络方案、共享存储方案、高可用方案及Trouble Shooting技巧等,有很强的实战指导意义。本书内容随着Kubernetes的版本更新不断完善,...
  •  《指尖上的中国:移动互联与发展中大国的社会变迁》从智慧生活、产业升级、社会普惠发展等多个角度,结合诸多独具中国特色的创新业态和典型案例,向海内外读者揭示了移动互联的崛起,连接和赋能于中国的方方面面,...
  • 敬业共勉心得体会.doc

    2021-01-15 12:25:31
    这四句话是通过总结、挖掘sl教育系统优秀教师及教育工作者先进事迹,并对一些典型案例进行深入剖析而提炼出来的,对教育教学工作具有非常重要的现实意义和指导意义。下面,结合笔者的工作实际,谈谈对四句“敬业共勉...
  • 剖析典型案例,开展警示教育;紧密联系实际,进行对照检查,改进工作,取得良好的效果。在这次活动中,本人对领导干部要树立正确的权力观、地位观和利益观,密切联系群众,加强和改进党的作风建设等方面内容有深刻的...
  • 北京路宁律师事务所刑事部主任丁飞鹏表示,近期一例比特币财产损害赔偿案入选全国法院系统2020年度优秀案例具有典型意义,该案判决认为,比特币具备虚拟财产、虚拟商品的属性,应受到法律的保护。该案判决中对比特币...

    北京路宁律师事务所刑事部主任丁飞鹏表示,近期一例比特币财产损害赔偿案入选全国法院系统2020年度优秀案例具有典型意义,该案判决认为,比特币具备虚拟财产、虚拟商品的属性,应受到法律的保护。该案判决中对比特币财产属性的认定、对涉比特币案件的司法救济等内容,获得了最高人民法院层面的认可,其典型性和指导性,也将会对全国法院系统在未来的涉比特币案件审判实践中产生深远的影响。
    文章链接:https://www.tuoluocaijing.cn/kuaixun/detail-147704.html
    更多资讯:https://www.tuoluocaijing.cn

    展开全文
  • 典型案例1——华润置地(武汉)有限公司电子商务案例,以华润置地(武汉)有限公司为研究对象,全方位描述了目前华润置地(武汉)有限公司电子商务实际应用状况,并针对该公司的应用状况从不同的角度剖析了其在电子...
  • 通过对优秀企业经营成功的典型案例、管理故事、管理定律的学习,使我对管理和创新有了从理到感性的认识,得到了很多的启发。这些都对我以后的工作具有一定的现实指导意义,今后,还应进一步加强这方面的学习,不断...
  • 通过对优秀企业经营成功的典型案例、管理故事、管理定律的学习,使我对管理和创新有了从理到感性的认识,得到了很多的启发。这些都对我以后的工作具有一定的现实指导意义,今后,还应进一步加强这方面的学习,不断...
  • 20XX年市场人员工作总结 一、当年市场工作总结 1、情况概述 客观地表述任务完成情况,取得的成绩,要用数据... 3、特别说明 若是成功的经验,对公司其它市场有指导意义的,需要简洁、生动的表述成功的典型案例?..
  • 《Apache Kafka实战》是涵盖Apache Kafka各方面的具有实践指导意义的工具书和参考书。作者结合典型的使用场景,对Kafka整个技术体系进行了较为全面的讲解,以便读者能够举一反三,直接应用于实践。同时,本书还对...
  • 正因为此,基于大数据统计分析哪些产品具有更强的关联性,就具有了营销方面的引导意义,甚至可以结合价格分析指导关联营销中的定价策略。 基于超市的数据,假设要为某个子类别板块,比如“标签”的负责人提供以下...

    零售分析中把每个客户的一次订单交易(通常对应一张交易小票)模拟为一个虚拟购物篮,购物篮分析是交叉分析的典型代表。经典是案例是“啤酒和尿裤”,通过把关联产品陈列在一起促进客户的连带购买,从而提高顾客每次消费总价。正因为此,基于大数据统计分析哪些产品具有更强的关联性,就具有了营销方面的引导意义,甚至可以结合价格分析指导关联营销中的定价策略。

    基于超市的数据,假设要为某个子类别板块,比如“标签”的负责人提供以下分析:“在购买标签的订单(购物篮)中,其他哪些子类别被同时关联购买的概率更高?从销售数量的角度分析。”

    这个问题会综合使用逻辑判断、狭义LOD表达式、筛选器等分析方法

     

    第一步,分析问题

    第二步 通过计算建立筛选 

    第三步 基于筛选后的数据建立排序 

    第四步 把“标签”的分析扩展到其他子分类 

    第五步 为每个子类别增加背景信息(比例)

    第六步 增加层次分析(如需)

    第一步,分析问题

    分析一下这个问题,其中涉及到“子类别”和“订单ID”两个维度字段,和“数量”度量字段。主视图当然就是“各个子类别的购买数量”,要看孰高孰低,首选条形图。最终效果如图10-69所示:

    图 10‑69 选择任意子分类,查看其他子分类关联购买占比

    难点在于,问题中隐含着筛选条件——如何把数据范围,筛选到所有包含“标签”的订单交易中。

     

    第二步 关键步骤:通过计算建立筛选

    推荐从你熟悉的详细级别开始复杂的问题分析。购物篮分析针对的是订单层次,首先双击订单ID、子类别加入视图,如图10-70所示,凡是不包含“标签”分类的,即购物篮中没有消费这个子类别。

    图 10‑70 排除不含标签的订单ID

    如何排除不包含“标签”的订单呢?答案就在问题之中——不包含“标签”的订单有一个共同的特征:不包含“标签”。因此,创建一个辅助列,仅保留“标签”信息,把其他子类别名称都替换为NULL(空),之后在订单ID层面计数,凡是等于0的订单就是不包含“标签”的订单,就可以排除了。

    思路有了,方法如图10-71所示,首先使用IIF逻辑判断增加一个辅助列IIF([子类别]=’标签’,[子类别],NULL),注意这个是行级别的逻辑判断——如果当前行所对应的商品交易属于标签子类别,则保留子类别的名称,否则全部替换为NULL(空)。

    之后可以用这个辅助字段的计数大小,来判断订单是否属于包含“标签”的订单。由于要在订单层次做判断,使用FIXED LOD将结果指定在“订单ID”层次计算,即{ FIXED [订单 ID]:COUNTD(IIF([子类别]=’标签’,[子类别],NULL))}。

    图 10‑71 使用IIF建立辅助列,使用FIXED LOD计算作为分类标准

    这里使用了即席计算,直接把IIF的辅助字段拖入FIXED LOD表达式计数。

    FIXED LOD计算的目的是为了分类,也就需要作为分类字段(维度)使用,这也是FIXED LOD最独特的使用场景。

    如图10-72所示,把列中的表达式拖入左侧数据窗格创建字段,命名为“是否包含标签”(步骤a)。分类字段应该是维度而非度量,因此右键字段,选择“转换为维度”,字段就会转到维度区域并成为蓝色胶囊(步骤b)。至此,就可以把这个字段拖入筛选器,针对数据做筛选了,选择“1”,即仅保留了包含“标签”的订单交易。

    图 10‑72 把FIXED LOD的结果转化为维度筛选器

    第三步 基于筛选后的数据建立排序

    移除视图中的“订单ID”字段,就是仅包含“标签”的交易数据了,此时的“总和(是否包含标签)”对应的是订单的数量,拖入“数量”字段就可以看到标签的销售数量,和与标签关联购买的其他子类别销售数量了。如图10-73所示。

    图 10‑73 购买标签同时购买其他子类别的数量

    最后记得排序,就可能清晰地发现“椅子”“收纳具”和“装订机”是与“标签”关联购买最好的子类别。

    第四步 把“标签”的分析扩展到其他子分类

    为了简化问题,开篇以“标签为例展开了整个分析,那如何结合互动,把这个分析方法扩展到其他子分类,从而可以任意选择某个子分类从而查看其关联销售的子类别数量呢?

    此类的问题都涉及到更改计算中的某个变量,而参数是单一变量最好的方法。

    如图10-74所示,在“子类别”字段上右键选择“创建”——“参数”,可以快速创建包含子类别数据的参数列表。之后在“是否包含标签”字段右键选择“编辑”,将计算字段中的“标签”更改为“子类别 参数”即可。

    这样,在视图中通过选择子类别,就可以查看该子类别关联的购物篮子类别排名,为了通过标题突出所选的子类别,还可以在标题中插入参数。

    图 10‑74 将参数加入到FIXED判断过程

    如果使用层次结构进一步展开,或者结合某些重点单品做进一步筛选,则可以指导组合营销策略。

    第五步 为每个子类别增加背景信息

    在图10-74中,虽然可以清晰的看到指定子类别的关联子类别排名,但是由于缺少每个子类别的总计销售,因此难以估计被连带购买的子类别的确切占比。如果能增加这样的背景信息,显然就可以在排序之外,同时关注相当于其他所有子类别的关联占比。

    要增加的背景信息,要优先级作为分类的维度筛选器,因此可以使用FIXED LOD计算每个子类别的销售数量,即{ FIXED [子类别]:SUM([数量])}。如图10-75所示,在列中双击增加一个计算胶囊,输入这个表达式。

    图 10‑75 在购物篮关联排名基础上,增加每个子类别的合计销售数量

    为了增强可视化效果,为了更好的对比当前子类别的关联销售数量和合计销售数量的占比,可以把第2和第3个度量建立双轴,并通过调整颜色和大小增加层次性。如图10-76所示。

    图 10‑76 增加双轴同步,并增加比例计算

    至此,业务负责人才能清晰的看到每个子类别的关联购买情况,只有这种精确的计算,才能引导精确的分析。最佳可视化的基本标准,就是无须深度思考,即可直观表达关键结论。

    第六步 增加层次分析(如需)

    当然,按照同样的逻辑,如果想要查看每个子类别下面不同制造商的情况,则可以进一步增加维度,并适当调整计算字段。通常,业务决策必须依赖于层层钻取的深入分析,才能精确的指导运营工作。如图10-77所示,增加“制造商”字段,并调整FIXED LOD表达式,就可以查看制造商品牌状况了。

    展开全文
  • JSP数据库开发实例精粹 源码

    热门讨论 2012-12-24 17:28:00
    本书首先介绍了JSP开发Web应用程序的重点技术技巧,对初学者有很好的指导意义。然后以多个实用的系统为例,详细地讲述了用JSP创建Web应用程序的详细过程。内容包括在线书店、企业内部管理信息系统、新闻发布系统、...
  • 5.7.3 SYSAUX的作用与意义 285 5.8 BigFile和SmallFile表空间技术 287 5.9 ROWID与RDBA的转换 289 5.9.1 Oracle的ROWID及数据库限制 289 5.9.2 BigFile表空间的ROWID 290 5.9.3 使用dbms_rowid包获得...
  • 软件工程教程

    热门讨论 2012-07-06 23:10:29
    应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来解决软件问题,指导计算机软件开发和维护的一门工程学科。  软件工程的原则 任务2 软件生命周期与软件开发模型 软件生命周期 软件开发模型 ...

空空如也

空空如也

1 2
收藏数 21
精华内容 8
关键字:

典型案例指导意义