对开源软件修改的一些思考和总结

开源软件存在漏洞导致系统崩溃 背景 某个项目的预演环境总是过一段时间就宕机,所有服务都响应超时。经过排查发现是kafka停止运行导致网关卡死,从而所有请求都无法被处理。然后谷歌查了一下发现,这是因为kafka运行在windows平台的一个漏洞,因为未能正常关闭打开的日志文件导致的。网上也有关于这个漏洞的报告以及解决漏洞的合入记录。修改方法也很简单,先下载当前使用的kafka版本源码,根据合入记录把源码修改一下,然后重新打包放到服务器上面,替换掉之前的包再运行即可。但有个问题,我这么操作合规么? 第三方开源软件 项目中肯定会使用很多 阅读详情

对开源软件修改的一些思考和总结

  1.为什么修改?

    公司需要开发一款基于web页面的报表应用,但是不能自己从零开发,要基于现有的开源框架进行二次开发或者如果开发框架能满足需求就不再进行二次开发。最后在github上找到一款基于java spring框架的报表软件,但是部分功能不满足目前的需求,需要进行二次开发。

  2.如何修改最合适?

    虽然进行二次开发,领导要求做到不能影响到后续的开源应用升级。也就是说,我们可以对源码进行二次开发,但是我们开发所做的修改不能影响到后续开源应用升级时代码的合入!这对于我们而言可就是有点难了,原因在于:我们要把这个源码的运行原理了解清楚已属不易,了解了原理之后要修改最快的方式当然是在源码中直接修改原有逻辑,但是要不影响升级,就需要一番巧妙的设计才行。

 3. 修改的实现!

  既然任务已经下达,我们就只有迎难而上了。在开发之前我先进行了一番思考了。第一,这类问题以前肯定有人遇到过,那么他们是怎么解决的?我想到了MyBatis开源框架中对于api接口实现查询的代理原理。就是一种典型的修改某个方法的实现逻辑,于是我明白了这就是java 设计模式中的代理模式。第二,代理的具体实现。我采用了最原始的xml配置的方式进行aop配置,生成切面,指定切点,生成around增强(因为要修改原有的逻辑),如果符合修改的条件就执行新的逻辑否则执行旧有逻辑。当然中间遇到一些问题更加加深了我对spring aop的认识。1.同一个类的实例的方法内再调用其他方法,不能出发代理。这时候就要修改aop的配置和源码的一些调用修改,aop的配置就是要将expose-proxy设置为true,然后在原先调用的地方改为AopContext.currentProxy()的方式。原因就是代理的是一个类的实例,如果不是通过该类的调用不会被代理的。通过以上配置就是会将代理类暴漏出去,然后直接使用代理类显性的调用方法。2.对于一些没有使用接口的类的方法的修改要将aop的配置改为proxy-target-class=true。原因是spring的aop底层实现有两种,一种是基于jdk的动态代理,一种是基于cglib的动态代理。两者的区别在于,前者适用于有接口实现的类的代理,后者可以代理那些没有接口实现的类的代理,因为后者是基于字节码框架,生成一个子类进而重写父类的方法。

4.总结

  当我们遇到一些开发的难题的时候,首先要想这个问题以前的人有没有遇到过,他们是怎么解决的,我能使用他们的方法解决我的问题吗?其次,要对源码进行学习,并想为什么源码要这么设计,有什么好处,有什么坏处,以后在什么情况下能用这个设计呢;最后,熟练掌握设计模式对于我们设计和开发中解决关键问题的架构是大有裨益的。

无许可的开源软件可以使用吗? 背景 中国第一个关涉GPL协议的诉讼案件,数字天堂(北京)网络技术有限公司起诉柚子(北京)科技有限公司侵犯计算机软件著作权纠纷一案中,原告数字天堂公司起诉柚子公司发布的APICloud软件抄袭了数字天堂公司HBuilder软件中的三个插件的源代码,侵犯其多项权利[1]。 而柚子公司辩称,HBuilder软件属于应遵循GPL协议开放源代码的软件,应遵循开源,其构建衍生软件作品并不对数字天堂著作权造成侵犯。 也就是说,使用GPL协议的软件为开源软件,基于GPL协议作品产生的衍生作品也要遵循GPL协议,开放源代码 阅读详情

相关推荐

任务调度和开源软件opencron的使用经验

         本文是我在一个技术分享群里面,对于任务调度和开源软件opencron的分享和使用体会,现在整理成文字,供大家参考。         大家好,下面我来分享一下 部署和使用 opencron 任务调度工具的一些经验和体会         我计划从五个方面来进行分享: 1 任务调度需求与要素分析         任务调度,平时在大家的工作中应该会遇到比较多

