这是aspose-words-15.8.0-jdk16.jar对应的license.xml,可直接使用,如果不知道使用方法,可以百度

文件:n459.com/file/25127180-477943955

以下内容无关:

-------------------------------------------分割线---------------------------------------------

昨天公司里碰到一件令人哑然失笑的事情。帮朋友公司做的一个项目,做SIT测试的时候发现一些bug,仔细查了下原因,原来是因为当初觉得这个项目比较简单,交给了几个新入职的新丁,也算是给他们练练手,结果其中一位写了一段代码出现了问题结果导致bug的出现。

虽然问题不大很快就修复了,但是正所谓初生牛犊不怕虎,这位出问题的新丁不太服气,一直嚷嚷着他这段代码是从CSDN上找到的,别人都说好用他才用的。问了问他是否理解原文中那么写的原因,结果才支支吾吾了半天讲不清楚,最后也承认他只是看到那段代码的结果是他要的,并不是理解中间一些方法的运用到底是什么逻辑。

真是又好气又好笑,想想现在的年轻人真是有个性,自己当年遇到这种情况只敢虚心求教,哪敢都没明白就去用一段代码,别人指出问题还忿忿不平。

也许是自己老了吧。晚上和一个刚从国外归国的同学说起这个事情,他倒是深有体会,说到他们在国外留学时,遇到技术问题想到网上咨询用的最多的是StackOverflow,相比起国内的CSDN,他觉得StackOverflow上提问题的人和回答的人都更加严谨,不会有太多的废话和问题之外的讨论。按他的理解,CSDN上很多国内的技术新手纯粹是缺乏独立思考的能力,都只是来求代码完成目标,不去探究为什么这么写,本身CSDN上问题回答质量不高,这样很容易出事。

同学的看法,一方面可能是因为国内程序员需求极大,但整体浮躁、功利性的大环境导致很多培训机构没有培训到位,很多程序员都是一边开始工作一边学习;但另一方面,不排除他崇洋媚外的自满情绪。于是,我便去查阅了下StackOverflow上面的内容和相关资料。

仔细研究后发现,其实StackOverflow没有同学说的那么好,即使是该网站上的回答,也有很多有问题的代码。看来这还是一个世界性通用的难题~

对于国外的程序员来说,StackOverflow就是他们的CSDN,是他们遇到各种问题查询的第一选择,很多国外的程序员,会到StackOverflow上需求帮助,找到他们需要的解决问题的代码,然后不假思索的直接复制使用,和我公司出问题的那位年轻人一样,这个习惯很不好。

代码复制本身来说并不是什么坏事,我们学开发的时候,肯定老师都教过我们代码复用能有效提高软件的开发效率。已经被解决了的问题,实在没有必要再去重新写一遍代码。但是这个前提是,使用者,也就是开发人员,必须知道你要用的这段代码的来龙去脉真正含义,就是你要真正明白你用的代码。

简单举个例子:

几年前,很多程序员发现,在windows上使用Docker老是会碰到无法启动的问题,原因一直不明,很多人都是重装了系统什么的才解决。后来有一个大神发文解释原因后我们才知道了为什么
当 Windows 后台启动了 Razer Synapse 时,再去启动 Docker 就会触发此问题。根本原因是,Razer Synapse 运行后,Docker 就会认为已经有一个 Docker 实例正在运行中,所以不会再启动一个实例,也就是真的Docker。

为什么会有这种情况呢?

因为有一段代码中,返回的 GUID 类型是 System.Reflection.RuntimeAssembly(系统层面的运行时程序集),而不是 Windows 中对应 Docker 程序集中定义的类型。Docker处理的逻辑就是在同一时间只允许运行一个实例,判断的方式就是通过判断 GUID 是否存在,但在获取GUID 时,用的是系统层面的而非自己独立程序集里面,从而导致了这个问题。问题代码如下:

var name = string.Format(“Global{0}”, (object)
Assembly.GetExecutingAssembly().GetType().GUID);
当然了,如果系统只有一个应用程序使用了上面的错误代码,那么这个问题还是不会出现,因为只有一个实例。但实际情况是很多应用程序都使用了这一段错误代码,结果就不允许两个实例同时运行。

那这些应用程序,想必你已经猜到,都用了这段代码,而且都是从StackOverflow上下载后不假思索的使用导致的。

Andreas Lundblad,国外一位大神,Palantir 的 Java 开发人员,同时也是 StackOverflow 上排名最高的贡献者之一。
他有一段代码,作用是将字节计数转换为更易于阅读的格式。打个比方,1024字节转换为1kB,1048576 字节转换为1MB。他最初在2010年将这一段代码放到了StackOverflow上,根据官方统计,他的这段代码是StackOverflow上被拷贝次数最多的Java代码,GitHub上使用这段代码的项目有6千多个。

当Andreas Lundblad知道此事后,出于负责,很小心谨慎的重新检查了下这段代码,随后发现这段代码里有一些问题,于是他马上更新了版本,并发博告诉大家:

StackOverflow 上的代码可能存在 bug,不管他的好评是多少。
如果你拿了StackOverflow的代码,一定记住要测试所有的可能的情况。
在复制代码时,一定要包括其来源和贡献者,当出问题时,能快速帮你定位。

