Contents

ARST打卡第一周(1/521)

Algorithm

自己在github上面打卡,LeetCode还是第一次做,和以前在其他平台做的题不太一样,它只要提交一个cpp的solve类就行:

第一题LeetCode

除了LeetCode的刷题,自己也有坚持字符串等的刷题,只是本周前段时间忙着做一个比赛的项目导致自己前几天都没有时间刷题(emmmm).

Review

平常不怎么关注英文技术文章,所以第一次还找了很多个网站进行尝试(最终看了群里小伙伴的打卡的review文章),所以第一次是读简单一点的文章,以后慢慢把难度提升上去

The Key To Accelerating Your Coding Skills

http://blog.thefirehoseproject.com/posts/learn-to-code-and-be-self-reliant/

  1. Become self-reliant. Having the ability to learn new coding skills without structured guidance means you no longer need to wait for anyone to help you out. This means that for the majority of what you need to learn, you can simply search the internet and read the various material on what you need to know.

This doesn’t mean you immediately “know” everything, but just that everything is now “figure-out-able,” so in essence, you are unstoppable.

  1. Work consistently, but don’t overwork yourself. At this phase of the game, know that you can only be productive for around 6 hours a day at the most. Working in an exhausted state will only prolong the time you spend building up to the inflection point.

自己感触很深的两个点在摘抄在上面了

  1. 其实有时候遇到了技术问题是很好找前辈帮忙解决的,因为有很多坑前辈们都是一步步走过来的,所以就能很快的看出你的错误并且帮你纠正,但是我个人觉得有些必须自己去亲身体验,自己去努力查资料,自己努力去想的,不到迫不得已不去打扰大神,因为这样自己才能对自己遇到的问题有清析的认识,并且在以后一般不会再出现这种问题,而且自己也能在相似的事件处理上做的更好,从而锻炼了自己真正的解决问题的能力。

  2. 对于第二点自己有切身的体会,因为自己经常进行算法训练,有时候状态很好,一下子就能写出思路和代码,有时候很累的时候,半天想不出思路,而且就算想出了一些常规的思路,但是在很累的时候写出来的基本上都是bug,等到状态好一点的时候再把bug改回来,或者彻底推翻重写,真的是浪费了时间,又没有好好休息,从而延长了自己积累到拐点的时间。

Tip:(学习一个技术技巧)

如何在Debian 9上安装和使用Docker

Share

Android开发—如何在assets文件下只播放一首歌

环境:项目需要嵌入多个音频文件

问题:

  1. 使用assets播放音频的时候用固定的套路会把整个文件播放完,

  2. 用R.raw.MusicName无法在某些类中使用(应该是我Java太菜了,所以在要调用的那个类中不能用R.raw.MusicName)

解决方案:对着函数按ctrl+左键查看setDataSource函数

可以看到length参数,如果按照一般使用setDataSource的方法,我们会使用fileDescriptor.getStartOffset()用来赋值给length,那么这样就会在语音播报的时候播报整个assets文件夹下面的音乐

而且看 @param 说明可以知道length的单位是字节,所以我采用了一个笨办法,就是依次查看每一首歌的长度,从而得到了参数值,然后写成selectSong()函数(耗子叔说要利用自己的计算机思维,多做自动化工作),然后完成调用。巧妙地解决了自己的项目需求。

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
/**
 * Sets the data source (FileDescriptor) to use.  The FileDescriptor must be
 * seekable (N.B. a LocalSocket is not seekable). It is the caller's responsibility
 * to close the file descriptor. It is safe to do so as soon as this call returns.
 *
 * @param fd the FileDescriptor for the file you want to play
 * @param offset the offset into the file where the data to be played starts, in bytes
 * @param length the length in bytes of the data to be played
 * @throws IllegalStateException if it is called in an invalid state
 * @throws IllegalArgumentException if fd is not a valid FileDescriptor
 * @throws IOException if fd can not be read
 */
public void setDataSource(FileDescriptor fd, long offset, long length)
        throws IOException, IllegalArgumentException, IllegalStateException {
    _setDataSource(fd, offset, length);
}


// 调用的地方
AssetManager assetManager;
MediaPlayer player = null;
player = new MediaPlayer();
assetManager = getResources().getAssets();
try {
    String song = "";
    int [] k={0};
    song += selectSong(flag,k);
    AssetFileDescriptor fileDescriptor = assetManager.openFd(song);
//  player.setDataSource(fileDescriptor.getFileDescriptor(), fileDescriptor.getStartOffset(), fileDescriptor.getStartOffset());
    player.setDataSource(fileDescriptor.getFileDescriptor(), fileDescriptor.getStartOffset(),k[0]);
    player.prepare();
    player.start();
} catch (IOException e) {
    e.printStackTrace();
}

// 支持函数
private String selectSong(char c,int[] k) {
    String song = "";
    if(c=='a') {
        song += "不要露出您的牙齿哟.mp3";//6408
        k[0] = 6408;
    }
    else if(c=='b') {
        song += "嘴角微微上扬O.mp3";//5616
        k[0] = 5616;
    }
    else if(c=='c') {
        song += "恭喜你成功习得笑不露齿.mp3";
        k[0]=5976;
    }
    else if(c=='d') {
        song +="咧开嘴巴开心大笑.mp3";//4464
        k[0] = 4464;
    }
    else if(c=='e') {
        song +="不妨笑的更快乐一点.mp3";//6624
        k[0] = 6624;
    }
    else if(c=='f') {
        song +="今天的大笑完成了哦.mp3";//4752
        k[0] = 4752;
    }
    else if(c=='g') {
        song +="左眼闭紧哟.mp3";//3528
        k[0] = 3528;
    }
    else if(c=='h') {
        song +="右眼瞪大点.mp3";//3384
        k[0] = 3384;
    }
    else if(c=='i') {
        song +="太好了,得到了一张俏皮图.mp3";//6624
        k[0] = 6624;
    }
    else if(c=='j') {
        song +="右眼闭紧哟.mp3";//3024
        k[0] = 3024;
    }
    else if(c=='k') {
        song +="左眼瞪大点.mp3";//3528
        k[0] = 3528;
    }
    else if(c=='l') {
        song +="哟,我有被你电到哦.mp3";//4896
        k[0] = 4896;
    }
    else if(c=='m') {
        song +="张大嘴巴“O”一声.mp3";//5616
        k[0] = 5616;
    }
    else if(c=='n') {
        song +="眼睛瞪圆圆.mp3";//3384
        k[0] = 3384;
    }
    else if(c=='o') {
        song +="惊讶表情图获取了哟.mp3";//5472
        k[0] = 5472;
    }
    return song;
}

https://pic1.zhimg.com/80/v2-63df53f1d5f3d735c06b581473b36b4c_hd.jpg

https://pic1.zhimg.com/80/v2-d2e2b4cb2094585089ea53119cff29d0_hd.jpg

感想:

  1. 感觉在知乎写文章的体验十分好(对比以前自己在简书和CSDN的写作体验)

  2. Review读文章感觉自己英语水平很差劲,然后读久了感觉有点累,所以得多练习

  3. 自己都20多的人了,还只是学了计算机领域的一点点皮毛,而且感觉这个ARST打卡很锻炼自己,也符合自己要成为一个技术专家(将来解决计算界的一些难题)的理想,所以决定把这个每周打卡进行10年,也就是365/7*10=521周,现在是第一周(猛地发现原来十年是个如此浪漫的数字)