2013年10月31日星期四

大四IT男孩的技术之梦

本邮件内容由第三方提供,如果您不想继续收到该邮件,可 点此退订
大四IT男孩的技术之梦  阅读原文»

大四IT男孩的技术之梦

142609670.jpg

好久不见,大四的生活紧张而忙碌,随时都是应聘,看你怎么过了,也是忙碌其中的我,最近经历了可以说是洗脑的思想的蜕变。到底是就业还是考研,恐怕这些年来,已经困扰了很多本科生,我也是。尤其是做技术这一行,你在一个人寻觅着前面未知的技术难题的过程道路中,会悲喜交加的感受着社会的冲刷。一个人的"北京",一个人的技术之梦。

寒暄一番,下面开始说正事。大四感觉校园已经不再属于我了,打小我就是一个喜欢黑色和安静的孩纸,性格比较沉稳,见着高楼大厦或者纸醉金迷,心里总是很怕,怕那种奢侈自己不够资格去观望。总是喜欢在小餐馆里面和一些穿着土包子才会有的俗气的普通老百姓一起吃炒面,心里才不会有太多的背负。可能也是一种逃避吧,我想。每个学生都有自己的人生和理想,也不能事事都去和自己的那些梦去类比,否则将是踌躇不前的一副颓废的自己。

再此之前很早我就去工作了,因为自己是专升本到郑大读本科,所以学习上的专科时光的一个人的顶峰的优越感已经消失的无影无踪。只有技术和那些没有出过校门的孩纸可以拉开很大的距离。说道专科时光我还真想和大家聊聊那时的疯狂的我在技术上的蜕变。

142655248.jpg

河南警察学院是我的专科学校,我觉得父母对于子女的人生大方向的决定有时候事后你才会发现那时多么的重要和正确!这个学校让我成长太多,而且在此遇到自己人生的贵人,决定自己未来的方向!军事化管理的大学可能对于一个天真烂漫的孩纸未必是好事,但是对于我这样的苦逼,喜欢black,quiet的boy,那是寻梦的地方。本身专科时光就很短暂,学习的基础课程又少,以至于我急于求知的心一天天的膨胀,最后还得罪了老师,原因嘛,耽误了老师下课回家,赶班车,在这里向给我讲解问题的老师真诚的致歉。自己的性格很固执,遇到的事儿觉得没有做不成的,只有不足够努力的自己才会让失败有机可乘。所以在学习上面我事事都很要强,记得最疯狂的时候是八天的时间写出来了一个全国计算机等级考试报名的网页,那还是大二下学期的时候学习Access和C#刚刚开始。甚至于每次期末考完,我都觉得这样的应付没有什么提高,而去下载相同的其他学校的专业考试题目,问自己的同学借来复印出来,自己按时间做一遍看看能拿多少分,确实给自己不少极端的麻烦事情,但是提升也是显著的。因为平时的疯狂,很多老师也就认识了我,给我什么校级,省级,国家级的项目,让我试试做。做的过程也是学习的过程,此间我的技术再老师的带领下有着对数的飙升,很不夸张的说大三的时候我已经差不多可以写三层的博客了,包括网页的安全性考虑在内。每天都是充斥着挑战的紧张气氛,那段时光我过的是最有成就和充实的。

142809538.jpg

毕业时候,我选择了继续上学,于是就考上了专升本,继续读本科,起初读本科的思想是专科学历实在是有太多的限制,太多的机会不能拥有,所以才会放弃政法干警,放弃公务员考试,一心要继续和中国教育打交道,提高自己的人脉,进了本科确实发现可以认识到更多社会的高层和精英,这时候技术已经成了很大的资本,甚至可以说是王牌。长年从事科研工作的和你一个应用派,你懂的,这个就叫所谓的双赢。随便写一个工厂模式的CRM就可以申请省级的项目,你会感觉到在你会用这些技术后,他们其实是不需要去深究的,最好的态度就是用好才能传承。由于本科的专业不对口学的是法学,所以几乎不认识法学院的老师,这里向各位教法学的老师道个歉--!

143737948.jpg

在校这一年左右的时间了,一直和自己专科的博士后老师联系,和她一起做项目,学习着如何提高技术人的情商,以及如何照顾好自己的生活。每次遇到问题,我也是很倔强,这个问题不解决吃不好睡不好,心里还有很大的危机感,以至于失眠。最后交付完成了,心里反而空荡荡的,唉,麻烦事儿真多。我想可能是自己的心态不好吧,老师她对我的影响这时候就显得尤为重要。也是因为这样促使我做出自己人生最重要的决定 - 放弃现有的工作,回来考研究生。

对于很多同学来说,都很不理解我的行为觉得不可理解,甚至很极端,但是我已经改变了我的方向,也清楚的看到了现实,现实就是搞技术,方向比努力更重要。

大部分学生考研是为了就业,或者说寻找一种优越感。可还有一种人考研只为了提升自己的人脉,因为他已经经历了人生百态世间冷暖,知道自己应该怎么样规划自己未来这十年的方向和目标。本科生接触到的日常事物人最多也就是研究生,做事顶多就是公司打工上班,一天天的熬日子,其实还是有更多的选择的。有人会说我一个还没毕业的穷孩子懂什么,到处乱嚷嚷,现在成家压力这么大,哪有这样的精力去改变,也没有胆了。我承认在天朝确实诸多因素囿于自己当下的环境,不能去做改变,但是有一种情况就是如果还没到规定的年限,你就值得去为自己拼出一个什么来。毕竟我离不惑之年还很远,还有好多跟我一样的学生可以去做选择。

经历了这么多事儿的我(相比较而言,在我观察),现在在一家公司实习,技术我到现在这份上虽然不算是什么牛逼人物,但是有一点我可以肯定的告诉你,我具备了一名技术人自己解决公司问题的能力,这也是我在几家公司工作体会到的。所以你和一个本科生或者说是一个研究生谈论问题所获得的提升和跟一个博士,或者教授,聆听后总结出来的东西是有着至少十年左右的差距。

写了这么多,说说自己未来10年的梦想,希望51CTO给我见证,考研现在是第一位的,我觉得技术学到一定的程度已经开始体会到它只是一个工具而已,更多的"技术"应该是你的逻辑思想和陈诉能力。方向比努力更重要!谢谢51CTO的提醒,也谢谢我的导师多年的悉心教导,请您看着我成长......

没有什么做不到的事,只会呈现出一个不认真对待的自己,已经23了,不小了,该为自己负责了,近在咫尺的技术梦想,怎能不努力去争取?!个人觉得如果一上大学就为了找个工作,那么根本没有必要去上这个大学

171343546.jpg

本文出自 "梁肖技术中心" 博客,请务必保留此出处http://liangxiao.blog.51cto.com/3626612/1317326

分享至 一键收藏,随时查看,分享好友!

puppet根据节点机器名推送并自动执行SHELL脚本  阅读原文»

每日博报 精彩不止一点关闭
puppet根据节点机器名推送并自动执行SHELL脚本

puppet的基础环境介绍:

puppet服务器和客户端都已下载了epel的外部yum源,都已通过yum程序自动安装了puppet程序,过程比较简单,这里就不一一介绍了,机器都放置在同一局域网内,cn7788.com的域名,内部有内网DNS环境,没有用LDP作为域控,局域网还有其它客户端,由于不需要使用puppet环境,所以就不一一介绍了。

server.cn7788.com 192.168.1.124 puppet-master
client.cn7788.com 192.168.1.125 puppet-client
lamp.cn7788.com 192.168.1.126 puppet-client
xen.cn7788.com 192.168.1.144 puppet-client

大家可以将上面的域名对应关系可将其都写在各自机器的/etc/hosts文件里,在各个puppet客户端上建议ntpdate精准对时(因为puppet的证书对时间要求严格),不然puppet-client连接时会报如下错误:

