【推荐】BREW中 - 显示和图像

a. BREW 支持哪些图像格式?
适用版本: 1.0, 1.1, 2.0
BREW 支持颜色深度达到运行设备上提供的值的任何 BMP 文件。 BREW 目前尚不支持 GIF 和 JPEG 图像。 有些设备可以支持 GIF 和 JPEG 图像,请参阅设备数据表来查看 OEM 是否提供了支持以上格式或其它格式图像的扩展。 BREW SDK® 1.1 以上版本都支持 PNG 格式和 BREW Compressed Image (BCI) 格式。 SDK 2.0 以上版本都支持 IDIB。 使用 IDIB 将免除您调用 CONVERTBMP 的工作,从而提高屏幕更新速度。 BREW SDK® 2.1 以上版本将支持 WBMP 格式。

在 BREW SDK® 1.0 中,模拟器只能模拟 1 位、4 位和 8 位颜色深度的 BMP。 SDK 1.1 增加了对 2 位颜色深度 BMP 的模拟器支持;2.0 SDK 增加了对 16 位颜色深度 BMP 图像的模拟器支持。

b. 如何生成 2 位图像?
适用版本: 1.0, 1.1, 2.0
2.0 SDK 中包含的 2 Bit Tool可以进行 2 位位图和 4 位位图之间的转换。 要构建采用灰度显示的手持设备使用的 2 位位图,可以使用 MS Paint 从调色板中选择白色、黑色、淡灰和深灰条目(通常为第一行和第二行的前两种颜色)来构建位图。 并将其保存为 16 色图像,然后使用 2Bit Tool 将其转换为 2 位位图。

c. 彩色和单色电话上的透明色是什么?
适用版本: 1.0, 1.1, 2.0
BREW 1.x 中紫色为彩色设备的透明色,白色是单色和 4 级灰度设备上的透明色。

BREW 2.0 以上版本中,可以通过 IBITMAP_SetTransparencyColor 更改透明色。 CONVERTBMP 可以将透明色初始化为兼容旧版本 BREW 的透明色(即紫色和白色)。 但通过其它方式获得的位图图像则没有固定的透明色。

d. 如何使用内存中的位图创建 IIMAGE 对象?
适用版本: 1.0, 1.1, 2.0
使用 ISHELL 接口 ISHELL_LoadResImage(用于资源)和 ISHELL_LoadImage(用于文件)完成作为资源或从文件中加载位图。 但是,有时可能必须从内存中初始化 IIMAGE 对象 - 例如显示前修改位图的内容时,或者不先将数据缓存到文件而通过套接字连接检索图像时。

在必须用内存中的位图初始化 IIMAGE 对象的情况下,应该使用 IIMAGE 接口 IIMAGE_SetStream。 下面的代码示例说明了这种技术。它通过调用 ISHELL_GetHandler 获得 BMP 图像处理程序的 Class ID,然后创建一个 MemAStream 对象并将其用作内存中位图的流。 注意:本例中的图像格式是 Windows BMP,“pMe->pBmpData”指向 Windows 文件格式 BMP 的开始 (BITMAPFILEHEADER)。

代码示例:
AEECLSID cls;
IImage *pIImage = NULL;
IMemAStream *pMemStream = NULL;

// 决定 BMP处理程序函数的类 ID,然后
// 创建此 BREW 类的实例
cls = ISHELL_GetHandler(pMe->a.m_pIShell, HTYPE_VIEWER, "image/bmp");

if (cls) {
ISHELL_CreateInstance(pMe->a.m_pIShell, cls, (void **)(&pIImage));
}

