CakePHP程序员必须知道的21条技巧范文大全

时间:2019-05-14 16:14:35下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《CakePHP程序员必须知道的21条技巧》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《CakePHP程序员必须知道的21条技巧》。

第一篇:CakePHP程序员必须知道的21条技巧

这篇文章可以说是CakePHP教程中最经典的了。虽然不是完整的手把手系列,但作者将自己使用CakePHP的经验总结了21条,这些尤其是对新手十分有用。

翻译时故意保留了一些CakePHP中特有的词语没有翻译,如controller、model等。相信学过CakePHP的人应该马上就能理解它们的意思吧。

另外,CakePHP的wiki已经失效,取而代之的是一个名为bakery的网站。原文中引用的wiki的链接也都已更新到了bakery上。

快速创建静态页面

我想建立几个页面,它们仅包含静态数据,使用默认layout,不需要任何model。最初我试图创建一个controller并为每个静态页面定义一个action。但这种方法很笨拙,也不适合快速创建静态页面。

实际上只要使用pages controller就可以做到——只要在 views/pages 文件夹下创建一个 view,就可以通过 /pages 来访问。例如,我创建了 /views/pages/matt.thtml,就可以通过 http://

我需要修改调用$html->selectTag()时生成的,使其生成“请选择”选项来代替默认的空白选项。我也希望单选按钮能带有标签,这样用户就无需精确地点击单选按钮本身,而只需单击到关联的文字上即可。

建立 /app/config/tags.ini.php,然后添加以下的内容:

;Tag template for a input type='radio' tag.radio = “%s”

;Tag template for an empty select option tag.selectempty = “--Please Select--”

你可以从/cake/config/tags.ini.php中获得完整的标签列表。但我不建议修改该文件,否则升级CakePHP时可能会让你的修改丢失。

自定义404页面

如果你需要自定义404页面,只需创建 /app/views/errors/error404.thtml。

第二篇:50个程序员必须知道的网站

50个程序员必须知道的网站csdnVc知识库 游戏开发资源网

开源力量 http://prg.com.cn/

中国电子网 http://21ic.com/

编程中国 http:///bbs/

电脑爱好者 http://.cn/

sybase中国 http://.cn/gvswse/site/china/index.jsp

pbdr http:///

apache http:///index.php

驱动开发网42 安全焦点 http:///44 fyter的博客 http:///46 operamask http:///49 电脑教育与WEB教育在线 http://210.40.7.188/50 中国dos联盟 http:///

第三篇:java程序员必须知道的八大排序

Java程序员必知的8大排序

2012-06-28 14:01 without0815 博客园 我要评论(0)字号:T | T

本文主要详解了Java语言的8大排序的基本思想以及实例解读,详细请看下文 AD: 51CTO云计算架构师峰会 抢票进行中!

8种排序之间的关系:

1,直接插入排序

(1)基本思想:在要排序的一组数中,假设前面(n-1)[n>=2] 个数已经是排 好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数 也是排好顺序的。如此反复循环,直到全部排好顺序。(2)实例

(3)用java实现

1.2.3.4.5.package com.njue;

