Python正则表达式报错:invalid escape sequence '\d' (无效的转义字符'\d')

python3.7 + 正则表达式 报错 " invalid escape sequence ‘\d’ " (无效的转义字符’\d’)。 原因是Python 3将字符串文字解释为Unicode字符串,因此 \d 被视为转义的Unicode字符。解决办法有两种。 方法1: 在字符串字面值中使用两个反斜线, 表示正则表达式受到保护,不被字节码编译器解释。即把 \ 都变成 \\ 。 输出: <re.Match object; span=(0, 40), match=‘Hello 1234567 World_This is a Regex Demo’> 1234567 方法2: 可以预先在正则表达式前添加 r ,然后这些转义只会被解析为正常地转义,如下所示: 输出: <re.Match object; span=(0, 40), match=‘Hello 1234567 World_This is a Regex Demo’> 1234567

【巨人的肩膀上制造世界】——9——Unity3D实用插件之LogViewer,打包后查看控制台信息,移动端查看控制台信息

Unity3D实用插件之LogViewer,打包后查看控制台信息,移动端查看控制台信息 目录 1、博客内容 2、内容 (1)导入资源 (2)创建Reporter (3)调出控制台 3、推送 4、结语 1、博客内容 本篇博客介绍一款使用插件——LogViewer,该插件可以让开发者在打包后查看控制台输出的信息,无论是PC端还是移动端都可以方便快捷的查看调试信息。 2、内容 (1)导入资源 导入后会发现有两处错误信息,因为版本的问题这里直接注释掉就好 (2)创建Reporter 在顶部菜单栏点击Reporter——>Create,我们可以修改Reporter内的信息,这里用默认的就好 (3)调出控制台 我们在运行或者打包好的场景内,触摸屏幕做一个画圆圈的手势就可以调出控制台了,我们看到顶部的菜单栏,我们这里可以清理输出信息,显示信息输出的位置、场景、时间等等,还可以查看设备信息,非常的方便。 3、推送 博主Github:https://github.com/KingSun5 4、结语 若是觉得博主的文章写的不错,不妨关注一下博主,点赞一下博文,另博主能力有限,若文中有出现什么错误的地方,欢迎各位评论指摘。 QQ交流群:806091680(Chinar) 该群为CSDN博主Chinar所创,推荐一下!我也在群里! 本文属于原创文章,转载请著名作者出处并置顶!!!!

IAI OpenLab工业人工智能开放实验室白皮书(一)

1. 工业人工智能 1 人工智能对工业的影响 (1)工业视觉 涉及机器视觉、图像处理、模式识别/机器学习等相关人工智能技术。配合传感器或机器人等不同的载体,计算机视觉能够辅助生产流程中需求“感知”的任务。如配合机械设备完成更精准的定位,识别更复杂的加工对象,或是在质检方面取代人力对产品进行测量等等。 (2)工业机器人 包含机械臂、运输载具、智能机床等技术。通过搭载机器学习算法、路径规划等技术,工业机器人能够实现高精度和更加复杂的操作。相比于传统工业设备只能对单一类型的产品,搭载人工智能的设备能够适应不同的工作环境和加工对象,更容易实现柔性生产。 (3) 工业物联网 通过智能传感器、智能仪表盘等设备对生产设备的运作状况进行实时监控和数据收集。另外,搭载机器学习等智能算法的物联网系统能够自动判别设备异常状况,提前发出警告以及将工作数据可视化以方便技术团队进行更高效的维护,从而减少停机时间。 (4)工业云计算 囊括工业云平台、工业物联网、机器学习算法等技术的综合应用云平台能够解放厂商对数据存储的实体设施的需求结合物联网设备所收集的数据和云平台强大的计算力配合机器学习,再配合人工智能模型进行分析,工业云能够实现如生产线监控、设备的自我诊断、预测性维护等任务。 2 工业人工智能的应用 在国家大力发展“中国制造2025”及全社会的热潮和推动的大背景下,各种新技术(如深度学习、人工智能、大数据、区块链等)加速在工业领域应用。 (1)视觉检测 相较传统视觉技术对不规则缺陷的识别能力的不足,人工智能预测准确率将随着数据量的提升而持续优化,以实现生产质量数据的全面掌控,为流程优化和工艺再造提供关键数据支持,可以说人工智能工业质检解决方案将全面赋能工业。 在深度神经网络发展起来之前,机器视觉已经长期应用在工业自动化系统中,如仪表板智能集成测试、金属板表面自动控伤、汽车车身检测、纸币印刷质量检测、金相分析、流水线生产检测等等。视觉检测应用大体分为拾取和放置、对象跟踪、计量、缺陷检测几种,其中将近80%的工业视觉系统主要用在检测方面,包括用于提高生产效率、控制生产过程中的产品质量、采集产品数据等。 在人工智能浪潮下,基于深度神经网络,图像识别准确率有了进一步提升,也在缺陷检测领域取得了更多的应用。国内不少机器视觉公司和新兴创业公司,也都开始研发人工智能视觉缺陷检测设备,涵盖了从光源、工业镜头、相机、图像采集卡等多种机器视觉产品。 (2)视觉分拣 许多需要分捡的作业如果采用工业机器人,可以大幅减低成本、提高速度。但是需要分捡的零件一般是没有整齐摆放的,机器人必须面对无序的环境,需要机器人本体的灵活度、机器视觉、软件系统对现实状况进行实时运算等多方面技术的融合,才能实现灵活的抓取。近年来,国内陆续出现了一些基于深度学习和人工智能技术,解决机器人视觉分拣问题的企业,通过计算机视觉识别出物体及其三维空间位置,指导机械臂进行正确的抓取。 (3) 故障预测 在制造流水线上有大量的工业机器人。如果其中一个出现了故障,当人感知到这个故障时可能已经造成大量的不合格品,从而带来不小的损失。基于人工智能和物联网技术,通过在工厂各个设备上加装的传感器,故障预测平台可利用传感器采集前端设备的各项数据,然后利用预测性分析技术以及机器学习技术提供设备预测性诊断、启动设备运行维护、能效优化建议等解决方案,帮助工业客户改善生产力、可靠性以及安全性。 故障预测还处于试点阶段,成熟运用较少。一方面,大部分传统制造企业的设备没有足够的数据收集传感器,也没有积累足够的数据;另一方面,很多工业设备对可靠性的要求极高,即便机器预测准确率很高,也不能达到运行要求。此外,投入产出比不高,也是人工智能故障预测的一项缺陷。故障预测功能应用后,如果成功能可以减少5%的成本,但不成功反而可能增加成本,导致不少企业宁愿不用。 总体而言,人工智能在工业领域的应用才刚刚开始,还有不少潜在应用场景值得去探索和发掘。 3 挑战与机遇 (1)工业人工智能应用的局限性 技术的缺口 芯片技术的薄弱和工业软件上的缺口使得厂家需要以高昂的成本引进国外技术。而自行研发技术的成本则需要大量资源和时间的投入,并非一朝一夕能够达成。 数据的匮乏 使用机器学习技术需要大量高质量数据,而工业数据充满着不稳定性,而部分领域甚至没有数据提供。 标准的缺失 基于不同地区在制造业上的标准存在差异,甚至对精度的要求和定义也各不相同,难以实现技术的广泛应用。 市场的低迷 工业制造领域的投资回报率较其他产业偏低,又缺少短期效益,因此此限制了资本投入的规模。 (2)工业人工智能的未来趋势 数字双生的普及 借助传感器、历史数据、数字模型等素材在虚拟空间中完成实体设备的监控和管理。 人机交互界面的创新 基于云平台和物联网技术,设备监控等工作不局限于计算屏幕,可通过移动设备或增强现实设备进行。 预测性维护的应用 通过机器学习算法和物联网技术,预测性维护能够主动发掘设备故障的风险,改变被动的维修模式。 边缘计算的提升 虽然云平台能够为物联网组件提供计算支持,但强大的边缘计算功能可以增幅物联网设备对于数据的实时监控、处理以及分析工作。 2. IAI OpenLab总览 工业人工智能开放实验室(Industrial Artificial Intelligence OpenLab, IAI OpenLab)由慧材技术(LeadAI)、丽台科技(LeadTek)、中核普达(CNPM)、东华大学工商管理学院(DHU BMS)、嘉加德必易园(E-Manor)等机构联合设立,设立IAI OpenLab是贯彻落实国务院《新一代人工智能发展规划》、推进科技创新的重要举措。 IAI OpenLab以未来新一代工业自动化、智能化为研究对象,潜心工业人工智能基础理论和基本方法源头创新及技术应用,致力于工业人工智能关键核心技术突破和颠覆性创新;积极推进工业人工智能技术工程化和产业化,强化产、学、研、商多极融合,加速成果转移转化;统筹推进相关领域科研与教学融合,推出一批工业人工智能领域专家和专业人才。 1 远景与使命 IAI OpenLab的愿景—— 成为国内一流的工业人工智能技术与应用创新合作平台 IAI OpenLab的使命—— 推动人工智能、大数据技术在工业领域的研发及应用 2

