自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(74)
  • 资源 (3)
  • 收藏
  • 关注

原创 五.nodejs中的async和await的用法

那么知道了await是等待一个promise的状态,我们还可以单独编写一个loadPromise函数,只要有返回最终给await一个状态就行。async和await是es7(一种javascript语言标准)引入的新特性,是为异步编程而设计的,是对es6中异步编程的一种升级完善。这里的frist我还加了res参数,这个是await的返回值接收的是resolve('执行成功')的值,注意并不是promise。frist是后执行的,必须等promise里的异步完成,才能执行后面的代码。

2024-02-18 22:06:19 460

原创 四.nodejs中setTimeout和promise的用法

PS:在这里,你们可以把函数也当成一个变量那样传递看待,那么一切就不会变得奇怪,比如函数随便变换名字,就像变量一样a赋给b或者,函数的一个变量参数,在函数里又变成另一个名字,但它们的值都是不变的。在前面的pc函数中,有两个参数,resolve和reject,这个传递的是两个函数,调用这两个函数,可以改变你创建的这个promise状态,promise有三种状态,Pending(未完成),Resolved(已完成)和Rejected(已失败)上面先定义一个fn函数,它的参数是需要一个函数。

2024-02-18 19:56:17 1121

原创 三.nodejs 之require

编写模块我们用到了 module.exports,exports是一个对象,我们用require请求后得到的就是这个对象,所以我们在模块中要对外实现什么,就通过exports输出。但这样会报错,因为nodejs中它找的是node_modules下的模块,所以我们可以创建一个node_modules文件夹,将name.js放进去,这样调用就正常了。而module也是一个对象,除了exports,它还有这个模块的其它属性,比如模块路径,模块id之类的,这里就不详细介绍了。然后node test.js。

2024-02-16 17:57:28 224

原创 二.nodejs实现加载index.html并响应js css文件。

