自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 SOLID Principle基础入门

SOLID原则是面向对象编程(OOP)中编写高质量代码的指导方针。实际上,即使不使用SOLID原则,仅通过类、继承、封装和多态性,也可以让程序正常运行。那么为什么会出现SOLID原则呢?SOLID原则是为了提高代码的可维护性可扩展性以及管理耦合度而设计的一种指导方针。换句话说,SOLID原则是编写高质量OOP代码的指南。通过代码中的设计异味(Smells)

2025-03-01 21:58:53 1108

原创 我放弃就业选择创业的契机

而且所谓的“职责原则”实际上会根据团队的不同而有所变化,因此我认为,OOP与其说是原则,不如说更接近一种社会共识下的沟通逻辑。我回答说:“在OOP的逻辑中,这部分是一种共识性的逻辑,实际实现是通过语言层面的对象继承,所有东西都被设计为对象。不知道是不是优快云的问题,我认真写的文章已经卡在审核中三个小时了,为了获取流量券,我试着写了一篇文章。也许面试官是想问我关于类的变更理由及其案例,但在我回答之后,他说我不太懂,然后结束了面试。我想在韩国的技术博客上连载文章,但我的文章因为“水平不足”被拒绝了。

2025-02-23 03:18:19 398

原创 缓存基础解释与缓存友好型编程基础

讨论了如何使用快速核心内存(约32,000个字)作为更大、更慢的核心内存(约1,000,000个字)的从属内存(slave)。通过这种方式,可以在实际使用案例中设计出接近于更快内存的有效访问时间(effective access time),而不是较慢的内存。-《从属内存与动态存储分配》(1965年,莫里斯·威尔克斯)我们总是被迫进行缓存友好的编程。现代处理器不仅在CPU性能方面有所提升,内存带宽和缓存效率也成为了性能的关键因素。即使执行相同的运算,根据内存访问方式的不同,性能差异可能会非常大。

2025-02-23 00:41:46 1246

原创 类型系统下的语言分类与类型系统基础

这篇论文还包含了函数式编程的基础概念,例如匿名函数(Anonymous Function)、高阶函数(Higher-Order Function)和函数应用(Function Application)。特别是静态类型(Static Typing)和动态类型(Dynamic Typing)的区别在于类型检查的时间点不同。隐式类型系统代码简洁,但可能出现意外的类型推断问题!基于约束的类型系统是一种在类型推断过程中收集约束,然后批量解决这些约束(Constraint)的方法。

2025-02-20 23:15:43 1273

原创 Big-O 表示法简介(基础入门)

C#,Big-O,BigO,Sort,Algorithm

2025-02-16 16:47:26 1884

原创 GC 基础入门

