自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(237)
  • 收藏
  • 关注

转载 mciSendString函数简介(播放音乐以及录音相关操作)

如果想要提高专业性,mci指令是相对比较多的,首先要设置好声音的清晰度(位度),可接收的声音频率(赫兹),还有播放的声道(单声道或者双声道),另外还有声音的编码格式(如不同类型声音的数字信号与模拟信号的编码格式),等等……我们可以直接通过mciSendString("setaudio music volume to a",0,0,0),其中a是一个数字,来实现播放音量的改变,这个音量的换算是此时多媒体的音量乘上a/1000,所以这个a的范围是0~1000。//打开建立一个声音类型的文件项目,别名为moo。

2024-04-01 09:57:32 38

转载 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 35

转载 设计模式分类说明(创建型、结构型、行为型)

行为型模式涉及到算法和对象间职责的分配,行为模式描述了对象和类的模式,以及它们之间的通信模式,行为模式刻划了在程序运行时难以跟踪的复杂的控制流可分为行为类模式和行为对象模式。在解决了对象的创建问题之后,对象的组成以及对象之间的依赖关系就成了开发人员关注的焦点,因为如何设计对象的结构、继承和依赖关系会影响到后续程序的维护性、代码的健壮性、耦合性等。关注的是对象的创建,创建型模式将创建对象的过程进行抽象,可以理解为将创建对象进行了封装,作为客户程序只需使用对象,不再关心创建对象过程的逻辑。

2024-03-08 17:55:27 31

转载 duilib进阶教程 -- 改进List控件(3)_支持多选+右键菜单(ctrl,shift, 鼠标滑动框选)

看到很多PC客户端的列表都支持多选,比如PP助手,华为网盘,duilib本身UIList却没有此功能的支持,于是想修改一把,完善这方面的劣势,而且相信用到的这个功能的也不少,尤其在开发文件管理相关的功能模块,多选的支持应该是必须的。总结分析:ctrl按下的情况,点击,不会使前一个(一部分)选中项失去选中状态,而只是让当前点击的项改变选中状态,并将焦点移到当前项。抬起时,恢复标识位,右键抬起的话,总结分析:shift按下的情况,点击,是选中一个范围,起始项为焦点所在的项,shift点击的项为结束项。

2023-12-21 21:29:43 292

转载 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 355

转载 CEF中如何进行C++代码(客户端)和JS代码(前端)互相调用

Chromium和CEF在其内部JavaScript(JS)实现中使用V8 JavaScript引擎。浏览器中的每个帧(frame)都有其自己的JS上下文(context),为该帧中执行的JS代码提供作用域和安全性。(有关更多信息,请参见“使用上下文”部分)。CEF暴露了许多JS功能,可供客户端应用程序集成使用。

2023-10-09 17:39:06 236

转载 CEF中如何进行C++代码(客户端)和JS代码(前端)互相调用

Chromium和CEF在其内部JavaScript(JS)实现中使用V8 JavaScript引擎。浏览器中的每个帧(frame)都有其自己的JS上下文(context),为该帧中执行的JS代码提供作用域和安全性。(有关更多信息,请参见“使用上下文”部分)。CEF暴露了许多JS功能,可供客户端应用程序集成使用。

2023-09-28 17:36:40 356

转载 深入理解软件设计模式

设计模式(Design pattern) :由软件开发人员在软件开发中面临常见问题的解决方案,是经过长时间的试验积累总结出来的,它使设计更加灵活和优雅,复用性更好。从实用的角度来看,它代表了某一类问题的最佳实践。设计模式到底解决了开发过程中的哪些难题呢,它又是如何来解决的呢?其核心是:复用和解耦。使不稳定依赖于稳定、具体依赖于抽象,以此增强软件设计适应变化的能力。

2023-09-02 10:58:00 119

转载 【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 7

转载 winapi 锁定程序到任务栏 c++

const WCHAR kPinStrCh[] = L"锁定到任务栏";

2023-08-23 19:41:53 146

转载 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 98

转载 允许CEF跨域访问iframe

