四个不同重量砝码可以称出多种重量

最近疫情在家没法出门,因此尝试去找找工作,投递了一些大厂的职位,也有一些好心猎头帮我推荐。但是实在是不好意思,一面都过不了。 不过我似乎也没有太大期待了。毕竟这玩意对于我来说,还是看运气啦,只是纯当找个人说说话,顺便还能聊聊看自己如果找工作还有哪些不足。

其中腾讯音乐前天打电话面试,最后问了我一个算法问题,四个砝码可以称出多少种重量。

我当时听到砝码这两个字竟然没有反应过来,还问了下砝码是什么,天平上那个吗?感觉几百年没有听到过这个词了,有点懵逼。面试的让我说思路,我想这不就是一个数学题吗?排列组合想了一下,但转念一想 他没告诉我重量,我怎么知道可以称出多少种重量呢? 比如 2,4,6,8 可以用2和4 称出6,也可以用一个6 称出6 呀。那这算一种吗?好像还不对,我还可以用 一个2 称出一个二,用一个4,和6 ,把物品放在4的那一边称出一个二的重量来呀。我靠,这事情太复杂了。然后就乱了。最后挂断电话,面试结束。

继续阅读“四个不同重量砝码可以称出多种重量”

流浪的博客

流浪,看似有一些浪漫,有些idealistic,其实也有一些无奈,看了下,距离上一篇Post ,已经有将近一年的时间了,这一年我在干嘛?

我想流浪这个词对于这一年的概括还是算作贴切的。

这一年发生了太多太多的事情。辞职,去澳洲打工度假,妈妈手术,家里修房子,疫情。 每一段都可以说很长很长的时间。

今天不想写那些,写一下这几天博客的搬迁吧。

继续阅读“流浪的博客”

Python如何快速遍历当前文件夹下的所有子文件

用Python 可以当做一种超级脚本,用来应付各种各样的临时需求,对于跨平台操作而言,非常方便,比如批量重命名,查找某个文件,处理图片等等,但是体验而言,最多的工作就是遍历目录了, 写一个代码小片段,以后可以随时Copy,也是符合Python 之禅的。

继续阅读“Python如何快速遍历当前文件夹下的所有子文件”

亚马逊Alexa认证方法

最近在看alexa 的 认证文档,记录几个关键概念:

FRR(Word-wake False Rejection Rate ) ,拒识率。没有唤醒次数/唤醒总次数

RAR(Response Accuracy Rate) 响应率,唤醒成功的次数/唤醒总次数

FAR(Wake-word False Alarm Rate) 误唤醒率

测试设备:

2个音响speaker(噪音+音频),3个笔记本,用于控制两个speaker,另一个记录,2个音响底座可调整高低。1个分贝仪

音频文件

  1. 话语录音,Alexa,明天天气怎么样等,包含三个男声,三个女声,提供六个不同的话术
  2. 不同长时间间隔的话语录音。
  3. 背景音乐(白噪声,音乐,FAR 十小时测试文件)

 

 

蓝牙传输协议类型

最近在和蓝牙耳机厂商联调,被各种各样的术语搞得头昏脑涨。

蓝牙芯片厂商主要有两家,一个是CSR,剑桥的一家公司,被高通24亿美元收购,,另一家BCM, 博通,美国公司,印象中很多网卡就是他们家的。

简单的来说 app与蓝牙设备之间传输数据主要有以下方式

基于CSR8670 4.0双模蓝牙模块,包含了A2DP(音乐播放),AVRCP(流媒体控制及音乐封面
传输),HFP(免提通话),SPP(数据传输),PBAPC(电话本同步),HID(鼠标),BLE DataTrans(低功耗模式下的小数据传输)等协议。模块上的VREG高电平开机、低电平关机,开机后自动连接最近连接的手机。蓝牙模块与MCU执行UART 通信,使用AT指令实现连接、断开、拨打电话、音乐播放及远程控制、下载电话本、数据传输等功能。方案因采用4.0双模式,无需MFI认证可以兼容安卓、苹果和微软等平台的数据通信

如何在SDK中集成第三方AAR包

我最近在开发一个面向企业内部app的语音SDK,在和思必驰的基础SDK集成的过程中发现,思必驰提供的sdk 是AAR文件,而我需要输出的也是aar,这时候发现思必驰的aar是没有办法打包到我的aar中的(调用方会找不到那个aar),试了通用的方法,比如

  flatDir {
    dirs 'libs'
  }

还是不能解决,最终想到的由第三方服务商解决办法有两个:

继续阅读“如何在SDK中集成第三方AAR包”

DialogFragment fill screen width

前一阵子做一个demo,想从底部弹出一个类似于dialog的布局,但是发现无论怎么发现两边都有一定留白(在android 8.1系统)搜索了一些资料,填埋了这个坑。

setStyle(DialogFragment.STYLE_NO_TITLE, R.style.Theme_Dialog)
val window = dialog.window
window.setGravity(Gravity.BOTTOM) //可设置dialog的位置
window.decorView.setPadding(0, 0, 0, 0)
window.setBackgroundDrawable(ColorDrawable(Color.WHITE));//这句话还不能少 日了狗
val lp = window.attributes
lp.width = WindowManager.LayoutParams.MATCH_PARENT //设置宽度充满屏幕
lp.height = WindowManager.LayoutParams.WRAP_CONTENT
window.attributes = lp
window.attributes.windowAnimations = R.style.DialogAnimation

volatile 是个嘛?

Q:你学的是java?
A:是的。大学学过。
Q: 那你说说java的关键字volatile
A: (心想:双重锁,单例模式,volatile。。。)volatile是用来防止指令重排和保证内存可见。
Q: 它的原理呢?
A:(TMD原理,肯定就是和虚拟机有关啦NND)只知道用,没有研究过这个。
Q:好吧,你还有什么要问的嘛?
A:你们这个岗位期待招聘什么样的人?
Q:嗯,高级一点的吧。
A:哦。没有了。
Q:那 回去等消息吧。

还原一下最近的一番对话,不过我实在是没记得当初java课上有讲过这个,知道指令重排和内存可见还是从某篇博客上看到的,也没有想过原理和为什么要这么做。那今天抽空理一理这个。现在想想应该是想通过其了解jvm相关的东西吧。
继续阅读“volatile 是个嘛?”