自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

hope_wisdom的技术博客

一起学习,一起成长,一起进步

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

原创 实战设计模式之备忘录模式

与解释器模式、迭代器模式一样,备忘录模式也是一种行为设计模式。备忘录模式允许我们保存一个对象的状态,并在稍后恢复到这个状态。该模式非常适合于需要回滚、撤销或历史记录等功能的应用场景。通过使用备忘录模式,开发者可以轻松添加诸如撤销/重做、快照等高级功能,提升用户体验。文本编辑器的撤销/重做功能是运用备忘录模式最典型的应用场景。当我们在文本编辑器中输入或修改内容时,编辑器会定期创建当前文档状态的“快照”,即备忘录。如果我们需要撤销最近的操作,编辑器可以从这些快照中恢复到之前的状态。

2025-04-19 19:17:38 1103 21

原创 Linux系统编程之虚拟内存

计算机内存是临时存储数据的地方,它比硬盘快得多,但容量有限。现代操作系统通过虚拟内存技术,使得每个进程都感觉自己独占整个地址空间,这不仅提高了安全性,也简化了内存管理。物理内存:实际安装在计算机上的RAM,它是计算机直接使用的高速存储器,所有正在运行的进程和操作系统内核共享同一块物理内存。相比硬盘等其他存储设备,物理内存提供了极高的读写速度。但受制于硬件限制,物理内存的大小通常是固定的,比如:4GB、8GB或更大。虚拟内存。

2025-04-13 09:11:40 1034 33

原创 实战设计模式之迭代器模式

与上一篇介绍的解释器模式一样,迭代器模式也是一种行为设计模式。它提供了一种方法来顺序访问一个聚合对象中的各个元素,而无需暴露该对象的内部表示。简而言之,迭代器模式允许我们遍历集合数据结构中的元素,而不必了解这些集合的底层实现细节。音乐播放器是运用迭代器模式的一个典型例子:当我们使用音乐播放器听歌时,通常会有“下一首”、“上一首”的功能来切换歌曲。这里的歌曲播放列表就相当于一个聚合对象,而用于切换歌曲的功能就是迭代器。用户可以轻松地遍历整个播放列表,而无需了解歌曲是如何存储或排序的。

2025-04-06 11:08:06 1794 33

原创 Linux系统编程之守护进程

在Linux系统中,守护进程是一个在后台运行的特殊类型的进程。它独立于控制终端,并且周期性地执行某种任务,或等待处理某些发生的事件。守护进程通常用于提供服务,比如:Web服务器、数据库管理系统等。守护进程具有以下四个核心特征。1、脱离终端。守护进程不与任何终端关联,这意味着它们不会因为用户注销而停止运行。2、生命周期长。随系统启动,直至系统关闭或终止。3、工作目录设为根目录。为了避免影响文件系统的卸载操作,守护进程的工作目录通常设置为根目录/。4、重定向标准输入输出。

2025-03-24 08:31:26 1536 28

原创 实战设计模式之解释器模式

作为一种行为设计模式,解释器模式提供了一种方法来定义语言的文法规则,并通过这些规则解析和处理特定类型的语言句子。简单来说,解释器模式允许我们定义一个代表某种语言中语法规则的对象结构,从而能够根据这些规则理解并处理语言中的表达式。表达式计算器是运用解释器模式的一个典型例子:想象一下,我们正在开发一个简单的数学表达式计算器,用户可以输入类似3 + (2 - 1)的表达式,并期望得到计算结果。在这种情况下,我们可以使用解释器模式来定义表达式的结构,并实现对这些表达式的解析和计算。

2025-03-18 08:56:00 1467 35

原创 Linux系统编程之有名管道

有名管道,也称为FIFO(First In First Out),是一种特殊的文件类型,允许在不相关的进程之间进行通信。与无名管道不同,有名管道具有一个路径名,并且可以在文件系统中找到。这使得它可以被任意两个或多个进程使用,而不仅仅限于父子进程。有名管道的名字通常位于临时目录下,或者根据应用程序的需求创建在其他位置。

2025-03-10 06:30:00 1868 30

原创 实战设计模式之享元模式

在开发过程中,我们经常会遇到创建大量具有相似属性的对象的情况。比如:在一个图形编辑器中,可能有成千上万的小图标或文字字符;在一个游戏中,可能有大量的敌人、子弹等重复元素。如果每个这样的对象都独立存储其所有信息,将会占用大量的内存空间,并可能导致性能问题。为了优化这种情况,我们可以考虑只创建一份包含共同属性的数据副本,然后让不同的对象引用这份数据。同时,各自维护自己的独特属性。这就是享元模式的核心思想:共享不可变的数据,以节省内存。

2025-03-03 06:30:00 1505 28

原创 实战设计模式之代理模式

与前面介绍的组合模式、外观模式相同,代理模式也是一种结构型设计模式。代理模式非常实用,特别是在需要增强现有对象的功能、控制访问权限或是优化性能的情况下。简单来说,代理模式提供了一个对象来控制对另一个对象的访问。这个“代理”,就像一个中介或代表,负责管理客户端与目标对象之间的交互。房地产中介是现实生活中运用代理模式的一个典型例子:当我们想要购买或租赁房产时,通常会通过一家中介公司来处理;这个中介就是卖方和买方之间的代理,它帮助双方沟通、协商价格、准备文件等。

2025-02-24 06:30:00 1550 32

原创 Linux系统编程之无名管道