yumushui的专栏 7631

侵入式和非侵入式

侵入式和非侵入式侵入式利弊非侵入式利弊拓展小结 侵入式 一句话概括就是,你的代码需要依赖框架的代码,如果把框架拿掉或者换一个框架,就需要重新修改代码。 举个很简单的栗子啦: 1.如果使用侵入式的框架,一般需要继承或者实现框架的某一个类或接口,这样你把框架拿到以后就会运行不起来,甚至在代码层面会报错哦。 2.当你的代码引入了一个组件,导致其它代码或者设计,要做相应的更改以适应新组件.这样的情况我们就...

杨的博客 7056

探索软件工程领域开源软件的可维护性设计

在软件工程的世界里,开源软件就像是一座大家都能参与建设的城堡。我们的目的就是要让这座城堡更加坚固、易于修缮,也就是提高开源软件的可维护性。范围涵盖了开源软件从代码编写到后期维护的整个生命周期,包括代码结构设计、文档编写、版本管理等方面。接下来,我们会先介绍一些和开源软件可维护性设计相关的概念,就像给大家介绍城堡里的各种建筑材料和工具。然后会详细讲解实现可维护性设计的算法原理和操作步骤,就像教大家如何使用这些材料和工具来建造城堡。还会通过实际的项目案例,让大家看看城堡是怎么建起来的。

软件工程实践的博客 674

开源软件FreeCAD0.20编译源码修改名称、换名称

开源软件FreeCAD修改名称、编译、换名 前段时间有个小伙伴问有没有办法把一个开源软件完全更名,不仅仅是编译的二进制可运行文件的名称,而是将整个工程的源码完全更改为自己想要的名称,对于这种需求,可能各路开源大佬会觉得不耻,但是鉴于国内这种鱼龙混在的软件开发环境,借助开源软件做开发,是各路大神普遍采用的捷径,至于修改开源软件的名称的目的,大家都心知肚明,但是对于一个庞大的开源软件系统做这种操作,可能不仅仅是再付替换这么简单。 最近有点空闲时间,尝试拿一个开源软件来试试,最近刚学习编译FeeeCA

jiashou2471的博客 1970

tonyCode抽奖系统(原HTML+JS抽奖系统)V4.0

