zyl910

优化技巧、硬件体系、图像处理、图形学、游戏编程、国际化与文本信息处理。

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

随笔分类 -  C00 Language_语言

1 2 3 4 下一页

摘要:作者: zyl910 一、缘由 有些时候需要替换zip内的文件。 网上的办法大多是——先解压,然后对解压目录替换文件,最后再重新压缩。该办法需要比较繁琐,且需要一个临时目录。 于是想找无需解压的方案。 后来找到利用 ZipInputStream、ZipOutputStream 实现该功能的办法。 二 阅读全文
posted @ 2020-07-16 20:12 zyl910 阅读(1541) 评论(0) 推荐(0) 编辑

摘要:作者: "zyl910" 一、缘由 最近遇到了一个奇怪的问题——明明已经在VS2017里装好了 .NET Core 2.0 SDK,且测试过新建一个 .NET Core 2.0控制台项目能成功使用。但是在项目目录中实际使用新建.NET Core 2.0控制台项目时,会遇到不支持 .NET Core 阅读全文
posted @ 2017-09-15 23:05 zyl910 阅读(1235) 评论(0) 推荐(0) 编辑

摘要:作者:zyl910一、说明本工具有适合以下情况使用——* 快速查看数据库中数据及表结构信息。* 测试ADO.Net下连接字符串的写法。* 帮忙分析ADO.Net数据库操作。二、用法运行本程序。在“Provider”下拉框中选择数据提供者工厂。(若没有的话,请尝试在 zdbviewcs.exe.con... 阅读全文
posted @ 2015-08-13 17:00 zyl910 阅读(1332) 评论(0) 推荐(0) 编辑

摘要:作者:zyl910如今,UTF-8字符串的使用频率越来越多了。但是在VC中,不能直接处理UTF-8字符串,得专门去写UTF-8与窄字符串、宽字符串、TCHAR字符串相互转换的代码。不仅费时费力,而且稍不留心就容易造成内存泄露问题。于是我便想专门编写个库来解决UTF-8字符串编码问题。特性——支持 T... 阅读全文
posted @ 2015-07-23 22:41 zyl910 阅读(1641) 评论(0) 推荐(0) 编辑

摘要:作者:zyl910 前面测试了各种编译器的执行结果,但为什么它们的执行结果是那样呢?这需要仔细分析。VC2005的测试结果比较典型,而且调试跟踪比较方便,于是本篇对VC2005的crt源码进行分析。一、须知 开发工具是VC2005,平台为32位的x86,编译模式为Debug,使用MBCS字符集。二、cout输出窄字符串2.1 已初始化locale “已初始化locale”是指——在输出前执行了初始化locale,即执行了下列语句—— // init. locale::global(locale("")); wcout.imbue(locale("")); 阅读全文
posted @ 2013-01-22 21:13 zyl910 阅读(4917) 评论(0) 推荐(0) 编辑

摘要:作者:zyl910 C++标准为C++标准IO库设计了十分完善的国际化文本处理机制。但在实际使用中,却发现各种编译器对它的支持性存在较大的差异,很多时候无法正确的输出字符。于是我对此进行了深入的调查。一、说明1.1 测试程序 下面有一段很简单的程序,分别利用cout、wcout、printf输出字符串。具体代码为——#include <stdio.h>#include <locale.h>#include <wchar.h>#include <string>#include <iostream>using namespace std; 阅读全文
posted @ 2013-01-20 11:35 zyl910 阅读(37828) 评论(2) 推荐(5) 编辑

摘要:作者:zyl910 将Windows程序移植到Linux等平台时,经常会遇到tchar.h问题与字符串的格式控制字符问题(char串、wchar_t串、TCHAR串混合输出)。本文探讨如何解决这些问题。一、背景1.1 历史 传统的C程序使用char字符串,采用ANSI+DBCS方案来支持当地语言,不能实现多国语言同时显示。 当年微软在设计Windows NT时考虑到国际化,决定内核支持Unicode,对应wchar_t类型。那时的Unicode只有16位,于是Windows中的wchar_t是16位的。 为了兼容老程序,与字符串有关的API一般有两套——A结尾的表示是ANSI版,使用c... 阅读全文
posted @ 2013-01-17 16:40 zyl910 阅读(20354) 评论(5) 推荐(7) 编辑

摘要:作者:zyl910 用VC2012编译了一个程序,在Windows 8、Windows 7、Windows Vista下都能正常运行。但在Windows XP下运行时,却报错不能运行,具体错误信息为“指定的可执行文件不是有效的 Win32 应用程序”。 在WinXP中装好“Visual C++ Redistributable for Visual Studio 2012 Update 1”。但该程序还是无法运行,仍是报告上述错误。 用eXeScope打开该exe,发现操作系统需求为“6.0”,即只能在Windows Vista或更高的操作系统下运行。 我的VS2012已经升级为“Vis... 阅读全文
posted @ 2013-01-13 21:41 zyl910 阅读(7058) 评论(3) 推荐(1) 编辑

摘要:作者:zyl910 以前我曾为了让VC++等编译器支持C99的整数类型,编写了同名的stdint.h、inttypes.h来智能处理(http://www.cnblogs.com/zyl910/archive/2012/08/08/c99int.html)。现在将其升级到v1.01版。一、改动说明1.1 包含目录问题 在1.00版,我编写的头文件与系统头文件同名,利用“#include "XXX"”与“#include <XXX>”的区别,使其智能使用系统头文件。 这样做的优点是基本不需改动代码(只需将“#include <stdint.h>”改为“ 阅读全文
posted @ 2013-01-10 22:50 zyl910 阅读(3501) 评论(4) 推荐(0) 编辑

摘要:作者:zyl910 有的时候将子目录下的所有文件的修改时间、大小、全限定名等信息导出到Excel表格中。 尝试过命令行,但不太好用——1.对于“dir /s >1.txt”,当前目录与文件列表是分开显示的,合并起来太麻烦,而且没有文件的全限定名。2.对于“dir /b /s >1.txt”,只有全限定名,没有修改时间、大小等详细信息。3.对于“tree /f >1.txt”,只有目录树,没有修改时间、大小等详细信息。 在网上找了几个导出文件列表的工具,但都不太好用。于是决定自己编写。 用什么编程工具开发呢?考虑到以后可能经常改进输出内容的格式,所以用VBScript脚本来写是 阅读全文
posted @ 2013-01-07 21:22 zyl910 阅读(2686) 评论(0) 推荐(1) 编辑

摘要:作者:zyl910。一、问题背景 之前的“利用按键精灵批量删除pdf中的水印”仅适用于页面内对象数量确定时。如下图中,页面内对象总是3个,其中第3个是水印—— 但是,对于某些pdf文件,页面内对象的数量是不定的,见下图—— 某些页面有3个对象,而另外一些页面是4个对象。这时原来的脚本就不能用了,若下移3次会导致删除有效数据,若下移4次又会误删除页面。 该怎样才能准确定位到最后一个对象呢?二、解决办法 在Adobat内容面板上反复尝试,发现使用 Shift+上下方向键 时,焦点会限制在当前层次。 于是,可以利用这一点实现快捷键盲操作——1.首先,点击鼠标将键盘焦点设在“页面1”上;2... 阅读全文
posted @ 2012-11-14 16:50 zyl910 阅读(3191) 评论(1) 推荐(0) 编辑

摘要:作者:zyl910。一、更新说明1.1 支持VC2012 VC2012增加了很多Intrinsics函数,详见——http://www.cnblogs.com/zyl910/archive/2012/11/06/intrin_vc2012.html检查了一下VC2012新增的Intrinsics函数集,发现它支持ARM指令和Haswell新指令 根据上述信息改进zintrin,检测到是VC2012时定义相关的宏—— #if _MSC_VER >=1700 // VC2012 #define INTRIN_AVX2 1 // immint... 阅读全文
posted @ 2012-11-07 22:18 zyl910 阅读(2299) 评论(1) 推荐(2) 编辑

摘要:作者:zyl910 之前我整理了一份VC6至VC2010中Intrinsics函数集对应表。现在VS2012发布了,它有没有增加Intrinsics函数集呢?于是我对此进行检查。 若是64位win8系统中默认安装的VS2012,Intrinsics头文件位于“C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include”目录。 首先发现多了两个Intrinsics头文件——armintr.h:ARM的常用指令集。arm_neon.h:ARM的neon指令集。 看了一下intrin.h,发现以前大段的ARM Intrinsi... 阅读全文
posted @ 2012-11-06 22:49 zyl910 阅读(4764) 评论(0) 推荐(1) 编辑

摘要:一、popcnt指令简介 popcnt是“population count”的缩写,该操作一般翻译为“位1计数”,即统计有多少个“为1的位”。例如,十六进制数“FF”,它有8个为1的位,即“popcnt(0xFF) = 8”。popcnt主要应用在密码学与通信安全,例如计算汉明重量(Hamming weight)。 x86体系最初是没有硬件popcnt指令的,只能靠软件计算。 2008年底,Intel发布了Nehalem架构的处理器,增加了SSE4.2指令集,其中就有硬件popcnt指令。虽然它名义上是属于SSE4.2指令集,但它并不使用XMM寄存器(SSE的128位寄存器),而是使用G... 阅读全文
posted @ 2012-11-02 23:00 zyl910 阅读(11188) 评论(0) 推荐(4) 编辑

摘要:作者:zyl910。 本文面对对SSE等SIMD指令集有一定基础的读者,以32位整数数组求和为例演示了如何跨平台使用MMX、SSE2指令集。支持vc、gcc编译器,在Windows、Linux、Mac这三大平台上成功运行。一、关键讲解 前文(http://www.cnblogs.com/zyl910/archive/2012/10/22/simdsumfloat.html)演示了如何使用SSE、AVX指令集 处理 单精度浮点数组求和。现在对其进行改造,使用MMX、SSE2指令集 处理 32位整数数组求和。因程序基本上差不多,文本就不详细讲解了,只说关键变化。1.1 指令集简介 先来看看支... 阅读全文
posted @ 2012-10-26 21:24 zyl910 阅读(4094) 评论(0) 推荐(0) 编辑

摘要:作者:zyl910。 本文面对对SSE等SIMD指令集有一定基础的读者,以双精度浮点数组求和为例演示了如何跨平台使用SSE2、AVX指令集。支持vc、gcc编译器,在Windows、Linux、Mac这三大平台上成功运行。一、关键讲解 前文(http://www.cnblogs.com/zyl910/archive/2012/10/22/simdsumfloat.html)演示了如何使用SSE、AVX指令集 处理 单精度浮点数组求和。现在对其进行改造,使用SSE2、AVX指令集 处理 双精度浮点数组求和。因程序基本上差不多,文本就不详细讲解了,只说关键变化。1.1 指令集简介 先来看看支... 阅读全文
posted @ 2012-10-26 17:49 zyl910 阅读(3827) 评论(0) 推荐(0) 编辑

摘要:作者:zyl910。 本文面对对SSE等SIMD指令集有一定基础的读者,以单精度浮点数组求和为例演示了如何跨平台使用SSE、AVX指令集。因使用了stdint、zintrin、ccpuid这三个模块,可以完全避免手工编写汇编代码,具有很高可移植性。支持vc、gcc编译器,在Windows、Linux、Mac这三大平台上成功运行。一、问题背景 最初,我们只能使用汇编语言来编写SIMD代码。不仅写起来很麻烦,而且易读性、可维护性、移植性都较差。 不久,VC、GCC等编译器相继支持了Intrinsic函数,使我们可以摆脱汇编,利用C语言来调用SIMD指令集,大大提高了易读性和可维护。而且移植性... 阅读全文
posted @ 2012-10-22 22:12 zyl910 阅读(21934) 评论(5) 推荐(5) 编辑

摘要:作者:zyl910。 之前的ccpuid V1.02的mmx/sse指令可用性检查存在缺陷。现在的V1.03版改进了mmx/sse指令可用性检查,使用signal、setjmp,能够支持纯C程序。修正了AVX检查Bug。增加多文件链接ccpuid的测试例程。一、更新说明1.1 改进mmx/sse指令可用性检查1.1.1 问题背景 以前是使用结构化异常处理来确认当前环境是否能运行mmx/sse指令的。该方法存在两个问题。 首先,仅有C++支持结构化异常处理,而纯C是不支持的。所以在V1.02版中,是根据__cplusplus宏来做条件编译的。造成仅有C++版支持指令可用性检查,而纯C版没有... 阅读全文
posted @ 2012-10-13 00:01 zyl910 阅读(4824) 评论(1) 推荐(2) 编辑

摘要:新版本——http://www.cnblogs.com/zyl910/archive/2012/10/13/ccpuid_v103.html作者:zyl910。 之前的ccpuid V1.01版只支持Windows和Linux平台。现在的V1.02版增加对Mac OS X平台的支持,还做了这些改进——支持纯C、增加CPUF常数、x86平台判断。一、更新说明1.1 支持Mac OS X平台 之前我发现了Mac OS X中的“/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/li.. 阅读全文
posted @ 2012-09-29 23:34 zyl910 阅读(8512) 评论(0) 推荐(0) 编辑

摘要:作者:zyl910 前段时间我尝试用Finder的搜索功能查找intrin头文件,可惜没有找到,于是误以为Mac OS X的llvm-gcc不支持intrin函数。 今天在使用Xcode时,发现它是支持的,intrin头文件位于“/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/4.0/include”目录中。 搜索不到文件,可能是因为“/Applications/Xcode.app”并不是普通的目录。 在Finder中定位到“应用程序”目录,如果双击... 阅读全文
posted @ 2012-09-27 18:28 zyl910 阅读(1255) 评论(0) 推荐(0) 编辑

1 2 3 4 下一页