
操作系统架构
文章平均质量分 51
编程经验随笔
Windows
展开
-
【测试】什么是代码覆盖率
常见的编程语言,如Java,C++,Python,JavaScript,PHP和Go等,都有相应的代码覆盖率统计工具。代码覆盖:为了更加全面的覆盖,我们可能还需要理解被测程序的逻辑,需要考虑到每个函数的输入与输出,逻辑分支代码的执行情况,这个时候我们的测试执行情况就以代码覆盖率来衡量,可以理解为白盒覆盖。需求覆盖:指的是测试人员对需求的了解程度,根据需求的可测试性来拆分成各个子需求点,来编写相应的测试用例,最终建立一个需求和用例的映射关系,以用例的测试结果来验证需求的实现,可以理解为黑盒覆盖。转载 2023-03-01 18:01:06 · 265 阅读 · 0 评论 -
如何保证代码质量
关于架构设计的部分,正在阅读《重构》和《Head First 设计模式》,在这里我总结下最近看到的一些改进代码质量的方法和工具,包括:代码规范、CodeReview、重构、单元测试以及代码覆盖率、findbugs工具。其实,代码覆盖率并不是目标,它只是一种手段,帮助我们寻找项目中存在复杂业务逻辑的地方,而这里,就是可以改进的地方。本质上说,重构是在代码写好之后改进它的设计。代码能用和优秀的代码还有一定距离,findbugs帮助我们提升代码质量,会发现一些具备不良用法的代码、暗藏性能问题的代码等等。转载 2023-03-01 17:48:20 · 654 阅读 · 0 评论 -
设计模式六大原则(六)----开闭原则
而通过面向对象的继承和多态机制,可以实现对抽象体的继承,通过覆写其方法来改变固有行为,实现新的扩展方法,所以对于扩展就是开放的。我们在设计系统的时候, 不可能设想一次性把需求确定后, 后面就不改变了.这不科学也不现实的. 既然需求是一定会变化的, 那么我们要如何优雅的面对这种变化呢?这里投射出的意思是:需求总是变化的, 可是对于软件设计者来说, 如何才能做到不对原有系统修改的前提下, 实现灵活的扩展. 这就是开闭原则要实现的.对扩展开放,意味着有新的需求或变化时,可以对现有代码进行扩展,以适应新的情况。原创 2023-02-28 15:37:02 · 374 阅读 · 0 评论 -
23 种设计模式详解(全23种)
行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。原创 2023-02-28 14:29:35 · 109 阅读 · 0 评论 -
mac系统常用操作指南
32.编辑配置文件 vi ~/.bash_profile,终端打开文件,按下i键就是编辑,上下左右键切换光标,如果想要退出,如果在编辑模式先按下esc,然后按下Shift + 冒号,否则直接。18.有的时候我们知道一个文件路径,如何快速打开文件夹呢,可以在访达中点击顶部的前往菜单按钮,选择前往文件夹选项,输入路径即可。12.appstore安装应用,获取之后,点击安装,如果是付费的就需要appid输入账号密码,安装成功后就会出现在启动项里面。原创 2023-02-28 09:45:19 · 1849 阅读 · 0 评论 -
macOs环境变量
做代码开发,各种工具都需要设置系统环境变量,在macos系统里面,设置环境变量与windows的配置过程有很大差别,又因为系统升级原因,导致了一些遗留问题,对于初学用户,不是很容易理解这些内容。~/.bash_profile,~/.bash_login,~/.profile依次加载,如果~/.bash_profile不存在,依次加载后面几个文件;~/.zshrc:设置:source ~/.bash_profile,保证启动shell的时候~/.bash_profile环境变量生效。四、平时会遇到的问题。原创 2023-02-28 09:45:17 · 2002 阅读 · 0 评论 -
创建一个简单的局域网http-server
首先安装node.js,然后npm intsall -g http-server (全局安装http-server。然后cmd进入该目录,执行http-server -p 8787(不指定端口默认是8080)引用到的文件目录 , 在此目录下执行cmd操作, 然后再命令行下面执行上述操作。如果姚跨域的话就是http-server -p 3000 --cors。启动http-server之后,即可再浏览器输入地址和端口访问了。然后创建一个目录,在目录下随便创建一个html文件。原创 2023-02-27 17:01:21 · 406 阅读 · 0 评论 -
windows11 和 chrome设置暗黑模式
地址栏输入:chrome://flags/#enable-force-dark。搜索drak,设置enable。菜单 设置--首选项。原创 2023-02-27 16:32:30 · 726 阅读 · 0 评论 -
如何清空windows的系统剪贴板
windows菜单,选择 设置。打开设置面板 搜索 剪贴板。原创 2022-10-08 15:59:10 · 1253 阅读 · 0 评论 -
谈一谈windows剪贴板的操作
谈一谈windows剪贴板的操作转载 2022-08-05 14:58:42 · 11153 阅读 · 0 评论 -
浏览器的剪贴板权限(js)
我们在编写跨平台的代码的时候,有时候需要读取系统的剪贴板,在web assembly的技术下,我们C++不需要去条件编译处理windows剪贴板和mac的剪贴板。因为浏览器帮我们做了屏蔽系统的处理,只需要获取浏览器剪贴板的访问权限即可。怎么查看当前页面是否有浏览器剪贴板的访问权限呢。点击地址左边的锁的小图标,选在网站设置。...原创 2022-08-04 20:30:05 · 3178 阅读 · 0 评论 -
关于VS下面C++的异常捕获
项目上为了应对程序异常崩溃的情况,加入了DUMP生成机制,也就是调用windows下的API SetUnhandledExceptionFilter()对未处理的异常安装了一个处理函数,在处理函数里面调用MiniDumpWriteDump()生成DUMP文件。这部分代码比较简单,但是在实际测试过程中,发现很多时候程序崩了之后并没有生成DUMP文件。在网上找了一些资料,有用的不多,当然也有很多大神的文档,譬如Matt Pietrek写的关于结构化异常的分析文章(链接:Matt Pietrek 讲解SEH的巨牛转载 2022-06-07 17:21:58 · 673 阅读 · 0 评论 -
一个Windows客户端程序需要哪些基本模块?
1.网络模块(比如libcurl)2.日志模块(比如glog或直接使用OutputDebugString使用debugview查看)3.数据库模块(比如sqlite,有些用ini配置文件就可以满足要求)4.UI库(directUI里面的soui,duilib以及mfc,qt等等)5.线程库(可以方便的处理异步任务,比如libstpool)6.字符串的转换7.C++ 11 特性的委托机制 lambda和function8.模块管理工具9.其他的工具库,文件处理,json解析,aes,md5,openssl,z原创 2022-06-06 16:34:01 · 527 阅读 · 0 评论 -
C++进程间通信之SendMessage和PostMessage
C++进程间通信之SendMessage和PostMessage1,使用介绍2,需要注意的地方3,WM_COPYDATA的原理 SendMessage和PostMessage在Win32编程中是很常见的,主要是用来发送消息到指定的窗口,一般用于工作线程传输数据到UI线程。其中SendMessage函数将指定的消息发送到一个或多个窗口。此函数为指定的窗口调用窗口程序,直到窗口程序处理完消息再返回。而函数PostMessage不同,将一个消息寄送到一个线程的消息队列后立即返回。 同样的转载 2022-06-06 16:21:39 · 4841 阅读 · 0 评论 -
SendMessage跨线程和跨进程
1.跨线程(同一个进程内)如果,窗口是由非主线程创建的,那么,那个线程将会跑一个自己的窗口消息队列。调用SendMessage会切换到该线程上去执行。主线程是个窗口线程,在另外一个工作线程中调用了窗口线程的SendMessage,那么执行的过程是:1)工作线程挂起2)切换到窗口线程,执行对应的消息处理3)切换回工作线程SendMessage : 如果指定窗口由调用线程创建,那么窗口过程会被当成一个子程序立即调用。如果指定窗口由另外一个线程创建,那么系统会切换到那个线程,并且调用合适的窗口过程。在线程原创 2022-06-06 16:17:44 · 1263 阅读 · 0 评论 -
Windows消息传递机制详解
Windows是一个消息(Message)驱动系统。Windows的消息提供了应用程序之间、应用程序与Windows系统之间进行通信的手段。应用程序想要实现的功能由消息来触发,并且靠对消息的响应和处理来完成。必须注意的是,消息并非是抢占性的,无论事件的缓急,总是按照到达的先后排队,依次处理(一些系统消息除外),这样可能使一些实时外部事件得不到及时处理。Windows的应用程序一般包含窗口(Window),它主要为用户提供一种可视化的交互方式,窗口是总是在某个线程(Thread)内创建的。Windows系统通转载 2022-06-06 15:58:48 · 1280 阅读 · 0 评论 -
windows下jenkins的bat用法
在windows下搭建jenkins,主要是为了方便运维同事来打包,主要是针对windows下的C++开发以及nsis打包以及自动化编译打包脚本python而言。准备工作:1.安装支持的python(此处是python3.x)2.安装jdk11 (jenkins需要安装jdk,具体版本看安装jenkins时的说明)3.下载安装jenkins安装完成jenkins之后,(安装时会指定端口比如8088),在本地浏览器访问127.0.0.1:8088进入jenkins初始化配置界面,按照界面操作即可,初始化完成后原创 2022-06-01 11:19:35 · 3491 阅读 · 0 评论 -
jenkins打包使用自定义的工作控件
Jenkins 打包_贰叁得陆的博客-优快云博客_jenkins打包转载 2022-05-27 16:50:41 · 132 阅读 · 0 评论 -
Python-命令行参数处理
Python-命令行参数处理_AFRHAUDX的博客-优快云博客_python中命令行参数转载 2022-05-27 16:35:31 · 88 阅读 · 0 评论 -
Jenkins中参数的使用
Jenkins中参数的使用_小曾同学.com的博客-优快云博客_jenkins 参数转载 2022-05-27 16:34:07 · 459 阅读 · 0 评论 -
【Jenkins】参数化引用
【Jenkins】参数化引用 - qsx_suzy - 博客园原创 2022-05-27 16:33:02 · 342 阅读 · 0 评论 -
转载:谈一谈Windows中的堆
文章目录Windows Heap概述堆的内存分配策略前端分配器之旁视列表前端分配器之低碎片后端分配器Windbg查看进程中的堆进程堆信息查看查看Segment查看申请的内存地址Windows 自建堆的使用建议保护组件更有效的内存管理进行本地访问减少线程同步的开销迅速释放堆栈总结和参考参考如果在Windows中编程应该了解一些Windows的内存管理,而 堆( Heap)也属于内存管理的一部分。这篇文章对你理解Windows内存分配的基本原理和调试堆内存问题或许会有所帮助转载 2022-05-07 10:22:24 · 375 阅读 · 0 评论 -
转载:Windows程序Dump收集
前面一篇写过《Windbg调试----Windbg入门》,可能不少新手会问,我在本地用Visual Studio去做调试就行了,为什么还需要那么抽象的Windbg去进行调试呢?那是因为: 客户环境复杂多样, 发布的软件,经常会出现在本地测试无法重现的问题。我们不可能在客户的环境装一个几十G的Visual Studio,那么一般会先通过Debug Log进行初步的分析,但是碰到程序崩溃,程序死锁,内存泄漏等,只利用Debug log去做分析是非常困难的。这个时候需要借助程序dump来做进一步的分析,进程的转载 2022-05-07 10:19:23 · 516 阅读 · 0 评论 -
ANSI字符集和Unicode字符集
在计算机中字符通常并不是保存为图像,每个字符都是使用一个编码来表示的,而每个字符究竟使用哪个编码代表,要取决于使用哪个字符集(charset)。 在最初的时候,Internet上只有一种字符集——ANSI的ASCII字符集,它使用7 bits来表示一个字符,总共表示128个字符,其中包括了英文字母、数字、标点符号等常用字符。之后,又进行扩展,使用8 bits表示一个字符,可以表示256个字符,主要在原来的7 bits字符集的基础上加入了一些特殊符号例如制表符。 后来,由于各国语言的加入,ASCII.转载 2022-04-28 16:52:34 · 2180 阅读 · 0 评论 -
关于dump文件堆栈显示External Code(崩溃在外部代码)
用vs打开dump文件 , 崩溃在ntdll里面 ,看了堆栈是External Code,这个时候腰围ntdll加载符号,右键 Load Symbols,就可以在堆栈上看出具体崩溃的外部代码的模块了。下面是一个例子:原创 2022-04-28 09:16:41 · 461 阅读 · 0 评论 -
调用dll时出现“Unhandled exception 堆已损坏(heap corruption)“异常解决方法
转自:http://blog.sina.com.cn/s/blog_668aae780101iou9.htmlhttp://yaogangshi.iteye.com/blog/1001690http://bbs.youkuaiyun.com/topics/390019506问题:在用c++扩展php进行调试时,用malloc或new开辟数据空间并将php的array数据传入时,出现异常:Unhandled exception at 0x777F5624 (ntdll.dll) in php.exe: 0转载 2022-04-27 16:34:52 · 11422 阅读 · 0 评论 -
天朝的股市怎么可以这样
今天是2022年4月26日,市场再一次套住了老乡,这个市场跟尿壶一样,本质上大家都是认为是没有价值的,只是炒作罢了。价值投资简直是一个笑话。原创 2022-04-26 16:26:42 · 90 阅读 · 0 评论 -
记录2022年熊市之4月25日
今天上证指数从3034.27到2928.51,创业板从2240到2169跌幅5.66%原创 2022-04-25 17:55:09 · 138 阅读 · 0 评论 -
浅析GDI和GDI+与SKIA
GDI由于没有复杂的抗锯齿处理,绘图效率非常不错,但是同样的绘制质量不好。没有半透明的处理功能,在对界面要求不高而对性能要求比较高的应用程序里面使用比较多,比如股票软件。GDI+GDI的升级版本,Windows独立提供了一个GDIPlus.dll的动态库,具有跨语言特性,C++,C#,VB都可以使用。 API封装性也比较好,支持丰富的半透明处理功能和文字处理特效。 具备抗锯齿绘制的能力。同样的也有其弊端,主要表现在:绘制性能低下,连续绘制1000张大图片CPU基本就扛不住了 部分API存在转载 2022-04-24 10:19:01 · 1459 阅读 · 0 评论 -
STL内存池以及vector的原理
vector是一种容器,一种顺序容器,它的内存分配是连续的。与数组不同的是,数组的大小是静态的,不能动态的扩展,但是vector却可以。vector的扩充机制:按照容器现在容量的一倍进行增长。vector容器分配的是一块连续的内存空间,每次容器的增长,并不是在原有连续 的内存空间后再进行简单的叠加,而是重新申请一块更大的新内存,并把现有容器中的元素逐个复制过去,然后销毁旧的内存。这时原有指向旧内存空 间的迭代器已经失效,所以当操作容器时,迭代器要及时更新。STL - 内存分配 - 内存池各种.原创 2022-04-24 10:14:13 · 1133 阅读 · 0 评论 -
关于各种池子的理解(连接池,线程池,内存池)
为什么现在各种池子越来越频繁使用呢,我认为本质的原因就是增加效率,怎么增加效率呢?一般来说,一个东西比如说线程或者内存,为什么要构建线程池或者内存池呢。因为在一个项目中如果需要频繁的创建和关闭线程或者频繁的申请和释放内存,这种操作是很耗时的。为了避免这种资源和性能的消耗所以采用池子的方式,这样可以快速的复用,提高程序的性能。再比如说数据库连接池,以mysql连接池为例,一般是TCP链接后面跟着mysql的协议,TCP的链接我们知道连接时要经过三次握手,关闭时也需要四次挥手。同样mysql协议的连接认原创 2022-04-24 09:58:40 · 427 阅读 · 0 评论 -
windows UAC绕过原理
1.什么是UAC?用户账户控制,User Account Control首先我们看一下程序启动后,UAC的流程图:如果关闭UAC,则程序会提权运行。Privilege Contents:如果启动了UAC,程序要求提权运行或者以管理员身份运行的时候,System会启动Consent.exe进程。在UAC开启的情况下,即使用户选择否,也会开启UAC虚拟化:1.UAC虚拟化后,应用程序会重定向到其他位置,用户依然可以正常使用程序,但应用程序写入的数据不会在真实系统生效,以防原创 2022-04-22 15:37:06 · 429 阅读 · 0 评论 -
windows服务封装程序srvany和nssm的区别
nssm是一个服务帮助助手,相比于如srvany和其他服务帮助程序,它们不处理作为服务运行的应用程序故障。如果使用srvany这类程序助手会出现显示某个应用程序已启动,但是实际上该应用程序已经消亡。nssm监视正在运行的服务,如果某个监听的服务进程停止,nssm会重新启动它。使用nssm显示某个应用程序正在运行,那么该应用程序确实是在运行。如果应用程序表现良好,可以配置nssm,将重新启动该应用程序的所有责任交给nssm,nssm让Windows负责恢复操作。 nssm的特点如下:支持普通的ex原创 2022-04-20 17:34:23 · 1443 阅读 · 0 评论 -
windows安装gogs实操指南
1.首先下载gogs二进制压缩包,当然下载源码安装的自行搜索操作。地址:From binary - Gogs我们这里下载最新的二进制压缩包下载完成后,在D盘新建个GitServer的目录(可自定义目录),解压zip包里面有个gogs.exe的可执行文件,在cmd下面执行gogs webgogs默认是监听3000端口,然后我们通过web管理页面进行初始化安装浏览器输入地址:http://localhost:3000/install可以按照...原创 2022-04-20 16:18:51 · 4551 阅读 · 1 评论 -
Windows下安装Gogs
Windows下安装Gogs原文:https://www.jianshu.com/p/b78b385cf168安装Gogs前言相信用Git的朋友应该有听说过Gogs了吧?简直就是搭建私有Git服务器的绝佳利器!!!而且,如此神奇的利器还是国人开发的,那么自然是完美支持中文的!!!好的,接下来我来图解一下Windows下安装Gogs的流程二进制安装第一步安装第一步当然是去Gogs官网 下载跟自己电脑对应的二进制Gogs啦。在这里我下载的是如下版本:第二步下载好Gog转载 2022-04-19 15:27:41 · 1330 阅读 · 0 评论 -
Windows C++ 读写注册表
const char* sub_key = "Software\\demo_cache";函数定义:bool SetValue(const std::string& key, const std::string& value) { HKEY hkey = nullptr; LSTATUS res = ::RegOpenKeyExA(HKEY_CURRENT_USER, sub_key, 0, KEY_WRITE, &hkey); if (res != E...原创 2022-04-13 15:25:36 · 413 阅读 · 0 评论 -
四柱笔记(一):基本阴阳理论
四柱笔记(一):基本阴阳理论引言中医关于阴阳五行的论述:阴阳应象大论:阴胜则阳病,阳胜则阴病。五行配脏腑:小编按:脏属阴,腑属阳。所以对应天干交替排列,数字中一般单数为阳,双数为阴,因此甲乙丙等也是阴阳交替。五脏中肝属木,心属火,脾属土,肺属金,肾属水。而同时 肝胆 / 心小肠 / 脾胃 / 肺大肠 / 肾膀胱 相表里,因此在同一五行中分阴阳。另外木火土金水的顺序,也即黄帝内经中四季顺序,其中脾胃的中土属于长夏。根据岁运所属和四时旺衰可以表征疾病,如木太过,脾胃必然受克。宋 许子平转载 2022-04-11 16:02:33 · 351 阅读 · 0 评论 -
回声消除原理(AEC)
转载:解密回声消除技术之一(理论篇)_碧海银沙的技术博客_51CTO博客一、前言因为工作的关系,笔者从2004年开始接触回声消除(Echo Cancellation)技术,而后一直在某大型通讯企业从事与回声消除技术相关的工作,对回声消除这个看似神秘、高端和难以理解的技术领域可谓知之甚详。要了解回声消除技术的来龙去脉,不得不提及作为现代通讯技术的理论基础——数字信号处理理论。首先,数字信号处理理论里面有一门重要的分支,叫做自适应信号处理。而在经典的教材里面,回声消除问题从来都是作为一个经典的自适应转载 2022-04-06 16:35:04 · 2723 阅读 · 0 评论 -
开源协议是什么?有哪些?如何选择?
开源协议是什么?有哪些?如何选择?原创 2022-04-06 15:51:07 · 91 阅读 · 0 评论 -
NSIS多语言操作指南
NSIS多语言 - donfaquir - 博客园NSIS学习记录の----NSIS多语言安装以及详解 - 谢呈勖 - 博客园原创 2022-04-06 15:25:08 · 326 阅读 · 0 评论