在Linux系统中,无名管道是一种简单的进程间通信机制。它允许一个进程创建一对文件描述符,其中一个用于读取,另一个用于写入。当一个进程通过系统调用创建了一个无名管道后,便可以将这两个文件描述符传递给它的子进程,使得父子进程之间可以进行单向的数据交换。

2025-02-21 06:30:00 997 22

原创 Linux系统编程之高级信号处理

在前一篇文章中,我们介绍了signal函数、sigaction函数等基本的信号处理方法。在本篇中,我们将介绍信号处理的一些高级用法,包括:阻塞与解除阻塞、定时器等。

2025-02-19 06:30:00 1036 12

原创 实战设计模式之外观模式

与前一篇介绍的组合模式相同,外观模式也是一种结构型设计模式。通过引入一个外观类,将多个系统的接口整合成一个高层次的接口,使得客户端可以更容易地使用这些系统。这个模式的主要目的是:降低系统的耦合度,简化客户端与子系统之间的交互。汽车驾驶是现实生活中运用外观模式的一个典型例子:当我们驾驶一辆汽车时,实际上是在与多个复杂的子系统进行互动(比如:发动机系统、刹车系统、转向系统、空调系统等);然而,驾驶员并不需要了解这些系统的内部工作原理,只需要操作方向盘、油门踏板、刹车踏板和一些简单的按钮即可。

2025-02-19 06:30:00 2380 29

原创 陶渊明,田园诗派之祖

陶渊明的作品以其独特的艺术魅力和深刻的思想内涵,在中国文学史上占有重要地位。他的田园诗开创了中国古典诗歌的一个新流派,即田园诗派,对后世产生了深远的影响。唐代大诗人王维、孟浩然等人,都是受到陶渊明启发而创作出大量优秀田园诗的代表人物。

2025-02-17 06:30:00 204 11

原创 实战设计模式之组合模式

组合模式是一种结构型设计模式,允许我们将对象组合成树形结构,以表示部分和整体的层次关系。通过这种方式,我们可以统一地处理单个对象和对象组合。换句话说,组合模式使得客户代码能够忽略对象的层次结构,以一致的方式对待个体和集合。文件系统是运用组合模式的一个典型例子:计算机上的文件夹(或目录)可以包含其他文件夹或文件,而文件夹本身又可以被包含在更大的文件夹中。这种层次化的结构,允许用户以一致的方式来处理单个文件和整个文件夹。组合模式支持开闭原则,即对扩展开放,对修改关闭。

2025-02-17 06:30:00 1728 16

原创 Linux系统编程之基本信号处理

在前一篇文章中我们已经提到过,信号本质上是一个整数编号,每个编号对应一种特定类型的事件。当某个条件满足时,操作系统会生成相应的信号,并将其传递给目标进程。接收到信号后,进程可以选择忽略它、执行默认动作、或调用自定义的处理函数来响应。

2025-02-12 06:30:00 962 10

原创 实战设计模式之原型模式

与工厂方法模式、抽象工厂模式一样,原型模式也是一种对象创建型模式。它提供了一种创建对象的新方式:通过复制一个已有实例,来创建新的实例。这种方式避免了构造函数的局限性,特别是当对象的创建成本很高或初始化过程比较复杂时。在某些情况下,克隆现有对象可能比直接实例化新对象更高效。复印机是现实生活中运用原型模式的一个典型例子:当我们有一份纸质文档,并希望快速获得多份副本时,可以使用复印机来复制原始文档。这种方式比重新打印每一份文档要快得多,也更加方便。

2025-02-12 06:30:00 1331 18

原创 Linux系统编程之信号基础知识

信号是Linux系统中用于进程间通信的一种机制,允许一个进程通知另一个进程发生了某些特定事件。信号可以来自硬件中断、用户输入,也可以来自其他进程或者内核本身。信号是一种异步通知机制,当某个事件发生时,操作系统会向目标进程发送一个信号。信号本质上是一个整数值,每个值代表一种不同的事件类型。

2025-02-10 06:30:00 1679 16

原创 实战设计模式之责任链模式

与上一篇介绍的命令模式一样,责任链模式也是一种行为设计模式,它允许我们将请求沿着处理者链进行传递。接收者和发送者都没有对方的引用,且责任链中的节点可以动态地添加或移除。这样,就避免了请求发送者与多个接收者的硬编码依赖,使系统更加灵活。在下面三种应用场景中,我们可以毫不犹豫地使用责任链模式。1、有多个对象可以处理一个请求,但事先并不确定哪个对象会真正处理该请求,我们可以根据运行时信息来决定。2、想要在不明确指定接收者的情况下,向多个对象中的一个提交请求,即发送者不需要知道是谁最终处理了请求。

2025-02-10 06:30:00 1343 21

原创 软件工程师,2024年技术沉淀与人生感悟

每到新的一年,对过去的一年进行总结和回顾,似乎成为了一项传统。2024年已经离我们而去,2025年已然到来。回首2024,既有点像应试考试,无从下手,甚至有点后怕,又有点像闲扯家常,似乎有很多心里话想侃一侃、聊一聊。

2025-02-08 20:48:58 864 25

原创 曹植,独占八斗天下才

曹植的一生跨越了两个重要的历史阶段 —— 东汉末年的混乱和三国时期的初期稳定。他不仅目睹了父亲曹操如何一步步建立起强大的势力,也经历了哥哥曹丕篡汉建魏的过程。曹植个人的政治生涯充满了波折,但他在文学上的成就,却让他成为了中国历史上一位不可忽视的伟大诗人。

2025-01-14 13:05:37 653 13

原创 实战设计模式之命令模式