if (pMe->pBmpData) {
ISHELL_CreateInstance(pMe->a.m_pIShell, AEECLSID_MEMASTREAM, (void **)(&pMemStream));
if (pMemStream) {
//创建 MEMSTREAM 后将其作为内存中的位图的流。
IMEMASTREAM_Set(pMemStream, pMe->pBmpData, sizeof(pMe->pBmpData), 0, 0);
IIMAGE_SetStream(pIImage, (IAStream*)pMemStream);

// 现在以正常方式使用您的 IIMAGE 方法
IIMAGE_Draw(pIImage, ..., ...);
IDISPLAY_UpdateEx(pMe->a.m_pIDisplay, TRUE);
}
}

e. 如何从文件或资源文件加载图像?
通过使用 ISHELL 接口 ISHELL_LoadResImage(用于资源)或 ISHELL_LoadImage(用于文件),后跟 IIMAGE_Draw,很容易从文件或资源中加载和绘制图像。本文演示了使用 ISHELL 和 IIMAGE 接口加载和显示位图所需的基本步骤。

从资源中显示图像的步骤:
1. 创建位图。
2. 将其添加到资源编辑器中。
3. 在资源编辑器中编译 .bar 和 .h 文件。
4. 将 .h 文件添加到您的项目中。
5. 使用 ISHELL_LoadResImage 加载图像。
6. 如果加载操作返回非空值,这说明加载操作已启动,指向图像的指针已返
    回。这并不表示图像加载已完成。要了解图像操作的完成时间,您需要使
    用 IIMAGE_Notify() 回调。
7. 图像加载完成时,就会触发回调。
8. 在回调过程中,使用 IIMAGE_Draw() 显示图像。
9. 使用 IDISPLAY_Update() 更新屏幕。
10. 释放 IImage 指针。

从文件中显示图像的步骤:
1. 使用 ISHELL_LoadImage 从文件中加载图像。
2. 如果加载操作返回非空值,这说明加载操作已启动,指向图像的指针已返
    回。这并不表示图像加载已完成。要了解图像操作的完成时间,您需要使
    用 IIMAGE_Notify() 回调。
3. 图像加载完成时,就会触发回调。
4. 在回调过程中,使用 IIMAGE_Draw() 显示图像。
5. 使用 IDISPLAY_Update() 更新屏幕。
6. 释放 IImage 指针。

代码示例:
typedef struct mystruct
{
    AEEApplet a;
    IImage *m_pImage;
    ......
}MyData;

enum ResType
{
    LOAD_RES_FROM_FILE,
    LOAD_RES_FROM_RES
};

#define MY_RES_FILE "myres.bar"
#define MY_IMAGE_FILE "myimg.bmp"

// Load and display a bitmap from a resource and file
int MyDisplayResImage(MyData *pMe, ResType rType)
{
    AEEDeviceInfo dm;

    if (!pMe)
    Return EFAILED;

    if (rType == LOAD_RES_FROM_RES)
    {
        // Load image from Resources
        pMe->m_pImage = ISHELL_LoadResImage (
        pMe->a.m_pIShell,
        MY_RES_FILE,
        IDB_MY_COLOR_BITMAP);
    }
    else // LOAD_RES_FROM_FILE
    {
        pMe->m_pImage = ISHELL_LoadImage(pMe->a.m_pIShell,
        MY_IMAGE_FILE);
    }

    if (pMe->m_pImage) {
        IIMAGE_Notify(pMe->m_pImage, DrawRoutineCB,
        (void *)pMe);
    }
    else
    {
        return EFAILED; // Failed to load image
    }
    return SUCCESS;
}

