随着博文的一篇篇增加,我开始觉得“养娃攻略”这个分类下面逐渐充满了我对养 Toddler 这件事的种种抱怨,虽然我有在很努力地用 meme 图和轻松的语言在去 sugercoat 这些感觉,然而每天鸡飞狗跳的日子还是照样过。尤其是今天的生病篇更是充斥着求生欲和内心的挣扎,算是集最近生活之大成了。 有了小孩之后才注意到原来在街上走着的人不是在遛狗就是在遛小孩。确实两者在家的破坏力都挺大的。而且遛狗可以(要求)拴狗绳,小孩却不能拴绳子防止 TA 跑到车轮子底下去,所以就算出去遛人也没有办法完全放心。最搞笑的是停电的时候
社区里有不少图可视化引擎,但支持小程序甚至移动端的图可视化引擎几乎还没见过。通常可以通过嵌套 webview 的方式做实现,显然再性能、体验都存在问题,开发方式也不够优雅。
如题,它的全部作用就是将图片变成字符画(又称 ASCII 艺术 )。 GitHub: https://github.com/YunYouJun/char-dust/ 示例站点: https://yunyoujun.github.io/char-dust/ 似乎有些老生常谈,那么为什么会有它的诞生呢? 访问 https://www.yunyoujun.cn/posts/why-make-char-dust 阅读全文。
作为软件工程师,我们在谈论自己时,总会认为自己是所谓的高科技行业从业者,但是如果观察自己的日常工作,时常会觉得似乎和真正的科技也没有什么关系。所以究竟什么是科技?我们要如何来定义我们每天的工作? 我认为宏观意义上的科技可以被拆解成三个概念:科学(Science),技术(Technology)和工程(Engineering)。
Joway · Random Thoughts · 2021.03.09 · 待分类 简介 nnrm 即 new nrm。 GitHub: https://github.com/YunYouJun/nnrm/ nnrm - 一个极简的 npm/yarn registry 切换管理器 | V2EX 一个简单的 npm/yarn registry (镜像源)切换工具 中文使用文档 Why new nrm - nnrm? 首先,我赞成重复造轮子是不好的行为。 nrm 的确使得切换更加方便,譬如我们可以简单地使用 nrm use taobao 的方式切换镜像。 但是在切换镜像前,安装 nrm 本身也是一件很
开发可视化应用,我们关心的则是数据计算、不止是区块的各种图形的绘图渲染,当然也少不了交互,希望通过一张图让用户看清数据背后隐藏的信息
如何养猪 | wikiHow 养猪指南?不对,是猪的成长日志。 访问 https://www.yunyoujun.cn/posts/2020-summary 阅读全文。
Don’t rush to overturn all the old code, but change it little by little, modularize and optimize it.
g6-mobile 初始版本打包之后发现体积很大,parse 之后 1.3 M,gzip 之后 330k,这个尺寸移动端难以接受。
为什么需要通用对象池 在实际生产环境中,我们经常会遇到需要多线程共享同一堆对象的场景,例如常见的RPC、数据库连接池,大内存对象池,以及线程池等。这些池化对象的需求其实有很多重叠的地方,主要分以下几个方面: 基础设置: 最大容量 创建/校验/删除对象的回调方法 申请对象时,已满时是否阻塞 多重驱逐策略: 驱逐闲置对象 驱逐无效对象 预创建对象 为避免重复编码,所以设计了 Pond 这样一个能够支撑多种使用场景的通用对象池。另外,在 Pond 的基础上,还实现了 Goroutine 池库: Hive。
Joway · Random Thoughts · 2021.01.23 · 待分类 最近在写一个编解码的功能时发现使用 Golang for-range 会存在很大的性能问题。 假设我们现在有一个 Data 类型表示一个数据包,我们从网络中获取到了 [1024]Data 个数据包,此时我们需要对其进行遍历操作。一般我们会使用 for-i++ 或者 for-range 两种方式遍历,如下代码: type Data [256]byte func BenchmarkForStruct(b *testing.B) { var items [1024]Data var result Data for i :
Joway · Random Thoughts · 2021.01.20 · 待分类 最近遇到一个由于 Golang Interface 底层实现,引发的线上 panic 问题,虽然根源在于赋值操作没有保护起来,却意外地发现了关于 interface 的一些有意思的底层细节。 假设我们现在有以下定义: type Interface interface { Run() } type Implement struct { n int } func (i *Implement) Run() { fmt.Printf(i.n) } 对于使用者而言,一个变量无论是 Interface 类型或是 *Implem
Joway · Random Thoughts · 2021.01.20 · 待分类 话说到目前《四喜丸子》里还从来没有提到过什么屎尿屁的事情,明明这才是养小孩80%的人生真实。所以为了防止被爱情冲昏头脑的少年少女们对婴幼儿产生不切实际的期待而堕落成失足少年少女,我觉得是时候把压箱底的记录公开出来了。这个压箱底的名藏叫做《屎记》,评价我也想好了,“屎家之绝唱,有味之离骚”,你看多大气。警告以及免责声明:这是一篇有味道的文章,并且附有部分细节描写(图片放链接而不是直接加载出来是我最后的温柔);请做好准备后再阅读,鞠躬。 我大便了!💩 (Photo by Tim Mossholder (@timmos
机器世界与真实世界的差异在于,机器世界的法律是约定能够做什么,而真实世界的法律是约定不能够做什么。编程是在一个有限中变化出无限,而生活是在无限中寻找到自己的有限。机器世界本身就是真实世界中的一个小小的有限。 人们总试图从一个无限的世界里去发寻规律,以其获得一条在有限领域能够稳定可靠的真理。无论是科学甚至玄学,概莫如是。
Joway · Random Thoughts · 2021.01.15 · 待分类 Go 语言/golang 高性能编程,Go 语言进阶教程,Go 语言高性能编程(high performance go)。sync.Cond 是一个条件锁,也被称为条件变量,常用来一写多读(一个 goroutine 通知多个在等待的 goroutines)的场景。
Go 语言/golang 高性能编程,Go 语言进阶教程,Go 语言高性能编程(high performance go)。本文介绍了编译器在死码消除(Dead code elimination, DCE) 方面的优化,在实际编程中如何利用这一优化提高程序性能。并结合构建标记(build tags) 增加调试模式。
Go 语言/golang 高性能编程,Go 语言进阶教程,Go 语言高性能编程(high performance go)。sync.Once 是 Golang package 中使方法只执行一次的对象实现,作用与 init 函数类似,但也有所不同。本文还解释了 sync.Once 源码中,done 为什么作为第一个字段。
校招与实习基本上承载了应届生从学校完全步入社会的一个过程,可以说是一次跨度相对长一点考试 ,但是对于没有开始的校招的同学来说,却像一个神秘而又不知深浅的潭水,怕一脚跌入,就沉入潭底。 这篇指南面向的对象主要是互联网行业的研发岗人群,其他岗位一般大同小异。本文的目的是想告诉你校招是什么,校招有哪些流程和环节,一些浅显的,大家想知道但是好像还没人写的东西。 每个具体的岗位和方向都有不同,鉴于本人水平原因,本文不涉及太多技术细节的问题,在文末会推荐一些写的很好的资料和帖子,具体的学习内容跟着牛人学比跟我写的内容好多了
往年的总结,总是很多可讲,今年的却不知从何下笔。2020年是不平静的一年...
往年的总结,总是很多可讲,今年的却不知从何下笔。2020年是不平静的一年...
Go 语言/golang 高性能编程,Go 语言进阶教程,Go 语言高性能编程(high performance go)。Go 语言标准库中的 sync.Pool 可以建立对象池,复用已有对象,解决内存分配碎片化的问题,有效减轻垃圾回收的压力(Garbage Collection, GC),在特定场景下可以有效地降低内存占用,提升性能。最后介绍了 sync.Pool 的作用和用法。
Go 语言/golang 高性能编程,Go 语言进阶教程,Go 语言高性能编程(high performance go)。介绍了 Go 内存分配逃逸分析(escape analysis)的几种典型场景,变量所使用的内存什么时候分配到栈上,什么时候分配到堆上。以及如何利用逃逸分析的原理优化代码的性能,例如传值 VS 传指针。
美国的贷款利率从今年三月份开始降到几年来的新低,很多人也动了 refinancing 的心思,据说都排起了长队。然而我们还是一拖再拖地拖到了年底,然后感觉再不鼓起勇气折腾一把仿佛就要错过一个亿。最终促使我们完成 refinancing 的还是得益于找到了一个(几乎)全线上的 mortgage 机构。 万事开头难 # 提起 refinancing,脑海中呈现的还是几年前买房的紧张与繁忙。虽然申请贷款只是其中的一步,但回想起和经纪人的交涉还是让人心累。年中的时候收到原来 mortgage 公司的促销信件。拖到九月份终于
从 2020 年开始,在博客里记录每一年的成长与改变。年初的时候,给自己定了两个目标:工作上升一级,博客浏览量能翻一倍。第一个目标没想到刚过完年,就实现了。第二个目标到年底的时候也基本达成了,月 UV 3w,月 PV 8w。在这里,将过程中的一些经历和感悟记录下来。
Go 语言/golang 高性能编程,Go 语言进阶教程,Go 语言高性能编程(high performance go)。本文介绍了结构体(struct)占用的内存空间如何计算,为什么要字节对齐/内存对齐,Go 语言中的大小和对齐保证(size and alignment guarantees),字节对齐和安全访问(原子访问)的关系,以及如果利用内存对齐的规律减小 struct 内存占用。
Go 语言/golang 高性能编程,Go 语言进阶教程,Go 语言高性能编程(high performance go)。本文介绍了使用空 struct{}/空结构体的优点:不占用内存,且具有良好的语义。
2019年的年终总结,我也是在圣诞节写下来的。 现在回想起来,上大学这几年,每一年的年底似乎都还历历在目:2017年年底我窝在宿舍床上抱着iPad刷b站;2018年底我在新搬去的四人寝里翻译Vulkan教程;2019年底我在出租屋里写堆积如山的结课论文;2020年底我在家里摸鱼。这么一看,我似乎实现了一个笑话:只要胆子大,暑假连寒假。如此说来,我1月14号在大街上乱晃的时候可从来没想过2020年会变成这样。这个曾经出现在无数中小学生作文中似乎能上天入地无所不能的年代,真正经历过才发现原来活着就已经是最大的成就了。有
著名的同人本资源集散地 E-hentai 有一个完全没有人在意的角落 ——「HentaiVerse」,一个纯文字网页 RPG 游戏。虽然这个游戏应该不会有太多新玩家了,不过还是翻译一篇给新玩家的指导文吧。
Sukka's Blog · 2020.12.24 · 待分类 Go 语言/golang 高性能编程,Go 语言进阶教程,Go 语言高性能编程(high performance go)。本文介绍了 goroutine 协程并发控制,避免并发过高,大量消耗系统资源,导致程序崩溃或卡顿,影响性能。主要通过 2 种方式控制,一是使用 channel 的缓冲区,二是使用第三方协程池,例如 tunny 和 ants。同时介绍了使用 ulimit 和虚拟内存(virtual memory)提高资源上限的技巧。
最近 Toddler(总算)迷上了滑梯,一旦玩起来就变成了永动机,不断重复地上去下来,不亦乐乎。看着这张没有被社会殴打过的快乐的脸,我有时候会想,真可爱啊,要不再生一个吧? 但不幸的是,在 Family planning 方面,很难找到不偏袒和没有成见的建议,来讲述生第二个小孩的经历。亲戚朋友当然都是鼓励啦;网上则是有很多鼓吹,或者自我安慰打鸡血,要么就是树人设的。结果就是,没有利益关系的人,我跟人家没有熟到可以分享这种私密性的建议;而熟人可以说说的,要不就是抱有“想要看到你们多多生小孩”这种偏心的想法,要不就是完