首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏暴走的程序质检员

    CrashCourseComputerScience(2)-编程及操作系统

    CrashCourseComputerScience(2)-编程及操作系统 早期的编程方式 硬件编程方式的演变 1801年使用打孔卡的可编程织布机发明-->之后60年,程序员使用插线板编程-->1948 年使用内存进行编程,冯诺依曼结构Store-Programmer_Computer出现-->1980年出现面板编程,使用开关进行编程 冯诺依曼结构: 拥有CU,内存,ALU,data register ,使用编译器对编程语言进行翻译,一个程序可以翻译成多条二进制指令 1959年,通用编程语言COBOL出现,一次编译到处执行.1970s出现C,1990s出现Java,Python 编程语言 简单的编程语句 IC集成电路密度翻一番 因为光刻波长精度和量子隧穿效应,摩尔定律逐渐走向终结 18操作系统Operate System 操作系统OS拥有操作硬件的特殊权限,管理其他应用和程序,OS的目的让计算机自己运行 并取得了商业成功,同样用Basic语言进行编程 1980s,IBM使用了外部的处理器,系统造了自己的 PC,并取得了商业成功,使用开放式架构IBM兼容平台,用户可以自定义更换 IBM兼容的硬件.

    46110编辑于 2024-04-11
  • 来自专栏C++

    Linux系统编程:(三)基础指令详解(2

    前言 在 Linux 系统学习与运维过程中,指令是与系统交互的核心方式。相比于图形界面,命令行操作更高效、更灵活,尤其在服务器环境中,指令操作更是必备技能。 ) 2系统调用(如 open、write 等内核提供的接口) 3:库函数(如 printf、fread 等 C 语言库函数) 4:特殊文件(/dev 目录下的设备文件) 5:文件格式(如 passwd 示例 2:查看系统调用帮助 查看 fork 系统调用的帮助(系统调用位于第 2 章节): [whb@bite-alicloud test]$ man 2 fork 输出结果如下 b:返回上一页(部分系统支持)。 该用法广泛应用于实时查看应用程序日志、系统日志等场景。

    17810编辑于 2026-01-14
  • 【Linux系统编程】Ext2文件系统

    中是文件的东西,它们在linux中也是文件;其次一些在windows中不是文件的东西,比如进程、磁盘、显示器、键盘这样硬件设备也被抽象成了文件,你可以使用访问文件的方法访问它们获得信息;甚至管道,也是文件;网络编程中的 2,为什么要引入缓冲区机制 读写文件时,如果不开辟对文件操作的缓冲区,直接通过系统第哦啊用对磁盘进行操作(读、写等),那么每次对文件进行一次读写操作时,都需要使用读写系统调用来处理此操作,即需要执行一次系统调用 五,Ext2文件系统 1,宏观认识 我们想要在硬盘上储文件,必须先把硬盘格式化为某种格式的文件系统,才能存储文件。文件系统的目的就是组织和管理硬盘中的文件。 ext2文件系统会根据分区的大小划分为数个Block Group。 上图中启动块(Boot Block/Sector)的大小是确定的,为1KB,由PC标准规定,用来存储磁盘分区信息和启动信息,任何文件系统都不能修改启动块。启动块之后才是ext2文件系统的开始。

    14710编辑于 2025-12-30
  • 来自专栏专注网络研发

    系统编程语言Rust特点介绍(2)—— 所有权系统

    很抱歉,第2篇距离第1篇长达3个月。。。工作繁忙加上家里事多。。。不找客观原因了,咱们开始聊聊Rust的所有权系统。 Rust的所有权系统主要有3个特性组成:Ownership(所有权)、Borrowing(借用)和Lifetimes(生命周期)。 (gc对于系统应用来说,是一个比较可怕的难题。因为你很难控制gc造成的性能抖动。) 每一个变量的值,有且只有一个owner。 符合预期出现编译错误,再次验证Rust的所有权系统,是不能允许有两个变量有同时修改一个值的可能性。 至此,对于Rust的ownership,我想大家已经有了一定的认识了。 Rust的所有权系统中的lifetime,只能等待另外一篇文章介绍了。另外,一些好奇的同学可能会想到,截止到目前为止,这些都是单线程程序。Rust如何在多线程,真正的并发编程下,保证的内存安全呢?

    1.5K30发布于 2020-02-03
  • 来自专栏nummy

    socket编程2】TCP编程

    大多数连接都是可靠的TCP连接。创建TCP连接时,主动发起连接的叫客户端,被动响应连接的叫服务器。 下面是一个客户端的例子:

    94410发布于 2018-08-27
  • 来自专栏changxin7

    2.并发编程编程

    multiprocessing模块用来开启子进程,并在子进程中执行我们定制的任务(比如函数),该模块与多线程模块threading的编程接口类似。   1,p.start()只是向操作系统发送一个请求而已,剩下的操作系统在内存开启进程空间,运行进程程序不一定是马上执行。 2,开启进程的开销是比较大的。 但这样就导致了问题,如果进程不调用wait / waitpid的话,那么保留的那段信息就不会释放,其进程号就会一直被占用,但是系统所能使用的进程号是有限的,如果大量的产生僵死进程,将因为没有可用的进程号而导致系统不能产生新的进程 q.full()) #满了 print(q.get()) print(q.get()) print(q.get()) print(q.empty()) #空了 View Code 生产者消费者模型 在并发编程中使用生产者和消费者模式能够解决绝大多数并发问题 ,但是操作系统都要做),这样反而会影响程序的效率。

    1.5K20发布于 2019-08-20
  • 来自专栏运维开发王义杰

    系统编程和网络编程

    系统编程和网络编程是计算机科学中的两个不同领域,它们的主要区别在于所解决的问题和所使用的技术。 1. 系统编程系统编程主要关注的是操作系统和硬件之间的交互,以及如何管理和控制系统的硬件资源。 系统编程可能涉及到处理器调度、内存管理、设备驱动、文件系统等等。在系统编程中,编程者需要对操作系统有深入的理解,并且需要熟悉处理底层的编程语言,例如C或者C++。 2. 网络编程: 网络编程则主要关注在网络环境中的通信。这包括了如何在网络中传输数据,如何建立和断开连接,如何处理网络错误等等。网络编程可能涉及到诸如TCP/IP、UDP、HTTP、FTP等协议。 在网络编程中,编程者需要理解网络协议和模型,而且需要能够处理网络编程的复杂性,比如并发和同步。 总的来说,系统编程和网络编程是两个需要不同专业知识和技能的领域。然而,它们也有一些交集。 例如,在进行网络编程的时候,可能需要进行一些系统级别的调用,例如创建套接字或者处理I/O。同样地,系统编程可能也需要处理一些网络相关的问题,例如在设备驱动中处理网络接口。

    64510编辑于 2023-08-10
  • 来自专栏窗户

    shell编程字库裁剪(2)——编程过程

      之所以想用shell实现,是因为shell是UNIX/LINUX的工作语言,可以实现很强大的功能,所以借此话题顺带讲一下shell编程的思路。 就嵌入的编程语言来说,awk/sed/bc这些算是shell“本家”的,而python/perl这些,不太像是shell本家的。    其中,(2)、(3)两个数组用结构体的方式合为一个数组,C语言的可读性更强一些。   那么,和其他的编程一样,我们先确定这个程序的框架: #! key2 = (unsigned short)chinese_font[mid].GBH<<8; key2 |= (unsigned key2 = (unsigned short)chinese_font[mid].GBH<<8; key2 |= (unsigned

    1.1K100发布于 2018-02-07
  • 来自专栏Golang语言社区

    实效go编程--2

    除了矩阵变换这类需要明确维度的情况外,Go中的大部分数组编程都是通过切片来完成的。 切片保存了对底层数组的引用,若你将某个切片赋予另一个切片,它们会引用同一个数组。 以下简单的例子 x := []int{1,2,3} x = append(x, 4, 5, 6) fmt.Println(x) 将打印 [1 2 3 4 5 6]。 fmt.Sprintf("%.2fEB", b/EB) case b >= PB: return fmt.Sprintf("%.2fPB", b/PB) case b >= TB: return fmt.Sprintf("%.2fTB", b/TB) case b >= GB: return fmt.Sprintf("%.2fGB fmt.Sprintf("%.2fKB", b/KB) } return fmt.Sprintf("%.2fB", b) } 表达式 YB 会打印出 1.00YB,而 ByteSize

    1.1K70发布于 2018-03-26
  • 来自专栏懒人的运维备忘录

    Shell 编程2)- 变量

    例如,常见的cd、ls等命令严格来说应该使用绝对路径如/bin/ls来执行,由于/bin目录加入到了PATH环境变量中,系统自己会去寻找PATH下的路径是否有该命令。 环境变量常用的大写字母表示。 2.变量的引用方式 $str 或 ${str},如echo "the var is ${str}" str='Hello,world!' echo '$#:'$# echo '$@:'$@ echo '$*:'$* echo '$0:'$0 echo '$1:'$1 echo '$2:'$2 echo '$3:'$3 echo '$4:' /var.sh $1:a $2:b $3:c $4:d 轮替变量 使用shift [N]可以指定参数轮替,每执行一次 shift N,就踢掉 N 个参数,默认 N=1。 2.脚本配置文件 配置文件中的变量值可以在脚本中被使用。

    1.1K00发布于 2019-01-25
  • 来自专栏码猴小明

    多任务编程 - 2

    此时系统把first_thread调度为“sleeping”状态,把second_thread转换为“running”状态,t2也获得g_num=0 然后second_thread对得到的值进行加1并赋给 g_num,使得g_num=1 然后系统又把second_thread调度为“sleeping”,把first_thread转为“running”。 3、区别对比 进程之间不共享全局变量 线程之间共享全局变量,但是要注意资源竞争的问题,解决办法:互斥锁或者线性同步 创建进程的资源开销要比创建线程的资源开销要大 进程是操作系统分配的基本单位,线程是CPU 进程和线程都是完成多任务的一种方式 多进程要比多线程消耗的资源多,但是多进程开发比单进程开发稳定性要强,某个进程挂掉不会影响其他的进程 多进程可以使用CPU的多核运行,多线程可以共享全局变量 如果前面还不太了解的朋友可以看看《多任务编程 - 1》哦 多任务编程 - 1 END

    57420编辑于 2022-01-20
  • 来自专栏世荣的博客

    渗透测试-编程-2

    Kali Linux系统预装了Python和Perl解释器,我是一直长期学习Python的,在这里分享一个Python程序. 这时候突然想到一个解决方案,那就是Python2中的raw_input()函数,Python3中和input()合并了,但是相比于后者,raw_input()返回的是字符,如此以来只需简单的修改代码,就可以 ,我们在Python2的环境中运行即可。

    39930编辑于 2022-03-22
  • 来自专栏老高的技术博客

    简单socket编程2

    上一节我们提到了socket编程的基本形式,这一节我们加强服务端的性能! #!

    28540编辑于 2022-12-28
  • 来自专栏菩提树下的杨过

    bashshell编程学习(2)

    "" if [ -n "$str2" ]; then echo 'str2 is not empty' else echo 'str2 is empty' fi printf "\n" if [ "$str1" = "$str2" ]; then echo 'str1 = str2' else echo 'str1 <> str2' fi 注: -n即-not empty判断字符串非空 <> str2' str1 <> str2 4.3 文件及目录判断 #! 解释:如果命令1返回成功,则命令2会执行,示例: #! 解释:这个正好跟&&相反,如果命令1返回失败,则执行命令2 #!

    71030发布于 2018-09-20
  • 来自专栏拭心的安卓进阶之路

    并发编程2:认识并发编程的利与弊

    从上篇文章 并发编程1:全面认识 Thread 我们了解了 Java 中线程的基本概念和关键方法。 2:响应更快 这一点想必小肉深有感悟: 家里快递来了,小肉会说:shixin,去取一下。我下去愚公移山的时候,她可以继续 shopping; 窗外有人吼卖樱桃喽,小肉会说:shixin,去买一点。 2:上下文切换的开销 当 CPU 调度不同线程时,它需要更新当前执行线程的数据,程序指针,以及下一个线程的相关信息。 这种切换会有额外的时间、空间消耗,我们在开发中应该避免频繁的线程切换。 2.在JAVA中,有六个不同的地方可以存储数据: 寄存器(register) 这是最快的存储区,因为它位于不同于其他存储区的地方——处理器内部。 有时,在嵌入式系统中,常量本身会和其他部分分割离开,所以在这种情况下,可以选择将其放在ROM中 非RAM存储 如果数据完全存活于程序之外,那么它可以不受程序的任何控制,在程序没有运行时也可以存在。

    97880发布于 2018-01-05
  • 来自专栏lsqingfeng

    面向对象编程2

    两个构造方法: 1.一个带有两个参数的构造方法,用于将width和height属性初化; 2.一个不带参数的构造方法,将矩形初始化为宽和高都为10。 两个方法: 求矩形面积的方法area() 求矩形周长的方法perimeter() (2)通过继承Rect类编写一个具有确定位置的矩形类PlainRect,其确定位置用 height = 10; } public double area() { return width*height; } public double perimeter() { return 2*

    46020编辑于 2021-12-13
  • 来自专栏Python编程 pyqt matplotlib

    PyQt 编程入门(六.2

    import QObject , pyqtSignal class CustSignal(QObject): signal1 = pyqtSignal() #声明无参数的信号 signal2 init__(parent) #将信号连接到指定槽函数 self.signal1.connect(self.signalCall1) self.signal2. connect(self.signalCall2) self.signal3.connect(self.signalCall3) self.signal4.connect emit(1) self.signal3.emit(1,"text") self.signal4.emit([1,2,3,4]) self.signal5 self,val): print("signal2 emit,value:",val) def signalCall3(self,val,text): print

    53150发布于 2019-08-14
  • 来自专栏高渡号外

    新手编程1001问(2

    新手编程1001问(2) Q:‍前端如何实现页面下拉框Select的联动? A:上一期,我们回答了JS/JQuery如何获取下拉框选中的文本和值。那么今天的问题,我们可以继续聊聊下拉框了。 案例:页面上有Select1和Select2,需求是Select2的列表数据依赖于Select1选中的值。 的值提交到服务端 myval:$(“#Select1”.val()) }, success:function(data){ } }); ‍ 再看JQuery代码: //首先清空Select2 Select2 .each(data, function (i, item) { ("<option></option>").val(item["myval"]).text(item["mytext"] 将Ajax获取的数据更新到Select2 //清空Select2控件 $(“#Select2”).empty(); ("<option></option>").val("").text("请选择

    9K40发布于 2020-09-22
  • 来自专栏全栈工程师修炼之路

    PS编程基础入门2

    1.数组创建 使用@()创建数组 使用@{}创建哈希表 PS > $array[email protected]() #空数组 PS > $array=1,2,3,4,5 #常规定义数组 元素2 元素3 元素4 2.数组访问 PS > $arr[0] #元素都是从0下标开始索引的 1 PS > $arr[($arr.Count-1)] #输出最后一个元素 8 PS > $arr [0,1,3,5] ##一次输出多个元素 (值得学习) 1 2 5 7 PS > $arr[($arr.Count)..0] #将数组逆序输出 (值得学习) 8 7 6 5 3 2 1 PS () #一个新的数组不是两个变量指向同一个数组 PS > $arr2.Equals($arr) #这里是为False False PS > $arr2[0]=1024 PS > $arr2 1024 2 3 强类型数组 描述:数组一般具有多态性,如果你不指定元素的具体类型,解释器会自动选择合适的类型存储每个元素。

    1.7K30发布于 2020-10-23
  • 来自专栏DBA随笔

    Python之函数编程2

    Python之函数编程(2) 1 函数作为返回值 在Python中,可以将一个函数作为另外一个函数的返回值,举个例子: ? 但是这样的参数传递还是有些不方便,自然而然会想到如果我们定义一个int2()的函数,默认把base=2传进去,就可以直接计算二进制的数值了,functool.partial就可以帮助我们创建这样的偏函数 ,我们可以利用下面的方法创建一个新的函数int2: ? 再看一个例子,当我们传入: max2=functools.partial(max,10)时,实际上是将10作为*args的一部分自动加到参数列表前面,如下: ? 我们发现在用max2函数求5,6,7的最大值的时候,直接返回10,其实是因为它相当于求 max(10,5,6,7)当中的最大值,所以结果也就可以解释了。

    60511发布于 2019-11-06
领券