// Notify Callback
void DrawRoutineCB(void *pUser, IImage *pImage,
AEEImageInfo *pi, int nErr)
{
    MyData *pMe = (MyData *)pUser;

    if( !pMe || !(pMe->m_pImage)
    return; // image pointer is NULL

    if (nErr == AEE_SUCCESS)
    {
        // Draw image at 0,0 coordinates
        IIMAGE_Draw(pMe->m_pImage, 0, 0);

        // Update the screen
        IDISPLAY_Update(pMe->a.m_pIDisplay);

        // Free the IIMAGE object
        IIMAGE_Release(pMe->m_pImage );
    }
}

注意:回调(通过 IIMAGE_Notify() 进行)之前,不得释放 IImage 接口。在应用程序需要在回调文件之前释放接口的情况下,建议改设会表明应该在回调(上例中的 DrawRoutineCB)中释放接口的布尔标记。

f. 我用 ISHELL_LoadResImage() 加载图像并调用 IIMAGE_Draw() 后为什么看不到屏幕图像?
加载图像为异步操作。ISHELL_ LoadResImage() 操作返回时,图像未完全加载,可能无法成功绘制。

返回图像加载的非空值时,说明加载操作已启动,指向图像的指针已返回。这并不表示加载操作已完成。要了解加载操作的完成时间,用户应使用 IIMAGE_Notify()回调。该回调会在图像成功加载并准备绘制到屏幕上时触发。此时,用户应使用 IIMAGE_Draw() 在屏幕上显示图像。

从文件或资源正确加载和绘制图像的示例如下:

从资源中显示图像的步骤:
1. 创建位图。
2. 将其添加到资源编辑器中。
3. 在资源编辑器中编译 .bar 和 .h 文件。
4. 将 .h 文件添加到您的项目中。
5. 使用 ISHELL_LoadResImage 加载图像。
6. 如果加载操作返回非空值,这说明加载操作已启动,指向图像的指针已返
    回。这并不表示图像加载已完成。要了解图像操作的完成时间,您需要使
    用 IIMAGE_Notify() 回调。
7. 图像加载完成时,就会触发回调。
8. 在回调过程中,使用 IIMAGE_ Draw() 显示图像。
9. 使用 IDISPLAY_Update() 更新屏幕。
10. 释放 IImage 指针。

从文件中显示图像的步骤:
1. 使用 ISHELL_LoadImage 从文件中加载图像。
2. 如果加载操作返回非空值,这说明加载操作已启动,指向图像的指针已返
    回。这并不表示图像加载已完成。要了解图像操作的完成时间,您需要使
    用 IIMAGE_Notify() 回调。
3. 图像加载完成时,就会触发回调。
4. 在回调过程中,使用 IIMAGE_ Draw() 显示图像。
5. 使用 IDISPLAY_Update() 更新屏幕。
6. 释放 IImage 指针。

代码示例:
typedef struct mystruct
{
    AEEApplet a;
    IImage *m_pImage;
    ......
}MyData;

enum ResType
{
    LOAD_RES_FROM_FILE,
    LOAD_RES_FROM_RES
};

#define MY_RES_FILE "myres.bar"
#define MY_IMAGE_FILE "myimg.bmp"

// Load and display a bitmap from a resource and file
int MyDisplayResImage(MyData *pMe, ResType rType)
{
    AEEDeviceInfo dm;

    if (!pMe)
    Return EFAILED;

    if (rType == LOAD_RES_FROM_RES)
    {
        // Load image from Resources
        pMe->m_pImage = ISHELL_LoadResImage (
        pMe->a.m_pIShell,
        MY_RES_FILE,
        IDB_MY_COLOR_BITMAP);
    }
    else // LOAD_RES_FROM_FILE
    {
        pMe->m_pImage = ISHELL_LoadImage(pMe->a.m_pIShell,
        MY_IMAGE_FILE);
    }

    if (pMe->m_pImage) {
        IIMAGE_Notify(pMe->m_pImage, DrawRoutineCB,
            (void *)pMe);
    }
    else
    {
        return EFAILED; // Failed to load image
    }
    return SUCCESS;
}

// Notify Callback
void DrawRoutineCB(void *pUser, IImage *pImage,
AEEImageInfo *pi, int nErr)
{
    MyData *pMe = (MyData *)pUser;

    if( !pMe || !(pMe->m_pImage)
    return; // image pointer is NULL

    if (nErr == AEE_SUCCESS)
    {
        // Draw image at 0,0 coordinates
        IIMAGE_Draw(pMe->m_pImage, 0, 0);

        // Update the screen
        IDISPLAY_Update(pMe->a.m_pIDisplay);

        // Free the IIMAGE object
        IIMAGE_Release(pMe->m_pImage );
    }
}

注意:回调(通过 IIMAGE_Notify() 进行)之前,不得释放 IImage 接口。在应用程序需要在回调文件之前释放接口的情况下,建议改设会表明应该在回调(上例中的 DrawRoutineCB)中释放接口的布尔标记。

g. BREW 是否支持动画?
适用版本: 1.0, 1.1, 2.0
BREW SDK® 版本 1.0 支持动画 BMP。 这是通过并列放置所有帧并使用带 IPARM-CXFRAME 标记的 IIMAGE_SetParm 指定每帧的宽度实现的。 请参阅 Examples 目录中的 IIMAGE 示例。

BREW SDK® 版本 1.1 增加了对 BREW Compressed Image (BCI) 动画的支持。 BCI 文件包含一个或多个压缩的小图像,每个图像都有一个以毫秒指定的持续时间。 持续时间表示每一幅图像被该系列下一幅图像取代之前可显示的时间。 您可以使用 BREW SDK® 版本 1.1 随附的 BCI 编辑工具来创建 BCI 文件。 有关详细信息,请参阅 SDK 随附的“使用 BREW Compressed Image 编辑工具”文档。

BREW 当前不支持 PNG 和 MNG 格式的动画。

h. 为什么一段时间后所有动画都会变慢?
适用版本: 1.0, 1.1, 2.0
大多数 OEM 都使用了睡眠计时器。 它控制设备在何时进入睡眠状态。 如果在 OEM 指定的时间段内无按键活动,手持设备将进入睡眠状态。 设备处于睡眠状态时帧速率将大大降低。 按下任意键将唤醒设备并恢复到以前的帧速率。

在 BREW 2.0 中,应用程序可选择是否要进入睡眠状态。 如果在应用程序收到 EVT_APP_NO_SLEEP 事件时返回 TRUE,应用程序将不会进入睡眠状态。 例如:

case EVT_APP_NO_SLEEP:
//不要睡眠
return TRUE;

i. 是否可以获取/操纵设备的调色板信息?
适用版本: 1.0, 1.1, 2.0
不可以。调色板由生产商进行硬编码,随设备不同而有异。

j. 是否可以直接修改显示缓冲区?
适用版本: 1.0, 1.1, 2.0
BREW 1.x 无法访问这些缓冲区,而且显示数据使用生产商的专有格式存储。
从 BREW 2.0 开始,如果位图的像素布局兼容 BREW 设备无关位图规格,则这些位图会支持 IDIB 接口。 也可以通过 IDIB 结构的 pBmp 成员访问像素缓冲区。 要确定位图是否支持 IDIB 以及要获取 IDIB 指针,可以使用 Class ID 为 AEECLSID_DIB 的 IBITMAP_QueryInterface 函数。

k. 是否可以进行后台渲染?
适用版本: 1.0, 1.1, 2.0
可以使用 IDISPLAY_Set/GetDestination 或 IGRAPHICS_Set/GetDestination 进行后台渲染。 BREW 1.2 以上版本将提供这些函数。

不提供 1.2 BREW SDK®。 要使用 BREW 1.2 功能,可以使用 2.0 SDK 开发面向 BREW 1.2 的应用程序。 您应该注意不要使用 1.2 版本中不支持的 2.0 版本的功能。 此功能列表编写在 FAQ 文档目标设备安装了 BREW SDK® 1.2,但我找不到 BREW 1.2 SDK。 我应该使用什么 SDK 开发 BREW 应用程序?中。

虽然文档中含有 IGRAPHICS_EnableDoubleBuffer API,但它不受任何 BREW 版本的支持。

l. 如何绘制特定颜色的线段?
适用版本: 1.0, 1.1, 2.0
IDISPLAY_DrawHLine() 和 IDISPLAY_DrawVLine() 始终绘制黑色线段。 因此,将 CLR_USER_LINE 设置为所需颜色,然后调用 IDISPLAY_DrawHLine() 或 IDISPLAY_DrawVLine() 会变无效。

这两个 IDISPLAY 宏的定义如下。 要绘制除黑色外的颜色的线段,请使用宏定义中所含的代码并更改为所需填充颜色。

#define IDISPLAY_DrawHLine(p,x,y,len) /
{AEERect rc;SETAEERECT(&rc,(x),(y),(len),1); IDISPLAY_FillRect((p),&rc, RGB_BLACK);}

#define IDISPLAY_DrawVLine(p,x,y,len) /
{AEERect rc;SETAEERECT(&rc,(x),(y),1,(len)); IDISPLAY_FillRect((p),&rc, RGB_BLACK);}

m. 如何确定在电话上显示应用程序名的字符限制?
适用版本: 1.0, 1.1, 2.0
不同的电话具有不同的显示特性,因此对此问题没有唯一答案。 您可以通过比较应用程序名的宽度和显示宽度来确定应用程序名是否适合电话显示。

使用 IDISPLAY_MeasureText() 确定应用程序名字符串的像素宽度。 使用 ISHELL_GetDeviceInfo() 确定屏幕的像素宽度。

n. 如何将图像保存到电话的墙纸目录?
适用版本: 1.0, 1.1, 2.0
虽然当前版本的 SDK 不包含墙纸 API,但有些 OEM 通过共享内容目录来支持将图像保存到本地 UI 的墙纸目录中。

您可以使用以下代码片断来创建/下载图像到共享目录:

// 请注意,为了使这个代码起作用,应用程序必须
//在 MIF 文件中有"Access to Shared Directory(使用共享目录)" 和 "File(文件)" 的权限。
STRCAT( filename, AEE_SHARED_DIR );
STRCAT( filename, "/" );
STRCAT( filename, "test.gif" );
IFILEMGR_OpenFile( m_pIFileMgr, filename, _OFM_CREATE );

AEE_SHARED_DIR 由 OEM 定义并映射到各设备的特定共享目录路径。 如果 OEM 支持将图像保存至墙纸目录,则保存在 AEE_SHARED_DIR 中的图像会显示在本地 UI 的墙纸目录中。 要查看特定手持设备是否支持通过共享目录保存墙纸图像及支持的图像类型,请参阅手持设备的设备数据表。

目前还没有 BREW API 可以用于将特定图像设为手持设备墙纸。 这必须要通过本地 UI 才能完成。

o. 使用 IDISPLAY_BitBlt() 绘制位图时为什么会收到内存错误,如“memheap.c 0696”?
适用版本: 1.0, 1.1, 2.0
请确保释放 CONVERTBMP 分配的内存。 检查 CONVERTBMP 的最后一个布尔型参数。 如果为 True,则重新分配已完成,必须使用 SYSFREE 来释放内存。

例如:
pBmp = CONVERTBMP (pDataBytes, &imageInfo, &bVal);
IDISPLAY_BitBlt (pIDisplay, xDest, yDest, cxDest, cyDest, pBmp,
xSrc, ySrc, dwRopCode);

IDISPLAY_Update (pIDisplay);

if(bVal) //仅在完成重新分配时释放
SYSFREE (pBmp);

请参阅 API 参考文档中的 CONVERTBMP 助手函数说明。 若需示例代码,可以参阅 IDisplay 用法示例。

p. 为什么 Emulator 上显示的颜色比预期少?
适用版本: 1.0, 1.1, 2.0
如果您在 2.0 模拟器上显示 16 位图像时,图像的分辨率较低,请使用 Device Configurator 检查设备属性并将颜色深度设置为 16 位。 如果图像分辨率仍然很差(相对 8 位或 16 位而言),请检查您是否使用 IIMAGE_SetParm() 函数为要显示的图像设置了不正确的参数。

q. 为什么有些 PNG 图像不能正确显示?
适用版本: 1.0, 1.1, 2.0
在 BREW 中使用 PNG 图像需要注意两个问题。
1) 版本 1.0、1.1 和 2.0 不支持 Alpha 通道,但 3.0 SDK 版本应该会支持。
2) BREW 只会选择文件中的第一种透明色对 PNG 进行透明处理。 所有其它颜色都会显示。 请检查文件以确保您创建文件时只使用了一种透明颜色。

