自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

laomst

最简单的音调,需要最艰苦的练习

  • 博客(35)
  • 收藏
  • 关注

原创 详谈面向对象

这篇文章中我们静态类型系统中基于类的面向对象介绍了面向对象的四大基本特性——封装、继承、多态和抽象,但这并不意味着动态类型系统中的面向对象不具备这四大基本特征,只是其表现形式上和静态类型系统中的面向对象有所差别,所以我们也简单介绍了动态类型系统中的面向对象的四大基本特征的表现形式。同时我们对基于类和基于原型的面向对象做了简单的对比介绍,其中基于原型的面向对象只有少数动态类型系统的编程语言才支持。

2023-05-08 03:02:51 132

原创 以面向对象为核心的多范式编程

我个人的编码风格就已经形成了——整体上,代码的组织方式是面向对象的;实现对象内部的算法的时候,使用面向过程的编程方式,同样的,在实现某个具体的功能的时候,也是使用面向过程的方式进行思考,但是过程中的核心功能是由一个个对象负责的,而不是由函数承载;在实现算法的时候辅以函数式编程来提高算法的通用性和灵活性。

2023-03-19 21:06:28 145

原创 设计要有度——KISS、YAGNI和简单设计原则

YAGNI 原则跟 KISS 原则并非一回事儿。KISS 原则讲的是“如何做”的问题(尽量保持简单),而 YAGNI 原则说的是“要不要做”的问题(当前不需要的就不要做)

2022-09-18 23:31:35 351

原创 每个知识点都应该是唯一的——DRY原则

DRY原则的核心是:每一个知识点都应该有一个唯一的、明确的、权威的表示。

2022-08-22 00:22:49 375

原创 依赖传递和依赖调解

Maven为我们提供了依赖传递机制和依赖调解机制,让我们项目的依赖管理变得更加简单

2022-08-07 16:34:14 162

转载 大而全的pom文件示例

大而全的Maven pom文件

2022-08-02 00:29:32 279

原创 Maven项目目录布局以及POM文件

POM(Project Object Model,项目对象模型)是Maven的基本工作单元。

2022-08-02 00:28:02 1496

原创 Java中的变量和常量

介绍Java中的8中类型的变量、常量表达式、常量变量以及常量变量的内联

2022-07-29 00:45:36 1110

原创 Java中的表达式和语句

Java中我们可以用不带break的switch语句来实现一个简单的状态模式,可以用带标签的break和带标签的continue语句来实现更加精细的流程控制。

2022-07-21 23:57:35 598

原创 Java中的数据类型和字面值

Java提供了数字、布尔和字符串这三种最基本的字面值语法。在数字原始类型的运算中,会根据把值集较小的变量或者字面值的数据类型自动进行提升,这种提升是类型安全的。

2022-07-20 00:33:35 524

原创 line-height和vertical-align精讲

要想用好line-height,我们首先要知道line-height是如何构成的

2022-07-07 00:52:44 535

原创 文字相关的样式

文字是构成网页的关键,是信息的主要载体之一,在指定文字样式的时候要充分考虑文字的功能。如果是正文,则通常不建议添加太多花哨的样式,否则很有可能华而不实,反而影响阅读,这个时候样式就会成为信息噪音。反之,如果是有特殊功能的文字,如标题、连接、帮助信息......则建议是当添加标题以起到突出信息的作用,在视觉上与其他内容区别开来。...

2022-07-07 00:51:52 601

原创 CSS选择器

其实css选择器是一种表达式,其被浏览器解析用来选中符合规则的DOM节点。而一个DOM元素可能会被多个选择器同时命中,这个时候我们就需要计算选择器的优先级。

2022-07-07 00:50:24 586

原创 认识Maven

Maven是一个优秀的构建工具,同时Maven也是一个依赖管理工具、项目信息管理工具。

2022-07-03 01:25:52 117

原创 RPM软件管理机制和YUM在线升级机制

