do not hardcodee是什么意思及用法

当前位置浏览文章
前言最近换了新的公司,面对新的代码大家都有不同的熟悉过程和方法。在我的角度来说,利用代码检测工具,可以更直接地去熟悉代码逻辑和业务逻辑,表现得自己去代码品质很有追求,最重要当然是在公司的任务管理工时上面显得自己积极向上啦。不过在修改代码之前,你要根据项目的分工、明确在公司的定位,不然会造成一些不愉快的事情,但是总的来说我们还是对代码品质有追求的!我们首先要知道Android Studio安装插件步骤。Android LintLint是Android Studio提供的一个代码检测工具,开发者通过它不用写测试代码,就可以发现和纠正问题,优化代码结构。Lint 的使用路径:工具栏(或右击package)-& Analyze -& Inspect Code待分析完毕后,我们可以在Inspection栏目中看到检查的结果Lint被检测到的问题,都有描述基本信息并指明相应的严重性级别,我们可以根据问题的严重程度进行处理优化。Android Lint内置了很多lint规则,共可以分为以下几类:correctness 正确性Security 安全性Performance 性能Usability 可用性Accessibility 可访问性Internationalization 国际化自定义Android Lint的检查提示在xml编写布局的时候,例如TextView,我们常常会直接将text字符串值直接写在xml上面,还是在textSize属性上写上sp值,然而,IDE会有相关的提示:看到这个提示,大家觉得级别过低不会太多理会,其实这并不是一个好的编码习惯,所以我们可以通过更改对应的severity等级来更改提示的等级,如: 默认hardcode的severity等级为warning,我们修改hardcode的severity等级为error,那么在存在硬编码时候将会以error等级提醒我们:修改完成后,我们可以看到text提示使用红色错误的波浪线标记了,如下图,但是我们这个修改是提示,我们看上端文件并没有标错,所以是不会影响程序运行的。Lint还有很多自定义的设置,大家有兴趣可以看一下这篇文章自定义 Lint 规则怎样帮助开发者,然后去尝试一下。另外由于lint的规则过多,我们没有必要每一个都要知道,我们需要在检测分析后,能区分出这个是属于什么类型的错误和严重程度,根据给出的错误提示,或直接使用搜索引擎进行对应的错误搜索并解决。神器 stackoverflowFindBugsFindBugs使用静态分析方法为出现bug模式检查Java字节码。FindBugs基本上只需要一个程序来做分析的字节码,所以这是非常容易使用。它能检测到常见的错误,如NullPointException,多线程同步问题等。FindBugs 的使用路径:工具栏(或右击package)-& FindBugs -& Analyze对应目标 FindBugs支持对包级别、项目级别、模块级别、单个文件级别、自定义范围的Bug分析。代码缺陷分类:Bad practice:不好的做法;Malicious code vulnerbility:恶意的代码漏洞;Correctness:正确性问题;Performance:潜在的性能问题;Security:安全性问题;Dodgy code:糟糕的代码;Experimental:实验;Multithreaded correctness:多线程的正确性多线程编程时,可能导致错误的代码;Internationalization:国际化问题;FindBugs检测之后,当我们选中的错误,在右方有十分详细的描述,我们可以根据给出的错误类对应的行数、方法、错误基础描述、优先级的信息进行优化解决。当然大家对FindBugs的错误描述有兴趣,可以浏览一下FindBugs Bug Descriptions神器 stackoverflowCheckstyleCheckstyle是一个开发工具用来帮助程序员编写符合代码规范的Java代码。这个工具能够帮助你在项目中定义和维持一个非常精确和灵活的代码规范形式。相信大家做过几个不同的项目后,会发现不同的开发者有着不同的代码风格习惯,有的是教科书式规范,有的是像行外人般的随心所欲。所以好的代码风格对开发是事倍功半的。站在一个管理者的角度,Checkstyle对整一个开发的水平管理很有帮助,曾听说某项目管理在code review时发现代码不符合规范直接辞退开发。站在一个开发者的角度,一个规范的代码风格,看着代码就感觉舒畅,再听着小歌,写代码简直就能飞起来。现实一点就是,人家看你的代码风格就知道你是个大神。在最近的阿里出品的Java开发手册,得到了业内很好的响应。良好的代码风格让我们的水平不断向BAT靠近。下图值得你拥有。Checkstyle检测范围:javadoc注释命名规范标题导入包规范体积大小空格修饰符代码块编码问题类设计问题重复、度量以及一些杂项Checkstyle使用步骤1.安装CheckStyle-IDE插件2.添加检查规则文件3.CheckStyle-IDE 插件使用同样我们可以对项目级别、模块级别、单个文件级别进行检测。4.CheckStyle扫描结果5.根据Checkstyle扫描结果对应修改重复3.~5.部,至修改完成。Checkstyle定制我觉得定制属于自己公司的checkstyle检测规则是十分重要的。我们可以看一下Google checkstyle 检查规则Checkstyle检查规则是基于XML配置文件的,主要通过XML文件中的module 、property、message标签节点对检查规则进行配置。在XML文件中,被指定的module,都将被对应规则检查。1.module节点module 主要是指检查项,如MethodName (检查方法命名)module中有两个比较重要的节点,它们分别是Checker(checkStyle配置文件的根节点,必须存在)、TreeWalker(树遍历器),TreeWalker会自动去检查指定范围内的每一个java源文件,TreeWalker内部会定义很多module。module的根节点是Checker,一定要有;2.property节点对应module 检查项中具体检查属性,如果使用默认值,property节点可以省略;3.message节点checkStyle检查出来,能否打印出message消息,message节点可以省略.4.Checkstyle-IDE进行扫描后,让Checkstyle不对部分代码进行规则检查.在定制好的checkStyle.xml文件中,添加一个名为SuppressionFilter的moudle,在过滤规则文件suppressions.xml中添加相应的过滤规则。Checkstyle有很多玩法,有兴趣的同学可以看一下Checkstyle官网资料和Github CheckStyle源码总而言之,Checkstyle助我们技(丧)术(心)升(病)华(狂)!神器 stackoverflowPMDPMD(注意搜索的关键字用QAPlug - PMD)是一个很有用的工具,它跟Findbugs类似,但是它不同与FindBugs检测字节码,它是直接检测源代码。PMD也是使用静态分析方式来发现错误。因此根据它们的检测方式不同,我们可以将PMD和FindBugs结合一起使用。PMD同样有好多rule,且适用多种语言。如Android目前有三个规则:Android (java)CallSuperFirst: Super should be called at the start of the method(检查在Activity或Service里的子类里,能否在错误位轩调用父类onCreate等应该放在方法前的方法。)CallSuperLast: Super should be called at the end of the method(检查一些应该在方法结束时才调用父类实现的情况。)DoNotHardCodeSDCard: Use Environment.getExternalStorageDirectory() instead of "/sdcard"(你应该用Environment.getExternalStorageDirectory()而不是硬编码去取得扩展存储目录。)PMD使用步骤1.在build.gradle里加入pluginapply plugin: pmd2.定义任务,ruleSets是需要检查的一些规则,有兴趣的同学可以看看官方定义的rule,按需来添加。task pmd(type: Pmd) {
source fileTree(src)
ruleSets = [
java-android
xml.enabled = false
html.enabled = true
destination "$reportsDir/pmd/pmd.xml"
//这里是报告产生的路径
destination "$reportsDir/pmd/pmd.html"
//这里是报告产生的路径
}}3.Gradle运行自定义任务,在对用的路径下找到检测结果。总结其实工具和方法很多,而且很多工具和方法有重复功能,大家都可以根据需要修改和调整。另外同学觉得本篇并没有针对常用的问题,进行分析和贴出解决方案。我个人建议大家可以在stackoverflow尽情翻阅,看看歪果仁是怎么去交流和解决问题的。由于本人刚入职不久的小开发,通篇是站在一个开发员工角度来描述,使用的是插件的形式去描述使用,如果对一个公司的代码品质管理,可以利用Gradle配置,结合SonarQube等工具进行管理和code review。个人习惯是,我首先用Lint应用于一些基础检测,再用FindBugs检测一些潜在的Bug,PMD较少用。然而Checkstyle是需要一直使用,对代码风格的规范。我们一定要清楚我们的目的,制定规范和使用规范的是为了让团队能一起愉快的写代码,让其他同事能简单地对项目进行维护。相关词典网站:君,已阅读到文档的结尾了呢~~
toot365.com. 对于mvc 2.0 异步控制器中hard code的一点不满. 微软的.net类库内中
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
对于mvc 2.0 异步控制器中hard code的一点不满
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口用过七牛的来说说你们的安全策略吧 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
已注册用户请 &
用过七牛的来说说你们的安全策略吧
11:05:20 +08:00 · 1314 次点击
先说下我的使用场景:
上传方式是七牛直传:用户在APP端用七牛的SDK直接传图片到七牛服务器,然后七牛回调我服务器上的接口。
客户端上传首先需要一个token,这个token当然是由自己的服务器颁发,那么就涉及到一个安全问题,如何限制恶意用户窃取token并上传垃圾文件?(七牛是可以限制上传文件类型和大小的,这个问题就可以不考虑了。)
我的想法是从两方面来解决这个问题:
限制token获取
因为token本身也是通过API来获取的,那么如何区分恶意用户和正常请求呢?这其实是一个普遍的问题,就是如何保护API。我觉得这里存在一个矛盾:API本身是开放的,但是我们需要限制一些API的使用,如何做到?欢迎分享下这方面的经验。
回到这个问题。如果上传限制为登录用户才能使用的话,可以在token获取阶段附上用户id,然后硬性限制每个id每天获取token的次数,比如50次。但是问题又出现了,如果恶意用户把参数篡改成其他的用户id,限制就失去意义了。为了防止篡改请求,第一个想到的就是对请求进行签名。严格来说,我这里使用的方法其实并不是公钥体系中的签名,而是一个简化方法。首先服务器和客户端需要共享一个秘密字符串secret,这需要在客户端hardcode。
计算方法就是md5(uid=xxx分隔符secret),由于md5是单向的(md5其实也不安全了,不过我们的安全性要求也没那么高,换成sha256也可以),攻击者拿到这个摘要字符串也无法逆向出secret。服务端在收到请求后做同样的计算来验证有效性。但这个方法的前提是攻击者无法获取到secret。可是如果客户端被逆向工程破解了呢?由于secret是hardcode在客户端的,如果攻击者看到客户端源码,secret就暴露了。
对这方面还不了解,欢迎科普。
另外token是有时效的,默认为1小时。那么在这个有效期内,这个token就可以无限制上传了,所以有效期也不能这么久。
限制token使用
通过有效期来限制,感觉并不是完美的解决方法,到底设置多久也是个问题,太短的话可能影响到正常操作,太长的话又失去了意义。
限制token使用的话最好能做到一次性,用完即失效。
目前知道的方式是在生成token的时候通过scope来指定文件的key,另外设置insertOnly为1,也就是服务端硬性规定好保存的文件名,重名的话上传是无效的。
这样一个token就只能上传一个文件。
以上就是我能想到的方法了,希望大家踊跃分享自己的使用经验!
5 回复 &| &直到
15:09:40 +08:00
& & 12:05:10 +08:00
有木有人来说说你们的经验呐!
& & 12:47:15 +08:00
只要用户是登陆用户就可以了吧,服务端可以判断当前请求的用户,然后计算这个用户请求的次数。
而且上传文件名是服务端给的,所以用户如果在token失效期内频繁上传,也只是覆盖自己以前上传的文件。
& & 14:41:43 +08:00
@ 这是给我总结了一下哈。希望听听不同的解决思路。
另外其实我不想由我的服务端来定文件名。
因为七牛会对文件内容生成一个etag,也就是说对同一文件,etag是相同的。
如果不指定文件名的话,就会用etag做文件名。
利用这个特性,用户上传相同的文件就直接可以由七牛来过滤掉了。
& & 14:46:25 +08:00
先作为临时文件,上传到自己的服务器,然后推送给七牛后删除临时文件
& & 15:09:40 +08:00
想用 etag 作为key,你可以试试回调功能。
& · & 1150 人在线 & 最高记录 2477 & · &
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.7.5 · 57ms · UTC 10:22 · PVG 18:22 · LAX 03:22 · JFK 06:22? Do have faith in what you're doing.您要找的是不是:
...资源文件夹,系统会自动进行替换。但是经常一个项目由多位同事参与,每个人的编程习惯会有异同,在xml或者java文件中会有遗漏的硬编码(HardCode),因此第一步是整理项目中的硬编码,统一归并到strings.xml中。
基于15个网页-
然后进行硬编码
求翻译:怎么找不到你 是什么意思? ... peopie speak chineses in china >> 感悟说中国 Away from me, each month these days I feel very irritable >> 离我而去,每个月的这几天,我觉得很烦躁 hardcode >> 然后进行硬编码 ...
基于6个网页-
求翻译:our is very big flat 是什么意思? ... junior three 初中三 hardcode 正在翻译,请等待... therapied group therapied组 ...
基于3个网页-
基于1个网页-
虚拟现实射击
So I wrote a little program called "chart" that, based on some data I happened to hardcode into the program, shows us their numbers for the past several years.
我写了一个叫做“图表“的小程序,基于我在程序中硬编码的一些数据,向我们显示在过去几年中我们课程的人数。
It allows your program to create and manipulate objects of any classes (subject to security restrictions) without the need to hardcode the target classes ahead of time.
它允许程序创建和控制任何类的对象(根据安全性限制),无需提前硬编码目标类。
This revised method takes an incoming SDO data object and inspects all of the fields and values in it, without any of the drawbacks of having to hardcode parameter or object values.
这个经过修订的方法接受传入 SDO 数据对象,并检查其中的所有字段和值,而没有必须硬编码参数或对象值的缺点。
So I wrote a little program called "chart" that, based on some data I happened to hardcode into the program, shows us their numbers for the past several years.
我写了一个叫做“图表“的小程序,基于我在程序中硬编码的一些数据,向我们显示在过去几年中我们课程的人数。
$firstVoiceSent
- 来自原声例句
请问您想要如何调整此模块?
感谢您的反馈,我们会尽快进行适当修改!
请问您想要如何调整此模块?
感谢您的反馈,我们会尽快进行适当修改!}

我要回帖

更多关于 hard code 是啥意思 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信