Ring.kt
3.3 KB
又做了一点修改(其实就是改了个名字… Kotlin 的
a..b 还真是 有点…… 不过我自己都没注意到 avaliable 的结果其实是包含了 position 的部分,本身就属于瞎猫 x 死耗子,面向 REPL 编程This media is not supported in your browser
VIEW IN TELEGRAM
稍微对这种距离数值依赖关系比较迷的问题有了一点「可视化」的理解,想必数轴也会算了吧…… #Math
Ring 不存在死的 Index,不存在的,所以不能 <=k 什么的,必须得用 free/avaliable,因为索引不存在硬性性质所以才叫『环』
每次 pop 也得依赖 position,可是不知道什么时候和队首指针撞上,所以得先看 avaliable,也是 markedRead 变量存在的原因
当然我之前说使用 distanceR2W 损失了 capacity 数据,其实虽然它的确没有记录,但不意味着我们不能用对象状态本身包含的 capacity 来计算(freeSpace)
只要在 distanceR2W >=capacity 的时候不允许继续 add,就可以避免溢出的数据被覆盖了
markedRead 的长度没被算进 free(可以认为它是另外一种项目『被保护的项目』),但为了避免 pop 重复,被算进了 avaliable
在后来的版本里,直接吧 markedRead++, freeSpace-- 了,更突出 marking pop 的时候空闲和长度计算的目的
Ring 不存在死的 Index,不存在的,所以不能 <=k 什么的,必须得用 free/avaliable,因为索引不存在硬性性质所以才叫『环』
每次 pop 也得依赖 position,可是不知道什么时候和队首指针撞上,所以得先看 avaliable,也是 markedRead 变量存在的原因
当然我之前说使用 distanceR2W 损失了 capacity 数据,其实虽然它的确没有记录,但不意味着我们不能用对象状态本身包含的 capacity 来计算(freeSpace)
只要在 distanceR2W >=capacity 的时候不允许继续 add,就可以避免溢出的数据被覆盖了
markedRead 的长度没被算进 free(可以认为它是另外一种项目『被保护的项目』),但为了避免 pop 重复,被算进了 avaliable
在后来的版本里,直接吧 markedRead++, freeSpace-- 了,更突出 marking pop 的时候空闲和长度计算的目的
Forwarded from duangsuse Throws
🤔 看一点少一点的烂文系列。 #CS #statement
== 如何在编程时『尽可能做到最好』呢?最重要的是要日常训练啊。
一个可以参考的标准是 — 以不用电脑编程的标准应对用电脑编程的需求
那某些『大牛』就要说了,农民种地用锄头、工人修屋要用锤子,你编程不上机,岂不是可笑?
可是这里有个故事:一名记者问了三个正在建筑的工人同一个问题:『你在做什么?』
其一回答『我在挣钱。』、其一回答『我在砌墙。』、其一回答『我在建这个世界上最有特色的大楼』
据说后来第一个人依然是在打工、第二个人成了工头、第三个人做了工程师
这个故事的意思就是:视角很重要
编程不上机,是让你在一切可能的时候考虑编程问题,从而能够考虑现实生活中各种复杂的模型、锻炼自己的思维方式、归纳能力。
编程是按范式组合既定逻辑的过程,它本身当然是不依赖特定程序设计语言、甚至不一定需要上机的。
一个有追求的程序员,不仅仅能完成日常的编程任务,他甚至见到电梯、自动贩卖机、多色度的电灯、电水壶、打卡取水都要想 —— 这是什么编程模型?该怎么实现?像什么结构?该怎么优化?
只有开始括宽自己的视野,才能发现之前的不足、找到更好的方法。 有位富有经验的工程师说过:『世界上 50% 的代码都可以重写为一半行数且更好看的形式,因为一个人永远也不可能立即知道他不知道的东西』 —— 所以编程是一个不断完善自我的过程
现在中国有个现象很不好,很多 IT 遇到问题上网搜答案、要答案、求答案、没有创意别人的拿过来抄、技术不好就找理由开脱。
外企面试喜欢考算法题,于是刻意去训练,可是有和『刷题』之流混在一起的危险。
刻意训练不是不好,但难以达到最好的效果。比如,在写 RingBuffer 的时候,其实一个小时我就实现了,但我又多花了一整天的时间完全推倒重写了 4 次、还多花半个上午做了一个可视化动画,最后我写的 RingBuffer 和别人的原算法采用了不同的分配算式、侧重了不同的方面。如果单单靠刷题,能够刷出有『改变』程度能力的技能吗?
所以要有逆向思维的勇气、不要害怕失败,如果蛹里的小家伙因为怕疼从不钻出来,就变不成蝴蝶,而且最后还会死掉。 —— 这不就是『程序员吃青春饭』的论调吗?自己成为了劳动密集的码农,可能是最好的选择吧。
惊喜发现一个大佬的博客 #blog
== 电脑和计算机,哪个名词更适用
其实这也是仁者见仁的问题,拿 M$ 来说,XP 里 Computer 叫『我的电脑』、Windows 7 里 Computer 叫『计算机』
我个人一般称电脑,强找的一个理由是:电脑一般是说个人计算机,或者一些工作站之类;而计算机是个更大的概念,也会包括许多诸如超算、嵌入式设备之类的东西
但是如果因为别人叫电脑还是计算机就在心里划出个三五九等,容易陷入形式主义的漩涡中。
名词是拿来交流的,但只要得体无歧义就可以了。非得起些个高大上的名字,和技术本身是没有太大关系的。
编程随想绝对可以算是个优秀的后端工程师,但他文章里经常自称『俺』、谈到 English 都叫『洋文』,大概也是这个意思。
== 如何在编程时『尽可能做到最好』呢?最重要的是要日常训练啊。
一个可以参考的标准是 — 以不用电脑编程的标准应对用电脑编程的需求
那某些『大牛』就要说了,农民种地用锄头、工人修屋要用锤子,你编程不上机,岂不是可笑?
可是这里有个故事:一名记者问了三个正在建筑的工人同一个问题:『你在做什么?』
其一回答『我在挣钱。』、其一回答『我在砌墙。』、其一回答『我在建这个世界上最有特色的大楼』
据说后来第一个人依然是在打工、第二个人成了工头、第三个人做了工程师
这个故事的意思就是:视角很重要
编程不上机,是让你在一切可能的时候考虑编程问题,从而能够考虑现实生活中各种复杂的模型、锻炼自己的思维方式、归纳能力。
编程是按范式组合既定逻辑的过程,它本身当然是不依赖特定程序设计语言、甚至不一定需要上机的。
一个有追求的程序员,不仅仅能完成日常的编程任务,他甚至见到电梯、自动贩卖机、多色度的电灯、电水壶、打卡取水都要想 —— 这是什么编程模型?该怎么实现?像什么结构?该怎么优化?
只有开始括宽自己的视野,才能发现之前的不足、找到更好的方法。 有位富有经验的工程师说过:『世界上 50% 的代码都可以重写为一半行数且更好看的形式,因为一个人永远也不可能立即知道他不知道的东西』 —— 所以编程是一个不断完善自我的过程
现在中国有个现象很不好,很多 IT 遇到问题上网搜答案、要答案、求答案、没有创意别人的拿过来抄、技术不好就找理由开脱。
外企面试喜欢考算法题,于是刻意去训练,可是有和『刷题』之流混在一起的危险。
刻意训练不是不好,但难以达到最好的效果。比如,在写 RingBuffer 的时候,其实一个小时我就实现了,但我又多花了一整天的时间完全推倒重写了 4 次、还多花半个上午做了一个可视化动画,最后我写的 RingBuffer 和别人的原算法采用了不同的分配算式、侧重了不同的方面。如果单单靠刷题,能够刷出有『改变』程度能力的技能吗?
所以要有逆向思维的勇气、不要害怕失败,如果蛹里的小家伙因为怕疼从不钻出来,就变不成蝴蝶,而且最后还会死掉。 —— 这不就是『程序员吃青春饭』的论调吗?自己成为了劳动密集的码农,可能是最好的选择吧。
惊喜发现一个大佬的博客 #blog
== 电脑和计算机,哪个名词更适用
其实这也是仁者见仁的问题,拿 M$ 来说,XP 里 Computer 叫『我的电脑』、Windows 7 里 Computer 叫『计算机』
我个人一般称电脑,强找的一个理由是:电脑一般是说个人计算机,或者一些工作站之类;而计算机是个更大的概念,也会包括许多诸如超算、嵌入式设备之类的东西
但是如果因为别人叫电脑还是计算机就在心里划出个三五九等,容易陷入形式主义的漩涡中。
名词是拿来交流的,但只要得体无歧义就可以了。非得起些个高大上的名字,和技术本身是没有太大关系的。
编程随想绝对可以算是个优秀的后端工程师,但他文章里经常自称『俺』、谈到 English 都叫『洋文』,大概也是这个意思。
Forwarded from dnaugsuz
🤔 不常见但是又有点常见的问题(无线通讯领域):
无线电是什么,怎么调制信息、会不会有噪音、错误什么的
1G 时代用到的 DMA 技术是 FDMA 吗
2G 是不是只有 GSM,是 TDMA 吗,TDMA 好还是 FDMA 好,除了 GSM 和 EDGE 还有别的扩充吗
3G 是不是 CDMA,CDMA 有什么好处
4G 是不是 OFDMA,为什么说是『正交』频分多址,和数学几何有很大关系吗?
为什么会有伪基站?密码学 PKI 的发展可以终结伪基站吗?
无线电是什么,怎么调制信息、会不会有噪音、错误什么的
1G 时代用到的 DMA 技术是 FDMA 吗
2G 是不是只有 GSM,是 TDMA 吗,TDMA 好还是 FDMA 好,除了 GSM 和 EDGE 还有别的扩充吗
3G 是不是 CDMA,CDMA 有什么好处
4G 是不是 OFDMA,为什么说是『正交』频分多址,和数学几何有很大关系吗?
为什么会有伪基站?密码学 PKI 的发展可以终结伪基站吗?
Forwarded from dnaugsuz
我跟你们讲: aria2 下载快
Forwarded from dnaugsuz
不要用 Firefox 自己的下载,煤球用
#security 直到某一天,我才发现自己做到的是多么微不足道,我无法拿 Tk 或者 Qt 或者 GTK# 写一个用来试 k<-> 值的 GUI 出来。我猜它是最简单的凯撒密码,但又保不准是位运算,也有可能是类似 Base64 一样更复杂的编码呢?我看了二进制可是什么都看不出来,然后我写了 Kotlin REPL
>>>
……
>>>
…… 一路走好吧,是真的吗
记得 Doge 当时是那么好的,可是好像现在梯子都慢了……
但愿追求自由的人终能到达自己的时代。
>>>
for (k in -10..10) { println("$k "); println(s.map { it+k }.joinToString("")) }
……-1 iamreallysorrybut+maybeitstimetosaygoodbye-ijustcantmakeitmyself-ihatethatbutihavetoacceptthat- ……
>>>
s.map { if (Character.isSpace(it)) it else it-1 }.joinToString("")
i am really sorry but+ maybe its time to say goodbye- i just cant make it myself- i hate that but i have to accept that-…… 一路走好吧,是真的吗
记得 Doge 当时是那么好的,可是好像现在梯子都慢了……
但愿追求自由的人终能到达自己的时代。
Forwarded from DogeSpeed广播
j bn sfbmmz tpssz cvu, nbzcf ju
t ujnf up tbz hppeczf. j kvtu dbou nblf ju nztfmg. j ibuf uibu cvu j ibwf up bddfqu uibu.This media is not supported in your browser
VIEW IN TELEGRAM