命令模式是一种行为设计模式,用于将请求封装成对象,从而使我们可以用不同的请求对客户进行参数化。简单来说,命令模式就是把一个请求转换为一个包含所有关于这个请求信息的对象。这样,就可以像传递其他对象一样传递这个请求,并且可以在适当的时间和地点执行它。命令模式主要适用于以下几种应用场景。1、需要支持撤销、重做操作的应用程序,比如:文本编辑器、绘图程序等。2、操作可以被放入队列中,并按顺序或特定条件执行的任务调度系统。3、提供统一接口给用户执行一系列操作的地方,比如:菜单项、工具栏等UI组件。

2025-01-14 13:03:00 2346 21

原创 Linux系统编程之线程优先级

在Linux系统中,线程优先级是影响多线程应用程序性能和响应速度的关键因素之一。通过合理设置线程优先级,可以确保关键任务得到及时处理,同时避免低优先级任务过度占用系统资源。线程优先级是指操作系统根据一定的规则分配给每个线程的一个数值,用于决定该线程获得CPU时间的顺序和频率。一般来说,优先级越高,线程越有可能被调度执行。相反,优先级较低的线程则需要等待高优先级线程完成之后才能获得CPU时间。然而,这并不意味着低优先级线程永远不会被执行,而是它们的执行机会相对较少。

2025-01-13 08:54:32 1545 19

原创 实战设计模式之桥接模式

与上一篇介绍的适配器模式一样,桥接模式也是一种结构型设计模式。它旨在将抽象部分与其实现部分分离,使它们可以独立变化。通过桥接模式,我们可以让一个类的功能模块化,并且可以在不修改其他模块的情况下进行扩展或修改。这种设计思路有助于创建更加灵活、易于维护的代码库。为了更好地理解桥接模式,我们以现实生活中的蜡笔和毛笔为例。假如我们需要大、中、小三种规格的蜡笔和毛笔,每种规格的笔需要支持红、黄、蓝三种颜色。

2025-01-10 06:30:00 3062 25

原创 实战设计模式之适配器模式

在大型项目中,我们可能会遇到以下一些典型场景。1、需要使用一些现有的类,但其接口不符合要求。2、想要创建一个可以重复使用的类,该类可以与其他不相关的类或不可预见的类(即接口可能并不兼容的类)协同工作。3、需要使用第三方库或框架中的类,但是它们的接口与系统的其他部分不兼容。此时,如果直接修改这些类、库、组件或框架的源代码来适应新的要求,可能会破坏原有的功能或者违反开闭原则。为了解决这个问题,我们可以使用适配器模式。

2025-01-08 06:30:00 1627 17

原创 Linux系统编程之线程同步

在多线程编程中,线程同步是确保多个线程能够安全、高效协作的关键。当多个线程访问共享资源时,如果不加以控制,可能会导致不一致的状态或错误的行为。比如:两个线程同时尝试修改同一个变量,可能导致其中一个修改被覆盖,或者产生未定义的结果。为了避免这些问题,我们需要引入同步机制来协调线程之间的操作顺序,确保每次只有一个线程可以访问特定的资源。

2025-01-08 06:30:00 1509 11

原创 王勃,命运多舛的璀璨人生

尽管王勃的生命短暂,但他对中国文学的发展产生了重要影响。他是唐代诗歌变革初期的重要代表人物之一,为后来盛唐诗歌的繁荣奠定了基础。王勃与其他三位“初唐四杰”共同推动了五言律诗和骈文的发展,促进了唐代文学风格从六朝以来的纤细柔弱向雄浑豪放转变。因此,在中国文学史上,王勃被视为承前启后的关键人物,其贡献得到了广泛的认可与赞誉。

2025-01-06 06:30:00 862 7

原创 Linux系统编程之多线程

线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运行单位。一个线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。相比于进程,线程是轻量级的实体,它们共享进程的资源(比如:内存地址空间等),因此创建和销毁线程的成本较低。因为线程共享相同的地址空间,所以它们之间的通信非常高效,不需要像进程间通信那样通过复杂的机制。

2025-01-06 06:30:00 2744 23

原创 实战设计模式之建造者模式

在实际项目中,我们有时会遇到需要创建复杂对象的情况。这些对象可能包含多个组件或属性,而且每个组件都有自己的配置选项。如果直接使用构造函数或前面介绍的工厂方法来创建这样的对象,可能会导致以下两个严重问题。1、参数过多。当一个类有很多可选参数时,构造函数可能会变得非常庞大,难以维护。此外,调用方必须记住哪些参数是必需的,哪些是可选的,这在一定程度上增加了出错的风险。2、代码冗余。如果每次创建对象都需要传递大量的参数,那么代码将会变得冗长、复杂且难以理解。

2025-01-03 06:30:00 2361 34

原创 Linux系统编程之设备文件与ioctl

在Linux系统中,所有的硬件设备都被抽象为文件,这些文件被称为设备文件。通过使用标准的文件操作函数(比如:open、close、read、write),可以对硬件设备进行控制和数据传输。但对于某些复杂或特定的硬件功能,标准的文件操作可能无法满足需求。这时候,就需要使用ioctl函数来实现更精细的控制。

2025-01-02 06:30:00 1405 27

原创 实战设计模式之装饰器模式

