Kinsomy Blog

Thinking will not overcome fear but action will.

Android进阶(五)DataBinding解析

Android advance

1 概述 在上篇文章Android进阶(四)LiveData解析中讲到了关于JetPack框架的LiveData解析,这是一个基于ViewModel和观察者模式的实践。 这篇文章要讲的DataBinding同样可以认为是基于ViewModel的实践,同时做到了数据和UI的双向绑定。DataBinding允许你使用声明式的而不是以编程方式将布局中的UI组件绑定到应用程序中的数据源。免去了编写...

Android进阶(四)LiveData解析

Android advance

1 概述 LiveData是一个可被观察的数据持有类,一般的数据类不同,LiveData是生命周期感知的,数据类的生命周期可以和其他app组件的生命周期保持一致,例如Activity,fragment和service。这保证了LiveData仅仅会更新处在活动状态的组件。 LiveData可以被看成观察者模式的实践,LiveData是一个被观察的对象,其他组件会订阅对它的观察,当组件处于S...

Android进阶(三)ButterKnife源码解析

Android advance

1 概述 ButterKnife是Android用于视图绑定的依赖注入框架,用注解来生成模板代码。 通过分析ButterKnife源码可以加深对注解使用以及依赖注入概念的理解。 2 ButterKnife使用 2.1 引入依赖 在Project的build.gradle文件中添加依赖: dependencies { implementation 'com.jakewharton:bu...

Java进阶(二)并行模式算法

java concurrent programming

这篇文章是对《Java高并发编程》第五章的记录,同时结合自己查找的资料做集中总结。 并发编程里面会有一些常用的设计模式。 单例模式 自不用说,单例是最常见的一种设计模式,是为了避免对象重复创建。 有两大好处: 对于频繁使用的对象,可以省略new操作花费的时间,这对于那些重量级对象而言,是非常可观的一笔系统开销; 由于new操作的次数减少,因而对系统内...

Java进阶(一)提高锁性能

java concurrent programming

1 提高锁性能 1.1 减小锁持有时间 锁持有的时间会影响其他线程的等待时间,从而影响整体性能,如果一个锁持有时间较长,在并发量大的情况下,等待线程数量会大幅增加,导致竞争激烈,系统性能低下。 解决方案:分析代码,在必要时进行同步,减小同步范围,也就是只在互斥代码部分才持有锁,减少锁持有时间,提高系统吞吐性能。 看个例子: public synchronized void syncM...

实战Java高并发程序设计记录(一)

java concurrent programming

第一章 Happen-Before规则 指令重排的原则: 程序顺序原则:一个线程内保证语义的串行性 volatile规则:volatile变量的写先发生于读,保证volatile变量的可见性 锁规则:解锁unlock必然发生在随后的加锁lock之前 传递性:A先于B,B先于C,那么A必然先于C ...

Flutter仿网易云音乐--播放界面

flutter netease

写在前头 本来是要做一个仿网易云音乐的flutter项目,但是因为最近事情比较多,项目周期跨度会比较长,因此分几个步骤来完成。这是仿网易云音乐项目系列文章的第一篇。没有完全照搬网易云音乐的UI,借鉴了其中的黑胶唱机动画。 先贴上项目地址 https://github.com/KinsomyJS/flutter_netease_music 初步效果图 思路 这个界面实现起来其实是比较...

fail-fast机制

fail-fast机制

这是《码出高效》的第一篇笔记,会记录第六章“数据结构与集合”的6.7小节的一个知识点:fail-fast机制。因为之前的几个章节都很快速的看过去了,没有来得及写下来心得,后续会慢慢补上。 之所以第一个讲fail-fast是因为对于我来说之前从来没有意识到这样的一个问题会造成严重的危害。 fail-fast介绍 fail-fast在java里是对集合执行遍历操作时的错误检测机制,...

快让你的Flutter应用跑在Mac上

Feather platform

介绍 今天介绍一个能让Flutter应用运行在Mac OS和Windows上的平台:Feather Platform 官网地址:https://feather-apps.com/ 官网的介绍如下: The Feather platform will run Flutter apps on MacOS and Windows. So you can write a single ap...

深入Flutter TextField

Flutter TextField

翻译原文来自 https://medium.com/flutter-community/a-deep-dive-into-flutter-textfields-f0e676aaab7a TextField介绍 TextField允许从用户处收集信息,声明一个基础的TextField代码十分简单: TextField() 这会创建一个基础TextField组件: 从TextField...