- 博客(268)
- 资源 (23006)
- 收藏
- 关注
原创 使用golang+antlr4构建一个自己的语言解析器(一)
ANTLR(全名:ANother Tool for Language Recognition)是基于LL(*)算法实现的语法解析器生成器(parser generator),用Java语言编写,使用自上而下(top-down)的递归下降LL剖析器方法。由旧金山大学的Terence Parr博士等人于1989年开始发展。antlr4 是一款强大的语法分析器生成工具,可用于读取、处理、执行和翻译结构化的文本或二进制文件。它被广泛的应用于学术领域和工业生产实践,是众多语言、工具和框架的基石。
2023-03-24 20:52:35
860
原创 C# +SQL 存储过程 实现系统数据权限审查AOP效果
set @optype=dbo.GetSplitOfIndex(@optype,'=',2) -- xxxx 或者 xxxx&p=v。set @module=dbo.GetSplitOfIndex(@moduleAndPage,'/',1)--模块。if (charindex('Submit',@optype,0)>0--dialog 单表提交。if(CHARINDEX('&',@optype,0)>0) --包含多个参数。or @optype='savePOBill' --单据保存。
2023-03-24 20:51:36
542
原创 Windows 10 - Python 类的常用高级系统函数(方法)通识
功能:使用该类系统方法可以在创建类的实例化对象时,可以初始化对象 —— 传递参数(该类的全局变量),参数可以是函数对象,也可以是各种数据类型的变量eg: 程序输出显示:
2023-03-24 20:50:36
437
原创 我用ChatGPT做WebRTC音视频性能优化,主打一个高效
WebRTC 通过一系列的QOS 技术来提升音视频通话质量: 抗丢包策略(NACK、 FEC), 拥塞控制策略(TWCC/REMB), SVC或多视轨, 视频质量自适应策略, Pacer、JitterBuffer等.总体QOS架构如下图所示:图 1。
2023-03-24 20:49:49
3058
原创 GO实现Redis:GO实现内存数据库(3)
Dict接口:Redis数据结构的接口。这里我们使用sync.Map作为字典的实现,如果想用别的数据结构,换一个实现即可Consumer:遍历字典所有的键值对,返回值是布尔,true继续遍历,false停止遍历使用sync.Map实现Dict接口实现Redis中的分数据库ExecFunc:所有Redis的指令都写成这样的类型command:每一个command结构体都是一个指令,例如ping,keys等等arity:参数数量。
2023-03-24 20:47:40
141
原创 SpringBoot集成海康网络设备SDK
设备网络SDK是基于设备私有网络通信协议开发的,为嵌入式网络硬盘录像机、NVR、网络摄像机、网络球机、视频服务器、解码器、报警主机、网络存储等产品服务的配套模块,用于远程访问和控制设备软件的二次开发。
2023-03-24 20:46:25
3195
1
原创 eval有时候也可以用,而且有奇效
再加上eval执行的速度低于普通的js程序,因此在日常开发中,它的使用准则是“能不用就不用”、“代码中使用eval是很丑陋的一件事”。利用eval可以将传入的字符串当作js语句执行的特性,我就可以得到一个条件判断结果,代码相对而言也简洁很多,使用eval,反尔让代码变得优雅,大大提高了数据匹配的效率和代码的可维护性。如果使用常规方式去进行拉线数据值和样式数据的计算匹配,无疑会很繁琐,执行筛选所需要的时间也会很长,这种结果无疑是“丑陋”的。这样的结构,并存入数组,这个数组里存放的都是and关系的筛选条件。
2023-03-24 20:44:08
152
原创 .Net 6.0定义全局当前身份缓存对象
我们登录后一些必要的用户数据存到Token中,我们只需要在请求头中拿到Token并将它解析出来,再通过数据库查询出来即可,做的好一点可以配合上Redis,但是不用Redis也无伤大雅,当然也会遇到一些小问题,比如HttpContext对象如何获取,我在这里的解决方案是,定义一个静态类然后在请求管道中拿到服务容器,再通过服务容器拿到IHttpContextAccessor服务,再点出HttpContext,再拿到请求头,是不是很简单,那我们就直接步入正题吧!!!各位看官献丑了哈哈哈哈。
2023-03-24 20:44:07
702
原创 golang pprof 监控系列(1) —— go trace 统计原理与使用
平时在使用prometheus对应用服务进行监控时,我们主要还是采用埋点的方式,同样,go runtime内部也是采用这样的方式对代码运行过程中的各种事件进行埋点,最后读取 整理后的埋点数据,形成我们在网页上看的trace监控图。.....每次要记录相应的事件时,都会调用traceEvent方法,ev代表的是事件枚举,skip 是看栈帧需要跳跃的层数,args 在某些事件需要传入特定参数时传入。
2023-03-24 20:41:07
514
原创 C/Java/JS/Go/Python/TS不同语言实现
责任链模式(Chain of Responsibility Pattern)是一种行为型设计模式,也叫职责链模式、命令链模式。这种模式为请求创建了一个接收者对象的链,允许你将请求沿着处理者链进行发送,每个处理者均可对请求进行处理,或将其传递给链上的下个处理者。当程序需要使用不同方式来处理多种类请求,且请求类型和顺序不可知,或者当必须按顺序执行多个处理时,可以使用责任链模式。或者如果所需处理及其顺序必须在运行时进行改变,也可以使用该模式。
2023-03-24 20:40:15
153
原创 vue子组件封装弹框只能执行一次的mounted问题及解决
mounted通常是在一些插件的使用或者组件的使用中进行操作 也就是页面渲染之后执行 通常情况下我们会在没有相应的点击事件,但需要在页面展示过程中去不断调用某一函数情况下使用。在实际的开发过程中我们会经常使用create方法,在页面还未渲染成html前,调用函数,从后端获取数据,在实现对页面的数据进行显示。封装了一个子组件来处理弹框内容,发现只能执行一次,在父组件添加一个 v-if 即可,当每次弹框关闭的时候销毁掉该组件就没有问题了。我们需要将查询函数的调用写在mounted函数中,并通过计时器不断调用。
2023-03-02 16:24:12
1971
原创 Docker 删除镜像的实现
如果想要使用docker rmi删除一个镜像,需要注意需要先将使用该镜像的容器删除掉,否则该镜像不能删除成功。(这个代表镜像id以14f6开头的镜像,一般而言,前四位可以唯一标志,如果不可以,docker会提示的)我们可以使用 docker images -q来配合使用docker rmi,这样可以成批的删除希望删除的镜像。但日常生活中,我们比较常用的是短ID以及镜像名,因为用起来最方便。使用docker images --digests查看镜像的具体信息,包括镜像的digest;
2023-03-02 16:22:09
674
原创 ContentProvider启动流程示例解析
是内容提供者,可以跨进程提供数据。大家都知道,的启动,是在方法之前的,所以的初始化时间会影响整个App的启动速度。那启动流程具体是什么样的呢?让我们进入源码的世界来一探究竟。
2023-03-02 16:22:02
215
原创 Python使用pytest-playwright的原因分析
首先田辛老师强调,如果你不想使用 pytest-playwright,你仍然可以在你的 Python 项目中使用 Playwright。下面的代码是一个单纯的playwright的例子。函数启动 Playwright 实例,启动 Chromium 浏览器,导航至 Google 主页,然后关闭浏览器。以上的代码使用, 创建一个 Playwright 实例,启动一个 Chromium 浏览器,并创建一个新页面。要使用 pytest-playwright 运行此测试,请将代码保存到名为。
2023-03-02 16:20:09
314
原创 快速了解Android Room使用细则进阶
Database注解最常用的用法是在一个类中定义数据库实例。例如:1234@Databaseclass1abstractclassabstract在这个例子中,我们使用@Database注解定义了一个数据库类,并在其中指定了包含User实体类的数据库版本号。此外,我们还定义了一个抽象方法userDao(),用于返回一个UserDao数据访问对象 (DAO)。
2023-03-02 16:20:05
2886
原创 python如何用正则表达式提取字符串
如果我们有一行webserver的access日志:'192.168.0.1 25/Oct/2012:14:46:34 "GET /api HTTP/1.1" 200 44 "http://abc.com/search" "Mozilla/5.0"',我们想提取这行日志里面所有的内容,可以写多个(?这种情况我们可以使用(.+?python的正则性能好,很适合做这类字符串的提取,正则表达式的提取一般分两种情况,一种是提取在文本中提取单个位置的字符串,另一种是提取连续多个位置的字符串。)这个正则表达式来提取.
2023-03-02 16:19:13
2232
原创 快速了解Android Room使用细则
当你需要修改数据库架构时,可以使用Room的数据库迁移功能来升级或降级数据库。在一些情况下,你可能需要使用多个表中的数据来创建一个视图(数据库视图!DAO是指数据访问对象,用于定义访问数据库的方法。可以使用注解来指定SQL查询,也可以使用Room提供的一些查询方法。Database是指数据库对象,包含与数据库相关的配置信息,如版本号和实体类的列表。Entity是指代表数据库中的表的类,可以使用注解来定义表中的列。在对数据库进行多次操作时,可以使用事务来保证数据的一致性和完整性。下面说点其他的,嘻嘻。
2023-03-02 16:06:43
524
原创 C++学习之函数模板的使用详解
注意:函数模板并不会生成函数定义,他只是生成一个用于生成函数定义的方案,编译器使用模板为特定的类型生成函数定义时,得到的是模板实例。3.如果expression是一个左值,则var为指向其类型的引用。并非所有的类型都使用相同的算法,可以像重载常规函数那样重载模板函数定义。某些时候,类型T的相应操作只适用于数组,如果T为结构体则模板函数便不成立。当编译器找到与函数调用匹配的具体化定义时,将使用该定义,不再寻找模板。在使用模板函数时,编译器根据实际的类型生成相应的函数定义。,如果T为结构,则>便不成立。
2023-03-02 16:05:51
117
原创 smartbanner.js实现可定制智能应用横幅使用示例
先新增meta禁用自动添加到DOM,再调用api手动添加到DOM。判断微信浏览器的代码我就不贴出来了。需要先移除对应的meta,禁用按钮点击事件。其实就是通过js去修改meta。
2023-03-02 16:01:40
362
原创 Pywinauto 中文文档入门指南
一旦你安装了pywinauto - 你怎么样?第一个必要的事情是确定哪种可访问性技术(pywinauto的backend)可以用于您的应用程序。) - 现在的默认backend注意: Chrome在启动之前需要cmd标志。由于comtypes Python库限制,不支持自定义属性和控件。到目前为止,Linux上的AT SPI和Apple Accessibility API都是长期计划。
2023-03-02 15:41:54
5444
原创 perl uc,lc,ucfirst,lcfirst大小写转换函数
其中uc,\U是将变量中的字母全部转换为大写,对应的lc和 \L是将变量中的字母全部转换为小写。函数uc()会用大写返回其所有的参数,而lc()会用小写返回其参数。如果没有指定参数的话,uc()和lc()都会对$_变量进行操作。和uc()以及lc()类似,如果没有指定参数,ucfirst()和lcfirst()会对$_变量进行操作。但是,由于uc()没有更改其参数,所以它的结果只打印了小写的“hello”。利用Perl内置的大写和小写函数,以及双引号里的逸出字符/U和/L,改变(字符的)大小写是很容易的。
2022-12-02 06:43:13
1222
原创 强大的Perl正则表达式实例详解
正则表达式各语言都有自己的规范,但是基本都差不多,都是由元字符的组合来进行匹配;由于Nmap内嵌的服务与版本探测是使用的Perl正则规范,因此此篇博客记录一下Perl正则的相关内容,方便后期查阅。1)不同的场景、不同的语言,正则会有些许差别,只要掌握住基本的元字符以及相应的语言特性,真正用的时候花10几分钟时间熟悉一两个例子就能上手。3)在我理解,我们如果只是想达到我们抽取数据的目的,正则匹配的原理没有必要搞懂,会用就行。2)Perl正则是目前最优的,包括特性,建议读者学一学,这对处理数据有很大的好处。
2022-12-02 06:42:43
2647
原创 Perl5和Perl6对比使用Sigils的差别
这,这个,那,那个@perl 6中的sigil表示一个类型约束:如果您想用该sigil将某个东西绑定到lexpad条目中,则它必执行位置角色。这基本上是创建匿名词法实体(标量、数组和哈希),使用正常语义初始化它们,然后绑定生成的对象(标量集装箱列阵对象,以及散列对象)的名称,您可以将其用作Perl 6中的任何其他普通变量。@, %,和&在Perl 6中,不要创建任何特定的对象,而是指示一个类型约束,该约束将应用于名称绑定到的对象。在Perl 6中,$还指出,其中的任何内容都应被视为单一的项目。
2022-12-02 06:42:04
524
原创 Perl6中的垃圾收集
话虽如此,如果您需要处理外部资源,例如数据库句柄(数据库服务器提供的数据库句柄通常只有有限的数量),那么及时销毁是一个非常好的特性。虽然这个能,会,可以修正循环引用问题,它具有性能含义,而不是首先解决循环引用(和查找)的问题。引用计数还有一个基本缺点:如果两个对象包含彼此的引用,它们将永远不会被销毁,因为它们将对方的引用计数保持在0以上(循环引用)。不进则退太多细节,Perl 6中的对象只有在垃圾收集运行启动时才被销毁,例如,当达到一定的内存限制时。相反,当需要更多内存时,对象就会从内存中被逐出。
2022-12-02 06:41:14
265
原创 将Perl5代码迁移到Perl6上的解决方案
在Perl 6中,该参数是必需的。能够使用可靠的、经过验证的Perl 5语言组件有助于降低开发人员使用Perl 6的阈值,并且它建立在Perl 5和Perl 6之和大于其部分的情况下。Perl 6中提供的对Perl 5语义的支持(可选)降低了Perl 5程序员在试图使用Perl 6编程时感知到的概念阈值。无论您是一个正在将Perl 5代码转换为Perl 6并遇到一些问题的程序员,还是您只是想了解如果您尝试将Perl 5程序移植到Perl 6可能会发生什么,本文应该回答您的问题。
2022-12-02 06:40:45
205
原创 一篇文章搞懂:词法作用域、动态作用域、回调函数及闭包
上面的a是一个闭包,它是函数g()的一个实例。虽然g()中持有了自由变量,但是g()函数自身不是闭包函数,只有在g持有的自由变量x和传递给f()函数的x的值(即f(1)中的1)进行绑定的时候,才会从g()创建一个闭包函数,这表示闭包函数开始引用这个自由变量,并且这个闭包一直持有这个变量的引用,即使f()已经执行完毕了。对于词法作用域的语言,执行f时会调用g,g将无法访问f文本段的变量,词法作用域认为g并不是f的一部分,而是跳出f的,因为g的定义文本段是在全局范围内的,所以它是全局文本段的一部分。
2022-12-02 06:39:56
363
原创 使用脚本实现自动清除指定文件夹下丢失链接文件的符号链接
在使用Linux时,常常会为自己许多文件或者程序建立符号链接,这样就不用每次都到对应的文件夹下去寻找对应的文件而只需要对需要经常访问的文件建立符号链接就可以了,这样就能把你常需要访问的文件放到桌面上,或者指定到另外一个文件夹中。这样访问时,方便了很多,但是用完之后往往留下许多的符号链接,这些链接需要用户自己手动确认是否可以删除,为linux的使用带来很多的不方便,使用该脚本就能解放你的双手,只需要执行一下脚本,就能将对应文件夹下没有用的符号链接清除。脚本可清除,指定文件夹下,对视链接文件的符号链接。
2022-12-02 06:39:12
98
原创 基于charles抓取https请求使用过程解析
1、打开Charles,点击Charles-》Help-》SSL Proxying > Install Charles Root Certificate in iOS Simulators,即会安装Charles根证书到你所有的iOS模拟器上。在Android内,要信任Charles SSL Proxying生成的 SSL 证书,需要在你的app内添加一些配置,也就是说你只能在自己的app内使用SSL Proxying。3、打开信任根证书tab,点击导入步骤1中保存的证书,根据提示导入,直到导入成功。
2022-12-02 06:38:38
927
原创 Perl 和 StrawberryPerl 与 ActivePerl 的区别详解
ActiveState Perl和 Strawberry Perl最大的区别是 Strawberry Perl 里面有多包含一些 CPAN 里的模块,所以Strawberry Perl 下载的安装文件有 80多M, 而ActiveState Perl 只有20M 左右。Perl 于后两者的关系 是 C 语言和 linux 系统有自带的GCC 的关系。Windows上还有一个常见的是Cygwin的Perl。支持的Perl用于Win32和Perl的二进制分布。Perl,使用来自CPAN的模块不需要二进制包。
2022-12-02 06:36:58
2563
原创 perl之print,printf,sprintf使用案例详解
详细用法,可以查看perl用户手册。他们各自支持的命令格式,都有三四种。但是常用的,也就一两种。
2022-12-02 06:36:18
712
原创 数据结构初阶--栈和队列(讲解+类模板实现)
队列的结构,我们选取单链表来实现,秩序进行头删和为插的不足即可。时,就要考虑到扩容了,扩容也是像之前顺序表那样每次扩一倍,这样可以一定程度地减少扩容次数,但同时是会带来一定的空间消耗的。出队就是进行单链表尾删的操作,要考虑链表为空时不能进行删除,还要注意的是只有一个节点进行删除是要改变尾指针的指向。出队就是进行单链表尾删的操作,要考虑链表为空时不能进行删除,还要注意的是只有一个节点进行删除是要改变尾指针的指向。与此同时,我们要确保此次栈不为空,所以要进行判断栈空的操作,防止程序崩溃。
2022-12-01 11:23:49
354
原创 数据结构初阶--二叉树介绍(基本性质+堆实现顺序结构)
若小的孩子比父亲大,则不需处理了,调整完成,整个树已经是小堆了。于是就有新的一种方法,把堆顶的数据和堆尾的数据先进行交换,然后再把堆尾的数据删除,这样堆的结构就没有完全破坏,因为堆顶的左子树和右子树都是大堆,我们可以进行向下调整就可以恢复堆的形状了,向下调整算法的时间复杂度是堆的高度次,即O(log(h+1))。:一棵深度为k的有n个结点的二叉树,对树中的结点按从上至下、从左到右的顺序进行编号,如果编号为i(1≤i≤n)的结点与满二叉树中编号为i的结点在二叉树中的位置相同,则这棵二叉树称为完全二叉树。
2022-12-01 11:22:12
358
原创 B-神经网络模型复杂度分析
现阶段的轻量级模型 MobileNet/ShuffleNet 系列、CSPNet、RepVGG、VoVNet 等都必须依赖于于具体的计算平台(如 CPU/GPU/ASIC 等)才能更完美的发挥网络架构。1,计算平台主要有两个指标:算力 π和 带宽 β。算力指的是计算平台每秒完成的最大浮点运算次数,单位是FLOPS带宽指的是计算平台一次每秒最多能搬运多少数据(每秒能完成的内存交换量),单位是Byte/s。计算强度上限 Imax,上面两个指标相除得到计算平台的计算强度上限。
2022-12-01 11:21:12
811
原创 Java实现递归查询树结构
我们在实际开发中,肯定会用到树结构,如部门树、菜单树等等。Java后台利用递归思路进行构建树形结构数据,返回给前端,能以下拉菜单等形式进行展示。今天,咱们就来说说怎么样将List集合转换成TreeList。
2022-12-01 11:20:01
5946
1
原创 协程Part1-boost.Coroutine.md
虽然 Boost.Coroutine 库已经被标记为标记为已过时(deprecated)了,但是可以从历史的角度来理解协程的分类和基本工作原理,为现在多样化的协程探索拓宽道路。
2022-12-01 11:19:21
512
原创 VBA驱动SAP GUI自动化:查找页面元素FindAllByName
之所以这里用到FindAllByName()而不是我们熟悉的FindById()方法,是因为当我们使用FindById()去查找某个页面中没有的元素时,程序会直接报错异常,而VBA的异常响应能力天生不足,使用FindAllByName()则完全不会存在这个问题。从上图中可以看到,FindAllByName()方法接收两个参数,一个是元素的Name,另一个是元素的Type,而返回值是一个GuiComponentCollection对象,相当于一个数组。举个小爬在实际工作中碰到的例子。我们可以点击工具中的。
2022-12-01 11:18:30
1423
原创 Asp.Net Core&Jaeger实现链路追踪
Jaeger[ˈdʒɛgər]是Uber推出的一款开源分布式追踪系统,兼容OpenTracing API,已在Uber大规模使用,且已加入CNCF开源组织(Cloud Native Computing Foundation-云原生计算基金会)。其主要功能是聚合来自各个异构系统的实时监控数据。Jager提供了一套完整的追踪系统包括Jaeger-client、Jaeger-agent、Jaeger-collector、Database和Jaeger-query UI等基本组件。
2022-12-01 11:16:23
495
原创 与堆和堆排序相关的问题
完全二叉树中如果每棵子树的最大值都在顶部就是大根堆;完全二叉树中如果每棵子树的最小值都在顶部就是小根堆。Java 语言中的,就是堆结构。因为是用用数组表示完全二叉树,所以有如下两个换算关系,也就是堆的两种表示情况:情况一,如果使用数组 0 号位置,那么对于 i 位置来说,它的:2 * i + 1右孩子下标:2 * i + 2父节点下标:(i - 1)/ 2情况二,如果不用数组 0 号位置,那么对于 i 位置来说,它的:2 * ii
2022-12-01 11:15:21
356
原创 此框架是SQL Server增量订阅,用来监听增删改数据库数据变更
//{set;}set;}set;}set;}set;}}[Display]和[Identity]属于Kogel.Dapper.Extension的特性如果[想了解更多请点击],[ElasticsearchType]和[Nest.PropertyName]属于Elasticsearch特性,如果没用到可以忽略/// 定义表订阅{/// 设置连接配置{//此连接字符串账号需要有管理员权限builder.BuildConnection("数据库连接字符串");}}
2022-12-01 11:14:12
753
(74hc245+74hc154)16×16LED点阵汉字显示仿真与单片机源码51单片机.zip
2022-11-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人