详情

全站展示位

Flutter |

琥珀之月,空谷之兰,皆是孤芳,既是孤芳,但求自赏便罢!。。。

推荐

琥珀之月,空谷之兰,皆是孤芳,既是孤芳,但求自赏便罢!

30字的完美简历[转载] |

这个世界上,总有很多人很自以为是地以为若是他们做不到的事情,别人做到了,必定不是什么光彩的正道,必定不是靠自己的实力。包括我。 曾经看到托福GMAT拿满分的人,就会想着:“怎么可能!这个人肯定是小时候在国外生活过吧!” 看到保养地特别好的中年女人,就会撇嘴:“肯定是花重金打玻尿酸啊这针那针啊!” 看到年纪貌美的女孩开着豪车经过,就会想着:“肯定是二奶呀!” 看到年纪轻轻上了富豪榜的青年才俊,就会揣测:“肯定是家族企业啊!” 看到年少成名靠参加选秀红遍大江南北的歌手明星,就会怀疑人家:“估计是被潜规则了。” …… 这样的例子几乎每天都发生着,我也曾一度全然不觉自己在这样的渊里越堕越深。 直到大四有一次去参加一个牛逼公司的面试,面试通知邮件里最后有一条是:请携带不超过30字的Personal Statement(简称PS,个人陈述)。 我一看,疯了吧?30字?!我挨个把自己工作实习过的公司名字和读过书的学校名字列一遍都不止30个字了啊?!我想了想,绝对不可能!应该是他们漏写了个0吧?于是便也不去多想了。 等到面试那天,我带了份自认为已经是非常简洁的PS过去,一路上都觉得真是憋屈啊,很多东西没写进去呢实在没有发挥我洋洋洒洒的特点,都没充分展示我的闪光点呢!但是没办法还是尽量符合这个公司简洁精准的办事风格来吧。 到了公司,我递交上我的PS后,三个面试官不约而同皱起了眉头,一个头发花白的外国男人问我:“你这个字数超过30字了,起码得有400字吧,为什么不按我们的要求做?” 我愣了一下,什么?真的是30字?不是逗我玩? 我有点怀疑地说:“30字?30字写一篇PS根本是不可能做到的呀!这字数也太少了吧!” 一个女面试官很凌厉的口气说:“不可能?不可能的事情我们怎么会要求你做?”她说着把一叠PS亮在我面前,“他们都可能,为什么只有你不可能?” 我刷地一下脸就红了,支吾着说不出话。这是我唯一一次期待着面试官赶紧说:“好了可以了,请你出去吧。” 但是试场里出现里几秒钟的沉默,这几秒钟对我来说,竟然跟失眠的夜晚一样难熬。 那花白头发面试官又开口了:“你觉得这个世界上不可能的事情,是因为你没有试着去做。” 我犹豫了一下说:“谢谢您。我知道我的问题出在哪里了。不知道是否方便让我看一眼其他人的PS,我想知道自己的差距有多大。” 他们几个互相望了一下,点头示意后将一沓PS递给我。 我在拿过来的一瞬间已经被最上面的一份震惊到了。 那整张纸上画了一个应该是以面试者自己为原型的卡通人物,最上面是他的名字,然后是一个巨大的脑袋,脑袋顶部是开放的,用一大片电脑芯片画成了原始森林的样子,旁边写着“computerized mind”,左手拿着画板,写着“Photoshop Skiller ”,右手举着一叠报告,写着“Reportexpert”, 中间的领带处别着个话筒,上面写着“Good Presenter”,心脏的位置画了一颗奇形怪状的心,写着“Creative heart”,脚踩锃亮的皮鞋,穿着毫无褶皱的西裤,旁边写着“Detail-cared”…… 我一边看,一边手心出汗。 这样一份不超过20个单词的PS,我在看完四年后的今天还能够一字不差地回想起来,并且画面栩栩如生,你可以想象它当时带给我的震惊,以及给面试官们带来的印象有多深刻。 接下来的一沓PS里,有画一个大转盘,写出自己的几个特质的;有在一条竖直的时间轴上写了自己做成的几件大事的;还有剪切了几幅自己参加过的作品粘上去的…… 总之没有一个是多于30个字的! 但是每一份PS我看完都如同看到了一个活生生的人站在我面前,我知道他的个性如何,特长是什么,有过什么值得称赞的荣誉。 而我那张全是字的白纸,恐怕人家连看都不想看,即使看了,也不会留下任何印象。 我很不好意思地将一摞纸还给面试官,很诚恳地鞠了一躬,“很抱歉浪费了你们的时间,在来这里之前,我总觉得有些事我做不到,就是不可能做的到的。谢谢你们让我知道我的想法有多愚蠢。谢谢。” 我关上身后那扇门的时候,长长地吁了一口气。 回去的一路,都走的很慢。 我不是在难过失掉了这么一个工作机会,而是在难过地回想在过去的十几年光阴里我究竟失掉了多少次机会?让本该存在的可能,成了我嘴里的不可能。 我明白了一个让人很恼火去承认的事实就是: 那些我觉得不可能的事情,其实根本不是不可能,只是我认为不可能而已。 对一个根本不会去思考去想办法的庸人来说,很多事情都会成为不可能! 后来我试着去做一份字数在30字以内的简历,用了四个晚上后,真的也做出来了。 后来我试着再去做另一份简报似的简历,在用了三个晚上后,同样也真的做出来了。 而在之前,我认为简历就该是白纸黑字,从教育背景到工作经验到兴趣爱好,但其实它充满了那么多的可能性! 可是真的该如此理所当然吗? 我们自己不可能做到,真的是因为我们无能,还是我们根本没有尝试去做? 托福考满分的同学,说不定我们没看到的是,人家起早摸黑悬梁刺股每天练口语练到喉咙发炎; 开着豪车的美女,说不定我们没看到的是,姑娘辛苦打拼几年每天工作累得像狗辛苦攒钱; 保养的很好的中年女人,说不定我们没看到的是,她们每天下班后还去健身房睡觉一定不趴着睡,每晚一定做面膜,十几年如一日; 优秀的青年企业家们,说不定我们没看到的是,他们无数个不眠不休的夜晚,付出比我们这些在睡梦中的人多的多的努力; 那些一朝红遍全国的明星,说不定我们没看到的是,人家之前十几年的默默无闻用心苦练基本功…… 我们什么都没看到,就说别人不可能;我们什么都没去尝试,就说这事不可能。 其实,我们觉得不可能做到的事情,别人真的可以做到。对一个根本不敢去做的人来说,一切都是不可能。 想是问题,做是答案,有时候答案就藏在问题后面!