warning: peer certificate won't be verified in thisSSL session
info: Caching certificate for client.cn7788.com
info: Caching certificate_revocation_list for ca
err: Could not retrieve catalog from remote server:certificate verify failed. This is oftenbecause the time is out of sync on the server or client
warning: Not using cache on failed catalog
err: Could not retrieve catalog; skipping run
err: Could not send report: certificate verifyfailed. This is often because the timeis out of sync on the server or client

需求如下:客户机机器xen.cn7788.comlamp.cn7788.com没有安装nagios客户端程序,这时想过通过puppet-server推送SHELL脚本自动安装,其它的客户端暂时没这么需求,这个应该如何实现呢?

由于客户端节点机器比较多,所以这里需要用到节点和模块的概念,这里我们先建立名为nagioscli的模块,如下所示:

mkdir -p/etc/puppet/modules/nagioscli/{manifests,files,templates}

files目录下的nagioscli.sh文件内容如下所示:

cd /usr/local/src
wget wget http://syslab.comsenz.com/downloads/linux/nagios-plugins-1.4.13.tar.gz
wget http://syslab.comsenz.com/downloads/linux/nrpe-2.12.tar.gz
tar zxvf nagios-plugins-1.4.13.tar.gz
cd nagios-plugins-1.4.13
chown nagios:nagios /usr/local/nagios
chown -R nagios:nagios /usr/local/nagios/libexec
tar zxvf nrpe-2.12.tar.gz
make install-plugin
make install-daemon
make install-daemon-config
sed -i's@allowed_hosts=127.0.0.1@allowed_hosts=114.112.11.11@'/usr/local/nagios/etc/nrpe.cfg
#114.112.11.11为nagios服务器的IP地址,这个可以根据实际需求更改。
/usr/local/nagios/bin/nrpe -c/usr/local/nagios/etc/nrpe.cfg -d

阅读更多内容

AgileEAS.NET SOA 中间件平台5.2版本下载、配置学习(一):下载平台并基于直连环境运行 - 魏琼东

本邮件内容由第三方提供,如果您不想继续收到该邮件,可 点此退订
AgileEAS.NET SOA 中间件平台5.2版本下载、配置学习(一):下载平台并基于直连环境运行 - 魏琼东  阅读原文»

一、前言

AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台。用于帮助中小型软件企业建立一条适合市场快速变化的开发团队,以达到节省开发成本、缩短开发时间,快速适应市场变化的目的。

AgileEAS.NET SOA中间件平台提供了敏捷快速开发软件工程的最佳实践,通过提供大量的基础支撑功能如IOC、ORM、SOA、分布式体系及敏捷并发开发方法所支撑的插件开发体系,以及提供了大量的实体、数据模型设计生成工具、代码生成工具,用于帮助中小软件开发商快速成长。

AgileEAS.NET平台充分把握目前软件行业快速发展的新趋势,基于敏捷并行开发、快速适应市场这样淳朴的软件工程实践,采用业界广泛使用的Microsoft .Net构件(组件)开发技术实践了这种开发思想,帮助软件企业实现“敏捷变化、快速适合”的目标,从而帮助软件企业在激烈的市场竞争中赢得先机并获得更高的回报。

二、下载AgileEAS.NET SOA 中间件平台5.2 版本

通过AgileEAS.NET SOA 中间件平台官方网站最新下载页面进行下载:

1%%XD}S)S$JD0HW~XEUM%~9

可以选择通过下载打好的RAR压缩包,也可以选择通过SVN进行下载,一版情况下我们对AgileEAS.NET SOA 中间件平台进行改动和修正之后都会把最新的上传到SVN传大家下载,RAR包也会及时的重新打包,但是有是可以因为某些原因没有及时对RAR压缩包进行更新,所以最新的还是在SVN上,如果有条件的情况尽量通过SVN更新最新版本。

下载完成平台之后,有关于发布包之中的目录结构及程序集介绍请参考AgileEAS.NET SOA 中间件平台 5.2 发布说明一文。

三、初始化数据库并直接方式运行WinClient运行容器

运行bin\dotnet目录之中的EAS.DbInitializer.exe程序,即AgileEAS.NET SOA中间件数据库初始化工具,数据库初始化工具会帮助你完成AgileEAS.NET SOA中间件平台运行所必须的表结构及数据:

M@`5$5[]BIT)9W~C6HSG_}B

数据库初始化工作包括创建数据库结构及建立初始化数据,初始化完成后会有完成提示(上图)。

如果选中了“完成后启动AgileEAS.NET SOA平台WinClient运行容器”,则会在初始化数据完成之后,我们点击确定之后启动AgileEAS.NET SOA中间件平台WinClient运行容器并以刚初始化完毕的数据库为基础进行运行,如下登录界面:

F75VUP][~$Z`G4R$QQPPF

界面Administrator(管理员)初始密码:sa进入AgileEAS.NET SOA 中间件平台WinClient运行容器:

image

image

至此,AgileEAS.NET SOA 中间件平台的数据库初始化及直连数据库环境配置完成。

四、直连数据库的配置文件介绍

AgileEAS.NET SOA中间件平台的系统配置文档,其核心是AgileEAS.NET SOA中间件平台IOC框架的配置文件,其中配置了运行环境所依赖的数据库连接、数据访问、ORM数据存取等相关的组件的动态配置,以下为本例直接数据库的配置文件内容:

1: <?xml version="1.0" encoding="utf-8"?> 2: <configuration> 3: <configSections> 4: <section name="eas" type="EAS.ConfigHandler,EAS.MicroKernel" /> 5: </configSections> 6: <startup useLegacyV2RuntimeActivationPolicy="true"> 7: <supportedRuntime version="v4.0"/> 8: </startup> 9: <eas> 10: <configurations> 11: <item name="Key" value="Value" /> 12: </configurations> 13: <objects> 14: <object name="DbProvider" assembly="EAS.Data" type="EAS.Data.Access.SqlClientDbProvider" LifestyleType="Thread"> 15: <property name="ConnectionString" type="string" value="Data Source=.;Initial Catalog=eas_demo;User ID=sa;Password=sa1q2w3e4r;Connect Timeout=0" /> 16: </object> 17: <object name="DataAccessor" assembly="EAS.Data" type="EAS.Data.Access.DataAccessor" LifestyleType="Thread"> 18: <property name="DbProvider" type="object" value="DbProvider"/> 19: <property name="Language" type="object" value="TSqlLanguage"/> 20: </object> 21: <object name="OrmAccessor" assembly="EAS.Data" type="EAS.Data.ORM.OrmAccessor" LifestyleType="Thread"> 22: <property name="DataAccessor" type="object" value="DataAccessor"/> 23: </object>mongoDB分页的两种方法 - laijiawei  阅读原文»

mongoDB的分页查询是通过limit(),skip(),sort()这三个函数组合进行分页查询的

下面这个是我的测试数据

db.test.find().sort({"age":1});

第一种方法

查询第一页的数据:db.test.find().sort({"age":1}).limit(2);

查询第二页的数据:db.test.find().sort({"age":1}).skip(2).limit(2);

查询其他页数以此类推。。。

第二种方法

查询第一页的数据:db.test.find().sort({"age":1}).limit(2);

跟上面的第一种方法一样的。

查询第二页的数据:

这个是获取第一页最后一条记录的值,然后排除前面的记录,就能获取到新的记录了

总结来说,如果数据量不是很大的话,可以使用第一种方法,毕竟比较简单,如果数据量比较大的话,使用第二种方法比较好,因为这样就可以不用到skip()这个函数,skip跳过太多的记录,效率有点低


本文链接:http://www.cnblogs.com/xiaolai/p/3401289.html,转载请注明。

阅读更多内容

2013年10月30日星期三

免费流量:策略不错但打不倒微信

本邮件内容由第三方提供,如果您不想继续收到该邮件,可 点此退订
免费流量:策略不错但打不倒微信  阅读原文»

免费流量:策略不错但打不倒微信

