- 博客(25)
- 资源 (5)
- 收藏
- 关注
原创 linux中的系统调用
前言:本文只讨论linux中的系统调用,不考虑windows等其他操作系统。两个问题:1.系统调用时,进程调用的是进程吗?答:进程调用的是操作系统的内核函数,不是进程。2.系统调用时,会出现上下文切换吗?答:会出现上下文切换,但和进程调度时的上下文切换还是有区别的。早期,内存使用的是哈佛结构,即程序和数据分开存储。到了现代,内存使用的是冯诺依曼结构,即程序和数据存储在一起。在linux中,内存又被分为两部分:内核部分和进程部分。内核部分归操作系统内核使用,进程部分归进程使用。出于安全考虑,进
2021-11-11 18:17:32
5137
原创 docker简述
Docker 是一个开源项目,这个项目旨在通过把应用程序和运行环境打包为可移植的、自给自足的容器。DocKer一次构建可放在任何linux环境就可以运行,不需要进行任何改变,DocKer 就类似于一个容器。这个容器就好像咱们常用的虚拟机一样,当我们虚拟机里面安装过VS、SQL、浏览器 … 之后咱们就把虚拟机镜像备份下来、等到下一次需要重新搭一个环境的时候,就可以省去很多事情了,直接把备份的虚拟机运行起来,该有的就都有了,省去了很多事情。 Docker 的镜像实际上由一层一层的文件系统组成,这种层级
2021-08-06 19:55:54
148
原创 如何才能成为一名优秀的软件开发者
了解cpu的人都知道,cpu是没有智力的,它只会做两件事:读取指令和执行指令。而且,任何机器的指令数都是有限的。可是从事软件开发的人都知道,编程语言有很多,用编程语言开发出来软件更是多如牛毛。那软件的本质是什么?答案其实很简单:软件的本质是人的思想。大到各种框架,小到一个方法,无一不是人类的思想以代码的形式体现出来。所以,如果你想成为一个优秀的软件开发者,你一定要广泛而且深入地学习和掌握各种处理问题的方法技巧,这些都是思想的来源之一。为什么说是之一?因为除了学习和模仿之外,你可以将别人的思想打磨成更优秀的
2021-08-04 00:45:56
613
原创 Nginx高并发简述
简要说明:1)nginx启动时,会生成两种类型的进程,一个是主进程(Master),一个(windows版本的目前只有一个)或多个工作进程(Worker)。主进程并不处理网络请求,主要负责调度工作进程,也就是图示的三项:加载配置、启动工作进程及非停升级。所以,nginx启动以后,查看操作系统的进程列表,我们就能看到至少有两个nginx进程。2)服务器实际处理网络请求及响应的是工作进程(worker),在类unix系统上,nginx可以配置多个worker,而每个worker进程都可以同时处理数以千计..
2021-07-31 15:35:12
480
原创 防火墙漫谈
1.iptables是什么?参考:https://www.zsythink.net/archives/category/%e8%bf%90%e7%bb%b4%e7%9b%b8%e5%85%b3/iptables/page/22.iptables和firewall的区别,以及它们和netfliter的关系?参考:https://www.cnblogs.com/mefj/p/13328360.html3.k8s为何用ipvs取代iptables?https://blog.youkuaiyun.com/qq_36
2021-07-30 23:29:34
134
原创 计算机网络简述
1.七层OSI协议?2.四层TCP/IP协议?3.网络的实现?说明:1.局域网内的主机和路由器内部有一张由ARP和DHCP(内部包含RARP)维护的IP地址和MAC地址的映射表。2.交换机内部有一张端口和MAC地址的映射表。3.路由器内部还有一张路由表,记录目的主机所在网络和下一跳地址之间的映射关系。4.数据在网络上传输的过程中,源IP地址和目的地IP地址是不会发生改变的,而源MAC地址和目的地MAC地址则通常会发生改变(除非通信只发生在同一局域网内)。4.路由器工作原理?路由
2021-07-30 17:04:31
163
原创 构建docker镜像报错:Cannot retry request with a non-repeatable request entity: Connection reset by peer
“C:\Program Files\Java\jdk1.8.0_211\bin\java” -Dmaven.multiModuleProjectDirectory=C:\Users\Administrator\Desktop\jenkins-demo “-Dmaven.home=C:\Program Files\apache-maven-3.3.9” “-Dclassworlds.conf=C:\Program Files\apache-maven-3.3.9\bin\m2.conf” “-javaagen
2021-06-03 13:41:46
1272
原创 maven漫谈二
pom.xml配置文件详解几个重点:1.profile在实际的项目开发中,通常会有很多配置环境,比如最基本的:开发、测试、生产;不同的环境,某些文件的配置是不一样的(如:数据库连接信息、properties文件的配置等),如果我们进行开发或者测试时每次都得手动去修改配置文件,难免有些麻烦且容易出现问题所以,maven的profile功能就出现了。简单说一下,maven的profile可以让我们定义一系列的配置信息,然后指定其激活条件。这样我们就可以定义多个profile,然后每个profile对应不
2021-04-30 21:39:59
219
1
转载 maven漫谈一
当我们构建一个maven项目时,如mvn clean install,会根据maven lifecycle(生命周期)以及传入的phase(阶段)或goal(目标)对项目进行编译打包。Maven的lifecycle、phase和goal的基本关系如下图Maven的生命周期maven项目中内置了三个常用的lifecycle生命周期(lifecycle) 描述default 构建的核心部分,进行项目的编译,测试,打包,部署等clean 项目构建之前对项目进行一些基本的清理工作site
2021-04-28 23:56:41
258
原创 spark漫谈二
一、几种提交方式的区别1.local模式1)怎么开启local模式?几乎不用修改任何配置,就是local模式。2)怎么进入local模式?执行spark-shell、spark-submit、spark-sql时,如果指定–master的参数为local或者不指定–master,即使项目已经部署成standalone等模式,都会进入local模式。此外:开启spark-shell、spark-sql会相当于开启一个spark应用,实质会开启一个sparkSubmit进程,同时可以通过4040端口
2021-04-08 23:11:03
308
原创 spark漫谈一
在IT的世界,技术种类繁杂,多如牛毛,每当我们遇到一种技术时,如何快速有效地学习并掌握技术,是每一个IT从业人员必须要面对的问题。在我看来,在学习任何一种技术时,有一个问题是值得我们先提问和思考的,那就是”为什么这种技术会出现?“。因为只有当我们认真严肃地去思考这个问题时,我们才会豁然开朗地发现,原来任何一种技术的出现,都有其特殊的需求和特定的背景。 以分布式计算框架spark为例,在其出现之前,世面上已经有分布式计算框架Mapreduce的存在。但是MapReduce存在自身无法克服的一些...
2021-03-28 21:44:36
242
原创 报错:java.lang.NoSuchMethodError: org.apache.hadoop.hive.serde2.SerDeUtils.initializeSerDe
最开始报错:java.lang.NoSuchMethodError: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe.initSerdeParams解决办法:javap -classpath hive-serde-0.13.1.jar org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe | grep initSerdeParams发现类LazySimpleSerDe 中有方法initSerdePa
2021-03-19 21:53:31
2423
原创 Java线程怎么实现的?
在说Java线程前,先说ucosii和linux两个操作系统。Ucosii操作系统中的任务不能算是进程,因为它们共用内存空间(所有任务的控制块是通过链表串在一起的。),所以只能算是线程。ucosii对线程的管理(创建、删除、挂起、调度等)主要通过几个相关的函数来实现,这些函数基本上是围绕几个重要的数据结构展开操作的。Linux操作系统中的任务则算是进程。其管理进程的方式和ucosii管理线程的方式是异曲同工。再来说Java中的线程。Java管理线程的方式和ucosii管理线程的方式直观上看上去不太一样
2021-02-03 17:14:42
167
原创 Tomcat处理HTTP请求高并发原理剖析
Tomcat处理HTTP请求过程分析一、Tomcat是什么?Tomcat是一个web应用服务器,是一个Servlet/Jsp容器,主要负责将客户端请求传递给对应的Servlet,并且将Servlet的响应数据返回给客户端。Tomcat是基于组件的服务器。二、Tomcat体系结构Tomcat是一个基于组件的服务器,它的构成组件都是可配置的。其各个组件都在Tomcat安装目录下的…/conf/server.xml文件中配置。<?xml version="1.0" encoding="UTF-8
2021-02-01 12:43:19
2308
转载 C语言中的数组和指针汇编代码关系分析
今天看《程序员面试宝典》时偶然看到讲数组和指针的存取效率,闲着无聊,就自己写了段小代码,简单分析一下C语言背后的汇编,可能很多人只注重C语言,但在实际应用当中,当出现问题时,有时候还是通过分析汇编代码能够解决问题。本文只是为初学者,大牛可以飘过~#include “stdafx.h”int main(int argc, char* argv[]){ char a=1; char c[] = "1234567890"; char *p = "1234567890"; a =
2021-01-30 20:24:24
431
原创 为什么说Ucosii是可剥夺型内核?
为什么说Ucosii是可剥夺型内核?它总是让所有处于就绪态中优先级高的任务先运行。个运行着的任务使一个比它优先级高的任务进入了就绪态, 当前任务的 CPU 使用权就被剥夺了, 或者说被挂起了, 那个高优先级的任务立刻得到了 CPU 的控制权。 它是怎么实现这一点的呢?ucosii依靠系统时钟开达到目的。ucosii与大多数计算机系统一样,用硬件定时器产生一个周期为毫秒级的周期性中断来实现系统时钟。两次中断之间相隔的时间就是最小时钟单位,称为时钟节拍。硬件定时器以时钟节拍为周期定时产生中断。系统接收到中断请
2021-01-29 08:24:00
858
1
原创 linux进程的内存空间是独立的
Linux操作系统采用虚拟内存管理技术,使得每个进程都有各自互不干涉的进程地址空间。该空间是块大小为4G的线性虚拟空间,用户所看到和接触的都是该虚拟地址,无法看到实际的物理内存地址。利用这种虚拟地址不但能起到保护操作系统的效果(用户不能直接访问物理内存),而且更重要的是用户程序可使用比实际物理内存更大的地址空间(具体的原因请看硬件基础部分)。在讨论进程空间细节前,请大家这里先要澄清下面几个问题。 第一、4G的进程地址空间被人为的分为两个部分——用户空间与内核空间。用户空间从0到3G(0xC0000
2021-01-25 11:40:49
1533
原创 linux 系统调用read 剖析
简介: 大部分程序员可能会有这样的疑问:当在程序中调用库函数 read 时,这个请求是经过哪些处理最终到达磁盘的呢,数据又是怎么被拷贝到用户缓存区的呢?本文介绍了从 read 系统调用发出到结束处理的全过程。该过程包括两个部分:用户空间的处理、内核空间的处理。用户空间处理部分是系统调用从用户态切到内核态的过程。内核空间处理部分则是 read 系统调用在 linux 内核中处理的整个过程。Read 系统调用在用户空间中的处理过程Linux 系统调用(SCI,system call interface)的实
2021-01-10 20:20:23
1684
2
原创 一行 Java 代码是怎么执行的?
作用:JVM:JVM有自己完善的硬件架构,如处理器、堆栈(Stack)、寄存器等,还具有相应的指令系统(字节码就是一种指令格式)。JVM屏蔽了与具体操作系统平台相关的信息,使得Java程序只需要生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。JVM是Java平台无关的基础。JVM负责运行字节码:JVM把每一条要执行的字节码交给解释器,翻译成对应的机器码,然后由解释器执行。JVM解释执行字节码文件就是JVM操作Java解释器进行解释执行字节码文件的过程。Java编译器:.
2021-01-10 12:37:56
456
原创 restful、HTTP、TCP、socket之间的关系
1.HTTP和TCP之间的关系?举个例子:一个浏览器(客户端)向服务器(服务端)请求一个万维网文档的过程就是一次HTTP请求的过程。首先,客户端要和服务端建立TCP连接,这需要使用三次握手,又称三报文握手。当三次握手的前两部分完成后(即经过一个RTT时间后),最精彩之处来了,客户端会把HTTP请求报文作为第三次握手的报文的数据发送给服务端,服务端再收到HTTP请求报文后,TCP连接建立了,而且还拿到了HTTP请求报文。接着,服务端收到HTTP请求报文后,就把所请求的文档作为响应报文返回给客户端。解释:
2021-01-09 16:41:53
2803
原创 操作系统怎么来的?
1.操作系统怎么来的?没有操作系统之前,计算机处于裸机状态。想要控制计算机,程序员必须要在熟悉计算机硬件所有细节的基础上精于汇编语言程序设计,通过汇编语言程序来控制计算机。但是,时间长了,人们发现实现硬件操作的汇编语言程序模块具有通用性,可以将这些模块通过接口的形式作为一种通用的软件提供给用户,用户在装有这种通用软件的计算机上来编写高级语言程序就非常容易。这种提供了一些例程接口,从而使应用程序可通过这些接口对计算机进行操作的软件,叫做计算机硬件的抽象层HAL。HAL作为操作系统的最底层,是对计算机硬件的第
2021-01-09 12:01:13
1369
2
ucosii移植PC.rar
2021-01-29
zendStudio13.6.0 64位安装包及破解工具
2017-05-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人