Android Jetpack Compose 超快速上手指南 |

Compose 介绍 Jetpack Compose发布也快有一年的时间了,虽然目前仍是DEV阶段,但是距离可用已经不远了。Compose库是用响应式编程的方式对View进行构建,可以用更少更直观的代码,更强大的功能,能提高开发速度(可以参考几乎一模一样的Flutter,开发速度确实很快)。 Jetpack Compose对于没有接触过声明式UI的小伙伴可能会学习曲线有点陡峭,对于已经能熟练开发Flutter应用的小伙白来说几乎没有难度。(Compose就是参考flutter的模式开发的,代码中还可以看到Flutter的相关注释) 这篇文章不回去解释过多的原理与技巧,只要是让你能够快速上手开发项目。 Compose 如何使用 因为目前(2020年09月27日)Compose仍处于开发阶段,所以需要使用最新 Canary 版的 Android Studio 预览版。 可以选择直接创建Empty Compose Activity来创建一个全新的Compose应用,或者可以选手动修改gradle的方式来创建Compose应用 修改Gradle 在模块的build.gradle文件中新增: android { ... kotlinOptions { jvmTarget = '1.8' useIR = true } buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion compose_version kotlinCompilerVersion '1.4.0' } } dependencies中新增: implementation "androidx.compose.ui:ui:$compose_version" implementation "androidx.compose.material:material:$compose_version" implementation "androidx.ui:ui-tooling:$compose_version" 目前最新的Compose版本是1.0.0-alpha03 使用Compose最低的buildTools版本要求为29 使用 @Compose 所有关于构建View的方法都必须添加@Compose的注解才可以。并且@Compose跟协程的Suspend的使用方法比较类似,被@Compose的注解的方法只能在同样被@Comopse注解的方法中才能被调用

