自我介绍 / Self Introduction
本文中英文版本都有不同的彩蛋,因此如果中英文都懂的话,那你可以获得双倍的快乐 (当然懂意大利语那更好了) 。Both Chinese and English version have their own easter eggs, so if you can understand both languages, you can get double happiness (Of course, it would be better if you understand Italian) .
中文版本
翘!我叫方梓豪,经常被叫做“方哥”或“豪哥”(但你叫我啥我都不介意的,包括闹闹、玛力露丽和奇诺比珂),是龙岗英文大学香港中文大学(深圳)的一名学生。在写这篇文章的时候,我是一名大三的学生。目前,我正就读于计算机科学与技术专业。我曾经考虑过走算法竞赛这条路,因此苦学算法和数据结构,为此还在学校的程序设计竞赛中拿过特等奖。不过我现在对这方面是提不起兴趣了,虽然学校的程序设计竞赛肯定还是会去参加的,骗骗奖金(不是)。我现在走的是系统底层、并行计算的道路。目前,我正在钟叶青教授的指导下进行嵌入式系统和软硬件协同设计方面的研究。我目前是香港中文大学(深圳)高性能计算(HPC)队队长,数据科学学院学生联会会长,以及计算机学会学术部管理层成员。
编程语言
我个人能比较熟练地运用C/C++(偏向C++),Java,Python,Visual Basic 6,和Verilog/SystemVerilog。会用Scala,JavaScript,SQL,HTML,但不熟练。浅尝过的编程语言太多了,就不列举了。我可以熟练使用C++20以内的多数标准库、FLTK图形库、OpenMP、MPI,Java多线程、套件字、Swing,Python NumPy、Matplotlib、PyTorch等等。
自然语言
自然语言方面,汉语普通话和温州话是我的母语(蛮话能听懂,但讲不来),可以熟练运用口语和书面英语。我对自然语言也非常感兴趣(不知道是不是受到了编程语言的影响),喜欢去了解各种各样的语言,特别是印欧语系。我目前在学习德语,也许是因为兴趣,也许是想去苏黎世联邦理工读研究生, 目前大概有个A1的水平。之前去意大利旅游过,所以对意大利语有所了解,但没有系统性地学习过。我个人是很喜欢意大利语的,因为很好听。但我大概率是没时间去深入了解了 (以后润去的话再说吧,虽然可能性很小) 。
爱好
运动是我最大的爱好。我主要的运动方式就是走路,有时候会去神仙湖慢跑。如果你也是我们学校的,那可以一起逛逛学校,聊聊人生,聊聊理想。当然,如果你和我关系比较好的话,可以整个城市逛,甚至逛香港(前提是你体力吃得消,我的体力是相对不错的)。逛到哪里,吃到哪里,玩到哪里,这就是我的旅游方式。其次是摄影。我喜欢用镜头去捕捉一些绝美的场景。当然,这不代表我会修图,我喜欢原汁原味的东西,不喜欢后期修饰。然后是音乐。虽然我已经很久没有弹钢琴了,但是如果你愿意,我们完全可以约一个琴房,去享受一下音乐的美妙。
游戏
最后来聊一聊游戏。我的家庭还是比较开明的,并不会将游戏视为危害 (这很有可能是因为我妈从雅达利的游戏机开始打,一直打到Nintendo Switch) 。但是我个人对很多游戏都不感兴趣,比如刺客信条、赛博朋克2077、巫师3等。我一般情况下不打手游、端游、页游。这并不是说这些游戏不好,它们确实制作精良(引战的可以离开了)。但我个人更喜欢任天堂第一方或者第二方的游戏 ,因为受到我妈影响,比如马力欧系列、宝可梦系列、塞尔达系列等。这些很多都是多人游戏,所以非常适合团建活动,如果你来找我玩的话,我可以把JoyCon手柄分一半给你。 当然,如果你也玩宝可梦对战的话,欢迎来切磋。 我目前双打排位最佳成绩是两千多名,还恳请各位大佬前来指教。我现在也在练习各种官方BO3的比赛, 争取哪一天能去参加R赛 。
码风
- 除成员运算符“.”和解引用运算符“->”外,所有中缀操作符前后必须有一个空格,前缀和后缀操作符前后必须没有空格。
- 所有逗号和分号后面必须有一个空格,除非这个逗号或分号在行末。
- 所有的控制流结构,标识符(如for、if)后面必须有一个空格,然后才是括号。在没有硬性要求需要括号的语言(如Python)中,不加括号。
- 在用(花)括号界定代码块的语言中,左(花)括号不独占一行,而是跟在语句后面。语句和左(花)括号中有一个空格。右(花)括号独占一行,除非它标定的是数组、字典等数据结构的结束。
- 使用解引用运算符“*”和地址运算符“&”时,如果是在变量声明和定义阶段,该符号应该跟在变量名前面。如果是用于函数参数或返回值,那么该符号应该跟在类型名后面。
- 缩进一律使用四个空格。
- 对于Java,变量名与函数名使用小写字母开头的驼峰式命名法,类名使用大写字母开头的驼峰式命名法。对于C++和Python,变量名和类名全小写,单词之间用下划线分割。常量名全大写,单词之间用下划线分割。
- 非必要不写平台有关的代码。如果必要,那么遵循以下优先级:
- 编译器:Clang > GCC > MSVC
- 操作系统:macOS > Linux > Windows
- 体系结构:ARM64 > ARM > x86_64 > x86 > RISC-V
很重要的提示
这个是我的个人博客,所以你可以在这里看到各种异(hu)想(si)天(luan)开(xiang)的东西,很多东西只是做着玩,很多东西甚至没办法做出来。因此这个博客中的所有代码,请不要用作严肃用途!!!如果代码需要系统管理员权限,请务必在沙盒或者虚拟机中运行!!!如果有些想法没有实现,且明确指出“本人不打算实现”,请勿擅自实现!!!由此导致的一切后果,本人一概不负责任。正经的博客正在建设中,将于后续提供。
English Version
Ciao! Sono Jeff (Zihao) Fang, uno studente dell’Università cinese di Hong Kong…Oops, sorry. I am Jeff (Zihao) Fang (but I would not mind it if you call me naonao, Azumarill, or even Toadette), a student from The Chinese University of Hong Kong, Shenzhen. I am a Year-3 student when writing this article. Currently I am studying Computer Science and Engineering. I used to consider competing in ICPC, so I studied data structures and algorithms hard, and got Special Prize in CUHKSZ Programming Contest 2024. I am not interested in that though, although I will still participate in this contest to get prize money. I am now taking the path of Operating System and Parallel Programming. Currently, I am conducting research on embedded systems and hardware-software co-design under the supervising of Professor Yeh-Ching Chung. I am currently the captain of the CUHKSZ High Performance Computing Team, the president of SDS Student Club, and a management member of the Academic Department of Computer@Comity.
Programming Languages
I can program in C/C++ (preferably C++), Java, Python, Visual Basic 6, and Verilog/SystemVerilog proficiently. I can use Scala, JavaScript, SQL, and HTML, but not proficient. I had a taste of so many programming languages that I can hardly list them here. As for libraries in C++, I can proficiently use most of the standard libraries under C++20, FLTK Toolkit, OpenMP, and MPI. As for Java, I can use Multi-Threading, Socket, and Swing. As for Python, I can use NumPy, Matplotlib, PyTorch, etc.
Natural Languages
I am also interested in natural languages, especially Indo-European languages, probably affected by programming languages. My mother tongues are Mandarin Chinese and Wenzhou dialect, a dialect well-known for its hardness. My second language is English, proficient in both spoken and written language (But there CAN be some spelling and grammatical mistakes even in this article, because I don’t use Grammarly when writing blogs. If you find any, don’t hesitate to tell me). Ich lerne jetzt Deutsch, oh nein, I am currently learning German to A1 level, probably because of interest, probably because I would like to pursue my postgraduate study in Eidgenössische Technische Hochschule Zürich. I travelled to Italy days before, so I have a taste of Italian, but didn’t study it systematically. I really like Italian, because listening to it is like listening to an opera. However, I may not have time to get a deeper insight into it.
Hobbies
Doing sports is my biggest hobby. I mainly do sports by walking around, and sometimes jogging around the Fairy Lake. If you are also from CUHKSZ, you can walk around the university with me, talking about anything. Of course, if you are my friend, you can walk around the whole Shenzhen, even Hong Kong with me (as long as you can follow my steps). Second is photography. I love to capture some stunning scenes with my lens. This doesn’t mean I have a good command of PhotoShop. I love the original picture rather than post-production. Then comes music. It has been a long time since I have played the piano, but if you’d like, we can reserve a piano room and go enjoy some music.
Video Games
Finally, let me talk about video games. Our family won’t view video games as catastrophes (probably because my mother plays video games from Atari to Nintendo Switch). But I myself am not interested in most of the games, including Assassin’s Creed, Cyberpunk 2077, The Witcher 3, etc. I don’t mean they are bad games. They are indeed great. However, I prefer games that are only on Nintendo consoles, like Mario series, Pokémon series, Zelda series, probably affected by my mother. These are mostly multi-player games, so if you want to play video games with me, you can come to me, and I’ll share half of my JoyCon to you. Important: If you play competitive Pokémon, I would be glad to battle with you. Importante: se giocate a Pokémon a livello competitivo, sarò lieto di combattere con voi. Wichtig: Wenn du Pokémon im Wettbewerb spielst, würde ich gerne mit dir kämpfen. My best rank for double battle is around 2000. And I am currently practicing for VGC BO3 format, hoping to participate in a Regional Championship.
Coding Styles:
- Except for the member access operator “.”, “->”, and so on, there must be a space before and after all infix operators, and no space before or after prefix and postfix operators.
- All commas and semicolons must be followed by a space, unless the comma or semicolon is at the end of a line.
- All control flow identifiers (e.g., for, if) must be followed by a space before parentheses. In languages that do not have a hard requirement for parentheses (e.g., Python), no parenthesis is added.
- In languages that use (curly) brackets to identify code blocks, the left (curly) bracket does not occupy a separate line, but follows the statement. There is a space between the statement and the left (curly) bracket. The right (curly) bracket occupies a single line, unless it identifies the end of a data structure such as an array, dictionary, or defines an object.
- When using the dereference operator “*” and the address operator “&”, the symbol should precede the variable name if it is used in the variable declaration and definition. If they are used for function parameters or return values, the symbol should follow the type name.
- Always use four spaces for indentation.
- For Java, variable and function names use camelCase, and class names use PascalCase. For C++ and Python, variable and class names use snake_case. Constant names are all SNAKE_CASE.
- No platform related code if not necessary. But if so, the following priorities are followed:
- Compiler: Clang > GCC > MSVC
- Operating System: macOS > Linux > Windows
- Architecture: ARM64 > ARM > x86_64 > x86 > RISC-V
Important Notes
This is my personal blog, so you can see many interesting thing here, some are even unbelievable. However, DO NOT use any code here for serious purposes. DO NOT run any code that requires adminstrator privilege on your host system. Run it on a virtual machine. Also, do not implement any thought that I explicitly claimed “I won’t realize it.” No warrenty for any consequence for disobeying these rules. A more serious website is in construction. Have fun!