支持单字通配符的Sunday模糊匹配算法
前言
忙碌的春节过去了(吐槽一下,现在南京不给放炮仗,真是越来越没有年味了,不但是礼炮,连擦炮、摔炮都买不到),终于能闲下来学习和写博文了。今天填一下上篇文章留下的坑。实现一个支持单字通配符的Sunday模糊匹配算法
忙碌的春节过去了(吐槽一下,现在南京不给放炮仗,真是越来越没有年味了,不但是礼炮,连擦炮、摔炮都买不到),终于能闲下来学习和写博文了。今天填一下上篇文章留下的坑。实现一个支持单字通配符的Sunday模糊匹配算法
给定一个 haystack
字符串和一个 needle
字符串,在 haystack
字符串中找出 needle
字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。
输入: haystack = "hello", needle = "ll" 输出: 2
输入: haystack = "aaaaa", needle = "bba" 输出: -1
最近在刷LeetCode,昨天做到了这一题 237. 删除链表中的节点,题目很简单,官方题解中,给出的Java代码如下 1
2
3
4
5
6
7public void deleteNode(ListNode node) {
node.val = node.next.val;
node.next = node.next.next;
}
// 作者:LeetCode
// 链接:https://leetcode-cn.com/problems/delete-node-in-a-linked-list/solution/shan-chu-lian-biao-zhong-de-jie-dian-by-leetcode/
// 来源:力扣(LeetCode)
我平时使用C++来做题,但如果简单的将上述代码修改成C++就可能会导致严重的内存泄漏事故
虚函数表(VMT)Hook,又叫指针重定向,是一种常见的Hook技术,在游戏外挂程序中最常见。且多用于在Direct3D / OpenGL引擎游戏里实现内置叠加层。
本文中VMT就代指虚函数表。
虚函数表是C++实现多态的一种方式。
每一个有虚函数的类(或有虚函数类的派生类)都有一个VMT,VMT本质上就是一个函数指针数组,通常位于对象内存布局的开头或结尾。每当C++类声明虚(virtual
)函数时,编译器都会增加一个条目到VMT中。
反射这种东西,大家都知道伤性能,但有的时候就是不得不用反射。那咋办呢?
那就是为反射得到的方法创建一个委托!
这种方式能够提高近乎直接调用方法本身的性能。 (当然Emit也能够帮助我们显著提升性能,不过直接得到可以调用的委托岂不是更加方便
大家都知道Task表示一个异步任务。如果我们想等待一个Task完成,有很多自带的实例、静态方法供我们选择。有的阻塞,有的不阻塞。不过带超时的等待只有一个,而且它是堵塞的。
这次给大家写个非阻塞的带超时的等待方法~
日常开发过程中,经常会遇到IEnumerable
和IQueryable
这两个接口,也许大家也能熟练的运用这两个接口对数据库或者集合进行各种复杂查询。
实际上如果错误的使用,会导致很多很多系统优化,查询效率等等问题。以及很多人吐槽EntityFramework
效率低下。实际上很大原因就是IEnumerable
和IQueryable
使用的问题!
那么,它们究竟是如何定义的,都分别用来干什么的?又尤其是IQueryable
,它和EntityFramework的延迟加载技术又有什么联系呢?