加固软件主要做的两件事,对软件中关键代码的保护以及提高对软件逆向反编译的门槛。 那么软件安全性防护墙的第一道门那就是反调试。反调试技术又细分为静态反调试和动态反调试。...这个字段在程序正常运行的情况下值默认为0,在被调试器调试的时候(如ollydbg动态调试),这个字段为0x70(注意:ollydbg附加状态下是没改变的)。...我们还可以将其用作另一种方法来检测,软件是否处于正在调试。...CloseHandle 检测 利用异常捕获机制,给CloseHandle函数一个无效的句柄作为输入参数,在程序在没有被调试时,将会返回一个错误代码;而程序被调试器调试时,将会触发一个EXCEPTION_INVALID_HANDLE...反调试和反反调试的方案都是相对的,并不是绝对的安全。反调试强度更高的方案在于驱动层去检测实现。
在 VisualStudio 开始调试的时候经常需要加载很多符号,加载符号的速度很慢,很多时候我只是调试我的代码,因为框架提供的代码都是很稳定的,只有我这么逗比才会写出诡异的方法。...可以在设置开启仅我代码进行调试,开启之后只有自己的用户代码才会进行调试,也只有自己的代码才会加载符号文件,这样可以调试的速度 在 VisualStudio 可以使用开启仅我代码提高调试速度 点击工具-选项...找到调试里面的开启仅我代码就可以在调试的时候只加载用户代码的符号 此时会自动跳过库里面的代码调试,同时也会跳过使用DebuggerNonUserCodeAttribute标记的代码 如我添加了函数...Foo 在这个函数上面添加DebuggerNonUserCodeAttribute那么在调试的时候无法在这个函数添加断点也无法单步进入这个函数 [DebuggerNonUserCode]
在 VisualStudio 开始调试的时候经常需要加载很多符号,加载符号的速度很慢,很多时候我只是调试我的代码,因为框架提供的代码都是很稳定的,只有我这么逗比才会写出诡异的方法。...可以在设置开启仅我代码进行调试,开启之后只有自己的用户代码才会进行调试,也只有自己的代码才会加载符号文件,这样可以调试的速度 在 VisualStudio 可以使用开启仅我代码提高调试速度 点击工具-选项...找到调试里面的开启仅我代码就可以在调试的时候只加载用户代码的符号 ?...此时会自动跳过库里面的代码调试,同时也会跳过使用DebuggerNonUserCodeAttribute标记的代码 如我添加了函数 Foo 在这个函数上面添加DebuggerNonUserCodeAttribute...那么在调试的时候无法在这个函数添加断点也无法单步进入这个函数 [DebuggerNonUserCode] private static void Foo()
你好呀,我是why。 在我早期出了很多源码解读文章的时候,就有朋友私信我,要我出一篇关于 Idea 调试的小技巧的文章。...反正我是都用过的,这些姿势,呸,知识挺有用的。 以下是正文。...Debug 中,最常用的莫过于下一步,下一个断点(Breakpoint),查看运行中的值等等,这样的几个操作。 但是除了这些 IDE 还提供了一些 “高级” 的功能,可以帮助我们更方便的进行调试。...调用者收到异常后,就可以执行 catch 中的重试逻辑了,这样一来就不用通过修改程序等操作来模拟异常,非常的方便 Attach to Process Attach to Process,就是 Debug...好了,上面就是我要给大家分享的一些调试的小技巧啦。 你有没有什么独家的调试姿势呢? 欢迎大家在留言区分享。 ----
这个时候,我们就需要考虑如何将这些重复的代码进行复用。在这篇文章中,我将会和大家分享一些前端代码复用的精髓。1....代码自动生成我们在实践代码复用的时候,发现一个问题,那就是代码规范问题,具体按照什么样的模式来写代码,才能方便后续的这个业务逻辑能够被复用到多个端,我们可能需要一个标准的模板,定义出一套复用的框架,然后业务逻辑的开发者只需要按照这个模板来写代码...这者配合起来做这个事情,简直太合适不过,想一想,右键对着文件夹,点击生成代码,然后就生成了一套标准的业务逻辑代码框架,然后研发小伙伴只需要按照这个框架来写代码,就可以实现业务逻辑的复用了。...,extension.ts 生成代码实际上就是node fs来基于模板生成代码。...Extension Generator 这两个工具来实现代码自动生成,这样就可以配合我们更好的实现前端代码复用了。
我的女神——简洁实用的iOS代码调试框架 一、引言 这篇博客的起源是接手了公司的一个已经完成的项目,来做代码优化,项目工程很大,并且引入了很多公司内部的SDK,要搞清楚公司内部的这套框架...于是便有了这样一些需求:首先,我需要清楚了解各个controller之间的跳转关系,需要快速的弄清每个stroyBoard中各个controller的来龙去脉,其次,我想在不改变其他人的调试代码的情况下...,屏蔽冗余的log信息,让我的调试数据更加清晰明了。...,实现有两种思路,一种是采用工厂的设计模式,建立工厂类Controller,在其viewWillAppear中加入我们的调试代码,但这对于我的项目并不实用,首先我不确定所有controller都会继承于一个父类...思路是我们可以写一个方法,替换掉系统的viewWillAppear,在其中加入我们的调试代码,这个方法就是Method Swizzing,代码设计如下: //新建一个conreoller的类别 #import
相信大部分人学习Python,肯定会用print()这个内置函数,来调试代码的。 那么在一个大型的项目中,如果你也是使用print来调试你的Python代码,你就会发现你的终端有多个输出。...Icecream是一个Python第三方库,可通过最少的代码使打印调试更清晰明了。 使用pip安装Icecream库。...检查执行情况 如果你想要找到执行代码的位置,可以通过执行如下所示的操作,来查找执行了哪个语句。...删除Icecream代码 最后你可以将icecream仅用于调试,而将print用于其他目的(例如漂亮的打印)。...删除所有调试代码后,你的Python代码就整洁了。 总结 到此,你就应该就学会了如何使用icecream去打印调试。
过程中大家也积极讨论了一些防破解的方法,在征得到大家的同意后,我将讨论的方案整理了出来,希望对正在做小游戏的开发者们有所帮助或启发,如果你有更好的方案也欢迎留言讨论。...混淆代码,禁止调试 弱联网加密校验 增加彩蛋 1 混淆代码,禁止调试 对于 JavaScript 代码来说,最简单是对代码进行混淆加密。当有不法分子拿到代码后,使他不能直接阅读,进行二次开发。...晓衡曾经做过一个儿童教育应用,使用 javascript-obfuscator 做混淆加密,同时开启禁止调试功能,效果如下: ? 混淆出来的代码,样子变成这样: ?...微信平台以及其它小游戏平台,为了打击这种现象,会对代码相似度进行审查,超过一定比例相似度的代码会被判定为“代码包侵权”,将不能通过审核。...游戏被盗,作为个人是很难与一些不良公司抗衡的,更重要的是它会极大地打击我们学习和创作的动力。上面介绍了三种保护游戏的方案,抛砖引玉,相信大家还有更多更好的方法,欢迎大家留言讨论或来公众号分享你的经验。
获取站点名与简称的字典 下面就开始写代码了,首先有几个库是需要装的,要是没装,可以先安装一下 python -m pip install prettytable,selenium,requests stations.py...,我懒就没写了 browser.quit()#退出后台的浏览器,不退出会占内存的 #构建链接 request_url = 'https://kyfw.12306.cn/otn/leftTicket...数了一下后有46个内容,我们用正则表达式来提取有用的信息 decrypt()函数 def decrypt(string): string = ''.join(string)#传过来的是list类型...") else: if int(list[2]) < int(date[2]): exit("你输入的日期不在我的查询范围之内...") else: if int(list[2]) < int(date[2]): exit("你输入的日期不在我的查询范围之内
新故事背景: 上周末的,半夜11点多写完了《我用100行代码来支援青岛抗击疫情》,大概的内容是帮助之前的同学来处理几个excel匹配的问题。...原表信息大概有5w条,因为当时找了很多人来打电话,统计人员信息,时间紧急并没有做好规范。...上篇文章说,我在写一个关于打工人如何处理excel类的问题教程,我是真的在有准备。...我都大概整理了相关内容的目录,但是今天发现,处理问题不仅仅是一个包的功能,可能是一连串的内容都需要有点点了解,所以后面我在考虑考虑是否继续。或者你有什么更好的想法或者建议,也欢迎提供。...好了,今天就分享到这里,我是马拉松程序员,可不至于代码!
我的代码日程 强烈推介IDEA2020.2破解激活,IntelliJ IDEA...打印100~200 之间的素数 2. 输出乘法口诀表 3....判断1000年---2000年之间的闰年 1*1=1 2*1=2 2*2=4 3*1=3 3*2=6 3*3=9 。。。
技术:OpenStack二次开发的一些心得 如果有在利用社区代码和自研之间做取舍的话,还是尽量用社区开源代码吧。节省成本又省事,将来还方便升级。 如果要自研的话,要尽量控制自研范围。...遵循『能不改就不改,能小改不大改』原则,只有在需要的时候,才修改社区代码。 根据需求合理选择所需要才用的模块。在动手修改代码之前,多讨论,多思考,多测试,多对比,多比较。...我做PM的一点心得: 产品经理是要对产品成败负责的人。 产品经理需要在做产品前、做产品中、产品发布后不断接触用户,不放过任何一个抱怨,不要怕被用户嘲笑甚至骂,才能真正找到改进产品的点。...但是在私有云上,一来企业应用没有多少机会需要伸缩,二来即使在某些时间要伸也一般都是提前准备好资源。因此,在私有云上,弹性伸缩并不是一个关键功能。 做企业基础云的产品的目标之一是实现用户真正的自服务。...IDC团队:云平台在IDC中运行,因此肯定需要IDC团队的参与。IDC做不好,云平台就不会运行得好。 运营团队:云搭好以后,需要运营团队来把它推广给用户。需要确定推广策略、计费方式、回款方法等。
事情是这样的,前两天有个小伙伴问我:「为啥我的 webpack 运行完看不到我写的页面,而是:」 ? 嗯?文件列表页?好吧,这种情况我似乎没遇到过,一下子没法给出答案,只能要来关键代码: ?...这玩意还会影响 devServer 的效果,直觉告诉我不应该啊。 ?...emmm,成功勾起我的好奇心了,虽然写过一些 Webpack 源码分析的文章,但 webpack-dev-server 确实不在我的知识范围,好在我有秘籍《如何阅读源码 —— 以 Vetur 为例》,是时候展示真正的技术了...虽然不知道这是在那一层生成的,但可以肯定绝对不是我写的,而且这是在 HTTP 层面发生的。...Tips: ndb 是一个开箱即用的 node debugger 工具,不需要做任何配置就能调试 node 应用,非常方便 OK,答案揭晓了,在 ouput.publicPath = './' 场景下会命中这个中间件
“企业上云”是一个系统工程,它的步骤主要分为上云前的规划、设计,上云的实施以及上云后的验证和维护。具体“企业上云”流程如下: ?...帮助企业减少了时间与成本,方便他们更加专注于自身业务的拓展。...为了实施企业上云项目,YJ科技建立了专门的组织机构,如下图所示: ? 领导组:领导并负责整个项目,包括一名业务负责人和一名技术负责人。我作为技术负责人参与到领导组。...懂业务:既了解企业/行业的业务诉求,又懂企业传统IT应用,能帮助企业实现面向未来的升级。 有能力:有足够的能力来确保企业的业务能够在云端安全运行。...因此,选择开放开源的云产品,往往是一个通常的选择。这些产品技术资料丰富,代码可直接获取,而且人员招聘相对容易,学习门槛不是非常高。 在中期,企业自己的云团队可介入日常运维,甚至部分新功能研发。
好吧,这种情况我似乎没遇到过,一下子没法给出答案,只能要来关键代码: 重点看看 webpack.config.js 配置,用到 devServer + HMR 功能,其中: Webpack 版本为 5.37.0...这玩意还会影响 devServer 的效果,直觉告诉我不应该啊。...emmm,成功勾起我的好奇心了,虽然写过一些 Webpack 源码分析的文章,但 webpack-dev-server 确实不在我的知识范围,好在我有秘籍《如何阅读源码 —— 以 Vetur 为例》,是时候展示真正的技术了...,但可以肯定绝对不是我写的,而且这是在 HTTP 层面发生的。...node debugger 工具,不需要做任何配置就能调试 node 应用,非常方便 OK,答案揭晓了,在 ouput.publicPath = './' 场景下会命中这个中间件,执行 serveIndex
重点是今天周末去公司加班,处理上周五发版后遗留下来的问题。这个时候,之前的一个高中舍友,突然给我打电话,让我帮他处理点事情。...各个表中的关系都通过身份证号码来关联。 现在需要以汇总表为准,将汇总表的信息更新到子表中。如果子表中身份证号码没有出现在汇总表中,则单独标注。...n_path_list: print(i) get_child_excel(i) get_other_info() 故事后续: 因为他电脑里没有Python环境,我直接给他代码并不能用...其实对于代码来说,如果只有三五行数据,完全没必要。 代码的发挥场景是,数据量比较大,再就是需要经常做的工作,这样把流程性的东西做成一个脚本,以后每次跑一下就要可以得到结果。...后面呢,我会在空闲时间,写个如何用Pandas简单的处理点数据的教程,让这些整天想白嫖我的朋友们学习学习。 好了,今天就分享到这里,我是马拉松程序员,可不至于代码!
上面这张图,大概在 4 月份的时候我就画出来了,这也是这段时间以来,我一直在思考一个问题:到底什么才是经验?我输出的文章,究竟对读者的帮助有多大?...首先啊,我不是说自己的想法很高尚,是完全一点私心没有的助人为乐行为。 在公众号里写文章,最希望的结果就是让更多的人看到文章、关注我,形成正反馈之后,就会有更强的意愿来持续输出。...说明了这一点之后,我们再来从知识传递的角度,聊一聊经验是什么?怎么才能让一篇文章更好地帮助读者。...用骆驼粪来保养飞机皮革座椅 罗胖举了一个例子: 二战时的英国空军有一个规定,须用骆驼粪来保养飞机皮革座椅。 新兵难忍气味,而且材料特别不好找,老兵却劝说:既然一直这样做,定有其道理。...一日,参加过一战的新兵父亲来军营,无意揭开了秘密。 原来,一战时英军曾在北非沙漠使用骆驼运送物资,但骆驼对牛皮做的鞍具非常反感,怎么打也不肯走。 后来有人用骆驼粪来掩盖牛皮味,骆驼果然乖乖听话。
目录 一、什么是重构 二、我在重构什么 三、如何看待重构 四、历史文章指路 一、什么是重构 重构(Refactoring)就是通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性...我最近突然意识到我似乎不断在重构,这对我来说是好事还是坏事呢?我还没有一个非常准确的答案,我想先来分享下我对重构的一些看法。 二、我在重构什么 文档重构和代码重构。...可以按照时间维度见证自己的成长,我就时刻感叹,“我原来这么牛逼,有这么多收获,我早时间就学这个了啊,666”。 当然,现在我都是按照知识领域来划分了,每个小点尽量做到精准定位。...2.2 代码重构 我建立的一个Learn-Java的项目来学习Java,这还是在2020年初的时候建立的,看commit的时候真是惨不忍睹,哈哈哈,毫无规划,想到啥写啥,一通瞎改。...我现在也没有一个好的方案,但是至少意识到了这个问题,也是一个非常好的开始了。 我们可以有一个好的开始:考虑的不仅是当下,更是未来,可以说活在未来,在未来的角度来审判当下的设计。
接下来调试 button 组件的源码,那问题来了,我怎么知道在哪里打断点呢? 我们可以知道的是,这个 button 会处理点击事件,但是却不知道事件处理函数的代码在什么地方。...之后开始编译,在 npm scripts 中可以找到 dist 命令,这就是构建源码用的: 但是我们只需要 element-ui.common.js 这个文件: 其实只需要执行其中的一部分脚本,也就是这个...当然,有的组件找不到的时候,还是可以通过事件断点的方式来进入组件内部。...我们是通过 Chrome DevTools 调试的,其实用 VSCode Debugger 来调试它也是一样的,在 Chrome DevTools 里打的断点,在 VSCode Debugger 里同样会断住...但是组件的代码是被编译打包过的,不是最初的源码。 为了调试最初的源码,我们下载了 Element UI 的代码,build 出了一份带有 sourcemap 的代码。
tips:这个按钮之所以叫做Drop Frame,是因为JVM内部是以栈帧为单位来保存线程的运行状态,Drop Frame直译过来就是扔掉当前运行的栈帧,回到上一帧的位置,这样就实现了穿越。...现象就是你只管打断点,线程之间不乱跳算我输,程序举例如下: ? 老师提出问题后,四个同学开始抢答: ?...四、远程调试 大家能看到这里,小明不得不给大家介绍一个装X的技能:云调试。即本机不用启动项目,只要本机的源代码与远程服务器运行的jar包匹配,就可以在本机直接远程调试服务器上的代码!...在idea中设置远程调试 ? 接下来我们就可以正常调试了,调试方式和本地运行服务调试无差,不信你发起一个请求,并在对应的逻辑代码中打个断点试试?...以上,这就是小明近期总结的IDEA的DEBUG技巧,希望可以帮助到大家。善用上述调试技巧,相信大家撸起代码来会更加有感觉,主要体现在:今晚可以不用加班!
领取专属 10元无门槛券
手把手带您无忧上云