自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

lijunjun的专栏

坏猫的软件生涯

  • 博客(20)
  • 收藏
  • 关注

原创 在目录/usr/lib64下有存在libcurl.so.4.3.0,但编译却提示“can not find -lcurl“

如果直接指定,确保使用完整路径(如推荐使用或,因为它们更灵活且符合 CMake 的最佳实践。如果问题仍然存在,检查库文件权限或创建符号链接。通过这些方法,应该可以解决的问题。

2025-03-14 13:54:38 904

转载 C# 多线程访问之 SemaphoreSlim(信号量)【进阶篇】

SemaphoreSlim 是对可同时访问某一共享资源或资源池的线程数加以限制的 Semaphore的轻量替代,也可在等待时间预计很短的情况下用于在单个进程内等待。由于 SemaphoreSlim 更加轻量、快速,因此推荐使用,本文也着重介绍。回到顶部相较于线程锁的使一块代码只能一个线程访问,SemaphoreSlim 则是让同一块代码让多个线程同时访问,并且总数量可控。SemaphoreSlim 尽可能多地依赖公共语言运行时 (CLR) 提供的同步基元。还提供延迟初始化、基于内核的等待句柄。

2025-01-21 22:20:11 380

转载 如何编写 C++ 20 协程(Coroutines)

花了一两周的时间了解后,我决定记录下 C++20 协程的基本用法,因为 C++ 的协程让我感到很奇怪,写一个协程程序十分费劲。我本人也不是编程语言专家, C++ 协程总让我觉得有些繁琐、怪异,或许是我并不清楚 C++ 在原有情况下支持协程的困难,但我依然觉得 C++ 团队可以做得更好。不过,可以预见到的是,我们会在越来越多的 C++ 项目中看到协程的身影。真的挂起了协程,那么作为协程的调用者,你需要手动的调用 destroy 来释放协程;有时候我们的协程并不需要自定义复杂的行为,C++ 提供了两个默认的。

2025-01-13 01:13:00 213

原创 无法加载文件或程序集 Microsoft.Bcl.AsyncInterfaces 的解决方案

无法加载文件或程序集“Microsoft.Bcl.AsyncInterfaces、Version=6.0.0.0、Culture=neutral、PublicKeyToken=XX”或其依赖项之一

2025-01-10 16:26:56 639

转载 AI 驱动的 Web 抓取工具前景

每天都会宣布新的 AI 抓取工具。在我在网络抓取行业的整个职业生涯中,我从未见过这样的时刻。人们对自动化任务(如)非常感兴趣,并且该。在这场竞赛中,参赛者是开源项目、无代码工具,当然还有在其产品后端使用 AI 的行业中的成熟公司。为了提供更广阔的视野(这肯定不是详尽无遗的),我决定使用两个驱动程序对所有这些工具进行分类:使用公开可用的 AI 模型(通常是 GPT 等 LLM),或者使用内部开发的 AI 模型神奇的地方发生:我是否需要在我的计算机上运行模型,还是在云端进行细化?

2024-12-04 03:52:15 69

转载 如何在 Playwright 中移动鼠标以模拟人类行为

当我们处理网站的网络抓取项目时,我们可能会遇到安装了反机器人保护软件的情况。根据网站运营的行业,这可能是常见情况,也可能不是:根据我在 200+ 时尚电子商务网站的经验,我在其中抓取价格和产品等公共组件,我可以说其中大约 20% 具有某种机器人保护。如果您的目标是有预算在这些解决方案上花费的大玩家,而鲜为人知的网站通常更愿意关注购买过程的安全性,则尤其如此。如果没有反机器人保护,可能 Scrapy spider 可以完成这项工作,您不必关心鼠标移动,因为服务器端没有人关心它。

2024-12-04 03:46:52 273

转载 使用混合方法抓取受 AWS WAF 保护的网站

用于 AWS WAF 的这种技术很有趣,可用于类似的使用案例,例如受 Akamai 保护的网站,在通过初始质询后,我们会得到一个 Cookie,该 Cookie 为我们在整个网站上开了一段时间的绿灯。在存储库的 Scrapy 文件夹中,您可以找到完整的抓取工具,我们基本上在其中为我们的请求使用一组合法的标头,加载主页,然后转到特定旅行路线的报价列表。事实上,一旦我们获得 aws-waf-token,至少对于 Traveloka,这将在四天内有效,因此我们可能只使用一个令牌来满足我们的所有抓取需求。

2024-12-04 03:40:19 331

转载 C# async await 死锁问题总结

C# Under the Hood: async/await 作者从动手写一个“可等待”的方法开始,进而通过反编译工具分析异步方法生成的的实质代码,揭示了async/await的本质——回调。如果await之后的代码不需要返回原先的context执行,例如,仅仅是执行Http请求,获取和处理数据,那么完全可以加上ConfigureAwait(false)。如果作为类库的创作者,编写异步方法时,应尽可能的使用ConfigureAwait(false),以保证一旦类库的使用者阻塞异步方法时,不会产生死锁。

2024-11-29 23:10:11 151

转载 IIS优化教程:改善访问慢,提高运行效率

2、在“运行”对话框中,键入 notepad %systemroot%\Microsoft.Net\Framework64\v4.0.30319\CONFIG\machine.config,然后单击“确定”。在cmd命令中运行命令:reg add HKLM\System\CurrentControlSet\Services\HTTP\Parameters /v MaxConnections /t REG_DWORD /d 100000,当然也可以手动去注册表修改。步骤一:调整IIS的应用程序池队列长度。

2024-11-29 03:14:21 917

转载 应用程序池--IIS最大工作进程数

如果这个值大于 1,那么当有连接请求时会启动多个新的工作进程实例,可启动的最多进程数为您所指定的最大工作进程数,后续更多的请求将以循环的方式发送至工作进程,这个每个工作进程都能承担负载一些连接请求,当然是以消耗cpu等硬件做代价,这是值得的,如果web服务器cpu使用率很低但是又需要更高效的处理并发连接请求,为何不这么做呢?在将 IIS 6 应用程序配置为 Web 园时,您只需在“应用程序池属性”的“性能”选项卡的“最大工作进程数”框中,设置一个大于 1 的工作进程数。IIS 何时创建额外的工作进程?

2024-11-28 17:45:02 382

原创 一个由c# httpclient组件的postAsync方法引起的BUG

在把微软全家都骂了一顿之后,发现只有这一个WEB请求失败了,其他都是好的,非常不自信的觉得可能是post的数据过大了,因为有8k(其实8K也没问题啊,自古以来post 8k数据都没问题啊,况且在别的电脑上post 8k都是好的),于是死马当活马医,把数据由8k逐步到了1k,我拷,数据提交成功了。今天先记下来,明天再来查明为啥只能了post 1k数据的原因,这真的是震碎了我的三观。3,然后又按网上的方法,把httpclient的实例改成单例,还是不行。

2024-11-24 03:23:25 449

原创 如何获取sitekey

部件的主要参数,每个站点都有单独的。不需要填写sitekey。

2024-11-09 21:49:51 330

转载 [C++/CLI编程宝典][5]编译与反汇编

这样,对 JIT 编译的方法的后续调用将直接转到该本机代码。在上面我们看到main.cpp被编译连接后生成main.exe,我们知道exe是windows的可执行文件,但是上面的exe与我们传统的exe有所不同,这里的main.exe为IL中间语言的(IL中间语言我们可以先认为是一种高级的汇编语),它离真正的汇编语言还有一节距离,那么为什么IL中间语言的exe能够执行呢,这就要归功于.NET的虚拟机机制,当IL中间语言的exe运行的时候其实是要依赖于CLR先编译为真正的汇编代码的,然后再运行。

2024-11-02 20:12:36 93

原创 c#程序的加密和破解方法

然而,你千万不要以为生成了新文件就是加密成功了,一定要再找破解的软件破一下看看,到底成功没有。首先是加密,我用了ConfuserEx,还比较方便。以下是破解的方法,首选DnSpy。

2024-10-22 00:37:53 268

原创 控制台程序隐藏窗口的方法

1,2,或。

2024-10-08 10:02:29 203

原创 “std::transform”: 未找到匹配的重载函数

以前一直这么写的一段代码,从来没出问题,然后突有一天报错了。“std::transform”: 未找到匹配的重载函数。改成如下,一切正常。

2024-08-23 16:52:10 217

原创 ‌std::remove与std::erase结合使用可以高效地删除容器中的元素。‌

在C++中,当需要从容器中删除满足特定条件的元素时,通常的做法是使用std::remove或std::remove_if算法将不需要的元素移动到容器的末尾,然后使用std::erase函数删除这些元素。具体来说,当使用std::remove或std::remove_if后,容器的迭代器会指向第一个不需要的元素的位置。此时,通过调用std::erase函数,并将参数设置为std::remove或std::remove_if返回的迭代器和容器的end()迭代器,可以一次性删除所有不需要的元素。

2024-08-19 10:44:52 527

转载 Ordered map vs. Unordered map – A Performance Study

There comes a time in most complex programs where you want to ask a simple question like, ‘have I already processed a string with this id’? Linear searches through an array are easy to write and work well enough for small array sizes. Plus, the memory over

2024-06-25 19:48:20 96 1

原创 git 常用命令及时序图

明白 git stash pop 的作用后,那 git stash apply 命令也很好理解了,它们唯一的不同就是 git stash apply 命令不会删除 stash@(0) 这条记录。linux 上记住用户名和密码。git 查看当前项目地址。git 如何新建分支。对某些或某些文件瘦身。瘦身不成功的解决方案。

2023-12-14 01:19:55 154 1

原创 .Art域名注册局的行为其实早就引起了众多域名界大佬的强烈不满

2019-05-18 15:11:33 1333

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除