详情

全站展示位

不可描述的东西

千万不要在使用代理时开启带有 p2p 功能的下载器,例如迅雷,不要进行 p2p/BT 下载。 订阅节点说明 订阅地址已分别私聊发送,敬请收藏。这里仅用作帮助文档。 💡节点不能用时请先尝试更新订阅! 默认订阅带有「♻️最低延时」组,会定时对全部节点进行延时测速,自动选择最优的作为主要代理。但往往最低。。。

推荐

搞懂 Java 与 Kotlin 泛型

本文讨论的「泛型」只局限于 Java / Kotlin 中。 什么是泛型 泛型本质上是一个确保类型安全的手段,它属于那种没有也罢有则更佳的特性。泛型几乎没有扩展 Java 能力的边界,而是提高了编码效率与可维护性,减少模板代码并降低出错机率。这么说的原因是使用 Object 就可以传递任意数据,没有必要使用泛型。 所有写 Java 的人都离不开泛型,比如 List<String> 但主动写一个泛型类的人就不多了,其中一个原因是对泛型的能力缺乏清晰的认识,所以不知道什么时候可以使用这个利器。 泛型适用场景有以下几个: 类/接口内部的数据或操作限制于某种数据类型,但这个类型本身可以有多种选择。List 就是这个一个典型用例。 方法的参数/返回值限制于某种类型,但每次调用的时候这个类型可能不一样。(泛型方法) 对参数或返回值类型施加额外的限制。 比如有这样一个方法 void merge(List l1, List l2),希望限制它两个参数的元素必须是同一个类型的且必须实现序列化接口,就可以借助泛型做到:<T extends Serializable> void merge(List<T> l1, List<T> l2) 这个用例中我们并不关心类型参数被实例化为何物,仅仅是用来施加限制。 泛型的实例化 泛型类 泛型只是一个占位符,在使用的时候(编译期)需要被实例化为具体的类型才有意义。这有点像形参与实参的区别。因为它只是一个占位符,所以定义泛型时候的名字无所谓,就像参数名一样。例如下面两种泛型定义等价: 1 2 3 4 5 6 public interface Shop<T> { T get(); } public interface Shop<balabala> { balabala get(); } 所谓泛型的实例化,就是给它确定具体类型的过程。但这个具体类型也可以是另一个泛型提供的,比如下面这个例子: 1 public class LargeShop<T> implements Shop<T> 左边的 T 是声明的类型参数,右边的 T 是用 LargeShop 的类型去实例化 Shop 泛型。同样类比传参:

Category: 路由器

🙅‍♂️ 若放弃自由来换取保障,自由和保障将一并逝去 ——哈耶克 🌎 Believe in OPENNESS

Jetpack Compose 笔记(4)drivedStateOf

数据的转换 对于 Compose 中的数据,用 mutableStateOf() 包裹来实现监听刷新我们已经轻车熟路。那如果一个数据依赖于另一个或多个数据怎么办?这就用到 derivedStateOf(),它专门用于数据的转换,当上游数据发生变化时会自动刷新下游数据,进一步刷新 UI。有点类似 LiveData 中 Transformations.switchMap 的作用。 Show me the code: 1 2 3 4 5 6 7 8 9 10 setContent { var name by remember { mutableStateOf("chenhe") } val upperName by remember { derivedStateOf { name.uppercase() } } Column { Text(upperName) Button(onClick = { name = "bob" }) { Text(text = "Change Name") } } } upperName 由 name 转换得来,一开始会显示 “CHENHE”,点击按钮后变成 “BOB”。好了,本节到此结束 😋

小米支架自拍杆—不止自拍