im.png

  29日,淘宝官方微博发布消息,确认淘宝网和来往将与运营商达成合作,为符合条件的用户推出免费流量服务。无独有偶,和这个消息同时传播的其他行业动态还有:1、易信宣布用户数突破3000万(日活跃用户28%);2、微信推出公众服务帐号收费服务。

  这三条消息在同一时间推出,并且都是和移动IM相关,特别是其中两款产品所涉及的内容都是免费流量,这样的巧合在行业内不能说是破天荒,但至少是巧合中的巧合了。对整个移动IM通讯市场而言,这样的情况也充分说明,当前的移动IM已经不再是白热化竞争,而是已经到了兵戎相见的地步了。

  在这几条消息中,我注意到:之前易信推出时的杀手锏是免费流量,而目前来往的狙击招式也是免费流量,通过免费流量狙击微信,看来已经是易信和来往不约而同选择的策略方式。不过,针对两家竞争对手均纷纷推出免费流量对战微信的举措,微信让人大跌眼镜的却是破天荒地推出收费服务。

  微信疯了吗?

  不能说微信在这个日子里特意推出收费服务是对另外两款产品的蔑视,但在市场信心方面,微信显然是有着巨大的自信和底气的,并没有因为易信和来往利用免费流量招式给自己增加压力,尤其在来往正式对外推广运营时,马云多次隔空叫板微信,但微信并没有发文一字回应对方的叫板。或许,微信团队对来往和易信发起的挑战,根本就没当一回事。

  另外一方面,易信和来往主打免费流量竞争的方式,无论在策略还是用户实质需求方面,都是一个不错的打痛点方式(微信的通讯流量可没免费过)。不过,这种策略虽然整体看上去很好,但我仍然不太认同这种以小惠利去勾引用户的招式,对于今天的微信而言,其发展力量和成功因素显然不再受流量成本制约。因为对于微信,其自有应对市场挑战的底气和本领,其中产品体验和社交网络的优势,也已经奠定微信的地位。

  微信虽然拥有QQ用户导入的优势,但微信也还有属于其自身的独特功能和优势,其中最为特别的就当数图片社交和公众平台。

  微信构筑的社交沟通模式,基础层面来看,微信已经实现将语音文字和图片社交结合,基本的文字和图片沟通加上图片社交,同时再赋予堪称行业无可匹敌的公众平台,已经完全将微信的其他竞争者杜绝到了另一个世界。而我们回头来看易信和来往,二者的产品功能和属性都只是基础沟通,微信所具备的图片社交和公众帐号,易信和来往都做得一塌糊涂。

  这种使用先天产品优势构筑的堡垒,已经使得用户在社交网络需求方面如鱼得水,特别在巩固了用户之间社交关系的情况下,很少有用户愿意更换移动IM而换来社交网络中断或破裂的结果。虽然也有无数人吐槽微信的朋友圈和公众帐号,但不得不承认这确实是微信的两大杀手锏,因而易信和来往不想要通过免费流量打败微信,首先更应明白免费流量的重要性与微信构筑的社交重要性,哪一个对用户而言更重要。

  更何况,按照目前的通讯成本来看,易信和来往所提供的免费流量对用户而言,根本就不是大成本,无法达成让用户为这点流量就更换社交关系的可能。因此,联合产品+社交关系的优势,微信目前不仅可以神色自若地生存,而且还可以完全在逆势环境下推出收费功能,让自己获得更好。这个,就是微信的底气和自信,也是我个人认为易信和来往用免费流量无法撼动微信的主要原因。

  关于这点,我的一个朋友甚至说,微信完全可以将朋友圈和公众平台剥离出来,独立运营。

  不过,易信和来往用免费流量的方式虽然无法撼动微信,但这种策略也不是无一是处,对于要大力站稳市场和赢取一定程度的口碑,易信和来往施展的这种招式也能起到一定的意义。再者,易信和来往推出免费流量服务,对于微信的监督和促进产品品质提升,也同样具备良好的行业公平竞争作用。

  总的来说,易信和来往使用免费流量的策略虽然不错,也能给行业带来一定程度的积极作用,但这种策略目前还对微信无法造成致命冲击。但是,对于市场垄断和产品创新竞争而言,易信和来往的这种方式值得鼓励,因为只有相关的产品展开品质和服务的竞争,才能使得行业整体发展水平进入一个全新的阶段,最终受益的,才会是用户。

(朱翊/文,微信公众帐号:zhuyiweixin)

Hadoop运维记录系列(十二)  阅读原文»

Hadoop运维记录系列(十二)

从公司离职有几天了,今天回去看同事,想一起吃饭,没成想摊上大事了。说下午hadoop集群的机房停电了,然后集群就启动不了了,几个人从下午4点多折腾到8点多还没搞定,有几台服务器找不到硬盘,还有内网ping不通的。反正是有10来台服务器起不来datanode和tasktracker了。于是在原公司蹭了个饭,花了20分钟解决了一下。

由于这几台服务器挂机,namenode没有达到有效数据块的阀值所以一直处于safemode。

然后逐个解决,同事反馈比较多的情况是硬盘设备在/dev找不到,看了一下,/dev下设备存在,但是没有分区,OPS偷懒,只是把硬盘挂上了,没有fdisk就直接mkfs.ext3了。所以/dev下的设备都是sdb,sdc...而正确的话应该是sdb1,sdc1这样的。所以同事以为硬盘找不到了,就一直没有处理。发现这个问题以后,直接把/dev/sdb挂载到/data1,/data2...。该故障恢复。

还有一类故障是硬盘挂上了,但是datanode无法启动,启动后报Cannot lock storage /data3/... The directory is already locked。看了一下,路径权限没问题,也没有进程占用该路径。怀疑是硬盘出错。mount看了一下,硬盘处于rw状态,应该是没啥问题,但是还是启动不了,于是将该硬盘umount掉,然后重新mount,还是不行,于是做了个测试,直接把该硬盘mkfs.ext3。再重新挂载,然后创建相应的文件夹,赋予权限。再启动datanode,这时候理论上应该是正常并负载均衡数据块,但datanode还是挂了,报了一个DiskChecker volsFailed故障,于是判断该硬盘有物理损坏,格式化都不好使了。直接从hadoop配置文件里摘除,重启datanode正常。

最后一个故障是某一台服务器,内网网卡无法ping通同网段内的服务器。外网可以连接,看了一下ifconfig,IP信息,MAC信息都正确无误,于是怀疑是路由或者网卡问题,但一般来说,网卡不太会出问题,先从路由看起,果不其然被蒙对了。ip route命令看了一下linux的路由表。发现里面的内网地址192.168网段被转发到了一个错误的10.8的VPN tunnel上面。将该路由记录从路由表删除后,立刻就通了,相当的爽,20分钟解决全部战斗。

完了以后跟他们开玩笑说,你们以后可以管我叫观世音了。然后说,干脆公司把我返聘回来当顾问得了,或者把hadoop集群的运维业务外包给我得了,出了问题你们都回家,我来加班帮你们搞定。

这个事情我总结了如下几点:

一、大公司不应该为了图便宜去找廉价机房,停电真是受不了,尽管我之前的公司并不在意数据这事,但是发生大规模宕机终归不是什么好事,带来的后续问题太多。抠门也得抠的是地方,该花的钱不能省。

二、大规模分布式集群运维的人才问题将成为瓶颈,鉴于分布式系统的复杂程度,要求运维人员的水平相对比网站运维要高得多。随着技术的发展,用工具把hadoop搭起来不是问题,但是在大规模集群下的维护将成为大问题,要面对各种各样可能发生的奇怪的故障,综合知识要求非常高。不光要精通linux,还要精通网络,还要精通自动化运维方式,还要精通编程,让传统运维去维护hadoop是mission impossible的事。map/reduce开发其实很简单,只要掌握了开发的思想,一天时间包教包会。运维很可能是最终阻碍hadoop落地的障碍,分布式系统太复杂了,水很深,坑很多。需要比较长时间的积累,然后需要知识面很广,思路很活跃才行。像我们这种互联网公司搞hadoop运维都会遇到种种困难,何况是其他人了。