系统说明 TonyCode抽奖系统(前身《html+js抽奖系统》),由tony于2011年自身公司年会需要设计演变而来,从单机网页版本,逐步演变为基于WEB可执行程序的系列版本。系统适用于投影投射宴会、晚宴、活动等场景的互动抽奖,最新版本支持用手机端遥控进程,系统采用HTML及WEB前端、后端相关技术开发,作者用最简单的方式打包了exe自解压程序,内置的HTA客户端脚本来执行相关的代码程序。 建议使用时采用分屏模式运行程序,如果运行场所有网络的话,您可以选择结合手机等移动端扫描的形式来获取抽奖控制权限,这样可以有更好的互动体验。 当然安装部分杀毒软件的电脑有几率会杀掉相关程序,如果出现无法开启的情况,您关闭一下杀毒软件再运行。 功能描述: 1) 可以设置按照数字号码或名单列表抽取的方式,等级、数量全部可以自由定义 2) 连接投影机扩展屏幕后,再启动程序可以自动识别投放到扩展屏幕上全屏幕显示(建议投影分辨率1024*768) 3) 界面美观大方,背景图片及顶部公司logo自由替换为文字或图片,适合于投影仪投射晚会晚宴豪华场所抽奖系统。(图片自行设计宽度可以根据投影显示器,高度216像素,本例子参考如片“tops.png”) 4) 可自由选择键盘、鼠标、移动端扫描控制等操作方式完成抽奖控制。 5) 正常windows7及以上内核系统即可流畅运行,建议不要使用非常卡顿的电脑执行程序。 6) 抽出“未到场”无效人员可以双击“演示器”屏幕的数字或号码位置,选择单独 重抽。 7) 自由定义配置每一次操作抽一组或者抽一个的显示效果 8) 自由定义过滤掉没有发到的号码段,或排除不能中间的名额号段。 9) 系统运行期间程序活动状态,自动屏蔽键盘上无用键以免人员误操作。 10) 抽奖完成后可以选择保存结果“抽取结果.csv”以便日后备案分析。 历史版本概况: V1.2.1----------------------------------------------- 2011-01-08 修复了window.obo = 1;时出现重复数字的错误,V1.1之前版本无此错误 ~感谢石路街道的领导提醒:) 2011-01-08 增加了可选滚动姓名的功能 配置 m_name=[]; 即可 2011-01-08 增加双击数字单独重抽时的提示选项“此号码在以后的环节是否还有机会抽到!” 2011-01-08 修改了结果显示部分的错位样式 2011-01-08 修复了组抽号码重复错误问题 V1.2.2----------------------------------------------- 2011-01-14 兼容了火狐浏览器,但本人建议仍然用IE,要用火狐只有按F11手动全屏了 2011-01-14 部分键 F5、退格、Ctrl+R、Ctrl+N、Shift+F10、Alt+F4 被屏蔽,避免一些意外发生 2011-01-14 优化了一些繁琐的结构,效率有所提升! 2011-01-16 去掉了配置参数 r、r_name,奖项配置变为window.ini,使配合样式表更加灵活 V1.2.2----------------------------------------------- 2011-02-10 在配置文件增加了速度控制变量,以便于在不同机器环境中做速度微调 V1.2.3----------------------------------------------- 2011-08-10 政府项目《12315电视直播》抽奖使用未对外发布定制增强版本 V2.0----------------------------------------------- 2011-09-13 突破性的解决了手工修改代码烦恼增加了图形化界面 2011-09-13 可以通过图形化设置界面保存配置文件(只在IE下有效) 2011-09-13 配置文件从HTML内提取出来,变为ini.js 2011-09-13 图形化配置界面做了一些兼容性优化 2011-09-13 奖项框除了可以填写样式名还可以直接填写样式代码,程序可以自动识别 2011-09-13 增加了手动和自动整理列表功能 V2.0.1----------------------------------------------- 2011-12-09 bug处理:列表获取处理错误,已修正! V2.0.2----------------------------------------------- 2011-12-31 bug处理:window.obo = 1;解决了不该有的错误提示!(未发布,直接发布下一版) V2.1----------------------------------------------- 2012-01-05 采用exe直接执行hta抛弃常见的浏览器模式,以免兼容性问题太多 V3.0-----------------------------------------------(终结版) 2017-1-23 修正了上一个版本的保存中间结果的bug问题,中奖结果直接保存到程序根目录 2017-1-23 修正了一次抽一个人的逻辑bug,增加作防范弊代码错误修正功能 2017-1-23 新增了保存配置文件是否下次跳过“引导页设置界面”选项,改进了保存等函数的效率及不兼容问题 2017-1-23 实现了扩展屏幕的自适应(存在扩展屏幕默认投放到扩展屏幕,否则就本地监视器显示) 2017-1-23 3.0版本把逻辑代码直接打包入了执行文件中,减少了冗余的文件数量 V4.0-----------------------------------------------(扩展屏幕移动控制板) 2017-04-10 增加了“扩展屏”奖项扩展控制器功能,原单屏版不受影响 2017-04-10 抽奖结果保存为“中奖结果.csv”文件,不再保存为原有的网页文件 2017-04-10 增加了移动端扫描二维码扫描进行遥控控制的基本进程控制功能 2017-04-10 对原有的逻辑文件做了全新打包精简掉一些不必要的冗余文件

Qt中多线程的使用(一)