在软件开发中,我们经常遇到需要给现有对象添加新功能的情况。最直接的方法是通过继承来实现,即创建一个子类,并重写或新增方法。然而,继承这种方式有如下几个缺点。1、违反开放封闭原则。开放封闭原则指出软件实体应该是对扩展开放的,但是对修改关闭的。使用继承来添加功能会使得我们必须修改已有的类,这显然不符合这一原则。2、代码膨胀。如果一个类有多种可选的行为,那么为了覆盖所有可能的组合,可能会导致大量的子类产生,使代码库变得臃肿、难以维护。3、灵活性不足。

2024-12-31 06:30:00 2412 32

原创 Linux系统编程之文件系统的挂载

在Linux系统中,所有的存储设备(比如:U盘、硬盘等)都不是直接可用的。为了使这些设备上的数据能够被操作系统读取和写入,我们必须将它们“挂载”到文件系统的某个位置。这就好比是在树上添加一个新的分支,挂载点就是这个新分支的位置,而所挂载的文件系统则成为了该位置下的子树。挂载的好处在于:它可以让我们将多个不同的物理设备整合成一个统一的文件层次结构,简化了对多个存储设备的管理和使用。此外,它还允许我们对不同类型的文件系统进行灵活的配置和访问控制。

2024-12-30 06:30:00 2344 26

原创 曹雪芹,梦断红楼留不朽

红楼梦》不仅是文学作品,也是文化的载体。书中涉及诗词歌赋、园林建筑、服饰饮食等多个方面,反映了当时社会的文化风貌。曹雪芹通过对传统文化的深入挖掘和创新性表达,使得《红楼梦》成为了研究清代文化不可或缺的重要文献。

2024-12-30 06:30:00 960 9

原创 Linux系统编程之目录遍历

目录遍历是指以递归或循环方式,逐个访问文件系统中的文件和子目录,这通常用于实现文件搜索、备份工具、同步服务等功能。为了有效地遍历目录,Linux提供了多种方法,最常见的是:readdir和scandir。下面,我们将分别进行介绍。可以看到,readdir和scandir都可以用于读取目录内容。但它们的工作方式和使用场景有所不同,主要可以归纳为以下几点。1、使用场景。readdir:逐个读取目录条目,适用于简单的遍历操作。

2024-12-27 06:30:00 1031 16

原创 实战设计模式之策略模式

与前一篇文章中提到的观察者模式一样,策略模式也是一种行为设计模式。它允许我们定义一系列算法,并将每个算法封装起来,使它们可以互换使用。通过这种方式,策略模式使得算法的变化独立于使用这些算法的客户端,从而提高了系统的灵活性和可维护性。商场的折扣计算是运用策略模式的一个典型例子:在促销活动中,顾客可以享受不同的折扣,包括满减优惠、会员专享折扣、节日特惠等;当顾客结账时,系统可以根据实际情况选择适用的折扣策略进行计算。这种设计使得折扣规则易于管理和扩展,同时也提高了系统的灵活性。

2024-12-27 06:30:00 1865 28

原创 Linux系统编程之目录操作

在Linux系统中,文件系统是组织和管理数据的关键组件,而目录则是文件系统的骨架。目录本质上是一个特殊的文件,包含了指向其他文件或目录的链接。每个目录都有一个唯一的inode号,用来标识它在文件系统中的位置。目录可以包含普通文件、其他目录(子目录)、符号链接、其他类型的文件(比如:设备文件等)。

2024-12-25 06:30:00 878 14

原创 实战设计模式之观察者模式

与前面提到的工厂方法模式、抽象工厂模式等创建型设计模式不同,观察者模式属于行为设计模式。行为设计模式主要关注对象之间的职责分配,以及它们之间的通信。通过行为设计模式,可以更加清晰地表达复杂的控制流,提高代码的可读性、灵活性和可维护性。新闻订阅系统是运用观察者模式的一个典型例子:每当有新的文章发布时,所有订阅了该频道的用户都会收到通知。观察者模式提供了一种松耦合的方式让对象之间相互通信,适用于需要处理多个对象对某个对象的状态变化做出反应的场景。

2024-12-25 06:30:00 1786 25

原创 马致远,秋思断肠人

马致远的艺术风格独特,在元曲创作方面做出了开创性的贡献。他善于运用象征手法来表达复杂的情感,同时又注重情节的紧凑性和人物性格的刻画。在他的笔下,无论是帝王将相还是平民百姓,都被赋予了鲜明的个性特征。而那些虚构的角色,则往往成为寄托作者理想或批评时弊的载体。

2024-12-24 07:30:00 604 3

原创 Linux系统编程之文件锁机制

在多任务操作系统中,文件锁是一种非常重要的机制,可用于防止多个进程同时对同一文件进行读写操作,从而避免数据损坏或竞争条件。Linux系统提供了多种文件锁机制,包括:强制锁和建议锁。每个打开的文件都有一个唯一的文件描述符,而强制锁和建议锁是绑定到这个文件描述符上的。当一个进程关闭文件描述符时,与该文件描述符关联的所有锁都会被自动释放。另外,当一个进程通过fork函数创建子进程时,子进程会继承父进程中所有打开的文件描述符及其关联的锁。如果子进程关闭了继承的文件描述符,与该文件描述符关联的所有锁都会被自动释放。

2024-12-23 06:30:00 917 12

原创 实战设计模式之抽象工厂模式

前一篇文章中提到的工厂方法模式允许子类决定具体要创建的对象类型,但它一次只创建一个对象。抽象工厂模式则更加复杂,它关注的是创建一系列相关的对象。这些对象通常构成了一个完整的“家族”,并且在不同的实现中保持一致性和兼容性。跨平台的图形用户界面库(GUI,比如:QT、wxWidgets)是运用抽象工厂模式的一个典型例子:这些库需要为不同的操作系统(比如:Windows、macOS、Linux等)提供一致的控件集,包括按钮、文本框、菜单、多选框等。

