使用curl下载文件并控制流量断点续传和效验文件

分类:C/C++ 评论:No Comments 作者:小A 发布时间:2023-12-20 阅读:828

使用curl库能很好的实现文件下载,而且curl库也能直接支持https(编译的时候带好openssl),下面是具体的实现文件下载的过程:

首页,需要定义一个下载任务的结构:

typedef struct _tagDownTask
{
    char url[1024];
    char filePath[1024];
    unsigned long totalSize;
    unsigned long currentFileSize;
    unsigned long limitSize; //0为不限制
    FILE* pfile;        //文件句柄
    unsigned long fileSize;
    char checkSum[64];  //md5效验码
}DownTask;

阅读剩余部分...

localtime在多线程中的问题

分类:C/C++ 评论:No Comments 作者:小A 发布时间:2023-08-01 阅读:3757

碰到一个奇怪的问题,通过localtime生成本地日期时间打日志,结果日志会出现非北京时间,好奇去查了一个,结果发现此函数是非线程安全函数,原来代码如下:

int32_t utc2datetime(uint32_t utctime, SVC_TIME* out_pTime)
{
	time_t rawtime;
	struct tm * p;
	rawtime = utctime;
	p = localtime(&rawtime);
	out_pTime->unYear = (uint32_t)(1900 + p->tm_year);
	out_pTime->unMonth = (uint16_t)(1 + p->tm_mon);
	out_pTime->unDay = (uint16_t)p->tm_mday;
	out_pTime->unHour = (uint16_t)p->tm_hour;
	out_pTime->unMinute = (uint16_t)p->tm_min;
	out_pTime->unSecond = (uint16_t)p->tm_sec;
	out_pTime->unWeek = (uint16_t)p->tm_wday;
	return 0;
}

localtime,用来获取系统时间,原型在time.h头文件中,定义如下:

struct tm *localtime(const time_t *timep);

阅读剩余部分...

浏览器定位navigator.geolocation.getCurrentPosition

分类:Javascript 评论:No Comments 作者:小A 发布时间:2023-07-13 阅读:1756

浏览器定位是可以使用javascript直接获取当前你的网络所在的位置信息,主要方法为

navigator.geolocation.getCurrentPosition(function(position){});

其中`position`信息中包括以下内容:

经度 : position.coords.longitude

纬度 : position.coords.latitude

精度 : position.coords.accuracy

高程 : position.coords.altitude

高程精度 : position.coords.altitudeAcuracy

方向 : position.coords.heading

速度 : position.coords.speed

时间戳 : position.timestamp

阅读剩余部分...

ThinkPHP6使用中间件过滤来源网址或IP

分类:PHP 评论:No Comments 作者:小A 发布时间:2023-06-21 阅读:2464

使用ThinkPHP6开发接口时会遇到前置过滤或判断,我们可以使用中间件功能。以下是单应用模式示例:

创建中间件

第1种方式,命令行方式:

php think make:middleware Filter

 第2种方式,手动在`app`目录下创建`middleware`文件夹,再创建中间件类:

<?php

namespace app\middleware;

class Filter
{
    public function handle($request, \Closure $next, $name)
    {
        //to do

        return $next($request);
    }
}

阅读剩余部分...

走进地图(5)-矢量瓦片

分类:走进地图 评论:No Comments 作者:小A 发布时间:2023-05-19 阅读:3551

      随着Web技术的不断发展,WebMap的功能和应用也越来越丰富和多样化,地图不再仅仅是2D的显示,更多需要3D的显示效果和交互。这个时候就需要地图数据不能以图片方式出现了。

      上一篇文章中提到了地图的瓦片,一般瓦片都是图片格式,但是在3D Web地图下图片格式就无法更好的显示3D效果,这就出现在矢量瓦片(Vector Tiles)格式。与传统的栅格瓦片(Raster Tiles)相比,矢量瓦片以矢量数据形式存储和传输地理信息,具有许多优势和应用潜力。

矢量瓦片的特点和优势:

  1. 数据灵活性:矢量瓦片存储的是矢量数据,例如点、线、面等地理要素,而不是预先渲染的像素图像。这意味着矢量瓦片可以根据需要进行动态样式化、交互和分析,提供更灵活的地图呈现方式。
  2. 高清晰度和可伸缩性:矢量瓦片具有无限的分辨率,可以实现高清晰度的地图显示。无论是在高分辨率屏幕上还是缩放到细节层级,矢量瓦片都能提供清晰、锐利的地图效果。
  3. 网络传输效率:相比栅格瓦片,矢量瓦片的数据量更小,因为它们只存储地理要素的几何信息和属性,而不是像素图像。这使得矢量瓦片在网络传输中具有更高的效率和更快的加载速度。
  4. 动态样式化:使用矢量瓦片,开发者可以通过动态样式表对地图进行实时的样式化。这意味着可以根据数据属性、用户交互或其他条件来改变地图的样式,实现个性化的地图显示。
  5. 数据分析和查询:由于矢量瓦片存储的是原始地理数据,可以直接在客户端进行数据查询和分析操作。这为开发者提供了更多的空间分析和地理处理的能力。

阅读剩余部分...