借助 IDE(比如大名鼎鼎的 PyCharm 、VSCode) 本身的调试和跳转功能,你可以轻松定位到问题代码,但在服务器环境下,根本没有 IDE,这种情况下又该如何 Debug?...本文分享 4 个没有 IDE 情况下的 Debug 技巧。...2、assert print 有个缺点,你用完还要手动删除,如果你懒得删除,就使用 asser 来断言好了,当你觉得某个变量必须是某值时,就可以加上 assert,如果不是,这里就会抛出异常,这样就定位到了问题...接下来,我们就一起来看看,pdb 在 Python 中到底应该如何使用。...IDE,是否要点击 800 次呢,我不是很清楚,没试过,如果使用 IDE 来断点定位至循环内的 800 次,我会直接放弃,选用其他方式。
接下来我们来演示一下如何创建一个web项目。...如果安装了针对ASP.NET的Generator,我们就能够利用它来生成各种类型的 ASP.NET Core应用(至于这个针对ASP.NET的Generator,我们可以通过执行“npm install
本文属于基础入门博客,将和大家介绍如何在 dotnet C# 代码里面使用底层的 Socket 进行 HTTP 网络请求 本文将使用向百度发送 HTTP 和 HTTPS 请求作为示例,来和大家样式如何使用底层的...Content-Length 字段的值,也没有处理一次性读取没有读取完的问题。...如果大家想要制作一个合理的 HTTP 请求客户端,则需要自行处理这些问题。...本文只是一个简单的示例,演示如何使用底层的 Socket 进行 HTTP 请求,没有处理这些细节 以上代码就完成了 HTTP 的请求了。那么如何进行 HTTPS 的请求呢?...以上就是本文的全部演示内容了,网络通讯是一个知识量比较庞大的领域,本文只是一个简单的示例,演示如何使用底层的 Socket 进行 HTTP 和 HTTPS 网络请求。
安利一波我的系列直播 PHP 进阶之路 需求 如果需要将可能含有中文的字符串进行拆分成数组,我们下面以 utf-8 编码为例。...而php里使用 ord来获取ascii码值。...https://segmentfault.com/a/1190000012692022 口语化叙述 utf-8 的来历 Unicode Unicode 只是一个符号集,它只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储...UTF-8 UTF-8 就是在互联网上使用最广的一种 Unicode 的实现方式。UTF-8 最大的一个特点,就是它是一种变长的编码方式。...剩下的没有提及的二进制位,全部为这个符号的 Unicode 码。
原因 如果当前分支所做的修改没有提交就切换去其他分支的话,那么也会看到相同的修改 解决方法 解决方法有两种: 方法一: 用 git add 和 git commit 提交修改,只要用 git status...(所谓的干净就是指不显示有修改的痕迹,即git status显示没有内容被修改) 方法二: 如果我当前分支上的工作还没做完,不能提交,但又想去其他分支,这时候可以把当前分支的工作现场隐藏起来。...总结 1.在没有commit 时(无论有无add),进行切换分支操作后,原分支修改的内容在新分支上也有。 有时候也无法切换分支,原因如切换时会提示会覆盖另一个分支文件的内容。...未经允许不得转载:肥猫博客 » git切换分支(如果当前分支所做的修改没有提交此时如何切换去其他分支)
,那么恭喜你,说明你对 Consumer 的使用已经全部掌握了。...说一下我所理解的副作用,副作用其实就是一个函数是否会修改它范围之外的资源,如果有就叫有副作用,反之为没有副作用。比如修改全局变量,修改输入参数所引用的对象等。...* 如果执行任一操作会抛出异常,它将被转发到组合操作的调用者。 * 如果执行此操作会引发异常,则不会执行after操作。...Supplier 我们一般称之为“生产者”,没有参数输入,但是能返回结果,为结果的提供者。...当时只是脑子里学会了,没有应用到具体的项目中,下次再遇到的时候还是一脸懵逼,不知道大家有没有这种感受。
include "sub.h" #include void sub(int a,int b) { std::cout<<(a-b)<<std::endl; } 由于在工程中,没有...---- 3.两种文件的使用 在使用时,静态链接库只要把.h和.lib文件加入到工程文件夹中即可。而动态链接库要把.h、.lib和.dll文件加入到工程中。...; #pragma comment(lib,"sub.lib") //加入链接库 int main() { sub(5,4); return 0; } 4.仅有.dll文件时候的使用方法... 在没有.h和.lib文件时,需要函数指针和WIN32 API函数LoadLibrary、GetProcAddress装载,只需要.dll文件即可(将.dll文件置入工程目录中)。...#include #include //使用函数和某些特殊变量 typedef void (*DLLFunc)(int,int)
如果握手失败的话,那么就是不支持了。...= New-Object Net.Security.SslStream $TcpClient.GetStream(), $true, (...[System.Net.Security.RemoteCertificateValidationCallback]{ $true }) $SslStream.ReadTimeout...= 15000 $SslStream.WriteTimeout = 15000 try { $SslStream.AuthenticateAsClient...() } $RetValue } } References# 检查网站的TLS版本 注:本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议
前言 如今,很多恶意软件和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设置是否正确。 ?
本文将以最简洁的步骤,演示如何在Docker容器中部署Jellyfin,并通过贝锐花生壳实现外网安全访问。一、环境准备确保主机已安装Docker与Docker Compose。...sudo chmod +x /usr/local/bin/docker-compose二、获取Jellyfin镜像源首先使用docker拉取官方最新镜像: sudo docker pull jellyfin.../jellyfin如果镜像拉取缓慢,可在 /etc/docker/daemon.json中加入常用国内镜像源,例如:{ "registry-mirrors": [ "https://
当然,如果你 cUrl 玩的比较熟悉的话,也可以在终端/CMD中 粘贴使用哦!...如果发现本文资料不全,可访问本人的Java博客搜索:标题关键字。以获取全部资料 ❤
提前说明有些操作系统的相关概念自行百度,但是个人认为,很多面试官可能对于操作系统也懂的不多,当然不排除一些真正的大佬,往往面试的面试官也就那样,废话不多说,开始...
code files and .h for interface files if your project doesn't already follow another convention SF.1:如果你的项目没有正在遵从的其他习惯...但是连贯性更加重要,因此如果你的项目已有其他传统,遵守它。...这个习惯反映一个常见的使用模式:头文件更多地和C代码一起被分享并且和C++或C代码一起编译,它们通常使用.h后缀。...使用.h为所有的头文件命名比较容易,而不是只为试图和C代码一起分享的头文件使用.h后缀。...你的IDE(如果你在使用的话)有可能存在有关后缀的强烈选项。
如果你这样做了,那么一个失败的结果是:行为未定义。 我们来看一个使用block-oriented tcp协议的服务器和客户端的代码。...请使用uic工具转换。...它使用tcpSocket.connectToHost建立到 服务器的连接。connectToServer()槽立即返回。连接的动作实际发生在这之后。...forever循环是如何工作的呢?如果nextBlockSize是0,表示我们没有独到数据块的大小,我们必须重新读取它。...0xFFFF) statusLabel->setText(tr("Error: Connection closed by server")); closeConnection(); } 当服务器断开连接时,如果我们没有读到表示数据传送完毕的
本章LyShark将带大家学习如何在内核中使用标准的Socket套接字通信接口,我们都知道Windows应用层下可直接调用WinSocket来实现网络通信,但在内核模式下应用层API接口无法使用,内核模式下有一套专有的...当然在早期如果需要实现网络通信一般都会采用TDI框架,但在新版本Windows10系统上虽然依然可以使用TDI接口,但是LyShark并不推荐使用,因为微软已经对接口搁置了,为了使WSK通信更加易用,我们需要封装内核层中的通信...我们需要使用WDM驱动程序,并配置以下参数。...输入-> 附加依赖 -> $(DDK_LIB_PATH)\Netio.lib配置属性 -> C/C++ -> 常规 -> 设置 警告等级2级 (警告视为错误关闭)配置好以后,我们就开始吧,先来看看服务端如何实现..., (PSOCKADDR)&RemoteAddress);// 连接服务端,如果失败则关闭驱动if (!
零拷贝常用技术 上一次我们说了传统的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使用的是
Fdog系列(三):使用腾讯云短信接口发送短信,数据库写入,部署到服务器,web收尾篇。 Fdog系列(四):使用Qt框架模仿QQ实现登录界面,界面篇。...关于客户端与服务端之间的通信,这个在csdn倒是有很多资料的,基本内容都一样,如果不了解客户端到服务端之间的通信,可以先去复习一下。 ---- 二. 正文 1....一个QQ又有N个好友,一个客户端收到的消息又要考虑如何到达正确的好友聊天窗口。...---- 在一个简单的客户端与服务端通信例子中,服务端无需识别用户,因为用户唯一,那么多个客户端登录如何识别?...可以使用ip吗,不行,想一想,当两个客户端在同一台电脑登录时,ip将是相同,如何做到唯一值? 使用 账号+IP+端口 确定唯一值,来说一说为什么需要三个组合值才能确定客户端。
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
Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍如何运用QTcpSocket...如果设置为0,系统将选择一个可用的未使用端口。函数返回一个bool值,表示是否成功开始监听。如果成功返回true,否则返回false,并且可以通过调用errorString()获取错误消息。...如果在超时时间内有新连接到达,返回true,否则返回false。如果等待超时,可以通过检查timedOut参数来确定。如果函数返回false,可以通过调用errorString()获取错误消息。...如果没有已接受的连接,则返回 nullptr。使用这个函数,你可以在服务器接受连接之后获取相应的套接字,以便进行数据传输和通信。...函数返回实际写入的字节数,如果发生错误,则返回 -1。在写入数据之后,可以使用 bytesWritten 信号来获取写入的字节数。
(接收和发送数据) 通信结束,关闭套接字(监听 + 通信) 客户端 创建用于通信的套接字 使用服务器端绑定的 IP 和端口连接服务器 使用通信的套接字和服务器通信(发送和接收数据) 通信结束,关闭套接字...简单地说就是封装之后的类可以隐藏掉某些属性使操作更简单并且类的功能要单一,如果要代码重用可以进行类之间的继承,如果要让函数的使用更加灵活可以使用多态。...既然如此,我们如何解决服务器和客户端的代码冗余和服务器不能跟多客户端通信的问题呢? 答:瘦身、减负。可以将服务器的通信功能去掉,只留下监听并建立新连接一个功能。...2.2 版本 2 根据对第一个版本的分析,可以对以上代码做如下修改: 2.2.1 通信类 套接字通信类既可以在客户端使用,也可以在服务器端使用,职责是接收和发送数据包。...2.2.2 服务器类 服务器类主要用于套接字通信的服务器端,并且没有通信能力,当服务器和客户端的新连接建立之后,需要通过 TcpSocket 类的带参构造将通信的描述符包装成一个通信对象,这样就可以使用这个对象和客户端通信了