三、没事别回以前的公司。

本文出自 "实践检验真理" 博客,谢绝转载!

阅读更多内容

C++算法编程题(二)正螺旋 - 田园里的蟋蟀

本邮件内容由第三方提供,如果您不想继续收到该邮件,可 点此退订
C++算法编程题(二)正螺旋 - 田园里的蟋蟀  阅读原文»

前言

  写东西前总是喜欢吐槽一些东西,还是多�嗦几句吧,早上看了一篇博文《谈谈外企涨工资那些事》,里面楼主讲到外企公司包含的五类人,其实不只是外企如此,私企和合资的都是如此,一些公司反正什么人都有,就怕你的上司是第一种,你的同事是第二种。这种搭配最讨人厌,反正技术和工作效率不怎么样,“做人”还蛮会做的。其实不管公司怎样,同事怎样,工作环境怎样。就像里面楼主说的,都要坚持自己选择的路,并坚持走下去。。。

  这几天都在博园逛一些技术大牛的博客,也买了本相关的数,在博园主要看些设计模式之类的,看了很是心血澎湃,真的希望自己有一天也可以写一些之类的文章。昨天下了一位园友写的一个权限管理系统,里面用到了mvc、ef、easyui和一些设计模式,自己接下来要好好研究下。其实一直有个想法是,希望可以把.net底层搞透,并整理一套属于自己的框架,慢慢优化下去,就像胡哥一样。完成这些,虽死无憾,哈哈哈。。。

  说的有点多了,会到正题,我一开始写这类算法编程题的时候,一是想可以帮到开始学习算法编程的同学们,二是锻炼自己的脑细胞,希望死的不要太多。还有就是写这些编程题和C++其实没什么关系,只是用简单的语法实现功能而已,重要的是逻辑思路,大家也可以看成是奥数题。

  网上看到一套趣味编程题,希望接下来可以一一和大家分享。

程序要求

  程序描述:

  从键盘输入一个整数(1~20)
则以该数字为矩阵的大小,把1,2,3…n*n 的数字按照顺时针螺旋的形式填入其中。例如:
输入数字2,则程序输出:
1 2
4 3
输入数字3,则程序输出:
1 2 3
8 9 4
7 6 5
输入数字4, 则程序输出:
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7

程序实现

  这个编程题大家可能都做过,算是比较经典的算法编程题了,当然也有很多的实现方法,这里我讲一种。

  我们先分析下,这个题目主要是输出数字螺旋,我们可以看成是四个方向:

  1,左-->右

  2,上-->下

  3,右-->左

  4,下-->上

  而且这四个方向的数字是依次递增的,那我们可以这样思考,整个输出是一个二维数组,行和列数是一样的,比如输入4,那1-12就是第一圈,12-16就是第二圈,每一圈又分四个方向。

  我们可以先这样定义:

1 int num[80][80];
2 int i,j;
3 int rows,quan;

  num数组表示的是输出的数组,rows就是行列数,也就是我们输入的值,quan表示的是螺旋的圈数,i表示的是螺旋上的数字,j等下我们程序中讲,我们代码可以这样写:

1 scanf("%d",&rows);
2 quan=0;
3 for(i=1;i<=rows*rows;quan++)
4 {
5 if(i==rows*rows)
6 num[(rows-1)/2][(rows-1)/2]=i++;
7 else
8 {
9 for(j=quan;j<rows-1-quan;j++)
10 num[quan][j]=i++;
11 for(j=quan;j<rows-1-quan;j++)
12 num[j][rows-quan-1]=i++;
13 for(j=rows-1-quan;j>quan;j--)
14 num[rows-quan-1][j]=i++;
15 for(j=rows-1-quan;j>quan;j--)
16 num[j][quan]=i++;
17 }
18 }

  最外层的for是循环圈数的意思,里面if是判断最后一圈是不是单独的数字,就像行数如果是3,那最后一圈就只要一个数字9,下面四个for就是代表的上面说的四个方向。大家看下代码就懂得,这里我就不多说了。

  大家可能有更好的实现方式,希望可以多多交流,

  完整程序代码:

