最近,来自 BBC 的一名资深软件工程师 Daniel Harper 使用 Go 语言成功模拟出了一个 CPU 的所有功能,并把自己的经历写成了博客,引起了人们的热议。...我不知道 L1/L2 缓存(cache)和 pipelining 是什么,也完全不确定自己是否理解 Meltdown 和 Spectre 漏洞论文,所以想要更深入地了解这些东西。...一些人告诉我,他们正在优化代码以更好地利用 CPU 缓存,而我却不知道如何验证真假,只能选择相信他们。我真的不确定 x86 指令是什么。...我的开发之旅 开发过程实际上只是阅读文本、查找图表、然后尝试使用通用编程语言代码(而不是使用为集成电路开发而设计的代码)来翻译。 之所以用 Go 语言来写,是因为我对 Go 了解一点。...无论如何,我最终编写出了四个程序,其中多数程序使用一些共享代码来绘制字体、获取键盘输入等。虽然与操作系统还有一定的距离,但它确实让我意识到一个简单的操作系统也可能提供一些服务。
利用cocos creator 3d做了个3d版的羊了个羊,文末“阅读原文”可体验。
我的代码日程 强烈推介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 。。。
背景 年底了,换了项目组,新的项目组使用react,从vue到react,我只花了一天的时间,看了官方简单的文章之后,就觉得这玩意很简单啊,比起vue的那么api来说,这根本没有学习成本好吧,十分迅速的就进入了...react的项目开发,并且洋洋得意,根据我多年的经验来看,这波肯定会得到领导的赏识 很快,我就做完了我的需求,把代码提交上去,组长可能确实比较闲,还review了我的代码,并且指出了一系列的问题,并告诉我说学习...react最难的部分,并不是知道怎么使用它,而是要知道怎么能够编写良好,干净的react代码 主要给我提了六点错误,我相信在座的各位,可能需要对号入座 在不需要使用state的时候使用state 涉及到项目中的代码逻辑...,我们将一些内容通过demo的形式展示出来 提交表单在很多场景下都需要用到,对于一些表单的提交,大多数人的代码的实现可能是以下方式 export default function App() { const...onChange={(e) => setName(e.target.value)} /> {userName} ); } 咋一看好像没什么问题
背景 为了提高开发的软件产品安全性,大部分选择的方案防护方案是,通过用成熟的加固软件进行对自己研发的软件做防护,从而达到对软件搭建一个安全防护墙。...加固软件主要做的两件事,对软件中关键代码的保护以及提高对软件逆向反编译的门槛。 那么软件安全性防护墙的第一道门那就是反调试。反调试技术又细分为静态反调试和动态反调试。...对于X86系统,Vista以上版本的HeapFlags位于0x40偏移, 低于Vista版本的位于0x0C 对于X64系统,Vista以上版本的HeapFlags位于0x70偏移,低于Vista版本的位于...CloseHandle 检测 利用异常捕获机制,给CloseHandle函数一个无效的句柄作为输入参数,在程序在没有被调试时,将会返回一个错误代码;而程序被调试器调试时,将会触发一个EXCEPTION_INVALID_HANDLE...反调试和反反调试的方案都是相对的,并不是绝对的安全。反调试强度更高的方案在于驱动层去检测实现。
大家好,我是 Rocky0429,一个在划水界鼎鼎有名的蒟蒻... 最近雨下的有点多,导致我划水量有点大,被水淹的有点不知所措,患上了传说中的拖延症性关节炎... ?...这直接导致最近我经常能在后台看到诸如“辣鸡,取关了”、“狗营销号”等溢美之言,不绝于耳... 搞的我有点羞涩,毕竟我这人最受不了别人夸我... ? 所 以 我 决 定 要 做 回 普 通 人! ?...我这人没别的爱好,就是喜欢自虐... 为了改头换面重新做人,在某个夜深风高的夜晚,我扛着我的小锄头,挖出了我压箱底的宝贝,轻轻掸去了一层浮灰... ?...想象一下,本就拖拖拉拉的自己,好不容易忍着写了几百字,突然想玩会手机犒劳一下自己,手机刚拿出来,写的东西没了,你是什么感觉?我想了一下,如果我有钱的话,我直接就把手机砸了... ?...顺便立个 flag,我以后要是再拖延我就抽死我自己,这篇文章写了十几次才写完,换谁也扛不住啊,手指头都要断了... 看在我手指头的份上,怎么也得给个在看安慰一下不是...
(value in obj) { keys.push(value) } // good let keys = Object.keys(obj) // ['a', 'b'] 巧用解构简化代码...let person = { name: 'LiMing', age: 18 } // bad function sayHi (obj) { console.log('大家好,我叫...' + person.name = ',我今年' + person.age + '了') } // good function sayHi (person) { console.log(`大家好...,我叫${person.name},我今年${person.age}了`) } // best function sayHi ({name, age}) { console.log(`大家好,...我叫${name},我今年${age}了`) } 19.函数使用箭头函数 let arr [18, 19, 20, 21, 22] // bad function findStudentByAge
再来看下面代码: int a=l; if(O==D) a=O1; else l=o1; 上面这串代码整的傻傻分不清O和0,l和1。简直亮瞎我的眼。...行动起来 下面这段话摘至《Clean Code》作者: ❝我写函数时,一开始都冗长而复杂。有太多缩进和嵌套循环。有过长的参数列表。名称是随意取的,也会有重复的代码。...不过我会配上一套单元测试,覆盖每行丑陋的代码。 然后我打磨这些代码,分解函数、修改名称、消除重复。我缩短和重新安置方法有时我还拆散类。同时保持测试通过。...最后,遵循本章列出的规则,我组装好这些函数我并不从一开始就按照规则写函数。我想没人做得到 ❞ 就像写作文一样,好的代码也不是一次性写出来的,需要反复琢磨。...满足于仅仅让代码能工作的程序员不够专业。他们会害怕没时间改进代码的结构和设计,我不这么认为。没什么能比糟糕的代码给开发项目带来更深远和长期的损害了。进度可以重订,需求可以重新定义,团队动态可以修正。
引子 最近一直在用PyQT跟python-opencv做开发,正好需要固定阈值二值化,于是我就随手写下了如下的代码片段: image[image > t] = maxval image[image <...t] = maxval image[image <= t] = 0 else: image[image > t] = 0 image[image <= t] = 255 感觉这代码写的满分...,于是我调试的时候,输入一张灰度图像,只要我选择bin_type=0总是正确执行二值化,只要我输入bin_type=1就一片白色。...我测试了几张图像之后感觉有点怀疑人生了,逻辑这么好的代码,居然不正确执行! 真相让我崩溃 这个问题当时让好郁闷,感觉自己智商出问题了!...后来我还想起了很久以前,我从github上面下载有个别人的项目,他的代码里面也有类似的写法,我记得我当时调试发现这段代码不工作,因为当时项目代码很长,我就保存图像发现不正确,就用opencv-python
嗯,我的代码没有else系列,一个设计模式业务真实使用的golang系列。 ? 前言 本系列主要分享,如何在我们的真实业务场景中使用设计模式。...关于怎么用,完全可以生搬硬套我总结的使用设计模式的四个步骤: 业务梳理 业务流程图 代码建模 代码demo 业务梳理 按照如上某东的订单结算页面的示例,我们得到了如下的订单结算页面模块组成图: ?...----------------------- //我的代码没有`else`系列 //组合模式 //@auhtor TIGERB //-------...我的代码没有`else`,只是一个在代码合理设计的情况下自然而然无限接近或者达到的结果,并不是一个硬性的目标,务必较真。 2....---- 我的代码没有else系列 更多文章 代码模板 | 我的代码没有else 链式调用 | 我的代码没有else 点击https://github.com/TIGERB/easy-tips/tree
嗯,我的代码没有else系列,一个设计模式业务真实使用的golang系列。 ? 前言 本系列主要分享,如何在我们的真实业务场景中使用设计模式。...关于怎么用,完全可以生搬硬套我总结的使用设计模式的四个步骤: 业务梳理 业务流程图 代码建模 代码demo 业务梳理 我通过历史上接触过的各种抽奖场景(红包雨、糖果雨、打地鼠、大转盘(九宫格)、考眼力、...------------ //我的代码没有`else`系列 //模板模式 //@auhtor TIGERB //------------------...//------------------------------------------------------------ //我的代码没有`else`系列 //模板模式 //@auhtor TIGERB...我的代码没有`else`,只是一个在代码合理设计的情况下自然而然无限接近或者达到的结果,并不是一个硬性的目标,务必较真。 2.
王女士描述的暑期兼职欺诈不是个例,小助手在后台还收到了类似这样的粉丝留言: 田七 我和同学找她刷单,说好了一单一结,结果变成了一个任务有10单,我们根本没那么多钱,她还不退钱。...月月 我被网络兼职骗了,怎么办啊,我一个月的生活费? 接下来小助手就带大家见识一下那些专门瞄准学生党的诈骗案例。...案例一:听说紧缺快递录单,我就报名了 小雨(化名) 初二学生 小雨无意在QQ上看到有人招聘快递录单员,就想赚点零花钱。...小雨准备好接单了,这时任务员才说要交198元的会员激活费才能做任务,小雨很是犹豫,但对方承诺做满7天后退还,又晒出了兼职人员的工资结算单。 小雨很动心,就交了钱。...青少年网恋又出新招,磕泡泡了解一下 谁动了我的个人信息?
前几天看到了一个开源项目中的远程执行漏洞,开发者通过 HTTP 接口暴露了一个参数,接收参数之后,代码中将该参数拼接了一个命令,然后把这个命令使用 Python 中的 Popen 执行了,然后把对应的输出结果返回到了...这开发者都这么不注意的吗?这谁干的好事啊? 没错,那个开发者就是我。。。...比如,这里我定义一个方法,接收一个参数 host,然后拼接了一个 dig 命令,用于查找这个 host 的解析地址,代码如下: from subprocess import Popen, PIPE def...传入了一个域名,输出了 dig 命令之后域名的解析结果。...而且尤其我作为开源项目的作者,我也有必要好好地处理好安全性问题,不然大家用了我项目,但是出现了问题,我还是难辞其咎的。 以后我会多加注意,谢谢大家的支持。 End
那么,这些低代码平台是如何降低软件开发的学习曲线呢?我个人的感受是以下几个方面。 可视化工具 首先,降低开发门槛的一大利器是提供动动手拖拖拽拽就可以完成主要 UI 界面的可视化工具。...我自身是 github copilot 的深度用户 —— 近半年来我个人项目中 70% 以上的单元测试代码都是 Copilot 帮我完成的, 它大大提高了我开发的效率,使得我在不必花费太多额外时间的前提下...虽然 Copilot 帮我完成的代码有时还是有荒谬绝伦的错误,但大部分时候,它能够很好地领会了我的意图。而最近一个月爆红的 ChatGPT 更是把 AI 辅助开发的潜力提升到了一个新的高度。...我对低代码开发平台的浅见 出于职业习惯,我对不少低代码平台都做了一些肤浅的尝试。它们在各自的细分领域都有不俗的表现,但没有特别让我眼前一亮的通用开发平台。...我自己做的简单的测算,同样功能的代码,同样的预算下,Rust 代码可以支撑 4-10 倍 nodejs 的请求量。
导读 程序员痛恨遇到质量低劣的代码,但在高压环境下,我们常为了最快解决当下需求而忽略代码规范,在无意识中堆积大量债务。我们还观察到许多开发者被迫加班的罪魁祸首便是写低效代码、不重视代码优化。...接下来,我将为各位列举9种我个人工作中高频遇到的不整洁代码行为,并提出针对性优化建议。...过长的函数和方法:编写过长的函数和方法,导致代码难以阅读和理解。过长的行:编写超过50字符的代码行,导致代码难以阅读。...4.1 缺乏复用性 代码重复是一种非常常见的错误。当我们需要实现某个功能时,可能会复制粘贴之前的代码来实现,这样可能会导致代码重复,增加代码维护的难度。...,计算逻辑存在重复,这样的代码重复会影响代码的可维护性。
我将借此机会,与您分享我那段令人难忘的编程初体验,那段充满了繁复、愚蠢和迷茫,却也锻造了我如今的编程能力。让我们一同走进我的编程时光隧道,重温那个曾让我笑与泪交加的糟糕时光。...我还记得那天,我迫不及待地想要用编程解决一个简单的问题:判断一个给定的整数是否为素数。对于一个编程新手来说,这似乎是一个令人兴奋的挑战,但我的完美主义倾向却导致了我写下了一段极度繁复而愚蠢的代码。...我的代码开始于一个庞大的 if 语句,里面包含了各种条件,以确定一个数是否为素数。我试图在一个函数中完成这一任务,但不幸的是,我的代码很快就失控了。...这个代码的问题在于,我试图手动检查了所有可能的除数,但却忽略了素数的基本定义:只有两个正除数,1 和自身。我的愚蠢代码反映了我对问题的过度复杂化,以及对基础知识的不足。...这段修正后的代码更加简洁和高效,而且在正确性上也毫无问题。但是,我却花费了大量时间和精力在一个愚蠢而繁复的代码上。 这个故事告诉我们,编程不是追求繁复和复杂性的游戏,而是要注重简洁和正确性。
本文记录我写的代码逗比代码 C++ 篇 其实我发现使用 C++ 写逗比代码比 C# 更开森 #define !...std::cout << b; } 你猜猜输出是什么 本文所有代码放在 github 和 gitee 欢迎小伙伴访问
需要在修改函数中加入一个去除空字符串的函数. /** * 去除数组中的空字符串 */ function removeEmpty($arr) { $array = $arr; foreach
代码 附魔剑 锋利,火焰附加,击退 /give @p minecraft:diamond_sword 1 0 {ench:[{id:16,lvl:10000},{id:20,lvl:10000},{...id:19,lvl:10000}]} 附魔泥块 有附魔剑的属性 /give @p minecraft:dirt 1 0 {ench:[{id:16,lvl:10000},{id:20,lvl:10000
本文是我在日常读代码中积累的一点心得,分享出来,希望能与大家产生共鸣。 1. 寻找一位好老师 优秀的项目就像一位好老师,我们可以从它身上全方位地学到各种领域知识。...除了看 overview,我也会大致关注配置,通过必填配置可以进一步了解软件的依赖和外部特性。...当我们能用图表和文字来表达出软件的完整设计后,我们对代码的理解已经比较透彻,甚至,让我们自己来照着写一个新的也不是不可能了。 这个时候,就应该进一步的思考,如果是我自己来解决问题,我会怎么做?...我在读 Go 语言内存管理代码的时候,一开始搞懂了 tcmalloc 的原理和实现,但对其所谓线程缓存、无锁分配等等卖点理解不深刻。...结语 本文是我日常读代码的一点经验,总结下来,就是要 仔细地选择学习的项目; 先通过文档了解全景,再逐步深入代码; 找对抽象和边界,能帮助我们建立思考模型; 写篇文章讲述代码的设计,是深入理解代码的好办法
领取专属 10元无门槛券
手把手带您无忧上云