虽然此时,在线页面嵌入成功并显示出来了,但是,无法happy的实现父子页面的跨域访问,父页面想要调子页面的JavaScript方法,没门,子页面调父页面,没门,限制重重。根据异常消息,子页面访问的父页面的URL必须为http协议,而非file协议。既然我们用CEF,那么跟Chrome也是一般无二了,只要找到类似的设置就可以。重新启动程序,显示iframe中的在线页面,为输出原来的异常消息。来显示一个在线页面,加载的过程中会触发一个未捕获异常,默认情况下,如果嵌入本地Web页面,并在页面内部使用。

2023-08-22 18:07:57 318

转载 cef -- 参数配置详细

它可以用于执行一个可执行程序来启动一个子进程,该可执行程序可以是当前的浏览器客户端可执行程序(默认行为)或是通过设置CefSettings.browser_subprocess_path指定路径的可执行程序。如果被调用时识别为子进程,该函数将会阻塞直到子进程退出并且返回子进程退出的返回码。这通常与宿主应用程序的进程相同,大多数应用程序的逻辑将在浏览器进程中运行。//调用windows Api进入模态消息环之前设置为true,退出模态消息环的时候设置为false,例如TrackPopupMenu。

2023-08-02 16:48:16 1373

转载 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 145

转载 CEF中使用代理的方法

OnBeforeCommandLineProcessing回调中包含CefCommandLine命令行控制实例,调用CefCommandLine实例的AppendSwitchWithValue方法设置相关属性开关,如设置代理command_line->AppendSwitchWithValue("--proxy-server", "192.168.1.100:8000");在集成cef3时,遇到一个设置代理的问题,cef3提供了两个设置代理的方式。

2023-07-10 16:39:18 602

转载 大话领域驱动设计中的贫血模型和充血模型

所以这篇文章只探讨领域模型的模式问题。贫血模型是在失血模型的基础上聚合了对应领域范畴的业务领域行为,不仅仅是简单的setter/getter,但在行为过程中对领域对象的状态发生的变化只停留在内存层面,不关心其数据的持久化,即不依赖Repository/DAO,把数据持久化放在service中按需处理。在可复用的角度来看贫血模型和充血模型,更纯粹的贫血模型无疑是可复用性更高的,如果我想复用领域模型中的某个修改状态的方法,只是想获取变更后的状态,并不想将它持久化,那么对于充血模型的这个方法就不能复用了。

2022-10-14 18:01:17 218 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 1062

转载 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 1065

转载 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 1022

转载 Android NDK Crash 定位分析

莫慌,这篇博客就来讲讲怎么分析这份崩溃日志。

2022-10-07 18:11:57 373

转载 Sqlite3语法使用总结

模式, 即数据的显示方式, 有很多种, 但常用的就两个, .mode line用于表达式运算, .mode column用于表查询的多字段显示. 第二种通常还会开启信息头, 即字段名显示, .header on. 如果你想知道sql语句的执行时间, 可以.timer on.sqlite_master是一个特殊表, 存储有数据库的元信息, 如表(table), 索引(index), 视图(view), 触发器(trigger), 可通过select查询相关信息.逻辑运算符: ==,!

2022-09-30 10:04:13 777

转载 DDD领域驱动设计:四层架构应用

分层架构是运用最为广泛的一种架构模式,几乎每个软件系统都需要通过分层来隔离不同的关注点,以应对不同需求的变化,并且使得这种变化可以独立进行。对于分层架构来说,层次越往上其抽象层次就越面向业务和用户,层次越往下其抽象层次就越面向技术和设备。我们常用的三层架构模型划分为表现层,业务逻辑层,数据访问层等,在DDD分层结构中既有联系又有区别,个人认为主要有如下异同:在架构设计上,在DDD分层结构中将传统三层架构的业务逻辑层拆解为应用层和领域层。

2022-09-28 16:05:24 613

转载 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 731

转载 left join详解

5.对于条件在on加个and还是用子查询,查询结果是一模一样的,至于如何使用这个需要分情况,用子查询的话会多一个maptask,但是如果利用这个子查询能过滤到很多数据的话,用子查询还是比较建议的,因为不会加载太多的数据到内存中,如果过滤数据不多的情况下,建议用on后面加and条件。2.在匹配阶段,where子句的条件都不会被使用,仅在匹配阶段完成以后,where子句条件才会被使用,它将从匹配阶段产生的数据中检索过滤。on后面:先根据条件过滤筛选,再连接生成临时查询结果。left join详解。