1 #include "stdio.h"
2 #include "string.h"
3 #include "stdlib.h"
4
5 void main()
6 {
7 int num[80][80];
8 int i,j;
9 int rows,quan;
10
11 scanf("%d",&rows);
12 quan
elasticsearch文档-字段的mapping - buzzlight  阅读原文»

mapping
==

Mapping是指定义如何将document映射到搜索引擎的过程,比如一个字段是否可以查询以及如何分词等,一个索引可以存储含有不同"mapping types"的documents,ES允许每个mapping type关联多个mapping定义。

显式声明的mapping是定义在index/type级别, 默认不需要显式的定义mapping, 当新的type或者field引入时,ES会自动创建并且注册有合理的默认值的mapping(毫无性能压力), 只有要覆盖默认值时才必须要提供mapping定义。

mapping types

Mapping types是将索引里的documents按逻辑分组的方式, 类似数据中的表, 虽然不同的types之间有些区别, 但他们并不是完全分开的(说到底还是存在相同的Lucene索引里)。

强烈建议跨types的同名field有相同的类型定义以及相同的mapping特征(比如analysis的设置), 这在通过type前缀(`my_type.my_field`)来选择字段时非常有效, 但这也不一定, 有些地方就不起作用(比如字段的聚合faceting)。

实际上在实践中这个限制从来不是问题, field名通常表明了该field的类型(例如"first_name"总是一个字符串)。 还要注意, 这不适用于跨索引的情况。

mapping api

要创建mapping, 需要用到Put Mapping接口, 或者可以在调用create index接口时附带mapping的定义。

global settings

全局设置`index.mapping.ignore_malformed`可以在索引级别上设置是否忽略异常内容(异常内容的一个例子是尝试将字符串类型的值作为数字类型索引), 这个设置是跨mapping types的全局设置。

fields
===

每一个ampping都有一些关联的字段来控制如何索引的document的元数据(例如_all)。

_uid
===

每个索引的document会关联一个id和一个type, 内部的`_uid`字段将type和id组合起来作为document的唯一标示(这意味着不同的type可以有相同的id, 组合起来仍然是唯一的)。

在执行基于type的过滤时, 如果`_type`字段没有被索引,会自动使用`_uid`字段, 并且不需要`_id`字段被索引。


```
附_uid的java源代码

public static final byte DELIMITER_BYTE = 0x23;

public static void createUidAsBytes(BytesRef type, BytesRef id, BytesRef spare) {
spare.copyBytes(type);
spare.append(DELIMITER_BYTES);
spare.append(id);
}
```

_id
===

每个索引的document会关联一个id和一个type, `_id`字段就是用来索引并且存储(可能)id的,默认是不索引(not indexed)并且不存储的(not stored)。

注意, 即使`_id`是不索引的, 相关的接口仍然起作用(他们会用`_uid`字段), 比如用`term`, `terms`或者`prefix`来根据ids过滤(包括用`ids`来查询/过滤)。

`_id`字段也可以启用索引或者存储, 配置如下:

```
{
"tweet" : {
"_id" : {"index": "not_analyzed", "store" : "yes"}
}
}
```

为了维护向后兼容性, 当升级到0.16时可以在节点级别设置`index.mapping._id.indexed`为true来确保id能被索引, 尽管不建议索引id。

可以设置`_id`的`path`属性来从源文档中提取id, 例如下面的mapping:

```
{
"tweet" : {
"_id" : {
"path" : "post_id"
}
}
}
```

如果提交下面的数据

```
{
"message" : "You know, for Search",
"post_id" : "1"
}
```

`1`会提取出来作为id。

因为要提取id来决定在哪一个shard执行索引,需要在索引时做额外的解析。

_type
===

每个索引的document会关联一个id和一个type, type在索引时会自动赋给`_type`字段, 默认`_type`字段是需要索引的(但不analyzed)并且不存储的, 这就意味着`_type`字段是可查询的。


`_type`字段也可以设置为stored, 例如:

```
{
"tweet" : {
"_type" : {"store" : "yes"}
}
}
```

`_type`字段也可以设置为不索引, 并且此时所有用到`_type`字段的接口仍然能用。

```
{
"tweet" : {
"_type" : {"index" : "no"}
}
}
```

_source
===

`_source`是一个自动生成的字段, 用来存储实际提交的JSON数据, 他是不索引的(不可搜索), 只是用来存储。 在执行"fetch"类的请求时, 比如get或者search, `_source`字段默认也会返回。

尽管`_source`非常有用, 但它确实会占用索引的存储空间, 所以也可以禁用。 比如:

```
{
"tweet" : {
"_source" : {"enabled" : false}
}
}
```

compression

从0.90开始, 所有存储的字段(包括`_source`)总是被压缩的。

0.90之前:

如果要将source字段存储在索引中的话,启用压缩(LZF)会显著减少索引的大小, 还可能提升性能(解压缩比从磁盘上加载一个比较大的source的性能要好)。 代码需要特别注意,只有需要的时候才执行解压缩, 例如直接将数据解压缩到REST的结果流。

要启用压缩的话, 需要将`compress`选项设置为true, 默认设置是false。 注意可以在已经存在的索引上修改,ES支持压缩和未压缩的数据混合存放。

另外,`compress_threshold`可以控制压缩source的时机,可以设置为表示字节大小的值(比如100b, 10kb)。 注意`compress`应该设置为true。

includes / excludes

可以用path属性来包含/排除source中要存储的字段,支持*通配符,例如:

```
{
"my_type" : {
"_source" : {
"includes" : ["path1.*", "path2.*"],
"excludes" : ["pat3.*"]
}
}
}
```

_all
===

`_all`字段的设计目的是用来包罗文档的一个或多个字段, 这对一些特定的查询非常有用, 比如我们要查询文档的内容, 但是不确定要具体查询哪一个字段, 这会占用额外的cpu和索引容量。

`_all`字段可以完全禁止掉, field mapping和object mapping可以声明这个字段是否放到`_all`中。 默认所有的字段都包含在`_all`中。

禁用`_all`字段时, 推荐为`index.query.default_field`设置一个值(例如, 你的数据有一个"message"字段来存储主要的内容, 就设置为`message`)。

`_all`字段一个很有用的特征是可以把字段的boost等级考虑进去, 假设title字段的boost等级比content字段高, `_all`中的title值也比`_all`中的content值等级高。

以下是一个配置的例子:
```
{
"person" : {
"_all" : {"enabled" : true},
"properties" : {
"name" : {
"type" : "object",
"dynamic" : false,
"properties" : {
"first" : {"type" : "string", "store" : "yes", "include_in_all" : false},
"last" : {"type" : "string", "index" : "not_analyzed"}
}
},
"address" : {
"type" : "object",
"include_in_all" : false,
"properties" : {
"first" : {
"properties" : {
"location" : {"type" : "string", "store" : "yes", "index_name" : "firstLocation"}
}
},
"last" : {
"properties" : {
"location" : {"type" : "string"}
}
}
}
},
"simple1" : {"type" : "long", "include_in_all" : true},
"simple2" : {"type" : "long", "include_in_all" : false}
}
}
}
```

在这个例子里, `_all`字段设置了`store`, `term_vector`和`analyzer`(指定`index_analyzer`和`search_analyzer`)。

highlighting

任何可以highlighting的字段必须既是stored的,又是`_source`的一部分,默认`_all`字段不符合这个条件, 所以它的highlighting不会返回任何数据。

尽管可以设置`_all`为stored, 但`_all`从根本上说是所有字段的集合, 也就是说会存储多余的数据,它做highlighting可能产生怪怪的结果。

_analyzer
===

`_analyzer` mapping可以将document某个字段的值作为索引时所用analyzer的名字,如果一个字段没有显式指定`analyzer`或者`index_analyzer`, 索引时就会用这个analyzer。

下面是配置的例子:

```
{
"type1" : {
"_analyzer" : {
"path" : "my_field"
}
}
}
```

上面的配置用`my_field`字段的值作为analyzer, 比如下面的文档:


```
{
"my_field" : "whitespace"
}
```

会让所有没有指定analyzer的字段用`whitespace`做索引的analyzer。

path的默认值是`_analyzer`, 所以可以给`_analyzer`字段赋值来指定一个analyzer, 如果需要自定义为别的json字段, 需要通过path属性来明确指定。

默认`_analyzer`字段是可索引的, 可以在mapping中将`index`设置为`no`来禁用。


_boost
===

Boosting是增强文档或者字段关联性的过程,字段级别的mapping可以将boost指定为某个字段。 `_boost`(应用在root object上)可以指定一个字段,这个字段的内容控制文档的boost级别。 例如下面的mapping:

```
{
"tweet" : {
"_boost" : {"name" : "my_boost", "null_value" : 1.0}
}
}
```

上面的定义指定了一个名为字段`my_boost`的字段, 如果要索引的JSON文档包括my_boost字段, 字段的值就作为文档的boost值, 比如下面的JSON文档的boost值为2.2:

```
{
"my_boost" : 2.2,
"message" : "This is a tweet!"
}
```

(注:name属性默认是`_boost`)


_parent
===

`_parent`用来定义子类型所关联的父类型, 比如有一个`blog`类型和一个`blog_tag`子类型, `blog_tag`的mapping应该是:

```
{
"blog_tag" : {
"_parent" : {
"type" : "blog"
}
}
}
```

`_parent`默认是stored以及indexed的, 也就是说可以用`_parent`来查询。

_routing
===

`routing`是索引数据或者需要明确指定路由时routing的设置。

store / index

`_routing`的mapping默认会存储routing的值(`store`设置为`yes`), 之所以这么做是为了可以在routing值来自外部而不是document一部分时仍然可以重建索引。

required

另一方面, 可以在`_routing`的mapping中设置`required`属性为`true`来将它设置为必需的,这在使用routing功能是非常重要, 因为很多接口会用到它。 如果没有提供routing值(或者不能从document获取)的话,索引操作就不会执行,再比如如果`_routing`是必须的但是没有提供routing值的话,删除操作就会广播到所有的分片(shards)上。

path

routing的值可以在索引时额外提供(并且作为document的一部分存储, 和`_source`字段存储方式很像), 也可以根据`path`自动从要索引的document提取, 例如

阅读更多内容

2013年10月28日星期一

Convert、Parse、TryParse、(int) 区别 - 豆豆0829

本邮件内容由第三方提供,如果您不想继续收到该邮件,可 点此退订
Convert、Parse、TryParse、(int) 区别 - 豆豆0829  阅读原文»

Convert.ToInt32、int.Parse(Int32.Parse)、int.TryParse、(int) 四者都可以解释为将类型转换为 int,那它们的区别是什么呢?

Convert.ToInt32 与 int.Parse 较为类似,实际上 Convert.ToInt32 内部调用了 int.Parse;

Convert.ToInt32 参数为 null 时,返回 0;
int.Parse 参数为 null 时,抛出异常。

Convert.ToInt32 参数为 "" 时,抛出异常;
int.Parse 参数为 "" 时,抛出异常。

Convert.ToInt32 可以转换的类型较多;
int.Parse 只能转换数字类型的字符串。
int.TryParse 与 int.Parse 又较为类似,但它不会产生异常,转换成功返回 true,转换失败返回 false。最后一个参数为输出值,如果转换失败,输出值为 0。


int m;
if(int.TryParse("2"),out m)
{
...
}
返回true ,运行{}内,并给m赋值为2;

if(int.TryParse("ddd"),out m)
{
...
}
返回false,不运行if{}内,并给m赋值为0;

(int) 属 cast 转换,只能将其它数字类型转换成 int 类型,它不能转换字符串,比如下例就会失败:

string v = "1";
int n = (int)v;


本文链接:http://www.cnblogs.com/Dream-High/p/3383736.html,转载请注明。

[有料组每日学习分享计划--00087]32行代码帮你导出IOS酷我音乐下载的无损音乐 - 源姜  阅读原文»

需求与研究:
1.IOS的酷我音乐软件,还是不错滴,可以直接下载APE或是320K的MP3音乐,但是我发现PC上的酷我反而没这个功能,而且其他的音乐软件一般只能下载中低品质的音乐。所以能够从IOS中找到一个方法把它下载的东西导出来还是很有必要的。
2.在手机上下载一些无损音乐后将手机联机到PC,用PP助手或是itools等辅助工具能够打开酷我的文件目录。发现里面有一个music目录,里面的文件名都是纯数字地。我想iphone下载来马上转码肯定没那个速度,就算能转,估计现在也没有更好的格式可以保存音乐,尝试把这些文件直接拉倒PC上改名,恩,果然可以使用。但是问题是你不知道那个文件是什么音乐,那个应该是MP3那个应该是ape?这一个听过来肯定不是办法。
3.网上搜索了一下,真有个哥们捣鼓出一个工具,不过每次使用还要访问一下他的博客,他用vb写的,编译成了一个EXE放在网上供大家下载,估计得到了不少的认可,至少访问量已经上去了。但是他没公布是如何做到的。
4.对于IT宅来说,我猜应该不会很难,那个软件提示一定要把cloud.db文件也复制到pc,我用一文本编辑器打开看看是什么东西。哦,有戏,原来是sqlite数据文件啊。如果不是看到他写cloud.db那么我还是要做些分析工作,比如一个个打开每一个文件之类的,肯定能找到,但是他写了我就容易些,也要致敬一下。
5.打开来看看就非常容易了,这个数据库中有一个MusicResource表,其中存放了歌曲的全部信息,类型、封面地址、试听地址、存放的文件名啥的都有,这就非常easy了,读出来,把Music目录里的文件的文件名改名到数据库里的名称就可以了。
技术:
1.sqlite访问方法。
2.python基本的文件操作,主要是目录列表文件和改文件名,都是比较简单的。
实现:
1.用PP助手把cloud.db和music目录复制到硬盘的某个目录。
2.在跟cloud.db平级的目录里编写一个小程序,算上空行和注释一共才32行。源代码如下:
# encoding: utf-8
__author__ = 'jy@cjlu.edu.cn'
import sqlite3
import os
conn=sqlite3.connect("cloud.db")
def GetNewFilename(filename):
cu=conn.cursor()
cu.execute("select artist,title,album,file,format from musicResource where file='%s'"%filename)
r=cu.fetchone()
if r is not None:
artist,title,album,filename,format=r
newfilename= "[%s-%s]-%s.%s"%(artist,album,title,format)
return newfilename.replace("&","").replace(":","").replace("/","")
def ConvertFiles(path):

if not os.path.exists(path):
exit()
pl=os.listdir(path)
for file in pl:
#如果不是目录就移动
#计算新文件名
if os.path.isfile(os.path.join(path,file)):
newfilename=GetNewFilename(file)
print os.path.join(path,file),"-->",os.path.join(path,newfilename)
os.rename(os.path.join(path,file),os.path.join(path,newfilename))

if __name__=="__main__":

ConvertFiles("D:\projecting\Kuwo\Music")
conn.close()

  

运行效果:
1.KAKA,估计有版权风险,我就不放图片了;
2.速度超级快,一下子就好了,技术上成本接近与0,会python的都能写出来,娱乐一下。

本文链接:http://www.cnblogs.com/pcode/p/3393996.html,转载请注明。

阅读更多内容

01-Windows Server 2012 R2 远程桌面服务部署指南

本邮件内容由第三方提供,如果您不想继续收到该邮件,可 点此退订
01-Windows Server 2012 R2 远程桌面服务部署指南  阅读原文»

每日博报 精彩不止一点关闭
01-Windows Server 2012 R2 远程桌面服务部署指南

作者:马博峰

对于大部分的IT部门来说,服务器虚拟化并不是的IT首要挑战,而是越来越庞大的企业个人办公环境。企业内部的用户都希望能从任何位置,使用自己惯用的任何设备访问企业应用与数据。然而无论通过 LAN或者是WAN连接,无论所用设备的显示能力如何,他们都希望能获得熟悉、一致、丰富、流畅的桌面与应用程序体验。此时企业需要的是高效率的VDI方案,VDI桌面虚拟化的优势在于运算集中在服务器端,将所有桌面虚拟机在数据中心进行托管并统一管理;同时用户能够获得完整PC的使用体验。简单的来说,虚拟桌面或应用是指:支持企业级实现桌面系统和应用系统的远程动态访问与数据中心统一托管的技术。一个形象的类比,就是今天,我们可以通过任何设备、在任何地点,任何时间访问在网络上的我们的邮件系统,或者网盘;而未来我们可以通过任何设备,在任何地点,任何时间访问在网络上的属于我们个人的桌面系统和应用系统。

随着最新的Windows Server 2012 R2在2013年10月发布,微软使得针对不同设备部署与交付虚拟桌面资源的过程更简单,更具成本效益。Windows Server 2012 R2 中的 VDI 技术能让用户用几乎任何设备,用更简单,保真度更高的方式访问数据中心内托管的 Windows 环境。通过 Hyper-V 与远程桌面服务(RDS),微软通过一套解决方案提供了三种灵活的 VDI 部署选项:池化桌面、个人桌面,以及远程桌面会话(原先的终端服务)。同样在 Windows Server 2012 R2 中,IT管理者将获得一套完整的 VDI 工具集,借此可让用户通过各种流行的设备从几乎任何地点用灵活的方式访问数据与应用,同时可维持安全性与合规性。

一、远程桌面服务简介

远程桌面服务(以前称为"终端服务")是 Windows Server 2012 R2 中的一个服务器角色,它提供的技术可让用户访问在远程桌面会话主机(RD 会话主机)服务器上安装的各种 Windows 程序,或者访问完整的 Windows 桌面。使用远程桌面服务,用户可以从公司网络内部或 Internet 访问 RD 会话主机服务器。当用户访问 RD 会话主机服务器上的程序时,该程序将在服务器上运行。每个用户只能看到他们自己的会话。该会话由服务器操作系统透明地管理,独立于任何其他客户端会话。此外,可以配置远程桌面服务,以便使用 Hyper-V为用户分配虚拟机,或让远程桌面服务在用户连接时动态地为用户分配可用虚拟机。远程桌面服务支持在企业环境中高效地部署和维护软件。可以轻松地从中央位置部署程序。由于将程序安装在RD会话主机服务器而不是客户端计算机上,因此升级和维护程序将更加简单。

二、远程桌面服务角色组成

远程桌面服务是一种服务器角色,由多个角色服务组成。在 Windows Server 2008 R2 中,远程桌面服务包含以下角色服务:

1、RD 会话主机:远程桌面会话主机(RD 会话主机),以前称为终端服务器,支持服务器承载基于 Windows 的程序或完整的 Windows 桌面。用户可连接到 RD 会话主机服务器来运行程序、保存文件,以及使用该服务器上的网络资源。

2、RD Web 访问:远程桌面 Web 访问(RD Web 访问),以前称为 TS Web 访问,支持用户通过运行 Windows 8.1的计算机上的"开始"菜单或通过 Web 浏览器访问 RemoteApp 和桌面连接。RemoteApp 和桌面连接为用户提供了一个自定义的 RemoteApp 程序和虚拟机视图。

3、RD 授权:远程桌面授权(RD 授权),以前称为TS授权,管理每个设备或用户连接到 RD 会话主机服务器所需的远程桌面服务客户端访问许可 (RDS CAL)。您可使用 RD授权在远程桌面许可证服务器上安装和发布 RDSCAL,并跟踪其可用性。

4、RD 网关:远程桌面网关(RD 网关),以前称为TS网关,使授权的远程用户能够从任何联网设备连接到内部企业网络上的资源。

5、RD 连接代理:远程桌面连接代理(RD连接代理),以前称为TS会话代理,支持负载平衡RD会话主机服务器场中的会话负载平衡和会话重连。还可使用 RD 连接代理并通过 RemoteApp 和桌面连接让用户访问RemoteApp程序和虚拟机。

6、RD 虚拟化主机:远程桌面虚拟化主机(RD 虚拟化主机)与 Hyper-V 集成,以承载虚拟机并以虚拟机的形式将它们提供给用户。您可以为您组织中的每个用户分配一个唯一虚拟机,或者为他们提供对一个虚拟机池的共享访问。

clip_image001

三、远程桌面服务的部署方式

远程桌面服务部署方式包括"基于虚拟机基础结构(VDI)部署"和"基于会话虚拟化部署"。 基于虚拟机基础结构(VDI)部署是需要主机中具有Hyper-V功能,在 Windows Server 2012 R2中,远程桌面服务包括高效配置和管理虚拟机的新方式。用户可以通过远程桌面协议 (RDP) 访问Hyper-V中的虚拟机。

基于会话的虚拟化部署(Remote App)无需主机中具有Hyper-V功能,在 Windows Server 2012 中,远程桌面服务中的会话虚拟化部署包括高效配置和管理基于会话的桌面的新方式。在早期版本的远程桌面服务中,RD 会话主机服务器的现行管理在每服务器级别执行。通过使用会话虚拟化部署方案,支持集中式管理和安装。

四、设置远程桌面服务域环境

1、使用windows Server 2012 R2 配置AD-DC为域控制器

无论是采用什么部署方式,都需要设置基础结构,在企业环境中准备远程桌面服务环境,必须完成安装和配置域控制器 (AD-DC),使用 Windows Server 2012 R2 配置域控制器 AD-DC,配置步骤如下:

步骤1、全新安装Windows Server 2012 R2,并配置域控计算机名称为AD-DC。

clip_image002

步骤2、配置 TCP/IP 属性,使 AD-DC 具有 IPv4 静态 IP 地址 192.168.1.100。使用 AD-DC\Administrator 帐户登录到 AD-DC,依次单击「开始」、"控制面板"、"网络和 Internet"、"网络和共享中心"、"更改适配器设置",右键单击"本地连接",然后单击"属性"。在"网络"选项卡上,单击"Internet 协议版本 4 (TCP/IPv4)",然后单击"属性"。单击"使用下面的 IP 地址"。在"IP 地址"框中,键入192.168.1.100。在"子网掩码"框中,键入 255.255.255.0,然后单击"确定"。在"网络"选项卡上,单击"确定",然后关闭"本地连接属性"对话框。

clip_image003

2、在AD-DC服务器中添加Active Directory域服务角色

单击「服务器管理器」,然后单击"管理"。在"管理"框中,选择添加角色和功能,然后在开始之前界面中,点击"下一步",在安装类型页面中,选择"基于角色或者基于功能的安装"点击下一步,在服务器选择页面中,选择"从服务器池中选择服务器",默认为本机,然后点击下一步。在服务器角色页面中,勾选"Active Directory 域服务",点击下一步。直到安装工作结束。

clip_image005

3、将AD-DC服务器提升为域控制器

步骤1、打开"运行"。在"运行"框中,键入 dcpromo,然后单击"确定"。在"Active Directory 域服务配置向导"部署配置页上,选择"添加新林",在根域名中输入"mabofeng.com"然后单击"下一步"。

clip_image007

步骤2、在域控制器选项页面中,选择新林和根域的功能级别,都选择为Windows Server 2012 R2,并指定域控制器功能,勾选"域名系统(DNS)服务器",最后输入目录服务还原模式(DSRM)密码,点击下一步。

clip_image009

步骤3、在"DNS选项"页面中,由于之前选择域控制器功能包括"域名系统(DNS)服务器",所以在"DNS选项"页面中,无法创建该DNS服务器的委派,之后点击下一步。

寄语笑笑  阅读原文»

寄语笑笑

笑笑,妈妈的肚子越来越大了,这说明你在一天天长大。现在,你就要和我们见面了。反而到了这个时候,你却安静了下来,似乎在妈妈肚子里和我们捉起了迷藏,让大家都猜不到什么时候才能和你见面。咳,你这个小家伙,还没出生,就开始调皮了!

妈妈孕育你很辛苦,现在睡觉无论什么姿势,都不舒服,还肚子疼。而且常常半夜或天没亮就过早醒来,影响睡眠,行动也到了最不方便的时候,长大后一定要懂得孝敬妈妈哦!不过爸爸很愧疚,在这段时间里,爸爸一直忙于工作,对你和妈妈的照顾一直不够周到。就在不久前,妈妈还大着肚子给爸爸做饭、洗衣服。现在想来,真是惭愧啊!爸爸为了弥补自己的过错,决心在这最后的日子里好好照顾你和妈妈。刚刚就忙乎了半天把汤用微波炉热了,还把奶奶切好的土豆丝炒糊了且忘了按妈妈的要求放醋,然后端给妈妈吃。不过妈妈也有不对的地方,前几天还挺着大肚子爬上防盗网执行晾晒尿片这样的高空作业。对于妈妈这种对你以及妈妈本人和爸爸都极不负责任的行为,爸爸代表我们一家三口,对妈妈提出严厉批评!

妈妈是坚强的,一直坚持上班,直到前几天才开始休假。我们都决定了,让妈妈用顺产的方式把你带到这个丰富多彩的世界。听说很疼的,不过爸爸相信坚强的妈妈一定不会退缩的,你也一定能够继承妈妈坚强的基因。

笑笑,都说三岁看老。这话虽然有些绝对,却也揭示了3岁之前教育的重要性。爸爸也是搞教育的,深知人的教育重点在于成年之前的人格教育,而且年龄越小,可塑性越强,越是教育的好时机。过了相应的年龄段,再想培养好的性格、矫正不良品性,就难了。这说明,你越小,对你的教育就越应该重视,爸爸妈妈的责任就越大。不过,刚有孩子的爸爸妈妈,也正好处于事业的上升期。因此有的爸爸妈妈愿意花很多钱在孩子身上,却不愿多花时间陪他们。也就是说,教育好你,需要爸爸妈妈有牺牲精神。很多教育成功的事例,背后都有父母的牺牲。爸爸在这里向你保证,虽然爸爸有很多工作要做,但是,该陪你、照顾你,爸爸一定不会推辞。大教育家陶行知说,"生活即教育"。良好品性的培养,就是通过生活中的点点滴滴来实现的。所以,在生活中,爸爸会尽量满足你的所有合理需求,但该严格要求的时候一定不会心软,到时候可不许哭鼻子哦!

笑笑,爸爸不知道你将来会是一个什么样的人,但爸爸希望你一定要具有以下优秀品质:坚毅、有责任感、懂得团结人、胸怀大志、求知若渴。

坚毅,是爸爸最为看重的品质。它表现为卓越的自控能力;迎着目标不怕吃苦、不断克服困难、不懈奋斗的强大意志力;以及面对挫折永不服输的顽强和坚韧。人能控制自己,方能积聚力量,避免犯错;唯有顽强不懈的努力,才能到达胜利的彼岸。只有坚毅的人,才配拥有精彩的人生!

责任,似乎是一个沉重的话题。但只有敢于担当的人、有责任感的人,才值得信任、托付。责任感,是领袖精神的核心。

常言道,"一个好汉三个帮"。当今的世界,早已过了个人英雄主义的时代。无论大事、小事,都需要众人齐心协力,形成一股合力,才能做好。因此,懂得如何团结不同的人,引领大家朝着同一个目标前进,就尤为重要了。

笑笑,你若将来能成为某一行业的领袖,爸爸妈妈自然如中了500万彩票那样兴奋不已。但无论如何,爸爸都希望将来的你,不要贪图稳定安逸的生活,要胸怀大志,勇于冒险,敢于寻求、开拓他人未曾或不敢涉猎的领域。亦步亦趋,就永远不会有什么出息,无论你身处哪个行业――学术界、工商业界或其他任何行业,概莫能外。另外,孔夫子教导我们:"取乎其上,得乎其中;取乎其中,得乎其下;取乎其下,则无所得矣"。爸爸希望你胸怀大志,也有这方面的考虑。

这是个竞争激烈、快速变化,因此需要终身学习的世界。不学习,就会落伍,被淘汰。因此,爸爸希望你有一颗求知若渴的心,不断地学习。将来的你,不应做分数的奴隶,仅仅为了分数而学习,而应该为了增长自己的才干而学习。最好,你应该能够创造知识供他人学习。

笑笑,孩子是父母的一面镜子。爸爸给你提出了那么多希望,那么爸爸妈妈本人首先就应该做到这些,才能为你树立起好榜样,这也就给爸爸妈妈自身的进步提供了压力乃至动力。所以说,有了孩子,对于父母们来说,也是一次新生。

我们期待着你的到来,和你共同进步!

本文出自 "肖凡的专栏" 博客,请务必保留此出处http://legend2011.blog.51cto.com/3018495/1315908

阅读更多内容

2013年10月26日星期六

【视频教学:性能优化】Maclean Liu的Oracle性能优化讲座第一回《真正读懂Oracle SQL执行计划》

本邮件内容由第三方提供,如果您不想继续收到该邮件,可 点此退订
【视频教学:性能优化】Maclean Liu的Oracle性能优化讲座第一回《真正读懂Oracle SQL执行计划》  阅读原文»

用户名:maclean_007
文章数:1316
评论数:1
访问量:2596
无忧币:157
博客积分:13360
博客等级:10
注册日期:2011-03-31

【视频教学:性能优化】Maclean Liu的Oracle性能优化讲座第一回《真正读懂Oracle SQL执行计划》

【视频教学:性能优化】Maclean Liu的Oracle性能优化讲座第一回《真正读懂Oracle SQL执行计划》

本次的讲座议程包括:

  1. 如何查看SQL执行计划

  2. 正确的执行计划执行顺序

  3. 通过示例来实践正确阅读执行计划的方法

  4. 介绍执行步骤的特性

读懂执行计划有什么用呢?

  1. 执行计划贯穿Oracle调优始终

  2. 了解执行计划的真实执行过程,将有助于优化

  3. 对于Oracle的原理理解有一定帮助

  4. 解决部分同学心中多年的疑惑

  5. 读懂执行计划,SQL调优的第一步

什么是SQL Execution Plan执行计划?

  • SQL是声明型语言,她只说我要去哪里,但很少告诉你到底如何去?

  • RDBMS所要做的是基于算法和现有统计信息计算最佳路径:

  • Access Path访问路径分析:访问数据是用TableScan还是index (FFS)

  • 对返回的行结果集做例如Join的进一步处理,以便返回行给客户端

  • SQL语句的执行最终会落实为Oracle执行步骤的组合 =》【SQL执行计划】

更多内容见本次讲座正式版 讲义PDF版目前可供下载:

http://s2.51cto.com/wyfs01/M00/31/19/wKioJlJmeZ-gfqFBAB8YzhTf2GI069.pdf


本次讲座的视频已经上传,收看地址 : http://edu.51cto.com/lesson/id-14594.html

1p.png

2p.png

3p.png

4p.png

5p.png

分享至 一键收藏,随时查看,分享好友!
昵称:
登录快速注册
内容:
返回顶部

【思想导师】为自己设计的养成游戏  阅读原文»

每日博报 精彩不止一点关闭
【思想导师】为自己设计的养成游戏

在工作中,对外,我是培训讲师及咨询顾问,但对内,我还是新员工的思想导师,就是帮助这些即将拍死我们的"后浪"们,解决一些工作中的非业务的疑惑。

整理了一下本月的问题,主要的问题有如下三个,与大家分享:

1、我们工作中会遇到各种不顺,究竟需要哪些能力?

2、如何在讲台上讲好一件事情?

3、如何让自己坚持做一件事情?

下面分享我的经验:

1、关于这个问题,我结合了自己的采购经验、销售经验、工人经验、运维经验、项目经验、培训及顾问经验,再加上项目管理及人力管理的一些理论框架,做过较全面的整理。并且,在不断的细化完善中。

我将我们需要努力的事情,分为六个模块,按顺序逐级深入,也逐级提升难度,并影响着我们的高度。而如果能融会贯通,则会发现最后一级又反过来对第一级有着强有力的推动作用,形成了一个巧妙的闭环(很类似于戴明环对于质量的提升过程)。当然,这并不仅仅适用于IT,如果思维够灵活,这是普适于各行行业的。

一、技术及规范

这一模块,其实就是我们工作的表象,是我们的本职工作,一定要过关的。

关于这部分,可以从技术和行业规范两个方面努力,并按照先广后深、广深结合的"T"字模型培训自己。

二、经验及工具

经验及工具是我们工作的后台支撑,这个不像上面的技术那样直接的表现,但是没有经验及工具的辅助,我们的本职工作是很难做的好的。

关于这部分的积累,可以从四个方面努力:日程管理、知识库管理、效率提升、文档报告能力。

三、沟通表达

还记得小时候,大人们对内向的小孩子,往往会建议去做技术,不要太多的和人打交道。但是,工作几年后我们就发现,无论做什么工作,沟通表达的能力都是很重要的,而且,越想往上发展,越显得重要。

关于这部分,可以从以下三个方面努力:听、说、问。

四、项目环境

俗话说,识时务者为俊杰,在我们的工作中,如果对工作环境都不了解,就相当于盲人走夜路。没有方向的人,走的越努力,偏的越远。

这部分,我们要关注:技术环境和人文环境。

五、项目管理的知识体系

自己摸爬滚打几年下来,有些人会觉得身心俱疲,走的杂乱无章,有些人会觉得小有所成,但高度不够。那么,我们需要项目管理的知识体系,来充实自己,这里可以说是集成了各界精英的思维,为我们如何做事,总结下了宝贵的经验。

关于这部分,向做IT的朋友们推荐:PMP和ITIL。

六、哲学思考

很多朋友一看"哲学"两字,顿觉虚无缥缈,空洞无味,其实不然,借用冯友兰先生的定义:哲学就是思想思想的思想。虽然看起来挺绕,但实际上就是要不断的进行自我反思,然后对反思的结果再反思,不断的增加自己思想的深度。

关于这部分,推荐中西文化结合学习。中国的可以读读先秦百家争鸣的经典,西方的,可以从传统的力学入手,逐渐看些相对论、量子力学等。

如果实在觉得吃力,中国的可以读些通俗的史料,而西方的,可以读些像《彼得原理》、《潜意识》《动机与人格》,这样的通俗些的社会及心理学经典之作。

在这里真的不推荐大家看小说,特别是那种一看就是粗制烂造的小说。真的是没啥意义而又极其浪费精力。

好了,这就是我的总结,写的非常简单。

2、关于这个问题,要说的就太多了。这里只是简单的说几个重点:肢体语言、语音语调、内容。

3、托延症已经成了这个时代,我们的通病。当然我也有些小心得,如要您也觉得自己常常是计划的挺好,也非常想坚持下去,可是总是半途而废,废后又内疚不已。那么可以参照我另一篇博文的建议方法:http://ghostlan.blog.51cto.com/5413429/1300455

先分享这些,有兴趣的欢迎讨论。

本文出自 "天鬼皇" 博客,谢绝转载!

分享至 一键收藏,随时查看,分享好友!