自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

微风轻拂

科技+艺术+人性=美好

  • 博客(75)
  • 资源 (1)
  • 收藏
  • 关注

原创 Compose相对React的改进

compose 相对 react 的改进

2022-03-04 19:09:46 1987 1

原创 js数组初始化时 fill 填充的小bug

数组初始化代码如下:const arr = new Array(3).fill([])const arr2 = [[],[],[]]console.log(JSON.stringify(arr)) //输出:[[],[],[]]console.log(JSON.stringify(arr2)) //输出:[[],[],[]]console.log(arr==arr2) //输出 false !! 明明stringify打印出来的内容都一样,为何这里却不等?var arrIndex = 0

2022-01-19 14:15:50 876

原创 直观理解Java泛型的子类型

------------Java泛型的子类型问题-------------存在对象及容器两个问题1,对象类型的子类型,比如:苹果是不是水果的子类型?2,容器类型的子类型,比如:一盒苹果是不是一盒水果的子类型?--------------继承与指针----------------子类型问题的根源在于继承子类继承基类后,子类除了拥有基类的一切外,子类还有自己仅有的部分属性举例:苹果继承了水果,苹果拥有水果的所有属性,但还有自己的属性,比如苹果的酸甜子类型问题具体表现在..

2020-09-02 23:51:02 1160 2

原创 Kotlin密封类与枚举类的应用场景

两者较为接近,往往同一个功能两者均可实现,但是语言的设计者是有区分意图的。我理解如下:密封类陈列该类的多种子类,也即每个子类都继承自该密封类 用于分辨一个实例的所有可能类型枚举类陈列该类的多个实例,也即每个枚举都是该枚举类的实例 用于分辨同一个类型的多个实例举例:判断一个班的成员:张三,李四,王五。此刻使用枚举判断一名学生的成分:群众,班干部,团委干部。此刻使用密封类...

2020-05-24 01:04:31 766

原创 Kotlin对象的生成方式整理

Kotlin中可能有如下几种生成对象的方式1,对象表达式val myObject = object { } //匿名生成,赋给变量,或作为匿名对象使用一个最简但完整的示例:open class A(x: Int) { public open val y: Int = x}interface B { /*……*/ }val ab: A = object : A(1), B { override val y = 15 var x: Int =...

2020-05-19 01:40:39 2238

原创 在多个Android项目工程中共享一个库模块

我们可以把库模块做成一个jar,由多个项目工程引用。不过有时我们会希望以源文件源项目的方式来引用库模块,这样可以对库模块文件临时做修改调试等等。我们首先建立两个最简项目工程,其一叫MyProj1,其二叫MyProj2Lib,假定现在我们已经建好了,每个工程里面各有一个app模块。接下来我们在MyProj2Lib中增加了一个mylibrary库模块,方法是File-->New--

2020-05-06 01:17:31 3308

原创 Kotlin函数类型的实例化

三种函数格式1,函数字面值1.1,Lambda1.2,匿名函数2,反射引用普通函数3,实现函数类型接口的类首先定义一个需要函数作为参数的函数fun myFunIns(data:Int, myFun:(arg:Int)->Int):Int{ return myFun(data)}这是第一种格式,即函数字面值的Lambda表示法...

2020-05-05 20:22:33 1266

原创 Promise+then实现异步串联

我们所有一切的目的都是:象写同步一样写异步。类似:RunAsync.add(new Task())//task1    .add(new Task())//task2    .add(new Task())//task3    .start();我们希望task1完成之后task2再启动,task2完成后task3再启动,也即异步串联。示例:Promise+then实现异步串联...

2018-03-30 17:58:27 3242

原创 JavaScript模拟局部变量整理

在ES5中变量边界有两个,一是全局范围,二是函数范围,没有一般语言的作用域范围,比如{    var a = 1;}console.log(a); //1上面会输出1,然而我们希望a仅仅局限于自己最近的括号内,而在括号外为未定义undefined,也即一般编程语言的局部变量。本文是学习ES5时整理的模拟局部变量的奇巧淫技,现在看来相当于是回字的x种写法,已经无任何意义。因为在ES6中终于引入了le...

2018-03-30 17:35:58 234

原创 历史演变有助于理解css布局的本质

