软件开发
文章平均质量分 73
davidullua
前华为人,ATM架构师,日常开发经验分享,互联网架构分享
展开
-
结巴分词完全禁用默认词库(仅使用自定义词库)
有时候需要使用自定义的词库,不使用默认的词库。比如做敏感词分词时, 完全禁用掉默认词库。原创 2023-02-19 23:36:55 · 1044 阅读 · 0 评论 -
IntelliJ IDEA 中找不到 protocol buffer 生成的 Java 类的解决方法
IntelliJ Idea 中找不到 protocol buffer 生成的 class 类,而在命令行使用 mvn build, mvn package 项目是可以正常编译的。原创 2022-12-04 20:25:25 · 1907 阅读 · 0 评论 -
分布式共识协议 Raft 是如何工作的?
提供一种共识算法(分布式一致性算法)。 Paxos是早先的一个分布式共识算法,Paxos 逻辑复杂而难以理解和实现。相比早先的 Paxos, Raft 提供一个容易理解和实现的共识算法,在很多的系统比如 etcd, ozone,tikv,RethinkDB 等项目中大量使用。原创 2022-12-02 13:55:33 · 563 阅读 · 0 评论 -
使用 Docker 快速搭建 Rust 的 Jupyter Notebook
在 Jupyter notebook 上面运行 Python 程序非常,实际上 Jupyter 也支持其他的内核。我们可以使用 docker 运行一个已经安装好 Rust + Conda + Jupyter Notebook 的的容器。原创 2022-11-19 20:12:18 · 1985 阅读 · 1 评论 -
三个步骤使用 maven release 管理 Java 项目的版本号
在多模块的 maven 项目中,模块的版本号升级,如果使用手工方式管理,很花时间,容易出错。 各个模块直接有依赖关系,更新版本号容易改漏。正确的做法是使用 mvn release 插件。这个插件不需要安装。 只需要在工程的 pom.xml 中设置项目的代码库地址即可。原创 2022-10-09 08:30:00 · 2938 阅读 · 0 评论 -
Makefile 精要(常见规则总结-附示例)
Makefile 是 make 工具执行构建(编译应用程序)的规则文件。 make 和 makefile 在 C/C++ 项目中广泛使用, 甚至其他语言的项目中也会用到。缺少一篇简明扼要介绍 make 和 makefile 的文章, Google 结果中排名靠前的官方英文文档很长, 中文的文章翻译不当,翻译的一些内容很难理解。因此简要总结一下 Makefile 的使用(大致 15 分钟左右能够读完并且理解)。原创 2022-09-12 23:13:56 · 2030 阅读 · 0 评论 -
Mac 从源码安装 wxWidgets 报错 fatal error: ‘tiff.h‘ file not found 的解决方案
在从源码编译安装 wxWidgets 的时候,报错:imagtiff.cpp fatal error: 'tiff.h' file not found原创 2022-09-07 22:37:05 · 643 阅读 · 0 评论 -
如何在 VS Code 中编译和调试 CMake 项目
通过 VS Code 来调试 C/C++ 的 CMake 项目原创 2022-08-31 10:59:55 · 5221 阅读 · 0 评论 -
Spring Boot 应用启动时 java.lang.reflect.InaccessibleObjectException 问题的解决
Spring Boot 的应用启动的时候遇到下面的错误 java.lang.reflect.InaccessibleObjectException: Unable to make private native ... accessible原创 2022-06-08 18:44:20 · 12396 阅读 · 2 评论 -
API 设计最佳实践的思考
阿里妹导读:API 是模块或者子系统之间交互的接口定义。好的系统架构离不开好的 API 设计,而一个设计不够完善的 API 则注定会导致系统的后续发展和维护非常困难。接下来,阿里巴巴研究员谷朴将给出建议,什么样的 API 设计是好的设计?好的设计该如何做?转载 2022-05-17 19:29:25 · 480 阅读 · 0 评论 -
Flink 流式数据处理(一): Hello Flink
Flink 是一个流式计算引擎。既支持实时的 Streaming 模式对进来的数据进行逐一处理,也适合对批量的数据做 Batch 处理。 一句话,对实时/离线的数据处理做到了批流合一。Flink 对于数据和数据流做了非常好的抽象,在大数据处理里面得到非常广泛的应用。一个典型的场景是对实时输入的数据做分析处理后, 得到分析的结果。以接收从 Socket 传入的数据, 统计每5秒钟不同单词出现的次数为例, 分享如何开发第一个 Flink Job。 以下省去创建 Maven 项目的过程(建议使用原创 2022-05-17 16:08:35 · 1954 阅读 · 0 评论 -
Tekton之三:快速理解 Tekton 是如何工作的
Tekton 是云原生环境下面的非常强大的 CICD 产品。 如果你按照 Tekton 的官方文档来学习,使用 Tekton, 可能会跟遇到很多障碍。 Tekton 的技术架构非常优秀,同时Tekton 不太好的产品体验,使得这个优秀工具的应用困难了很多。本文对这些常见的问题做一一的解答。原创 2022-04-21 17:14:57 · 2886 阅读 · 0 评论 -
云原生服务的限流方案
限流的目的,是在系统流量过大的时候,对系统进行保护,避免因为流量过大,导致系统不稳定,甚至出现故障。云原生环境下的限流方案比较多。 轻量级的方案可以使用 Bucket4j +Hazelcast/ignite/infinispan 的内存数据结合的方案。 完整的方案可以使用 Sentinel 集群。原创 2022-02-24 17:00:00 · 1719 阅读 · 0 评论 -
语音处理/语音识别基础(六)- 语音的端点检测(EPD/VAD)
「端点检测」(End-point Detection,简称 EPD)的目标是要找到音讯开始和结束的位置,所以又可以称为 Speech Detection 或是 VAD (Voice Activity Detection)。端点检测在音讯处理与识别中,扮演重要的角色,可以基于时域,或者基于频域来做 EPD。原创 2022-02-24 10:28:26 · 20170 阅读 · 7 评论 -
语音处理/语音识别基础(五)- 声音的音量,过零率,音高的计算
如前面第3篇讲到,声音的几个主要特征有音量 Volume, 音高 Pitch, 音色 Timbre。另外有一个重要的特征是过零率 zero crossing rate。当我们在分析声音时,通常以「短时距分析」(Short-term Analysis)为主,因为音讯在短时间内是相对稳定的。我们通常将声音先切成帧(Frame),每一帧长度大约在 20 ms 左右,再根据帧内的信号来进行分析。计算音量(Volume/Intensity/Energe)「音量」代表声音的强度,又称为「响度」、原创 2022-02-14 09:45:00 · 13088 阅读 · 3 评论 -
语音处理/语音识别基础(四)- 语音文件读取与播放
本文分享如何在 matlab 里面读取 wav 文件,播放 wav 文件,以及如何录制语音文件,保存语音文件。代码中演示了如何改变音频文件的采样率(影响到播放速度),音量(影响到听到的声音大小)。原创 2022-02-13 22:10:12 · 5389 阅读 · 1 评论 -
语音处理/语音识别基础(三)- 声音的特征和声音的能量
前面分享了声音是什么,声音是如何产生,如何传播,以及如何数字化存储的。现在我们来看一下声音有哪些主要的特征(对于人来说),以及常说的声音的能量指的是什么。 本文尝试回答如下问题:1).对于人来说, 声音有哪些主要的特征,会影响人的感知?2).男人和女人,成人和儿童的声音听起来有差异,主要是什么特征起的作用?3).不同乐器听起来有一差异,一听就能判断是什么乐器,主要是什么特征起的作用?4).常常听说的声音的能量指的是什么?5).如何可视化一段音频?当我们在分析声音时,通常以「短时距原创 2022-02-12 17:56:09 · 6176 阅读 · 0 评论 -
阿里云 k8s 上面部署 etcd server 出现 pod has unbound PersistentVolumeClaims 错误信息的解决
AWS/GKE 上面都有默认的 StorageClass,而阿里云的 k8s 上面没有默认的 StorageClass,k8s 不能使用默认的 StorageClass 来创建存储卷,需要手工设置默认的 StorageClass。原创 2022-01-18 13:08:34 · 4381 阅读 · 0 评论 -
Dockerfile多阶段构建(一个 Dockerfile 导入多个镜像)
Docker 17.05版本以后,支持了多阶段构建,允许一个Dockerfile 中出现多个 FROM 指令。多阶段构建的作用是什么呢?原创 2022-01-18 10:00:40 · 13534 阅读 · 0 评论 -
K8S 中创建 etcd 集群
单节点 etcd 服务, k8s中启动etcd集群,创建 root 用户, 启用鉴权; 通过命令行客户端访问数据。原创 2022-01-08 16:56:28 · 2054 阅读 · 0 评论 -
OpenFST 示例 & Mac 编译安装 - 需要 Python >= 2.1.0 的错误消息处理
Openfst 广泛应用于语音识别,语音合成,机器翻译,手写文字识别,模式识别,字符串处理,机器学习,信息提取和检索等等领域。原创 2021-11-23 13:52:32 · 2774 阅读 · 4 评论 -
深度学习代码实践(六)- 使用神经网络来逼近任意函数
问题提出在前面 “深度学习代码实践(四)- 从0搭建一个神经网络:感知机与激活函数”的博文分享中,提到,神经网络的本质是:通过参数与激活函数来拟合特征与目标之间的真实函数关系。单层网络只能做线性分类任务,两层神经网络可以无限逼近任意连续函数。这里提到的“用两层神经网络可以无限逼近任意连续函数”。 那么神经网络是不是真的能够逼近任何函数。 我用 Tensorflow 做了一个实验, 以一个已知函数 z = x^2 + y*2 的 80000个随机的 (x,y) 点作为输入,计算得到函数的 z 值.原创 2021-11-07 18:47:02 · 4526 阅读 · 0 评论 -
深度学习代码实践(五)- 从0搭建一个神经网络:从多元方程到梯度下降反向求导
回到多元方程的求解方法对于构建一个神经网络来说,需要求出每一个神经元的参数。每一层都有线性变换,加上非线性变换组成。 神经网络的求解变成一个多元方程的求解问题。图:要求解的线性函数变换(单层) y1 = x1w11 + x2w21+ ... + xnwn1 + b1 y2 = x1w12 + x2w22 + ... + xnwn2 + b2 y3= x1w13 + x2w23 + ... + xnwn3...原创 2021-11-07 17:29:01 · 2175 阅读 · 0 评论 -
深度学习代码实践(四)- 从0搭建一个神经网络:感知机与激活函数
参加过多次的神经网络的分享,都没弄明白为什么神经网络能够工作,怎么样理解神经网络可以工作?往往会得到这些答案:神经网络很难解释为什么能够工作。不用管他为什么能够工作,只要知道怎么用就好了。到现在为止,还不能很好地解释神经网络为什么能够工作。神经网络要解的根本问题对于输入的多个变量(成百上千,甚至上万个变量),经过多次的函数变换,得到最终解。机器学习的方法,通过人工找到样本的特征,建立模型进行预测。而神经网络是自动找到样本的特征,建立模型进行预测。典型的原创 2021-11-07 16:48:16 · 750 阅读 · 0 评论 -
深度学习代码实践(二)- Mac M1 环境搭建
截止到 2021 年下半年, 推荐使用 Apple 官方的 tensorflow-meta 的插件来启用 Tensorflow 在 Mac M1(包括 M1 Pro, M1 Max)上面的GPU加速。以下介绍完整的深度学习开发环境的搭建过程。参考 apple 官方文档:Tensorflow Plugin - Metal - Apple Developer1.安装 pyenv 虚拟环境管理包首先,推荐使用 pyenv 来安装专用的虚拟环境,以固定使用一个特定的Python版本,避免.原创 2021-10-28 01:01:16 · 1347 阅读 · 0 评论 -
深度学习代码实践(一)- GPU 推荐
时间已经到了2021年,如果还有人问,推荐什么笔记本或者工作站用作深度学习的开发环境,兼作日常开发的网络训练,无疑 Mac M1 是首选。携带方便,价格比起深度学习工作站不高,且系统易于使用。2020年苹果推出了自产的 Mac M1 芯片,自带性能强悍的 GPU,刚出来的时候不支持 Tensorflow 等深度学习框架使用 GPU进行加速。 很快苹果推出了 M1 的 GPU 加速支持。2020 年的Mac M1, 性能相当于GTX1650。 2021年10月刚出来的 M1 Pro 比 Mac M1原创 2021-10-28 00:34:34 · 1054 阅读 · 0 评论 -
JavaScript 批量下载 QCon 2021 上海站PPT
QCon 2021 上海站结束了。 官网提供了单个的文件下载,没有看到批量下载的链接。写了一个脚本批量下载所有的PDF。 分享一下。附已经打包好的压缩包: https://pan.baidu.com/s/1Yqiy0TsFaPcsfhmlx9k0yQ 提取码: c5t3附 QCon 2021 上海站 官网链接:大会演讲PPT合集QCon 2021 深圳站也即将开始。# 下载 QCon Shanghai 2021 pdffunction wait(ms){..原创 2021-10-28 00:00:08 · 259 阅读 · 0 评论 -
SpringBoot 应用从 JDK 8 升级到 JDK 11+遇到的问题与方案
最近把应用从 JDK 8 升级到 JDK 14, 遇到不少问题 。这些问题是 从 JDK 8 升级到 JDK 11+ (或者 JDK 9+)都容易遇到的问题。 做一个总结分享1.BASE64Decoder Not found原先的代码:import sun.misc.BASE64Decoder;BASE64Decoder decoder = new BASE64Decoder();byte[] b = decoder.decodeBuffer(s);改成 JDK 新版原创 2021-06-29 10:53:19 · 1788 阅读 · 0 评论 -
Redis 按照Key前缀导出数据,导入到另一个 Redis 中
场景:需要按照指定的 Key 前缀导出 redis 的数据,然后导入到另一个 redis 服务器中。原创 2021-06-08 10:40:46 · 3978 阅读 · 0 评论 -
如何使用 Elastic Search Low Level API 构造请求进行搜索
场景:需要在客户端构造请求调解, 调用 Elastic Search 的 API 取到结果,并且能够使用 ES 的授权机制。方案:在原创 2021-06-01 11:03:16 · 1345 阅读 · 1 评论 -
如何从 json 源文件自动生成 Java 代码
## 场景:Restful 服务返回 Json 文件。需要定义对应的 Java 类。以便直接将返回的数据转换为 Java 类。 如 Elastic Search Low Level API 返回的 Json。 在 Kibana 后台访问 ES 返回的格式即是 Low Level API返回的 JSON.方案:1.使用 jsonschema2pojo 命令行.https://github.com/joelittlejohn/jsonschema2pojo/wiki/Getting...原创 2021-05-31 20:57:39 · 2326 阅读 · 0 评论 -
SSRF 漏洞的原理以及 Java 中的处理
SSRF 漏洞的原理以及 Java 中的处理SSRF漏洞的原理有漏洞的 Java 代码示例Java 中如何避免 SSRF开源项目SSRF漏洞的原理SSRF(Server-Side Request Forgery:服务器端请求伪造) 是由攻击者构造非授权的 URL, 由服务端发起请求的一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。比如黑客攻击公司内部的论坛, Wiki, 工作流, 项目管理等系统. 大量的内部系统都提供内部匿名的访问方式, 不需要登陆即可以从内网访问到.当一个原创 2021-01-17 22:02:48 · 3115 阅读 · 0 评论 -
C#中字符串的格式化及转换成数值的方法
1.字符串转换成数字,比如"1234"转换成数字1234: string str="1234"; int i=Convert.ToInt32(str);2.格式化字符串,向长度小于30的字符串末尾添加特定字符,补足n个字符,使用String类的PadRight(int,char)方法,String str="1234";str=str.PadRight(30,原创 2004-11-16 22:21:00 · 3989 阅读 · 2 评论 -
C#:获得文件版本信息及只读文件的删除
Author:David EulerDate: 2004/11/16Email:[email protected] 有任何问题,请与我联系:)获取文件的版本信息: FileVersionInfo myFileVersionInfo1 = FileVersionInfo.GetVersionInfo("D://TEST.DLL"); textBox1.Text="版本号: "原创 2004-11-16 22:20:00 · 1971 阅读 · 0 评论 -
C#:文件的按行读/写及文件目录的操作
Author:David EulerDate: 2004/11/16Email:[email protected] 有任何问题,请与我联系:) 按行读写文件判断文件是否存在:File.Exists(string filePath)判断目录是否存在:Directory.Exists("D://LastestVersion")按行读取文件原创 2004-11-16 22:10:00 · 5563 阅读 · 0 评论 -
C#:ListBox的2个常用方法Add,Clear与Items的2个属性
listBox1.Items.Clear() 清除listBox中的item;listBox1.Items.Count 获取listBox的item数目;listBox1.Items[n] 获取listBox中的第n个item;listBox1.Items.Add("123") 向listBox中添加一个item;原创 2004-11-16 21:39:00 · 6233 阅读 · 0 评论 -
ADO.Net:向程序传递查询字符串
页面query.aspx可以根据传递的id参数在数据库中进行查询,如:http://gqa-eric-lv/aspnet/MyBBSQuery/query.aspx?id=26程序中可以使用this.Request.QueryString["ID"]获取查询字符串ID的值,如下例: SqlConnection coreDB=new SqlConnection(); coreDB.Conne原创 2004-11-14 23:19:00 · 1086 阅读 · 0 评论 -
ADO.Net:使用DataReader向数据库中插入数据
连接数据库coreDB,向表myBBS中插入文章。表myBBS的定义如下:if exists (select * from dbo.sysobjects where id = object_id(N[dbo].[myBBS]) and OBJECTPROPERTY(id, NIsUserTable) = 1)drop table [dbo].[myBBS]GOCREATE TABLE原创 2004-11-14 23:13:00 · 1615 阅读 · 0 评论 -
c#中分割字符串的几种方法
http://dev.csdn.net/develop/article/25/25274.shtm原创 2004-09-15 20:51:00 · 910 阅读 · 0 评论 -
C#编写最小化时隐藏为任务栏图标的Window appllication.
1.设置窗体属性showinTask=false2.加notifyicon控件notifyIcon1,为控件notifyIcon1的属性Icon添加一个icon图标。3.添加窗体最小化事件(首先需要添加事件引用):?// this.SizeChanged += new System.EventHandler(this.Form1_SizeChanged);//上面一行是主窗体Ini原创 2004-08-30 21:49:00 · 3858 阅读 · 3 评论