首页
学习
活动
专区
圈层
工具
发布

如果没有 IDE,该如何 Debug?

借助 IDE(比如大名鼎鼎的 PyCharm 、VSCode) 本身的调试和跳转功能,你可以轻松定位到问题代码,但在服务器环境下,根本没有 IDE,这种情况下又该如何 Debug?...本文分享 4 个没有 IDE 情况下的 Debug 技巧。...2、assert print 有个缺点,你用完还要手动删除,如果你懒得删除,就使用 asser 来断言好了,当你觉得某个变量必须是某值时,就可以加上 assert,如果不是,这里就会抛出异常,这样就定位到了问题...接下来,我们就一起来看看,pdb 在 Python 中到底应该如何使用。...IDE,是否要点击 800 次呢,我不是很清楚,没试过,如果使用 IDE 来断点定位至循环内的 800 次,我会直接放弃,选用其他方式。

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

    dotnet C# 入门示例 用底层的 Socket 进行 HTTP 网络请求

    本文属于基础入门博客,将和大家介绍如何在 dotnet C# 代码里面使用底层的 Socket 进行 HTTP 网络请求 本文将使用向百度发送 HTTP 和 HTTPS 请求作为示例,来和大家样式如何使用底层的...Content-Length 字段的值,也没有处理一次性读取没有读取完的问题。...如果大家想要制作一个合理的 HTTP 请求客户端,则需要自行处理这些问题。...本文只是一个简单的示例,演示如何使用底层的 Socket 进行 HTTP 请求,没有处理这些细节 以上代码就完成了 HTTP 的请求了。那么如何进行 HTTPS 的请求呢?...以上就是本文的全部演示内容了,网络通讯是一个知识量比较庞大的领域,本文只是一个简单的示例,演示如何使用底层的 Socket 进行 HTTP 和 HTTPS 网络请求。

    26010

    git切换分支(如果当前分支所做的修改没有提交此时如何切换去其他分支)

    原因 如果当前分支所做的修改没有提交就切换去其他分支的话,那么也会看到相同的修改 解决方法 解决方法有两种: 方法一: 用 git add 和 git commit 提交修改,只要用 git status...(所谓的干净就是指不显示有修改的痕迹,即git status显示没有内容被修改) 方法二: 如果我当前分支上的工作还没做完,不能提交,但又想去其他分支,这时候可以把当前分支的工作现场隐藏起来。...总结 1.在没有commit 时(无论有无add),进行切换分支操作后,原分支修改的内容在新分支上也有。 有时候也无法切换分支,原因如切换时会提示会覆盖另一个分支文件的内容。...未经允许不得转载:肥猫博客 » git切换分支(如果当前分支所做的修改没有提交此时如何切换去其他分支)

    4.7K30

    如果还不懂如何使用 Consumer 接口,来青岛我当面给你讲!

    ,那么恭喜你,说明你对 Consumer 的使用已经全部掌握了。...说一下我所理解的副作用,副作用其实就是一个函数是否会修改它范围之外的资源,如果有就叫有副作用,反之为没有副作用。比如修改全局变量,修改输入参数所引用的对象等。...* 如果执行任一操作会抛出异常,它将被转发到组合操作的调用者。 * 如果执行此操作会引发异常,则不会执行after操作。...Supplier 我们一般称之为“生产者”,没有参数输入,但是能返回结果,为结果的提供者。...当时只是脑子里学会了,没有应用到具体的项目中,下次再遇到的时候还是一脸懵逼,不知道大家有没有这种感受。

    45750

    如果有人使用VENOM工具绕过反病毒检测,该如何防护?

    前言 如今,很多恶意软件和Payload都会使用各种加密技术和封装技术来绕过反病毒软件的检测,原因就是AV产品很难去检测到经过加密或加壳的恶意软件(Payload)。...今天,我们要学习是如何使用VENOM来生成经过加密的Payload,权当为加固安全保护措施抛砖引玉,未来或许会再出一篇文章来讲一讲如何堵住这个方法。 ?...第五步: VENOM自带了很多默认的msf Payload,我们这里选择使用“windows/meterpreter/reverse_tcp”。 ?...接下来,我们看看如何使用Metasploit和我们生成的Payload来绕过反病毒产品。 第九步: 我们需要开启Apache服务器来将恶意Payload发送到目标主机中,选择好服务器后点击OK继续。...我这里使用的URL为http://192.168.56.103。 注意:在开始之前,请检查LPORT和LHOST设置是否正确。 ?

    1.1K20

    驱动开发:内核封装WSK网络通信接口

    本章LyShark将带大家学习如何在内核中使用标准的Socket套接字通信接口,我们都知道Windows应用层下可直接调用WinSocket来实现网络通信,但在内核模式下应用层API接口无法使用,内核模式下有一套专有的...当然在早期如果需要实现网络通信一般都会采用TDI框架,但在新版本Windows10系统上虽然依然可以使用TDI接口,但是LyShark并不推荐使用,因为微软已经对接口搁置了,为了使WSK通信更加易用,我们需要封装内核层中的通信...我们需要使用WDM驱动程序,并配置以下参数。...输入-> 附加依赖 -> $(DDK_LIB_PATH)\Netio.lib配置属性 -> C/C++ -> 常规 -> 设置 警告等级2级 (警告视为错误关闭)配置好以后,我们就开始吧,先来看看服务端如何实现..., (PSOCKADDR)&RemoteAddress);// 连接服务端,如果失败则关闭驱动if (!

    75930

    如果不使用零拷贝技术,普通的IO操作在OS层面是如何执行的(二)

    零拷贝常用技术 上一次我们说了传统的IO操作是如何是实现的,最后引出了零拷贝技术,这次我们看看有那些零开拷贝技术....(如果不使用零拷贝技术,普通的IO操作在OS层面是如何执行的) mmap+write sendfile+DMA gather copy splice mmap+write零拷贝技术 mmap+write...因此使用mmap技术是为了把内核缓冲区的地址和用户缓冲区进行映射,从而使内核缓冲区地址和应用程序内存的地址进行共享,从而减少内核缓冲区到用户缓冲区的拷贝,如下图 上图表示,整个过程会有四次切换,和两次...减少两者之间的CPU拷贝 上图表示,整体上经历了两次切换,和两次DMA拷贝,0次cpu拷贝 我们常用的组件kafka就是用的sendfile+DMA gather copy技术,而我们的RocketMq使用的是

    40040

    Fdog系列(六):利用Qt通过服务端进行客户端与客户端通信(资料少,建议收藏)

    Fdog系列(三):使用腾讯云短信接口发送短信,数据库写入,部署到服务器,web收尾篇。 Fdog系列(四):使用Qt框架模仿QQ实现登录界面,界面篇。...关于客户端与服务端之间的通信,这个在csdn倒是有很多资料的,基本内容都一样,如果不了解客户端到服务端之间的通信,可以先去复习一下。 ---- 二. 正文 1....一个QQ又有N个好友,一个客户端收到的消息又要考虑如何到达正确的好友聊天窗口。...---- 在一个简单的客户端与服务端通信例子中,服务端无需识别用户,因为用户唯一,那么多个客户端登录如何识别?...可以使用ip吗,不行,想一想,当两个客户端在同一台电脑登录时,ip将是相同,如何做到唯一值? 使用 账号+IP+端口 确定唯一值,来说一说为什么需要三个组合值才能确定客户端。

    2.1K32

    【在Linux世界中追寻伟大的One Piece】多路转接epoll(续)

    1.2 -> 边缘触发(Edge Triggered)工作模式 如果我们在第一步将socket添加到epoll描述符的时候使用了EPOLLET标志,epoll进入ET工作模式。...所以,为了解决上述问题(阻塞read不一定能一下把完整的请求读完),于是就可以使用非阻塞轮训的方式来读缓冲区,保证一定能把完整的请求都读出来。 而如果是LT没这个问题。...4 -> epoll的使用场景 epoll的高性能,是有一定的特定场景的。如果场景选择的不适宜,epoll的性能可能适得其反。...如果只是系统内部,服务器和服务器之间进行通信,只有少数的几个连接,这种情况下用epoll就并不适合。具体要根据需求和场景特点来决定使用哪种IO模型。...// 这种写法其实不算特别严谨(没有考虑粘包问题) buf->clear(); char tmp[1024 * 10] = { 0 }; for (;;) { ssize_t read_size

    15610

    C++ Qt开发:QTcpSocket网络通信组件

    Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍如何运用QTcpSocket...如果设置为0,系统将选择一个可用的未使用端口。函数返回一个bool值,表示是否成功开始监听。如果成功返回true,否则返回false,并且可以通过调用errorString()获取错误消息。...如果在超时时间内有新连接到达,返回true,否则返回false。如果等待超时,可以通过检查timedOut参数来确定。如果函数返回false,可以通过调用errorString()获取错误消息。...如果没有已接受的连接,则返回 nullptr。使用这个函数,你可以在服务器接受连接之后获取相应的套接字,以便进行数据传输和通信。...函数返回实际写入的字节数,如果发生错误,则返回 -1。在写入数据之后,可以使用 bytesWritten 信号来获取写入的字节数。

    1.2K12

    CC++ 套接字通信类的封装

    (接收和发送数据) 通信结束,关闭套接字(监听 + 通信) 客户端 创建用于通信的套接字 使用服务器端绑定的 IP 和端口连接服务器 使用通信的套接字和服务器通信(发送和接收数据) 通信结束,关闭套接字...简单地说就是封装之后的类可以隐藏掉某些属性使操作更简单并且类的功能要单一,如果要代码重用可以进行类之间的继承,如果要让函数的使用更加灵活可以使用多态。...既然如此,我们如何解决服务器和客户端的代码冗余和服务器不能跟多客户端通信的问题呢? 答:瘦身、减负。可以将服务器的通信功能去掉,只留下监听并建立新连接一个功能。...2.2 版本 2 根据对第一个版本的分析,可以对以上代码做如下修改: 2.2.1 通信类 套接字通信类既可以在客户端使用,也可以在服务器端使用,职责是接收和发送数据包。...2.2.2 服务器类 服务器类主要用于套接字通信的服务器端,并且没有通信能力,当服务器和客户端的新连接建立之后,需要通过 TcpSocket 类的带参构造将通信的描述符包装成一个通信对象,这样就可以使用这个对象和客户端通信了

    2.3K31
    领券