解决 golang IDEA中不能debug问题 |

IDEA是2018-01版本,Golang是go-1.12.1,IDEA在Plugins中安裝的Go插件,我在运行go程序時是正常的,但是提示could not launch process: decoding dwarf section info at offset 0x0: too short 解決方案: 1:在终端运行 go get -u github.com/derekparker/delve/cmd/dlv。 2:运行上面的命令之后运行环境中就有dlv了。替换IDEA go 插件中的dlv macOS中的插件地址是:/Users/用户名 /Library/Application Support/IntelliJIdea2018.1/intellij-go/lib/dlv/mac 替换之后就正常了。

心灵鸡汤

泪洒通知书

文/赵同胜

我的录取通知书比别人迟发了一个多月,得到消息时,我已在补习班上了两周的课。

我的高考发生在38年前。于我这个“泥娃”而言,高考是通往“外界”唯一的一条出路,我很清楚高考对我意味着什么。

那年的高考说不上圆满,但也没糟糕到哪儿去。天生好理科,对文科没有丁点的感觉,结果也在意料之中,数理化科科优秀,而语文和政治果然不及格。无奈与大学失之交臂,好歹上了中专线,跳出农门也算有了指望。

娘一脸欢喜,我也如释重负。可天意弄人,当别人拿着录取通知书兴高采烈去学校报到时,我的通知书却迟迟不见踪影。娘急得整宿睡不着觉,脸上写满了焦躁。当过村干部的娘不甘心儿子就这么不明不白落榜,生性好强的她要去寻个究竟。可是,这对于一个没怎么见过世面的农家妇女来说,谈何容易?娘拖着一双残腿到了县上,县上的人一句话就把娘支走了,无奈,娘倒了几次车,几经辗转,到了市里,得到的答复是:压根就没有这个学生的档案。娘一惊,感到了事态的严重。娘瞪着眼睛,哆嗦着嘴唇,连一句完整的话都说不出来了。娘马不停蹄回到县里,接待她的人依旧是一副麻木的面孔,娘急了,怒了,言称卖房子卖地,也要弄个水落石出。再到市里,依然无果,娘很失落地坐在院子里,仰天长叹,伤心落泪。突然,一个领导模样的人和娘打招呼,娘认出来了,是曾在村里下过乡的老李。问明了情况,老李领着娘折回招生办,简单了解了一下情况后,老李对招生办的人说了一番言辞强硬的话,然后让娘回家等消息。

几天后,通知书终于到了,我和娘将它捧在手里,相拥而泣,泪水不小心滴落在通知书上。娘慌了,赶紧掏出手绢,轻轻地将泪水拭去,可还是留下了淡淡的印痕。

原来,是村里的对立面使了手段,在神不知鬼不觉中托人扣押了我的档案。若不是娘的坚持,若不是巧遇老李,我的第一次高考注定会成为一个“谜案”。

列表展示

主站展示位

使用 Rust 开发 Android 底层库,并简化 Java 与 Rust 相互操作 |