AutoCAD二次开发基本操作命令

刚接触auto CAD二次开发不久,对这个行业了解还很少,写一些东西,为了记录一下自己的成长历程。刚开始来到公司时,就是要学习AutoCAD ObjectARX这本书,对于一个初学者来说,自己看书还是挺费劲的,所以我就看着书上的代码,在visual studio上敲出来试着运行调试一下。可是我发现,不一定能运行出来,因为每个电脑设置的内部环境不同,所以对于相同的一套代码,不一定能在两台电脑上运行出来,所以需要我们做的是,了解自己用的这个电脑的内部环境,然后将代码改成能适应我们内部环境的代码即可。我刚开始时就会画一些简单的直线、圆、弧线,虽然不是很难,但是画出来之后有一种小小的成就感。我对CAD的这些代码理解的还很浅显,所以我将他记录下来,以便日后更深入理解。如下所列出的几个命令是建立在基类都已经创建好的基础上的,如有错误,欢迎广大读者指正。 “创建一条直线”命令 void createline() { AcGePoint3d ptStart(0,0,0); AcGePoint3d ptEnd(100,100,0); AcDbLine *pLine = new AcDbLine(ptStart,ptEnd); CQhDwg::AddEntity(pLine,_T("")); //以上代码可画出一条线,以下代码也可,下面的更简单 CQhDwg::AddLine(AcGePoint3d(1000,0,0),AcGePoint3d(5000,0,0),_T("")); } “创建多段线”命令 CQhCfg.cpp AcDbObjectId CQhDwg::AddPoLyLine(const AcGePoint3dArray& aryPts,double dWidth,bool bClose/*=true*/,CString strLayer/*=_T*/,AcDbDatabase* pDb/*=NULL*/) { AcDbPolyline* pLy=new AcDbPolyline; for (int i=0;i<aryPts.length();++i) { pLy->addVertexAt(i,CQhDwg::pt3dto2d(aryPts[i])); pLy->setWidthsAt(i,dWidth,dWidth); } pLy->setClosed(bClose); pLy->setLayer(strLayer); return AddEntity(pLy,strLayer); } ZhidanArchCADCommands.cpp AcGePoint3dArray ary; ary.append(AcGePoint3d(200,400,0)); ary.append(AcGePoint3d(500,300,0)); ary.append(AcGePoint3d(600,700,0)); CQhDwg::AddPoLyLine(ary,1); “画弧线”命令 AcDbObjectId CQhDwg::AddArc(const AcGePoint3d &ptCenter,double radius,double startAngle,double endAngle,CString strLayer/*=_T*/,AcDbDatabase* pDb/*=NULL*/) { AcGeVector3d vec(0,0,1); AcDbArc *pArc = new AcDbArc(ptCenter,vec,radius,startAngle,endAngle); return AddEntity(pArc); } “画圆”命令

java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT

网络请求是:Retrofit+Rxjava 完整的报错是: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 55 path $.data 这个报错你必须要在onError里打印不然还真不好找出来: 下面是上面报错 所调用接口 成功和失败的数据结构 报的是这个错: 我们看一下完整的回调:上面报的是 55行data字段 查看我们Bean的 55行data 我们看一下走onError方法这次请求拿回来的数据是什么 我们把上面的json格式化一下: 这就是为什么报这个错了 这个时候你问后台,同一接口请求数据成功和失败返回的数据结构不同是否合适啊?他还牛逼的不行,说当然可以。这个时候你怎么办?靠他不改你说怎么办?你就怼回去说,你根本就是不懂接口的沙雕。 下面是我和我们公司技术经理的聊天

拼接字符串报错:Oracle: ORA-06512:字符串缓冲区太小

报错目前可以肯定的是,拼接的字符串超过oracle定义的上限。 plsql中varchar2长度上限是4000字节 报错语句定位到下面的这句: 我这里的p_zbdcdyh是存储过程的输出参数,故是默认数据库的字符串varchar2的大小。 p_zbdcdyh:=p_zbdcdyh||','||PSELENIUM.FDYH; 我每一个字符串是28字节,然后产生100个,拼接多半就报错了。 后面不采用拼接的方式,而是采用输出到dbms控制台看。 修改dbms的输出缓冲区,多加几个0 后话: 如果不是拼接的字符串 报这个错,多半是你定义的变量的大小不够,比如: p_zl varchar2(25); 但是实际的这个变量取的值是26字节,那么也会报错。

windows中Navicat连接本地的mysql的问题解决

在安装好mysql数据库后,打开Navicat,点击‘连接’,在选择mysql,配置如下图。 但是在连接的时候,出现了一个问题。 一,Navicat遇上MYSQL8.0报错:Authentication plugin 'caching_sha2_password。 解决办法: 按下win+r,输入cmd,在命令提示框中打开mysql安装目录下的bin,回车。然后在输入mysql -u root -p,接下来输入的密码,是mysql server安装时候的一个root的密码。 接下来,你就可以进入到mysql的命令中去。 输入ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456'; (root是用户名,把123456替换成你想设置的密码,最后别忘了分号;) 另外: 如果是给别人开权限连接数据库,命令就变成了下边这个 grant all PRIVILEGES on test_db.* to root@'192.168.1.101' identified by '123456'; 上面的语句表示将 test_db 数据库的所有权限授权给 root 这个用户,允许 root 用户在 192.168.1.101 这个 IP 进行远程登陆,并设置 root 用户的密码为 123456 。 下面逐一分析所有的参数: 1. all PRIVILEGES 表示赋予所有的权限给指定用户,这里也可以替换为赋予某一具体的权限,例如 2. select,insert,update,delete,create,drop 等,具体权限间用“,”半角逗号分隔。 3. test_db.* 表示上面的权限是针对于哪个表的,test_db指的是数据库,后面的 * 表示对于所有的表,由此可以推理出:对于全部 4. 数据库的全部表授权为“*.*”,对于某一数据库的全部表授权为“数据库名.*”,对于某一数据库的某一表授权为“数据库名.表名” 5.root 表示你要给哪个用户授权,这个用户可以是存在的用户,也可以是不存在的用户。 6.192.168.1.101 表示允许远程连接的 IP 地址,如果想不限制链接的 IP 则设置为“%”即可。

js new Date() 转换为 年-月-日 (单月/日自动补0)

1 function getNowFormatDate() { 2 var date = new Date(); 3 var seperator1 = "-"; 4 var year = date.getFullYear(); 5 var month = date.getMonth() + 1; 6 var strDate = date.getDate(); 7 if (month >= 1 && month <= 9) { 8 month = "0" + month; 9 } 10 if (strDate >= 0 && strDate <= 9) { 11 strDate = "0" + strDate; 12 } 13 var currentdate = year + seperator1 + month + seperator1 + strDate; 14 return currentdate; 15 } 16 console.

微信小程序遇到的一些样式问题及解决方案

最近试着写了一个仿美团的微信小程序,遇到一些样式问题,及如何解决的如下: 一:点击显示隐藏 (1) 二:正则表达式,利用true or false来动态添加类名 (1) 三:保留小数点后两位,直接用toFixed()不行,我试过了,后来发现从外部引入文件可以 (1)在utils文件下建一个filters.wxs文件 (2)在page内的页面内引入filters.wxs文件: <wxs module="filters" src="../../utils/filters.wxs"></wxs> (3)使用:{{filters.toFix(小数)}} 四:点击所在项,出现样式 <view class="sxcategoryitem {{_sum == index?'orange':'default'}}" data-num="{{index}}" data-name="{{item.name}}" bindtap="clicksxitem">{{item.name}}</view> js: clicksxitem(e) { console.log(e.target.dataset.name) this.setData({ _sum: e.target.dataset.num, }) },

慧材技术&中核普达测量与测绘系统介绍(一)

深圳中核普达测量科技有限公司(简称中核普达)具有领先的高精度三维摄影测量技术、大数据计算应用融合技术、无人机自动智能检测技术、核电站工程管理能力、核安全体系管理能力,是高精密超复杂专业测量服务商、生产系统升级整体方案提供商和先进工业智能装备研发合作商。 慧材(上海)信息技术有限公司成立于2017年,以推动特定领域人工智能技术、大数据技术的研发及应用为使命,专业聚焦相关领域的技术服务、人才培养、系统开发与实验室建设。 近期我们会连续分享关于测量与测绘系统资料。 中核普达七项国际领先的核心技术 1)无人机超高精度测量; 2)高精度工业三维数字摄影/激光跟踪/归描建模; 3)核工级高精密超复杂测; 4)智慧建造智慧制造工程智慧系统集成; 5)高精度人员设备定位; 6)基于AI/BIM/IOT/CLOUD/5G智能融合集成; 7)智能装备研发集成设计制造。 1)航空摄影与遥感测绘技术【无人机超高精度测量】 2)近景摄影测量技术【高精度工业三维数字摄影/激光跟踪/扫描建模】 3)工程测量技术【核工级高精密超复杂测量】 4)视频智能分析技术【智慧建造智慧制造工程智慧系统集成】 5)UWB定位技术【高精度人员设备定位】 6)大数据计算应用融合技术【基于AI+BIM+IOT+ CLOUD+5G智能融合集成】 7)智能装备设计集成技术【智能装备研发集成设计制道】 航空摄影与遥感测绘技术 【无人机超高精度测量】 航空摄影与遥感测绘技术,是采用无人机搭载多种遥感设备,如高分辦率CCD数码相机、激光扫描仪、轻型光学相机机载激光LIDAR等获取被测对象信息,并通过相应的信息处理软件对所获取的图像信息按照客户的精度要求进行处理,生成一定比例的高清遥感影像资料,基于摄影测量工作站,提取目标物空间信息,进一步生成图形数据。 技术优势和特点 具有丰富的固定翼、多旋翼无人机系统的设计研发经验; 具备完整的气动设计、动力匹配、航电系统设计、复合材料结构设计等设计能力; 拥有无人机的核心系统一飞行控制系统的研发和制造能力; 具备多种任务载荷的设计开发能力; 提供专业的二维、三维遥感数据的获取和处理服务。 技术应用领域 由于无人机具备较好的经济性、安全性、便携性、易操作性特点,该项技术已广泛应用于遥感测绘、地质勘测、应急管理、防灾减灾监测、气象探测、农作物保护、电影电视航拍、光伏发电、交通、电力和油气管道巡检等多个领域。 近景摄影测量技术 【高精度工业三维数字摄影/激光跟踪/扫描建模】 近景摄影测量技术是采用量测摄影机,通过拍摄目标物高清图像,经过专门软件对图像加工处理,确定量测目标物体的大小、形状和几何位置,具有非接触性量测、不触及被测物体、信息容量大、易存储、可重复使用等优势,特别适用于测量具有大批量的目标、躲避危险环境而远离摄影对象等工程。 (1)三维数字近景摄影测量技术 一种数字近景摄影视觉测量技术,是建立在数字成像、图像处理与识别以及精密测量原理基础上的新型工业现场三维精密测量技术。 (2)三维激光跟踪测量技术 一种用激光束静态或动态地自动跟踪目标,通过测量目标点到基点的长度或长度变化量、目标点对基点的方位角等来得到目标点的三维坐标测量技术。 (3)三维激光扫描测量技术 又名实景复制技术,是通过高速激光扫描测量的方法,以被测对象点云的形式获取物体或地形表面的阵列式几何图像数据,快速建立物体的三维影像模型,并进行各种后处理工作,如计量、分析、仿真、模拟、展示、监测、虚拟现实等。 (4)三维结构光扫描测量技术 采用一种结合结构光技术、相位测量技术、计算机视觉技术的复合三维非接触式测量技术。测量时光栅投影装置投影数幅特定编码的结构光到待测物体上,成一定夹角的两个摄像头同步采得相应图象,然后对图象进行解码和相位计算,并利用匹配技术、三角形测量原理,解算出两个摄像机公共视区内像素点的三维坐标。 技术优势和特点 (1)三维数字近景摄影测量技术 自主研发:根据客户要求,定制化针对性需求开发,不存在技术瓶颈; 精度高:最高精度可以达到3+3u/m精度; 智能化:图像处理设定参数值后,自动识别目标点,无须人工干预; 非接触性:不伤及被测物体或被被测物体所伤害; 数据采集量大:像片信息丰富、容量大、影像逼真,不受目标点的数量限制,所有的数据点最后都是通过软件统一计算。 便携性好:系统由一台高精度测量相机,高精度基准尺、若干靶标组成,这些设备可以放在一个拉杆箱里面,实现单人独立作业,效率高成本低; 灵活性高:针对不同的目标大小、摄影距离、精度要求、静态或动态等各方面,均可提供合适的设备、摄影方式与布设控制,解决客户遇到的复杂问题。 (2)三维激光跟踪测量测量技术 精度高:最高精度可达到15u+6u/m精度; 超宽城测量服务:可完成大、中、小尺度物体空间尺寸信息采集; 快速高效:实时呈现目标点位测量精度、当场获取物体几何形位参数; 智能化:自主完成精度检校,提供精度保障。 (3)三维激光扫描测量技术 高分辨率、高精度:快速高精度获取海量点云数据,点位密度高,测角0.5”; 数据采样率高:采样点速率可达数千点、数十万点、数百万点/秒,仿真程度高; 集成一体化:集成外业、内业、成图一体化; 实时化:实时、快速获取点云数据; 非接触性:非接触性扫描目标,不需对目标物体任何表面处理,解决危险目标、环境及人员难以达到的情况; (4)结构光扫描测量技术 高精度:最高精度可达到0.02mm/m精度 非接触性:通过结构光栅投射,无须接触被测物体 数据量大:每秒可达200万点 便携性:可搬到现场进行测量; 检测速度快:通过旋转平台,从多个角度扫测物体,采用三维拼接技术实现数据缝合。 技术应用领域 (1)三维数字近景摄影测量技术