2022-09-20 20:27:43 4347

转载 android.mk中添加目录中所有cpp

通过wildcard可以进行文件遍历,如果是单目录结构,通过这个同样可以达到非常简洁的效果。加强版本(遍历所有文件,但是忽略某一个目录的文件),通过-prune可以指定忽略 "LogicLayer"这个目录。android开发中,经常遇到需要在andoid.mk文件中包含特定的cpp文件(或c文件)使用这个方法可以遍历子目录所有.cpp文件,替换find的参数可以实现遍历和过滤任意文件。另附一个更加简单的宏,可以实现遍历一个目录下的所有文件(但是不会递归调用)# 从所有文件中提取出所有.cpp文件。

2022-09-08 10:40:32 508

转载 SQLite语法 ON CONFLICT

FAIL 当发生适用的约束冲突时,FAIL 解析算法会中止当前的 SQL 语句并返回 SQLITE_CONSTRAINT 错误。例如,如果 UPDATE 语句在尝试更新的第 100 行遇到约束冲突,则前 99 行更改将被保留,但对第 100 行及以后的行的更改永远不会发生。当发生UNIQUE约束冲突,先存在的,导致冲突的行在更改或插入发生冲突的行之前被删除。这样,更改和插入总是被执行。例如,若一条UPDATE语句在100行遇到冲突100th,前99行的改变将被保留,而对100行或以后的改变将不会发生。...

2022-08-30 09:52:15 1472

转载 复习面向对象的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 606

转载 面向对象的分析与设计

当系统中的其他对象或其他系统成分(在不要求完全对象化的语言中,允许有不属于任何对象的成分,例如C++程序中的main函数),请求这个对象执行某个操作时,该对象就响应这个请求,完成该操作。接口对声明一个构件的总的行为来说是有用的,构件的实现仅需保证要实现在全部的提供接口中的操作。所有的对象都是类的实例。从现实世界中客观存在的事物出发来建立软件系统,强调直接以问题域(现实世界)中的事物为中心来思考问题、认识问题,并根据这些事物的本质特征,把它们抽象地表示为系统中的对象,作为系统的基本构成单位。...

2022-08-28 23:19:41 1334

转载 回归架构本真:从规划、思维到设计,构建坚不可摧的架构根基

https://www.toutiao.com/a6282591592760164609/?tt_from=mobile_qq&utm_campaign=client_share&timestamp=1549142617&app=news_article&utm_source=mobile_qq&iid=59568063679&utm_medium=toutiao_android&group_id=6282591592760164609一、什么是架构关于什么是架构,业界从来没有一个统一的定义。Martin

2022-08-28 23:14:07 174

转载 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 607

转载 UML--活动图

活动图(Activity Diagram)是描述满足用例要求所要进行的活动以及活动间的约束关系,有利于识别并行活动。它对于系统的功能建模特别重要,强调对象间的控制流程,活动图在本质上是一种流程图。通过活动图可以明确业务处理操作是如何进行的,以及可能产生的变化。-活动图对用例描述尤其有用,它可建模用例的工作流、显示用例内部和用例之间的路径。-描述一个操作执行过程中所完成的工作,说明角色、工作流、组织和对象是如何工作的。-描述复杂过程的算法,在这种情况下使用的活动图和传统的程序流程图的功能是相似的。...

2022-08-28 11:32:18 296

转载 设计模式之六大原则

单一职责原则告诉我们:一个类不能太“累”!在软件系统中,一个类(大到模块,小到方法)承担的职责越多,它被复用的可能性就越小,而且一个类承担的职责过多,就相当于将这些职责耦合在一起,当其中一个职责变化时,可能会影响其他职责的运作,因此要将这些职责进行分离,将不同的职责封装在不同的类中,即将不同的变化原因封装在不同的类中,如果多个职责总是同时发生改变则可将它们封装在同一类中。单一职责原则是实现。...

2022-08-28 11:23:12 54

转载 RSA非对称加解密算法填充方式(Padding)

