readline

字符串太占内存了,我想了各种奇思淫巧对它进行压缩

醉酒当歌 提交于 2020-08-12 03:13:54
一:背景 1. 讲故事 在我们的一个全内存项目中,需要将一家大品牌店铺小千万的trade灌入到内存中,大家知道trade中一般会有 订单来源 , 省市区 ,当把这些字段灌进去后,你会发现他们特别侵蚀内存,因为都是字符串类型,不知道大家对内存侵蚀性是不是很清楚,我就问一个问题。 Answer: 一个空字符串占用多大内存? 你知道吗? 思考之后,下面我们就一起验证下,使用windbg去托管堆一查究竟,代码如下: static void Main(string[] args) { string s = string.Empty; Console.ReadLine(); } 0:000> !clrstack -l OS Thread Id: 0x308c (0) Child SP IP Call Site ConsoleApp6.Program.Main(System.String[]) [C:\dream\Csharp\ConsoleApp1\ConsoleApp6\Program.cs @ 19] LOCALS: 0x00000087391febd8 = 0x000002605da91420 0:000> !DumpObj /d 000002605da91420 Name: System.String String: Fields: MT Field Offset Type VT

python之文件和素材

有些话、适合烂在心里 提交于 2020-08-12 00:15:15
11.1 打开文件 open函数 open(name[,mode[,buffering]]) >>>f = open(r'C:\text\somefile.txt') 11.1.1 文件模式 open函数中模式参数的常用值 'r' 读模式 'w' 写模式 'a' 追加模式 'b' 二进制模式 '+' 读/写模式 通过在模式参数中使用U参数能够在打开文件时使用通用的换行符支持模式,在这种模式下,所有的换行符/字符串(\r\n,\r或者是\n)都被转换成\n,而不用考虑运行的平台。 11.1.2 缓冲 open函数的第三个参数控制者文件的缓冲。如果参数是0或者False,I/O无缓冲的;如果是1或者True,就是有缓冲,大于1的数字代表缓冲区的大小,-1代表使用默认的缓冲区大小 11.2 基本文件方法 三种标准的流 数据输入得标准源是sys.stdin。 要打印的文本保存在sys.stdout内。 错误信息被写入sys.stderr. 11.2.1 读和写 文件最重要的能力是提供或者接受数据。如果一个名为f的类文件对象,那么就可以用f.write方法和f.read方法写入和读取数据。 每次调用f.write(string)时,所提供的参数string会被追加到文件中已存在部分的后面。 >>>f = open('somefile.txt','w') >>>f.write('Hello,

python多种读写excel等数据文件的方式(收藏篇)

无人久伴 提交于 2020-08-11 23:44:40
前言: python处理数据文件的途径有很多种,可以操作的文件类型主要包括文本文件(csv、txt、json等)、excel文件、数据库文件、api等其他数据文件。下面小编整理下python到底有哪些方式可以读写数据文件。 1. read、readline、readlines read() :一次性读取整个文件内容。推荐使用read(size)方法,size越大运行时间越长 readline() :每次读取一行内容。内存不够时使用,一般不太用 readlines() :一次性读取整个文件内容,并按行返回到list,方便我们遍历 2. 内置模块csv python内置了csv模块用于读写csv文件,csv是一种逗号分隔符文件,是数据科学中最常见的数据存储格式之一。csv模块能轻松完成各种体量数据的读写操作,当然大数据量需要代码层面的优化。 csv模块读取文件: # 读取csv文件 import csv with open('test.csv','r') as myFile: lines=csv.reader(myFile) for line in lines: print (line) csv模块写入文件: import csv with open('test.csv','w+') as myFile: myWriter=csv.writer(myFile) #

获取上次打开目录

五迷三道 提交于 2020-08-11 23:28:51
路径简单保存到csv文件的方式,下次直接获取。 调用方法: try { dialog.SelectedPath = FolderPathHelper.GetLastPath( " 9009 " , " 菜单1 " ); } catch (Exception ex) { Log($ " 获取路径失败:{ex.ToString()} " ); #if DEBUG throw ex; #endif } try { FolderPathHelper.SavePath( " 9009 " , " 菜单1 " , " C:\\ " ); } catch (Exception ex) { Log($ " 保存路径失败:{ex.ToString()} " ); #if DEBUG throw ex; #endif } 保存与获取的类: public class FolderPathHelper { public static string GetLastPath( string user, string menu) { string currentPath = Directory.GetCurrentDirectory() + " \\UserPath\\LastPath.csv " ; if (! File.Exists(currentPath)) { return "" ; } var

Python标准库PDF高清完整版免费下载|百度云盘

限于喜欢 提交于 2020-08-11 20:58:28
百度云盘:Python标准库PDF高清完整版免费下载 提取码:fuvm 内容简介 本书由资深Python专家亲自执笔,Python语言的核心开发人员作序推荐,权威性毋庸置疑。 对于程序员而言,标准库与语言本身同样重要,它好比一个百宝箱,能为各种常见的任务提供完美的解决方案,所以本书是所有Python程序员都必备的工具书!本书以案例驱动的方式讲解了标准库中一百多个模块的使用方法(如何工作)和工作原理(为什么要这样工作),比标准库的官方文档更容易理解(一个简单的示例比一份手册文档更有帮助),为Python程序员熟练掌握和使用这些模块提供了绝佳指导。 全书一共19章,系统而全面地对Python标准库中的一百多个模块进行了生动的讲解。这些模块主要包括:文本处理工具模块、与数据结构相关的模块、与算法有关的模块、管理日期和时间值的模块、用于数学计算的模块、管理文件系统的模块、用于数据存储与交换的模块、用于数据压缩与归档的模块、用于加密的模块、与进程和线程相关的模块、与网络通信和Email相关的模块、构建模块、支持处理多种自然语言和文化设置的模块、开发工具模块、与运行时特性相关的模块,等等。 作者简介 Doug Hellmann目前是Racemi公司的一位高级开发人员,也是Python Software Foundation的信息交流主管。从1.4版开始他就一直在做Python编程

C# 基础知识系列- 17 小工具优化

时间秒杀一切 提交于 2020-08-11 18:27:27
0. 前言 不知道有没有动手能力强的小伙伴照着上一篇的内容写过程序呢?如果有的话,应该会在使用的时候发现以下几个问题: 每次启动都需要经过漫长的时间去遍历磁盘里的文件目录 因为数据是用的字典保存的,所以会消耗大量的内存空间 不能多次查询 现在我们就针对这些问题,让我们的小工具实用起来。 1. 分析与实现 在动手之前,我们先分析一下问题。在实际开发之前,无论是接到什么需求都要先仔细分析一下,确定好方案再动手方为开发的正道。嗯,没毛病。因为开发过程中跟产品对线、跟客户对线要占整个项目的一半左右时间。好了,不废话了。继续: 遍历文件目录的时间过长,那么我们是不是可以用异步并发去遍历呢? 数据用字典保存会消耗内存空间,那么我们是不是可以用其他的方式保存呢? 不能多次查询,是不是可以使用循环,然后设置一个退出条件? 1.1 C#的异步/并发实现 在C#里,异步和并发的实现是依据线程、任务来实现的。在之前《C# 基础知识系列- 12 任务和多线程》里大概介绍了一下线程和任务,我们知道线程本身是没法返回数据的,它与主线程进行数据交互的过程十分需要注意线程安全。而任务可以返回数据,不需要像线程一样小心翼翼地与主线程进行数据交互。任务有一个优点,它比线程更轻量,所以在当前环境下我们可以试试任务。 当然,线程也有优点,那就是线程的运行环境相对更封闭一点,它能完成一个长的大型运算。 那么继续上一篇的内容

LEADTOOLS如何检测,读取和写入条形码

孤街浪徒 提交于 2020-08-11 15:21:28
工作场所中存在许多多页的文件。能够加载、拆分和提取是许多应用程序的重要需求。一些最常见的多页文件类型是:PDF,TIFF和Microsoft Office格式,例如Docx,Doc,Xls和Xlsx。LEADTOOLS支持所有这些格式以及30多种其他多页格式。由于存在多种不同类型的多页格式,因此尝试支持常见的格式可能会让人头疼,而试图支持所有这些格式的也像一场噩梦。幸运的是, LEADTOOLS SDK 可以用不到五行代码来完成此应用程序。 LEADTOOLS (Lead Technology)由Moe Daher and Rich Little创建于1990年,其总部设在北卡罗来纳州夏洛特。LEAD的建立是为了使Daher先生在数码图象与压缩技术领域的发明面向市场。在过去超过30年的发展历程中,LEAD以其在全世界主要国家中占有的市场领导地位,在数码图象开发工具领域中已成为既定的全球领导者。LEADTOOLS开发与发布的LEAD是屡获殊荣的开发工具包。 点击查看LEADTOOLS 系列产品 在对条形码内的机器可读数据进行编码和解码时,速度和准确性是关键。LEADTOOLS提供的顶级计算机视觉条形码库比市场上任何其他条形码SDK都更快,更可靠,从而确保您始终获得最佳结果。 无论是在驾照背面找到的PDF417条码,在贴纸上是QR条码,还是在产品背面是UPC条码

Flume简介与详细安装教程

孤人 提交于 2020-08-11 14:47:04
Flume简介 Flume是Cloudera提供的日志收集系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。 Flume是一个分布式、可靠和高可用的海量日志采集、聚合和传输的系统。 Flume拥有基于数据流上的简单灵活架构,支持容错、故障转移与恢复。 Flume具有 Reliability、Scalability、Manageability和Extensibility 特点: 1.Reliability :Flume提供3中数据可靠性选项,包括End-to-end、Store on failure和Best effort。其中End-to-end使用了磁盘日志和接受端Ack的方式,保证Flume接受到的数据会最终到达目的。Store on failure在目的不可用的时候,数据会保持在本地硬盘。和End-to-end不同的是,如果是进程出现问题,Store on failure可能会丢失部分数据。Best effort不做任何QoS保证。 2.Scalability :Flume的3大组件:collector、master和storage tier都是可伸缩的。需要注意的是,Flume中对事件的处理不需要带状态,它的Scalability可以很容易实现。 3.Manageability

Qt开源作品22-运行时间记录类

拜拜、爱过 提交于 2020-08-11 12:23:33
一、前言 在早期开发的软件中,尤其是初学者入门者写的软件,软件运行久了,难免遇到意外崩溃的时候,可是大部分的运行设备可能在现场客户那,需要记住每一次从软件启动后到软件意外关闭前的运行时间,需要记录的信息包括:编号+开始时间+结束时间+已运行时间,每次完整的运行过程只产生一条记录,每次运行时间改变以后更新当前这条记录即可。这样就可以确切的了解到软件在现场的真实运行情况是否糟糕,如果没有这个记录(当然可以选择记录存储到数据库),程序又重启恢复了,也不知道到底每次运行了多久,从几点到几点。为了写的简单点,不干扰原有的数据库文件,我一般选择输出到文本文件。 主要功能: 可以启动和停止服务,在需要的时候启动。 可以指定日志文件存放目录。 可以指定时间日志输出间隔。 可以单独追加一条记录到日志文件。 日志为文本格式,清晰明了。 二、代码思路 void SaveRunTime::getDiffValue(const QDateTime &startTime, const QDateTime &endTime, int &day, int &hour, int &minute) { qint64 sec = startTime.secsTo(endTime); day = hour = minute = 0; int seconds = 0; while (sec > 0) { seconds++

微信小程序之java服务端获取openid

岁酱吖の 提交于 2020-08-11 07:18:28
微信小程序越来越热,最近团队写了一个小程序,这篇博客我将讲一下怎么通过java服务端获取到用户的openid。 api文档的授权登陆地址: http://developers.weixin.qq.com/miniprogram/dev/api/api-login.html 首先我们看下小程序官方的api文档的一张图: 我把我们服务端的部分用红框框起来了。 图的意思就是前台小程序通过wx.login()这个接口获取了一个code。 前台把code连同appid和secret请求发给服务端,服务端接收后通过访问微信接口服务从而获取到openid和session_key。 我们继续看: 从图看出,接口地址即为上面说的服务端访问地址。 请求的参数有四个。 appid和secret开发者可以通过微信公众平台->设置->开发设置,从而找出appid和secret。 js_code就是上面说的前台通过调用wx.login()获得一个code。 grant_type默认为authorization_code。 访问后接口地址将返回json字符串,里面携带着openid和seesion_key。 下面通过代码来演示: 写一个访问工具类: package utils; import java.io.BufferedReader; import java.io.InputStreamReader;