RPM是一种软件管理机制,我们可以直接使用rpm命令来进行软件的管理,也可以使用基于RPM软件管理机制的YUM机制所提供的yum命令来在线管理我们的软件

2022-06-26 20:20:32 985

原创 Linux下软件管理方式

在Linux下安装软件的方式大体是类似的,我们可以使用发行版提供的包管理工具来进行软件的安装,也可以通过直接编译源代码的方式来进行软件的安装。

2022-06-26 20:19:13 386

原创 初入Bash——命令调用的基本语法

Bash是一个命令解释器,是操作系统在Shell中实现的命令行接口,用于交互式访问操作系统功能或服务

2022-06-10 00:03:53 792

原创 软件设计第一步——分离关注点和单一职责原则

分离关注点是软件设置中至关重要的第一步,在分解的过程中,单一职责原则可以指导我们避免分解粒度过大的问题。

2022-06-05 02:48:15 746 1

原创 什么是代码质量

算法和软件设计其实是一样的,二者对抗的都是规模问题,只不过,算法对抗的是处理数据的规模,而软件设计对抗的需求的规模和代码量的规模。

2022-04-25 01:09:33 1743

原创 高级语言是如何运行的——语言的运行方式

高级语言的运行方式有两大类,一类是直接把我们的高级语言的代码翻译为机器码,由机器直接运行,采用这种方式运行的语言我们称之为编译运行的语言;另一种就是再为我们的高级语言专门写一个程序,这个程序的作用就是解释执行我们的高级语言的代码;采用这种方式运行的语言我们称之为解释执行的语言。

2022-03-14 01:02:04 11565

原创 计算机是如何读懂高级语言的——编译过程简述

从上面的图中我们可以看出,编译器的前端就是编译器对程序代码的分析和理解过程,它通常只和语言的语法有关,跟目标机器无关;而与之对应的后端则是生成目标代码的过程,这是跟目标机器有关的。

2022-03-14 00:42:37 1425 2

原创 如何写出更优雅的代码——编程范式简述

编程范式本质是从某方面对程序员编程能力的限制和规范,很多编程范式已经被熟知禁止使用哪些技术,同时允许使用哪些。例如,结构化编程不允许使用goto;纯粹的函数式编程不允许有副作用。

2022-03-14 00:26:20 825

原创 高级语言中的成语——函数

而在高级程序设计语言中,通过子程序,我们可以把一些常用的功能封装起来,在需要的地方去调用它。那么就可以做到用一行代码实现非常丰富的功能

2022-03-09 23:35:28 424

原创 静态类型语言中类型的灵活性——泛型和变型

协变与逆变(Convariance and contravariance)是在计算机科学中,描述具有父/子型别关系的多个数据类型通过型别构造器构造出的多个复杂数据类型之间是否有父/子型别关系的用语。

2022-03-09 23:28:32 253

原创 高级语言基本世界观——类型系统

不同语言的类型规则可能天差地别,但是我们往往会从两个维度来描述一门语言类型系统的基本特征,分别是: 动/静、强/弱

2022-03-09 22:48:11 417

原创 高级语言中如何操作内存——变量和值

在高级语言中访问某个数据存储区域的唯一方式就是使用左值,除此之外,别无他法

2022-02-28 00:49:49 421

原创 终端相关的概念

Linux中与命令行终端相关的术语非常多,比如控制台(Console)、终端(Terminal)、Shell、Bash、命令行(Cli)、tty等等,这些术语的使用往往非常混乱,甚至在日常的使用中往往指代同一个东西——一个黑乎乎的命令行界面。...

2022-02-27 02:10:15 915 1

原创 高级语言中的短语和句子——表达式和语句

了解完基本的语言结构token之后,下一步就是学习语言的语法,然后使用特定的语法结构排列token来构成更加高级的语法结构,类似于英文中的短语和句子,高级程序设计语言中更高级的语言结构是表达式和语句。

2022-01-29 22:43:16 1023

原创 学习环境安装