手动内存管理(Manual Memory Management)自动内存管理(Garbage Collection, GC)本文提出了一种适用于非常大的虚拟内存环境的列表处理系统的垃圾回收算法。该算法的主要目的不是“释放空闲内存”,而是压缩活动内存(compaction)。在虚拟内存系统中,由于空闲内存实际上并不会耗尽,因此很难决定何时触发垃圾回收。因此,本文讨论了触发垃圾回收的各种条件。(虚拟内存(Virtual Memory):一种逻辑上管理超出物理内存大小的大容量内存的技术。

2025-02-15 14:57:48 2176

原创 作为韩国人,无法进行优快云认证让我感到很遗憾。

我个人觉得有些文章需要VIP认证并付费购买资料,但因为没有任何支付方式可用,导致我无法阅读一些我想看的文章,这让我感到非常可惜。我从来没有想过通过博客文章赚钱,但因为有些好文章是付费的,看不到的话感觉挺可惜的。听说需要识别中国身份证,希望将来能赚到足够的钱去中国旅行,并成为正式认证的博主。(以后如果创业并且公司规模变大了,是否能获得正式认证呢?

2025-02-15 04:07:35 134

原创 Alan J. Perlis(首届图灵奖得主)的箴言集

计算机科学的先驱,也是“第一位”图灵奖得主艾伦·J·佩利斯(Alan J. Perlis)通过《编程箴言》(Epigrams on Programming)这一短小精悍的格言集,展现了对编程的深刻洞察。81. 在计算中,将“显而易见的东西”转化为“有用的东西”的过程就是“挫败感(frustration)”的定义。29. 系统中的“整形手术”不是简单的添加,而是向控制图(Control Graph)添加新的循环路径。(注释:这种不切实际的梦想像是孩子才会做的梦,但作者的意思是不想听废话,给他糖果堵住嘴。

2025-02-13 19:39:42 477

原创 IoC 和 DI 的初级整理

因此,伟大的程序员Martin Fowler在一篇经典文章《Inversion of Control Containers and the Dependency Injection pattern》(2004)中整理了IoC的各种形式,并定义了依赖注入(DI)作为IoC的一种特定模式。在传统的编程中,程序的流程是由程序员编写的代码调用外部库来实现的。IoC的核心思想是,与传统程序由用户直接控制流程不同,IoC允许外部控制流程,而用户只需实现必要的部分。这里,IoC被解释为框架控制应用程序流程的方式。

2025-02-13 04:04:49 851

原创 并发与并行编程入门

这句话的意思是,在2000年代中期,虽然我们根据摩尔定律享受了CPU性能的提升,但CPU时钟速度(Clock Speed)由于物理限制(发热、功耗等)无法继续提高,单核性能的增长已经停滞。Task是执行单元的抽象,CSP通道是通信规则的抽象。核心特点:这是最传统的并发模型,使用操作系统提供的“线程”作为执行单元,并通过互斥锁(Mutex)、信号量(Semaphore)等锁机制实现并发。与Task的关系:线程与锁模型是最底层的并发形式,Task是对线程池模型的抽象,Task在线程上“实现”。

2025-02-12 03:37:38 1230

原创 中国社区总体上似乎很有礼貌

韩国的编程社区在语言相关的讨论中往往互相批评得比较激烈,而在看中国关于编程语言的笑话时,不禁感叹中国人水平之高。韩国的博客基本上充满了这些争论,而相比之下,中国人总体上显得更有礼貌。

2025-02-11 10:20:48 231

原创 泛型编程基础探究

到目前为止,C++是我发现的最适合表达我想法的语言。泛型编程(Generic Programming)的核心思想是通过对具体、高效的算法进行抽象,推导出泛型算法,并将其与不同的数据表示结合,生成有用的软件。因为C#和Java等现代语言的设计使得所有内容都继承自“Object”,因此创建的所有内容都被视为对象,这导致对象的边界变得模糊,理论上的OOP与实际实现之间存在明显差距。有趣的是,C++最初是为了在C中引入面向对象编程(OOP)而设计的,这使得在C++中实现与OOP相异的哲学显得有些黑色幽默。

2025-02-11 08:15:50 1001

原创 我是独立游戏开发者。

这种简单化的方式其实是对复杂性的逃避,也许是因为人类在面对无法解决的问题时,本能地想要找到一个答案。但在开发游戏的过程中,我没有因为购买像素素材被骗而流泪,也没有为了学习而低声下气地乞求帮助,这已经算是赚到了。主动学习和被动学习之间存在差异,但无论如何,只要在学习,就已经能够做更多的事情了。我对算法的理解并不完整,对代码模式的理解也不完整,对架构模式的理解同样不完整。然而,追求学习效率的背后,其实是对“学习有标准答案”这一信念的执着。而且,即使是理论学习,也可能会偏离我正在开发的游戏或应用程序的方向。

2025-02-11 02:33:38 324 5

原创 迈向简洁的旅程:模式(Pattern),我们该如何接纳?

示例:命令模式(Command Pattern)、解释器模式(Interpreter Pattern)、迭代器模式(Iterator Pattern)、中介者模式(Mediator Pattern)、备忘录模式(Memento Pattern)、观察者模式(Observer Pattern)、状态模式(State Pattern)、策略模式(Strategy Pattern)、模板方法模式(Template Method Pattern)、访问者模式(Visitor Pattern)。

2025-02-10 20:13:19 1197

原创 NUMA架构入门

页面是操作系统管理内存的最小单位。当进程分配内存时,操作系统以“页面”为单位进行管理。通常页面大小约为4KB(4096字节)。本文主要介绍Linux中的NUMA管理方法,但Windows也在微软学习中心和各种书籍中提供了NUMA概念和API。一般来说,Windows和Linux在NUMA上的区别如下:操作系统LinuxWindowsNUMA策略应用numactl内核设置默认内存策略NODE LOCAL(默认) INTERLEAVE(内核)NODE LOCAL。

2025-02-09 21:08:53 1820

原创 东京大学GlobE对话翻译

提问者 :您对未来10年、30年、100年内生成式AI社会的看法如何?特别是在教育领域,这项技术将如何改变教育?Sam Altman :想象一下能够根据个人的优势和弱点进行学习支持的情景。这将是一个巨大的进步。学生是ChatGPT的最大用户群体,它自然适合教育,并且非常有效。我知道在日本这种变化还不太活跃,但我非常期待,并鼓励你们构建这样的系统。我认为这将是非常令人惊叹的事情。至于100年后的情况,我们现在根本无法想象。世界将会完全不同。我们甚至无法预测AI的能力在100年后会是什么样子。但在10年后

2025-02-09 16:39:58 966

原创 关于AI与“No Silver Bullet”

原因在于,狼人从熟悉的存在转变为陌生的恐怖,因此令人恐惧。“No Silver Bullet”论文教导我们要摒弃幻想,直面现实,通过不懈的努力和渐进式的改进,坚定地走在软件工程的道路上。在过去的三个世纪里,数学和物理科学通过构建复杂现象的简化模型,从中推导出属性并进行实验验证,取得了巨大的进步。这种做法很快演变成一种态度,即“反正没有万能的解决方案,所以没有必要再争论,我也不需要为我的主张负责”。此外,AI编程本身具有黑箱特性,其输出并非基于对原理的全面理解,而是通过参数调整生成的。

2025-02-09 00:16:33 639

原创 Parnas的信息隐藏理论与OOP滥用的反思

在这种方法中,模块的设计决策单位包括数据存储方式、如何进行行变换(shift)、以及如何实现排序等内容,并以此为依据将系统划分为“模块”。即使某个模块的数据结构或排序方法发生了变化,只要接口保持不变,对其他模块的影响几乎可以忽略不计。那么,究竟什么是模块?事实上,OOP也无法完全脱离这篇论文的影响,但为什么这篇论文会被视为批判OOP的案例呢?因为在过去,OOP被滥用的情况很多,这篇论文经常被引用为反驳错误OOP实践的依据。模块的内部实现和数据格式对外部是隐藏的,只通过接口提供必要的功能或数据。

2025-02-08 16:24:49 834

原创 C语言系列中双重for循环以行优先(row-major)方式编写的原因

而像Fortran和MATLAB这样的科学计算语言选择列优先(Column-major)的原因是,在线性代数中,向量通常以列向量的形式表示。如果存在,则称为“命中(Hit)”;在C语言中,数组的所有元素在内存中是连续分配的,并且每个元素的地址与基本地址之间有一个固定的间隔(L,即数据类型的大小)。缓存本身只是简单地以连续的内存块(缓存行)为单位读取数据,因此内存上的连续性,也就是数组是如何存储的,才是关键。由于数组是以行优先顺序(Row-major order)存储的,因此一行的数据在内存中是连续的,

2025-02-08 04:49:21 602 1

空空如也

空空如也

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

TA关注的人

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