前言 提到JNI,大家都会想到C,C++.不过如今Rust又给我们增加了一个选项,借助rust的jni库( 关于 Rust 环境搭建、配置 Rust Android targets、linker,以及如何在 Android 上如何直接运行 Rust 代码,可以看上篇文章 将 Rust 编译为可在 Android 上使用的二进制文件 本文主要介绍如何使用 Rust 借助 J4RS 方便快捷的编写 Android Jni: 阅读本文,你需要具备、了解一下知识: Android 编写 JNI 的基本流程 Rust 代码基本的阅读能力 Android 开发的基本流程 Android 集成 Rust 配置 Rust Android Gradle Plugin Rust Android Gradle Plugin 这个 Gradle 插件的主要功能是帮你自动配置 Rust-Android 交叉编译,并将编译产物自动添加到 Android 项目。 这并不是必须的,你同样可以手动 build rust 项目。然后手动复制到 Android Studio 中使用。 因为我使用的是最新版本的 gradle , 采用 Kotlin kts 编写。在语法上稍有不同,旧版本写法可以在项目的 README 查看

软件开发 |

琥珀之月,空谷之兰,皆是孤芳,既是孤芳,但求自赏便罢!

Android中GPS定位(获取经纬度) |

AndroidGPS定位问题,众所周知是一个蛮麻烦的问题.当初我是新手,现在我也是新手,也搞了我头大,网上搜索了很多的例子,一直处于僵持阶段,而现在终于搞定了,因为我现在只需要获取到经纬度就可以了,反正获取经纬度可以从我这篇文章中看看;上代码。 在AndroidManifest.xml中加入权限: <uses-permission android:name=”android.permission.ACCESSFINELOCATION”/> <uses-permission android:name=”android.permission.ACCESSCOARSELOCATION”/>

unable to connect to 5555: connection refused |

I had the same issue since the android 6 upgrading. I noticed that for some reason the device is playing “hard to get” when you try to contact it over WIFI. Try these following steps: Make sure that Aggressive Wi-Fi to Cellular handover under Networking section in the device’s developer options is turned off. ping continuously from your pc to the device to make sure it’s not in network idle mode ping -t 192.

Flutter |

琥珀之月,空谷之兰,皆是孤芳,既是孤芳,但求自赏便罢!

Flutter中嵌入Native组件 |

Flutter官方提供的控件AndroidView、UiKitView就是一种比较优雅的解决方案了。这里做了一个简单的嵌入TextView的demo(使用这种方式会增加性能上的开销,应该尽量避免使用) 使用方式 native端 跟MethodChannel的使用方法类似,在native侧,我们实现一个PlatformViewFactory(iOS是FlutterPlatformViewFactory),在create方法中,使用平台方法创建View返回。 override fun create(context: Context?, i: Int, any: Any?): PlatformView { return object : PlatformView { override fun getView(): View { val text = TextView(context) text.layoutParams = ViewGroup.LayoutParams(SizeUtils.dp2px(200f), SizeUtils.dp2px(200f)) text.apply { setText("Android View") setTextColor(Color.BLUE) setBackgroundColor(Color.RED) } return text } override fun dispose() { } } } func create(withFrame frame: CGRect, viewIdentifier viewId: Int64, arguments args: Any?

利用Android源码,轻松实现汉字转拼音功能 |

今天和大家分享一个从Android系统源代码提取出来的汉字转成拼音实现方案,只要一个类,560多行代码就可以让你轻松实现汉字转成拼音的功能,且无需其他任何第三方依赖。

用组合代替继承能为 Activity 带来什么 |

原文链接 : Composition over Inheritance,What it means for your Activities 原文作者 : Josh Brown 译者 : chaossss 校对者: Mr.Simple 状态 : 完成  事实上我们在很多 Java 进阶书籍上看到过“开发时应该更倾向于选择组合而不是继承”的建议,为什么建议我们更倾向于而不是完全代替呢,因为当类 A 能完全代替另一个类 B(我们想让 B 成为 A 的父类)时,我们就应该使用继承,如果 A 仅仅是和 B 有着某些共同的行为,是不应该使用继承的(更多的讨论戳我)。然而,在我阅读别人的源码时,滥用继承的情况实在是太多了,多少人创建了一个 BaseActivity 后,就让所有 Activity 继承它,在子 Activity 中实现业务逻辑。  而且这样做问题大大的有,最鲜活的例子就是:Joe Newguy 加入到我们组,并实现了 ShinyFeatureActivity,那会组里没有任何规定强迫他必须让 ShinyFeatureActivity 继承于 BaseActivity,但他还是这么干了……万幸我们在 Code Review 时发现了这个问题。此外,如果每一个 Activity 都继承于 BaseActivity,在某些情况下,你可能要继承的是其他 Activity(例如:PreferenceActivity、ListActivity)。尽管大部分 Activity 的子类都有相应的 Fragment 代替,但还是有一部分是没有对应 Fragment 的,某些库仍然需要相应的 Activity 子类。  有些更潜在的问题是:有时候某些 Activity 需要这些行为,其他的 Activity 需要其他行为,而 Java 并不支持多继承,这就意味着我们得将行为有交集的 Activity 的所有行为放到一个独立的类里面。但这样做会降低可维护性,甚至带来性能影响。

未命名 |

她是江南一带有名的妓 他是战功显赫的将军 前几日他失去妻子 在歌妓面前喝的烂醉 把妓当成她 第二天看到床上的落红 将军嘲笑妓 终究是婊子 他穿衣离去 妓九岁被卖到青楼 几年来只卖艺不卖身 直到那晚遇到他 她羞涩 笨拙 把自己给了他 他凶狠 粗鲁 嘴里叫着妻子的名字 妓只喜欢了这一个人 却喜欢了一辈子 将军在外战沙场 歌姬城内待他归 将军入城 从不多看一眼 只是在深夜敲开她的房门 他在外时日久 她抱着他褪下他的衣服 细数他身上的疤痕 他抱她上床 没有情话 只有缠绵 她轻触他疤痕 你娶我吧 我想给你一个家 将军穿好衣服起身离去 留她一人愣愣的 看他离去的方向 做妓的最怕有了感情 可她偏偏中了这世间最愁的毒 妓说 我不想再做这行了 那夜她主动寻他 月光下她红色的唇格外迷人 那夜她用尽万种风情 将军你吻我 将军毫不动意 一夜缠绵 她离去 妓知道将军不会寻她 毕竟她只是个妓 一日为妓 终身为娼 不久将军带兵出征 两军交战 在敌方的主帅身旁发现一身红衣的她 她一身红衣依靠在另一个男人怀里 将军满眼尽是讽刺 战争的号角吹响 她藏在袖中的匕首直刺敌将心脏 敌将并不惊讶 像是早已预料 将军愣住 这是她第一次看到他除了冷漠意外的表情 战火硝烟 她闭上双眼 妓知道 他安全了 从此以后他都安全了 她可以放心了 也总算帮了他一次

Java服务器端的Servlet的生命周期 |

servlect生命周期,核心与接口: servlect生命周期的主要阶段: 1.创建servlect对象的创建 servlect岁创建的?什么时候创建的? servlect由web创建,默认在请求第一次到达servlect时创建。若请求在次访问该servlect,tomcat不会新创建servlect对象,还是使用第一次创建的servlect方法去执行该业务。所以servlect是单例的。每一个请求使用的servlect都是同一个。所以会出现线程并发的安全问题。servlect是线程非安全的。

⾃定义布局流程 |

⾃定义布局流程 布局过程 确定每个 View 的位置和尺⼨ 作⽤:为绘制和触摸范围做⽀持 绘制:知道往哪⾥绘制 触摸反馈:知道⽤户点的是哪⾥– 流程 从整体看 测量流程:从根 View 递归调⽤每⼀级⼦ View 的 measure() ⽅法,对它们进⾏测量 布局流程:从根 View 递归调⽤每⼀级⼦ View 的 layout() ⽅法,把测量过程得出的⼦ View 的位置和尺⼨传给⼦ View,⼦ View 保存 为什么要分两个流程? 从个体看,对于每个 View: 运⾏前,开发者在 xml ⽂件⾥写⼊对 View 的布局要求 layout_xxx ⽗ View 在⾃⼰的 onMeasure() 中,根据开发者在 xml 中写的对⼦ View 的要求,和⾃⼰的可⽤空间,得出对⼦ View 的具体尺⼨要求

Connection with adb was interrupted.解决办法 |

[2012-10-16 10:49:35 – My First App] [2012-10-16 10:49:35 – My First App] Android Launch! [2012-10-16 10:49:35 – My First App] Connection with adb was interrupted. [2012-10-16 10:49:35 – My First App] 0 attempts have been made to reconnect. [2012-10-16 10:49:35 – My First App] You may want to manually restart adb from the Devices view.

Sophie’s World |

生命本没有意义,你要能给他什么意义,他就有什么意义。与其终日冥思苦想人生有何意义,不如试用此生做点有意义的事。 ——苏菲某天放学回家,收到了神秘的一封信。 ——你是谁? ——世界从何而来?  从此,她的生活彻底改变,在一位神奇的哲学老师艾伯特的指引下,她开始思索,从苏格拉底到柏拉图,从黑格尔到马克思,从文艺复兴到浪漫主义,各位大师所思考 的根本问题。与此同时,苏菲不断收到一个自称是少校的人的神秘信件,,并托她转达给一个叫席德的人。可苏菲并不认识这个叫席德的人。世界像谜团一样展现在 苏菲眼前,她运用少女天生的悟性与后天的知识,企图解开这些谜团,然而,事实真相远比她所想的更离奇,更怪异……在艾伯特的指引下,他们发现自己仅仅是少 校写的一本为自己女儿席德生日而送的书中的人物,他们所做的一切,包括思考的一切都被少校用笔写了下来,他们不过是少校大脑中的一丝电磁波罢了。换句话 说,苏菲和艾伯特,以及他们那个世界中的一切,全部都是不存在的,是虚无的!可就是这样一个虚构的人物,竟然也有自己的思想,他们企图脱离书本,不再受少 校的摆控。终于,在席德将苏菲的故事看到最后一页时,他们成功的逃离了书本,来到了一个叫永恒之乡的世界。这是一个与现实世界相对位的地方,这个世界的人 都拥有永恒的生命。他们可以看到听到现实世界的一切,但现实世界的人却永远也无法感受到他们的存在。永恒之乡的人都是像苏菲和艾伯特一样,是从某个虚构的 股市中跑出来的人物。此时少校和席德正在草地上仰望星空,谈人生,谈宇宙,而苏菲正在某个角落默默地注视着他们……  这个故事看似匪夷所 思,实则发人深省,看完后我们不禁要问——人生的意义是什么?在苏菲的世界中,他们的一切都是虚无的,不存在的。他们所有的思想动作以及所发生的一切事 情,都是少校所安排好的,少校在那个世界中无所不能,仿佛就是他们的上帝一样。因为少校就是创造他们世界的人。可事实上,少校和席德不也是虚构的人物吗? 他们所做的一切不都是作者乔斯坦·贾德所安排好的吗?我们所看到的席德,就像席德看到的苏菲一样,而贾德,就是席德他们那个世界的上帝吧?再放眼我们现在 所处的这个世界,这应该是相对于我们的“现实世界”吧?那是不是存在这样一个“上帝”,我们的所作所思,都是这位上帝所安排好了的呢?那这样我们的存在岂 不是毫无意义的吗?那这位上帝之上,是否还有一位上帝呢……  其实,每个人都是一个思维的个体,而相对于我们而言,自己的命运是要靠自己把 握的。尽管我们的未来可能就像戏剧一样早已被上帝写进了剧本,可是只要我们认为自己是存在的,不就足够了吗?正如苏菲和艾伯特将要离开他们那个世界时一 样,艾伯特对大家说;“在座的没有一个人会想念我们,因为你们根本就不存在,你们无法用任何器官来想念我们。”当即立刻有人反驳道:“你凭什么说我们不存 在?我努力赚钱,养活我的家人,过上幸福的生活,我很快乐!可你到头来却说我不存在?”的确,按理说他只是虚构的,的确是不存在,可如果映射到我们这个世 界,岂不是同样没有人存在?引入一个概念前必先引入其相反的一个概念,既然一切都“不存在”,那又何来“存在”的概念呢?所以,或许我们不存在,可那只是 相对上帝而言的,我们只须抓住这如星尘般稍纵即逝的瞬间,以自己的方式,度过人生,那就足够了。或许每当天空中有星尘散落时,那一定是某个小说中的人物从 他那所谓不存在的世界中脱离出来了,他会在某个角落,默默地注视着我们…… 人生如梦。 梦即现实。

Android Manifest之receiver元素中文注释 |

语法(SYNTAX): <receiver android:enabled=["true" | "false"] android:exported=["true" | "false"] android:icon="drawable resource" android:label="string resource" android:name="string" android:permission="string" android:process="string" > . . . </receiver>

Flutter |

琥珀之月,空谷之兰,皆是孤芳,既是孤芳,但求自赏便罢!

Don’t Store Data in the Application Object |

There is always some information that is needed in many places in your app. It can be a session token, the result of an expensive computation, etc. It is often tempting to avoid the overhead of passing objects between activities or keeping those in persistent storage. A pattern that is sometimes suggested is to dump your data in the Application object with the idea that it will be available across all activities.

清除目录下的SVN信息 |

在项目开发和日常文档管理时,用到了SVN,由于要把一些文档发给同事,这时想删除SVN版本信息文件,于是上网在SVN中文论坛找到了一份资料: 删除 .svn 文件 在linux下 删除这些目录是很简单的,命令如下 find . -type d -name “.svn”|xargs rm -rf 或者 find . -type d -iname “.svn” -exec rm -rf {} ; 在windows下用以下法子: 1、在项目平级的目录,执行dos命令: xcopy project_dir project_dir_1 /s /i project_dir 为你的项目目录 原理是复制可见文件 .svn是隐藏目录 不会复制 3、添加注册表(亲自动手测试过) 可以将“快速删除SVN版本信息”命名增加到资源管理器的右键上,这样,鼠标点两下就能把选中目录下的所有.svn目录干掉了。 代码为: Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINESOFTWAREClassesFoldershellDeleteSVN] @=”快速删除SVN版本信息” [HKEY_LOCAL_MACHINESOFTWAREClassesFoldershellDeleteSVNcommand] @=”cmd.exe /c D:工具批处理文件删除SVN版本信息.bat” 将这段代码保存为一个.reg文件,双击确认导入注册表中不完整,后来自己手工添加。注意:文件“批处理文件删除SVN版本信息.bat”不能放 在有空格的文件夹下,确认删除时请看一下当前目录不要删除不该删的目录下的SVN版本信息。不知道怎么改进“cmd.exe /c D:工具批处理文件删除SVN版本信息.bat”。 批处理文件删除SVN版本信息.bat文件内容如下: @echo off echo *********************************************************** echo 清除SVN版本信 息 echo *********************************************************** :start ::启动过程,切换目录 :set pwd=%cd% :cd %1 echo 工作目录是:& chdir :input ::获取输入,根据输入进行处理 set source=: set /p source=确定要清楚当前目录下的.

RxJava操作符分类 |

ReactiveX的每种编程语言的实现都实现了一组操作符的集合。不同的实现之间有很多重叠的部分,也有一些操作符只存在特定的实现中。每种实现都倾向于用那种编程语言中他们熟悉的上下文中相似的方法给这些操作符命名。 本文首先会给出ReactiveX的核心操作符列表和对应的文档链接,后面还有一个决策树用于帮助你根据具体的场景选择合适的操作符。最后有一个语言特定实现的按字母排序的操作符列表。 如果你想实现你自己的操作符,可以参考这里:实现自定义操作符 创建操作 用于创建Observable的操作符 Create — 通过调用观察者的方法从头创建一个Observable Defer — 在观察者订阅之前不创建这个Observable,为每一个观察者创建一个新的Observable Empty/Never/Throw — 创建行为受限的特殊Observable From — 将其它的对象或数据结构转换为Observable Interval — 创建一个定时发射整数序列的Observable Just — 将对象或者对象集合转换为一个会发射这些对象的Observable Range — 创建发射指定范围的整数序列的Observable Repeat — 创建重复发射特定的数据或数据序列的Observable Start — 创建发射一个函数的返回值的Observable Timer — 创建在一个指定的延迟之后发射单个数据的Observable 变换操作 这些操作符可用于对Observable发射的数据进行变换,详细解释可以看每个操作符的文档 uffer — 缓存,可以简单的理解为缓存,它定期从Observable收集数据到一个集合,然后把这些数据集合打包发射,而不是一次发射一个 latMap — 扁平映射,将Observable发射的数据变换为Observables集合,然后将这些Observable发射的数据平坦化的放进一个单独的Observable,可以认为是一个将嵌套的数据结构展开的过程。 roupBy — 分组,将原来的Observable分拆为Observable集合,将原始Observable发射的数据按Key分组,每一个Observable发射一组不同的数据 ap — 映射,通过对序列的每一项都应用一个函数变换Observable发射的数据,实质是对序列中的每一项执行一个函数,函数的参数就是这个数据项 can — 扫描,对Observable发射的每一项数据应用一个函数,然后按顺序依次发射这些值 indow — 窗口,定期将来自Observable的数据分拆成一些Observable窗口,然后发射这些窗口,而不是每次发射一项。类似于Buffer,但Buffer发射的是数据,Window发射的是Observable,每一个Observable发射原始Observable的数据的一个子集 过滤操作 这些操作符用于从Observable发射的数据中进行选择 Debounce — 只有在空闲了一段时间后才发射数据,通俗的说,就是如果一段时间没有操作,就执行一次操作 Distinct — 去重,过滤掉重复数据项 ElementAt — 取值,取特定位置的数据项 Filter — 过滤,过滤掉没有通过谓词测试的数据项,只发射通过测试的 First — 首项,只发射满足条件的第一条数据 IgnoreElements — 忽略所有的数据,只保留终止通知(onError或onCompleted) Last — 末项,只发射最后一条数据 Sample — 取样,定期发射最新的数据,等于是数据抽样,有的实现里叫ThrottleFirst Skip — 跳过前面的若干项数据 SkipLast — 跳过后面的若干项数据 Take — 只保留前面的若干项数据 TakeLast — 只保留后面的若干项数据 组合操作 组合操作符用于将多个Observable组合成一个单一的Observable

Flutter和原生Android控件对比 |

Flutter和原生Android控件对比: Flutter控件 Android控件 AppBar ActionBar/ToolBar ListView ListView/RecyclerView Text TextView Center ViewGroup FloatingActionButton FloatingActionButton(design库里面的) BottomNavigationBar BottomNavigation(design库里面的) RaisedButton/Button Button Column LinearLayout的android:orientation=“vertical” Row android:orientation=“horizontal” DecorationImage ImageView Image ImageView Stack FrameLayout/RelativeLayout Container RelativeLayout CustomMultiChildLayout RelativeLayout Algin alginParentXXX属性 resizeToAvoidBottomPadding android:windowSoftInputMode=”adjustResize属性 SingleChildScrollView ScrollView CustomScrollerView Recyclerview Image里面的BoxFit参数介绍:(相当于Android的ImageView的scaleType参数)

博客寄语:

    从14年开始写博客,到现在再有2年就10年了。

实时播报:

博客号-学习成长

相信每一分耕耘都有每一分收获,致力帮助博客主所创作的博客能更快的被收录! 如果有其它需求,可联系下方邮箱。