public class insertSort { public insertSort(){

inta[]={49,38,65,97,76,13,27,49,78,34,12,64,5,4,62,99,98,54,56,17,18,23,34,15,35,25,53,51};6.7.8.9.10.11.12.13.14.15.16.17.18.int temp=0;

for(int i=1;i

int j=i-1;temp=a[i];

for(;j>=0&&temp

a[j+1]=a[j];//将大于temp的值整体后移一个单位

}

a[j+1]=temp;}

for(int i=0;i

2,希尔排序(最小增量排序)

(1)基本思想:算法先将要排序的一组数按某个增量d(n/2,n为要排序数的个数)分成若干组,每组中记录的下标相差d.对每组中全部元素进行直接插入排序,然后再用一个较小的增量(d/2)对它进行分组,在每组中再进行直接插入排序。当增量减到1时,进行直接插入排序后,排序完成。(2)实例:

(3)用java实现

1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.public class shellSort { public shellSort(){

int a[]={1,54,6,3,78,34,12,45,56,100};

double d1=a.length;

int temp=0;

while(true){

d1= Math.ceil(d1/2);

int d=(int)d1;

for(int x=0;x

for(int i=x+d;i

int j=i-d;temp=a[i];

for(;j>=0&&temp

a[j+d]=temp;} }

if(d==1)

break;}

for(int i=0;i

3.简单选择排序(1)基本思想:在要排序的一组数中,选出最小的一个数与第一个位置的数交换;

然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。(2)实例:

(3)用java实现

1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.4,堆排序 public class selectSort { public selectSort(){

int a[]={1,54,6,3,78,34,12,45};

int position=0;

for(int i=0;i

int j=i+1;position=i;

int temp=a[i];

for(;j

if(a[j]

a[position]=a[i];a[i]=temp;}

for(int i=0;i

堆的定义如下:具有n个元素的序列(h1,h2,...,hn),当且仅当满足(hi>=h2i,hi>=2i+1)或(hi<=h2i,hi<=2i+1)(i=1,2,...,n/2)时称之为堆。在这里只讨论满足前者条件的堆。由堆的定义可以看出,堆顶元素(即第一个元素)必为最大项(大顶堆)。完全二叉树可以很直观地表示堆的结构。堆顶为根,其它为左子树、右子树。初始时把要排序的数的序列看作是一棵顺序存储的二叉树,调整它们的存储序,使之成为一个堆,这时堆的根节点的数最大。然后将根节点与堆的最后一个节点交换。然后对前面(n-1)个数重新调整使之成为堆。依此类推,直到只有两个节点的堆,并对它们作交换,最后得到有n个节点的有序序列。从算法描述来看,堆排序需要两个过程,一是建立堆,二是堆顶与堆的最后一个元素交换位置。所以堆排序有两个函数组成。一是建堆的渗透函数,二是反复调用渗透函数实现排序的函数。(2)实例:

初始序列:46,79,56,38,40,84 建堆:

交换,从堆中踢出最大数

依次类推:最后堆中剩余的最后两个结点交换,踢出一个,排序完成。(3)用java实现

1.2.3.4.import java.util.Arrays;

public class HeapSort { int

a[]={49,38,65,97,76,13,27,49,78,34,12,64,5,4,62,99,98,54,56,17,18,23,34,15,35,25,53,51};5.6.7.public HeapSort(){ heapSort(a);} 8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40.41.42.43.44.45.46.47.48.49.50.public void heapSort(int[] a){ System.out.println(“开始排序”);

int arrayLength=a.length;

//循环建堆

for(int i=0;i

//建堆

buildMaxHeap(a,arrayLength-1-i);

//交换堆顶和最后一个元素

swap(a,0,arrayLength-1-i);

System.out.println(Arrays.toString(a));} }

private void swap(int[] data, int i, int j){

// TODO Auto-generated method stub

int tmp=data[i];data[i]=data[j];data[j]=tmp;}

//对data数组从0到lastIndex建大顶堆

private void buildMaxHeap(int[] data, int lastIndex){

// TODO Auto-generated method stub

//从lastIndex处节点(最后一个节点)的父节点开始

for(int i=(lastIndex-1)/2;i>=0;i--){

//k保存正在判断的节点

int k=i;

//如果当前k节点的子节点存在while(k*2+1<=lastIndex){

//k节点的左子节点的索引

int biggerIndex=2*k+1;

//如果biggerIndex小于lastIndex,即biggerIndex+1代表的k节 if(biggerIndex

//若果右子节点的值较大

if(data[biggerIndex]

//biggerIndex总是记录较大子节点的索引

biggerIndex++;} }

//如果k节点的值小于其较大的子节点的值

if(data[k]

//交换他们

swap(data,k,biggerIndex);点的右子节点存在 51.52.53.54.55.56.//将biggerIndex赋予k,开始while循环的下一次循环,重新保 k=biggerIndex;}else{

break;}

}

}

align=“left”>    }

}

5.冒泡排序

(1)基本思想:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。(2)实例:

(3)用java实现

1.2.3.public class bubbleSort { public bubbleSort(){ int

a[]={49,38,65,97,76,13,27,49,78,34,12,64,5,4,62,99,98,54,56,17,18,23,34,15,35,25,53,51};4.5.6.7.8.9.int temp=0;

for(int i=0;i

for(int j=0;j

if(a[j]>a[j+1]){ temp=a[j];a[j]=a[j+1];10.11.12.13.14.15.16.17.18.a[j+1]=temp;} } }

for(int i=0;i

6.快速排序

(1)基本思想:选择一个基准元素,通常选择第一个元素或者最后一个元素,通过一趟扫描,将待排序列分成两部分,一部分比基准元素小,一部分大于等于基准元素,此时基准元素在其排好序后的正确位置,然后再用同样的方法递归地排序划分的两部分。(2)实例:

(3)用java实现

1.public class quickSort { 2.int

a[]={49,38,65,97,76,13,27,49,78,34,12,64,5,4,62,99,98,54,56,17,18,23,34,15,35,25,53,51};

3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.public quickSort(){ quick(a);

for(int i=0;i

public int getMiddle(int[] list, int low, int high){

int tmp = list[low];//数组的第一个作为中轴

while(low < high){

while(low < high && list[high] >= tmp){

high--;}

list[low] = list[high];//比中轴小的记录移到低端

while(low < high && list[low] <= tmp){ low++;}

list[high] = list[low];//比中轴大的记录移到高端

}

list[low] = tmp;//中轴记录到尾

return low;//返回中轴的位置

}

public void _quickSort(int[] list, int low, int high){

if(low < high){

int middle = getMiddle(list, low, high);//将list数组进 _quickSort(list, low, middle1);} } } 行一分为二

归排序

排序

7、归并排序

(1)基本排序:归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。(2)实例:

(3)用java实现

1.2.3.4.import java.util.Arrays;

public class mergingSort { int

a[]={49,38,65,97,76,13,27,49,78,34,12,64,5,4,62,99,98,54,56,17,18,23,34,15,35,25,53,51};5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.public mergingSort(){ sort(a,0,a.length-1);

for(int i=0;i

public void sort(int[] data, int left, int right){

// TODO Auto-generated method stub

if(left

//找出中间索引

int center=(left+right)/2;

//对左边数组进行递归

sort(data,left,center);

//对右边数组进行递归

sort(data,center+1,right);

//合并

merge(data,left,center,right);} }

public void merge(int[] data, int left, int center, int right){

// TODO Auto-generated method stub

int [] tmpArr=new int[data.length];

int mid=center+1;

//third记录中间数组的索引

29.30.31.32.33.34.35.36.37.38.39.40.41.42.43.44.45.46.47.48.49.50.51.52.53.54.int third=left;

int tmp=left;

while(left<=center&&mid<=right){

//从两个数组中取出最小的放入中间数组

if(data[left]<=data[mid]){ tmpArr[third++]=data[left++];}else{

tmpArr[third++]=data[mid++];} }

//剩余部分依次放入中间数组

while(mid<=right){

tmpArr[third++]=data[mid++];}

while(left<=center){

tmpArr[third++]=data[left++];}

//将中间数组中的内容复制回原数组

while(tmp<=right){

data[tmp]=tmpArr[tmp++];}

System.out.println(Arrays.toString(data));}

}

8、基数排序

(1)基本思想:将所有待比较数值(正整数)统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后,数列就变成一个有序序列。(2)实例:

(3)用java实现

1.2.3.4.5.import java.util.ArrayList;import java.util.List;

public class radixSort {

int

a[]={49,38,65,97,76,13,27,49,78,34,12,64,5,4,62,99,98,54,101,56,17,18,23,34,15,35,25,53,51};6.7.8.9.10.11.12.13.14.15.16.public radixSort(){ sort(a);

for(int i=0;i

public void sort(int[] array){

//首先确定排序的趟数;

int max=array[0];

for(int i=1;i

if(array[i]>max){ 17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40.41.42.43.44.45.46.47.48.49.50.51.52.53.54.55.56.57.58.59.max=array[i];} }

int time=0;

//判断位数;

while(max>0){ max/=10;time++;}

//建立10个队列;

List queue=new ArrayList();

for(int i=0;i<10;i++){

ArrayList queue1=new ArrayList();queue.add(queue1);}

//进行time次分配和收集;

for(int i=0;i

//分配数组元素;

for(int j=0;j

int x=array[j]%(int)Math.pow(10, ArrayList queue2=queue.get(x);queue2.add(array[j]);queue.set(x, queue2);}

int count=0;//元素计数器;

//收集队列元素;

for(int k=0;k<10;k++){

while(queue.get(k).size()>0){

ArrayList queue3=queue.get(k);array[count]=queue3.get(0);queue3.remove(0);count++;} } }

}

i+1)/(int)Math.pow(10, i);60.}

第四篇:几个你必须知道的辩论技巧

为争辩定下一个积极的格调

在人际交往中,每个人都会遇到相异于自己的人。大至思想观念,为人处事之道,小至对某人、某事的看法一评论。这些程度不同的差异都会外化成人与人之间的争执与论辩。留心我们周围,争辩几乎无所不在:一场电影,一部小说,一个特殊事件,某个社会问题都能引起争辩;甚至连某人的发式与妆饰也能引起争辩。

从某种意义上看,不同见解的争辩过程玉是寻求真理的过程。辩论,就是为了探求真理,坚持真理,维护真理而相互劝说。然而由于论争的任何五方都想推翻对方的看法,树立自己的观点,故比,辩论和寻常说话不同,它是带有“敌意”的语言行为,因而有所谓唇枪舌剑之说。于是,大凡争论留给我们的印象都是不愉快的,最容易使我们良好的交际愿望落空。

如果你能够在论辩之前多投入一些思考,在论辩结尾搞好“善后”工作,就能使你在辩论这种特殊交际场合,既做到个人心情舒畅,探求了真理,又不伤人际和气。作为职业经理人在工作中,不可避免的遇到要与人辩论的情况,如何让对方赞同自己的观点又不伤和气,是一门需要训练的艺术。在MBA面试中,很多学校引进了辩论赛,清华更是辩论赛的典型代表。

一、为争辩定下一个积极的格调

(一)避免无益的争辩

当你意识到自己的想法、意见与人相左时,当你的言行遭人非议时,你的知一本能大概就是奋起辩驳。许多毫无意义的事情往往就在这时发生了。为了避免无益的辩论,此时,你需对如下问题进行冷静思考:

1.如果你能最终获得争辩的胜利,它有什么意义?没有什么积极意义,大可不必动用你的“唇枪舌剑”,一笑置之最妙。同样,你向别人提出“挑战”的时候,一定要选择有价值的,通过争论使自己和他人都能受到启发和教育的问题,不必在那无关宏旨的细节琐事上做文章。

2.你的辩论一番的欲望更多的是基于理智还是感情原因?----诸如虚荣心、表现欲望或面子上下不来。如果是感情原因,大可就此打住。同样,我们向人提出问题是否有感情的因素?如有,就同辩论的实质----探求真理背道而驰了。所以最好别去做这种不积极的提示而把他人引入无谓争辩的歧途。

3.对方是充满敌意的吗?他对你有深刻成见吗?如果是,那么在这种非理性的氛围中最好不要再火上浇油。同样,如果你是处于这样一种心境,绝对不要向对方提出论题辩论,因为此时你提不出理性的论点,在辩论伊始,就注定了你失败的命运。

(二)使争辩成为一种愉快的、和平的思想交换

辩论是为了明是非,求真理。只要我们的辩论出自公心、就能采取积极的态度,使用积极、文明、恰当的论辩语言去参加辩论。

1.树立正确的辩论价值观,即为追求真、善、美而去积极地争辩。做到观点正确,旗帜鲜明。

2.树立正确的辩论道德观。把辩论置于科学基础之上。以理服人,让事实说话。辩论者要有高深的涵养;不搞诡辩,不揭隐私;不搞人身攻击;不把观点的敌对引申为人际的敌对;不靠嗓门压人,有理不在声高,如果你能有制有节的音调语气道出你的理,其效果不亚于如雷贯耳。

3.用真情、善意、美感与人辩论,就能做到晓之以理、动之以情。理与情恰恰是列车通往“积极争辩”的双轨,缺一不可。有位诗人说过,全是理智的心,好像一把全是锋刃的刀,让使用它的人满手流血。在争辩中,“理”是争的目的和取胜的保证。然而人又是感情动物,如果你在论辩中既能做到以理制理,又能以情明理,你的辩论将会成为一种愉快的、和平的思想交流。你们彼此会以这样的话语来结束论辩:“听君一席话,胜读十年书。”“您让我心服口服。”真正是既争出了公理,又增进了人际和谐,达到了积极论辩的目的。

(三)掌握“解剑息仇”的妙方

经过一阵唇舌剑,胜负已成定局。做好辩论的善后工作,具有非常重要的意义。在生活中,观点的对立极易产生人际间的隔阂。因此,学习辩论语言既要学会辩论技巧,更要懂得如何“解剑息仇”,这是在辩论这种特殊交际场合下,社交者做到言谈有“礼”的最高境界。下面就是使你达到这最高境界的三个途径:

1.如果你失败了,而且败得其所,必须要有敢向真理低头的胸怀。向真理低头并不等于向论辩者本人低头。在真理面前人人平等。你所服从的是对方所道出的真理,只能说你同他一样,对下理有了同等水平的认识。在人格你们永远是平等的。所以,当你败下阵来的时候,应该以坦诚的态度来表达自己在这场争辩中所受的教益,以此道出你人格的伟大。在心理上足以弥补因辩论失败所造成的遗憾。

2.如果你在辩论中已经眼见对方哑口无言,败势已定,便应拿出不杀降者的气魄来,一是主动打住话题,结束对立场面;二是巧妙地对为对方搭个台阶,让他在不失面子的前提下得以“平安下台”,胜负自是彼此心照不宣,何不抓住重归于和平的机会呢?

3.如果你因辩论的需要而已经把对方打得一败涂地,切不可为了一点点虚荣把旗帜挂在脸上。人在得意时,克制更是一种美德。争论结束后,给对方端一杯茶,笑言一句:“瞧我们像孩子一样,这么认真!”或轻松自如地转一个话题。请记住:争论是一回事,人际交情又是一回事。人性都有很软弱的一面,易被击垮也易被扶起,你只要说一两句得体的话语,便可恢复一个刚刚失去的心理平衡,让他重返愉快平静,那又何乐而不为呢?!如何准备辩论赛

论辩赛是许多青年同志喜爱的一项侧重于人们言辞表达能力的比赛。然而,不少青年,尤其是一些年轻的学生,虽参赛热情很高,却由于缺乏一定的论辩赛知识,或赛前不懂如何正确准备,或赛中不要领,初次上阵便遭受挫折。因此,对初学者来说,掌握一些论辩赛的基本入门知识显得十分必要。

那么,初次参加论辩赛的参赛队员在赛前该做好哪些准备呢?主要有四项:认识准备、核对准备、立论准备和试辩准备。

(一)认识准备

所谓认识准备,是指参赛队员在赛前对“论辩赛”的性质和特点要有所认识。我们知道属于口头论辩的大致有三类:一类是专门场合下进行的有特定议题的论辩,如谈判论辩、法庭论辩;一类是由日常生活中、工作中的矛盾引起的人与人之间的争辩,如邻里争辩、同事间争辩、上下级争辩;再一类就是各种形式的论辩赛。前两种论辩,论辩双方各自有明确的立场和主张,辩论的目的是为了说服对方接受自己的观点或争取第三者支持自己的观点。于此同时,自己也有被对方说服或作出妥协的心理准备。论辩赛则不同,论辩赛是一咱作为比赛项目来进行的模拟论辩(即论辩演习)。这种论辩往往不问论辩者本人的立场和主张,而侧重于人们的论辩技巧的比赛。比赛双方都不准备说服对方或被对方说服,而以驳倒对方、争取评委的裁决和听众的反响来击败对方。因此,这种比赛有以下三个特点:

1.论辩的题目、论辩的程序、发言的时间等,都是由论辩赛的组织者所决定,参赛者必须按规定进行论辩,不能随意改变。

2.比赛胜负标准包括立论、材料、辞令、风度以及应变技巧等综合因素、胜负由评委根据标准及主观印象进行裁定。

3.论辩时只能针对对方的观点和理由进行攻击,而不能涉及对方的立场和人品。

初赛者了解了论辩赛的这些性质和特点,就不会在比赛中,在思想和方法上与日常争辩相混淆。

(二)核对准备

某队初次参加论辩赛,到正式临辩时,他们突然发现黑板上写的辩题为《当今青年一代是否缺乏社会责任感》,而他们事行准备的辩题却是《当今青年学生是否缺乏社会责任感》。某队经过初赛、复赛进入了决赛,在决赛开赛前,突然听到比赛主持人宣布各方允许发言时间比初赛、复赛时增加一倍,而他们事先却按初赛、复赛规定的时间准备辩词。更有甚者,进入赛场后,双方才发现谁为正方谁为反方都未搞清楚。凡此种种,都是由于初赛者缺乏经验,在事先准备过程中缺少仔细核对有关比赛事项这一环所造成的。

前面已经说过,论辩赛是一项新近发展起来的比赛项目,目前虽有“国际雄辩赛”这样大型的论辩赛,但还没有统一的比赛规则。事实上,论辩赛的规模有大有小,层次有高有低,各主办单位的具体要求也会因时因地而不尽相同,所以论辩赛的规则也很难趋于统一。既然目前论辩赛的规则难于统一,这就要求参赛者在接到比赛通知后,不能立即简单地按照通知上的要求去准备,更不能想当然去准备,而应设法主动地找主办单位仔细核对一下通知上各项比赛规定和要求是否实无误,包括辩题的确切的字面样子,正反方所属,论辩程序细则,各位队员的分工和允许发言时间等,这既是为了确保本方准备辩词时无误,又是为了防止主办单位的工作上有可能失误。一些主办单位本身也是初次主办论辩赛,由于缺乏经验,难免出现疏忽,包括通知传递时的差错,这就要求参赛者每次都要主动认真地核对有关比赛事宜,以使比赛获胜取得起码保证。

(三)立论准备

辩题被明确无误地确认后,参赛队员就可以根据辩题,共同商量,研究确立一个最有利于本方论证的具体的总论点。所谓最有利于本方,就是指该总论点不仅观点正确,旗帜鲜明,而且用之攻能破对方任何的立论,用之守能抵挡对方的任何攻击。能不能确立这样一个总论点是一次论辩赛准备的成败关键。

为了要确立这样一个总论点,首先要对辩题进行严格的审题,也就是要对辩题字面上的每个词或词组逐个进行概念分析,即通常所说的“破题”。这种分析要同时站在双方的立场审视,不能一厢情愿。尤其是要分析出哪些词或词组对对方立论具有潜在的有利因素,可能成为双方首先争论的焦点,因为一般的论辩赛双方都会抓住辩题中的某个词项解释入手开始辩论,有时会出现整个论辩赛始终围绕这种解释来进行。因此,尽量设法站在一定理论高度,对辩题作出有利于本方观点的界定,以获得大多数听众的“公认”,是极为重要的一环。为了典型说明这个问题,下面试举1990年第三届亚洲大专辩论会一例。

1990年第三届亚洲大专辩论会有一辩题为《儒家思想是亚洲四素》。南京大学持反方。为了说明儒家思想不是主要推动因素,南大对“儒家思想”“亚洲四小龙经济快速成长”“主要”“推动因素”四项词组进行了剖析,发现辩论双方争论焦点肯定会在“主要因素有多个,儒家思想是其中之一。”于是,南大把“主要因素”界定为必须是具有总揽全局功能这一点上。这样一来,南大总论点的方向便明朗了:儒家思想只是四小龙取得经济快速成长的背景条件,而并非是一个主要推动因素,推动四小龙经济快速发展的主要推动因素是四小龙做得尤为突出的能总揽全局的正确而灵活的战略和政策。

能攻能守的总论点的确立是论辩赛准备的关键,但并不等于说在实际论辩中就一定获胜。如何使这个总论点在实际的唇枪舌剑中充分发挥好,还要有一定的战略战术与之配合。所谓战略,是指论辩中用以争取胜利的带有全局性的总的论战方法;所谓战术,则是指论战中的一些具体的技术方法。上面列举的南京大学一例,就是制定了“避实就虚”的战略和设计了一些具体的战术,才保证了整个论辩赛的成功。

由此可见,立论准备包括三个过程:审题、确立总的具体论点、设计相配的战略战术。应该说,这三个过程是整个论辩赛准备的灵魂,初学者在这个准备阶段应昼找一些有一定理信纸水平又有一定实际论辩能力的人请教一下。此外,不应把立论准备看作是一个孤立的静止准备看作是一个孤立的静止准备阶段,而应在以后的辩词撰写和试辩过程中随时要审视先前的审题总论点及战略战术设计有无不慎之处,以便及时修正。

在立论准备停当,各辩手便可分头撰写自己分工的辩词。(初学者如何撰写辩词由另文介绍)

(四)试辩准备

如同其他比赛一样,论辩队要想在正式比赛中获胜,一定要在正式比赛前搞一次尝试性的比赛,以检验自己的赛前准备是否经得起实际的考验。为了达到检验的效果,试辩条件和气氛要尽量搞得逼真些,这就需要在正式参赛队员进入准备阶段的同时,应有一支与之实力相当的假设“对方”也进入准备阶段,并且双方都应处于“保密”状态。不过,为了增加正式队员的一些难度,正式队员应故意泄露些立论方面的要点,来吸引“假设对方”作有针对性的进攻准备,用之在试辩中检验参赛一方的立论和战略战术是否能奏效。

试辩的另一个意图,是让参赛队员进入角色。前面已经说过,论辩赛的最大特点就是辩题观点不一定与论辩者本人最初的观点相一致,就像某些演员本身的性格与剧中人的性格不一致一样,需要深入生活,深入实践才能进入角色。论辩赛在比赛过程中不仅有理信纸上的正面交锋,还辩论风度、情态等方面的表演,通过试辩往往能促使参赛队员不仅在理论上,而且在情感上也完全站在所持的辩题观念上,以便逼真地表现出理直气壮、慷慨激昂、义正辞严而又通情达理地维护真理的样子。对于初赛者来说,试辩还可以先锻炼一下上场的胆量,培养一下临场的经验。

试辩一般宜在正式比赛前一两天举行,这类似于赛前的热身赛,使参赛队员保持最佳竞技状态。试辩的程序应严格按照正式比赛的程序进行,不过不管正式比赛是否设有赛后听众提问,试辩赛一定要有听众提问。这个道理很简单,不管假设的对方准备得如何充分,总比不上众多听众的眼亮耳明,参赛队员在试辩中完整地亮出主要观点和战略战术,“假设对方”可能没有一下子找到“破的”的方法,听众赛后提问揭短则可弥补“假设对方”论战之不得力。

试辩结束后,参赛队员应与假设对方迅速共同进行总结,对原先准备的辩词和论辩技巧作相应的调整、修正和补充,这样赛前所有的准备便完备了。

孙子曰:“上兵伐谋”,高水平的论辩赛首先是认辩双方在论辩思路与立场上的较量。对于一个已经确定下来的命题,如果能找到一个最佳的思路,确立好自己的立场,那么就能为整个论辩的胜利奠定基础。

在论辩赛中,论辩命题一般可分为价值命题、事实命题和政策命题三种。价值命题一般是讨论某伯事是否较好,如“发展旅游业利大于弊”。这类命题要求论辩员有很强的逻辑推理能力,对辩题的背景知识有通盘、深入的了解。事实命题是讨论某件事是否真实,如“儒家思想是亚洲四小龙取得经济快速增长的主要推动因素”。这类命题注重举例实证,要求论辩者掌握大量材料:政策命题是讨论某事该不该做,如“亚太区国家应该成立经济联盟”。它要求理信论与实践的结合,既需逻辑推理,又应有大量材料佐证,所以论辩比赛中政策命题较为常见。对论辩命题分类的意义在于根据不同命题的特点和要法语来确定思路、建立框架、组织材料,最终的目的是要形成自己的立场。在确定思路时最重要的一点是必须知已知彼。对一个辩题,围绕正、反方立场,可以有多种理解。这时候就不仅要找出自己论证辩题的各种思路,而且还要找出对方可能出现的各种思路,尽可能地把双方可能的思路都逐一考虑,并找出应付之策,这样对已对彼都心中有数,就为我方确立适当的立场找到了根据。

确立立场就是针对对方可能出现的思路,在我方可以选择的各种思路中找出对本方观点论证最有利、例证材料最丰富的思路。

确立立场的两个基本原则是:

(一)弱化我方命题,强化对方命题。确立立场不仅应确立我方对辩题的理解,还须限定对方对辩题的理解,也就是必须明确指出对方应该论证的内容。尽可能扩大我方立论范围,从而给我方留下较大的加旋余地。其主要方法有两种:一是对辩题中的主要概念作限制性解释。如在南大队对台大队“人类和平共处是一个可能实现的理想”论辩中,正方南大队一辩开头就指出:“人类和平共处”“是和战争相对而言”,消除了战争也就实现了人类和平共处。这样就把其他形式的暴力行为排除在外,为本方以后论述打下了较好基础。另一个方法是对辩题加条作。如1986年亚洲大专辩论会北大队对香港中文大学队的比赛中,辩题是“发展旅游业利大于弊”,北大队是反方,正方中文大学队举出许多例子论证许多国家由于具备某些条件,发展旅游业获得了成功。北大队马上指出,正方的立场并不是“在一定条件下”发展旅游业利大于弊,所以中文大学队跑题了。这实际上是要正方证明“在任何情况下”发展旅游业都利大于弊,当然使正方无从论证,陷入被动。

(二)尽量选择逻辑性强、不易受攻击的立场。其主要方法是“高立论”。在任何一个细节上都和对方纠缠不休往往会丧失本方的优势,到最后仍是“一笔糊涂帐”;不如干脆对一些显而易见的事实、众所周知的观点予以承认,接着立即指出:这些仅仅是问题中一个方面,但我们应该讨论的是更重要的东西,把争论上升到更高层次,使对方精心准备的材料无从发挥,在我方熟悉的阵地上与其交锋,高屋建瓴,势如破竹。如在北大队和澳门东亚大学队的比赛中,辩题是“贸易保护主义可以抑制”,北大队是正方。具备一点经济学知识的人都知道,当今世界范围内贸易保护主义愈演愈烈,而新加坡更是饱尝贸易保护主义之苦。东亚大学队开始就大谈“贸易保护主义是否严重”这一层次上与对方纠缠,显然要占下风,而且很可能引起评委和观众的反感。所以北大队经过仔细斟酌,论辩伊始就明确说明,当今世界范围内贸易保护主义确实相当严重,在这一点上我们非但不否认,而且还可以举出比你们多得多的例子。但是,我们应该讨论的是贸易保护主义是否可以抑制,而不是贸易保护主义是否存在或是否严重。这样就避开了对方拥有大量材料的事实,把论辩中心提高到对我方有利的“可以抑制”层次上来,避其锋芒,争取主动。

确立立场时还应该注意的是:立意要新奇,要能够“言人所未言,见人所未见”。从新的角度来分析问题,给人以耳目一新之感,往往会起到很好的场上效果。同时,对手对此准备不足,也会措手不及,仓促应战。当然不能故作惊人之语,应当在“意料之外”,又在“情理之中”。这就要求教练和队员们对辩题仔细揣摩和思索,努力使自己的立场既无懈可击、固若金汤,又新意迭出,令对方猝不及防,从而使自己立于不败之地。

第五篇:有理想的程序员必须知道的15件事

有理想的程序员必须知道的15件事

ugmbbc发布于 2011-04-20 15:13:01|9708 次阅读 字体:大 小 打印预览

感谢聊IT评论网的投递

作为程序员,要取得非凡成就需要记住的15件事。

1、走一条不一样的路

在有利于自己的市场中竞争,如果你满足于“泯然众人矣”,那恐怕就得跟那些低工资国家的程序员们同场竞技了。

2、了解自己的公司

以我在医院、咨询公司、物流企业以及大技术公司工作的经验来看,这一点所言不虚。

不同公司的运营模式差异极大。如果你理解企业的运营模式,那你就不一样了!在这家公司中(或者对客户而言),你是参与业务运营的资产,你的工作能直接产生效益!

3、与最优秀的人为伍

很早以前,我喜欢打篮球,被分配到一个水平比较高的队里。一开始适应的确很困难,但环境的压力越大(重大比赛),我的长进也就越明显。

每个领域其实都一样:你周围人的水平(以及对你的期望)越高,你就会变得越优秀。

4、制造差异

每年学习一门新编程语言。为什么不呢?不断尝试新事物,你关注的技术种类越多,脚下的路就越宽广,你的职业生涯就会日新月异。不知道几年后Java的趋势如何?那就学习Clojure。学Ruby还是Python?这两种语言都可以试试啊。然后你才能知道哪种语言更适合某个特定的项目。看,掌握的语言多了,才能在需要的时候信手拈来吧。

5、畏惧,是最大的敌人

还是直接从书中摘一句吧:“在畏惧中做出的职业规划,很可能会让自己后半辈子就一直被„圈禁‟在小隔断里,永远不会有创造明天辉煌的时刻。没错,那样是安全,但有意思吗?”

6、要成为多面手

如果你掌握了所在领域的知识,那你只能是一名专业人士。用PHP编程?花点时间设置一台Apache服务器,让PHP和MySQL都跑起来。一直在用jQuery?试试Prototype。你懂了吧。

7、一个字:做

别指望别人过来教你该怎么做,出去,自己学着去做!

8、找一位好老师

找一位好老师可以让你在学习技术的时候有的放矢。作者给我们讲述了别人是怎么指导他学习的(顺便说一句,作者在这本书里讲了很多个人经历的小故事,他居然从一位演奏家转行来做软件开发!):“好好研究一下目录服务,熟悉一种UNIX变体,然后再掌握一门脚本语言。”

请记住这句禅宗谚语:“循路觅宗师,形影不相离,师知吾亦知,吾乃成宗师。”

9、主动教会别人

教会别人是一种最好的学习方式。写一篇博客能帮你搞清楚一个问题。为此,你必须先掌握很多材料,同时还要有条有理地讲给别人听(写作技能)。如书中所言:“要想知道自己是不是真的明白,你就讲给别人听听。”

10、实践,实践,再实践(训练)

只有进行大量实践(花大量的时间)才能掌握某种技术。看的很多,写的很少,遇到问题,改一改,又去读代码,……(这样下去是不行的)。

要特别警惕拖延症。其实,往往只要有了开头就好办了。

自我加压,效果会更好。我曾在一篇博客中提到帕金森定律:紧张的时限可以让你提高工作效率。为什么不把这个定律用到学习上呢,比如说在y时间内学会x?

11、从小处入手

每天都取得一项小成果,每天都要坚持做(写在博客上?)。这样一来,你只能让自己比昨天更进步,而不能说自己比上星期进步了一点。

12、享受过程

关注当下,而不是目标,享受那些在追逐未来目标的途中可能无暇顾及的小胜利。人总要生活在当下。我享受编程的过程,就像享受编程的结果一样。

13、不要丧失危机感

越是成功,就越容易犯重大错误。永远不要忘了危机感,特别是要认识到你今天所知道的,到了明天可能就会一文不值。过去的荣耀不能保你永远无虞。

据书中所说,你最好是要让自己能够“通用”,而不要对哪种技术或哪个公司产生依赖。你所掌握的某些技能,甚至你的工作,到了明天都可能会变得毫无价值。因此要不断提高/丰富/扩展自己的技能。

14、推销自己

为某个项目贡献自己的一份力量,写一篇博客,共享自己的源代码,成为对某个社区有用的人。

当然,做这些事可能需要激情,要看你的爱好,但这些事也会间接地推广你的工作成果,证明你的实力,提高你的知名度。

15、关注市场

书中还提到了“预警极客”,也就是那些始终引领技术发展的人。这些人说过的话往往带有预见性,他们提到事物也许过几天就会成为头条新闻。关注这些人,常看他们的Twitter和博客。

下载CakePHP程序员必须知道的21条技巧范文大全word格式文档
下载CakePHP程序员必须知道的21条技巧范文大全.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    化妆师必须知道的十个化妆技巧

    化妆师必须知道的十个化妆技巧 在化妆领域中由于不同的化妆目的不一样针对的人群也会有所不同,在我们的大众人群中不可能每一个人都拥有一张完美的脸型精致的五官。就算是明......

    【人力资源】招聘专员必须知道的工作技巧

    【人力资源】招聘专员必须知道的工作技巧 明阳天下拓展 一、筛选简历(主动搜索简历) 在进入面试环节之前,招聘专员的任务就是获得合适的简历,前文介绍的各种招聘渠道都有助于招......

    你必须知道的会议总结发言技巧

    你必须知道的会议总结发言技巧 会议总结是会议领导者对会议情况的归纳性陈述,是领导者对会议的画龙点睛之笔,关系到会议能否开得圆满成功,关系到会议质量的高低。会议总结看似......

    与领导吃饭的技巧,这些必须知道

    你有跟领导一起吃午餐的经验吗?是轻松话家常抑或总是战战兢兢?短短几十分钟当然也包含了大大的学问!怎么做,不仅吃得饱饱,也吃得聪明、吃得漂亮? 领导主动邀约吃午餐,该答应吗? “当......

    作为销售人员必须知道的面试技巧

    作为销售人员必须知道的十大面试技巧 作为市场经济时代的动力核心,营销已经深入商业和生活的方方面面,销售人员自然也成为推动公司业绩的功臣。新年后,各类企业大举招聘销售人......

    IPAD的15个必须知道的技巧(精选多篇)

    iPad所采用的iOS系统非常简单易用,但是刚刚拿到手的时候还是会不知道该怎么使用。而如果能够找到ipad的小技巧,很多时候都能够帮助你更好的使用设备。下面,我们就分享给iPad新......

    C语言测试:嵌入式程序员必须知道的16个问题

    C语言测试是招聘嵌入式系统程序员过程中必须而且有效的方法。这些年,我既参加也组织了许多这种测试,在这过程中我意识到这些测试能为带面试者和被面试者提供许多有用信息,此外,......

    C语言编程总结--程序员必须知道的77条编程细节(最终定稿)

    C语言编程总结--程序员必须知道的77条编程细节 分类: C语言学习心得体会 2010-08-08 19:33 63人阅读 评论 收藏 举报转载请注明出处:http://blog.csdn.net/ecorefeng 在......