test.js里的工作原理,就是获取url,然后提取js,css结尾的目录, 然后fs.readFile("."+request.url, 'utf-8',function (err, data) 读取对应的文件,响应即可。像之前我们创建了一网页服务,都是在代码里直接输出html给客户端,现在我需要将html和代码分开,单独写成一个index.html,该如何实现呢?但是这里会有问题,你的index.html如果加载了js文件,css文件,或者jpg图片,是不起作用的。test.js代码如下(来源网络)

2024-02-07 14:00:42 426

原创 一.nodejs创建一个网页服务并处理get请求

接着我们浏览器,输入127.0.0.0:7000,可以访问了,怎么样,是不是很简单的就创建了一个网站服务了。我们知道客户端的get请求,它的数据是通过url传递的,所以我们可以通过request.url获取数据。request,就是管理客户端到服务端的请求,里面可以处理从客户端get,post请求的的数据。然后request.url获得也是这样一个字符串,但是这是个字符串,我们还得提取里面的参数。这句是请求http模块。然后判断params.name参数,如果不为空,说明是要处理get请求的数据。

2024-02-03 20:22:00 272

原创 7.网页前端之javascript二

channelmode=yes|no|1|0是否使用剧院模式显示窗口。toolbar=yes|no|1|0是否显示浏览器的工具栏。是网页的地址,如果为空,则document文档里不会有任何内容,网页是空的,可以调用document.write给新网页添加内容。设置了新窗口的大小后,状态栏和菜单栏等都不见了,如果想要显示的话,设置属性为yes就可以了,如:menubar=yes,上面函数暗地里还传进了this,这个this就指向调用它的对象,这样就可以确定访问的是哪个对象了。status=yes。

2024-02-03 16:26:54 578

原创 6.网页前端之javascript一

str存储的是字符串,那么这样不使用new,直接给str赋字符串也是可以的,比如var str="ABCDEFG",像这个str依然能使用。onclick是a标签的一个事件属性,其它的标签也有,可以给给onclick指定一个函数,也就是当发生了onclick事件,就执行。当单击了元素,就链接到href属性指定的网址,所以我们禁止掉这个默认处理,当单击链接的时候,就不会链接到href指定的网址了。

2024-02-03 16:14:59 679

原创 5.前端入门之制作一个导航条

ul也设置float:left是因为,它的左右还要带个img标签,左右边角封闭,当然你如果不需要这个圆角矩形的效果,不带img图片,你也可以不用设置float:left。用ps的切片工具,把图片的两边取下来,还有中间也要取一部分(不是文字区域),分隔线的图片也取下来,那么就会有四张图片,如下:(它们的高度都是一致的)这里的li背景图片是分隔符,我们只需要每项前有一个就行,所以no-repeat不平铺,实现了有分隔图片的效果。源文件就不上传了,你们可以把文章里那几张图片另存为,然后试一下。

2024-02-03 15:57:49 338

原创 PHP从零实现区块链(网页版五)地址、密钥和钱包

而pubkey是这笔input对应的公钥,用这个做账户地址标识。txoutput还是两个变量,但是地址变成了$pubKeyHash,公钥哈希,注意了这里跟txinput不一样,txinput存的是公钥,因为是好加解密,毕竟是用公钥来加解密,他的哈希可没这个功能。通过用私钥加密一段数据发送给你,我提前告诉你解密后的数据,然后你用公钥解密这个数据,如果和我发给你的解密数据对应上了。而公钥是用私钥生成的,但无法用公钥推算出私钥,从数学角度上,保证了安全性,只能穷举破解,但需要的算力是庞大的,等于不可能。

2024-01-29 22:02:18 1436

原创 ubuntu下安装两种版本laravel框架和php

接着,再运行php artisan serve终于OK,页面正常访问:(我已经在项目里写了个test.php页面:phpinfo())接着我们将这个composer.phar脚本,移动自己想要的目录,当然你也可以不移动。然后会提示一些php扩展没安装,我们依次安装(注意选择对应7.0的扩展)。OK,为了不影响原来的8.1版本,全局变量环境这些我们就不去改变了。1.假设你已经安装了php8.1版本和高版本的laravel框架。接着我们去下载php7.0对应的composer 2.2版本。

2024-01-27 22:53:43 526

原创 4.样式之margin、border、padding等位置相关属性

设置float为left表示,盒子向左浮动,而盒子的大小会依据盒子里的内容尽量缩小,比如pre设置了向左浮动,那么它的宽度会以文本的宽度为准,并且右边空出的空间,如果足以容纳下一个元素时,那么下一个元素就会出现在pre的右边。像之前使用的样式都是行内样式,就是把style写在一个标签内,这样做不怎么方便,如果我要所有a标签具有相同的样式,那每一个a标签,都要在里面指定一下style,这样太麻烦了,而且阅读起来也不方便。因为li项的大小是依据其里面的内容来的。其它的就没有了,都是前面讲过的。

2024-01-23 21:05:02 936

原创 随笔混合,C#调用VC++编写的DLL

上面导入时,填了一个参数EntryPoint,指定入口函数,这样在下面可以给函数取一个别名GetTitle。首先用vc++编写一个DLL,打开VS2010,选择新建WIN32工程,在下一步的时候,选择建立DLL。可以看到,在VC++里,像DWORD,ULONG,USHORT之类的数字类型在C#中都可以用。我这里主要说的是,vc++中的各种变量类型,在C#中用什么样的类型代替。C#中传递一个string类型过去,然后DLL里,给它赋值,这边再取出。但要传递的数据,如果超过了int类型,那就用uint类型吧。

2024-01-22 23:17:11 818

原创 PE文件结构分析及应用三

VirtualSize的值是节的真实大小,即不经过对齐的节大小,VirtualAddress是节在内存的位置(按照内存中对齐方式),是SectionAlignment的整数倍,SizeofRawData是节在文件中对齐后的节大小,如果一个节位置在1000,它的大小为234,那么经过对齐后节大小就是536(假设对齐值为512)PointerRawToData是节在文件中的位置。如果位28 IMAGE_SCN_MEM_SHARED(内存共享节)被置1,表示节中的数据在映象文件的所有正在运行的实例中共享。

2024-01-19 23:15:21 440

原创 PE文件结构分析及应用二

ImageCount确定图标的数量,ResourceID在PE文件用于确定图标的ID,也就是上面的1,2,3,4,5。相对于位图在PE文件的储存方式,图标并没有像位图那样去掉了位图文件头,图标所有的数据都存储在PE文件里,但图标跟位图的区别不只这一点,图标在PE文件是分开来储存的,也就是图标被分为了两部分存储在PE文件里,这一点从“Id(资源类型ID)成员的取值”那里可以看出,3代表Icon(图标)14代表图标组(图标组)。//移到文件头位置,加4略过PE标志。//移到文件头位置,加4略过PE标志。

2024-01-19 23:12:48 831

原创 PHP从零实现区块链(网页版四)交易1

如果存在的话,就找出是哪个output,就是每循环一个output就和spentTXOS[txID]下所有的索引对比一下,如果相等,则表明这个output就是被花费过的,则跳到第二层循环,继续下一个output。这个spentTXOS存储有这个地址的input,并且行数是以交易区块ID作为元素下标名的,是个二维数组,列存着索引。注意这里的输入输出针对的主体是交易区块,比如输出给张三50个币,那么这个币得有个来源,input就指明了来源,那么可以知道,一个交易区块内,两边的币数是相等的。

2024-01-18 21:56:02 1291

原创 解决程序访问网页没有Cookie的问题。

*获取网站的Cook,cook储存在response.Cookies*/上面Cookie里的Domain填的是网站服务器的主机名,可填IP地址。/*访问该网站,把获得的Cook再传过去*///读取网站里的所有数据。//读取网站里的所有数据。/*设置Cookie*/

2024-01-14 21:17:01 960

原创 C# const static readonly

const 和static readonly的区别。(非静态方法可以正常访问静态方法和成员)

2024-01-14 21:11:25 388

原创 PE文件结构分析及应用一

先来看一下OriginalFirstThunk这个成员,这个成员指向了一个IMAGE_THUNK_DATA数组,这个数组的大小是如何确定的呢,依据从模块导入函数的数量来确定,如果说这个结构的Name成员对应的动态链接库名为user32.dll,并从这个库导入了十个函数,那么IMAGE_THUNK_DATA数组大小就是十。//当NameIsString为1时,这个成员才有效,它指向一个IMAGE_RESOURCE_DIR_ STRING_U结构(偏移)

2024-01-14 19:24:58 898

原创 VC使用GDI+技术实现的屏幕监控

可一到别人电脑上,只可以坚持几十秒钟,就出问题了,难道是数据丢失了,对不上了。如果不是的话,那也算了,因为我估计,可能花很久时间我也找不出来,只能是以后对某些知识点有更深入的了解再来找了。如果是直接点击应用程序运行的话,那么请运行Release版的程序,因为我生成的是Release版的,Debug版是以前的,会有错,客户端和服务端都得Release版。,只有代码,没多少说明,不懂的可到网上另找相关资料。似乎就这些了,反正有完整的工程,可以直接到工程里看,需要手打的代码估计不会超过一百行,还觉得难么。

2024-01-13 10:43:33 890

原创 VC MFC进程条(CProgressCtrl)控件

/设置进程条上下限(范围)void CProgressCtrl::GetRange( int& nLower, int& nUpper );//获得进程条上下限。//计算进程条当前宽度。

2024-01-13 10:30:08 412

原创 VC MFC滑块(CSliderCtrl)控件

从CSliderCtrl类派生出子类CNewSliderCtrl,由于滑块控件不像前几个控件那样复杂,所以自绘,就直接在WM_PAINT消息处理函数中进行就行了,给CSliderCtrl添加WM_PAINT消息处理函数,这里我仅简单的自绘一下。//设置滑块范围,nMin最小值,nMax最大值。//获取滑块通道区域。//获取滑块通道区域。

2024-01-13 10:29:31 401

原创 VC MFC列表框(CListBox)控件

关于列表框背景位图的问题,可以响应对话框的WM_CTLCOLOR消息,在这个消息处理函数中,判断是否为列表框,如果是那就返回一个位图画刷,如在对话框类添加一个CBrush变量 brush;接着准备两张位图,一张用于列表框的背景,一张用于项选中时的背景,ID号分别为:IDB_BK、IDB_SELECTED。m_ListBox.AddItem(IDB_BITMAP3,"聆听(小鸟在唱歌...)");m_ListBox.AddItem(IDB_BITMAP5,"大地(在那些....)");

2024-01-13 10:28:56 997

原创 VC MFC标签(CTabCtrl)控件

首先往对话框添加标签控件,调整至合适大小,关联变量m_TabCtrl,再添加两个控件,用于标签项显示,分别是列表视图控件,关联变量m_ListCtrl,树视图控件,关联变量m_TreeCtrl.rect.DeflateRect(0,itemRect.Height()+4,0,0);m_TreeCtrl.InsertItem("小明",hFriends);

2024-01-13 10:28:11 451

原创 C# GDI+编程(五)

怎么样,效果不错吧,但一拖动窗口就原形毕露了,注意到苹果下方的阴影了么,就是为了实现这个效果才会带来一些问题,或者说麻烦了许多吧。这个问题留待以后解决吧,在这里声明时,都用了IntPtr代替,这是没有办法的事,因为C#没有指针这个概念,而我们通过查HDC,和HWND类型定义时发现,它们都是指针类型。(题外话:在vc++中,客户区与非客户区有着不同的重绘消息,WM_PAINT和WM_NCPAINT,这一点要注意了,在刷新非客户区的时候,别重绘客户区,虽说不会出什么问题,但影响了效率总是不好的,能避免就避免)

2024-01-13 10:21:53 827

原创 C# GDI+编程(四)

如果填10,10,50,50那就是窗口的0,0,50,50显示在位图的10,10,50,50矩形区域内,窗口起始位置是不是能指定的,只能从位置0,0开始。第一个参数和第二个参数,指明是从屏幕的哪里开始复制,而后面的0,0,就是把屏幕复制到窗口里了,从窗口哪里开始显示。可以看到,当鼠标移动的时候,左上角的矩形明显闪烁了,这是因为进行了三次绘制,填充矩形,画矩形,显示文本。设置了不规则窗口,就可以把那张PNG图片绘制到窗口里去了,但由于半透明的问题,得先用透明画刷填充窗口,然后再绘制。

2024-01-13 10:21:14 884

原创 C# 控件自绘

如果需要自绘按钮控件,就不能通过添加事件的方式了,因为这样虽然也可以参与绘制,但Button类默认也绘制了,这样就不可避免的会起冲突。但是我们在添加项的时候发现,comboBox1.Items.Add函数的参数都是Object类型,这样我们就可以自定义一个类,描述项的信息。button类里的Image属性成员可以指定按钮显示的图片,相比MFC,.net里的控件可设置的属性多了许多,这样一般不需要自绘就能使控件。所以我们不让能基类来处理某些事件,要怎么实现呢,重写基类的事件处理函数就可以了。

2024-01-13 10:20:32 814

原创 C# GDI+编程(三)

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>来自API CombineRgn函数>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>CombineRgn API函数的最后一个参数nCombineMode指明如何合并两个区域,那么Region类里的合并也应该有类似的功能。另外说一下区域跟路径的关系,这样就可以更好的理解区域是怎么一回事了,区域跟路径的关系就像填充图形跟图形的关系,//用Xor函数合并区域,得到的是两个区域未重叠部分的区域。

2024-01-13 10:19:45 786

原创 C# GDI+编程(二)

这种用点构成的图形,是路径画刷直接创建的,没有通过GraphicsPath,也可以指定三个以上的点,路径画刷会自动把这些点连接起来(按顺序),构成一个图形的,然后再填充,但填充的范围只限于这些点构成的图形内。中心点的颜色是color_blend.Colors数组的最后一个,像多种颜色渐变,你可以把中心点,到路径上的每一个点,看做一条条直线,然后这条线的3分之2是什么颜色到什么颜色渐变,3分之一又是哪种颜色到哪种颜色渐变。对应着左上(0,0),右上(100,0),右下(100,100),

2024-01-13 10:19:00 1036

原创 C# GDI+编程(一)

LinearGradientBrush类有个InterpolationColors属性成员可以指定多种颜色渐变,这个成员是一个ColorBlend类型,像之前的渐变,都只能限于两种颜色的渐变,使用了InterpolationColors后,就可以使用多种,如从红到绿的渐变,然后绿到蓝。color_blend.Colors数组是指定有多少颜色渐变,比如上面就是红绿蓝,那么渐变应该是这样的,从红到绿渐变,然后从绿到蓝渐变。Form类中默认处理事件的方法,和你的添加的事件处理方法,这两者有什么关系。

2024-01-13 10:17:58 890

原创 C#文件操作

在删除文件之前,也可用File.Exists("d:\\test.txt")方法检查文件是否存在,返回false文件不存在。//每次读取4个字节,读取的是int32。

2024-01-13 10:15:06 868

原创 C#网络编程(三)

另外可以把加入组播组中的计算机(iep),保存在一个ArrayList数组里,然后每隔一段时间,调用client.Send发送数据给各个端,如果失败了。前面说过了,关键点在于广播地址,如何确定子网中的广播地址,子网中最大的一个IP地址,就是这个子网广播地址,比如上面举例中第一个子网的广播地址是192.168.1.255,第二个是192.168.255.255。真正应用到实际中来,是不行的,因为有些问题没处理,比如动态数组里的元素添加和访问,是在两个线程中进行的,这就牵扯到线程同步的问题了。

2024-01-13 10:11:32 741

原创 C#异常处理

catch(FileNotFoundException e)块里的语句才会被执行,如果是其它异常,则不会被执行,像上面那个例子,如果让test.txt文件存在,但把里面的内容改为“a12345”的话。其实我一直对这个异常机制不怎么重视,也是我不懂吧,有些想不明白,程序运行期间搞出个异常干什么,好像没什么作用,就给出个提示而已,在学C++的时候,我是这么想的。当然我知道它的存在就是有它的作用的。这个例子是正常的,不会发异常,接下来我来删除掉test.txt,再运行上面的例子就会产生异常,程序也会非正常结束。

2024-01-13 10:10:20 311

原创 C#网络编程(二)

AcceptTcpClient和BeginAcceptTcpClient的使命都是一样的,获得一个客户端连接,如果有一个客户端连接了,那么这个方法也就结束了。就像同步的一样,一个AcceptTcpClient对应着一个客户端,如果想连接第二个客户端,就得再次调用AcceptTcpClient。如果用异常处理的话,可以规定客户端按自己方式来处理,比如服务端没有开启的话,给用户一个选择,是否重新连接,或者做其它的事,这样也不致于让程序就结束了。上面的例子是在理想的状态下,先开启服务端,然后运行客户端。

2024-01-13 10:07:59 791

原创 C#多线程编程

是使线程休眠的方法,如果它的参数为System.Threading.Timeout.Infinite将会使线程无限期的休眠下去,直到其它线程调用Interrupt方法,比如在主函数中调用。为什么会有这个限制,看一下Monitor.Wait它的作用就知道了,Wait使当前线程放弃对象锁的拥有权,相当于临时解锁了(Monitor.Exit)。Monitor.Enter锁定一个对象,当对象被锁定后,别的线程,再调用Monitor.Enter锁定同样的对象,就会被阻塞,因为对象已经被锁定了。方法使另一个线程暂停。

2024-01-12 20:24:20 850

原创 C#网络编程(一)

服务端开始监听后,就可以调用 AcceptTcpClient方法来等待一个客户端连接了,这个方法返回一个TcpClient类对象(也就是连接上的客户端),这个对象记录着客户端的一些属性,比如客户端的IP地址,绑定的端口号。localhost也是本地IP地址的意思,这里填127.0.0.1也可以,当然,打个比方,如果服务端的IP地址是202.54.68.8,那么这里就得填。另外这里我说一下ASCII(单字节)和Unicode(双字节)的问题,在C#里默认的都是以双字符来存储字符串的,如String类型。

2024-01-12 20:21:36 929

原创 VC MFC树视图(CTreeCtrl)控件

首先往对话框添加一个树视图控件,设置样式为有线条,有按钮,根部的线,并为其关联变量m_TreeCtrl,接着往对话框添加一个变量CImageList m_ImageList;关于上面InsertItem函数参数解释,第一个参数是项文本内容,第二个参数是项正常显示时的图标,第三个参数是项被选中时显示的图标,首先得定义一个函数,这个函数遍历所有结点,每获取得一个结点,就用GetCheck函数判断是否被核记,核记了,就获取文本。m_TreeCtrl.InsertItem("小明",1,1,hFriends);

2024-01-12 20:19:55 899

原创 VC MFC列表视图(CListCtrl)控件

过程跟设置菜单栏项高及字体大小一样,处理WM_MEASUREITEM和WM_DRAWITEM消息,不过是处理对话框里这两个消息,前面说过了,子窗口是接不到这两个消息的,所以不要给从CListCtrl派生下来的类添加这两个消息处理函数,处理父窗口的消息就行了,如果要子窗口接收到这两个消息,需要消息反射,这里就直接处理父窗口的消息了,关于用消息反射的方法将在后面介绍。m_ListCtrl.InsertColumn(1,"买入价格:元",LVCFMT_LEFT,100);

2024-01-12 20:19:02 774

原创 PHP从零实现区块链(网页版三)数据持久化与CLI

因为下面的例子用到了Cache::put之类的方法,往缓存文件写入数据,这个是在laravel框架下使用的,所以我们得先安装laraver框架。然后进行更改,将app.php里的代码,写在appcontroller.php里的app函数中,app.php就弃用了。直接把我们的例子复制过来,就是之前app.php,block.php blockchain等几个文件。OK,正常工作(添加路由你们要注意一下自己的laravel版本,不同的版本方法不一样)。,用来转到我们的php程序。OK,运行正常,成功转移。

2024-01-11 22:32:40 496

原创 C#数据库编程

连接数据库的步骤都是一样的,只不过是用SqlDataAdapter代替了SqlCommand,也可以说是SqlDataAdapter包含了SqlCommand。上面是通过sqlReader[i](索引器)的方式获取具体数据的,还可以用GetString函数,如获取当前行第二列的数据就是。这一次执行SQL语句用的是ExecuteReader函数,这个函数返回一个SqlDataReader 类对象,这个对象就记录着所获取的表数据了。它的别名有:"Address","Addr","Serve"。

2024-01-11 19:38:30 877

原创 C#窗口编程(五)

然后给ToolStripMenuItem类里的Text赋值,设置这个菜单项的文本,然后调用里面的DropDownItems.Add方法,这个Add函数跟Items.Add是一样的,也就是说如果子项还是下级菜单的话,添加的方法也是一样,再创建一个ToolStripMenuItem。ToolStrip.Items.Add可以添加项,这个Add方法跟菜单栏Add的方法是一样的(包括返回值是同一种类型的),所以给工具栏项添加,事件,图像什么的我就不说了。包括设置图像,添加事件处理,都是一样的。

2024-01-11 19:36:57 913

php-blockchain-web源码

https://blog.csdn.net/d3582077/category_12546751.html 例子的源码

2024-01-30

VC API常用函数简单例子大全(1至89)

VC 注册表 INI文件 屏幕截图 远程注入 安装钩子,各种各样的函数应有尽用

2011-04-21

vc MFC 大全深入浅出

深入浅出MFC中文版,很经典的,做到了真正的深入浅出

2010-12-18

vc mfc 相关

vc mfc 相关

2010-12-10

空空如也

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

TA关注的人

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