RSA有个特性叫做延展性,如果攻击者可以将一种密文转换为另一种密文,儿这种新密文会导致对明文的转换变得可知,这种特性并没有解密明文,而是以一种可预测的方式操纵了明文,比如:银行交易系统中,攻击者根据新密文,直接去修改原密文中金额的数据,可以在用户和接受方无法感知的情况下进行修改。RSA加密常用的填充模式有三种:RSA_PKCS1_PADDING, RSA_PKCS1_OAEP_PADDING, RSA_NO_PADDING。在不同的padding模式下,使用相同长度的密钥可以加密的数据最大长度不同;...

2022-08-26 18:19:40 2951

转载 C++ RSA加解密

加解密的时候花费了我不少的时间,网上有很多RSA加解密的文章,但大多数都是从文件读取公钥或者私钥的,后来花费了不少时间才找到一个从字符串读取公私钥的例子。

2022-08-26 16:07:44 1730

转载 23 种设计模式详解

设计模式的分类总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。A、创建模式(5种)工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。1 工厂模式1.1 简单工厂模式定义:定义了一个创建对象的

2022-08-21 12:36:37 120

转载 【设计模式】秒懂状态模式

状态模式在日常开发中也是一个非常实用的行为型设计模式。和以往一样,还是先来看看状态模式的定义:允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。好吧,我承认当初和你们一样,看到这句话的时候也是处于一个懵逼的状态,我们还是先别纠结了,继续往后面看。

2022-08-20 12:01:02 81

转载 图文详解23种设计模式

创建型模式总体上比较简单,它们的作用就是为了产生实例对象,算是各种工作的第一步了,因为我们写的是面向对象的代码,所以我们第一步当然是需要创建一个对象了。简单工厂模式最简单;工厂模式在简单工厂模式的基础上增加了选择工厂的维度,需要第一步选择合适的工厂;抽象工厂模式有产品族的概念,如果各个产品是存在兼容性问题的,就要用抽象工厂模式。单例模式就不说了,为了保证全局使用的是同一对象,一方面是安全性考虑,一方面是为了节省资源;建造者模式专门对付属性很多的那种类,为了让代码更优美;

2022-08-20 10:07:27 250

转载 栈为什么效率比堆高

栈的优势是,存取速度比堆要快,仅次于寄存器,栈数据可以共享。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。使用堆时,第一步将分配的地址放到寄存器,然后取出这个地址的值,然后放到目标地址。3、栈是编译时系统自动分配空间,而堆是动态分配(运行时分配空间),所以栈的速度快。链接:https://www.jianshu.com/p/27c0fc1aecab。1、有寄存器直接对栈进行访问(esp,ebp),而对堆访问,只能是间接寻址。4、栈是先进后出的队列结构,比堆结构相对简单,分配速度大于堆。...

2022-08-17 11:05:51 2503

转载 Makefile通配符

%.o" 把我们需要的所有的 ".o" 文件组合成为一个列表,从列表中挨个取出的每一个文件,"%" 表示取出来文件的文件名(不包含后缀),然后找到文件中和 "%"名称相同的 ".c" 文件,然后执行下面的命令,直到列表中的文件全部被取出来为止。说到底,Makefile的东西就是这样一点,好像我的这篇文档也该结束了。我们去执行这个命令的时候会出现错误,提示我们没有 "*.c" 文件,实例中我们相要表示的是当前目录下所有的 ".c" 文件,但是我们在使用的时候并没有展开,而是直接识别成了一个文件。...

2022-08-13 17:47:35 775

转载 如何保证数据库和缓存双写一致性?

数据库和缓存(比如:redis)双写数据一致性问题,是一个跟开发语言无关的公共问题。尤其在高并发的场景下,这个问题变得更加严重。我很负责的告诉大家,该问题无论在面试,还是工作中遇到的概率非常大,所以非常有必要跟大家一起探讨一下。今天这篇文章我会从浅入深,跟大家一起聊聊,数据库和缓存双写数据一致性问题常见的解决方案,这些方案中可能存在的坑,以及最优方案是什么。...

2022-08-09 23:59:36 77

空空如也

空空如也

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

TA关注的人

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