首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

程序员不仅要学会百度,更要懂得提问

前些天在学习EasySwoole的时候看到了开发文档上关于提问的艺术,以下是结合了自己开发过程中遇到的问题列出了几点建议: 1、遇到问题别慌,且看报错提示,有报错信息进行一系列的排查,确定错误范围 2、...例如: 当你上传文件这个逻辑出现问题,你问:"为什么没法上传文件",是没有人能回答的了你的,你自行排查,直到一个小范围. 例如: 上传文件,选择文件之后,发生错误....问题可分为以下几种: 概念问题,某种抽象概念的不理解 代码问题,代码出现非预期的情况,报错等 框架问题,出现框架报错,运行出错,运行逻辑不理解等问题 逻辑问题,对某种功能实现的逻辑不理解 性能优化问题...为什么协程要是用mysql连接池 等 代码问题 代码问题,我们需要截图代码,以及报错信息,并且说明自己要实现什么功能,例如: 想要实现文件上传,已经尝试了修改权限,但是不知道为什么代码会报错(附上错误信息...性能优化问题 性能优化问题,需要先确认慢的地方,然后截图,例如: 发现这段代码执行特别慢,有什么错误吗?(附上代码截图) 这段sql想实现xxxxx查询,但是非常慢,能优化吗?

87420

在实践中学习类型定义、类型覆盖、CSS Modules

less" { const classes: { [key: string]: string }; export default classes; } 当我尝试这段代码放到vite-env.d.ts...检索的关键词不应该有错误的~ 2.3 在源码中查找线索: 尝试在查看导入的 less 模块的定义文件是你会看到如下的截图,在 vite 源码中已经预先定义了识别 less 模块的代码,在node_modules...小结:在第二节中通过发现 less 模块类型识别的错误联想到了 Ts 识别 vue 模块需要做类型的声明定义,并通过百度检索得到了一份 less 模块类型声明的代码片段,再 Vite 文档的支持下成功覆盖掉默认声明的类型...两个不怎么成功的尝试 4.1 尝试更改 CSS Modules 文件命名格式: 在源码中找到了下面这块代码,内部使用正则来确定了如何识别一块 CSS 为模块或非模块,但是并没有找到可以通过选项来控制这块逻辑的变化...CSS Modules 的方法,虽然在最后尝试去除.module 和融合typescript-plugin-css-modules插件选择了放弃,在过度的探索中可能会出现更多的坑,会陷更深,所以我选择适可而止了

1.6K20
您找到你想要的搜索结果了吗?
是的
没有找到

Android NDK层发起HTTP请求的问题及解决

在实际使用中,的确可以通过引入 fcl-web 来完成跨平台的网络请求,然而在 Android 端实际测试,却发生了奇怪的错误。...比如说请求我自己的服务器 www.rarnu.com,会发生以下错误: ? 而当我换用 IP 地址来请求,却是可以成功的。 输入的域名是实际存在的,可以排除掉域名本身的问题。...尝试使用 adb 连接手机,并对以上两个 key 进行取值: ? 的手机上取出来的是 OpenDNS 的值,自己设置过。...其实这段代码很明确,关键变量是 DNSServers,打印一下看看是个什么值: ?...最后,把上面的 InitResolver 改一下,使其可以正常加载工作于 Android 端的这段代码: ? 编译运行程序,Error resolving host 的问题即得到了解决。

1.2K20

改进你的c#代码的5个技巧

在本文中,将向你展示c#编程的5个最佳实践。从日常编程经验中学到了这些实践。在release模式下测试了所有的代码,并在开发环境稳定后进行了截屏。想你会喜欢这些建议的。...就在几个月前,也是其中之一。但是当我开始学习编程中的最佳实践以提高代码性能了解到了错误的数据类型是如何影响代码的。将展示一个演示来证明这个概念。 ?...原因是,list以对象格式存储数据,当我们首先尝试存储值类型,它将其转换为引用类型,然后再存储。因此,第一点是始终选择适当的存储机制以获得最佳性能。...不要担心,已经在发布模式下测试了这个示例,这个屏幕截图是在几次测试运行后拍摄的。...在进行大量字符串拼接操作,请使用StringBuilder代替String。为了演示它对代码性能的影响,准备了以下示例代码在for循环中执行了500次字符串拼接操作。 这是输出: ?

67010

Unity3D Editor自定义窗口、自定义组件学习分享

在我们的代码中,用了一个 if 判断语句来判断,当我们点击该按钮所触发的事件(该函数的返回值是一个 bolol 类型),在代码中克森也上好备注了,因此也没有什么难的,直接上效果图: #####SaveBug...如下图所示便OK: 这段代码简单了吧,也就两个参数,如果还是不清楚的小伙伴可以多尝试尝试。 作用:这个可以用在AI上面,然后为每一个AI添加一个位置操作柄,这样好像看上去方便不少吧?...这段代码同样很简单了吧,也是两个参数,如果还是不清楚的小伙伴可以多尝试尝试。 做一个操作,看看大伙们能不能看懂想表达的意思: 是不是感觉像是静止一般,一动不动的呢?...里面的逻辑代码也很简单,那就是绘制一个按钮,当我点击让 MyHandles.shoNodeHandles的值取反(也就是原来为true,点击后取反,便为false)。...补充:在第一对函数里操作和自定义窗口里操作几乎相同,大家可以参考下面API去尝试尝试: http://www.ceeger.com/Script/GUILayout/GUILayout.html

1.7K22

使用 OpenCV 进行运动检测

OpenCV ,安装需要花费大量时间,即使反复尝试安装,RasPi 仍然挂起。...当我在Pi上运行代码,出现了此错误运行代码出错 当我搜索imshow功能明白代码需要X-server才能运行。因为正在对的 Pi 执行 ssh,所以代码没有运行。...运行此命令使可以在 ssh 期间访问 X-server。...ssh -Y pi@ 然后再次运行python代码到了这三个窗口—— 运行 piimagesearch 的 Python 代码 根据教程,代码需要第一帧为空来检测该区域是被占用还是未被占用...这段代码非常基础,正如我们所看到的,即使框架中只有代码也会感应其他运动,就像电风扇的一片扇叶一样,并且有多个块,所以需要更多的逻辑来建立在它之上。

82310

方法论:在不是太懂源码的情况下,是怎么定位源码问题的?

本篇文章讲解介绍最近遇到的一个真实例子,在不是太懂源码的情况下,通过自己的一些经验、调试技巧,去定位问题发现问题在的某个项目中,当我使用 pnpm i --fix-lockfile ,一定会报如下错误...调试代码光有决心还是没有的,实际行动。但一个巨大的问题摆在面前,pnpm 的代码也没看过鸭,调个啥玩意???因此,第一个问题,是怎么把 pnpm 源码跑起来调试呢?...webstorm 的调试配置,qf-tds-vue-plugins 是的项目文件夹,下面配置的意思是,要在这个文件夹运行以下命令(因为是在项目目录安装依赖):# 实际上 pnpm i,也是运行全局安装的...当我知道了以上信息之后,就可以提供一个最小的可复现 Demo 了不过,觉得既然都看到这里了,不如尝试一下自己修复。...里面用到了很多调试相关的技巧,这些技巧可以帮助我们,即使在不熟悉源码的情况下,也能深入源码进行定位问题这些技巧主要包括以下这些:全局搜索查找关键词/错误信息,找到相关的源码转化问题,将大的抽象问题,变小变具体在合理的位置打断点巧用条件断点

89720

100%代码覆盖率的悲剧

以下为译文: 十五年来,一直在推广TDD(测试驱动开发),或让开发写一些单元测试。不过,最近发现自己对于测试的想法开始改变,现在更经常说的是:“这段代码(模块)为什么要进行测试?...“而不是“这段代码应该进行测试”。 背景 有一天,一位开发人员找我帮忙,他在进行单元测试,确切的说是他在使用Mockito测试以下代码到了麻烦: 当我跟他说:“这里不需要测试。”...“不测试怎么知道这段代码运行啊?” “这段代码的功能看起来很简单,没有条件,没有循环,没有转换,没有任何复杂的东西,只是一段简单的代码。”...“但是使用Mockito进行所有的测试!” : ”……” 下一次碰到他,他自豪地说,他已经设法用Mockito写了测试。...通过观察代码发现以下Cucumber测试: 如果您以前使用过Cucumber测试 ,你就不会对如何多的支持代码感到惊讶了: 所有这些都需要测试: 是的,这只是一个简单的map查找。

95470

由 go orm 引发的探索

以下内容是手贱之后的另一个愚蠢记录, 可跳过. 另一个问题 此时以为已经深得精髓, 解决方法很简单, 将两个方法的从属都改为值类型就好了嘛....于是动手写了一段代码来模拟这段操作: func main(){ // 这里模拟了当时设置的代码内容 typeOf := reflect.TypeOf(Content{}) reflectValue...然后开始了疯狂检查的过程, 直到我写下了这段代码之后, 陷入了沉思: content := Content{} content.SetName("hh") fmt.Println(fmt.Sprintf...默默的点起一支烟, 望着眼前的代码发起了呆. 经过与之前改动的对比, 知道问题一定是出在指针与值类型的转换上. 的天, 最终发现犯了一个多么愚蠢的错误....回想了一下, 当时正确的检查步骤应该是: 在Scan方法内打断点, 查看是否调用了方法以及两次调用传的参数是否一致 当发现调用方法且参数一致, 就直接到了最后一步并最终找到指针的问题 若没有调用方法或参数不一致

2.5K30

方法论:在不是太懂源码的情况下,是怎么定位源码问题的?

本篇文章讲解介绍最近遇到的一个真实例子,在不是太懂源码的情况下,通过自己的一些经验、调试技巧,去定位问题 发现问题 在的某个项目中,当我使用 pnpm i --fix-lockfile ,一定会报如下错误...调试代码 光有决心还是没有的,实际行动。 但一个巨大的问题摆在面前,pnpm 的代码也没看过鸭,调个啥玩意??? 因此,第一个问题,是怎么把 pnpm 源码跑起来调试呢?...webstorm 的调试配置,qf-tds-vue-plugins 是的项目文件夹,下面配置的意思是,要在这个文件夹运行以下命令(因为是在项目目录安装依赖): # 实际上 pnpm i,也是运行全局安装的...当我知道了以上信息之后,就可以提供一个最小的可复现 Demo 了 不过,觉得既然都看到这里了,不如尝试一下自己修复。...里面用到了很多调试相关的技巧,这些技巧可以帮助我们,即使在不熟悉源码的情况下,也能深入源码进行定位问题 这些技巧主要包括以下这些: • 全局搜索查找关键词/错误信息,找到相关的源码 • 转化问题,将大的抽象问题

63610

StackOverflow上87万访问量的问题:什么是“找不到符号”?

坚持写作这些年来,真的成长特别快,建议你也行动起来——坚信,学习不在入,而在出! ? 上图是之前的一个领导给我发的微信,看来他也看到了的成长。...01、“找不到符号”错误是什么意思 先来看一段代码: String s = String(); 有点经验的 Java 程序员应该能够发现上面这段代码中的错误,它缺少了一个 new 关键字。...因此,这段代码在编译阶段是不会通过的。 ? 当我们对编译错误置之不理,尝试运行它的时候,程序会抛出以下错误。 ? “找不到符号”,意味着要么源代码有着明显的错误,要么编译方式有问题。...03、如何修复“找不到符号”错误 一般来说,修复“找不到符号”的错误很简单,要么根据 IDE 的提示在编写代码的时候直接修复;要么根据运行后输出的堆栈日志顺藤摸瓜。 ?...在初学 Java 的时候,老师要求我们用记事本来编写代码,然后在命令行中编译和运行代码,那时候真的叫一个痛苦啊。 ? 经常出现“找不到符号”的错误,差点入门到放弃。

1.5K41

Java 泛型详解

编译器做完相应的类型检查之后,实际上到了运行期间上面这段代码实际上将转换成: ?...对于上面这段代码还是很好理解,字符串数组不能存放整型元素,而且这样的错误往往要等到代码运行的时候才能发现,编译器是无法识别的。接下来我们再来看一下假设Java支持泛型数组的创建会出现什么后果: ?...类似这样的错误假如出现才实际的应用场景中,将非常难以察觉。 如果你对上面这一点还抱有怀疑的话,可以尝试运行下面这段代码: ?...实际上不是这样的,我们先来看一下下面这段代码这段代码运行的时候会抛出ClassCastException异常,提示String无法转换成Integer: ?...如果按照我们上面生成的代码运行到第3行的时候不应该报错(注意注释掉了第4行),因为MyNode中不存在setData(String data)方法,所以只能调用父类Node的setData(Object

66450

代码调试最佳实践

以下为译文: 昨天和一些朋友一起调试代码,他们做程序员这一行都不太久,向他们展示了一些代码调试技巧。 今天早上在想,应该如何教授他们学习代码调试?...认为这里可能需要循环地重复以下步骤: 猜测可能发生的错误的某一个方面(比如说,“这个变量被设置为X,它应该是Y”,或“发送到服务器的请求是错误的”,或“这段代码根本没有运行过”等等)。...; 文档是正确的; 正在查看的代码在某个时刻被执行; 这两段代码是按顺序执行的,而不是并行执行的; 这段代码在调试模式和发布模式下编译(使用或不使用-O2开关,或…),会做同样的事情; 编译器没有错误...每当我的程序有问题并且报告这样的错误信息“Error:无法连接到某个IP的端口443:连接超时”都想说:“谢谢,这就是想知道的事情”。...结语 当我在谈到代码调试技巧总感觉遗漏了一件重要的事情,那就是对人们在代码调试中哪里会遇到困难的一种更深入的理解。通常我们很容易说:“好吧,你需要重现这个问题。

93610

代码调试的最佳指南

接下来在这篇文章里,尝试整理大家针对的关于代码调试的推文发来的各种不同的观点和看法。...认为这里可能需要循环地重复以下步骤: 猜测可能发生的错误的某一个方面(比如说,“这个变量被设置为X,它应该是Y”,或“发送到服务器的请求是错误的”,或“这段代码根本没有运行过”等等)。...; 文档是正确的; 正在查看的代码在某个时刻被执行; 这两段代码是按顺序执行的,而不是并行执行的; 这段代码在调试模式和发布模式下编译(使用或不使用-O2开关,或…),会做同样的事情; 编译器没有错误...每当我的程序有问题并且报告这样的错误信息“Error:无法连接到某个IP的端口443:连接超时”都想说:“谢谢,这就是想知道的事情”。...结束语 当我在谈到代码调试技巧总感觉遗漏了一件重要的事情,那就是对人们在代码调试中哪里会遇到困难的一种更深入的理解。通常我们很容易说:“好吧,你需要重现这个问题。

1.1K40

架构设计考古:Bob大叔的整洁之道

每次我们尝试加一段新功能,或者修复一个问题的时候,都会引入新的问题。由于这段代码事关整个系统存在的核心意义,每个新的问题都让公司上下蒙羞。 最终,管理层要求我们将这段代码封闭起来,不允许再次修改了。...这段代码已经正式固化了。 这段经历让从此以后对代码的整洁性深感重视。 系统架构 这个系统是在1976年用M365汇编语言编写的。作为一个单体程序,它差不多有6万行代码。...然而,当我们实际拿到新的调制解调器,控制结构是和以前完全不同的。不仅仅是有所区别,而是完全、彻底不一样。 谢谢啊,硬件工程师! 我们怎么办?...最终这段代码还是正常工作了,但是这段程序真的是黑到不能再黑的黑科技。经历了这次事件之后,深深懂得了将硬件代码与业务逻辑代码隔离——使用抽象层的重要意义。...同时,“虎之队”在尝试用C语言和UNIX来重写这套系统,也意识到了这个重新设计需要同时处理欧洲和美国两地的情况,当然,这只会让其进度更缓慢。

1.2K20

惊艳!可视化的 js:动态图演示 Promises & AsyncAwait 的过程!

让我们尝试看看当我们调用 resolve 或 reject 方法得到的日志。 在的例子中,把 resolve 方法叫做 res,把 reject 方法叫做 rej。 太好了!...当我们调用 resolve 方法,promise 的状态是 fulfilled。 当我们调用 reject 方法,promise 的状态是 rejected。...否则,如果在加载文件某个地方有一个错误,我们将会用发生的错误拒绝 (reject)promise 。 让我们看下当我们在终端运行这段代码时会发生什么? 非常酷!...让我们一步一步地运行这段代码,看看会得到什么样的日志!...当我运行下面的代码让我们看下发生了什么: 额,这里发生了什么呢? 首先,JavaScript 引擎遇到了 console.log。它被弹入到调用栈中,这之后 Before function!

2K10

2024 年初的大语言模型编程实践

随着硬件能力的提升,能够训练更大的模型,利用数据的统计知识(即先验知识),通过不断的尝试错误,逐渐找到了一些比其他架构更有效的模型设计。但不管怎样,神经网络本质上还是相当复杂且不透明的。...程序第一次尝试运行成功了,下面是完整的展示。...[省略……实际回复更详尽] 在的 MacBook M1 Max 上运行的这个模型表现相当不错。它成功地将求和和异或操作混合使用了。...在这些情况下,我们还是回归传统方式:纸笔在手,细读代码,寻找解码器提取的比特在哪里注册。 为了让你更好地理解上述案例,如果你感兴趣,可以尝试一下。这里有一个来自 llama.cpp 实现的结构。...在撰写这篇博客尝试让它编写一个简化版本的函数来展示数据的存储方式(可能它难以用文字解释,但可以通过代码来表达)。

29210

那些程序员写过的超搞笑56个代码注释(值得收藏)!!

* total_hours_wasted_here = 73 * 亲爱的维护者 如果尝试这段程序进行'优化' 并且您已经意识到这是一个多么可怕的错误, 请增加以下计数器的个数用来对后来人进行警告...一旦你调试了,你绝对会后悔装聪明去尝试优化这段代码。 最好的方式是关闭文件, 去玩点儿你喜欢的东西吧!...如果这段代码停止工作还在使用, 杀了吧,哦~你不能这么做 死了...... 34. // If you are reading this, that means you have been put...如果你看到了这里,这意味着你已经被任命为之前的项目的负责人。 对不起,真抱歉。祝你好运。...这段代码以前是有效的,但是的猫决定在的键盘上跑一趟 37. long long ago; / in a galaxy far far away / 在很远很远的银河系外 (这段代码运行,绝对是个奇迹

1.3K40

令人笑喷的56个代码注释,最后几个老衲实在憋不住了。。。

* * total_hours_wasted_here = 73 * 亲爱的维护者 如果尝试这段程序进行'优化' 并且您已经意识到这是一个多么可怕的错误, 请增加以下计数器的个数用来对后来人进行警告...一旦你调试了,你绝对会后悔装聪明去尝试优化这段代码。 最好的方式是关闭文件, 去玩点儿你喜欢的东西吧!...如果这段代码停止工作还在使用, 杀了吧,哦~你不能这么做 死了...... 34. // If you are reading this, that means you have been put...这段代码以前是有效的,但是的猫决定在的键盘上跑一趟 37. long long ago; /* in a galaxy far far away */ 在很远很远的银河系外 (这段代码运行,绝对是个奇迹...这是垃圾代码,但现在是凌晨3点,需要让他能够正常运行

14920
领券