同样的,在去年,国外另一位大神Morteza Verdi发表了一篇研究论文指出,StackOverflow上流传最广的一段c++代码存在着69个重大安全隐患漏洞,GitHub上使用这段C++代码的项目也有近3千多个。

所以,无论是StackOverflow还是CSDN,无论是国外和国内,都务必记住一点,在复用别人的代码时,一定要搞清楚别人代码的含义,并做好充分的测试工作,并不是说你运行了一次没问题,就是真的没问题,可能只是你运气好,没有触发问题场景罢了。

引用 Ryan Donovan 的一句话,就是:

If you borrow things and you don’t understand the content of what you’re borrowing, then you fall in this trap of reusing code that has potential vulnerabilities. Then you are just spreading those things around.”

If you’re going to reuse code, you need to understand that code.

复用代码,一定要理解代码!

license.xml相关推荐

  1. 【编程】工具 - Compuware 全套产品的许可文件(License.xml)

    在网上找了半天才找到的 Compuware 全套产品的许可文件(License.xml) 可用于 DevPartner Studio Professional Edition Version 8.0 ...

  2. TWaver Flex开发示例及license下载

    做电信项目的朋友一定知道TWaver,而Flex版具有很好的跨平台性,很适合做B/S模式的应用. Flex版的在线DEMO:http://twaver.servasoft.com/demo/twave ...

  3. Word或Excel 转Pdf 工具类(License 去水印)

    Word或Excel 转Pdf 帮助类 需要引入jar包: aspose-words-15.8.0-jdk16.jar aspose-cells-8.5.2.jar 工具类 import com.as ...

  4. 软件产品license的简单实现java

    目录 软件License简介 License控制内容 实现方案 代码示例讲解 注意事项 源码 软件License简介 我们在使用一些需要购买版权的软件产品时,或者我们做的商业软件需要进行售卖,为了收取 ...

  5. Windows 8 动手实验系列教程 实验8:Windows应用商店API

    动手实验 实验 8: Windows应用商店API 2012年9月 简介 编写Windows应用商店应用最令人瞩目的理由之一是您可以方便地将它们发布到Windows应用商店.考虑到世界范围内目前有超过 ...

  6. aspose.words for java操作文档doc,设置一级二级三级标题以及段落表格等详情

    实现将aspose.words的相关组件jar包 以下是我自己编辑整理的工具类,欢迎交流 package com;import java.io.InputStream;import org.slf4j ...

  7. Java实现doc或xls转PDF

    1.添加jar包:aspose-words-15.8.0-jdk16.jar 2.实现工具类: package com.example.demo.config;import java.io.*; im ...

  8. .NET程序员应该理解的几种软件保护方法 辛苦开发的程序需要建立有效的保护机制...

    使用.NET开发程序,因为元数据存在于程序集中,可以轻易的被反编译成源代码.在分发给客户之间,会应用加密软件混淆程序集,这样让程序集被反编译时, 理解起来困难一些,增加一点破解难度.以下列举我常见到的 ...

  9. android 自定义控件(FloatLabelLayout)

    原帖地址:https://gist.github.com/chrisbanes/11247418 FloatLabelLayout /** Copyright (C) 2014 Chris Banes ...

  10. SpringBoot项目打成jar包后,无法读取resources下的文件

    最近在使用aspose将word转PDF并进行签章打印,读取凭证文件时遇到一个问题,凭证文件放在resources目录下,Windows下可正常读取,但是打成jar包部署到Linux服务器上却取不到文 ...

最新文章

  1. shell脚本 转 二进制执行文件
  2. Java中 equals() 和 == 的区别
  3. Lingoes 2.8 手动去广告步骤
  4. c语言中static变量
  5. WebApi_基于token的多平台身份认证架构设计(Z)
  6. 长途货运4大痛,Uber新上的「自动驾驶卡车」如何改善?
  7. Linux 虚拟机忘记密码解决办法
  8. 用python进行微信分析(带群发功能)
  9. 毕业十年,唯有独立面对——记 贺利坚老师新书《逆袭大学——传给IT学子的正能量》
  10. 清华操作系统笔记4——虚拟内存技术
  11. 网页调用迅雷下载文件
  12. RestTemplate封装
  13. Puppet nginx+Mongrel安装配置篇
  14. 检测服务器的远程端口开启和关闭状态
  15. 惠普服务器dl380安装系统没有f10,惠普Hp DL380 GEN9 UEFI模式安装win2008 r2的方法
  16. VS2017 无法查找或打开 PDB 文件。
  17. Windows应用程序设计基础(常用控件2)
  18. 一对一关联查询注解@OneToOne的实例详解(一)
  19. 蓝牙电话协议HFP(Hands-Free Profile) 三方通话功能相关的流程介绍 Three-way call
  20. 给最近正在找工作(iOS)的朋友一些建议/经验

热门文章

  1. Delphi POS打印的处理
  2. Qt定时器QTimer使用教程与代码演示
  3. win10中谷歌浏览器安装插件的位置
  4. ROS与VREP通信
  5. 机器人关节伺服电机PID串级控制
  6. 重新回归最初始的51单片机,跟我一起学单片机吧(内含单片机驱动、烧录软件、程序开发软件的安装和使用)
  7. Selenium无法定位的6种解决方案
  8. QTreeView+自定义Model实现示例
  9. tail -f 命令详解
  10. 电力安全防护的十六字安全方针