最原始的文字布局应该类似古代手工书信,可能是1、每个单词只占最小空间,向左顺序排列2、排到页面右边缘后换行3、回车则结束一段,并新起一段,然后重复1和2整理1、段内部的向左顺序排列形成一条向左流。所谓流,就是内联;2、每次回车新启一段,且每一段占完整的一行,每个段形成一个块,并且上面的块和下面的块形成一条向上流,也即向上的内联;以上,是最初的文字布局,并且形成了最基础的概念:流、内联、块。加入图片...

2018-03-30 01:52:21 521

原创 工作量证明怎样突出多数共识

(这篇博客陈诉顺序不好,应该先写最后一个两军对垒退化案例,再写投票案例,最后再说区块链共识。所以阅读时请先看最后,再看中间和前面)区块链系统的特征是分布式、去中心化,能够逐步形成共识,并持久地堆积共识。由于去中心化,意味着每个节点完全由不同的人或组织管理控制,在其中必定存在各种对立节点或恶意节点。那么这里最有趣的就是,怎样在分布的节点里面形成一条共识?当区块链支持比特币时,诚实节点的共识主张可以具...

2018-03-30 01:37:49 587

原创 Parcelable, Serializable,Cloneable,copyProperties

存在着三件事,整理如下 Parcelable, Serializable(包括Externalizable+transient) -------压缩成字节流,再恢复成同类对象 Parcelable手工将字段放入Parcel字节流,无反射Serializable使用反射来发现字段及辅助信息Serializable使用Stream或ArrayByte之类

2017-10-24 00:33:45 671

原创 用TextWatcher限制输入长度并弹出提示

在EditText里面输入,限制输入长度并弹出提示,原本,这是最初级和普遍的需求了,但在细微处却有点小不方便。 方法之一,是在xml中添加限制:maxLength="10"。但是,当用户输入达到或超过限制时没有提示。 方法之二,给EditText添加TextWatcher监控,在输入超过限制时给予提示,并恢复为之前的状态。给予提示很容易,但怎么恢复为之前状态却需要小心。 另

2017-10-24 00:28:57 1462

原创 用RxJava和RxBinding发射用户点击

在初步应用RxJava时发现,网上资料中Observable的创建例子主要使用create/just/from,都是将现在已有的数据序列整理为一个发射器,而我们最常见的应用却是现在没有数据序列,等待将来数据序列的到达,比如等待用户点击或输入,或等待网络来包,也即,我们其实需要一种手动的发射器,在数据到达后用来发送这些数据。那么怎样创建这种发射器呢?查询资料后发现有几个途径,下面用点击textvie

2017-08-05 23:15:13 743

原创 最简单易懂的dagger2示例

在网上搜了很多资料,包括官网,都看不懂,基本打算放弃了。何况从功能上看,用inject替代new,似乎提升不大。最后时刻这篇博文拯救了我:https://zhuanlan.zhihu.com/p/24454466 。此文完全抛开了其他博文涉及的Android+MVP等复杂构架,是最简的纯java案例,我一下子就看懂了,可能就10分钟,我就实现了0->1的转化。其他博文也写得很用心,但写得都

2017-08-04 02:03:04 505

原创 从可视角度理解px、pt、dp

三个长度单位都根源于人眼的最小可视角度,根据这个角度和目标距离确定最小可视颗粒度尺寸。人眼的最小可视角度是不变的,目标距离越远,则这个颗粒度尺寸就越大,否则人眼会分辨不了。比这个颗粒度尺寸小一个数量级的度量单位没必要定义,因为人眼看不见,用不到

2017-01-05 22:10:50 1092

原创 图示硬链接和软链接的区别

linux文件系统中硬链接和软连接的区别

2016-10-01 20:55:05 1220

原创 Material Design风格中CoordinatorLayout、Behavior和nestedScroll的整理分析

现象与分解     Material Design中一个神奇的设计是,抹动一个子view甲时,子view乙与子view甲一起滑动     可以想象一下,其实现过程必然是          子view甲向父ViewGroup申请滑动          父ViewGroup将部分滑动距离交给子view甲,部分交给子view乙          子view甲和乙同时滑

2016-07-15 02:12:22 1357

原创 Android触屏事件处理流程的最简整理及应用示例

Android系统view层次结构如下。注意Fragment和ViewGroup可能交错Activity     Fragment          ViewGroup               View整理     当Activity收到event后,通过dispatch方法逐层下发     最下层通过onTouchEvent方法逐层向上反馈是否消费

2016-05-01 01:35:30 2237

