计算机

关于职业发展的一点感想

偶然间读到曹大(曹春晖,Golang 编译器领域大牛)在博客分享的一篇关于当下互联网环境的感想(一些鬼故事),对曹大在文章中所批判的当前经济下行背景下互联网行业企业「降本增笑」以及员工「投机取巧」乱象深有同感。

这也引发了我对国内互联网就业环境以及自己未来职业发展的一些思考。

阅读更多

Java 虚拟机运行时数据区域划分详解

Java 虚拟机(Java Virtual Machine,简称 JVM)是 Java 程序(字节码)的运行环境,其主要提供 Java 字节码执行(解释执行或者即时编译为本地机器码执行)、内存管理(内存分配和垃圾回收等)、多线程支持和安全控制等功能,是 Java 语言「一次编写,到处运行」口号得以实现的基石。

阅读更多

趣味算法题:从登录日志中计算各个用户的最长连续登录天数

1 题目描述 假设我们有一个记录用户登录的日志文件,该文件有多行记录,每一行记录包含用户 ID、登录日期(格式为:yyyy-MM-dd)和登录时间(格式为:HH:mm:ss)三个以空格分割的条目。记录并不是以时间先后排序的,而是乱序的(如:样例输入中的记录 1002 2023-02-06 12:10:01 在 1002 2023-02-05 11:10:01 之前)。请计算每个用户的最长连续登录天数,输出格式为:用户 ID: 最长连续登录天数(如:样例输出中的 1002: 5)。

阅读更多

为什么说「组合优于继承」?

面向对象编程中有一条经典的设计原则:组合优于继承,即多用组合少用继承。什么是继承?什么是组合?为什么不推荐使用继承?组合有哪些优势?如何判断该用组合还是该用继承?本文将围绕这几个问题来分析组合优于继承的原因。 1 什么是继承?什么是组合? 继承(Inheritance)和组合(Composition)是面向对象编程(Object-Oriented Programming)中两种不同的代码复用机制。

阅读更多

Golang 泛型编程初体验

Go 1.18 加入了对泛型的支持。本文将使用切片反转和对象排序两个示例场景来演示泛型的使用。 开始前,我们先了解一下泛型的基本概念。 1 泛型是什么? 泛型(Generics)是编程语言中的一种范式,其允许在定义类(Go 中的结构体)、接口和方法(函数)时使用类型参数(Type Parameters)。这些类型参数可以用来描述方法的参数类型或者类与接口的属性类型,从而使得代码可以在不同类型之间进行重用,而不必进行类型转换或使用 Object(Go 中的 interface{})类型来处理。

阅读更多