计算机基础
BS有前途
Everything will be better
展开
-
IP地址及子网掩码
准备软考的总结:话不多说,上图看不明白吧?看不明白就自己去看啊,这东西挺重要的原创 2018-11-05 08:34:21 · 207 阅读 · 0 评论 -
文件描述符简介
内核(kernel)利用文件描述符(file descriptor)来访问文件,内核用文件描述符标识一个特定进程正在访问的文件.当打开一个现有文件或创建一个新文件时,内核向进程返回一个文件描述符。当读、写一个文件时,使用 open 或 create 返回的文件描述符标识该文件,将其作为参数传送给 read 或 write。按照惯例,UNIX 系统 shell 把文件描述符 0与进程的...转载 2019-03-11 11:02:24 · 534 阅读 · 0 评论 -
进程间通讯之socket详解
1.TCP/IP 在学习socket之前,先简单了解一下TCP/IP协议族,这样更有助于理解socket在网络编程中所处的位置。 TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间协议,定义了主机如何连入因特网及数据如何再它们之间传输的标准,从字面意思来看TCP/IP是TCP和IP协议的合称,但实际上TCP/...转载 2019-03-11 22:16:50 · 1422 阅读 · 0 评论 -
简单解析B树(B-tree)与B+树
B-树就是B树引言:二叉查找树时间复杂度为O(logN),效率很高,但是由于磁盘IO要求,我们需要一种矮胖的结构来减少加载磁盘页(每个磁盘页随影树的节点)的次数,提高磁盘IO效率,因此就有了B树和B+树.称为多路查找树.B树:一个m阶的B树具有如下几个特征:B树中所有结点的孩子结点最大值称为B树的阶,通常用m表示。一个结点有k个孩子时,必有k-1个关键字才能将子树中所有关键字划分...转载 2019-03-12 12:00:33 · 362 阅读 · 0 评论 -
三次握手和四次挥手过程 握手为什么三次,挥手为什么是四次?
在了解三握四挥之前,有必要了解TCP连接的各个状态以及标志位:TCP连接的各种状态以及标志位详解三次握手:假设 A 为客户端,B 为服务器端。 首先 B 处于 LISTEN(监听)状态,等待客户的连接请求。(A:CLOSED B:LISTEN) A 向 B 发送连接请求报文,SYN=1,ACK=0,选择一个初始的序号 x。(A:SYN_SEND B:LISTE...原创 2019-03-12 13:25:05 · 1103 阅读 · 0 评论 -
TCP流量控制和拥塞控制
在理解流量控制和拥塞控制之前,有必要了解一下TCP可靠传输和滑动窗口:TCP可靠传输和滑动窗口流量控制:流量控制是为了控制发送方发送速率,保证接收方来得及接收。接收方发送的确认报文中的窗口字段可以用来控制发送方窗口大小,从而影响发送方的发送速率。将窗口字段设置为 0,则发送方不能发送数据。拥塞控制:如果网络出现拥塞,分组将会丢失,此时发送方会继续重传,从而导致网络拥塞程度更高...转载 2019-03-12 13:27:58 · 322 阅读 · 0 评论 -
进程和线程的区别,进程间通信方式,怎么选择比较好
此篇文章讲解比较多,面试记住原理特点应该差不多了进程和线程的区别进程进程是资源分配的基本单位。进程控制块 (Process Control Block, PCB) 描述进程的基本信息和运行状态,所谓的创建进程和撤销进程,都是指对 PCB 的操作。下图显示了 4 个程序创建了 4 个进程,这 4 个进程可以并发地执行。线程线程是独立调度的基本单位。一个进...转载 2019-03-12 13:31:53 · 1651 阅读 · 0 评论 -
僵尸进程,孤儿进程,守护进程解释
此篇文章只是大概讲解了相关原理,以后会补充背景知识孤儿进程一个父进程退出,而它的一个或多个子进程还在运行,那么这些子进程将成为孤儿进程。孤儿进程将被 init 进程(进程号为 1)所收养,并由 init 进程对它们完成状态收集工作。由于孤儿进程会被 init 进程收养,所以孤儿进程不会对系统造成危害。僵尸进程一个子进程的进程描述符在子进程退出时不会释放,只有当父进程通过...转载 2019-03-12 13:34:37 · 2618 阅读 · 0 评论 -
常见排序算法有哪些 时间复杂度
对于这个问题,老生常谈,但是也不容易记,找一篇比较好的分享给大家但是大家尽量做到能徒手写出来常见的排序算法 冒泡 快排 归并应该是最常考的本文中的代码为本人所写,不追求简洁,只追求易懂时空复杂度 各种常用排序算法 排序方法 时间复杂度 空间复杂度 稳定性 复杂性 ...原创 2019-03-12 20:12:15 · 2452 阅读 · 0 评论 -
进程上下文与中断上下文
关于操作系统用户态与内核态:Linux之用户态和内核态上下文context:通俗讲就是程序运行时周围的环境用户空间的应用程序,通过系统调用,陷入内核空间.这个时候用户空间的进程需要传递很多的变量,参数的值给内核,内核态运行时也要保存用户进程的一些寄存器值,变量等.所谓的"进程上下文",可以看做是用户进程传递给内核的这些参数以及内核要保存的那一套变量和寄存器值和当时的环境等.相对于进程而...转载 2019-03-23 12:29:08 · 349 阅读 · 0 评论 -
从文件系统角度分析文件读写过程
我们都知道为了安全,操作系统分为用户态和内核态,在进行I/O操作,修改基址寄存器内容等操作时,我们需要通过系统调用或者通过Shell以及库函数间接系统调用来执行进程的虚拟地址空间可分为两部分,内核空间和用户空间.内核空间是存放内核代码和数据,而进程空间存放用户程序代码和数据.不管是内核空间还是用户空间,他们都处于虚拟空间中,都是对物理地址的映射.虚拟文件系统:VFS同学在参加腾讯面试时...转载 2019-03-23 17:33:00 · 1006 阅读 · 0 评论 -
tomcat优化简单了解
同学被问到tomcat怎么优化?简单介绍一下从配置方面优化1,Tomcat内存优化,启动时告诉JVM我要一块大内存(调优内存是最直接的方式)Windows 下的catalina.batLinux 下的catalina.sh 如:JAVA_OPTS='-Xms256m -Xmx512m'-Xms<size> JVM初始化堆的大小-Xmx<size>...原创 2019-03-23 19:14:14 · 335 阅读 · 0 评论 -
简单分析各种JAVA内存溢出(OOM)
1,java.lang.OutOfMemoryError:Java heap space堆空间内存溢出常见原因:堆空间不足(根本原因) 数据量峰值,某个时间段数据量突然达到峰值,大于设计时的阈值 内存泄漏,不能回收的内存一直累积(比如局部变量一直增多)2,java.lang.OutOfMemoryError:GC overhead limit exceeded应用程序花...原创 2019-03-26 23:10:26 · 223 阅读 · 0 评论 -
解决哈希冲突的几种办法
1,开放地址法基本思想是发生冲突时,再使用另一种操作探测其他空位公式就是:H(key) = [H(key)+di] mod m,其中m为表长度,di就是我们说的另一种操作;di为再次探测时的地址增量;根据di的不同取法,有不同的称呼;线性探测再散列:di=1、2、3、4....k(k<m-1) 二次探测再散列:di=1^2,-1^2,2^2,-2^...原创 2019-04-01 19:13:03 · 265 阅读 · 0 评论 -
B树,B+树和红黑树
B树和B+树较为相似,B+树属于B树的变种,关于请阅读:简单解析B树(B-tree)与B+树对于红黑树,更为复杂,实在看不懂记不住,知道数据不只存放在叶子节点,通过左旋右旋来达到自平衡;有兴趣的可以访问:红黑树简介算了,看到腾讯实习面经都有问到,还是简单总结一下:(1)每个结点要么是红的要么是黑的。(2)根结点是黑的。(3)每个叶结点(叶结点即指树尾端NIL指针或NULL结点...转载 2019-03-14 08:51:23 · 332 阅读 · 0 评论 -
myisam和innodb的区别
1,MyISAM不支持事务,行级锁定和外键2,InnoDB不支持全文索引,而MyISAM支持。全文索引是指对char、varchar和text中的每个词(停用词除外)建立倒排序索引.3,MyISAM支持GIS数据,InnoDB不支持。即MyISAM支持以下空间数据对象:Point,Line,Polygon,Surface等。4,没有where的count(*)使用MyISAM要比Inn...转载 2019-03-14 08:50:03 · 172 阅读 · 0 评论 -
hanLP算法之一:TF-IDF算法记录
用来计算一个词在文章中的权重等…TF:词频,一个词在文章中出现的频率比如:"软件"在一篇文档中出现3次,这篇文档总共有100个单词,则词频(TF)为:3/100=0.03逆文档频率(IDF):该词在该文档集中多少篇文档出现,并取比例对数比如:"软件"一词在1000份文档中出现,该文档集中有10000000份文档,则**逆向文件频率(IDF)**为lg(10000000/1000)=4则该...原创 2018-11-08 10:52:04 · 1382 阅读 · 0 评论 -
hanLP算法之一:LDA算法记录
隐式狄利克雷分布,简称LDA,是一种概率主题模型.LDA算法的目的:计算文章所属的主题和他的类型.LDA是典型的词袋模型,即:**一篇文档是由一组词组成,词与词之间没有先后顺序关系.**一篇文档可以包含多个主题,文档中的每一个词都由某个主题生成...原创 2018-11-08 15:38:42 · 575 阅读 · 0 评论 -
sql函数相关
每个数据库相关的博客我都要写sql执行顺序:1.FORM: 对FROM的左边的表和右边的表计算笛卡尔积。产生虚表VT12ON: 对虚表VT1进行ON筛选,只有那些符合的行才会被记录在虚表VT2中。3.JOIN: 如果指定了OUTER JOIN(比如left join、 right join),那么保留表中未匹配的行就会作为外部行添加到虚拟表VT2中,产生虚拟表VT3, rug from子句中...原创 2018-11-08 17:06:10 · 135 阅读 · 0 评论 -
Mysql case when 实现行转列以及为什么要用max()或者其他聚合函数
作者:u014180504来源:CSDN原文:https://blog.csdn.net/u014180504/article/details/79150492Mysql case when 实现行转列时为什么要用max()或者其他聚合函数mysql中的case when语句查询结果问题原始数据:不加max进行case when加max:很明显两次结果不同,不加max结果不...转载 2018-11-14 09:53:13 · 1468 阅读 · 0 评论 -
sql字符串拼接,转义
sql语句中有一些符号是具有特殊含义的,比如/如果想让他当成普通字符需要转义 ,但是有时候转义规则不清楚的话,很难成功这是可以使用sql字符串连接函数:CONCAT实例:#max(CASE seg_type WHEN '再审申请人称/抗诉机关称' THEN txt END) AS 再审申请人称_抗诉机关称,max(CASE seg_type WHEN CONCAT('再审申请人称'...原创 2018-11-14 15:53:31 · 2024 阅读 · 0 评论 -
数据库索引理解,很好理解
本来对数据库的基本概念模模糊糊,直到我看到了一篇文章…分享出来…使用索引很简单,只要能写创建表的语句,就肯定能写创建索引的语句,要知道这个世界上是不存在不会创建表的服务器端程序员的。然而, 会使用索引是一回事, 而深入理解索引原理又能恰到好处使用索引又是另一回事,这完全是两个天差地别的境界(我自己也还没有达到这层境界)。很大一部份程序员对索引的了解仅限于到“加索引能使查询变快”这个概念为止。...转载 2018-11-14 17:34:56 · 131 阅读 · 0 评论 -
数据库盖伦
一提到关系型数据库,我禁不住想:有些东西被忽视了。关系型数据库无处不在,而且种类繁多,从小巧实用的 SQLite 到强大的 Teradata 。但很少有文章讲解数据库是如何工作的。你可以自己谷歌/百度一下『关系型数据库原理』,看看结果多么的稀少【译者注:百度为您找到相关结果约1,850,000个…】 ,而且找到的那些文章都很短。现在如果你查找最近时髦的技术(大数据、NoSQL或JavaScript...转载 2018-11-22 11:48:38 · 399 阅读 · 0 评论 -
数据库语句小技巧
工作遇到的花里胡哨但是很实用的数据库相关的小技巧:整体原创 一,sql语句获取某一字段的长度:select length('某一字段'); 二,行转列,列转行:互转的两张表结构:sql语句:行转列:SELECT UserName, MAX(CASE Subject WHEN '语文' THEN Score ELSE 0 END)...原创 2018-11-23 14:45:35 · 184 阅读 · 0 评论 -
mysql数据库添加 删除 查看用户
添加用户:CREATE USER 用户名 IDENTIFIED BY '密码';GRANT SELECT, INSERT, UPDATE, DELETE, EXECUTE ON *.* TO '用户名'@'%' identified by '密码';FLUSH PRIVILEGES;(刷新权限) 查看用户列表:查看所有用户(需要在root用户下进行)select hos...原创 2018-12-03 10:50:57 · 774 阅读 · 0 评论 -
java队列,栈相关简单操作
阻塞队列相关方法: add 增加一个元索 如果队列已满,则抛出一个IIIegaISlabEepeplian异常 remove 移除并返回队列头部的元素 如果队列为空,则抛出一个NoSuchElementException异常 element 返回队列头部的元素 如果队列为空,则抛出一个NoSuchElement...原创 2019-01-01 12:55:04 · 280 阅读 · 0 评论 -
计算机网络总结
一,概述网络的网络网络把主机连接起来,而互联网是把多种不同的网络连接起来,因此互联网是网络的网络。 ISP互联网服务提供商 ISP 可以从互联网管理机构获得许多 IP 地址,同时拥有通信线路以及路由器等联网设备,个人或机构向 ISP 缴纳一定的费用就可以接入互联网。 目前的互联网是一种多层次 ISP 结构,ISP 根据覆盖面积的大小分为第一层 ISP、区域 IS...转载 2019-01-06 15:57:28 · 850 阅读 · 3 评论 -
Linux IO模式及 select、poll、epoll详解
原文地址:address注:本文是对众多博客的学习和总结,可能存在理解错误。请带着怀疑的眼光,同时如果有错误希望能指出。同步IO和异步IO,阻塞IO和非阻塞IO分别是什么,到底有什么区别?不同的人在不同的上下文下给出的答案是不同的。所以先限定一下本文的上下文。本文讨论的背景是Linux环境下的network IO。一 概念说明在进行解释之前,首先要说明几个概念:- 用...转载 2019-01-02 17:41:47 · 374 阅读 · 0 评论 -
Redis之发布/订阅机制
相关命令:PUBLISH 发布SUBSCRIBE 订阅PSUBSCRIBE 一种订阅符合给定模式的所有频道的方法UNSUBSCRIBE 退订PUNSUBSCRIBE 退订一个订阅的模式这些命令被广泛用于构建即时通信应用,比如网络聊天室(chatroom)和实时广播、实时提醒等。Red...原创 2019-01-17 17:45:13 · 4499 阅读 · 9 评论 -
Linux之用户态和内核态
如上图所示,从宏观上来看,Linux操作系统的体系架构分为用户态和内核态(或者用户空间和内核)。内核从本质上看是一种软件——控制计算机的硬件资源,并提供上层应用程序运行的环境。用户态即上层应用程序的活动空间,应用程序的执行必须依托于内核提供的资源,包括CPU资源、存储资源、I/O资源等。为了使上层应用能够访问到这些资源,内核必须为上层应用提供访问的接口:即系统调用。系统调用是操作系统的最小...转载 2019-03-08 15:47:30 · 269 阅读 · 0 评论 -
TCP,UDP,IP包长度
1、概述首先要看TCP/IP协议,涉及到四层:链路层,网络层,传输层,应用层。 其中以太网(Ethernet)的数据帧在链路层 IP包在网络层 TCP或UDP包在传输层 TCP或UDP中的数据(Data)在应用层 它们的关系是 数据帧{IP包{TCP或UDP包{Data}}} 不同的协议层对数据包有不同的称谓,在传输层叫做段(segm...转载 2019-09-04 10:00:49 · 1296 阅读 · 0 评论