Sticky Posts

3.8k words 3 mins.

# Fundamentals of Learning English Mastering the English language involves adopting two fundamental approaches that work synergistically to enhance language proficiency. Utilize an English-English Dictionary: Opt for an electronic English dictionary for convenience. When encountering an unfamiliar...
3.4k words 3 mins.

# 动画原理 动画的本质是,动画对象随着时间,从初始值到最终值的连续变化。所以,定义一个动画有三个要素,动画时间即 duration,动画初始和最终值。最基础原始的关系是动画时间和动画值成正比例(线性插值)。 tduration=AnimateValueend−start(1)\frac{t}{duration} = \frac{AnimateValue}{end - start} \tag{1} durationt​=end−startAnimateValue​(1) # KeyFrame 扩展 在 Android 内部实现上,会将初始值到最终值切分成诸多在动画时间轴均匀分布的关键帧...
15k words 14 mins.

# 题记 笔者个人所见,很多同学投入可观的时间和精力,学习英语,但最后大学毕业,连看英文文档的能力和勇气都没有,功败垂成,这很令人惋惜。本文对此展开深入的分析和解释,从而悟出学习掌握新语言读写听说能力的根本方法和策略,它们很简单,简单到如同每天清晨醒来刷牙洗漱,不需要占用太多额外的时间,更不用花钱报班学习。在此分享给大家,读懂原理,然后按部就班跟着做就好了,理论上可以帮助大家早日脱离苦海,学成归来。 喜欢看视频,或者不方便阅读的朋友,可以看视频版。内容本质没区别,只是更加精简,但目前只包含思想篇,这部分同样重要,实践部分还得回来阅读文章后半部分,后期有空补录:) #...

Categories

Post List

2.6k words 2 mins.

姐妹们,真的很焦虑。我坚持了好多年霸王洗发水的努力,恐怕要功亏一篑了,最近头发掉的厉害。男朋友入住第一天,我那常年无需清洁的卫生间就像被围困的莫斯科一样,卫生保卫战的号角如同深夜里的防空警报嘹亮地吹响。好多次尿急,风驰电掣闪进厕所,看到马桶壁上残存的黄色尿渍,星星点点,一时尿意全无。我三番五次苦口婆心劝导他,“亲爱的,你大可不必这样,屋里就只有咱们两个,你不用像动物撒尿绕了一个圈,标记宣告这是你的地盘。这屋里的一切,都是我的,也是你的,但终归到底,都是我们的,这里没有外人。”...
1.3k words 1 mins.

# Volatile volatile 是轻量级的 synchronized,它在多处理器开发中保证了共享变量的 “可见性”。可见性的意思是当一个线程 修改一个共享变量时,另外一个线程能读到这个修改的值。 instance = new Singleton(); //instance 是 volatile 变量// 汇编代码0x01a3de1d: movb $0×0,0×1104800(%esi);0x01a3de24: lock addl $0×0,(%esp); Lock 前缀的指令,将这个变量所在缓存行的数据 写回到系统内存。 其他 CPU...
946 words 1 mins.

Last updated: January 01, 2024 # Declaration Flashcard app request access to the following data and only for the purposes stated in the following list: Device internal or external storage Required to download and move the dictionary files, which will be accessed by GoldenDict, in Downloads or...
1.7k words 2 mins.

# Found null or empty SkuDetails. TrivialDrive:BillingDataSource: onSkuDetailsResponse: Found null or empty SkuDetails. Check to see if the SKUs you requested are correctly published in the Google Play Console. Root cause: Some of following prerequisites are not satisfied. Upload the application...
16k words 15 mins.

# Terms Term Example Parameterized type List<String> Actual type parameter String Generic type List<E> Formal type parameter E Unbonded wildcard type List<?> Raw type List Bounded type parameter <E extends Number> Recursive type...
9.3k words 8 mins.

# 异常描述 引入穿山甲 SDK 后,编译运行时异常,堆栈如下 2023-08-06 23:08:51.659 32243-32243/com.maxim.wordcard.debug E/AndroidRuntime: FATAL EXCEPTION: main Process: com.maxim.wordcard.debug, PID: 32243 java.lang.RuntimeException: Unable to get provider com.bytedance.sdk.openadsdk.TTFileProvider:...
6.1k words 6 mins.

Observable.create(new Observable.OnSubscribe<Integer>() { @Override public void call(Subscriber<? super Integer> observer) { try { if (!observer.isUnsubscribed()) { for (int i = 1; i < 5; i++) { observer.onNext(i); }...
11k words 10 mins.

关于 AbstractQueuedSynchronizer 的源码分析,我以 ReentrantLock 为例,类图如上。 A reentrant mutual exclusion Lock with the same basic behavior and semantics as the implicit monitor lock accessed using synchronized methods and statements, but with extended capabilities. A ReentrantLock is owned by the thread last...
1.5k words 1 mins.

计数方式实现的旗语,一个旗语维护一组概念上的许可。每个线程 acquire 都会在必要时阻塞,直到有许可证可用,然后获取它,许可数量减一。每次释放都会增加一个许可,从而有可能释放阻塞在 acquire 的线程。不过, Semaphore 并不使用实际的许可对象;它只是对可用数量进行计数,并采取相应的行动。 如此 Semaphores 通常用于限制可以访问某些(物理或逻辑)资源的线程数量。也就是说,当你希望只有 permits 个线程可以并发访问这些资源是,通过 Semaphore (int permits, boolean fair) 实例化 permits 个许可资源,线程 aquire...
3.9k words 4 mins.

# Overview 一种同步辅助工具,允许一个或多个线程等待其他线程正在执行的一组操作完成。 A synchronization aid that allows one or more threads to wait until a set of operations being performed in other threads completes. CountDownLatch 以给定的计数初始化。await 方法会阻塞,直到当前计数因调用 CountDown 方法而归零,之后所有等待的线程都会被释放,并且 await 的任何后续调用都会立即返回。这是一种一次性现象 --...