12 2023 档案
摘要:项目组提供了一个AAR文件供下游业务团队集成。 某天,下游团队反馈了一个紧急的问题,最终客户的开发者使用Android Studio打包时,构建工具提示构建失败,原因是存在重复的c++_shared库文件,建议使用pickFirst命令来修复。 最终客户的开发者查阅了一些资料,按照帖子的建议,在项目
阅读全文
摘要:近两周投入分析产品的内存泄漏问题。 测试团队反馈产品在安卓平台运行时,随用户操作,应用占用的内存出现上涨的趋势,停止操作并等待一段时间之后,应用占用的内存没有下降,怀疑存在内存泄漏问题。 结合复现的情况,以及一些统计数据,初步确实存在内存泄漏的现象,每次操作都会出现20MB左右的内存无法回收。 在W
阅读全文
摘要:本文于2016年4月完成,发布在个人博客网站上。 考虑个人博客因某种原因无法修复,于是在博客园安家,之前发布的文章逐步搬迁过来。 诡异的问题 分析AppScan扫描报告的时候,发现报告里提示“HTTP动词篡改导致的认证旁路”,一个名字很长,很怪异的问题。咨询度娘没有获取到必要的信息,于是只好按照Ap
阅读全文
摘要:参照OpenHarmony应用开发环境安装流程,下载安装OHOS的IDE,过程中需要全程联网。 IDE,安装至D:\Tools\Huawei\DevEcoStudio。 IDE安装成功之后,按照提示下载安装HOS和OHOS的SDK。 nodejs,安装至D:\Tools\Huawei\nodejs。
阅读全文
摘要:本文于2016年3月完成,发布在个人博客网站上。 考虑个人博客因某种原因无法修复,于是在博客园安家,之前发布的文章逐步搬迁过来。 nginx的配置方法 可以参考Jerry Qu的本博客 Nginx 配置之完整篇。 Tomcat的配置方法 以Java语言实现的Connector为例,介绍配置方法。 创
阅读全文
摘要:Windows Terminal是微软Windows平台难得好用的工具。 由于工作内容的原因,需要打开多个CMD窗口、多个git bash窗口,并且在多个窗口间切换,因此命令行窗口支持多TAB的特性,变成了一个刚需,而这正是Windows Terminal的卖点。 在网上查找资料时无意中看到工具的介
阅读全文
摘要:使用windbg分析dump文件的步骤。 准备工作。 打开dump文件。 指定符号表文件的路径。 指定可执行文件的路径。 指定源码文件的路径。 在windbg的命令行,输入并执行如下命令 .reload,重新加载前述数据文件。 !analyze -v,分析dump文件。 kbn,得到崩溃时的调用栈信
阅读全文
摘要:在ubuntu环境下,链接可执行文件时增加-pie选项,双击可执行程序,无法正常启动。 对于这个现象,stackoverflow有个帖子,gcc creates mime type application/x-sharedlib instead of application/x-applicatio
阅读全文
摘要:使用CMake,启用RUNPATH特性,可以参考官方帖子。 如下源码来自于上述帖子。 CMAKE_MINIMUM_REQUIRED(VERSION 2.8 FATAL_ERROR) PROJECT(RUNPATH C) SET(CMAKE_VERBOSE_MAKEFILE ON) SET(CMAKE
阅读全文
摘要:本文于2015年底完成,发布在个人博客网站上,标题为《2015年全年回顾》。 考虑个人博客因某种原因无法修复,于是在博客园安家,之前发布的文章逐步搬迁过来。 一不小心,今天已经是2015年的12月初,猛然发现2015年马上就要过去了,但似乎很多事情还未完成。 今天休息,正好做一下总结。 工作总结 项
阅读全文
摘要:这个标题不够严谨,不同业务领域下的模型,没有可比性。因此,应当增加一定的限定条件,才能对机器学习的模型进行比较。 当前可行的限定条件,如下: 模型 模型结构 参数的数量 训练算法 训练时长 数据 训练数据集 验证数据集 数据质量 基础平台 训练平台 硬件 软件 运行平台 硬件 软件 在给定上述条件时
阅读全文
摘要:转写时长超出60秒的语音文件,业界的竞品通常会使用创建异步转写任务的方式来提供支持。 一个简单、直接的实现方案,即: 网关服务接收到来自客户的转写请求时,将任务信息持久化至任务队列中。 由算法服务的实例从任务队列中提取任务,并执行转写操作。 待执行完毕之后,将转写结果保存至DB中,供调用方查询。 本
阅读全文
摘要:本文于2016年3月完成,发布在个人博客网站上。 考虑个人博客因某种原因无法修复,于是在博客园安家,之前发布的文章逐步搬迁过来。 近日项目组对当前开发、维护的Web系统做了AppScan扫描,扫描的结果惨不忍睹,问题很多。报告中报到“缺乏HTTP安全头部”。之前对HTTP协议的安全头部了解不多,为了
阅读全文
摘要:HttpOnly是什么 简单的说: HttpOnly是Cookie的属性; Web服务器通过为Cookie设置这个属性,告诉浏览器应当避免页面端的脚本访问对应Cookie的值,保证被Cookie承载的敏感信息不被恶意读取; Web服务器可以保存一些用户的敏感数据到Cookie中,实现比如SSO的功能
阅读全文
摘要:本文于2017年3月份完成,发布在个人博客网站上。 考虑个人博客因某种原因无法修复,于是在博客园安家,之前发布的文章逐步搬迁过来。 最近在研究docker的使用方法,恰好手边有一本docker源码分析的书,所以在ubuntu环境下准备了一套golang的开发环境,便于在学习docker使用的时候顺便
阅读全文
摘要:本文记录的是2016年4月初发生的事情。 前几天,标准CI的静态检查页面发现一个项目组同事引入的FindBugs问题,EQ_COMPARETO_USE_OBJECT_EQUALS,CI对这个问题给出的介绍如下 Class defines compareTo(...) and uses Object.
阅读全文
摘要:本文于2016年4月完成,发布在个人博客网站上。 考虑个人博客因某种原因无法修复,于是在博客园安家,之前发布的文章逐步搬迁过来。 前段时间测试MM反馈了一个问题,在富文本编辑器里上传的图片无法正常呈现。因为Jackie在本机的环境上没有观察类似的现象,而恰好那天测试环境的某个重要配项被改错了,于是J
阅读全文
摘要:本文于2017年上半年完成,发布在个人博客网站上。 考虑个人博客因某种原因无法修复,于是在博客园安家,之前发布的文章逐步搬迁过来。 最近由于工作关系,接触到了docker技术。为了对docker有更多的了解,于是花时间在家里的Windows 10机器上准备了docker的运行环境,方便在业余时间学习
阅读全文
摘要:本文于2015年底完成,发布在个人博客网站上。 考虑个人博客因某种原因无法修复,于是在博客园安家,之前发布的文章逐步搬迁过来。 背景 前段时间研究使用YUI Compressor压缩项目里的js和css文件,研究了两天之后,终于在周三晚上把YUI Compressor集成进了打包流程中;于是周四(2
阅读全文
摘要:最近参与一个新项目,这个项目使用cmake作为构建系统。作为Java程序员,平常都使用ant或者maven来构建,难得有机会接触cmake之类的工具,所以参与这个项目是个学习cmake的好机会。 但干活之初,首先要备好工具。参考安装指导,在测试环境上基于cmake源码完成安装。具体步骤如下。 全新安
阅读全文
摘要:本文于2016年底完成,发布在个人博客网站上,标题为《2016年全年回顾》。 考虑个人博客因某种原因无法修复,于是在博客园安家,之前发布的文章逐步搬迁过来。 元旦后第一个工作日,上午请假办理宝宝的医保,比较重要;办事人员叮嘱说每年的12月10日~12月25日可以办理,以后可不能像这次拖这么久。 工作
阅读全文
摘要:对于语音识别产品的实施方案,给出简易的业务流程,仅供参考。 如下流程图,可以使用如下两个站点查看。 web chart Web Sequence Diagrams 文件转写 创建文件转写任务 客户应用->接入网关: 发送创建文件转写的请求 接入网关->安全网关: 转发请求 安全网关->安全网关: 对
阅读全文
摘要:针对语音识别的产品,分别记录设计、开发过程中的决策点。 实时语音识别 对于实时语音识别来说,客户端和服务端之间实时交换语音数据和识别的结果。 客户端在启动识别时,即开始发送语音数据,期望在等待较短的时间后,即收到最初的识别结果。第一段语音数据和第一个识别结果之间的时延,一般称为首字时延。 客户端在停
阅读全文
摘要:一般而言,业务诉求作为架构设计的输入。 需求清单 对于语音识别产品而言,需满足的需求,举例如下: 功能需求 文件转写。 长文件转写,时长大于60秒,小于X小时,X可以指定为5。 短文件转写,时长小于60秒。 实时语音识别。 长语音识别,时长大于60秒,小于Y小时,Y可以指定为5。 短语音识别,时长小
阅读全文
摘要:本文记录,作为项目主要负责人,完整参与语音识别项目的交付历程。 2019年12月中旬 接到项目交付任务,收集基本知识,启动业务分析工作。 2020年1月 完成竞品分析的整理。 梳理合作伙伴的清单,整理项目计划,启动和各合作伙伴的沟通工作。 启动架构方案、设计方案的准备工作。 2020年2月 和合作伙
阅读全文
摘要:对于通常的软件项目,参与角色,比如可以有用户,消费者,产品团队,研发团队(研发团队包括开发和测试),运营团队,运维团队,管理团队。 通常认为,用户,负责购买服务的群体,而消费者,负责使用业务的群体。这两个群体,不在本文的讨论范围之内,因此后续的介绍中,除非明确说明,否则默认均不涉及。 产品团队,研发
阅读全文
摘要:本文于2015年底完成,发布在个人博客网站上,标题为《项目总结--纪念我参与过的IPTV SQM项目》。 考虑个人博客因某种原因无法修复,于是在博客园安家,之前发布的文章逐步搬迁过来。 时间很快,离开SQM团队已接近10个月,对于参与了5年的项目,很早就想写些什么来纪念;现在终于找到了时间,用自己半
阅读全文
摘要:分析Google、讯飞、百度、阿里、QQ、搜狗等大厂的ASR服务,可以罗列出一款ASR服务所需要具备的能力。 产品分类 ASR云服务产品,从用户体验、时效性、音频时长,可以划分为如下几类: 实时短音频转写,可以用于支撑输入法、搜索、导航等场景。 实时长音频转写,可以用于支撑视频字幕、图文直播、会议直
阅读全文
摘要:本文深入探讨前处理环节。 首先介绍一些基本的名词,比如 文件名后缀 文件格式 音频格式 采样率和位深 预备知识 文件名后缀、文件格式和音频格式 常见的音频文件,比如.wav、.mp3、.m4a、.wma等,这些都代表什么? 仅仅是这类音频文件的后缀而已,不一定和音频文件的编码、音频数据的编码相关。
阅读全文
摘要:本文深入探讨后处理环节。 在本环节要处理的重要特性有分词、断句、标点符号、大小写、数字等的格式归一等。 分词 和NLP、搜索等场景下的分词含义不同。对于拼音类的语言,比如英语、法语等,句子由多个单词组成,语音输出的结果,需要按需在各个单词之间补充或者去掉空格。对于中文来说,字和词之间不以空格作为边界
阅读全文
摘要:使用机器学习方法来训练模型,使用训练得到的模型来预测语音数据,进而得到识别的结果文本,这是实现语音识别产品的一般思路。 本文着重介绍通用语音识别产品对于数据的诉求。 对数据的要求 训练集 相关要求,如下: 地域,需要覆盖使用人群所在的地域,且数据的比例适中。 口音,需要覆盖典型的口音。 年龄,从18
阅读全文
摘要:准备工作 安装构建时依赖的基础软件 软件清单如下: bzip2 python3 automake libtool cmake gcc g++ gfortran git subversion 不同平台安装软件的方式不同,比如可以使用yum或者apt-get等。 下载开源软件 软件清单如下: Libun
阅读全文
摘要:本文深入探讨语音识别处理环节。 本阶段的重点特性为语音识别、VAD、热词、文本的时间偏移、讲话人的识别等。 语音识别 业界流派众多,比如Kaldi、端到端等,具体选择哪一种,需要综合考虑人员能力、训练数据量和质量、硬件设施、交付周期等,作出相对合理的交付规划。 基于Kaldi的方案,优点在于其发挥稳
阅读全文
摘要:对于应用星型建模来建设数据仓库业务,在工程实践时绕不开的一个话题。但在数据仓库工具箱(第3版)- 维度建模权威指南和大数据之路 - 阿里巴巴大数据实践却没有详细说明,很有意思。 我接触数据仓库类业务时间不长,距今不过9个月左右,但在这个问题上迷惑了很长时间。前后咨询了多位从业同事,他们给出了很多答案
阅读全文
摘要:产品内部前期有一个共识,依据业务要求的时效性来选择技术平台,即: 实时类业务,时效性小于2小时,则使用HANA构建。 离线类业务,时效性大于2小时,则使用大数据平台构建。 经过五月、六月两月的努力,离线类的业务已基本完成开发和验证完毕,后面待在生产环境对数完毕后,即可启动切换。 因此实时类业务的方案
阅读全文
摘要:依据部门的统计数据,70%的生产事故都和生产变更操作相关,而究其原因,重要的一点即是变更方案准备不充分,导致生产变更过程中的操作和实施步骤中的操作存在差异,重要操作在实施步骤中存在遗漏、细节缺失,对于可能出现的意外场景,准备不充分,缺少预案,或者预案实施后会引发其它的次生问题。 自18年10月接手X
阅读全文
摘要:转岗之初 18年9月,转岗至新部门,主业是数据仓库类的项目。 部门主管安排我们几个一起转岗的同事,线下学习资料,比如大数据之路:阿里巴巴大数据实践和数据仓库工具箱。 喜接新项目 10月国庆节后,10号晚,到达深圳。 11号上午去部门报到,导师告知我将接手一个项目组,简称G。在我还在苦思项目G的含意时
阅读全文
摘要:索引的参数,分为两类: 静态参数,仅支持在创建索引时指定,或者关闭索引后指定。 动态参数,允许在索引工作期间指定或者修改。 静态参数 index.number_of_shards 默认值为1。 本参数用于控制主分片的数量,仅支持在创建时指定,对于已关闭的索引,修改本参数不会生效。 es.index.
阅读全文
摘要:MinIO提供了一个命令行程序mc用于协助用户完成日常的维护、管理类工作。 官方资料 mc diff 检查指定桶内对象清单的差异,注意不比较对象内容的差异,命令如下: ./mc diff local1/bkt1 local1/bkt2 控制台的输出,如下: < http://192.168.0.10
阅读全文
摘要:MinIO提供了一个命令行程序mc用于协助用户完成日常的维护、管理类工作。 官方资料 mc head 查看对象的前N行内容,N默认为10,命令如下: ./mc head local1/bkt1/docker-compose 控制台的输出,如下: #!/bin/bash # # Run docker-
阅读全文
摘要:MinIO提供了一个命令行程序mc用于协助用户完成日常的维护、管理类工作。 官方资料 mc stat 获取指定桶或者对象的信息,包含对象的元数据。 指定桶bkt1,查看信息,命令如下: ./mc stat --recursive local1/bkt1 控制台的输出,如下: Name : bkt1/
阅读全文
摘要:MinIO提供了一个命令行程序mc用于协助用户完成日常的维护、管理类工作。 官方资料 mc share mc share download mc share upload 生成下载对象的URL,指定对象名称,命令如下: ./mc share download --recursive local1/b
阅读全文
摘要:MinIO提供了一个命令行程序mc用于协助用户完成日常的维护、管理类工作。 官方资料 mc rm 删除指定的对象。 准备待删除的对象,查看对象,命令如下: ./mc ls local1/bkt2/ 控制台的输出,如下: [2023-12-16 01:52:54 CST] 153B STANDARD
阅读全文
摘要:MinIO提供了一个命令行程序mc用于协助用户完成日常的维护、管理类工作。 官方资料 mc mv 将对象在桶之间移动。 在桶内准备好待移动的文件,检查对象,命令如下: ./mc ls local1/bkt1/ 控制台的输出,如下: [2023-12-16 01:18:58 CST] 1.4KiB S
阅读全文
摘要:MinIO提供了一个命令行程序mc用于协助用户完成日常的维护、管理类工作。 官方资料 mc cp 上传文件至指定桶内,命令如下: ./mc cp ./local.json local1/bkt1/ 控制台的输出,如下: ...jackie/software/minio/local.json: 153
阅读全文
摘要:MinIO提供了一个命令行程序mc用于协助用户完成日常的维护、管理类工作。 官方资料 mc rb 彻底删除指定的桶。 命令如下: ./mc rb local1/bkt1 控制台的输出,如下: mc: <ERROR> `local1/bkt1` is not empty. Retry this com
阅读全文
摘要:MinIO提供了一个命令行程序mc用于协助用户完成日常的维护、管理类工作。 官方资料 mc du 用于输出桶内对象的数量和占用的空间。 命令如下: ./mc du local1/bkt1 控制台的输出,如下: 92MiB 2 objects bkt1 增加递归输出的选项--recursive,命令如
阅读全文
摘要:MinIO提供了一个命令行程序mc用于协助用户完成日常的维护、管理类工作。 官方资料 mc mb MinIO对象锁定 桶版本控制 桶复制 站点复制概述 创建桶bkt1,命令如下: ./mc mb local1/bkt1 控制台的输出,如下: Bucket created successfully `
阅读全文
摘要:MinIO提供了一个命令行程序mc用于协助用户完成日常的维护、管理类工作。 官方资料 mc license mc license info mc license register mc license update MinIO当前使用双License,即GNU AGPL v3和商业License。
阅读全文
摘要:MinIO提供了一个命令行程序mc用于协助用户完成日常的维护、管理类工作。 官方资料 mc ls 列出本地硬盘上的文件,命令如下: ./mc ls 控制台的输出,如下: [2023-12-14 23:22:48 CST] 4.0KiB config/ [2023-12-14 23:31:03 CST
阅读全文
摘要:MinIO提供了一个命令行程序mc用于协助用户完成日常的维护、管理类工作。 官方资料 mc ping 检查指定的MinIO节点的服务是否可用。 不带参数,命令如下: ./mc ping local1 执行时需要手工停止,控制台的输出,如下: 1: http://192.168.0.109:9000:
阅读全文
摘要:MinIO提供了一个命令行程序mc用于协助用户完成日常的维护、管理类工作。 官方资料 mc cat 使用cat命令输出本地硬盘上的文本文件的内容至控制台。 ./mc cat ./local.json 控制台的输出,如下: {"url":"http://192.168.0.109:9000","acc
阅读全文
摘要:MinIO提供了一个命令行程序mc用于协助用户完成日常的维护、管理类工作。 官方资料 mc tree 使用树的形式,输出桶内的目录和文件。 ./mc tree --files local1/bkt1 控制台的输出,如下: local1/bkt1 └─ a1.txt 使用树的形式,输出本地目录下的目录
阅读全文
摘要:MinIO提供了一个命令行程序mc用于协助用户完成日常的维护、管理类工作。 官方资料 mc alias mc alias list mc alias remove mc alias set mc alias import mc alias export 使用AK/SK创建一个新的别名,命令如下: .
阅读全文
摘要:MinIO 是一种高性能、S3 兼容的对象存储。 官方资料 中国官网 代码仓库 安装和部署MinIO 单节点单硬盘部署MinIO 单节点多硬盘部署MinIO 多节点多硬盘部署 站点复制概述 管理现有的MinIO部署 扩展一个分布式MinIO部署 升级部署MinIO 关闭服务器池 从网关或文件系统模式
阅读全文
摘要:对于filter查询,ElasticSearch提供了缓存查询结果的特性,当缓存中存在满足查询条件要求的数据时,直接从缓存中提取查询结果。 对于ElasticSearch节点,该节点上的所有shard共享同一个缓存区域。 ElasticSearch基于LRU算法来管理缓存中的数据,当空间不足以承载最
阅读全文
摘要:对于查询操作,Elasticsearch提供了缓存特性来暂存结果。 对于相同条件的查询请求,在缓存中的数据失效前,响应后续的查询操作时可以直接从缓存中提取结果,有效降低检索操作的时延,提升检索数据时的体验。 提到缓存相关的特性,即要关注如下几点: 缓存的开关 缓存中的数据哪里来 缓存占用的空间 缓存
阅读全文
摘要:使用本方法,显式的执行refresh操作。 默认情况下,ElasticSearch启动后台任务,周期性执行refresh操作,周期使用参数index.refresh_interval控制。 本方法触发的refresh为同步操作,运行完毕之后才会返回任务的执行结果。 指定索引,执行refresh操作。
阅读全文
摘要:获取指定索引的统计数据。 获取指定索引的全部统计数据,命令样例如下: curl -X GET "https://localhost:9200/testindex_001/_stats?pretty" --cacert $ES_HOME/config/certs/http_ca.crt -u "ela
阅读全文
摘要:获取指定索引的参数的值。 获取指定索引的全部参数,命令样例如下: curl -X GET "https://localhost:9200/testindex_002/_settings?pretty" --cacert $ES_HOME/config/certs/http_ca.crt -u "el
阅读全文
摘要:获取指定索引的基本信息。 命令样例如下: curl -X GET "https://localhost:9200/testindex_001?pretty" --cacert $ES_HOME/config/certs/http_ca.crt -u "elastic:ohCxPH=QBE+s5=*l
阅读全文
摘要:检查指定名称的索引是否存在。 命令样例如下: curl -I "https://localhost:9200/testindex_002?pretty" --cacert $ES_HOME/config/certs/http_ca.crt -u "elastic:ohCxPH=QBE+s5=*lo7
阅读全文
摘要:删除指定的索引。 同时删除索引关联的数据、分片、元数据等相关的资源,因此执行前需要慎重。 命令样例如下: curl -X DELETE "https://localhost:9200/testindex_003?pretty" --cacert $ES_HOME/config/certs/http_
阅读全文
摘要:打开指定的索引。 命令样例如下: curl -X POST "https://localhost:9200/testindex_003/_open?pretty" --cacert $ES_HOME/config/certs/http_ca.crt -u "elastic:ohCxPH=QBE+s5
阅读全文
摘要:关闭指定的索引。 索引关闭之后: 停止对读、写操作的响应。 停止检索操作的响应。 在索引关闭前,允许执行的操作,关闭之后均不允许执行。 ElasticSearch取消对索引的相关维护操作,包含内存中的数据结构,以及保存在存储中的数据。 占用的存储空间,并不会主动释放。ElasticSearch不会删
阅读全文
摘要:使用已有的索引,复制得到一个索引。 关闭testindex_001的写入操作,命令样例如下: curl -X PUT "https://localhost:9200/testindex_001/_settings?pretty" -H 'Content-Type: application/json'
阅读全文
摘要:创建指定名称的index。 命令样例如下: curl -X PUT "https://localhost:9200/testindex_002?pretty" -H 'Content-Type: application/json' -d' { "settings": { "index": { "nu
阅读全文
摘要:本方法用于清理缓存。 命令样例如下: curl -X POST "https://localhost:9200/testindex_001/_cache/clear?pretty" --cacert $ES_HOME/config/certs/http_ca.crt -u "elastic:ohCx
阅读全文
摘要:本API用于分析、统计指定index当前占用的存储空间。 考虑到本特性目前仍然处于预览状态,因此使用方法、参数等可能会发生变化,或者未来也许会被删除。 本API暂时不建议在生产系统中使用。 命令样例如下: curl -X POST "https://localhost:9200/testindex_
阅读全文
摘要:ElasticSearch的慢日志,相关的参数及配置方法。 在log4j2.properties中配置慢日志的输出文件名。 Search Slow Log 相关参数 index.search.slowlog.threshold.query.warn index.search.slowlog.thre
阅读全文