我们要实现的是读取大文件qtgui.index的内容加入文本框中。 很容易想到的方法: QFile* file = new QFile("E:\qtgui.index"); file->open(QIODevice::ReadOnly); QTextStream *stream = new QTextStream(file); while(!st...

yao5hed的专栏 1万+

开源软件允许任何人自由查看、修改和使用源代码,这激发了更多的开发者参与到软件的创新和改进中来

开源软件的影响力主要体现在以下几个方面:促进技术创新:开源软件允许任何人自由查看、修改和使用源代码,这激发了更多的开发者参与到软件的创新和改进中来。很多新的想法和技术都得到了开发和推广,从而推动了整个技术领域的发展。

[Blog][Domain] programb.blog.youkuaiyun.com 2186

Lede(OpenWrt)安装和双宽带叠加

LEDE是一个专为路由器和嵌入式设备设计的自由和开源的操作系统。LEDE是OpenWRT项目的一个分支项目。LEDE操作系统包括许多路由器有用的功能,如网络地址转换、防火墙、端口转发、DHCP服务器等。

我的博客 6441

修改开源项目源码方法

将要修改的源码拷贝一下,

jerome 7656

C2000 ePWM与SDFM同步配置:从寄存器到Driverlib实战解析

在嵌入式实时控制系统中,脉宽调制(PWM)是实现电机驱动、数字电源等应用的核心技术,其信号质量和时序精度直接决定了系统性能。为实现精确控制,PWM信号常需与模数转换器(ADC)或Sigma-Delta滤波器(SDFM)的采样时刻严格同步,以消除开关噪声并获取准确的反馈信号。其技术原理在于通过硬件同步机制,将PWM的特定时间点(如周期中心)作为触发源,控制数据采集的启动时刻。这种硬件级同步能有效提升闭环控制的稳定性和动态响应速度,广泛应用于伺服驱动、变频器等高性能场景。本文聚焦于TI C2000系列微控制器,

weixin_33692284的博客 442

JS自动化生成大疆WPML航线文件实战(附完整代码与云台控制解析)

本文详细介绍了如何利用JavaScript自动化生成大疆WPML航线文件,以解决手动规划航线效率低、易出错的问题。通过解析WPML文件结构,特别是云台控制等核心参数,并封装可复用的JS模板函数,开发者能够快速批量生成复杂航线,如倾斜摄影五向飞行,实现航测与巡检任务的标准化与高效执行。

weixin_29007243的博客 299

开源软件版权盈利问题:个人理解

最近一直在思考开源软件的事情,所以特别了解了一下这个方面的内容,自己对这方面也有一些疑问,通过自己的网上的搜索得到了一些答案,不一定正确,在此做个记录,如果有不正确的,希望大家指出。 1、开源软件的版权 首先要明确自由/开源软件是一种有版权的软件,自由/开源软件是一种得到许可的软件。自由/开源软件许可协议(或许可证)是其版权实施的延伸。常见的开源许可协议详见我上篇文章。自由/开源软件的版权理论

zhulinu的专栏 8189

保姆级教程:在Windows 11上用VSCode和Conda搞定Depth-Anything-3(含常见报错修复)

本文提供在Windows 11系统上使用VSCode和Conda配置Depth-Anything-3的完整教程,涵盖环境搭建、依赖安装、常见报错修复及深度图生成实战。特别针对CUDA与PyTorch版本匹配、Hugging Face镜像加速等关键问题提供解决方案,帮助开发者高效实现计算机视觉中的深度估计应用。

weixin_30338481的博客 346

开源软件:技术创新与应用的推动力量

随着信息技术的飞速发展,开源软件已经获得了广泛的认可和应用。它的诸多优势,如低成本、可协作性和透明度,正不断地推动着软件开发行业的变革和创新。然而,随之而来的是一系列的挑战和问题,如安全风险和维护困难。因此,我们必须认真思考如何更好地利用开源软件,充分发挥它的优势,同时有效地应对潜在的风险。本文将探讨开源软件的影响力,以及如何在使用开源软件时取得最佳效益。在充满活力的技术领域,创新是至高无上的,有一种方法已获得显著的吸引力——开源软件。

从事移动开发八年,csdn博客专家,阿里云特邀专家,华为云云享专家,高级网络信息安全工程师,大数据工程师(高级),python技术开发(高级),HarmonyOS 应用开发者高级认证,现在某学校任教。 2万+

Android日志实战——车机日志获取(十五)

这个项目中的 Log 管理系统,其实只是将系统原生 Log 进行输出并导出,并没有太复杂的操作。还有一种 Log 管理系统需要对 Android 原生 Log 系统进行重写,例如我们使用 Log.d(tag, msg) 打印 Log,需要我们根据 tag 信息将不同模块的 Log 数据写入不同的本地文件下,这样可以方便不同模块查看自己的 Log,追踪异常问题。

小旭的专栏 3776

SAP物料主数据中的销售视图。这是一个在销售与分销模块中至关重要的核心主数据,直接关系到从报价到交货的整个销售流程

SAP物料主数据的销售视图是销售流程的核心基础,它定义了物料如何被销售、定价、开票和交付。销售视图包含五个关键控制点:1)基本销售数据控制物料销售状态;2)销售组织数据决定销售渠道和产品分类;3)通用物料数据管理销售描述和税务分类;4)交货计划控制交付参数;5)开票计划管理定价规则。这些设置直接影响销售流程顺畅度、数据准确性、客户满意度、财务合规性和业务灵活性。建议将销售视图创建纳入新产品引入流程,并建立规范的维护机制,确保业务变化时及时更新配置。

金牌架构师 666