之前的线控自拍杆丢了,爱旅游的我缺少这么个神器简直不能忍,于是又找朋友要了个。(请不要过分在意“要”这个动词,另外,我才不告诉你们丢的那个也是要的 (′▽`〃))这货让我写篇评测…WTF?? 写就写吧,说不定哪天成了数码大V可要好好感谢他 (o゚v゚)ノ 噔噔噔噔 这次给我的是小米支架式自拍杆,就是这货↓ 包装 包装一脉继承小米的极简风,甚至连说明书都省去了,直接印刷在外壳上。 内有一个小盒子,里面是蓝牙遥控器。 主体 自拍杆主体是纯粹的支架,并没有任何连接线与按钮。自拍杆头部整体是可以以180°为单位进行旋转,主要是为了便于收纳。因为正面需要安装蓝牙遥控器,手机夹不得不旋转到背面进行折叠。 不同于常规自拍杆,这款手机夹除了可以前后俯仰调节角度之外,也支持以45°为单位进行旋转,因此可以实现手机竖直方向的拍摄。不过夹上手机后因为手机本身的阻挡,一般只能旋转±45°,如需切换横竖屏要先把手机拿下来。(如果你的手机只有半个手掌那么大的话就当我没说 = ̄ω ̄=) 手机夹接触面是橡胶(硅胶?傻傻分不清),质地柔软,摩擦力大,不伤手机也不容易脱落。官方说明写可以适配宽度在56-89mm的手机,网友说小米mix可以正常使用。相对于线控版自拍杆,此款取消了调节螺丝,改为固定阻尼的转轴,阻力刚刚好,用起来比来回拧螺丝方便不少。 因为整合三脚架的设计占用了不少空间,同时为了增加便携性以及手柄的握持感,只好牺牲了长度。完全伸展后加上手柄也只有40cm左右,与普通版70cm的长度有一定差距。其实40cm对于常规自拍差不多足够了,如果还想靠自拍杆举高高来欣赏被人群挡住的表演,可能有点困难。 另:完全伸展后有3段,一开始阻力比较大,要大胆拉开。 支架 支架算是这款最大的特色了。底部轻松掰开后即可快速变成一个三脚架。尾部采用了橡胶(硅胶?)材料,摩擦力大,几乎不用担心打滑现象。(但是这种材料容易沾灰,强迫症看着很难受)中间拉长杆的收纳部分也顺势当做了支架,在超重时可以分担压力吧。 当做支架使用时也是可以拉出伸长杆的。全部拉出后加上全金属荣耀7,在水平的床上依旧可以站住,稳定性还不错。 蓝牙遥控器 本款使用了分离式蓝牙遥控器,可以单独拿下来使用。安装处有凹槽,应该比较结实不会掉下来。遥控器采用 micro-usb 充电接口,接口除了充电,也兼具从自拍杆拿下时的缺口功能,使得拿下也是非常轻松。 遥控器按钮略硬,不注意的话有可能造成拍照抖动(希望你的手机有光学防抖),不过防抖不防手贱嘿嘿 ( ̄_, ̄ ) 总结 这是一个兼具创意与实用的产品,尤其适合男生。我想大部分男生应该不如妹纸那么喜欢自拍,自拍杆更多情况下是作为辅助工具使用。 带有三脚架的自拍杆在平日可以作为手机架,看个电影玩个直播还是很方便。在外面拍个延时摄影、长曝光等对于抖动要求高的东西可以说非常完美了。毕竟谁也不想背个专业器材出去玩。 可分离式的蓝牙遥控器更加拓展了使用场景。合个影不用求人啦,抓拍个什么更是美滋滋。 不满意的是没有采用最新的 type-c 接口,外出时不得不单独考虑数据线的问题。同时使用蓝牙3.0并不支持BLE,续航也需要注意。目前没有找到官方的续航参数。 最后 蟹蟹这位朋友啦 (๑•ᴗ•๑) ❤

心灵鸡汤

哲理小故事、鹦鹉

  一个人去买鹦鹉,看到一只鹦鹉前标:此鹦鹉会两门语言,售价二百元。

  另一只鹦鹉前则标道:此鹦鹉会四门语言,售价四百元。

  该买哪只呢?两只都毛色光鲜,非常灵活可爱。这人转啊转,拿不定主意。

  结果突然发现一只老掉了牙的鹦鹉,毛色暗淡散乱,标价八百元。

  这人赶紧将老板叫来:这只鹦鹉是不是会说八门语言?

  店主说:不。

  这人奇怪了:那为什么又老又丑,又没有能力,会值这个数呢?

  店主回答:因为另外两只鹦鹉叫这只鹦鹉老板。

  【哲理故事感悟】这故事告诉我们,真正的'领导人,不一定自己能力有多强,只要懂信任,懂放权,懂珍惜,就能团结比自己更强的力量,从而提升自己的身价。

相反许多能力非常强的人却因为过于完美主义,事必躬亲,什么人都不如自己,最后只能做最好的攻关人员,销售代表,成不了优秀的领导人。

列表展示

主站展示位

Dagger2 in Android(一)通俗基础

背景知识 Dagger2 是一个由 Google (之前是 Square)维护的开源依赖注入框架。我曾两次试图学习 Dagger 最终被乱七八糟的名词弄得晕头转向,连个 demo 都没写出来就放弃了。所以本文也会重点解释 Dagger 的各个名词,只有熟悉了它们的作用,才能顺畅无阻地使用,也才能看懂

Android 中的注解处理

基本语法 注解有时候也称为「元编程」,它是对代码本身进行编码,让程序自动生成代码。这种理解有一点狭义,注解不一点要生成代码,也可能只是给其他代码或 IDE 作为参考。例如 @Deprecated 就是很好的例子。 在 java 中,定义注解语法如下: @Retention(RetentionPoli

Go 指针与接口那些事

Go 是传值的 在正式开始讨论指针与接口之前,我们有必要达成共识:Go 中函数传参是传值。 普通参数 普通参数很容易理解,传值就是把原来的值拷贝一份,再传给函数。那么函数拿到的是副本,对齐的修改自然也不会影响原来的值。playground func foo(b int) { b = 007 }

LeetCode452/435/135/714 贪心算法

总结 当我们感觉局部最优可以推出全局最优,一时找不到反例时就可以使用贪心算法。所谓「贪心」就是只在眼下找到最好的方法。贪心算法相对比较抽象,不像滑动窗口那么好识别有套路。局部最优有很多种表现形式:例如先处理一部分元素,再处理其他部分。或者先从一个维度处理全部元素,再从另一个维度处理。不要把「局部」狭

大学活动的原罪

又是一年运动会,想起大一时的自己,想起现在大一的孩子,感到面对框架的深深无力。 诡异的现状 相信无论你是双一流还是专科,一定遇到过「被」参与活动,「被」当观众之类的事情。若严词拒绝,轻则辅导员谈话被指没有集体荣誉感,重则取消评优资格甚至丢掉学分。一般来说,一个真正成功的活动应该是学生踊跃报名,而如今

Jetpack Compose 笔记(6)硬核深入 Modifier

⚠️ 警告:这一节不是罗列各种 Modifier 的使用与效果,而是深入它们的原理,不适合快餐式学习。 只想学简单用法的建议看文档或随便一个免费的视频教程。 ⚠️ 警告:这一节非常硬核,我花了三天学习,所以不建议尝试短时间看完并理解。 本节源码参照 Compose 1.3.0-alpha02 回顾

考研高数公式😑

每天起床第一句,每天起床第一句 泰勒公式记一记 -。- 泰勒公式 $e^x = 1+x+\frac{x^2}{2!}+...+\frac{x^n}{n!}$ $sinx = x-\frac{x^3}{3!}+...+(-1)^n\frac{x^{2n+1}}{(2n+1)!}$ $cosx = 1-

一语禅

最美的是遗言,最丑的是誓言。 最假的是眼泪,最真的看不见。 ——还魂门 生活不能总是占便宜,吃亏也是生活的一部分。 人生是场马拉松,不是百米赛。 我有两把刀,一把用来拯救病人的生命,一把用来剖析自我的心灵。 ——心术 <!-- more --> 一旦说出口的话说收不回来的,语言是把利刃,使用不当便会

「QQ 沉默者」白皮书

序 「QQ 沉默者」是一款针对 QQ 的插件,实际上经历了数个产品形态,是一个典型的极端思想的产物。从2020年2月有了初步想法,至今(2020年9月)虽然从未公开发布,但我自己也是断断续续地使用改进了大半年。偶然得知列表里竟然还有人真的在寻求这样一个功能,所以我决定把这半年来的收获分享一下,希望不

归档

Hi, 这里是晨鹤的个人博客。一个赶上了 90 后末班车的跨时代 ISFP 努力守护的一个一亩三分地。

记一次sni导致的反代异常

背景 一直用 Authenlia 作为反代认证,给各种私有服务添加了统一登录。架构如下: 当用户希望访问「内网服务#1」时: 访问反代服务器(Nginx)。 反代服务器向认证服务器查询是否已登录,若认证成功则继续。否则显示登录页面。 反代服务器访问内网服务取得资源。 反代服务器把结果返回给用户。 其

常州の周末

这是大学期间第五次短途出行,前几次分别为扬州、北京、南京、杭州。 众所周知,常州以游乐场著名,所以光顾着刺激就忘了拍照。话说那些项目也不让带手机啊,一不小心就成死神来了了-.- 不过为了让各位少花冤枉钱并且减少排队时间,还是把这次行程总结一下。 背景 时间:2017.11.3 ~ 2017.11.5

一步步把路由器变成NAS—离线下载+文件共享 AND MORE

提示 请注意本文写作的历史环境,当时家用 NAS 尚未流行,本着折腾的态度让路由器承担了太多。如今看来这不是一个好的做法,路由器作为网络底层设备,应尽可能的精简与稳定。切忌 All in BOOM。有需求的同学建议上专业的 NAS,至少可以选择轻量级 NAS。至于路由器,就让它做好本职工作吧。 家里

LeetCode239 窗口最大值

题目 传送门 You are given an array of integers nums, there is a sliding window of size k which is moving from the very left of the array to the very right.

友情链接

Hi, 这里是晨鹤的个人博客。一个赶上了 90 后末班车的跨时代 ISFP 努力守护的一个一亩三分地。

Koin in Android: 更简单的依赖注入

Dagger 之殇 如果还不清楚什么是依赖注入,那么请参考之前写的 Dagger2 in Android(一)通俗基础开头部分。如果你不了解 Dagger 倒也无妨,本文会进行一定的对比,但仅针对接触过 Dagger 的同学,否则大可以忽略。 Dagger2 作为著名优秀的依赖注入框架广为流传,何况

详解三星OneUI后台与电池管理设置项

三星 OneUI 的应用自启与后台权限,以及电源管理一直比较乱(但关联关系做的比较智能)。其实也不仅是三星,Google 对大陆的流氓应用一直后知后觉,尽管近期多个系统底层更新不断收紧这方面政策,但脚步还是太慢,与此同时也造成不同系统版本(也称 API 等级)对后台的限制不一样,也就导致了许多云里雾

深入 Kotlin 协程(二)实现简单的协程 API

<style type="text/css"> .gist-file .gist-data {max-height: 400px;max-width: width:100%;} </style> [上一节]({{< ref "深入 Kotlin 协程1.md" >}})我们已经了解的 Kotlin

待定系数法拆项

待定系数法是一个非常简单的拆项方法,但是每次用了几天就忘了:confused: 这次专门记录下来哼:expressionless: $$ \frac{5}{2+3x-x^2} \\ =\frac{5}{(2-x)(1+2x)} \\ =\frac{A}{2-x} + \frac{B}{1+2x} $

Articles in the category of 写代码的日子

分类的描述

博客寄语:

    相信开放的力量 | Believe in OPENNESS

实时播报:

博客号-学习成长

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