StringWriter类的getBuffer()方法 (StringWriter Class getBuffer() method)
@公众号:小驰笔记出品
CString 是一种很有用的数据类型。它们很大程度上简化了MFC中的许多操作,使得MFC在做字符串操作的时候方便了很多。不管怎样,使用CString有很多特殊的技巧,特别是对于纯C背景下走出来的程序员来说有点难以学习。
访问目录文件夹下的文件是经常需要的操作,C/C++和win32接口都没有提供直接调用的函数。在这里总结了几个经常用到的函数,通过MFC的CFileFind函数递归遍历实现,包括以下几个功能函数:
工作中需要将大量文件从一台服务器传输至另一台服务器,最开始是直接使用基础的TCP编程搞定的。但后来业务上要求两台服务器间只能走HTTP协议,而且还要保证传输过去的文件的完整性。想了下,最后基于WebSocket协议完成了该功能。 思路 服务器端侦听某端口,接受WebSocket请求,后面可用nginx作反向代理,外部看到的将是80端口 客户端连接服务器的WebSocket地址,连接成功后,首先传送一个NEW_FILE的数据包,里面带上要传输的文件名 服务器端收到NEW_FILE包后,解析出文件名,并创建目标
说起人脸识别,相信大家都不会感到陌生,在我们平时的工作生活中,人脸打卡、刷脸支付等等已经是应用的非常广泛了,人脸识别也给我们的生活带来了极大的便利。
不过这篇文件还是介绍RenderScript 的使用,RenderScript 相对比较简单一些。
通过CameraX的Analyzer方法得到的图片对象是ImageProxy对象,而OpenCV的处理对象必须是Mat。
对于刚做windows下VC的开发同学,类型转换应该是一个令其很苦恼的问题。我刚写工作的时候,也为这类问题不停的在网上搜索转换方法。最近工作中遇到一个“神奇”的bug(一般“神奇”的问题往往是低级错误导致的),最后跟踪发现还是类型转换问题。(转载请指明出处)
在Google 推出Android 5.0的时候, Android Camera API 版本升级到了API2(android.hardware.camera2), 之前使用的API1(android.hardware.camera)就被标为 Deprecated 了。
2、string转 CString CString.format(”%s”, string.c_str());
关于fwrite 与 fread 的用法就不多说了。网上一大堆。这里说写vector,遇到的问题
大家好,又见面了,我是你们的朋友全栈君。HWND SearchWindow(CString strWinName) { //获得桌面窗口 CWnd* pDesktopWnd = CWnd::GetDesktopWindow(); //获得第一个子窗口 CWnd* pWnd = pDesktopWnd->GetWindow(GW_CHILD); CString strClassName = _T(“”); CString strWindowText= _T(“”); strWinName.MakeUpper(); while (pWnd != NULL) { //获得窗口标题 ::GetWindowText(pWnd->GetSafeHwnd(), strWindowText.GetBuffer(256), 256); strWindowText.ReleaseBuffer(); strWindowText.MakeUpper(); if (strWindowText.Find(strWinName) != -1) { //获得窗口类名 ::GetClassName(pWnd->GetSafeHwnd(), strClassName.GetBuffer(256), 256); strClassName.ReleaseBuffer(); return pWnd->GetSafeHwnd(); } //继续下一个子窗口 pWnd = pWnd->GetWindow(GW_HWNDNEXT); } return 0; }
string 和 string.h (和cstring等价)头文件的区别 为什么下面这段代码 #include <string.h> void main() { string aaa
智能合约是一种计算机协议,用一段计算机指令实现自我验证、自动执行,并产生可以验证的证据来证明合约操作的有效性。
Android Studio仍然在疯狂更新中,隔一段时间打开Android Studio,就会提示有新版本,对此我已经见怪不怪。一般而言,我会顺手点击一下升级。今天我又点击了升级,粗略看了一下新版本4.1的特性说明,其中有一项是:使用TensorFlow Lite模型。出于对机器学习的兴趣,于是就研究了一番这个新特性。
文本编辑器——记事本类型的应用,可以打开、编辑、保存文本文档。可以增加单词高亮和其它的一些特性。 效果图: //CGEditorDlg成员 public: CString m_filename;//
序列化与反序列化一直是分布式编程中无法绕开的话题。PowerJob 作为一个完全意义上的分布式系统,自然少不了节点通讯时不可避免的序列化问题。由于 PowerJob 定位是中间件,出于对性能的追求,在序列化上自然也是花费了不少时间去雕琢。以下是整个过程中的一些经验与分享,希望对大家有所帮助。
SHFileOperation操作比较方便,因为源文件名支持多个文件,以/0间隔,所以末尾要用两个零结束。如果用CString保存源文件名,在XP上操作没问题,在WINCE下,用EVC,重命名文件夹可以,但是重命名文件时,就失败,原因就是没有用两个零结束。所以做了下面的封装。
什么是AssetBundle,点击查看 先看一下工具的使用 商用为目的的打包工具 同步读取AssetBundle 创建单例 using System.Collections; using System
提到MemoryStream大家可能都不陌生,在编写代码中或多或少有使用过;比如Json序列化反序列化、导出PDF/Excel/Word、进行图片或者文字处理等场景。但是如果使用它高频、大数据量处理这些数据,就存在一些性能陷阱。
Kryo 本身是多线程不安全的。 捣鼓、尝试了两种处理方式:ThreadLocal、KryoPool。 ---- ThreadLocal public class KryoUtil { final static ThreadLocal<Kryo> kryoLocal = new ThreadLocal<Kryo>() { @Override protected Kryo initialValue() { Kryo kryo = new Kryo(); kryo
我们在做Android平台GB28181设备接入模块的时候,有开发者提到这样的诉求:他们的智能头盔、执法记录仪等设备,采集到的图像,是旋转了90、180甚至270°的,设备本身无法针对图像做翻转或者旋转操作,问我们这种情况下需要如何处理?
*********************************** linux c ***********************************
klog的LogFilter接口定义了Filter、FilterF、FilterS方法用于过滤log;println、printDepth、printWithFileLine会通过filter.Filter(args)来过滤args;printf方法使用filter.FilterF(format, args)返回的format及args进行格式化;infoS及errorS方法会使用filter.FilterS(msg, keysAndValues)返回的msg及keysAndValues进行打印。
VC Windows API应用之GetDesktopWindow ——获得桌面所有窗口句柄的方法
目前腾讯视频云移动直播SDK(LiteAVSDK)只回调摄像机预览画面的纹理数据。如果开发者集成第三方美颜库来实现美颜、滤镜等功能,但第三方库的美颜功能输入数据要求是camera的原始数据(YUV 数据)。开发者想实现该功能,需要采用自定义采集视频数据接口,然后复用 LiteAVSDK 的编码和推流功能。
我们在做Android平台GB28181设备接入模块的时候,遇到这样的场景,比如执法记录仪或智慧工地等场景下,由于GB28181设备接入模块,注册到国标平台后,平时只是心跳保持,或还有实时位置订阅,查看视频的时候,是按需看,而且有时候,网络环境并不是太好,所以,催生了这样一个诉求:部分开发者希望能本地录像的时候,录制高分辨率(比如1920*1080),国标平台侧发起实时视频查看请求的时候,上传低分辨率(如1280*720)数据,有点类似于IPC的主码流和子码流。
1.CString转换到TCHAR*方法 (转自http://cctry.com/viewthread.php?tid=145&page=1) CString str = "test"; TCHAR
在 OpenGL 开发中,我们要渲染一张图片,通常先是得到一张图片对应的 Bitmap ,然后将该 Bitmap 作为纹理上传到 OpenGL 中。在 Android 中有封装好的 GLUtils 类的 texImage2D 方法供我们调用。
QRCoder是一个生成二维码的.Net library。此库体积小,无多余依赖项。使用方便,可以满足正常工作需要。
如果设置klog的skip_headers为true,则其l.skipHeaders为true,则不会格式化并输出header信息。
Image类在API 19中引入,但真正开始发挥作用还是在API 21引入CameraDevice和MediaCodec的增强后。API 21引入了Camera2,deprecated掉了Camera,确立Image作为相机得到的原始帧数据的载体;硬件编解码的MediaCodec类加入了对Image和Image的封装ImageReader的全面支持。可以预见,Image将会用来统一Android内部混乱的中间图片数据(这里中间图片数据指如各式YUV格式数据,在处理过程中产生和销毁)管理。
上一篇文章介绍了 Java NIO 中 Buffer、Channel 和 Selector 的基本操作,主要是一些接口操作,比较简单。 本文将介绍非阻塞 IO 和异步 IO,也就是大家耳熟能详的 NIO 和 AIO。很多初学者可能分不清楚异步和非阻塞的区别,只是在各种场合能听到异步非阻塞这个词。 本文会先介绍并演示阻塞模式,然后引入非阻塞模式来对阻塞模式进行优化,最后再介绍 JDK7 引入的异步 IO,由于网上关于异步 IO 的介绍相对较少,所以这部分内容我会介绍得具体一些。 希望看完本文,读者可以对非阻塞
(点击上方公众号,可快速关注) 来源:JavaDoop , javadoop.com/post/nio-and-aio 转自:ImportNew 上一篇文章介绍了 Java NIO 中 Buffer、Channel 和 Selector 的基本操作,主要是一些接口操作,比较简单。 本文将介绍非阻塞 IO 和异步 IO,也就是大家耳熟能详的 NIO 和 AIO。很多初学者可能分不清楚异步和非阻塞的区别,只是在各种场合能听到异步非阻塞这个词。 本文会先介绍并演示阻塞模式,然后引入非阻塞模式来对阻塞模式进行优化,
大家好,又见面了,我是你们的朋友全栈君。 CFileFind finder; BOOL bWorking = finder.FindFile(szBuf); unsigned short slogtype = 0; while (bWorking) { bWorking = finder.FindNextFile(); CString strfilename = finder.GetFilePath(); CString strtype = “”; int iposs = strfilename.Find(“\\Log_”) + 5; int ipose = strfilename.Find(“_R.txt”); if (iposs < ipose) { strtype = strfilename.Mid(iposs, (ipose-iposs)); slogtype = atoi(strtype.GetBuffer(0));
备注Converts this CString object to an uppercase string.
本系列文章将整理到我在GitHub上的《Java面试指南》仓库,更多精彩内容请到我的仓库里查看
前天偶然看到谷歌开源项目中有一个近乎无人问津的项目Google Preview Image Extractor(PIEX) 。 项目地址: https://github.com/google/piex 官方的描述是这样的: The Preview Image Extractor (PIEX) is designed to find and extract the largest JPEG compressed preview image contained in a RAW file. 也就是说,这个项目
Visual C++.NET涉及到ATL/ATL Server、MFC和托管C++等多种编程方式,不仅功能强大而且应用广泛。在编程中,我们常常会遇到ANSI、Unicode以及BSTR不同编码类 型的字符串转换操作。本文先介绍基本字符串类型,然后说明相关的类,如CComBSTR、_bstr_t、CStringT等,最后讨论它们的转换方法, 其中还包括使用最新ATL7.0的转换类和宏,如CA2CT、CA2TEX等。
前言 在上篇博文中,我们已经讲解了过滤器的基本概念,使用以及简单的Servlet应用了。这篇博文主要讲解过滤器的高级应用。。 编码过滤器 目的:解决全站的乱码问题 开发过滤器 public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException { //将request和response强转成http协议的
如何理解LPCTSTR类型? L表示long指针 这是为了兼容Windows 3.1等16位操作系统遗留下来的,在win32中以及其他的32为操作系统中, long指针和near指针及far修饰符都是为了兼容的作用。没有实际意义。 P表示这是一个指针 C表示是一个常量 T表示在Win32环境中, 有一个_T宏 这个宏用来表示你的字符是否使用UNICODE, 如果你的程序定义了UNICODE或者其他相关的宏,那么这个字符或者字符串将被作为UNICODE字符串,否则就是标准的ANSI字符串。 STR表示这个变量是一个字符串 所以LPCTSTR就表示一个指向常固定地址的可以根据一些宏定义改变语义的字符串。 同样, LPCSTR就只能是一个ANSI字符串,在程序中我们大部分时间要使用带T的类型定义。 LPCTSTR == const TCHAR * CString 和 LPCTSTR 可以说通用。 原因在于CString定义的自动类型转换,没什么奇特的,最简单的C++操作符重载而已。 常量字符串ansi和unicode的区分是由宏_T来决定的。但是用_T("abcd")时, 字符串"abcd"就会根据编译时的是否定一_UNICODE来决定是char* 还是 w_char*。 同样,TCHAR 也是相同目的字符宏。 看看定义就明白了。简单起见,下面只介绍 ansi 的情况,unicode 可以类推。 ansi情况下,LPCTSTR 就是 const char*, 是常量字符串(不能修改的)。 而LPTSTR 就是 char*, 即普通字符串(非常量,可修改的)。 这两种都是基本类型, 而CString 是 C++类, 兼容这两种基本类型是最起码的任务了。 由于const char* 最简单(常量,不涉及内存变更,操作迅速), CString 直接定义了一个类型转换函数 operator LPCTSTR() {......}, 直接返回他所维护的字符串。 当你需要一个const char* 而传入了CString时, C++编译器自动调用 CString重载的操作符 LPCTSTR()来进行隐式的类型转换。 当需要CString , 而传入了 const char* 时(其实 char* 也可以),C++编译器则自动调用CString的构造函数来构造临时的 CString对象。 因此CString 和 LPCTSTR 基本可以通用。 但是 LPTSTR又不同了,他是 char*, 意味着你随时可能修改里面的数据,这就需要内存管理了(如字符串变长,原来的存贮空间就不够了,则需要重新调整分配内存)。 所以 不能随便的将 const char* 强制转换成 char* 使用。 楼主举的例子 LPSTR lpstr = (LPSTR)(LPCTSTR)string; 就是这种不安全的使用方法。 这个地方使用的是强制类型转换,你都强制转换了,C++编译器当然不会拒绝你,但同时他也认为你确实知道自己要做的是什么。因此是不会给出警告的。 强制的任意类型转换是C(++)的一项强大之处,但也是一大弊端。这一问题在 vc6 以后的版本(仅针对vc而言)中得到逐步的改进(你需要更明确的类型转换声明)。 其实在很多地方都可以看到类似 LPSTR lpstr = (LPSTR)(LPCTSTR)string; 地用法,这种情况一般是函数的约束定义不够完善的原因, 比如一个函数接受一个字符串参数的输入,里面对该字符串又没有任何的修改,那么该参数就应该定义成 const char*, 但是很多初学者弄不清const地用法,或者是懒, 总之就是随意写成了 char* 。 这样子传入CString时就需要强制的转换一下。 这种做法是不安全的,也是不被建议的用法,你必须完全明白、确认该字符串没有被修改。 CString 转换到 LPTSTR (char*), 预定的做法是调用CString的GetBuffer函数,使用完毕之后一般都要再调用ReleaseBuffer函数来确认修改 (某些情况下也有不调用ReleaseBuffer的,同样你需要非常明确为什么这么做时才能这样子处理,一般应用环境可以不考虑这种情况)。 同时需要注意的是, 在GetBuffer 和 ReleaseBuffer之间,CString分配了内存交由你来处理,因此不能再调用其他的CString函数。 CString 转LPCTSTR: CString cStr; const char *lpctStr=(LPCTSTR)cStr; LPCTSTR转CString: LPCTSTR lpctStr; CString cStr=lpctStr;
在 UWP 使用底层的图像渲染就是使用 Softwarebitmap ,这个类提供直接数据修改,可以使用这个类进行软渲染。实际上 Softwarebitmap 和 WriteableBitmap 是差不多的。但是 Softwarebitmap 可以支持 WriteableBitmap 、 Direct3D 和代码修改。通过 Softwarebitmap 可以修改转换不同的像素格式和透明通道,支持低级修改像素。作为一个通用的底层类在很多性能要求比较高的地方用到,如 CapturedFrame、VideoFrame、FaceDetector。下面来告诉大家如何使用。
注意:如果不缩小图片的话,建议还是使用MediaMetadataRetriever。 使用当前库的话,调用metadataRetriever.forceFallBack(true);
领取专属 10元无门槛券
手把手带您无忧上云