2024-12-23 06:30:00 1685 28

原创 Linux系统编程之文件操作

在Linux系统中,文件操作是一项基本而又重要的任务,主要依赖于系统调用。系统调用是操作系统提供的底层接口,允许用户程序直接与内核进行通信。常用的文件操作包括:打开文件、关闭文件、读取文件、写入文件、文件定位等。下面,我们分别进行介绍。

2024-12-20 06:30:00 1111 16

原创 实战设计模式之工厂方法模式

工厂方法模式和前一篇文章中提到的简单工厂模式都属于创建型设计模式,它们都致力于解决对象创建的问题。但两者还是有一些重要区别的:简单工厂模式通常用于减少重复代码,并将对象的创建逻辑集中在一个地方,适用于产品种类较少且创建逻辑相对简单的情况;工厂方法模式让子类决定要实例化的具体类,适用于系统中有多个产品家族,或者希望将对象的创建委托给专门的子类的情况。

2024-12-20 06:30:00 2264 34

软件开发+设计模式+架构设计

软件的复杂性是一个很宽泛的概念,任何使软件难以理解、难以修改、难以维护的东西,都属于软件的复杂性。软件复杂的根本原因是:变化。这里的变化,包括:客户需求的变化、技术平台的变化、开发团队的变化、市场环境的变化等。 IBM院士、IBM研究院软件工程首席科学家Grady Booch曾经说过下面这段话。 “建筑商从来不会去想给一栋已建好的100层高的楼房底下再新修一个小地下室——这样做花费极大而且注定要失败。然而令人惊奇的是,软件系统的用户在要求作出类似改变时却不会仔细考虑,而且他们认为这只是需要简单编程的事。” 随着软件复杂性的增加、项目规模的急剧增大,代码的组织、维护和扩展性成为了一项挑战。面对这些挑战,开发者们逐渐总结出了一些最佳实践和通用解决方案,也就是这里提到的“设计模式”。设计模式并不是具体的算法实现或数据结构,而是解决问题的一种模板或蓝图。 具体可参考专栏系列《实战设计模式系列》:https://blog.csdn.net/hope_wisdom/category_12851376.html

2025-03-02

《超级面试官读书笔记》职场+面试+笔记

1、面试=面对面观察+双向沟通+考察能力素质 2、面试效能四要素:清晰的评价标准,严谨的招聘流程,科学的面试方法,专业的面试评委 3、清晰定位的面试官——人才流入的质检员+企业形象代言人 4、面试官要做的三项准备工作:知己—明确用人需求(软与硬);知彼—熟知应聘者简历(抓住关键提问题);知他:了解人才市场(这种人才在市场上值多少钱) 5、精准描绘人才画像的步骤:向上看—分析公司现状(经营现状,发展历程,人才现状);向前看—公司战略分析,定性分析【公司外部环境(产业链,竞争对手,目标客户,主要产品及服务,行业发展趋势等),公司战略规划】;向内看:关键挑战分析(岗位工作重点,岗位关键挑战,核心能力分析);向外看—给人才预定价(不匹配:放弃or降低标准or提薪) 6、面试方法的分类 7、结构化面试(面试形式) 8、面试座位安排示意图 9、不同类型应聘者的提问技巧 10、如何营造压力面试:营造紧张的氛围(狭小的房间等);面试官适时沉默 11、无效的面试问题 12、压力提问的三个注意事项 13、面试评价的六个误区

2024-09-25

IPC库 + 跨平台 + Ingenic芯片方案

专栏《手把手教你封装跨芯片方案的IPC通用库 》地址:https://blog.csdn.net/hope_wisdom/category_12186076.html 专栏《手把手教你封装基于君正芯片方案的IPC库 》地址:https://blog.csdn.net/hope_wisdom/category_12353290.html 1、所有源码严格遵守统一的编码规范。 2、手把手教学,让你从零开始,深入了解君正方案IPC库的方方面面。 3、纯C++接口,接口封装严谨,接口功能丰富,应用层调用简单便捷。 4、近二十年行业经验和技术积累打造的高质量商用级代码,架构清晰合理,便于扩展和维护。 5、绝不空谈概念和原理,实打实地进行源码的展示和要点的讲解。专栏一共15篇,已完结。 6、根据功能模块分章节进行详细介绍,每个章节可独立阅读,让你真正吃透每一个功能模块。 7、通过学习本专栏,你可以深入了解君正底层API、ISP使用、视频采集、音频采集、音频播放、云台电机控制、移动侦测、移动跟踪、人形检测等一系列君正芯片方案相关的专业知识。

2024-06-02

超级好用的C++实用库 + 跨平台 + 通用

对应专栏的地址为:https://blog.csdn.net/hope_wisdom/category_12641233.html 本专栏将介绍一个超级好用的C++实用库,可跨平台(包括:Windows、Linux等桌面操作系统,Android、iOS、鸿蒙等手机操作系统,海思、富瀚微、君正等嵌入式操作系统)使用,内容包括:base64编解码、des加解密、md5信息摘要算法、sha256算法、socket封装类、字节流合成器、字节流解析器、互斥锁、文件类、点阵字体、地理相关接口类、日志类、内存缓冲区类、环形内存池、字符编码转换类、线程基类等。 超级好用的C++实用库的源码

2024-05-23

微信小程序+淘宝客完整源码+PHP后台

