- 博客(17)
- 资源 (3)
- 收藏
- 关注
原创 某直聘职位数据抓取
显然,每一条数据的结构都是由代码动态拼接完成的,那么我们接下来只需要找到生成的地方就好,首先我们要从搜索按钮下手。之前csdn上面有一些对某直聘网站数据的爬取分析文章,但是随着防爬手段的升级,已经失效。接下来和Selenium WebDriver结合,就可以将数据爬取入库了。在此声明,此文章纯属技术交流,请勿用于商业运作、非法目的,否则后果自负。以下再调试一番,就可以找到最终发出搜索请求的代码处了。再次声明,只为技术交流,否则后果自负。,便可以看到我们搜索的职位信息了。
2023-06-19 01:43:24
186
原创 C#消息泵探索(二)
消息泵,又叫消息循环。消息循环使用一个图形化用户界面下的Microsoft Windows。具有GUI 的Windows 程序是事件驱动的。Windows为每个创建窗口的线程维护一个单独的消息队列。通常只有第一个线程创建窗口。Windows 放置消息每当鼠标活动发生在该线程的窗口上时,每当该窗口具有焦点时键盘活动发生时,以及其他时候,都将进入该队列。进程还可以将消息添加到自己的队列中。为了接受用户输入以及出于其他原因,具有窗口的每个线程必须不断地从其队列中检索消息,并对其采取行动。
2023-02-25 10:13:56
409
原创 winform高dpi问题探索
winform的高dpi适应问题由来已久,属于一个历史遗留问题。主要是由于winform对不同尺寸、不同分辨率的屏幕适配不足造成的。接下来我们简单说一下如何解决,最后我们探索一下解决此问题的原理。解决办法winform的高dpi问题虽然一直没能解决,不过官方还是打了一个补丁的。我们只需要调用一下官方提供的DpiHelper.LogicalToDeviceUnits方法,即可解决。那么问题来了,官方是如何解决这个问题的呢?探索public double LogicalToDevice
2022-01-05 10:36:53
1492
原创 C# GC探索
垃圾收集当您在 C# 中创建任何对象时,CLR(公共语言运行时)会从堆中为该对象分配内存。每个新创建的对象都会重复这个过程,但凡事都有限制,内存不是无限的,我们需要清理一些使用过的空间,以便为新对象腾出空间,这里介绍垃圾回收的概念, 垃圾收集器管理内存的分配和回收。GC(垃圾收集器)在堆上进行一次旅行,收集应用程序不再使用的所有对象,然后将它们从内存中释放出来。当任何进程被触发时,单独的虚拟空间被分配给该进程,从一个系统的每个进程使用的相同的物理内存中,任何程序处理虚拟空间而不是物理内存,GC也处理
2021-12-23 10:51:37
192
原创 由Restart()想到的
官方文档:Application.Restart Method (System.Windows.Forms) | Microsoft Docs目录Restart探索至此我们得出结论:在.net core3.0中,对于StartInfo属性,无论如何调用,抛出异常是100%的。启示Restart当我们在.net Framework中使用它时,并没有什么特殊之处,是可以正常运行的,然而如果在.net core3.0时,则会抛出InvalidOperation异常。Ap...
2021-11-12 10:09:13
771
原创 Winfrom ComboBox中的性能探索
在为Control维护元素列表的过程中,会不可避免的造成性能损耗,我们接下来要探究的就是那种方式才是我们的最优解。方案比较以ComboBox为例,常见的方式一共有两种:Add、AddRange。AddList<int> vs = new List<int>(); for (int i = 0; i < 100; i++) { vs.Add(i); }
2021-10-21 16:24:51
217
原创 C#消息泵探索(一)
消息泵,又叫消息循环。消息循环使用一个图形化用户界面下的Microsoft Windows。具有GUI 的Windows 程序是事件驱动的。Windows为每个创建窗口的线程维护一个单独的消息队列。通常只有第一个线程创建窗口。Windows 放置消息每当鼠标活动发生在该线程的窗口上时,每当该窗口具有焦点时键盘活动发生时,以及其他时候,都将进入该队列。进程还可以将消息添加到自己的队列中。为了接受用户输入以及出于其他原因,具有窗口的每个线程必须不断地从其队列中检索消息,并对其采取行动。通过编写一个循环调用
2021-10-19 09:58:42
1133
2
原创 C# 数据结构之嵌套加法、嵌套乘法
复杂性度量问题1.大O复杂度:嵌套加法找出以下代码片段的 Big O 复杂度。using System; namespace Chapter_1{ class Challenge_1 { static void Main(string[] args) { int n = 10; int sum = 0; float pie = 3.14F; for
2021-10-18 16:12:39
405
原创 浅析Winform的可视样式
每一个C#的Winfrom项目的Main方法里,都有这么一行代码,那么它究竟是用来做什么的呢?Application.EnableVisualStyles();从注释来看,这是一行用作设置样式的代码,那么它究竟设置了哪些样式呢?源码浅析public static void EnableVisualStyles() { string assemblyLoc = null; // SECREVIEW : This Assert is .
2021-08-03 10:19:23
487
原创 C#多路广播委托的一点浅见
C#多路广播委托的一点浅见以上是C#官方对委托的定义与介绍,常规的委托定义比如delegate void test(string str);但是这种委托通常是和一个事件绑定,我们需要编写观察者模式的项目时候通常会出现的现象是委托、事件与要调用方法进行一对多的绑定,这时候就需要用到多路广播委托,也就是多播委托。C#对于多播委托的支持的有两种,通过Delegate.Combine和MulticastDelegate.Combine和两种方式进行创建。以下我们主要介绍后者。微软对于MulticastD
2021-07-30 08:11:31
415
原创 C#中延迟初始化实现原理的一点浅见。
C#中延迟初始化实现原理的一点浅见。定义延迟初始化:一个对象的延迟初始化意味着它的创建被推迟到它第一次使用。(对于本主题,延迟初始化和延迟实例化是同义词。)延迟初始化主要用于提高性能、避免浪费计算和减少程序内存需求。用法及简单介绍关于解决方法,微软给出了三种解决方案,这里主要聊Lazy。用法没什么好聊的,一句代码搞定。主要属性有两个,第一个是Value, 用于获取初始化的model值。另一个则是IsValueCreated,用于判断model是否被初始化。除了以上两个属性外,还有Laz
2021-07-30 08:09:18
241
原创 The host 127.0.0.1 does not support SSL connections.解决
连接字符串添加SslMode = none;
2018-11-23 14:17:59
2280
转载 Springboot官方文档之安装Springboot
https://stackoverflow.com/questions/31835033/web-xml-is-missing-and-failonmissingwebxml-is-set-to-true
2018-11-15 18:55:06
162
翻译 (一)SpringBoot官方文档之系统要求
SpringBoot官方文档之系统要求系统要求Spring Boot 2.0.0.RELEASE需要Java 8或9以及 Spring Framework 5.0.4.RELEASE或更高版本。为Maven 3.2+和Gradle 4提供了明确的构建支持。Servlet容器Spring Boot支持以下嵌入式servlet容器:名称 Servlet版本Tomcat 8.5 3.1Je...
2018-11-15 18:32:19
230
翻译 maven org.apache.maven.archiver.MavenArchiver.getManifest解决方法
org.apache.maven.archiver.MavenArchiver.getManifest解决方法简单的解决方案:降级到2.6版本更好的解决方案:更新Eclipse m2e扩展简单的解决方案:降级到2.6版本确实可能的解决方案是返回版本2.6,项目的进一步更新将删除任何错误。但是,这不是理想的情况,可以使用更好的解决方案:更新m2e扩展(Eclipse Maven集成)。更好的解...
2018-11-15 18:06:44
2390
《Async in C# 5.0》电子书
2023-02-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人