解决问题ppt题

19867人阅读
在介绍方法之前我们首先应该清楚具体的问题有哪些,笔者在本博客当中论述的JSP中文乱码问题有如下几个方面:页面乱码、参数乱码、表单乱码、源文件乱码。下面来逐一解决其中的乱码问题。一、JSP页面中文乱码在JSP页面中,中文显示乱码有两种情况:一种是HTML中的中文乱码,另一种是在JSP中动态输出的中文乱码。先看一个JSP程序:&%@ page language=&java& import=&java.util.*&
&title&中文显示示例&/title&
这是一个中文显示示例:
String str = &中文&;
out.print(str);
上面这个JSP程序看起来好像是在页面显示几句中文而且标题也是中文。运行后在浏览器中显示如图所示原因在于没有在JSP中指定页面显示的编码,消除乱码的解决方案很简单上面代码中page命令修改成如下所示即可&&%@ page language=&java& import=&java.util.*& contentType=&text/ charset=GB2312& %&
&title&中文显示示例&/title&
这是一个中文显示示例:
String str = &中文&;
out.print(str);
&/html&再次运行乱码消失,原理就是向页面指定编码为GB2312,那么页面就会按照此编码来显示,于是乱码消失。二、URL传递参数中文乱码一般情况下在使用get方法提交表单的时候传递的参数如果是中文的话很可能会出现乱码。下面是一个示例程序&%@ page language=&java& import=&java.util.*& contentType=&text/charset=gb2312&%&
&title&URL传递参数中文处理示例&/title&
String param = request.getParameter(&param&);
&a href=&URLCharset.jsp?param='中文'&&请点击这个链接&/a&&br&
你提交的参数为:&%=param%&
&/html&上面这个JSP程序的功能就是通过一个URL链接向自身传递一个参数,这个参数是中文字符串,这个程序的运行效果如下图对于URL传递中文参数乱码这个问题,其处理方法比较特殊,仅仅转换这个中文字符串或者设置JSP页面显示编码都是不能解决问题的,需要修改Tomcat服务器的配置文件才能解决问题。在这里修改Tomcat的conf目录下的server.xml配置文件,具体改后的代码如下&Connector port=&8080& protocol=&HTTP/1.1& URIEncoding=&gb2312&
connectionTimeout=&20000&
redirectPort=&8443& /&在原来代码中添加URI编码设置URIEncoding=“gb2312”即可,重启Tomcat服务器可以得到正确的页面。其原理也和上面的情况类似,就是向程序指明编码类型,然后显示就正常了。三、表单提交中文乱码对于表单的数据可以使用request.getParameter(“”)的方法获取,但是当表单中出现中文数据的时候就会出现乱码。示例代码如下&%@ page language=&java& import=&java.util.*& contentType=&text/charset=gb2312&%&
&title&Form中文处理示例&/title&
&font size=&2&&
下面是表单内容:
&form action=&AcceptFormCharset.jsp& method=&post&&
用户名:&input type=&text& name=&userName& size=&10&/&
码:&input type=&password& name=&password& size=&10&/&
&input type=&submit& value=&提交&&
&/html&在上面的表单当中想AcceptFormCharset这个页面提价两项数据,下面是AcceptFormCharset.jsp的内容:&%@ page language=&java& import=&java.util.*&
contentType=&text/charset=gb2312&%&
&title&Form中文乱码&/title&
&font size=&2&& 下面是表单提交以后用request取到的表单数据:&br&
String userName = request.getParameter(&userName&);
String password = request.getParameter(&password&);
out.println(&表单输入userName的值:& + userName + &&br&&);
out.println(&表单输入password的值:& + password + &&br&&);
&/html&在上面的程序中,如果表单输入没有中文,则可以正常的显示当输入的数据中有中文的时候,得到的结果如图所示。产生种结果的原因是Tomcat中对于post方法提交的表单采用的默认编码为ISO-8859-1,而这种编码格式不支持中文字符。对于这个问题可以采用转换编码格式的方法来解决,现在对AcceptFromCharset这个页面改动如下:&%@ page language=&java& import=&java.util.*&
contentType=&text/charset=gb2312&%&
&title&Form中文乱码&/title&
&font size=&2&& 下面是表单提交以后用request取到的表单数据:&br&
String userName = request.getParameter(&userName&);
String password = request.getParameter(&password&);
out.println(&表单输入userName的值:& + new String(userName.getBytes(&ISO-8859-1&), &gb2312&)+ &&br&&);
out.println(&表单输入password的值:& + new String(password.getBytes(&ISO-8859-1&), &gb2312&)+ &&br&&);
&/html&经过这样的转换编码以后,所有的中文输入都可以用request对象正常取出。在上面这个程序中,第四行和第五行是转换编码格式的关键,先从ISO-8859-1格式的字符串中取出字节内容,然后在用GB2312的编码格式重新构造一个新的字符串。这样就可以支持中文变淡输入的正常取值和显示。改进以后程序运行结果如下经过上面的更改编码格式的处理,表单的中文输入乱码问题已经得到解决。但是如果上面的表单中的输入项不止是两个,那么每个输入项都需要进行编码转换,那样就很麻烦了。这是我们就用到了大名鼎鼎的过滤器filter了。关于这里的内容大致的思虑和上面的一样具体做法请参照笔者的。四、Eclipse中JSP文件中文乱码在Eclipse或者MyEclipse中由于默认的JSP编码格式为ISO-8859-1,所以当打开由其他编辑器编辑的JSP文件时会出现乱码,如图所示对于这个问题我们只需要更改一下Eclipse或者是MyEclipse中对JSP的默认编码就可以了,修改的地方(我的MyEclipse版本为11)如图所示PS在Eclipse或者MyEclipse当中JSP文件默认的编码为ISO-8859-1,所以在JSP代码中间如果出现中文就不能保存,例如如下代码&%@ page language=&java& import=&java.util.*& %&
&title&中文显示示例&/title&
这是一个中文显示示例:
String str = &中文&;
out.print(str);
修改后在保存的时候会提示如下:现这个提示的原因在于JSP源文件中有ISO=8859-1编码无法识别的中文字符,对于这个问题,解决办法就是在JSP页面中声明页面编码格式即可。声明后代码如下:&%@ page language=&java& import=&java.util.*&
pageEncoding=&GB2312& %&
&title&中文显示示例&/title&
这是一个中文显示示例:
String str = &中文&;
out.print(str);
其中第一行中pageEncoding=“gb2312”指明了JSP页面编码采用GB2312,这样就可以正常保存JSP的源文件了。遇到问题首先分析问题出现的原因,只有知道了原因才能去解决,学习分析问题的来源远比解决这个问题重要的多。乱码问题的原因就是程序(Eclipse也好,浏览器也罢)的编码没有和编程人员的编码进行统一,(就像你和一个不懂中文的人用中文交流他当然不懂了)那么解决这个问题只需要将编程人员想要的编码告诉程序就可以了,以上解决乱码问题的种种方法都可以说是一种声明编码的过程,也就是说乱码问题终极解决方案就是:转码。这里的转码要么是编程人员手动转,要么就是声明一下让程序去转,换句话说就是:和不懂中文的交流,要么让他学中文,要么你就去学习他的语言。生活就是编程,编程就是生活,同之,通之!!!
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:544931次
积分:13795
积分:13795
排名:第306名
原创:250篇
评论:3418条
如果博文中有错误或者您不认同的地方,欢迎评论或通过邮箱的方式随时联系我,我们共同讨论,拜谢!
阅读:11383
阅读:13424
阅读:12275
阅读:12310
(4)(4)(4)(4)(5)(4)(4)(4)(5)(4)(4)(4)(4)(4)(4)(4)(4)(4)(1)(4)(4)(4)(4)(4)(4)(4)(4)(4)(4)(4)(4)(5)(4)(4)(4)(5)(8)(6)(6)(5)(5)(3)(3)(4)(11)(5)(5)(4)(4)(5)(8)(16)(5)(8)(3)(1)善于发现问题&勇于正视问题&有效解决问题--人民网四川频道--人民网
善于发现问题&勇于正视问题&有效解决问题
――学习习近平总书记系列重要讲话精神体会
&&&&来源:&&&&&
  十八大以来,习近平总书记发表了一系列重要讲话,提出了一系列新思想、新观点、新论断、新要求。习近平总书记的系列重要讲话精神贯穿着强烈的问题意识。正如习近平总书记在《中共中央关于全面深化改革若干重大问题的决定》作说明时强调的那样,要“以重大问题为导向,抓住关键问题进一步研究思考,着力推动解决我国发展面临的一系列突出矛盾和问题。”
  我认为,问题意识是每一个领导干部必须具备并不断强化的一种意识,要学习好贯彻好落实好习近平总书记系列重要讲话精神,就必须强化问题意识,善于发现问题,勇于正视问题,有效解决问题。就此,我结合司法行政工作实际,谈一谈自己一些学习体会。
  第一,要善于发现问题
  有学者提出,历史是问题的消亡和解决,现实是问题的存在和发展。其实,人类社会的文明进步,就是在不断发现问题和解决问题中得以实现的。
  在现实生活中,问题无处不在,问题无时不有。其实,我们就生活在问题之中,我们就工作在问题之中。客观地讲,一个人、一个单位、一个地区在其发展过程中不出现问题是不可能的。问题始终是客观存在的,关键是我们会不会发现问题。
  作为领导干部,不论想干事的主观能动性有多么强烈,如果我们不会发现问题,那是做不好工作的,有时还会把工作越做越糟糕。可以说,不会发现问题,那就是最大的问题。会不会发现问题,特别是一些深层次的问题,是检验领导干部政治敏锐性的一个重要标准。
  习近平同志指出,保障人民安居乐业是政法工作的根本目标。要实现这一目标,我们司法行政工作还面临许多新问题。比如,如何解决普通老百姓打得起官司的问题,如何发挥好人民调解第一道防线的问题,如何推进行刑社会化的问题,如何规范刑罚执行维护公平正义的问题,如何推进“法律七进”落地生根的问题……这些问题都需要我们去深入分析和研究,都需要我们去深入研究体制机制问题。
  然而,我们有的领导同志没有跳出司法行政系统研究司法行政工作,往往是习惯性思维,发现不了问题。
  因此,我们各级领导干部一定要克服这种习惯性思维,一定要学会逆向思维、辩证思维、底线思维,用全面的、发展的、联系的眼光去发现问题,发现一些深层次的问题。
  第二,要勇于正视问题
  有了问题并不可怕,可怕的是不能正视问题,不愿正视问题,不敢正视问题。
  长期以来,在我们有的领导干部中存在着这样一种心态:怕本单位、本部门出问题。当然,这种担心不能说不好,不能说错了,这种主观愿望是对的。但有的领导干部由于怕出问题,遇到矛盾就绕着走,该干的事都不干,该解决的问题都不解决;有的出了问题,不是想方设法地解决,而是千方百计地回避问题,掩盖问题,甚至把大问题说成小问题,把小问题说成没问题。实践证明,这样的领导干部最终会惹出大的乱子,这样的单位最终会出大的问题。
  “大事难事看担当”。作为领导干部,正视问题,不仅是一个认识问题、态度问题,更是一个责任问题、担当问题。检验领导干部敢不敢于负责,勇不勇于担当,就要看领导干部对待问题的态度,是正视问题还是回避问题,是正视矛盾还是回避矛盾。
  习近平总书记在中央政法工作会议上指出,政法队伍要敢于担当,面对歪风邪气,必须敢于亮剑、坚决斗争、决不能听之任之;面对急难险重任务,必须豁得出来、顶得上去,决不能畏缩不前。
  我认为,领导干部做到直面问题、正视问题,不回避问题,就是责任和担当的最好体现。
  目前,我省司法行政的基层基础还比较薄弱,在人员保障、经费保障、制度保障上面临一些具体问题,这更加考验我们的担当精神。全国司法行政系统二级英模、基层司法所长彭传忠同志,尽管身患重病,但只要老百姓需要调解的时候,只要老百姓需要法律援助的时候,他都随叫随到。这充分体现了我们司法行政干警敢于正视问题的责任和担当。这样的例子在我们司法行政系统还有很多。他们扎根基层,默默奉献,这正是担当精神的体现。
  作为领导干部,必须正视问题,勇于负责,敢于担当。这是我们的职责所在,这是我们的使命所在。
  第三,要有效解决问题
  能够发现问题,能够正视问题,这还不够,最终的落脚点还是在解决问题,解决问题才是硬道理。
  我们有的领导干部尽管主观上非常努力,工作态度又很好,工作劲头也很足,但就是解决不了问题。究其原因,就是没有解决问题的能力和办法。
  我认为,我们司法行政业务领域比较广,需要掌握的知识很多,作为领导干部一定要有本领恐慌感,少一些应酬、多一些学习。还是要甘当小学生,多向书本学习,多向网络学习,多向群众学习,多向实践学习。只有不断学习,才能不断修正自己;只有不断学习,才能不断提升自己。
  学习的目的在于实践。作为领导干部,要勇于实践,敢于在实践中摔打自己、丰富自己、完善自己。这样才能提升解决问题的能力,找到解决问题的办法。
  最近省委下发了《贯彻落实省委十届四次全会精神全面深化改革的分工方案》,我们共有17项任务。面对这些新问题和新任务,我们组成了17个课题组,到基层开展专题调研,在一线去寻找破题的方向和解题的“方程式”。
  四川是个外出务工大省,怎样有效为农民工提供法律援助是一个重要民生问题。渠县司法局充分利用在外省执业的川籍律师,为外出务工的四川老乡提供法律援助,探索出了一条路子。这就是在有效解决问题。
  “治蜀兴川重在厉行法治”。厉行法治,普法先行。如何落实好东明书记“深入持久开展‘法律七进’活动,不断取得新的成效”的重要指示,是我们当前需要全力解决的首要问题。我们要在实践中总结和摸索出一套落地管用的法制宣传方式,真正解决法治理念入脑入心的问题,在全社会形成学法用法尊法守法的浓厚氛围。
  总之,要完成好新时期党和人民赋予我们的新职责和新使命,就必须不断强化问题意识,始终坚持问题导向,在解决一个个具体问题中,把我们的各项工作做得扎扎实实、富有成效!
  (作者系四川省司法厅党委书记、厅长)