刚开始学习Linux操作系统,使用虚拟机搭建学习环境是成本最低也是最好的选择,这里我选择的虚拟机软件是VMware,大家也可以选择VirtualBox,根据自己的喜好选择适合自己的虚拟机软件就可以了。

2022-01-16 04:36:46 1038 1

原创 最好、最坏、平均、均摊时间复杂度

对一个算法进行时间复杂度分析的时候,我们也要考虑同规模数据的不同情况对算法效率造成的影响,也就是我们需要对输入数据的具体情况进行分类讨论,才能比较准确地评估一个算法的实际情况,甚至,在数据规模相同的情况下,数据的实际情况会决定我们对算法的选型。

2021-12-12 21:04:17 1059

原创 算法复杂度分析

复杂度分析就是算法世界基本的是非观,只有掌握了复杂度分析,我们才能对代码的效率好坏有一个基本的判断能力。如果你只是掌握了数据结构和算法的特点、用法,但是没有学会复杂度分析,那就相当于学武功只学习了招式,而没有掌握内功心法,只有把心法了然于胸,才能做到无招胜有招

2021-12-12 03:54:14 291

原创 数据结构中的原子、分子和物质

结构分为三个层次,分别为标量数据,基本数据结构和高级数据结构。标量数据是数据结构中的原子,它是不可再分的,是最终的信息载体;基本数据结构是数据结构层级中的分子,它具提供了组合原子和其他分子的基本能力;而高级数据结构,所聚焦的问题其实也是把大量同构的数据组合成一个群体的问题。到了高级数据结构这个层次,基本上对应的就是数据结构中的逻辑结构了。

2021-12-08 23:09:22 667

原创 高级语言中的单词——5种类型的token

《高级语言中的单词——5种类型的token》原文链接,阅读体验更佳特别感谢李文塔工程师,这篇文章中借鉴了《Go语言核心编程》中第一章的许多内容,其实在写这篇文章的时候我卡了很长一段时间,也重新写了很多遍,但是总觉得思路不对,这本书让我茅塞顿开。上篇文章《编程语言的自举之路——从机器码到高级语言》中提到过,现在高级程序设计语言已经有几百种了,每一门编程语言所面向的问题领域都是不同的,那么每一门语言也就都具有自己的特性,它们的语法形式也是千差万别。但是,不同高级语言最终都是需要转换成计算机可以运行的二进

2021-11-08 22:28:52 2085

原创 编程语言的自举之路——从机器码到高级语言

《编程语言的自举之路——从机器码到高级语言》原文链接,阅读体验更佳语言是协议在中国,大多数人使用汉语进行交流,我对你说一句汉语你能听懂并做出回应;如果有人对你说一句英语,而你又正好学习了英语,那么你也能听懂并做出回应。可见我们平常所使用的自然语言是人与人之间交流的一种协议,不同的语言就是不同的协议,但是因为不同的语言都有一个统一的物理基础——地球,所有文明的诞生环境都是地球,所有语言的目的也都是一样的,那就是描述地球,记录一些物或者事,所以不同的自然语言之间可以相互翻译。而如果我们掌握了多门自然语言也

2021-11-08 22:24:59 1298

原创 指令也是数据?浅谈计算机体系结构

《指令也是数据?浅谈计算机体系结构》原文链接,阅读体验更佳我从大学期间开始接触编程,接触的第一门编程语言是C语言,后来也进过实验室,玩过单片机,还接触过汇编,但是最终都没有走下去。到大四下学期的时候由于毕业设计和工作的需要,开始接触JavaWeb,从此踏上了一条不归路。现在也已经工作两年多的时间了,接触的语言也越来越多,我也成功脱离的语言之争的低级趣味。学习更多的编程语言,熟练使用甚至精通多门编程语言已经成为了我长期的目标。不知为何,我对编程有一种特别的执念,总想总结出一套自己的方法论和思维体系,在编

2021-11-08 22:18:20 554

空空如也

空空如也

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

TA关注的人

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