自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 一些问题的整理【持续更新】

一 、 使用虚拟地址空间的好处是什么?让每个进程拥有了相同的、独立内存空间,相互之间不会干扰读写内存更安全。由于系统和MMU的限制,使得进程无法操作到其他进程的数据。不连续的物理空间可以映射成连续的虚拟地址空间进程分配的内存空间只有在实际使用时,才会触发缺页异常来分配实际物理空间,从而最大程度减少了内存空间的浪费。【MMU:Memory Management Unit的缩写,中文名是内...

2019-05-29 23:07:25 189

原创 【iOS】UserDefaults使用的一些“坑”

UserDefaults使用的一些“坑”项目场景:问题1:问题描述:原因分析:问题2:问题描述:原因分析:问题3:问题描述:原因分析:方案一:方案二:问题4:问题描述:原因分析:个人理解,有错误欢迎评论指正,感谢????项目场景:iOS 主进程与extension进程通信,并且需要主进程可以实时监听到状态变化UserDefaults是线程安全的 问题1:问题描述:初始化程序组对应UserDefaults失败原因分析:group ID未创建成功问题2:问题描述:没有记录数据的时

2021-06-12 03:01:35 1202 1

原创 【ios】swift调起系统分享面板

单纯调用起系统的分享面板还是比较简单的,系统有提供一个很好用的类(UIActivityViewController)可以用来处理这一点 @objc func share(){ DispatchQueue.main.async { let activityController = UIActivityViewController(activityItems: [URL(fileURLWithPath: "http://www.baidu.com")], appl

2020-07-06 14:34:57 3566

原创 【ios】UI -- 滚动效果的实现原理

在UI中,会有很多视图具有可滚动属性,包括但不限于UICollectionView、UITableView等它们的滚动原理基本相同,下面进行一个初学者的简单理解它的滚动的实现依赖于两个属性:View的frame和boundsframe:视图的位置bounds:视图的大小滚动效果可以简单理解为:当子view超出其bounds的时候,超出的部分在显示时将被“丢弃”,而通过拖动view或滚动轴,可以改变其frame,使其在界面上的相对位置发生变化(也就是它在bounds中的位置变化),从而使vi.

2020-06-23 20:37:59 441

原创 【ios】多线程编程基础 -- GCD

基础首先推荐一篇比较简单易懂的多线程编程与异步的基础介绍,可以对ios的多线程有个简单的了解:https://juejin.im/post/5a309c525188255ea95befef官方文档(个人感觉不适合零基础的同学,建议还是先把基础刷一下,然后动手写写再看):线程编程指南:https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/Multithreading/ThreadSafety/ThreadSaf

2020-06-23 14:37:15 189

原创 【ios】如何导入第三方Pod

以SnapKit为例前提:已安装Pod首先,控制台命令进入到你的工程目录下执行: pod init ,这一步,会在工程主目录生成Podfile文件修改Podfile文件,在target ‘demo’ do 和 end之间,添加依赖的第三方库,如:pod ‘SnapKit’, ‘~> 5.0.0’执行命令:pod Install,这一步会在工程主目录下生成Podfile.lck文件,它管理Pod的版本等然后重新打开主工程目录下的.xcworkspace文件,会看到新添加的Pod相关信息.

2020-06-08 11:50:32 287

原创 【VM】Win10虚拟机安装Mac OS

一、 资源VM:https://download3.vmware.com/software/wkst/file/VMware-workstation-full-15.1.0-13591040.exe(版本不能高,一旦高了就可能解锁失败,被坑了略久)Mac Os:解锁工具:链接:https://pan.baidu.com/s/1o9GDWeOU88Fk67asOjXcUw提取码:goh6...

2020-04-11 22:33:54 367

原创 【网络】TCP/IP协议

TCP/IP协议序协议分组交换协议协议分层OSI参考模型TCP/IP模型TCP/IP是怎么通信的?TCP/IP序协议简单来说,协议就是计算机之间通过网络实现通信时,实现达成的一种"约定";这种"约定"使得不同厂商的设备、不同CPU及不同操作系统组成的计算机之间,只要遵循相同的协议就可以实现通信。分组交换协议将大数据分割为一个个较小单位(包packet)进行传输。计算机通信会在每一...

2020-03-28 14:18:50 115

原创 【WinDbg】使用WinDbg调试程序(本机调试32应用程序)

用WinDbg调试File->OpenExecutable,打开要调试的程序(可以附加命令行)在windbg窗口底部附近的命令行中,输入以下命令:.sympath srv* 或 在File->Symbol File Path输入符号所在路径;符号路径添加后,可以调用.reload加载符号(符号相关其他命令:https://www.cnblogs.com/yilang/p/1146...

2020-03-26 18:16:57 844

原创 【WinDbg】WinDbg的命令

一、 WinDbg命令WinDbg共支持三类命令:标准命令、元命令和扩展命令1. 标准命令标准命令(standard command)用来提供适用于所有调试目标的基本调试功能.标准命令通常是一两个字符(version除外)或者符号,只有version等少数命令除外。标准命令的第一个字符是不分大小写的, 第二个字符可能区分大小写。所有标准命令都是实现在WinDBG内部的, 执行这些命令时不需要...

2020-03-26 16:01:36 687

原创 【WinDbg】WinDbg配置及介绍

一、 安装及配置https://www.cnblogs.com/yilang/p/11383369.html二、 界面介绍 及 界面化使用https://www.cnblogs.com/yilang/p/11387359.htmlhttps://www.cnblogs.com/yilang/p/11388444.htmlhttps://www.cnblogs.com/yilang/p/1...

2020-03-26 11:53:45 591

原创 【windows】会话(Session)、窗口站(WindowsStation)、桌面、窗口

Windows Session序会话管理器Windows会话过程终端服务会话(Terminal Services Session)创建过程身份认证过程会话会话的组成序 一个系统可以同时登录多个用户(包括远程用户登录)一个用户拥有一个会话(远程用户被称为远程会话)一个会话拥有多个工作站和窗口。只能拥有一个交互式工作站(Winsta0)。一个会话拥有一系列私有的进程和模块:Csrss.exe...

2020-03-25 14:54:22 3059

原创 【SQLite】SQLite教程笔记(二)

SQLite教程笔记(二)SQLite Join交叉连接 -- CROSS JOIN内连接 -- INNER JOIN外连接 -- OUTER JOINSQLite Join交叉连接 – CROSS JOIN交叉连接(CROSS JOIN)把第一个表的每一行与第二个表的每一行进行匹配。如果两个输入表分别有 x 和 y 行,则结果表有 x*y 行。由于交叉连接(CROSS JOIN)有可能产生...

2020-01-12 19:41:47 234

原创 【软件设计师】第7章 数据库技术基础

数据库概念数据库是长期存储在计算机内的、有组织的、可共享的数据集合。其特点是数据间联系密切、冗余度小、独立性较高、易扩展,并且可为各类用户共享。数据库系统(DBS) 是一个采用了数据库技术,有组织地、动态地存储大量相关数据,方便多用户访问的计算机系统。广义上讲,DBS是由数据库、硬件、软件和人员组成的。数据库管理系统(DBMS) 是数据库系统的核心软件,要在操作系统下支持下工作,解决如何科学...

2020-01-12 19:41:13 148

原创 GitHub使用

GitHub使用git上传大文件git 私有仓库添加用户协作(添加权限)git上传大文件当必须上传大文件时。需借助git-fls下载地址:https://git-lfs.github.com/使用方式:    (1)、在项目目录git lfs install。    (2)、git lfs track '.文件后缀'。    (3)、git add .gitattributes。...

2020-01-02 20:26:51 185

原创 【SQLite】SQLite教程笔记(一)

SQLite教程笔记(一)SQLite命令DDL -- 数据定义语言DML -- 数据操作语言DQL -- 数据查询语言SQLite语法SQLite语句ANALYZE语句AND/OR子句ALTER TABLE语句ATTACH DATABASE语句BEGIN TRANSACTION语句BETWEEN子句COMMIT语句CREATE INDEX语句CREATE TABLE语句CREATE TRIGGE...

2019-11-13 16:55:03 529

转载 【转】关系数据库与非关系数据库

转自:https://www.cnblogs.com/suncan0/p/4735129.html1. 关系型数据库关系型数据库,是指采用了关系模型来组织数据的数据库。关系模型是在1970年由IBM的研究员E.F.Codd博士首先提出的,在之后的几十年中,关系模型的概念得到了充分的发展并逐渐成为主流数据库结构的主流模型。简单来说,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表...

2019-11-12 10:23:28 101

原创 【算法】深度优先和广度优先

图的遍历以图中的某一个顶点出发遍历图中其余顶点,且使每一个顶点仅被访问一次,这一过程就叫做图的遍历深度优先遍历有点类似于树的前序遍历算法逻辑:从图中的某个顶点v出发,访问v找到刚访问过的顶点的第一个未被访问的邻接点,访问该顶点。以该顶点为新顶点,重复此步骤,直至刚访问的顶点没有未被访问的邻接点为止返回前一个访问过的且有未被访问的邻接点的顶点,找到该顶点的下一个未被访问的邻接点,...

2019-10-09 14:50:59 166

原创 【Linux设备驱动程序】构造和运行模块

Linux设备驱动程序 -- 构造和运行模块内核模块与应用程序的不同用户空间和内核空间内核中的并发为什么要考虑并发问题Linux内核代码要求内核代码的当前进程需要注意的其他细节编译和装载编译模块装载和卸载模块装载insmodrmmodlsmod预备知识头文件内核模块与应用程序的不同内核模块应用程序任务大多数小规模及中规模的应用程序是从头到尾执行单个任务模块只是先注册自...

2019-09-20 11:43:02 215

原创 【Linux设备驱动程序】基础简介

Linux设备驱动程序设备驱动程序的作用内核功能划分进程管理内存管理文件系统设备控制网络功能可装载模块设备和模块的分类字符设备块设备网络设备安全问题几个原则性的概念设备驱动程序的作用设备驱动的作用在于提供机制,而不是提供策略。1) 机制和策略分离的好处是啥?可以使软件包更易开发,也更容易根据不同的需求来调整以实现不同的策略。2) 机制是啥?机制是类似于提供什么样的功能。3) 策略...

2019-09-17 19:31:54 371

原创 Windows的验证机制

软件调试的主要任务是寻找软件下次的根源,其前提通常是已经知道了有瑕疵存在。发现软件瑕疵发现软件下次的最普遍方法是测试。常见的测试手段有:黑盒测试百合测试内建自检,又称为BIST(Build-In Self-Test),是指在软件代码内部构建一些测试功能,这些功能(函数)可以在某些情况下执行,或者被自动测试工具所调用以发现问题。压力测试即使用了以上所有的测试手段,也不能保证会发现所有...

2019-09-16 10:45:36 409

原创 事件追踪

事件追踪要解决的问题就是记录软件运行的动态轨迹,包括代码的执行轨迹和变量的变化轨迹。事件追踪事件追踪和日志机制的差异:日志只要记录下软件中重要事件的结果;事件追踪则要记录下导致这一结果的完整过程。(因此,事件追踪机制必须能够适应频繁的数据输出和庞大的数据量;事件追踪机制通常是以二进制方式而不是文本来传输和记录的)事件追踪的目标“读者”主要是开发人员,事件日志的主要对象还包括系统管理员。这...

2019-09-16 10:45:10 667

原创 【Windows】服务程序

修改服务启动后失败重启设置ChangeServiceConfig2 SERVICE_FAILURE_ACTIONS sdBuf={0}; BOOL bSuccess=TRUE; if (argc!=2) { return 1; } // Open a handle to the service. SC_HANDLE sch=OpenSCManager(...

2019-08-24 17:20:16 716 1

原创 日志

日志日志就是软件为自己写的日记,每一条日志记录用来记叙一件事。日志包含的元素一般有(有点像写记叙文的几大元素=.=):时间:所记录时间的发生时间,通常至少精确到分钟级别。地点:用来定位所记录事件发生时的“位置信息”,通常包括机器名(本机记录的话可以省略),进程ID、线程ID等。主题(来源):即该事件的实施者,根据需要可以是服务名称、模块名称或类名和函数名。事件:对所发生的事件的描述...

2019-08-21 11:55:07 176

原创 【Message】程序提示

弹窗提示MessageBox声音提示MessageBeep,这个API调用的提示音是系统提示音WINUSERAPIBOOLWINAPIMessageBeep( __in UINT uType);#endif /* !NOMB */参数:#define MB_OK 0x00000000L#define MB_ICONHAN...

2019-08-19 17:14:47 304

原创 【DUMP】系统转储文件

分类完整转储内核转储小型内存转储以上三种类型的文件大小依次递减,包含的信息量也是依次递减。完整转储包含产生转储时物理内存中的所有数据,其文件大小通常比物理内存的容量还要大内核转储去除了用...

2019-08-19 16:40:32 877

原创 【DUMP】蓝屏终止

蓝屏蓝屏是Windows中用于提示严重的系统级错误的一种方式,其出现时整个屏幕的背景为蓝色。蓝屏一旦出现,Windows系统便宣告终止,只有重新启动才能恢复到桌面环境。因此蓝屏又被称为蓝屏终止(Blue Screen Of Death,BSOD)。蓝屏机制的设计思想将系统终止在导致错误的第一现场,并且把这个现场的信息显示给用户或永远保存下来(比如保存到转储文件),这样有力于更快地发现问题根...

2019-08-17 16:42:26 951

原创 【DUMP】怎么手动产生蓝屏

蓝屏机制相关结束csrss服务进程,来源:** 图片来源:《软件调试》第13.2章节双机联调–让目标机强行蓝屏/重启.crash命令能引发一个系统蓝屏,并生成dump文件.reboot命令使系统重启,不产生dump文件...

2019-08-17 16:18:03 751

原创 双机联调

双机联调环境构建双机联调--让目标机强行蓝屏/重启环境构建一、 双机联调涉及的工具VirtualKD、Windbg工具下载地址:VirtualKD:http://virtualkd.sysprogs.org/二、 环境配置1、 VirtualKD配置:下载文件到本地,解压之后的文件夹中,有一个target文件夹。把这个文件夹copy到虚拟机,然后在虚拟机里运行该目录下的vmin...

2019-08-07 15:42:01 225

原创 【环境变量】普通情况环境变量&SYSTEM权限下获取User权限的环境变量

获取环境变量的常用APISHGetSpecialFolderPathBOOL SHGetSpecialFolderPathA( HWND hwnd, //保留 LPSTR pszPath, //指向以null结尾的字符串的指针,该字符串接收指定文件夹的驱动器和路径。此缓冲区的大小必须至少为MAX_PATH个字符。 int csidl, //一个CSIDL值,用于...

2019-07-30 20:41:59 854

原创 Winsock

WinSockWinsock初始化、反初始化错误检查和处理使用IP协议创建基本的Winsock调用来建立通信IPv4寻址字节排序创建套接字面向连接的通信在Winsock中,建立通信的步骤:服务器:客户机:套接字状态Winsock编译采用了WINSOCK.H的应用程序时,需要链接到WS2_32.LIB库使用WINSOCK.H时,需要链接到WSOCK32.LIB使用MSWSOCK.H时,需要...

2019-07-22 22:13:24 3932

原创 断点&&单步执行

软件断点INT3指令 – 0xCC【n为3的INT指令,一般的INT指令会是0xCDn,但是INT3被优待啦_】在调试器中对某一行设置断点时,调试器会先把这里的本来指令的第一个字节保存起来,然后写入一条INT3指令【因为INT3的长度为1个字节,所以在设置和取消断点的时候,也只需要保存和恢复一个字节】。这种替换是在启动调试时和调试过程中动态进行的。程序运行到断点时,程序指针指向的仍是INT...

2019-07-19 22:17:20 979

转载 【转】MD5算法原理及其实现

什么是MD5算法MD5讯息摘要演算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码杂凑函数,可以产生出一个128位元(16位元组)的散列值(hash value),用于确保信息传输完整一致。MD5功能输入任意长度的信息,经过处理,输出为128位的信息(数字指纹);不同的输入得到的不同的结果(唯一性);MD5属不属于加密算法认为不属于的人是因为他...

2019-07-19 22:00:54 167

原创 获取系统的详细类型

BOOL GetOperatingSystemName(LPTSTR pszOS){ OSVERSIONINFOEX osvi; COSChecker::GetVersionStruct(osvi); SYSTEM_INFO si; GetSystemInfo(&si); if ( VER_PLATFORM_WIN32_NT==osvi.dwPlatformId ...

2019-07-19 21:56:43 161

原创 中断和异常

在计算机系统中,包括任务切换、时间更新、软件调试在内的很多功能都是依靠中断和异常机制实现的。中断中断通常是由CPU外部的输入输出设备(硬件)所触发的,供外部设备通知CPU“有事情需要处理”,因此又叫中断请求。中断请求的目的是希望CPU暂时停止执行当前正在执行的程序,转去执行中断请求所对应的终端处理例程(Interrupt Service Routine,ISR)。有些任务是不能被打断的,...

2019-07-18 11:30:22 188

原创 WinDbg命令

段、页WinDbg可以使用r命令来观察GDTR和IDTRGDTR、IDTR:用来标识GDT表和IDT表的位置和边界使用dg n 命令(n为数字)可以查看段选择子的对应的描述符信息线程使用 ~ 可以列出线程的基本信息调试*x a.exe! : 列出a.exe的所有符号...

2019-07-17 16:04:27 725

原创 CPU的调试支持

INT3指令:断点指令

2019-07-17 10:06:13 1131

原创 软件调试基础

软件调试基础软件调试的基本手段有:断点、单步执行、栈回溯等。其初衷是跟踪和记录CPU执行软件的过程,把动态的瞬间凝固下来供检查和分析**Bug一词来源:**“Bug”的创始人格蕾丝·赫柏(Grace Murray Hopper),是一位为美国海军工作的电脑专家,也是最早将人类语言融入到电脑程序的人之一。而代表电脑程序出错的“bug” 这名字,正是由赫柏所取的。1947年9月9日,赫柏对...

2019-07-14 22:16:26 742

原创 加密算法(二)3DES算法、RC4算法

3DES算法3DES是DES加密算法的一种模式,它使用3条64位的密钥对数据进行三次加密3DES是DES向AES过渡的加密算法,是DES的一个更安全的变形。Ek()代表加密,Dk()代表解密,k代表密钥、P代表明文、C代表密表3DES加密过程:C = Ek3( Dk2( Ek1§ ) )3DES解密过程:P = Dk1( Ek2( Dk3© ) )k1和k3可以根据数据对安全性的...

2019-06-24 08:56:51 1261

原创 加密算法(一)DES算法

DES算法DES算法为密码体制中的对称密码体制,又被称为美国数据加密标准。其密钥长度为56位,明文按64位进行分组,将分组后的明文和56位密钥按位替代或交换的方式形成密文组的加密算法。DES加密算法的特点:分组比较短密钥太短密码生命周期短运算速度慢DES算法描述:其置换规则:逆置换:初始置的逆运算。比如,初始换位时,把第1为换到了第50位,那么在逆置换时,把第50位换回...

2019-06-20 09:02:20 447

空空如也

空空如也

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

TA关注的人

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