(责编:罗昱、高红霞)
手机读报,精彩随身,移动用户发送到RMRB到,订阅人民日报手机报。页面导航:
→ 正文内容 Javascript 多浏览器 兼容
Javascript 多浏览器兼容性问题及解决方案
不论是网站应用还是学习js,大家很注重ie与firefox等浏览器的兼容性问题,毕竟这两中浏览器是占了绝大多数。
一、document.formName.item(”itemName”) 问题 问题说明:IE下,可以使用 document.formName.item(”itemName”) 或 document.formName.elements ["elementName"];Firefox 下,只能使用document.formName.elements["elementName"]。 解决方法:统一使用document.formName.elements["elementName"]。 二、集合类对象问题 问题说明:IE下,可以使用 () 或 [] 获取集合类对象;Firefox下,只能使用 [ ]获取集合类对象。 解决方法:统一使用 [] 获取集合类对象。 三、自定义属性问题 问题说明:IE下,可以使用获取常规属性的方法来获取自定义属性,也可以使用 getAttribute() 获取自定义属性;Firefox下,只能使用 getAttribute() 获取自定义属性。 解决方法:统一通过 getAttribute() 获取自定义属性。 四、eval(”idName”)问题 问题说明:IE下,可以使用 eval(”idName”) 或 getElementById(”idName”) 来取得 id 为 idName 的HTML对象;Firefox下,只能使用 getElementById(”idName”) 来取得 id 为 idName 的HTML对象。 解决方法:统一用 getElementById(”idName”) 来取得 id 为 idName 的HTML对象。 五、变量名与某HTML对象ID相同的问题 问题说明:IE下,HTML对象的ID可以作为 document 的下属对象变量名直接使用,Firefox下则不能;Firefox下,可以使用与HTML对象ID相同的变量名,IE下则不能。 解决方法:使用 document.getElementById(”idName”) 代替 document.idName。最好不要取HTML对象ID相同的变量名,以减少错误;在声明变量时,一律加上var关键字,以避免歧义。 六、const问题 问题说明:Firefox下,可以使用const关键字或var关键字来定义常量;IE下,只能使用var关键字来定义常量。 解决方法:统一使用var关键字来定义常量。 七、input.type属性问题 问题说明:IE下 input.type 属性为只读;但是Firefox下 input.type 属性为读写。 解决办法:不修改 input.type 属性。如果必须要修改,可以先隐藏原来的input,然后在同样的位置再插入一个新的input元素。 八、window.event问题 问题说明:window.event 只能在IE下运行,而不能在Firefox下运行,这是因为Firefox的event只能在事件发生的现场使用。 解决方法:在事件发生的函数上加上event参数,在函数体内(假设形参为evt)使用 var myEvent = evt?evt:(window.event?window.event:null) 示例: &input type="button" onclick="doSomething(event)"/& &script language="javascript"& function doSomething(evt) { var myEvent = evt?evt:(window.event?window.event:null) ... } 九、event.x与event.y问题 问题说明:IE下,even对象有x、y属性,但是没有pageX、pageY属性;Firefox下,even对象有pageX、pageY属性,但是没有x、y属性。 解决方法:var myX = event.x ? event.x : event.pageX; var myY = event.y ? event.y:event.pageY; 如果考虑第8条问题,就改用myEvent代替event即可。 十、event.srcElement问题 问题说明:IE下,even对象有srcElement属性,但是没有target属性;Firefox下,even对象有target属性,但是没有srcElement属性。 解决方法:使用srcObj = event.srcElement ? event.srcElement : event. 如果考虑第8条问题,就改用myEvent代替event即可。 十一、window.location.href问题 问题说明:IE或者Firefox2.0.x下,可以使用window.location或window.location.href;Firefox1.5.x下,只能使用window.location。 解决方法:使用 window.location 来代替 window.location.href。当然也可以考虑使用 location.replace()方法。 十二、模态和非模态窗口问题 问题说明:IE下,可以通过showModalDialog和showModelessDialog打开模态和非模态窗口;Firefox下则不能。 解决方法:直接使用 window.open(pageURL,name,parameters) 方式打开新窗口。 如果需要将子窗口中的参数传递回父窗口,可以在子窗口中使用window.opener来访问父窗口。如果需要父窗口控制子窗口的话,使用 var subWindow = window.open(pageURL,name,parameters); 来获得新开的窗口对象。 十三、frame和iframe问题 以下面的frame为例: (1)访问frame对象 IE:使用window.frameId或者window.frameName来访问这个frame对象; Firefox:使用window.frameName来访问这个frame对象; 解决方法:统一使用 window.document.getElementById(”frameId”) 来访问这个frame对象; (2)切换frame内容 在IE和Firefox中都可以使用 window.document.getElementById(”frameId”).src = “.html”或 window.frameName.location = “.html”来切换frame的内容; 如果需要将frame中的参数传回父窗口,可以在frame中使用parent关键字来访问父窗口。 十四、body载入问题 问题说明:Firefox的body对象在body标签没有被浏览器完全读入之前就存在;而IE的body对象则必须在body标签被浏览器完全读入之后才存在。 [注] 这个问题尚未实际验证,待验证后再来修改。 [注] 经验证,IE6、Opera9以及FireFox2中不存在上述问题,单纯的JS脚本可以访问在脚本之前已经载入的所有对象和元素,即使这个元素还没有载入完成。 十五、事件委托方法 问题说明:IE下,使用 document.body.onload = 其中function inject()在这之前已被实现;在Firefox下,使用 document.body.onload = inject(); 解决方法:统一使用 document.body.onload=new Function('inject()'); 或者 document.body.onload = function(){/* 这里是代码 */} [注意] Function和function的区别 十六、访问的父元素的区别 问题说明:在IE下,使用 obj.parentElement 或 obj.parentNode 访问obj的父结点;在firefox下,使用 obj.parentNode 访问obj的父结点。 解决方法:因为firefox与IE都支持DOM,因此统一使用obj.parentNode 来访问obj的父结点。 十七、innerText的问题. 问题说明:innerText在IE中能正常工作,但是innerText在FireFox中却不行。 解决方法:在非IE浏览器中使用textContent代替innerText。 示例: if(navigator.appName.indexOf("Explorer") &-1){ document.getElementById('element').innerText = "my text"; } else{ document.getElementById('element').textContent = ";my text"; } [注] innerHTML 同时被ie、firefox等浏览器支持,其他的,如outerHTML等只被ie支持,最好不用。 十八、Table操作问题 问题说明:ie、firefox以及其它浏览器对于 table 标签的操作都各不相同,在ie中不允许对table和tr的innerHTML赋值,使用js增加一个tr时,使用appendChild方法也不管用。document.appendChild在往表里插入行时FIREFOX支持,IE不支持 解决办法:把行插入到TBODY中,不要直接插入到表 解决方法: //向table追加一个空行: var row = otable.insertRow(-1); var cell = document.createElement("td"); cell.innerHTML = ""; cell.className = "XXXX"; row.appendChild(cell); [注] 建议使用JS框架集来操作table,如JQuery。 十九、对象宽高赋值问题 问题说明:FireFox中类似 obj.style.height = imgObj.height 的语句无效。 解决方法:统一使用 obj.style.height = imgObj.height + ‘px'; 二十、setAttribute('style','color:') FIREFOX支持(除了IE,现在所有浏览器都支持),IE不支持 解决办法:不用setAttribute('style','color:red') 而用object.style.cssText = ‘color:'(这写法也有例外) 最好的办法是上面种方法都用上,万无一失 二一、类名设置 setAttribute('class','styleClass') FIREFOX支持,IE不支持(指定属性名为class,IE不会设置元素的class属性,相反只使用setAttribute时IE自动识CLASSNAME属性) 解决办法: setAttribute('class','styleClass') setAttribute('className','styleClass') 或者直接 object.className='styleClass'; IE和FF都支持object.className。 二二、用setAttribute设置事件 var obj = document.getElementById('objId'); obj.setAttribute('onclick','funcitonname();'); FIREFOX支持,IE不支持 解决办法: IE中必须用点记法来引用所需的事件处理程序,并且要用赋予匿名函数 如下: var obj = document.getElementById('objId'); obj.onclick=function(){fucntionname();}; 这种方法所有浏览器都支持 二三、建立单选钮 IE以外的浏览器 var rdo = document.createElement('input'); rdo.setAttribute('type','radio'); rdo.setAttribute('name','radiobtn'); rdo.setAttribute('value','checked'); IE: var rdo =document.createElement(”&input name=”radiobtn” type=”radio” value=”checked” /&”); 解决办法: 这一点区别和前面的都不一样。这次完全不同,所以找不到共同的办法来解决,那么只有IF-ELSE了 万幸的是,IE可以识别出document的uniqueID属性,别的浏览器都不可以识别出这一属性。问题解决。
您可能感兴趣的文章:
上一篇:下一篇:
最 近 更 新
热 点 排 行
12345678910程序员解决问题的 60 个策略
程序员的生活就是解决一个又一个问题,永无止境。这篇文章介绍了一系列解决问题的策略。根本的指导方针1. 首先写代码的时候最好不要有缺陷。最好的修复方法就是让 bug 胎死腹中。良好的单元测试强制数据库约束使用输入验证框架避免未实现的“else”条件在应用到主程序之前知道如何在孤立的情况下使用日志2. print 语句。往往额外输出个一两行将有助于隔离问题。3. 切换至详细的日志记录。详细的日志记录有助于发现更多的线索。4. 搜索日志。如果日志太多,可采取关键字或错误代码来搜索日志文件。5. 开启自动换行和关闭自动换行。控制日志的自动换行也非常有用。6. 搜索不同的日志。主服务器的日志可能并不是唯一有用的日志。7. Windows 事件日志。日志文件的另一个来源可能是操作系统本身。8. 制作有用的日志记录。有时,如果你没有得到任何有用的日志记录,那么你可能需要自己写。与其他人交流9. 询问一些可能知道问题答案的人。10. 问”愚蠢“的问题。可能你觉得这些问题很愚蠢,但其实并不是。11. 将问题解释给队友。他们可能知道答案或者能提出一些你并没有想到过的事情。12. 将问题解释给你的狗。述说的对象是谁其实没有关系,但是能让你从不同角度分析问题。写作13. 描述问题。用最准确和最精确的语句描述问题,有助于你去思考可能的解决方案。14. 问题日记。创建一个文本文件来记录已经尝试的各种方法,包括代码片段、配置设置以及产生的任何错误。15. 记录问题和解决方案。有没有这样的情况,突然看到一个似曾相识的问题,只记得解决过但却忘记了是如何解决的?可以将问题和解决方案记录到一个容易搜索的地方,如维基、缺陷跟踪,甚至可以发送电子邮件给自己。支持16. 阅读 FAQ。17. 提交支持请求。如果有可用的产品/库的支持,那么就用。18. 在你点击 send 之前,请三思。写支持请求能让你再一次思考问题,有时候就在你点击 send 按钮之时,突然灵机一动就想到了解决问题的方法或者是新的线索。19. 其他方面的支持。可以与开发人员直接面对面交流,最好是实时聊天/ SKYPE/屏幕共享。离开键盘20. 散散步。21. 打个盹。22. 重置优先级。暂时从键盘上离开还有一个好处就是可以让你重新评估这个问题的重要性,也许这个问题只是个 CSS/布局问题,根本不值得你花上 16 个小时。总之要有效分配和使用时间。23. 暂时将这个问题放在一边。实在解决不了的话,可以将这个问题先搁置起来。也许几天后你在阅读相关问题的时候,突然一个激灵,解决问题的关键就来了。隔离24. 确定是哪行代码。首先要确定是哪行代码导致的问题,以便于插入 print 语句。25. 将问题分割为一个单独的程序。有时候对于库和产品的问题,我们可以将它的相关代码从主程序中分离开来。这可能需要一点时间,但往往处理一个孤立的程序比应对整个的项目构建过程要容易得多。然后在解决这个单独程序的基础上再去和主程序作比较。更改代码即使你一点都不知道如何解决问题,更改代码也是一个挺有效的解决方法。26. 写新的单元测试。27. 重构。有问题的代码往往显得有点乱,通过一些简单的重构方法,例如重命名变量或展开嵌套的 if / then/ else 模块等都可以让代码整洁起来。28. 发现 bug。另一个整洁代码的手段是查阅相关代码的“Find Bugs”&报告,我们之所以首先要整洁代码是因为:作为一个能让我们的大脑专注于代码的方法,既简单又划算。29. 重写。转存所有的相关代码,从头开始重写。一个全新的视角也许能让你完全规避这个问题。30. 为一些不必要的代码添加注释——或者至少是你以为是不必要的。然后你会发现可能这些代码流并不像你曾经以为的那样“没有必要”。31. 实验。如果你不能确定底层产品或库是如何工作的,那么一些小实验,特别是围绕边界条件的实验会非常有用。32. 回到干净的状态。如果你在代码中做了各种变动,或者是搞了很多配置设置,那么定期回到一个干净的状态就非常重要。否则,实验结果可能会影响正确答案,这样你就永远也找不到正确的解决方案了。33. 切换技术。产品34. 升级到更高的版本。也许你正在处理的问题已经被修复了,可以试试先升级到另一个版本。35. 降级到以前的版本。也许问题正是由于与你目前正在使用的其他产品/库不兼容而引起的。36. 打补丁。37. 下载并安装源代码。文件38. 阅读手册。大多数开发人员可能会认为这是一个低概率的策略,但是,嘿嘿,你永远不知道,也许答案就在文档中。39. 阅读手册的正确版本。40. 手册是否正确?有时候代码已被更新,但手册还没有。调试器41. 了解键盘上的快捷键。42. 倒退。这是调试器的一个功能,让你的代码退后一步。43. 编写断点代码。44. 异常中断。调试器的一个蛮有用的功能就是可以捕捉到任何地方的特定异常。45. 专业化的调试工具。例如:PlumbrAppDynamicsChrononWiresharkHTTP profilers:Fiddler2、Charles、Live Http Headers源代码控制46. 对 bug 缺陷进行编号标记。你有没有碰到过这样的问题:先是用这种方式被修复了,然后几周后又成为了 bug
被其他人用另一种方法修复了。这样问题貌似就有两个正确答案。解决办法就是对源代码中相关的 bug
缺陷进行标记,并记录一些关于为何改变以及谁参与决策等更为详细的说明。47. Blame 功能。这个可爱的小工具能告诉你是谁最后更改的代码。48. Git bisect 功能。Git 有一个有意思的“bisect”命令,能自动通过你提交的历史进行二进制搜索发现故障。寻找答案49. 谷歌搜索。50. 论坛帖子。52. 搜索堆栈交流。53. 创建堆栈问题。其他54. 聘请专家。可能在短时间内成本很高。55. 招实习生。聘请专家的相反方法就是聘请新手。有时候初学者饱满的热情能让他们从不同的角度来解决问题。56. 改变要求。如果你不能修复缺陷,那么可以改变要求。通过解释各种成本需要,也许能让客户改变他们的初衷。57. 更改上/下游系统。58. 循序渐进地学习技术。59. 通过断点检查配置。更改关键配置值,并确保已经断点,这样能够让我们无所顾忌地设置配置。60. 系统化。有时候我们需要将三四件事情组合在一起,那么可以将已经试过的组合记录下来,如果需要的话一定要尝试各种的组合。英文原文:中文翻译:
想通过手机客户端(支持 Android、iPhone 和 Windows Phone)访问开源中国:
旧一篇: 2个月前
新一篇: 2个月前
你也许会喜欢
还是挺有道理的,赞一个
2楼:三碗粥 来自
交给狗?什么意思
3楼:其实我就想看看昵称能设置多长只能这么长了
引用来自“三碗粥”的评论交给狗?什么意思 意思就是 吧问题说出来
你在说的时候或许就会对问题有新的理解 从而解决问题
我就经常在问题解决不了的时候与同事沟通 在我问题还没说完 我自己突然就有思路了
4楼:三碗粥 来自
引用来自“三碗粥”的评论交给狗?什么意思 引用来自“其实我就想看看昵称能设置多长只能这么长了”的评论意思就是 吧问题说出来
你在说的时候或许就会对问题有新的理解 从而解决问题
我就经常在问题解决不了的时候与同事沟通 在我问题还没说完 我自己突然就有思路了 点击此处输入评论
5楼:嫂来哇 来自
引用来自“三碗粥”的评论交给狗?什么意思 就是和下属说一下
6楼:其实我就想看看昵称能设置多长只能这么长了
引用来自“三碗粥”的评论交给狗?什么意思 引用来自“嫂来哇”的评论就是和下属说一下下属....
7楼:鱼说还休 来自
8楼:dormi330
不错 有道理
9楼:那年秋天
52. 搜索堆栈交流。53. 创建堆栈问题。stackoverflow吧???
10楼:Glitter
引用来自“三碗粥”的评论交给狗?什么意思 引用来自“嫂来哇”的评论就是和下属说一下您很优越么?
11楼:anjero
就是狗一样的队友,同样能解决问题
12楼:01110 来自
有储备 赞一个
13楼:hh_hpp_cxx
14楼:neo-chen
还有一种解决问题的策略61. XXX 同事请把XXX代码调试一下,今晚上线。
15楼:COSE
引用来自“那年秋天”的评论52. 搜索堆栈交流。53. 创建堆栈问题。stackoverflow吧???看了下原文,52应该是在Stack Exchange上搜索,53应该是在Stack Exchange上提问。
16楼:二的思维 来自
17楼:Raymin
61.这不是我的问题!
18楼:mickelfeng
19楼:嫂来哇
引用来自“三碗粥”的评论交给狗?什么意思 引用来自“嫂来哇”的评论就是和下属说一下引用来自“Glitter”的评论您很优越么?我还是狗
20楼:布洛克斯
step1 : rm -rf / step2 : 呀, 怎么啦, 我白写啦!
与内容无关的评论将被删除,严重者禁用帐号
本周热点资讯
本站最新资讯

我要回帖

更多关于 数学解决问题 的文章

 

随机推荐