微信淘宝客小程序源码是一款专为淘宝客设计的小程序应用,用户可通过小程序便捷搜索、浏览、分享淘宝商品,每成功引导一次购买,淘宝客即可获得相应佣金。核心功能包括: 商品搜索与筛选:集成淘宝联盟API,支持关键词搜索、类目筛选、销量排序、价格区间过滤等精细化查找商品。 商品详情展示:呈现商品图片、价格、销量、评价等详细信息,一键生成专属推广链接或二维码,方便用户分享至微信好友、群聊或朋友圈。 订单跟踪与佣金统计:实时同步淘宝联盟后台数据,展示推广订单状态、预计佣金、结算周期等信息,帮助淘宝客清晰掌握收益情况。 个人中心与设置:用户可查阅账户余额、提现记录,设置收款信息,参与推广任务,接收系统通知等,实现一站式淘宝客运营管理。 社交裂变与营销工具:内置邀请好友、拼团、优惠券等营销插件,鼓励用户邀请新用户注册,提升平台活跃度与用户黏性。

2024-04-27

微信小程序+云商城+PHP后端

技术栈 Codeigniter LeanCloud Bootstrap Admin-LTE jQuery fex-webuploader Codeigniter是一个老牌的php框架,零配置,文档极其丰富。它没有ORM,没有模板引擎,用它,只是因为够用了,LeanCloud自身就是ORM,而PHP天生就是模板语言,所以CI有没有ORM与模板引擎也无所谓。 后台界面,使用了Admin-LTE,它是基于Bootstrap的一套UI,打包了很多现成的组件,菜单目录树,表格,下拉框,颜色选择器,编辑器,日历,报表,聊天窗口。 在登录与修改页面,还用到vue+element-ui

2024-04-27

微信小程序+百货商城源码

百货商城小程序源码是专为移动端设计的商城解决方案,它集成了商品浏览、购物车管理、在线支付、物流跟踪等核心功能。此源码以微信小程序为载体,具有轻便、快捷的特点,便于用户在手机上随时随地进行购物。源码简洁高效,易于商家进行个性化定制,以满足特定的业务需求。通过使用百货商城小程序源码,商家可以迅速拥有一个功能完善的移动端商城,为用户提供便捷的购物体验,从而促进销售增长。

2024-04-27

pyhon小游戏+碰撞检测+贪吃蛇+练手

玩法介绍: 回车键:开始游戏 空格键:暂停 / 继续 运行前,请安装pygame包:pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple pygame 贪吃蛇这个游戏很简单,屏幕上随机出现一个点,表示“食物”,上下左右控制“蛇”的移动,吃到“食物”以后“蛇”的身体加长,“蛇”碰到边框或自己的身体,则游戏结束。 我们先来分析一下,要写出这个游戏来需要注意哪些点。 1、蛇怎么表示 我们可以将整个游戏区域划分成一个个的小格子,由一组连在一起的小格子组成“蛇”,我们可以用不同的颜色来表示,如上图中,我以深色表示背景,浅色表示“蛇”。 我们可以用坐标来表示每一个小方格,X 轴和 Y 轴的范围都是可以设定好的。用一个列表来存放“蛇身”的坐标,那么一条“蛇”就出来了,最后只要显示的时候以不同的颜色表示即可。 2、蛇怎么移动? 第一反应就是像蚯蚓蠕动一样,每一个小方块向前移动一格,但这样实现起来很麻烦。一开始就是被这里卡住了。

2024-03-16

Linux常用命令大全(从入门到精通)

在开源世界中,Linux操作系统凭借其稳定、高效和强大的特性赢得了广泛的赞誉。而掌握Linux命令行工具是每位Linux用户必备的基本技能,它能极大地提升系统管理、编程开发、运维部署等方面的工作效率。本文将对Linux的常用命令进行详尽解读,力求覆盖文件操作、系统信息查询、进程管理、搜索查找等多个维度,帮助您构建坚实的Linux命令行使用基础。 一、文件与目录操作 二、文件内容查看与编辑 三、系统信息查询与管理 四、搜索与查找 五、网络相关命令 六、其他常用命令 1. uname:查看系统信息,如uname -a可以输出详细的系统内核信息。 2. whoami:显示当前登录用户名。 3. id:显示用户的UID、GID及附加组信息。 4. pwd:打印当前工作目录路径。 5. top 或 htop:动态显示系统中各个进程的状态信息,包括CPU占用率、内存使用情况等。 6. ps:报告当前系统的进程状态,结合aux参数使用可以获取更多信息,如ps aux。

2024-03-05

音视频领域相关的基础知识

说到视频,大家自己脑子里基本都会想起电影、电视剧、在线视频等等,也会想起一些视频格式 AVI、MP4、RMVB、MKV等等。 但是我们如果认真思考这些应该就有很多疑问,比如以下问题: • mp4 和 mkv有什么区别 ? • 视频封装格式 和 解码格式 有什么区别? • 什么是H.264 ?什么是 mpeg ? 等等很多疑问,我们不知道这些问题的答案是因为我们没有去了解他们背后的东西,下面我会给大家分享当初我学习时候的整理的一些知识。 以下会介绍的内容: 一、光与颜色 二、电视制式 三、照相机与摄像机 四、声音 五、视频相关专业术语 六、视频的构成 七、播放一个网络上视频需要的步骤

2024-02-29

C&C++编程规范(超级实用)