博客添加看板娘

<link rel="stylesheet" type="text/css" href="https://blog-static.cnblogs.com/files/clwydjgs/waifu.css"/> <link rel="stylesheet" type="text/css" href="https://blog-static.cnblogs.com/files/clwydjgs/waifu.css"/> <link rel="stylesheet" type="text/css" href="https://files.cnblogs.com/files/yjlblog/flat-ui.min.css"/> <div class="waifu" id="waifu"> <div class="waifu-tips" style="opacity: 1;"></div> <canvas id="live2d" width="280" height="250" class="live2d"></canvas> <div class="waifu-tool"> <span class="fui-home"></span> <span class="fui-chat"></span> <span class="fui-eye"></span> <span class="fui-user"></span> <span class="fui-photo"></span> <span class="fui-info-circle"></span> <span class="fui-cross"></span> </div> </div> <script src="https://blog-static.cnblogs.com/files/clwydjgs/live2d.js"></script> <script src="https://blog-static.cnblogs.com/files/clwydjgs/waifu-tips.js"></script> <script type="text/javascript">initModel()</script> 转载于:https://www.cnblogs.com/aniymx/p/11150257.html

如何使用CSS在水平线中间添加文字?

如何使用CSS将文字显示在水平线中间?下面本篇文章就来给大家介绍使用CSS实现文字显示在水平线中间效果的方法,希望对大家有所帮助。 CSS提供了在网页中间制作包含文字或图像的水平线以使其具有吸引力的功能,这可以通过使用简单的CSS属性来实现。 语法: h4:before, h4:after { content: ""; flex: 1 1; border-bottom: 2px solid #000; margin: auto; } 示例1:将文字显示在水平线中间 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <style> h4 { display: flex; flex-direction: row; } h4:before, h4:after { content: ""; flex: 1 1; border-bottom: 2px solid #000; margin: auto; } img { height: 100px; width: 100px; border-radius: 50%; } </style> </head> <body> <h4>HTML中文网</h4> </body> </html> 效果图: 示例2:将图像显示在水平线中间 <!DOCTYPE html> <html> <head> <meta charset="

将图片按txt格式进行存储,对txt文件批量读取

为什么将图片存储为txt格式 在将图片数据输入卷积神经网络时,如果通过np.load进行输入,常常会出现内存爆炸的问题,当然啊,土豪除外。所以讲图片按照txt文件读取,是一种非常好的读取方式,当然啊,如今ternsorflow出的API也相当不错。技多不压身嘛! 将图片存储为txt文件代码 ''' 本代码以UC数据集为例子,UC数据集共包含21类,每一类图片包含100张图片 其中class_label_dict为UC数据集label, ''' import numpy as np import os class_label_dict = {'agricultural': 0, "airplane": 1, "baseballdiamond": 2, "beach": 3, "buildings": 4, "chaparral": 5, "denseresidential": 6, "forest": 7, "freeway": 8, "golfcourse": 9, "harbor": 10, "intersection": 11, "mediumresidential": 12, "mobilehomepark": 13, "overpass": 14, "parkinglot": 15, "river": 16, "runway": 17, "sparseresidential": 18, "storagetanks": 19, "tenniscourt": 20 } file_path = "G:/UC" #此处为文件存放位置 path_list = os.listdir(file_path) #会历遍文件夹内的文件并返回一个列表 path_name=[] for i in path_list: path_name.

Ubuntu配置源

第一步:修改sources.list配置文件: sudo vim /etc/apt/sources.list 在文件最前面添加以下条目,保险起见,的操作之前做好备份 deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse deb-src http://mirrors.

Timer定时器用法详解

先看API和结论: /** timer总结: Timer timer = new Timer(); //其中会调用this("Timer-" + serialNumber());, 即它以Timer+序列号为该定时器的名字 Timer timer = new Timer(String name); //以name作为该定时器的名字 Timer timer = new Timer(boolean isDeamon); //是否将此定时器作为守护线程执行 Timer timer = new Timer(name, isDeamon); //定时器名字, 是否为守护线程 注意: 默认无参构造器将会使该线程作为非守护线程, 即使主线程已经停止并销毁, 只要该线程还存在, 则程序不会停止 即下面的所有执行的任务, 无论是否是定时还是非定时, 只要主线程一旦结束, 那么该定时器立即同主线程一起销毁 以下所有的task都是TimerTask的子类 所有time都是Date类型的日期 所有delay和period都是long类型的延迟时间, 单位为毫秒 timer.schedule(task, time); 在time时间执行task任务1次 timer.schedule(task, delay); 在延迟delay毫秒后执行task任务1次 timer.schedule(task, firstTime, period); 在firsttime时间执行task1次,之后定期period毫秒时间执行task, 时间如果为过去时间, 不会执行过去没有执行的任务, 但是会马上执行 timer.schedule(task, delay, period); 在延迟delay后执行task1次,之后定期period毫秒时间执行task, 时间如果为过去时间, 不会执行过去没有执行的任务, 但是会马上执行 timer.scheduleAtFixedRate(task, firstTime, period); 在firstTime时间执行task一次, 以后每隔period毫秒执行1次, 时间如果为过去时间, 会执行过去没有执行的任务, 但是会马上执行

Spring报错: org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [xxx]

Spring报错: org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [xxx] 完整报错 00:00:00,056 ERROR ContextLoader:353 - Context initialization failed org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [xxx] for bean with name 'xxx' defined in class path resource [applicationContext.xml]; nested exception is java.lang.ClassNotFoundException: xxx at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1352) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineTargetType(AbstractAutowireCapableBeanFactory.java:628) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.predictBeanType(AbstractAutowireCapableBeanFactory.java:597) at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:1445) at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:975) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:752) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:839) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:538) at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:446) at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:328) at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:107) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:5157) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5680) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1707) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1697) at java.util.concurrent.FutureTask.run(Unknown Source) at java.

java集成kettle:配置资源库,并执行资源库中保存的转换

首先配置资源库 1.安装kettle7.1 2.将mysql-connector-java-5.1.46.jar复制到D:\Program Files\kettle7.1\data-integration\lib目录下 3.配置kettle资源库 上图就是在cgmrepositorydb数据库中初始化建立表格呢。需要建立1分钟左右。 密码也是admin 然后我们创建一个名称为fromto的转换 输入就是D:/from.txt 输出就是D:/to.txt 那么这个转换就在数据库中了 在数据库中的结构如下: 那么如何以树形目录结构查询fromto转换在哪里呢? 发现fromto在根目录下。因为fromto转换在数据块中的ID_DIRECTORY=0 现在我们要使用java代码去读取kettle资源数据库中存储的fromto转换,并执行这个换行 项目结构如下 pom.xml文件如下 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>www.test.com</groupId> <artifactId>test</artifactId> <version>0.0.1-SNAPSHOT</version> <dependencies> <dependency> <groupId>pentaho-kettle</groupId> <artifactId>kettle-core</artifactId> <version>7.1.0.0-12</version> </dependency> <dependency> <groupId>pentaho-kettle</groupId> <artifactId>kettle-dbdialog</artifactId> <version>7.1.0.0-12</version> </dependency> <dependency> <groupId>pentaho-kettle</groupId> <artifactId>kettle-engine</artifactId> <version>7.1.0.0-12</version> </dependency> <dependency> <groupId>pentaho</groupId> <artifactId>metastore</artifactId> <version>7.1.0.0-12</version> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-vfs2 --> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-vfs2</artifactId> <version>2.2</version> </dependency> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>19.0</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.46</version> </dependency> <!-- https://mvnrepository.com/artifact/commons-lang/commons-lang --> <dependency>

老调重弹:const char*, char const* and char *const

const char*, char const*, char*const的区别问题几乎是C++面试中每次都会有的题目。 事实上这个概念谁都有只是三种声明方式非常相似很容易记混。 Bjarne在他的The C++ Programming Language里面给出过一个助记的方法: 把一个声明从右向左读。 char * const cp; ( * 读成 pointer to ) cp is a const pointer to char const char * p; p is a pointer to const char; char const * p; 同上因为C++里面没有const*的运算符,所以const只能属于前面的类型。 转载于:https://www.cnblogs.com/jonnyyu/archive/2005/01/10/89766.html

platform下的js分析_3

目录 主要包含 CCSAXParser.js CCSAXParser.jspreprocess-class.jsCCClass.js CCClass.js中 使用较多的函数. 主要包含 CCSAXParser.js CCSAXParser.js 主要用于 解析 xml 如: cocos2d/tilemap/CCTMXXMLParser.js 文件中解析 tilemap的方法. 具体解析方式见 其中的 parseXMLString (xmlStr, tilesetFirstGid) 方法. preprocess-class.js 增加预处理属性这个步骤的目的是降低 CCClass 的实现难度,将比较稳定的通用逻辑和一些需求比较灵活的属性需求分隔开。 主要方法是 preprocessAttrs(properties, className, cls, es6) 这个方法. SerializableAttrs 表示可序列话的属性 parseNotify (val, propName, notify, properties) 处理 properties 中, 属性为 propName 中的 notify 参数. 参见 https://docs.cocos.com/creator/2.1/manual/zh/scripting/reference/attributes.html checkUrl (val, className, propName, url) 检查 url 属性 parseType (val, type, className, propName) 检查 type 属性 postCheckType (val, type, className, propName)

angular入门--自定义过滤器

<html ng-app='app1'> <head> <meta name="generator" content="HTML Tidy for HTML5 (experimental) for Windows https://github.com/w3c/tidy-html5/tree/c63cc39" /> <title></title> <script src='E:\global\js\angular.min.js'> </script> </head> <body> <div ng-controller="c1"> <input value="get the filter value" type='button' ng-click="getFilter()" /> <div ng-bind="name " ></div> <div ng-bind="name | f1:'test page'" ng-show="isShow"></div> </div> <script> var app=angular.module('app1',[]); app.controller('c1',['$scope',function($scope){ $scope.name="please input the pw"; $scope.isShow=false; $scope.getFilter=function(){ $scope.isShow=true; } }]) app.filter('f1',function(){ return function(str,filterString){ return str+':custom:'+filterString; } }) </script> </body> </html> 核心代码 app.filter('f1',function(){ return function(str,filterString){ return str+':custom:'+filterString; } }) 转载于:https://www.

转载之html特殊字符的html,js,css写法汇总

箭头类 符号UNICODE符号UNICODEHTMLJSCSSHTMLJSCSS⇠&#8672\u21E0\21E0⇢&#8674\u21E2\21E2⇡&#8673\u21E1\21E1⇣&#8675\u21E3\21E3↞&#8606\u219E\219E↠&#8608\u21A0\21A0↟&#8607\u219F\219F↡&#8609\u21A1\21A1←&#8592\u2190\2190→&#8594\u2192\2192↑&#8593\u2191\2191↓&#8595\u2193\2193↔&#8596\u2194\2194↕&#8597\u2195\2195⇄&#8644\u21C4\21C4⇅&#8645\u21C5\21C5↢&#8610\u21A2\21A2↣&#8611\u21A3\21A3⇞&#8670\u21DE\21DE⇟&#8671\u21DF\21DF↫&#8619\u21AB\21AB↬&#8620\u21AC\21AC⇜&#8668\u21DC\21DC⇝&#8669\u21DD\21DD↚&#8602\u219A\219A↛&#8603\u219B\219B↮&#8622\u21AE\21AE↭&#8621\u21AD\21AD⇦&#8678\u21E6\21E6⇨&#8680\u21E8\21E8⇧&#8679\u21E7\21E7⇩&#8681\u21E9\21E9▲&#9650\u25B2\25B2►&#9658\u25BA\25BA▼&#9660\u25BC\25BC◄&#9668\u25C4\25C4➔&#10132\u2794\2794➙&#10137\u2799\2799➨&#10152\u27A8\27A8➲&#10162\u27B2\27B2➜&#10140\u279C\279C➞&#10142\u279E\279E➟&#10143\u279F\279F➠&#10144\u27A0\27A0➤&#10148\u27A4\27A4➥&#10149\u27A5\27A5➦&#10150\u27A6\27A6➧&#10151\u27A7\27A7➵&#10165\u27B5\27B5➸&#10168\u27B8\27B8➼&#10172\u27BC\27BC➽&#10173\u27BD\27BD➺&#10170\u27BA\27BA➳&#10163\u27B3\27B3↷&#8631\u21B7\21B7↶&#8630\u21B6\21B6↻&#8635\u21BB\21BB↺&#8634\u21BA\21BA↵&#8629\u21B5\21B5↯&#8623\u21AF\21AF➾&#10174\u27BE\27BE ❤ 基本形状类 符号UNICODE符号UNICODEHTMLJSCSSHTMLJSCSS❤&#10084\u2764\2764✈&#9992\u2708\2708★&#9733\u2605\2605✦&#10022\u2726\2726☀&#9728\u2600\2600◆&#9670\u25C6\25C6◈&#9672\u25C8\25C8▣&#9635\u25A3\25A3☻&#9787\u263B\263B☺&#9786\u263A\263A☹&#9785\u2639\2639✉&#9993\u2709\2709☎&#9742\u260E\260E☏&#9743\u260F\260F✆&#9990\u2706\2706�&#65533\uFFFD\FFFD☁&#9729\u2601\2601☂&#9730\u2602\2602❄&#10052\u2744\2744☃&#9731\u2603\2603❈&#10056\u2748\2748✿&#10047\u273F\273F❀&#10048\u2740\2740❁&#10049\u2741\2741☘&#9752\u2618\2618❦&#10086\u2766\2766☕&#9749\u9749\9749❂&#10050\u2742\2742☥&#9765\u2625\2625☮&#9774\u262E\262E☯&#9775\u262F\262F☪&#9770\u262A\262A☤&#9764\u2624\2624✄&#9988\u2704\2704✂&#9986\u2702\2702☸&#9784\u2638\2638⚓&#9875\u2693\2693☣&#9763\u2623\2623⚠&#9888\u26A0\26A0⚡&#9889\u26A1\26A1☢&#9762\u2622\2622♻&#9851\u267B\267B♿&#9855\u267F\267F☠&#9760\u2620\2620 ¥ 货币类 符号UNICODE符号UNICODEHTMLJSCSSHTMLJSCSS$&#36\u0024\0024¢&#162\u00A2\00A2£&#163\u00A3\00A3¤&#164\u00A4\00A4€&#8364\u20AC\20AC¥&#165\u00A5\00A5₱&#8369\u20B1\20B1₹&#8377\u20B9\20B9 ½ 数学类 符号UNICODE符号UNICODEHTMLJSCSSHTMLJSCSS½&#189\u00BD\00BD¼&#188\u00BC\00BC¾&#190\u00BE\00BE⅓&#8531\u2153\2153⅔&#8532\u2154\2154⅛&#8539\u215B\215B⅜&#8540\u215C\215C⅝&#8541\u215D\215D‰&#8240\u2030\2030%&#37\u0025\0025<&#60\u003C\003C>&#62\u003E\003E ♫ 音乐符号类 符号UNICODE符号UNICODEHTMLJSCSSHTMLJSCSS♩&#9833\u2669\2669♪&#9834\u266A\266A♫&#9835\u266B\266B♬&#9836\u266C\266C♭&#9837\u266D\266D♯&#9839\u266F\266F ✖ 对错号 符号UNICODE符号UNICODEHTMLJSCSSHTMLJSCSS &#160\u00A0\00A0☐&#9744\u2610\2610☑&#9745\u2611\2611☒&#9746\u2612\2612✓&#10003\u2713\2713✔&#10004\u2714\2714✕&#10005\u10005\10005✖&#10006\u2716\2716✗&#10007\u2717\2717✘&#10008\u2718\2718 ★ 全都是星星 符号UNICODE符号UNICODEHTMLJSCSSHTMLJSCSS★&#9733\u2605\2605✭&#10029\u272D\272D✮&#10030\u272E\272E☆&#9734\u2606\2606✪&#10026\u272A\272A✡&#10017\u2721\2721✯&#10031\u272F\272F✵&#10037\u2735\2735✶&#10038\u2736\2736✸&#10040\u2738\2738✹&#10041\u2739\2739✺&#10042\u273A\273A✱&#10033\u2731\2731✲&#10034\u2732\2732✴&#10036\u2734\2734✳&#10035\u2733\2733✻&#10043\u273B\273B✽&#10045\u273D\273D❋&#10059\u274B\274B❆&#10054\u2746\2746❄&#10052\u2744\2744❅&#10053\u2745\2745 ♒ 星座类 符号UNICODE符号UNICODEHTMLJSCSSHTMLJSCSS♈&#9800\u2648\2648♉&#9801\u2649\2649♊&#9802\u264A\264A♋&#9803\u264B\264B♌&#9804\u264C\264C♍&#9805\u264D\264D♎&#9806\u264E\264E♏&#9807\u264F\264F♐&#9808\u2650\2650♑&#9809\u2651\2651♒&#9810\u2652\2652♓&#9811\u2653\2653 ♚ 国际象棋类 符号UNICODE符号UNICODEHTMLJSCSSHTMLJSCSS♚&#9818\u265A\265A♛&#9819\u265B\265B♜&#9820\u265C\265C♝&#9821\u265D\265D♞&#9822\u265E\265E♟&#9823\u265F\265F♔&#9812\u2654\2654♕&#9813\u2655\2655♖&#9814\u2656\2656♗&#9815\u2657\2657♘&#9816\u2658\2658♙&#9817\u2659\2659 ♣ 扑克牌类 符号UNICODE符号UNICODEHTMLJSCSSHTMLJSCSS♠&#9824\u2660\2660♣&#9827\u2663\2663♥&#9829\u2665\2665♦&#9830\u2666\2666♤&#9828\u2664\2664♧&#9831\u2667\2667♡&#9825\u2661\2661♢&#9826\u2662\2662 Ω 希腊字母 符号UNICODE符号UNICODEHTMLJSCSSHTMLJSCSSΑ&#913\u0391\0391Β&#914\u0392\0392Γ&#915\u0393\0393Δ&#916\u0394\0394Ε&#917\u0395\0395Ζ&#918\u0396\0396Η&#919\u0397\0397Θ&#920\u0398\0398Ι&#921\u0399\0399Κ&#922\u039A\039AΛ&#923\u039B\039BΜ&#924\u039C\039CΝ&#925\u039D\039DΞ&#926\u039E\039EΟ&#927\u039F\039FΠ&#928\u03A0\03A0Ρ&#929\u03A1\03A1Σ&#931\u03A3\03A3Τ&#932\u03A4\03A4Υ&#933\u03A5\03A5Φ&#934\u03A6\03A6Χ&#935\u03A7\03A7Ψ&#936\u03A8\03A8Ω&#937\u03A9\03A9 ☩ 十字 符号UNICODE符号UNICODEHTMLJSCSSHTMLJSCSS☨&#9768\u2628\2628☩&#9769\u2629\2629✝&#10013\u271D\271D✞&#10014\u271E\271E✟&#10015\u271F\271F✠&#10016\u2720\2720✚&#10010\u271A\271A†&#8224\u2020\2020✢&#10018\u2722\2722✤&#10020\u2724\2724✣&#10019\u2723\2723✥&#10021\u2725\2725 © 法律符号 符号UNICODE符号UNICODEHTMLJSCSSHTMLJSCSS®&#174\u00AE\00AE©&#169\u00A9\00A9℗&#8471\u2117\2117™&#153\u0099\0099℠&#8480\u2120\2120 @ 标点和符号 符号UNICODE符号UNICODEHTMLJSCSSHTMLJSCSS«&#171\u00AB\00AB»&#187\u00BB\00BB‹&#139\u008B\008B›&#155\u009B\009B“&#8220\u201C\201C”&#8221\u201D\201D‘&#8216\u2018\2018’&#8217\u2019\2019•&#8226\u2022\2022◦&#9702\u25E6\25E6¡&#161\u00A1\00A1¿&#191\u00BF\00BF℅&#8453\u2105\2105№&#8470\u2116\2116&&#38\u0026\0026@&#64\u0040\0040℞&#8478\u211E\211E℃&#8451\u2103\2103℉&#8457\u2109\2109°&#176\u00B0\00B0|&#124\u007C\007C¦&#166\u00A6\00A6–&#8211\u2013\2013—&#8212\u2014\2014…&#8230\u2026\2026¶&#182\u00B6\00B6∼&#8764\u223C\223C≠&#8800\u2260 转自: http://blog.csdn.net/realghost/article/details/11613649 转载于:https://www.cnblogs.com/benchan2015/p/4721197.html

Report, 20150423, On Distance Rate

Section 1. On "Distance Rate" Definition 1. The Riemannian distance of two positive-definite symmetric matrices $P_1$ and $P_2$ is \[d\left( {{P_1},{P_2}} \right) = {\left\| {\log \left( {{P_1}^{ - 1}{P_2}} \right)} \right\|_F} = {\left( {\sum\limits_{i = 1}^n {{{\ln }^2}{\lambda _i}} } \right)^{\frac{1}{2}}}\] where $\lambda_i,~i=1,\ldots,n$ are the eigenvalues of $P_1^{-1}P_2$. Lemma 1. If a function $H\left( z \right) = \sum\nolimits_{n = 0}^\infty {{h_n}{z^{ - n}}} $ is minimum-phase and $h_0 \ne 0$, then \begin{equation} \nonumber \ln h_0^2 = \frac{1}{{2\pi }}\int_{ - \pi }^\pi {\ln {{\left| {H\left( {{e^{j\omega }}} \right)} \right|}^2}d\omega }.

联想G460笔记本触摸板驱动 For Windows 7 x64

联想G460系列笔记本,触摸板的驱动在官网上下载的根本就是还不如系统自带的驱动,最起码的关闭触摸板右侧触摸滚动条的功能都没有 结果在这儿找到了 http://download.lenovo.com/UserFiles/Driver/en/Downloads%20and%20Drivers/Z460Z560/Win7/IN2THP39WW1.exe 猜猜是哪儿,联想的英文官网,而且版本还比中文官网的更新,这帮家伙 转载于:https://www.cnblogs.com/vanpan/archive/2012/08/26/3583039.html

用VS 2008开发WCF(二)——构建最初的服务器

嗯,现在有个问题的确摆在了我们眼前,不管怎么样,不能靠类库吃一辈子吧?总要学会自己构建一个服务器的吧。 那好,我们来制作一个服务器吧。 创建一个windows控制台项目,命名为Host 对Host添加.NET System.ServiceModel名空间引用 对Host添加刚才生成的WCF项目,注意,不是引用服务,就是引用本地项目类库,我们的目标是不再使用wcf默认的服务器了。 然后对Host项目添加项目配置文件App.config 将WCF类库中自动生成的App.config内容原封不动的全部拷贝到Host项目的App.config中 编写Host中的主文件如下 namespace Host { class Program { static void Main(string[] args) { using (ServiceHost calculatorServiceHost = new ServiceHost(typeof(Service1))) { // 设置委托匿名函数,当服务打开时能看到提示 calculatorServiceHost.Opened += delegate { Console.WriteLine("Calculator Service begin to listen via the Address:{0}", calculatorServiceHost.BaseAddresses[0].ToString()); }; // 打开服务,所有的配置都从App.config中读取,不需要重新写什么 calculatorServiceHost.Open(); // 阻塞程序,否则一启动就结束了 Console.Read(); } } } } 好了,然后直接运行Host程序,等程序启动完以后再启动Client程序,同样可以看到结果哦。 转载于:https://www.cnblogs.com/vanpan/archive/2009/02/11/3583044.html

【Python】zlib压缩文件

import zlib import os ss = 's' * 1024 * 1024 #写入原始文件 file = open("src.dat", "wb") file.write(ss.encode()) file.close() #读取上一步原始的文件 file = open("src.dat", "rb") sss = file.read(os.path.getsize("src.dat")) #获取文件大小 file.close() #压缩文件 compress = zlib.compress(sss) #写入压缩文件 file = open("compress.dat", "wb") file.write(compress) file.close() #读取上一步的压缩文件 file = open("compress.dat", 'rb') sss = file.read(os.path.getsize("compress.dat")) file.close() decompress = zlib.decompress(sss) #写入还原文件 file = open("decompress.dat", "wb") file.write(decompress) file.close() print(len(ss)) print(len(compress)) print(len(decompress)) 转载于:https://www.cnblogs.com/tiandsp/p/8504214.html

FreeImage使用

库的核心是FIBITMAP数据结构,里面包含像素和exif等信息。 得到图像格式函数FREE_IMAGE_FORMST fif=FreeImage_GetFileType(filename); 读图像函数FIBITMAP *dib=FreeImage_Load(fif,filename,0); 写图像函数FreeImage_Save(fif,dib,filename,0); 卸载图像函数FreeImage_Unload(dib); 得到图像高度int H=FreeImage_GetHeight(dib); 得到图像宽度int W=FreeImage_GetWidth(dib); 得到图像像素 BYTE *data=FreeImage_GetBits(dib); 得到图像位深 int bpp=FreeImage_GetBpp(dib); 得到x,y像素 RGBQUAD color; FreeImage_GetPixelColor(dib,x,y,&color); 写入x,y像素 FreeImage_SetPixelColor(dib,x,y,color); 开辟新图像 FIBITMAP *re=FreeImage_Allocate(W,H,bpp); 拷贝exif信息 FreeImage_CloneMetadata(dib,re); 得到exif信息:点这里的例子; 转载于:https://www.cnblogs.com/tiandsp/p/7440810.html

wx模拟鼠标事件

http://docs.wxwidgets.org/trunk/classwx_u_i_action_simulator.html 转载于:https://www.cnblogs.com/tiandsp/p/7440800.html

多媒体指令(数组对应元素相乘)

#include <iostream> using namespace std; int main(int argc, char* argv[]) { float a[8]={1,2,3,4,5,6,7,8}; float b[8]={1,2,3,4,5,6,7,8}; float c[8]; //两个数组相乘的结果 __asm { mov ebx,0; mov ecx,2; //循环两次 lp: movups xmm0,[a+ebx]; //一次存入xmm中16个字节即4个数 movups xmm1,[b+ebx]; mulps xmm0,xmm1; movups [c+ebx],xmm0; add ebx,16; dec ecx; jnz lp; } for (int i=0;i<8;i++) cout<<c[i]<<" "; system("pause"); return 0; } 直接跳过mmx指令,使用sse指令。 转载于:https://www.cnblogs.com/tiandsp/archive/2013/03/14/2959376.html

C++解析xml(使用tinyxml)

环境是vs2010+Windows 7。 timyxml库我是在这里下载的,直接就能编译,编译后得到tinyxml.lib。 使用时当然也需要tinyxml.h文件。 如果不想编译,这里能下载我编译好的lib,顺便附赠h文件。 我程序中解析的xml文件在这里能找到。 代码如下: #include <iostream> #include <string> #include "tinyxml.h" using namespace std; #pragma comment(lib,"tinyxml.lib") int main() { const char * xmlFile = "lianxi.xml"; TiXmlDocument doc; doc.LoadFile(xmlFile); // doc.Print(); //输出xml文件看看 TiXmlElement* firstLevel=doc.RootElement(); cout<<firstLevel->Value()<<":"<<endl; /* 某些情况会用注释的这些内容 比如: <menu name="123" num="456"> </menu> TiXmlAttribute *firstAtt=firstLevel->FirstAttribute(); while (firstAtt!=NULL) { cout<<firstAtt->Name()<<":"<<firstAtt->Value(); firstAtt=firstAtt->Next(); } */ TiXmlElement* secondLevel=firstLevel->FirstChildElement(); while(secondLevel!=NULL) { cout<<" "; cout<<secondLevel->Value()<<":"<<endl; TiXmlElement* thirdLevel=secondLevel->FirstChildElement(); while(thirdLevel!=NULL) { cout<<" "; cout<<thirdLevel->Value()<<":"<<thirdLevel->GetText()<<endl; thirdLevel=thirdLevel->NextSiblingElement(); } secondLevel=secondLevel->NextSiblingElement(); } cin.

Linux练习(获得系统时间)

#include <time.h> #include <stdio.h> #include <unistd.h> int main() { int i; time_t the_time; for(i=1;i<=5;i++) { the_time=time((time_t*)0); printf("the time is %ld\n",the_time); sleep(2); } exit(0); } 时间是从1970年1月1日开始的。 函数原型: #include <time.h> time_t time(time_t *tloc); 转载于:https://www.cnblogs.com/tiandsp/archive/2012/09/09/2677429.html

Linux练习(函数调用复制文件)

#include <stdio.h> #include <stdlib.h> int main() { int c; FILE *in,*out; in=fopen("file.in","r"); out=fopen("file.out","w"); while((c=fgetc(in))!=EOF) fputc(c,out); exit(0); } 转载于:https://www.cnblogs.com/tiandsp/archive/2012/09/06/2673388.html

lisp(判断回文数)

(defun re(n) (setf len (length n)) (if (oddp len) (setf mid (/ (1+ len) 2)) (setf mid (/ len 2))) (or (and (oddp len) (equal (subseq n 0 (1- mid)) (reverse (subseq n mid)))) (and (evenp len) (equal (subseq n 0 mid) (reverse (subseq n mid)))))) 转载于:https://www.cnblogs.com/tiandsp/archive/2012/04/03/2430722.html

matlab练习程序(灰度拉伸)

cl; img=imread('TestDatabase/1.bmp'); imshow(img); img=double(img); figure,imshow(mat2gray(img)) ma=double(max(max(img))); mi=double(min(min(img))); img=(255/(ma-mi))*img-(255*mi)/(ma-mi); img=uint8(img); figure,imshow(img) 转载于:https://www.cnblogs.com/tiandsp/archive/2012/03/04/2379128.html

OpenGL绘制框架

#include <windows.h> // Windows的头文件 #include <gl\gl.h> // OpenGL32库的头文件 #include <gl\glu.h> // GLu32库的头文件 #include <gl\glaux.h> // GLaux库的头文件 #include <gl\glut.h> // Glut库头文件 #pragma comment( lib, "opengl32.lib") // OpenGL32连接库 #pragma comment( lib, "glu32.lib") // GLu32连接库 #pragma comment( lib, "glaux.lib") // GLaux连接库 #pragma comment( lib, "glut.lib") // Glut链接库 void myInit() { glClearColor(1.0,1.0,1.0,0.0); //设置背景颜色为亮白 glColor3f(0.0f,0.0f,0.0f); //设置绘图颜色为黑色 glPointSize(4.0); //设置点的大小为4*4像素 glMatrixMode(GL_PROJECTION); //设置合适的矩阵 glLoadIdentity(); gluOrtho2D(0.0,640,0.0,480.0); } void myDisplay() { glClear(GL_COLOR_BUFFER_BIT); //清屏 glBegin(GL_POINTS); glVertex2i(100,50); //画一些点 glVertex2i(100,130); glVertex2i(150,130); glVertex2i(320,240);

【Java】得到当前系统时间,精确到毫秒

import java.text.SimpleDateFormat; import java.util.Date; import java.util.Calendar; public class MainProcess { public static void main(String[] args) { Calendar Cld = Calendar.getInstance(); int YY = Cld.get(Calendar.YEAR) ; int MM = Cld.get(Calendar.MONTH)+1; int DD = Cld.get(Calendar.DATE); int HH = Cld.get(Calendar.HOUR_OF_DAY); int mm = Cld.get(Calendar.MINUTE); int SS = Cld.get(Calendar.SECOND); int MI = Cld.get(Calendar.MILLISECOND); //由整型而来,因此格式不加0,如 2016/5/5-1:1:32:694 System.out.println(YY + "/" + MM + "/" + DD + "-" + HH + ":" + mm + "

c++得到窗口句柄

#include <Windows.h> #include <stdio.h> #include <tchar.h> #include <string.h> #include <iostream> using namespace std; int main() { HWND hd = GetDesktopWindow(); //得到桌面窗口 hd = GetWindow(hd, GW_CHILD); //得到屏幕上第一个子窗口 char s[200] = { 0 }; while (hd != NULL) //循环得到所有的子窗口 { memset(s, 0, 200); GetWindowText(hd, s, 200); if (strcmp(s,"计算器")==0) { cout << s << endl; break; } hd = GetNextWindow(hd, GW_HWNDNEXT); } // PostMessage(hd, WM_KEYDOWN, 0xd, 0x1C0001); // PostMessage(hd, WM_KEYUP, 0xd, 0xC01C0001); getchar(); return 0; } 转载于:https://www.

Exps on March 21st

// I'm broke. 我没钱。 Who will first break the ice, you guess? 你猜谁会先打破僵局? 提出要求建议:Would you please... ,而使用I hope... 有一种居高临下的感觉 situation 场景 How are you? 用于和熟人打招呼。 Did I make myself understood? 介绍用经典句型: Let me introduce Linda to you.(非正式) Have you met Linda?(非正式) Allow me to introduce Linda.(正式) I'd like you to meet Linda.(正式) 见面想交谈时:(围绕与两人都相关的话题展开) Are you going to Toronto, too? It's a long flight, isn't it? Are you here for Eng class, too?

[BAT]常用的bat命令和用法

Part One: echo、@、call、pause、rem 是批处理文件最常用的几个命令,我们就从他们开始学起。 echo表示显示此命令后的字符 echo off表示在此语句后所有运行的命令都不显示命令行本身 @与echo off相象,但它是加在其它命令行的最前面,表示运行时不显示命令行本身。 call调用另一条批处理文件(如果直接调用别的批处理文件 ,执行完那条文件后将无法执行当前文件后续命令) pause运行此句会暂停,显示Press any key to continue... 等待用户按任意键后继续 rem表示此命令后的字符为解释行(注释),不执行,只是给自己今后查找用的(::符号具有同样效果) 例:将根目录中所有文件写入a.txt中,启动UCDOS,进入WPS等功能。 批处理文件的内容为: 文件表示: echo off 不显示命令行 dir c:\*.* >a.txt 将c盘文件列表写入a.txt call c:\ucdos\ucdos.bat 调用ucdos echo 你好 显示"你好" pause 暂停,等待按键继续 rem 使用wps 注释将使用wps cd ucdos 进入ucdos目录 wps 使用wps 批处理文件中还可以像C语言一样使用参数,这只需用到一个参数表示符%。%表示参数,参数是指在运行批处理文件时在文件名后加的字符串。变量可以从%0到%9,%0表示文件名本身,字符串用%1到%9顺序表示。 例如,c: 根目录下一批处理文件名为f.bat,内容为 format %1 则如果执行c:\>f a: 则实际执行的是format a: 又如c: 根目录下一批处理文件的名为t.bat,内容为 type %1 type %2 那么运行c:\>t a.txt b.txt 将顺序地显示a.txt和b.txt文件的内容 if goto choice for 是批处理文件中比较高级的命令,如果这几个你用得很熟练,你就是批处理文件的专家啦。 if 表示将判断是否符合规定的条件,从而决定执行不同的命令。 有三种格式:

qml C++插件plugin.qmltypes

先上图: 在git上看到一个开源的工程,(git地址:https://github.com/machinekoder/QtKnobs) 下载下来后简单的研究了下。 这个工程主要是用C++写插件然后给qml调用。正好自己现在在学习这方面的知识,于是就记录一下。 1.下载并编译 下载后编译会生成三个文件:(这里生成的文件名被我改了) 2.生成 plugin.qmltypes文件 这一步,由于不太熟悉qmlplugindump,踩了不少坑。qmlplugindump 格式如下: 格式:qmlplugindump -nonrelocat Arg1 Arg2 Arg3 Arg4 Arg1 :module[插件]名称 Arg2 :module[插件]版本 Arg3 :插件所在的父路径 Arg4 :xxx.qmltypes的生成路径,一般是和qmldir一样的路径 我这里生成的信息如下: E:\QtPro\QML\QtKnobs\examples\testQtKnobs\QtKnobs>qmlplugindump -nonrelocatable QtKnobs 1.0 E:\QtPro\QML\QtKnobs\examples\testQtKnobs > E:\QtPro\QML\QtKnobs\examples\testQtKnobs\QtKnobs\plugin.qmltypes QCoreApplication::postEvent: Unexpected null receiver QCoreApplication::postEvent: Unexpected null receiver QCoreApplication::postEvent: Unexpected null receiver 生成文件内容如下:(截取了部分内容) 3.新建测试工程,测试源码如下: import QtQuick 2.4 import QtQuick.Window 2.2 import QtKnobs 1.0 Window { visible: true width: 800; height: 600; property int newVal : 0 Timer { interval: 1000; running: true; repeat: true onTriggered: newVal = Math.

【tensorflow】MTCNN网络基本函数read_single_tfrecord函数

tf.train.batch( tensors, batch_size, num_threads=1, capacity=32, enqueue_many=False, shapes=None, dynamic_pad=False, allow_smaller_final_batch=False, shared_name=None, name=None ) 函数功能:利用一个tensor的列表或字典来获取一个batch数据 参数介绍: tensors:一个列表或字典的tensor用来进行入队 batch_size:设置每次从队列中获取出队数据的数量 num_threads:用来控制入队tensors线程的数量,如果num_threads大于1,则batch操作将是非确定性的,输出的batch可能会乱序 capacity:一个整数,用来设置队列中元素的最大数量 enqueue_many:在tensors中的tensor是否是单个样本 shapes:可选,每个样本的shape,默认是tensors的shape dynamic_pad:Boolean值.允许输入变量的shape,出队后会自动填补维度,来保持与batch内的shapes相同 allow_samller_final_batch:可选,Boolean值,如果为True队列中的样本数量小于batch_size时,出队的数量会以最终遗留下来的样本进行出队,如果为Flalse,小于batch_size的样本不会做出队处理 shared_name:可选,通过设置该参数,可以对多个会话共享队列 name:可选,操作的名字 import tensorflow as tf import numpy as np import cv2 def read_single_tfrecord(tfrecord_file, batch_size, net): # generate a input queue # each epoch shuffle # 创建一个队列来维护输入文件列表 filename_queue = tf.train.string_input_producer([tfrecord_file], shuffle=True) # read tfrecord # 读取tfrecord文件 reader = tf.TFRecordReader() _, serialized_example = reader.read(filename_queue) image_features = tf.parse_single_example( serialized_example, features={ 'image/encoded': tf.

ExtJS初探:了解 Ext Core

Ext Core是一款和jQuery媲美的轻型JS库,基于MIT许可。对于Dom的操作,我个人还是比较喜欢用jQuery。当然如果项目中用的是ExtJS框架,也就没必要多引用一个jQuery,Ext Core是ExtJS框架的一个小子集。如果仅仅使用Ext Core的功能,则只需引入builds文件夹下的一个ext-core.js就可以了,无需css等其他文件。 由于浏览器DOM操作的差异,为了实现Web框架的跨浏览器特性,每个JS框架都会构建一个新类来操作DOM,在Ext Core中实现该功能的类就是Ext.Element。Ext.Element类中的方法很多,主要方法大致可归为这么几类:DOM查询和遍历、DOM操作、大小与定位和CSS样式操作。对于这些,我们可以在实际开发用到的时候去查看Ext Core API。为了开发效率,应该对Ext Core的一些常用功能函数做一个大致的了解。下面将分别进行简单介绍。 获取元素 第一种方式是Ext.get方法,它获取html节点并会创建Ext.Element实例: var el = Ext.get("elId"); 使用Ext.get会创建元素实例,并可在后期引用时使用。 另一种方式称为享元模式(Flyweight Design Pattern),是一种省内存的模式。如果是对元素的一次性操作,可使用Ext.fly方法。Ext.fly方法不会创建Ext.Element实例,实际它是利用全局共享的Ext.Element实例进行操作。一般在对元素的某个属性一次性的取值或设值时使用: Ext.fly("elId").getHeight(); //下面将div1存储起来是无效的。 var div1 = Ext.fly('div1'); Ext.fly('div2').frame(); //下面代码改变的是div2的高度。 div1.setHeight(200); 另外,有一个容易与上面两个方法混淆的是Ext.getCmp方法,该方法用来取得Ext组件。如: var text = new Ext.form.TextField({ id: "text", renderTo: Ext.getBody() }); Ext.getCmp("text").setWidth(200); Ext的组件是Ext对一个或多个html元素进行封装的集合,组件和元素有着本质的区别。 对于Ext容器组件(如Ext.Toolbar、Ext.form.FormPanel等)必须通过Ext.getCmp()获取。但对于非容器组件,可以根据Ext组件Id通过Ext.get和Ext.fly获取该组件对应的Ext.Element实例。如: var text = new Ext.form.TextField({ id: "text", renderTo: Ext.getBody() }); Ext.fly("text").setWidth(200); 虽然能通过fly或get获取到Ext组件对于的Ext.Element实例,但显然这实例不具有Ext组件的功能,比如上面代码Ext.fly("text")不能调用setValue()方法。关于Ext组件,我会在后续文章中对其进行专门的讲解。 上面三种获取元素的方法,不管是Ext组件编程还是DOM编程,都会经常用到。 还有一种Ext.getDom,它是用来获得普通dom元素的,也是将Ext.Element转换为普通dom元素的一种方式。它的参数可以是元素id,也可以是Ext.Element对象。 var div = Ext.get('div1'); var el = Ext.getDom('div1'); var el = Ext.getDom(div); 操作DOM和CSS Ext.

DirectUI中模态对话框和菜单的原理

经常有人问关于模态对话框和系统菜单内部实现原理方面的问题, 因为系统通过API隐藏了太多细节,这2个问题确实令初学者甚至是有经验的开发者困扰, 下面是我个人的一些经验总结。 先说模态对话框,外部看模态对话框其实就是Dialog弹出以后函数(或者说调用栈call stack)不直接返回, 而是要让你做出选择后关闭Dialog, 然后程序再继续往下执行。在你关闭Modal Dialog之前, 你不能做其他操作。 下面是我自己模拟模态对话框行为的代码: #define MODAL_DLG_EXIT_NOTIFY _T("modal_dialog_can_exit_now") #define MODAL_DLG_EXIT_VALUE _T("this_is_the_exit_code") int RunModal(HWND hWnd) { int nRet(-1); HWND hWndOwner = GetWindow(hWnd, GW_OWNER); BOOL bDisableOwner = FALSE; if (hWndOwner != GetDesktopWindow()) { _ASSERT(!(::GetWindowLong(hWndOwner, GWL_STYLE) & WS_CHILD)); EnableWindow(hWndOwner, FALSE); bDisableOwner = TRUE; } MSG msg = {0}; while (GetMessage(&msg, 0, 0, 0)) { TranslateMessage (&msg); DispatchMessageW (&msg); if (GetProp(hWnd, MODAL_DLG_EXIT_NOTIFY) != 0) { nRet = ( int )GetProp(hWnd, MODAL_DLG_EXIT_VALUE); break ; } } if (bDisableOwner) { EnableWindow(hWndOwner, TRUE); } DestroyWindow(hWnd); return nRet; } BOOL ExitModal(HWND hWnd, int nExitCode) { BOOL bRet = SetProp(hWnd, MODAL_DLG_EXIT_NOTIFY, (HANDLE)1); SetProp(hWnd, MODAL_DLG_EXIT_VALUE, (HANDLE)nExitCode); PostMessage(hWnd, WM_NULL, 0, 0); return bRet; } 可以看到,其实原理很简单, 主要就是Disable对话框的Owner窗口, 然后进入消息循坏, 直到你调用ExitModal (EndDialog) 才退出消息循坏。 现在你也应该知道为什么不能用DestroyWindow,而是一定要调用EndDialog来关闭模态对话框的原因了, 因为你直接DestroyWindow就没有机会Enable它的Owner窗口了。 下面我们再说菜单的实现原理, 相信菜单的原理即使对很多有经验的开发者也不一定清楚。 我们知道菜单其实也是一个普通的窗口,首先菜单窗口其实和模态对话框一样, 在我们关闭菜单,对菜单做出选择之前函数是不会返回的。 菜单窗口的特殊之处在于,菜单弹出的时候我们可以看到它下面的窗口还是保持激活状态, 也就是说当前的得到焦点的窗口其实是菜单的Owner窗口, 但是菜单窗口同时又能响应键盘消息(我们可以通过上下键或是Enter和Esc做出选择)。从窗口机制的原理上说两者是矛盾的,一个没有获得焦点的窗口怎么能够响应键盘消息呢? 下面是我自己对弹出菜单行为的模拟: #define MENU_EXIT_NOTIFY _T("

如何判断一个C++对象是否在堆栈上

摘要: 要解答这个问题,其实就是要知道的堆栈的起始地址, 而我们知道堆栈其实就是一段有相同属性的内存页面 阅读全文 Richard Wei 2012-05-12 10:57 发表评论 转载于:https://www.cnblogs.com/weiym/archive/2012/05/12/2653039.html

Word中设置文档结构图

点击菜单上的“视图”,在下拉框中选择“大纲视图”按钮,就会显示一个大纲工具栏。 在工具栏中,选择响应的“显示级别”,就可以设置相应级别的主题大纲了。 转载于:https://www.cnblogs.com/lanchong/archive/2011/08/30/2159689.html

mysql改成sqlserver产生的问题

在博物馆展示系统中,服务器开始使用的是Java + tomcat + mysql,由于交给了另外一个同学开发,所以改成了Java + tomcat + sqlserver。在建表时采用的是 create table test(id char(5) primary key,path char(20)) 在mysql和sqlserver产生的区别是:当程序取出path时,mysql会自动去掉后面的空格,而sqlserver则会保留。这样就会对后面的代码产生影响。 android不允许创建末尾是空格的文件名。 转载于:https://www.cnblogs.com/moiyer/archive/2011/10/28/2316159.html

javascript 刷新页面 关闭窗口[转]

下面以三个页面分别命名为frame.html、top.html、bottom.html为例来具体说明如何做。 frame.html 由上(top.html)下(bottom.html)两个页面组成,代码如下: 1 <! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > 2 < html > 3 < head > 4 < title > frame </ title > 5 </ head > 6 < frameset rows ="50%,50%" > 7 < frame name =top src ="top.html" > 8 < frame name =bottom src ="bottom.html" > 9 </ frameset > 10 </ html > 现在假设top.html (即上面的页面) 有七个button来实现对bottom.html (即下面的页面) 的刷新,可以用以下七种语句,哪个好用自己看着办了。 语句1. window.