r. 为什么创建 PNG 图像使用的内存大小远远大于图像的实际大小?
BREW 应用程序使用 ISHELL_LoadResData 加载 PNG 图像时,需要大量的额外空间来解码图像。 例如,要加载 217 字节的 PNG 图像需要 45,177 字节空间

转载于:https://www.cnblogs.com/secbook/archive/2006/03/24/2655536.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/300457.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

我背着女朋友,用 Python 偷偷抓取了她的行踪

全世界只有3.14 %的人关注了青少年数学之旅1目 标 场 景有时候女朋友一个人在外面玩耍,问她在哪个地方,就是不告诉我。但是,你又很想知道女朋友的「位置」,这该如何是好?其实你可以这样套路女朋友,假装自己…

ASP.NET Core 中的规约模式(Specification Pattern )——增强泛型仓储模式

原文链接:https://codewithmukesh.com/blog/specification-pattern-in-aspnet-core/在本文中,我们将讨论在 ASP.NET Core 应用程序中实现规约模式以及它如何增强现有的泛型仓储模式。我们将从头开始构建具有泛型仓储模式、Entity Framework Core的 ASP.N…

面向过程的ado建造者模式

{*******************************************************}{ }{ ADO数据工厂 }{ }{ 版权所有 (C) 2008 咏…

Javascript:this用法

#Javascript:this用法整理pingan 于 星期三, 18/12/2013 - 22:32 提交 常用Javascript的人都知道,[this这个关键字在一个函式内究竟指向谁]的这个问题很令人头大,本人在这裡整理了一下Javascript中this的指向的五种不同…

动画演示男性结扎手术 | 今日趣图

全世界只有3.14 % 的人关注了青少年数学之旅流鼻涕了怎么办?医学教育徐琦招聘程序员啦知识萌死大丧失;图熊本科技把下列句子补充完整图三好学生李宇幼年的大象喝水并不会使用鼻子而是趴在水里直接用嘴大喝一顿它们9个月之后才会懂得用鼻子喝水科普斯基请…

MYSQL 只能回环口链接_loopback回环口详解

在配置OSPF路由协议的时候配置回环(loopback)接口是很重要的1件事.Cisco建议你配置OSPF的时候顺便配置回环接口.所谓回环接口,是逻辑接口而非物理接口,即不是你触摸的到的router上的真正的接口.作用是作为诊断OSPF而用.如果router的某一个接口由于故障down掉而不可用了,此时你怎…

AspNetCoreMassTransit Courier实现分布式事务

在之前的一篇博文中,CAP框架可以方便我们实现非实时、异步场景下的最终一致性,而有些用例总是无法避免的需要在实时、同步场景下进行,可以借助Saga事务来解决这一困扰。在一些博文和仓库中也搜寻到了.Net下实现Saga模式的解决方案MassTransit…

可能会紧急用到的Linux命令

查看当前网络连接数: netstat -na|grep ESTABLISHED|awk {print $5}|awk -F: {print $1}|sort|uniq -c|sort -r -n删除掉不以java和xml结尾7天没有使用的文件 : find . ! -name *.java ! -name *.xml -atime 7 -exec rm {} \;转载于:https://blog.51cto.com/guihai…

设置列表字段为主键

转贴:Sample event handler to set a field as a pr imary key (enforce no duplicates) Got this as a request from a reader- how to prevent users from adding items with same titles as ones that already exist in the list. Codeusing System;using System.Collectio…

被学校辞退、拒绝FB后:语音识别大牛Povey确认兼职北京初创公司,称主业还选中国...

全世界只有3.14 % 的人关注了青少年数学之旅由于5月的学生抗议事件,语音识别领域著名学者、原约翰霍普金斯大学教授Daniel Povey被学校辞退。随后,Daniel Povey准备进入Facebook从事语音识别系统的开发,但是由于Facebook要对其进行长达6周的审…

也谈子网划分和子网通信

子网划分和子网通信在小型网络中应用不多,但随着公司规模的扩大,这样的问题就会提上网管的工作计划。资料略加整理,希望对各位有帮助。也谈子网划分和子网通信1.网络IP地址和子网掩码的分类:A类:IP: 0.0.0.0 &#xff…

java io流学设置编码_Java学习日志(21-2-IO流-基本数据类型与字节数组对象与、编码解码)...

操作基本数据类型的流对象DataStream/*可以用于操作基本数据类型数据的流对象*/import java.io.*;class DataStreamDemo{public static void main(String[] args)throws IOException{// writeData();// readData();// writeUTFDemo();// OutputStreamWriter oswnew OutputStrea…

dotnet中的counters说明(二)

上篇说了System.Runtime,它负责应用运行的环境资源的收集,这篇要继续说AspNetCore的Hosting,Http.Connections和Server.Kestrel三个计数器。同时,下面指标各项()里的项目是--counters 参数[]里的项,用逗号分隔多项指标。Microsoft…

Asp组件中级入门与精通系列之五

我们学习来看一下Response对象。其实我们前面的教程中一直都在使用这个对象的Write方法。 这里我们用Response对象设置cookie。 ? 打开vb6,新建Activex Dll工程。工程名修改为fCom,类名修改为fZ5 引用“Microsoft Active Server Pages Object”对象库。 创建两个组件事件&…

有这些好习惯,可以让你悄悄变优秀

全世界只有3.14 %的人关注了青少年数学之旅这是一个普遍无趣的时代,很多人看似忙到起飞内在却空虚迷茫。今天我们为你诚意推荐几个公众号它们会成为你生活的一剂调味料,让你做一个学识丰富、灵魂有趣的人。快来关注,开启精彩的生活吧&#xf…

java设置access-allow_Java Web如何设置多个Access-Control-Allow-Origin

有没有办法让Access-Control-Allow-Origin header允许设置multiple cross-domains呢?如果设置response.addHeader("Access-Control-Allow-Origin","*");感觉这个接口太开放了,不太安全。 我想只设置自己指定的若干个域名或者端口可以…

paip.提升用户体验--提升java的热部署热更新能力

paip.提升用户体验--提升java的热部署热更新能力 想让java做到php那么好的热部署能力 "fix online"/在线修复吗??直接在服务器上修改源码生效,无需重启应用。。作者Attilax 艾龙, EMAIL:1466519819qq.com来源&#x…

夏利车电动窗功能设定

夏利车电动窗功能设定 我车的前有门电动车窗坏了,所以去汽配城购买了电动升降器,准备自己进行更换,修车的要我100元RMB,自己购买配件花了我65省了35元呵呵, 但是自己花了很长时间更换完成之后发现车窗怎么也关不严&…

微软 MS Learn 上线 Blazor 入门教程

微软官方学习网站 MS Learn 上线了 Blazor 入门教程模块,希望通过这个课程,让开发人员了解如何设置开发环境,以及如何使用 Blazor、Visual Studio Code 和 C# 生成你的首个 Web 应用。Build a web app with Blazor - Learndocs.microsoft.com…

Type Casting

Type Casting C : Documents : C Language Tutorial : Type Casting Search: userpass[register] javascript and cookies required C Language TutorialIntroduction?Instructions for useBasics of C?Structure of a program?Variables. Data Types.?Constants?Oper…