1. 文件结构 1.1 版权和版本的声明 1.2 头文件的结构 1.3 定义文件的结构 1.4 目录结构 2. 程序版式 2.1 空行 2.2 代码行 2.3 代码行内的空格 2.4 对齐 2.5 长行拆分 2.6 修饰符的位置 2.7 注释 2.8 类的版式 3 命名规则 3.1 共性规则 3.2 Windows 应用程序命名规则 3.3 Linux 应用程序函数命名规则 4. 表达式和基本语句 4.1 运算符的优先级 4.2 复合表达式 4.3 if 语句 4.3.1 布尔变量与零值比较 4.3.2 整型变量与零值比较 4.3.3 浮点变量与零值比较 4.3.4 指针变量与零值比较 4.4 循环语句的效率 4.5 for 语句的循环控制变量 4.6 switch 语句 4.7 goto 语句 5. 常量 5.1 const 与#define 的比较 5.2 常量定义规则 6. 函数设计 6.1 参数的规则 6.2 返回值的规则 6.3 函数内部实现的规则 6.4 其它建议 6.5 使用断言 6.6 引用与指针的比较 软件测试系列 7 重载和内联 7.1 普通函数重载 7.2 内联

2024-02-13

软件开发培训之深度学习基本概念和原理

第一阶段: 模拟人类神经元 感知机模型 第二阶段: 分布式知识表达 神经网络反向传播 非线性分类 卷积神经网络 第三阶段: 海量数据 计算性能大幅提升 深度神经网络兴起 一个标准的卷积神经网络,主要包括:输入层(Input Layer)、卷积层(Convolutional Layer)、池化层(Pooling Layer)、激活层(Activation Layer)、全连接层(Fully Connected Layer)、损失层(Loss Layer)。 深度学习框架:Caffe/Caffe2、TensorFlow、MXNet、PyTorch等。 基本原理: 1、神经网络由其权重来参数化。 2、损失函数用来衡量网络输出结果的质量。 3、将损失值作为反馈信号来调节权重。 4、前向传播与反向传播。 5、梯度下降法。

2024-02-13

软件开发培训之如何编写优雅的代码

何为优雅的代码? □ 遵守规范 优雅的代码,首先让人看起来就是很整洁的。而这种整洁,则来源于代码规范。严格地遵守代码规范,是提高且保证代码质量的最有效方法。从个人开发的角度来看,一份良好的代码规范,能够对代码整洁起到指导帮助作用。从多人协作的角度来看,统一的代码规范能够有效减少沟通的阻碍。 □ 逻辑清晰 代码是逻辑的产物。编写代码时,业务相关的逻辑一定要清晰明确,不能模棱两可。除此之外,对于所定义的变量、代码块、数据结构、方法、类、模块等,也要有逻辑地组织它们。 □ 严谨可靠 严谨的代码,才能保证它的可靠性,减少bug的发生几率。一份代码即使严格遵守了代码规范,但思考不全面,逻辑不严谨,到处都是各种漏洞和bug,也不能称之为优雅。 □ 平均来说,一次编写的代码会被阅读十次,所以尽力保持代码优雅是有意义的。当养成习惯之后,你会发现基本不需要花什么力气,更优雅、更具维护性的代码很快就会产生收益。 □ 优雅的代码有助于理解开发语言、模式和架构,也有利于提升开发水平。

2024-02-13

软件开发培训之JavaScript ES6介绍

ES6,全称ECMAScript 6.0,正式名称为ECMAScript 2015,是JavaScript的下一个版本标准,于2015年6月17日发布。它的目标是使得JavaScript语言可以用来编写复杂的大型应用程序,成为企业级开发语言。 1997年,ECMAScript 1.0诞生。 1998年6月,ECMAScript 2.0诞生,包含一些小的更改,用于同步独立的ISO国际标准。 1999年12月,ECMAScript 3.0诞生,在业界得到了广泛的支持,它奠定了JS的基本语法。 2000年的ECMAScript 4.0是ES6的前身,但由于这个版本太过激烈,所以暂时被“和谐”了。 2009年12月,ECMAScript 5.0版正式发布。ECMA专家组预计ECMAScript的第五个版本会在2013年中期到2018年作为主流的开发标准。2011年6月,ES 5.1版发布,并且成为ISO国际标准。 2013年,ES6草案被冻结,不再添加新的功能,新的功能将被放到ES7中。 2015年6月,ES6正式通过,成为国际标准。 ES6新特性包括:let关键字、const关键字等。

2024-02-13

软件开发培训之TypeScript简介

□ TypeScript起源于使用JavaScript开发的大型项目。由于JavaScript语言本身的局限性,难以胜任和维护大型项目开发,因此微软开发了TypeScript,使得其能够胜任开发大型项目。 □ TypeScript是微软开发的一个开源的编程语言,通过在JavaScript的基础上添加静态类型定义构建而成。TypeScript通过TypeScript编译器或Babel转译为JavaScript代码,可运行于任何浏览器,任何操作系统。 □ 2012年10月,微软发布了首个公开版本的TypeScript。2013年6月19日,在经历了一个预览版之后,微软发布了正式版的TypeScript。 □ TypeScript的作者是安德斯·海尔斯伯格,他也是C#的首席架构师。 TypeScript是一种给JavaScript添加特性的语言扩展,是JavaScript 的一个超集。 具体特性包括:类型批注、接口、装饰器、模块、类、泛型等。

2024-02-13

软件开发培训之如何理解设计模式

