- 博客(242)
- 收藏
- 关注
转载 Windows 进程权限浅谈 -- 提权 / 降权
如何以编程方式控制进程的执行级别?如果登录用户是管理员账户,且开启了UAC,那么默认情况下双击一个程序时是以medium权限运行,称为受限的管理员权限,如果右键程序“以管理员权限运行”,那么程序是high权限,称为不受限的管理员权限。以产品更新为例,大部分时候产品主程序以在标准(非提升)级别运行,为了能够自我更新,它需要启动一个单独的更新进程,该更新进程需要提升才能正确执行升级。还是以产品更新为例,当以提升级别运行的更新程序完成更新任务,需要启动产品主进程,以标准(非提升)级别运行,此时则需要降权。
2024-07-24 17:43:16
54
转载 通过 pFont 中lfHeight 转换成 CHARFORMAT2 中的字体高度 yHeight
考虑DPI映射比例,LOGFONT::lfHeight单位是像素;CHARFORMAT2::yHeight单位是1/1440英寸或1/567厘米(现实长度。原文链接:https://blog.csdn.net/chenzhisi/article/details/39990513。必须根据DC的映射模式换算到实际DC中的像素值。
2024-06-14 17:55:16
40
转载 C++ NativeEvent使用
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。原文链接:https://blog.csdn.net/tpriwwq/article/details/9359791。根据工程需要,对相关方法进行了封装。//提供应用层使用的回调。
2024-05-21 11:43:17
55
转载 duilib自绘制圆形进度条
watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3hpYW8zNDA0/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)%"/>原文链接:https://blog.csdn.net/c_base_jin/article/details/80472937。
2024-05-21 09:43:18
63
转载 windbg :查看局部变量值
若要打开或切换到“局部变量”窗口,请在“WinDbg”窗口中的“ 视图 ”菜单上,选择“ 局部变量”。在windbg中,dx(display expression)是一个非常强大和灵活的命令,用于显示和解析复杂的数据结构和表达式。使用dx命令,可以直接在命令行中执行表达式,并以易于阅读的方式显示结果。需要注意的是,在使用dx命令之前,需要先加载符号信息,以便能够正确解析表达式和数据类型。现在我们拿到了girl变量的地址 0xe32d6ffad8,注意往下看,同时显示了girl中两个成员变量的地址偏移。
2024-05-13 20:11:45
105
转载 mciSendString函数简介(播放音乐以及录音相关操作)
如果想要提高专业性,mci指令是相对比较多的,首先要设置好声音的清晰度(位度),可接收的声音频率(赫兹),还有播放的声道(单声道或者双声道),另外还有声音的编码格式(如不同类型声音的数字信号与模拟信号的编码格式),等等……我们可以直接通过mciSendString("setaudio music volume to a",0,0,0),其中a是一个数字,来实现播放音量的改变,这个音量的换算是此时多媒体的音量乘上a/1000,所以这个a的范围是0~1000。//打开建立一个声音类型的文件项目,别名为moo。
2024-04-01 09:57:32
810
转载 vs2019编译7zip 最新版本
由于项目需要,要用于7zip解压缩,之前是用c#直接调用7z.exe来解压缩,后来因为要解压缩文件比较大,原来7z.exe中无法通过管道捕获正在解压缩的进度。解决方法:点击菜单栏的项目------>属性------>清单工具------>输入输出------>嵌入清单------>选择否就行了。右击 E:\test\7z2103\Asm\x86\7zCrcOpt.asm 属性,下图是有问题的,但是由于工程过去久远,编译不通过,还要配置一下,它默认生成在C:\UTIL\7z.exe。应该就可以编译通过了。
2024-03-12 14:48:55
156
转载 设计模式分类说明(创建型、结构型、行为型)
行为型模式涉及到算法和对象间职责的分配,行为模式描述了对象和类的模式,以及它们之间的通信模式,行为模式刻划了在程序运行时难以跟踪的复杂的控制流可分为行为类模式和行为对象模式。在解决了对象的创建问题之后,对象的组成以及对象之间的依赖关系就成了开发人员关注的焦点,因为如何设计对象的结构、继承和依赖关系会影响到后续程序的维护性、代码的健壮性、耦合性等。关注的是对象的创建,创建型模式将创建对象的过程进行抽象,可以理解为将创建对象进行了封装,作为客户程序只需使用对象,不再关心创建对象过程的逻辑。
2024-03-08 17:55:27
205
转载 duilib进阶教程 -- 改进List控件(3)_支持多选+右键菜单(ctrl,shift, 鼠标滑动框选)
看到很多PC客户端的列表都支持多选,比如PP助手,华为网盘,duilib本身UIList却没有此功能的支持,于是想修改一把,完善这方面的劣势,而且相信用到的这个功能的也不少,尤其在开发文件管理相关的功能模块,多选的支持应该是必须的。总结分析:ctrl按下的情况,点击,不会使前一个(一部分)选中项失去选中状态,而只是让当前点击的项改变选中状态,并将焦点移到当前项。抬起时,恢复标识位,右键抬起的话,总结分析:shift按下的情况,点击,是选中一个范围,起始项为焦点所在的项,shift点击的项为结束项。
2023-12-21 21:29:43
492
转载 libcurl表单进行文件上传
上面的post 和 last都是指向curl_httppost对象的指针, post指向的就是一个由所有section组成的链表的开端,last是该链表的尾指针。对于文件上传来说,文件大小往往会超过1024个字节,所以如果你确认你的服务器不会拒绝你的文件上传请求的话,可以禁止curl的Expect请求头,具体方法可以去看看我的另外一篇文章《libcurl的使用问题“Expect100-continue” 》。2、添加name/content/contenttype section。
2023-10-12 15:26:56
468
转载 CEF中如何进行C++代码(客户端)和JS代码(前端)互相调用
Chromium和CEF在其内部JavaScript(JS)实现中使用V8 JavaScript引擎。浏览器中的每个帧(frame)都有其自己的JS上下文(context),为该帧中执行的JS代码提供作用域和安全性。(有关更多信息,请参见“使用上下文”部分)。CEF暴露了许多JS功能,可供客户端应用程序集成使用。
2023-10-09 17:39:06
377
转载 CEF中如何进行C++代码(客户端)和JS代码(前端)互相调用
Chromium和CEF在其内部JavaScript(JS)实现中使用V8 JavaScript引擎。浏览器中的每个帧(frame)都有其自己的JS上下文(context),为该帧中执行的JS代码提供作用域和安全性。(有关更多信息,请参见“使用上下文”部分)。CEF暴露了许多JS功能,可供客户端应用程序集成使用。
2023-09-28 17:36:40
630
转载 深入理解软件设计模式
设计模式(Design pattern) :由软件开发人员在软件开发中面临常见问题的解决方案,是经过长时间的试验积累总结出来的,它使设计更加灵活和优雅,复用性更好。从实用的角度来看,它代表了某一类问题的最佳实践。设计模式到底解决了开发过程中的哪些难题呢,它又是如何来解决的呢?其核心是:复用和解耦。使不稳定依赖于稳定、具体依赖于抽象,以此增强软件设计适应变化的能力。
2023-09-02 10:58:00
141
转载 【cef】2023最新windows编译全流程
运行完成后会出现如下报错,关闭当前cmd窗口,重新打开一个新的cmd,进入C:\my_cef\source\depot_tools 下执行 update_depot_tools.bat 即可。重新打开一个新的,切换到C:\my_cef\source\chromium\src\cef\tools 下执行 make_distrib.bat --ninja-build 命令即可。打包完成后在C:\my_cef\source\chromium\src\cef\binary_distrib 下有我们想要的东西。
2023-08-24 09:45:33
80
转载 CEF:C++和JS交互
C++和JS交互V8原理:https://github.com/fanfeilong/cefutil/blob/master/doc/content_register_v8_extension.md。" MyMath.add = function(num1, num2) {"//定义一个MyMath的add函数,参数顺序为外部js调用顺序。//获取全局函数js_handler_call_back,并且执行js_handler_call_back。"//native 函数,不带参数。
2023-08-22 18:09:38
151
转载 允许CEF跨域访问iframe
虽然此时,在线页面嵌入成功并显示出来了,但是,无法happy的实现父子页面的跨域访问,父页面想要调子页面的JavaScript方法,没门,子页面调父页面,没门,限制重重。根据异常消息,子页面访问的父页面的URL必须为http协议,而非file协议。既然我们用CEF,那么跟Chrome也是一般无二了,只要找到类似的设置就可以。重新启动程序,显示iframe中的在线页面,为输出原来的异常消息。来显示一个在线页面,加载的过程中会触发一个未捕获异常,默认情况下,如果嵌入本地Web页面,并在页面内部使用。
2023-08-22 18:07:57
464
转载 cef -- 参数配置详细
它可以用于执行一个可执行程序来启动一个子进程,该可执行程序可以是当前的浏览器客户端可执行程序(默认行为)或是通过设置CefSettings.browser_subprocess_path指定路径的可执行程序。如果被调用时识别为子进程,该函数将会阻塞直到子进程退出并且返回子进程退出的返回码。这通常与宿主应用程序的进程相同,大多数应用程序的逻辑将在浏览器进程中运行。//调用windows Api进入模态消息环之前设置为true,退出模态消息环的时候设置为false,例如TrackPopupMenu。
2023-08-02 16:48:16
1852
转载 Chromium的多进程模式
Process-per-site:同域名范畴的网站放在一个进程,比如www.google.com和www.google.com/bookmarks就属于一个域名内(google有自己的判定机制),不论有没有互相打开的关系,都算作是一个进程中。Process-per-tab:这个简单,一个tab一个process,不论各个tab的站点有无联系,就和宣传的那样。Single Process:这个很熟悉了吧,传统浏览器的模式,没有多进程只有多线程,用--single-process开启。
2023-07-25 12:03:15
227
转载 CEF中使用代理的方法
OnBeforeCommandLineProcessing回调中包含CefCommandLine命令行控制实例,调用CefCommandLine实例的AppendSwitchWithValue方法设置相关属性开关,如设置代理command_line->AppendSwitchWithValue("--proxy-server", "192.168.1.100:8000");在集成cef3时,遇到一个设置代理的问题,cef3提供了两个设置代理的方式。
2023-07-10 16:39:18
879
转载 大话领域驱动设计中的贫血模型和充血模型
所以这篇文章只探讨领域模型的模式问题。贫血模型是在失血模型的基础上聚合了对应领域范畴的业务领域行为,不仅仅是简单的setter/getter,但在行为过程中对领域对象的状态发生的变化只停留在内存层面,不关心其数据的持久化,即不依赖Repository/DAO,把数据持久化放在service中按需处理。在可复用的角度来看贫血模型和充血模型,更纯粹的贫血模型无疑是可复用性更高的,如果我想复用领域模型中的某个修改状态的方法,只是想获取变更后的状态,并不想将它持久化,那么对于充血模型的这个方法就不能复用了。
2022-10-14 18:01:17
244
1
转载 libcurl异步方式使用总结
1、在curl_multi_add_handle之后,multi_timer_cb会马上被拉起调用,然后第一次调用的话timeout是0ms,所以timer_cb也会被拉起,然后调用curl_multi_socket_action。7、当响应到来的时候,socket描述符可读,调用socket_cb,从而调用curl_multi_socket_action,该函数就就会异步调用之前设置的、负责读入数据的write_cb,从而读入数据。// 当描述符可读和可写时,调用socket_cb。
2022-10-08 20:45:48
1199
转载 curl_multi异步高并发服务
curl_multi_poll和curl_multi_wait区别有两个,一个是curl_multi_poll在被等待的时间内,可以调用curl_multi_wakeup激活,curl_multi_poll会加速返回。没有找到解决办法,可能和多线程调用有关。(4) 一次向multihand添加1000条任务,curl_multi_perform执行返回任务从1000降到0后,并不是所有分任务都执行完了,读取的数据也就600条左右,需要多次调用curl_multi_info_read去读取数据。
2022-10-08 19:29:45
1300
转载 Android NDK(五)- ndk-stack 还原堆栈信息
可以看到,还原的信息中出现了 native-lib.cpp:8:10,这样就可以知道是哪一行出错了。如果你是在 Android Stduio 的 Terminal 窗口中执行的命令,还能直接点击跳转到出现问题的那一行,很方便。这个崩溃信息只能看到 Java_com_teletian_sample_myndk_MainActivity_testCrash+27 这个方法出现崩溃了,具体那一行也不知道。链接:https://www.jianshu.com/p/58760868b468。作者:teletian。
2022-10-07 18:17:59
1112
转载 Sqlite3语法使用总结
模式, 即数据的显示方式, 有很多种, 但常用的就两个, .mode line用于表达式运算, .mode column用于表查询的多字段显示. 第二种通常还会开启信息头, 即字段名显示, .header on. 如果你想知道sql语句的执行时间, 可以.timer on.sqlite_master是一个特殊表, 存储有数据库的元信息, 如表(table), 索引(index), 视图(view), 触发器(trigger), 可通过select查询相关信息.逻辑运算符: ==,!
2022-09-30 10:04:13
834
转载 DDD领域驱动设计:四层架构应用
分层架构是运用最为广泛的一种架构模式,几乎每个软件系统都需要通过分层来隔离不同的关注点,以应对不同需求的变化,并且使得这种变化可以独立进行。对于分层架构来说,层次越往上其抽象层次就越面向业务和用户,层次越往下其抽象层次就越面向技术和设备。我们常用的三层架构模型划分为表现层,业务逻辑层,数据访问层等,在DDD分层结构中既有联系又有区别,个人认为主要有如下异同:在架构设计上,在DDD分层结构中将传统三层架构的业务逻辑层拆解为应用层和领域层。
2022-09-28 16:05:24
665
转载 SQLite3神奇的UNION、UNION ALL与LIMIT组合
原文链接:1|t1_d11|t2_d12|t1_d22|t2_d21|t1_d11|t2_d11|t1_d1sqlite>sqlite>1|t1_d12|t1_d21|t1_d12|t1_d21|t2_d12|t2_d21|t1_d12|t1_d21|t1_d11|t2_d12|t1_d22|t2_d21|t1_d11|t2_d12|t1_d22|t2_d21|t1_d11|t2_d12|t1_d22|t2_d2。
2022-09-21 17:52:06
813
转载 left join详解
5.对于条件在on加个and还是用子查询,查询结果是一模一样的,至于如何使用这个需要分情况,用子查询的话会多一个maptask,但是如果利用这个子查询能过滤到很多数据的话,用子查询还是比较建议的,因为不会加载太多的数据到内存中,如果过滤数据不多的情况下,建议用on后面加and条件。2.在匹配阶段,where子句的条件都不会被使用,仅在匹配阶段完成以后,where子句条件才会被使用,它将从匹配阶段产生的数据中检索过滤。on后面:先根据条件过滤筛选,再连接生成临时查询结果。left join详解。
2022-09-20 20:27:43
4413
转载 android.mk中添加目录中所有cpp
通过wildcard可以进行文件遍历,如果是单目录结构,通过这个同样可以达到非常简洁的效果。加强版本(遍历所有文件,但是忽略某一个目录的文件),通过-prune可以指定忽略 "LogicLayer"这个目录。android开发中,经常遇到需要在andoid.mk文件中包含特定的cpp文件(或c文件)使用这个方法可以遍历子目录所有.cpp文件,替换find的参数可以实现遍历和过滤任意文件。另附一个更加简单的宏,可以实现遍历一个目录下的所有文件(但是不会递归调用)# 从所有文件中提取出所有.cpp文件。
2022-09-08 10:40:32
561
转载 SQLite语法 ON CONFLICT
FAIL 当发生适用的约束冲突时,FAIL 解析算法会中止当前的 SQL 语句并返回 SQLITE_CONSTRAINT 错误。例如,如果 UPDATE 语句在尝试更新的第 100 行遇到约束冲突,则前 99 行更改将被保留,但对第 100 行及以后的行的更改永远不会发生。当发生UNIQUE约束冲突,先存在的,导致冲突的行在更改或插入发生冲突的行之前被删除。这样,更改和插入总是被执行。例如,若一条UPDATE语句在100行遇到冲突100th,前99行的改变将被保留,而对100行或以后的改变将不会发生。...
2022-08-30 09:52:15
1625
转载 复习面向对象的OOA、OOD、OOP
原文链接:https://blog.csdn.net/qq443068902/article/details/44256619 OOAObject-Oriented Analysis:面向对象分析方法是在一个系统的开发过程中进行了系统业务调查以后,按照面向对象的思想来分析问题。OOA与结构化分析有较大的区别。OOA所强调的是在系统调查资料的基础上,针对OO方法所需要的素材进行的归类分析和整理,而不是对管理业务现状和方法的分析。OOA(面向对象的分析)模型由5个层次(主题层、对象类层、结构层、属性层和服务层)
2022-08-28 23:21:34
666
转载 面向对象的分析与设计
当系统中的其他对象或其他系统成分(在不要求完全对象化的语言中,允许有不属于任何对象的成分,例如C++程序中的main函数),请求这个对象执行某个操作时,该对象就响应这个请求,完成该操作。接口对声明一个构件的总的行为来说是有用的,构件的实现仅需保证要实现在全部的提供接口中的操作。所有的对象都是类的实例。从现实世界中客观存在的事物出发来建立软件系统,强调直接以问题域(现实世界)中的事物为中心来思考问题、认识问题,并根据这些事物的本质特征,把它们抽象地表示为系统中的对象,作为系统的基本构成单位。...
2022-08-28 23:19:41
1424
转载 回归架构本真:从规划、思维到设计,构建坚不可摧的架构根基
https://www.toutiao.com/a6282591592760164609/?tt_from=mobile_qq&utm_campaign=client_share×tamp=1549142617&app=news_article&utm_source=mobile_qq&iid=59568063679&utm_medium=toutiao_android&group_id=6282591592760164609一、什么是架构关于什么是架构,业界从来没有一个统一的定义。Martin
2022-08-28 23:14:07
190
转载 MVC, MVP, MVVM比较以及区别
MVC优点由于MVC很好的分离了视图层和业务层,所以它具有以下优点耦合性低开发速度快可维护性高没有控件的概念,对html没有封装,易于理解和其它平台(java, php)等更加相似。便于人才获取MVC使用的误区1.把Model理解成实体类(Entity),在MVC中Model应该包含2部分功能,一部分是处理业务逻辑,一部分是提供View显示的数据2.把业务逻辑全部放在Controller端这两个误区本质上都是对Model的作用不明导致的。...
2022-08-28 12:06:43
652
转载 UML--活动图
活动图(Activity Diagram)是描述满足用例要求所要进行的活动以及活动间的约束关系,有利于识别并行活动。它对于系统的功能建模特别重要,强调对象间的控制流程,活动图在本质上是一种流程图。通过活动图可以明确业务处理操作是如何进行的,以及可能产生的变化。-活动图对用例描述尤其有用,它可建模用例的工作流、显示用例内部和用例之间的路径。-描述一个操作执行过程中所完成的工作,说明角色、工作流、组织和对象是如何工作的。-描述复杂过程的算法,在这种情况下使用的活动图和传统的程序流程图的功能是相似的。...
2022-08-28 11:32:18
319
转载 设计模式之六大原则
单一职责原则告诉我们:一个类不能太“累”!在软件系统中,一个类(大到模块,小到方法)承担的职责越多,它被复用的可能性就越小,而且一个类承担的职责过多,就相当于将这些职责耦合在一起,当其中一个职责变化时,可能会影响其他职责的运作,因此要将这些职责进行分离,将不同的职责封装在不同的类中,即将不同的变化原因封装在不同的类中,如果多个职责总是同时发生改变则可将它们封装在同一类中。单一职责原则是实现。...
2022-08-28 11:23:12
80
转载 RSA非对称加解密算法填充方式(Padding)
RSA有个特性叫做延展性,如果攻击者可以将一种密文转换为另一种密文,儿这种新密文会导致对明文的转换变得可知,这种特性并没有解密明文,而是以一种可预测的方式操纵了明文,比如:银行交易系统中,攻击者根据新密文,直接去修改原密文中金额的数据,可以在用户和接受方无法感知的情况下进行修改。RSA加密常用的填充模式有三种:RSA_PKCS1_PADDING, RSA_PKCS1_OAEP_PADDING, RSA_NO_PADDING。在不同的padding模式下,使用相同长度的密钥可以加密的数据最大长度不同;...
2022-08-26 18:19:40
3204
转载 C++ RSA加解密
加解密的时候花费了我不少的时间,网上有很多RSA加解密的文章,但大多数都是从文件读取公钥或者私钥的,后来花费了不少时间才找到一个从字符串读取公私钥的例子。
2022-08-26 16:07:44
1851
转载 23 种设计模式详解
设计模式的分类总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。A、创建模式(5种)工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。1 工厂模式1.1 简单工厂模式定义:定义了一个创建对象的
2022-08-21 12:36:37
137
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人