开源软件是心怀鬼胎的大骗局 -- 开源软件是人类最好的正能量 --- 一个人的辩论会...

开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, OceanBase, Sql Server等有问题,有需求都可以加群群内有各大数据库行业大咖,可以解决你的问题。加群请联系 liuaustin3 ,(共2740人左右 1 + 2 + 3 + 4 +5 + 6 + 7 + 8 +9)(1 2 3 4 5 6 7群均已爆满,开8群近2...

sql server的专栏 1382

手把手教你学Simulink--FIR滤波器的设计与优化仿真

FIR滤波器的设计目标通常包括指定的频率响应特性(如低通、高通、带通或带阻),以及特定的应用需求(如线性相位、最小化误差等)。Simulink提供了一个直观且强大的平台来模拟这些设计,并允许用户通过调整参数实时观察其对系统性能的影响。明确你的系统需求,比如输入信号类型(如正弦波组合)、采样率、FIR滤波器的设计参数(如滤波器类型、阶数、截止频率等)。假设我们需要设计一个低通FIR滤波器,用来去除高于1kHz的所有频率成分,保留低于1kHz的信号成分。采样率为8kHz。

MHD0815的博客 346

[转]开源软件为什么没有流行起来?

这些年来尽管媒体一直在宣传开源的好处,但开源软件的市场占有率仍非常低,纵观软件市场仍是闭源软件在主打天下。使用开源软件的用户都是一些“精英”,而这些“精英”当中,绝大部分人也没有关注媒体一直在宣传的使用开源软件的好处。这到底是为什么呢?在认真思考后,发现其实媒体对开源软件的宣传已经偏离了软件的本意。我们都知道,软件只是作为用户所使用的工具。用户使用软件本意是解放用户自己而腾出更多时间和精力

jackei的测试生活 659

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

多方面论开源软件的影响力

开源软件在各行业的应用案例展示了其在解决问题、提高效率和降低成本方面的巨大潜力。从互联网和电子商务到金融服务、医疗保健、教育和学术研究,再到制造业和工业,开源软件都扮演着重要角色。通过开源软件,企业和个人能够获得高质量的解决方案,并且能够灵活地根据自身需求进行定制和扩展。这种开放、透明和协作的软件开发模式为各行业带来了更大的创新空间,为未来的发展和进步奠定了坚实的基础。

m0_50128907的博客 1083

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

开源软件的真正价值

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33979203的博客 662

我所理解的开源软件供应链安全

点击上方“开源社”关注我们| 作者:庄表伟|编辑:钱英宇| 设计:谭嘉露|责编:王玥敏1供应链与断供隐喻会帮助人,也会误导人。当我们谈到“供应链”时,会产生哪些联想?环环相扣?缺一不可...

dotNET跨平台 551

黑客工坊揭密:原来他们是这样制作开源软件的

近几年来,市面上流行的开源软件越来越多,有的触目惊心,有的改动了世界,有的震惊了国家。在这些黑客工坊里,人们究竟是怎么制作出来的?在这些黑客工坊里,有的做出来的软件很好很流行;有的做出来则很一般但是却也很流行;有的则做出来的很好但是不流行。这究竟是为什么呢?在这篇文章里,我将揭密开源软件的制作流程,中间会插入丰富的示例。考虑到这个过程的复杂性,同时为了让读者能对这个过程一目了然。笔者花了半天,画了

phodal 3193

再谈“开源软件供应链安全”

缘起 之前写过一篇文章《我所理解的开源软件供应链安全》,当时的情况,还没有出现一些值得探讨的,堪称紧迫的热点事件,所以我也仅仅是泛泛而谈,到最后留了一句话:「我的提议是:不再提“开源供应链安全”,而是提“开源生态建设”。」 在最近一段时间,接连出现了Log4j2事件,与Marak Squires删库事件,一时间大家都议论纷纷,我也觉得自己有责任,来更加深入的探讨一下,这个方面的问题。 一、时代...

u013182351的博客 3496

关于开源软件开发的若干问题

这篇文章的目的之一是完成开源软件开发导论课程的作业,在我之前了解到的开源软件中,小到某软件的插件或小工具,大到Linux内核和完善的工具类软件,似乎各种各样的软件都有,其中什么样的软件更适合开源呢?什么样的软件适合开源?

muttonyung的博客 554
上一篇: K8S部署总结以及相关常用命令吐血总结
下一篇: Go 并发时限制最大并发度并获取协程结果的两种方式;for range 和for index获取缓冲通道
tony_code_2017
博客等级 码龄9年 34粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值