原创 写一个Android日历控件

日历是一个常用控件,一般而言我们会通过两种途径来得到,其一是Android原生控件CalendarView,其二是在网上找一些第三方的日历控件。但这两种都有同样的不足,也即不好自定义,比如添给某段日期加个标记,或加一个中国农历,等等。最佳的,是自己写一个,可以完全自定义,无论以后项目怎么扩展,自己心里都有底。分析一下,日期本身是”年月日“,但我们要写日历,最重要的是“周”,只要我们能够

2016-05-01 00:38:45 2362

原创 整理了一个 android 上的波形图及柱状图绘制控件

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl

2016-01-13 00:50:55 7408

原创 View中OnClickListener对onTouch的影响

测试代码        mTextView.setOnTouchListener(new View.OnTouchListener() {            @Override            public boolean onTouch(View v, MotionEvent event) {                switch (event.getAction

2015-12-23 19:59:38 1086

原创 从程序员的角度看产品经理的逻辑与设计能力

第一个层次,搞清楚每个产品模块的内部逻辑。举例:注册与登录模块,输入模块,选择模块,搜索及显示模块。第二个层次,能将业务逻辑整理得清晰流畅。举例:一次用户的业务操作及结果流程,理清操作次序与分支的由来,动作与结果的逻辑关系等等。第三个层次,有自己的想法,在每个地方展现独特的品味与取向,而不是common sense。通常而言,第一个层次说明产品设计开始入门了,第二个层次说明产品

2015-12-19 00:56:48 1178

原创 纯技术之外的产品工作经验

完成产品的技术相关能力可能有如下三层:     层级一,局部模块的技术细节          这里包含所有各种厉害的纯技术技巧     层级二,把系统运行流程理顺          举例,同一个问题,可以后台解决,也可以前端解决。无论谁,不能推卸,也不能主动接,而是要从系统的总体上理顺,在后台和前端直接恰当分配问题          如果发现没有理顺,就先不要做

2015-12-02 20:47:31 432

原创 微小团队使用git进行合作开发的最简模式

1,程序员A在本地及远端维护自己的master和dev,程序员B在本地及远端维护自己的master和dev。2,当程序员B想合并A的最新版本时,pull或fatch程序员A的远端的master,反之类似。3,管理员维护一个master分支,用作release。4,当程序员A想提交稳定的新代码给管理员时,先和管理员的master进行merge,然后发pull request给管理员,管理

2015-08-24 13:51:01 1110 1

原创 在Fragment、Activity及Application生命周期中保持数据的文摘整理及部分结论

在Fragment、Activity及Application生命周期中保持数据的文摘整理及部分结论问题梳理     待保持的数据          View状态          属于fragments的数据          属于Activity的数据          属于app的数据,比如某个class里面的static数据     在如下

2015-06-23 01:49:12 1671

原创 Android源码Transition.java中发现一个小bug

最近两天正在看Scene+Transition部分,感觉这部分挺有空间可挖。该部分的功能是,在同一组ViewGroup结构的两个不同状态之间做动画切换,这有助于用户知道某一个状态的由来。更进一步,在这组ViewGroup结构中,可以选择部分view做动画切换,部分则不。这是个有趣的功能,所以写了小段代码测试。选择view可以多个方法,比如直接指定view,通过view的id,名字,或种

2015-04-06 13:43:11 943

原创 Android布局动画梳理之LayoutTransition源码追踪

Android系统的布局动画可以按如下脉络进行梳理1、按时间点分类     版本4.0之前可能没有,4.0或以上有LayoutTransition,4.4.2或以上有scenes+transition2、按动作划分     child自身的动画     child移动的动画3、按涉及的部件划分     ViewGroup或其子类     La

2015-04-03 06:54:45 1803

原创 不等宽子view自动换行的窗口(auto wrap viewgroup)

需要一个窗口来显示一堆不等长的TextView,这些子view横向顺序排列,超出窗口宽度则换行。在“cn.bing.com”上使用关键字“自动换行viewgroup”进行搜索,发现最前面6~7个搜索结果都来自同一篇博客的转载:http://www.cnblogs.com/slider/archive/2011/11/24/2262161.htmlhttp://blog.csdn

2015-03-16 16:46:38 1135

原创 修改Adapter实现GridView列表中的增加按钮

如下是常见的GridView,红色是显示的图片,绿色加号是增加图片的按钮,如何实现这样的效果?第一个思路,是在数据list最后位置增加一个加号图片数据,但这样改动原始list数据的方法显然不好,牵扯很多。第二个思路,是在Adapter里面的数据list最后一个位置增加加号图片数据,但是,为了显示一个按钮而变动正常数据list总是不妥的。再有一点,Adapter中数据list的头指针

2015-02-14 14:47:59 2446

原创 光与色,混合与分解

话说宇宙之初,天地没有一点亮光,漆黑一片,伸手不见五指。。。。。突然,一个极点爆发,无数的物质,还有光,从这个极点喷发出来,向四周扩散,形成了越来越大的宇宙。有的物质,自己能够发光,有的物质,自己不能发光,但是能反射光。所以,宇宙中只有这样几样东西:发光体,光线,反射体。宇宙中只有两种状态:有光,没有光。没有光就是宇宙的本态:漆黑。以上是

2014-11-07 15:37:45 939

原创 我的第一个开源组件:一个抹出来的快捷菜单按钮

最近看到一种快捷菜单按钮,是按一个钮,在其周围弹出若干个钮,并排在圆周上。再按圆心处按钮则收回弹出的按钮。我认为这里值得改进的地方有:1、最初得有一个按钮浮现,这个按钮有点占地方。2、当用户放弃操作时,用户需要再按一下按钮来收回弹出的按钮。这个动作有点多余。我认为精简一个动作和少占一个地方都有极大的价值,所以我设计的快捷按钮是:1、平时不占任何空间,通过手势唤出

2014-11-06 23:44:31 720

原创 View及ViewGroup的布局方法及相互关系

两次遍历     第一次measure,测试child所需空间     第二次layout,给child安排空间方法之间的相互关系,重点是mesure和layout~~~~第一遍是mesure~~~~~~~~~~~View类     mesure()设置为final,禁止被派生类override          onMesure

2014-10-15 00:36:09 2294

原创 Android官方ApiDemo中animation部分代码要点整理

ApiDemo动画代码技术点整理AnimationCloning     clone     AnimatorSet,也可以cloneAnimationLoading     XML定义animator          ValueAnimator和ObjectAnimator的XML定义不同,后者要提供属性名AnimationSee

2014-10-13 16:47:56 1276

原创 代码及UI价值观

代码价值观1、程序是给人看的,性能优化是编译器的事。2、直观胜过精妙简洁。3、帮助直观的注释是作品的一部分。UI价值观1、直观胜过唯美,哪怕是简约之美。

2014-07-16 16:01:00 527

原创 向监听类传递参数

我们给按钮设置监听器时,我们有可能希望给监听函数一个参数,或让该监听函数能够操作外面的变量,如下是一种愿望:@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { fragmentView = inflater.i

2014-03-13 16:42:45 2522

原创 在notification中设置PendingIntent

在android屏幕的通知栏中增加notification,以显示mediaplayer控制面板点击控制面板的按钮将发送intent来控制mediaplayer这些intent将以PendingIntent的形式绑定到控制面板上的按钮上不能工作的代码:public void sendNotification(int status) { if (playingFile

2014-03-06 03:28:44 10116 3

原创 Low Memory状态下app状态的恢复

app结构     activity带有ViewPager     ViewPager上带有4个fragment这是非常典型的结构操作过程     点icon打开app     点击home键隐藏app     再次点击icon唤回app     点击home键隐藏app     开启多个其他app,要很耗费内存那种     点击home键隐藏这些app

2014-02-27 15:35:37 2059

原创 android横竖屏切换与activity的销毁重建

activity在什么情况下被销毁?     用户按回退键     调用finish     放在回退栈中太久     横竖屏切换前面两种情况下     系统会认为用户不再需要这个activity了,所以在销毁时不会做任何事     没有任何浏览方法能倒回去,只能再次启动该app在第三、四种情况下     用户可以通过回退键或其他方式浏览回去    

2014-01-25 03:20:29 4789 4

原创 常用git命令整理

<!— 本文是git命令整理,git的简明工作流程在:http://blog.csdn.net/max2005/article/details/47949595 --> 花了一点时间来熟悉和整理git常用命令。 推荐的git学习资料:1、搜“Git Community Book 中文版.pdf”,git社区书,内容全面且简明扼要,第一推荐2、搜“Git权威指南....

2013-12-16 16:55:57 8575 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除