□ 设计模式描述了在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一次地使用该解决方案而不必重复劳动。 □ 设计模式实际上就是类与相互通信的对象之间的组织关系,包括它们的角色、职责、协作方式等方面。 □ 设计模式通常和面向对象编程结合起来使用。面向对象设计模式是“好的面向对象设计”,所谓“好的面向对象设计”是指那些可以满足 “应对变化,提高复用”的设计。 □ 现代软件设计的特征是:需求频繁变化。设计模式的要点是:寻找变化点,然后在变化点处应用设计模式,从而来更好地应对需求的变化。 □ 软件开发是一项实践工作,最直接的方法就是编程。没有从来不下棋却熟悉定式的围棋高手。掌握设计模式是水到渠成的事情,不要强求。随着理论和实践的不断积累,可能会“渐悟”或者“顿悟”。 □ 设计模式解决的是设计不足的问题,但同时也要避免设计过度。一定要牢记简洁原则,要知道设计模式是为了使设计简单,而不是更复杂。如果引入设计模式使得设计变得复杂,只能说我们把简单问题复杂化了,问题本身不需要设计模式。

2024-02-13

软件开发培训之深度学习简介

人工智能(Artificial Intelligence),英文缩写为AI。它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。 机器学习(Machine Learning)是指用某些算法指导计算机利用已知数据得出适当的模型,并利用此模型对新的情境给出判断的过程。 深度学习(Deep Learning)的概念源于人工神经网络的研究,它通过组合低层特征形成更加抽象的高层特征,以发现数据的分布式特征表示。 1、深度学习的发展历程。 2、深度学习的应用领域。 3、深度学习的未来展望。

2024-02-13

软件开发培训之64位程序开发注意事项

□ 64位Windows系统下也能运行32位程序,是因为有一个WOW64子系统。它能将32位应用程序的API调用转换成对原生64位系统的调用。正是因为WOW64的存在,32位应用程序在64位系统下并不能发挥最佳的性能,反而比在32位系统下有大约2%的性能损失。如果开发的是64位应用程序,则不需要依赖WOW64运行,并可带来大约5%-15%的性能提升(5%-10%由于采用了64位架构,1%-5%由于未使用WOW64)。 □ 32位程序的最大地址空间是4GB,64位程序的最大地址空间是可以大于4GB的。 □ 64位程序不再区分cdecl、stdcall等各种调用方式。gcc在64位下面,不再支持__attribute((cdecl))__和__attribute((stdcall))__。 □ 64位程序不再使用ESP,而是使用增加的几个64位寄存器,因为ESP不支持64位空间的栈。 □ 虽然在64位Windows系统下可以运行64位和32位进程,但是64位代码和32位代码不能在相同进程上运行。你的代码要么全部是64位,要么全部是32位,要加载的库和组件也要满足这一要求。

2024-02-13

软件开发培训之如何全面思考问题

□ 在软件开发中,对一个问题思考得越全面,编写出的代码就会越严谨,出现bug的几率就越低;反之,如果没有对一个问题进行全面而深入的思考,编写出的代码就会漏洞百出,出现各种莫名其妙、无法复现的bug的几率也就急剧增加。 实例1:输入若干个整数作为数组,将数组中每一个元素除以第一个元素的结果,作为新的数组元素值。 实例2:封装一个函数,用于实现内存拷贝,函数原型如下: void *memcpy(void *dest, const void *src, size_ 实例3:在嵌入式软件开发中,通常将用户的一些选项配置保存到Flash中的特定区域。实际使用时,嵌入式硬件经常会发生异常断电等情况,如果此时正在将选项配置写入Flash,则会导致选项配置数据被损坏。一般采用掉电备份机制来解决该问题,请简要叙述该机制的工作原理。 实例4:蚂蚁爬杆问题。 实例5:我们的模组进行升级时,支持升级uboot、内核、根文件系统和程序。以升级程序为例,我们在升级时的大致流程是什么样的?有哪些需要注意的地方?

2024-02-13

软件开发培训之指针使用注意事项

□ C语言之父丹尼斯·里奇曾说过:“C语言诡异离奇,陷阱重重,却获得了巨大成功!”这句话一方面体现了C语言的灵活性以及广泛的使用,另一方面也体现了C语言的复杂性。在使用C/C++遇到的所有陷阱和问题中,和指针相关的占了绝大部分。 □ C/C++是灵活度和自由度较大的编程语言,指针更是让程序员可以越过安全的栅栏,对某些内存区域进行破坏性访问,从而引发安全风险和严重问题。 □ C/C++的指针是一把双刃剑,为我们带来灵活性的同时,也带来了各种各样的问题(使用不当的话)。有人曾统计过,C/C++程序员处理的所有bug中,有一半是由指针引起的bug。可想而知,指针中包含的陷阱是多么可怕。 □ 要想在编写代码的时候尽可能避免指针带来的各种陷阱和问题,就需要知道不恰当地使用指针到底会引发哪些问题, 为什么会引发这些问题,以及如何去解决这些问题。 1、使用空指针 2、使用指向随机内容的指针 3、使用野指针 4、不恰当的指针声明 5、访问指针越界或溢出 6、内存泄露

2024-02-13

软件开发培训之结构体使用注意事项

1、结构体变量初始化。 (1)顺序初始化。 (2)指定初始化。 (3)构造函数初始化。 2、结构体变量赋值。 3、结构体对齐,包括: (1)字节对齐。 (2)协议设计中的字节对齐。 (3)Win32平台下的微软C编译器的对齐策略。 (4)GNU GCC编译器的对齐策略。 (5)含位域的结构体对齐。 (6)字节对齐测试。 (7)结构体对齐总结。

2024-02-13

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

TA关注的人

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