![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
程序员认知
文章平均质量分 63
提升程序员认知水平
逍遥郎wj
凡读必记
展开
-
程序员认知(零)学习能力
作为一名程序员,学习能力体现在三个地方:1、看书读文档2、动手写代码3、熟练使用搜索引擎原创 2021-03-30 16:26:27 · 145 阅读 · 0 评论 -
【转载】原码、反码和补码;位运算
原码、反码、补码。位操作符转载 2023-01-13 12:02:28 · 174 阅读 · 0 评论 -
计算机工作原理
1、储存在计算机中的所有内容都是数字。指令集中的每条指令都有一个数字码。2、计算机程序最终必须以数字指令码(即,机器语言)来表示。原创 2022-07-23 06:04:34 · 703 阅读 · 0 评论 -
C#语言编译:并与C/C++对比
C#语言在.NET中,编译分为两个阶段:(1) 将源代码编译为Microsoft中间语言(CIL)。(2) CLI把CIL编译为平台专用的代码。不仅是编译问题:程序执行问题C#程序还需要在一个代理(托管)的上下文中执行。 负责管理C#程序执行的代理就是:虚拟执行系统(Virtual Execution System,VES) 更通俗称呼为:“运行时”。运行时:负责加载和运行程序,并在程序执行时提供额外的服务。如下图:是C#编译执行情况。C#与C/C++...原创 2022-05-31 18:47:17 · 425 阅读 · 0 评论 -
一切皆地址
一切皆地址:变量(数据)是以某个地址为起点的一段内存中所存储的值; 函数(算法)是以某个地址为起点的一段内存中所存储的一组机器语言指令。程序的本质,就是:数据+算法。数据存储在变量中,或者说变量代表着数据。函数代表的是算法。变量的本质:是以变量名所对应的内存地址为起点的一段内存,内存中存储的就是变量的数据。这段内存有多大,是由变量的数据类型所决定的。所以说:变量是地址。函数的本质,是以函数名所对应的内存地址为起点的一段内存,在这段内存中,存储的不是某个值,而是一组机器语言指..原创 2022-04-21 13:59:39 · 112 阅读 · 0 评论 -
C/C++程序编译过程与运行过程
程序编译过程:程序运行过程:原创 2022-04-01 20:10:22 · 824 阅读 · 0 评论 -
操作系统对线程的调度问题;CFS
线程调度涉及硬件和操作系统(OS)。可以参考阅读:Linux进程调度-------O(1)调度和CFS调度器对于OS来说,始终绕不过一个问题:来了一堆线程,操作系统如何调用:线程调度器。最早先的做法:平均分配,一个线程分配10ms。时间 轮 片。这样不公平,因为有些线程需要优先处理,有些线程不着急。有些线程需要独占,有些线程需要实时。Linux的做法是:优先考虑优先级,兼顾等待时间的方法。叫做:CFS(complete fair schedule)算法。优先级最高的优先给时间片;原创 2022-02-07 17:59:48 · 334 阅读 · 0 评论 -
DCL锁双重检查;
学习来源于:B站马士兵视频:《计算机底层原理》DCL:Double check lock。其本质是为了解决多线程中语句执行不确定性。你也不知道当前其他线程进行到哪里,哪里都有可能。比如在单例模式中,需要判断单例对象是否已经存在,if如果单例存在:则返回单例。否则else就去new一个单例。这样做有一个问题:当涉及到多线程时,可能有多个线程同时来判断单例是否存在,此时,有两个甚至多个线程同时判断为不存在,则多个线程都会去创建单例。这样还是很多对象。如何避免,首先考虑加锁,即判断单例原创 2022-02-07 18:01:09 · 1212 阅读 · 0 评论 -
程序员认知(三)静态类型和动态类型
静态类型与动态类型:变量的类型,何时确定?变量的类型计算机中的语言都是0和1组成的,对计算机来说,所有的数据都是0和1。但是对人类来说,如果直接处理001010等数据不太方便、太困难、不直观。为了方便程序员进行编程。就有了变量和类型的概念。我们给一段01010起一个名字。这段数码就被称为名字a。程序员用这个名字a代指这段数据。这个名字被称为变量。这个变量他有名字,他有数据,而且也有类型,这个类型,这个类型规定了这段01010数码有多长。何时确定?有些语言写代码的时候就把类型确原创 2021-04-22 18:54:30 · 467 阅读 · 3 评论 -
C#学习笔记(二十七)泛型委托配合lambda用到极致的例子
泛型委托配合lambda用到极致的例子。有这样一个方法:static void DoSomeCalc<T>(Func<T, T, T>func, T x, T y){ T res = func(x, y); Console.WriteLine(res);}先来分析一下这个函数: 函数返回值为void空。DoSomeCalc函数名称后面接了一个<T>泛型标识符。<T>标识待特化的类型。 整个DoSomeCalc函原创 2021-04-22 15:55:09 · 208 阅读 · 0 评论 -
六大设计原则SOLID:设计模式之母
面向对象设计OOD的SOLID原则:编码原则六大设计原则(SOLID)SOLID设计原则 S:SRP The Single Responsibility Principle 单一责任原则 O:OCP The Open Closed Principle 开放封闭原则 L:LSP The Liskov Substitution Principle 里氏替换原则 I:ISP THe Interface Segregation Principle.原创 2021-04-14 11:27:11 · 126 阅读 · 0 评论 -
程序员认知(一)数据、变量、数据类型、内存、表达式、指针、算法、数据结构、拆箱装箱
第一个认知:数据从《C#入门经典》(第8版)中引用一句话:计算机程序最基本的描述也许是“一系列处理数据的操作”。为进一步解释这一点:考虑一下我们的显示单元。我们常常比较熟悉屏幕上的内容,很难不把它设想为“移动的图片”。但实际上,我们看到的仅是一些数据的显示结果,其最初的形式是存储在计算机内存中的0和1数据流。因此我们在屏幕上执行的任何操作,无论是移动鼠标指针、单击图标或在字处理器中输入文本,都会改变内存中的数据。如果说计算机程序是对数据执行操作,则说明我们需要以某种方式来存储数据,需要某些原创 2021-03-08 08:40:49 · 577 阅读 · 2 评论 -
程序员认知(二)堆和栈
这两个概念我觉得讲的很好的地方在百度词条:堆(Heap)栈(Stack)。堆栈是一种数据结构。主要功能是暂时存放数据和地址。 堆(数据结构):堆可以被看成是一棵树,如:堆排序 栈(数据结构):一种先进后出的数据结构。 在Java中:栈(stack)与堆(Heap)都是Java用来在RAM中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置堆和栈。 栈 栈的优势是:存取速度比堆快,仅次于直接位于CPU中的寄存器。 缺点是:存在栈中的数据原创 2021-03-21 10:54:14 · 340 阅读 · 0 评论