- 博客(35)
- 收藏
- 关注
原创 计算机网络4/5/7层协议
7层协议OSI七层协议模型:应用层,表示层,会话层,传输层,网络层,数据链路层,物理层4层协议指TCP/IP四层模型:应用层,运输层,网络层,网络接口层协议详解:HTTP: 超文本传输协议DNS: 机器域名到IP地址的转换(百度的机器域名是www.baidu.com,对应的IP地址是http://119.75.217.109/。 )telnet: 远程登录协议(本地完成远程任务)...
2019-09-26 11:03:02
482
原创 Java栈和队列
Java栈和队列:栈:先进后出队列:先进先出java栈代码Stack stack=new Stack();取栈顶值:stack.peek()进栈:stack.push()出栈:stack.pop()栈顶为空判断:stack.empty() 返回值是True和Falsejava队列代码add 增加一个元索remove 移除并返回队列头部的元素element ...
2019-09-24 11:08:41
201
原创 B树和B+树
1.为什么索引用它?提高IO性能,解决元素遍历效率低下(后者是B+树)2.B树和B+树区别b+树的中间节点不保存数据,所以磁盘页能容纳更多节点元素,更“矮胖”;b+树查询必须查找到叶子节点,b树只要匹配到即可不用管元素位置,因此b+树查找更稳定(并不慢);对于范围查找来说,b+树只需遍历叶子节点链表即可,b树却需要重复地中序遍历,如下两图:...
2019-09-17 21:44:29
207
原创 输入URL至浏览器显示页面
输入网址根据URL找IP先查看本地hosts文件----再查看本地DNS和缓存(递归,若没有本地DNS向根DNS查找)----根DNS(递归,没有去去本地DNS去域服务器查找)—返回IP,把对应关系加入缓存建立TCP链接,3次握手浏览器向web服务器发送http请求(起始行,请求头,请求主体)起始行包括URL,get,遵循的协议,返回的信息是否需要缓存服务器处理(接收Request,处...
2019-09-17 21:34:11
186
原创 JAVA垃圾回收
垃圾回收的意义放置内存泄漏:即内存空间使用完毕后未回收垃圾回收算法垃圾回收算法基本要做两件事(1)发现无用信息对象 (2)回收被无用对象占用的内存空间,使该空间可被程序再次使用...
2019-09-17 21:21:53
138
原创 死锁
产生条件:**互斥条件:**即在一段时间内,一个资源只能被一个进程占用。**请求和保持条件:**进程已经获得了某种资源,但又提出了新的资源的要求,而该资源已经被其他进程占有,此时请求进程被阻塞,但对自己保持的资源不放。**不可抢占资源:**进程已获得的资源在未使用完成之前不能被其他进程抢占。**循环等待条件:**若干进程间形成首尾相接循环等待资源的关系如何解决死锁**预防死锁:*...
2019-09-16 10:05:17
202
原创 进程和线程
**进程:**指程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的.每个进程还占用着独立地系统资源**线程:**比进程更小的执行单位,一个进程在执行过程中可以产生多个线程,与进程不同的是同类的多个线程共享一块内存空间和一组系统资源线程的基本形态:进程间的通讯方式管道1)是半双工的(数据只能在一个方向流动),具有固定的读端和写端2)只能用于亲缘关系的进程之间的通信(父子进...
2019-09-15 22:20:17
124
原创 Redis的过期删除策略(和内存淘汰机制)
Redis中一个键过期了,什么时候会被删除呢?有以下三种策略定时删除: 在设置键过期时间的同时,创建一个定时器,让定时器在过期时间来临时,立即执行对键的删除操作惰性删除: 放任键过期不管,但是每次从键空间获取键时,都检查取得的键是否过期,过期的话就删除该键,没过期的话就返回该键定期删除: 每隔一段时间,程序就对数据库进行一次检查,删除里面的过期键,至于要删除多少个过期键,检查多少个数据库,...
2019-09-15 15:39:54
1339
原创 分布式锁
什么是分布式锁分布式锁是控制分布式系统之间同步访问共享资源的一种方式,如果不同的系统或同一系统的不同逐级之间共享了一个或一组资源,那么访问这些资源的时候,往往需要互斥来放置彼此干扰来保证一致性,在这种情况下需要使用分布式锁.分布式锁需要具备的条件在分布式系统环境下,一个方法在同一时间只能被一个机器的一个线程执行高可用的获取锁和释放锁高性能的获取锁和释放锁具备可重入特性具备锁失效特性...
2019-09-15 10:43:37
175
原创 数据库隔离级别
首先复习下数据库4个特性:原子性,一致性,隔离性(也叫独立性),持久性事务的隔离性就是指,多个并发的事务同时访问一个数据库时,一个事务不应该被另一个事务所干扰,每个并发的事务间要相互进行隔离。事务的隔离级别分为以下4种:读未提交:可以读到为提交的内容,容易发生脏读,不可重复读,幻读读提交不可重复读串行化...
2019-09-11 17:13:19
115
原创 Synchronize
synchronize作为多线程关键字,是一种同步锁,它可以修饰以下几种对象:代码块:被修饰的代码块称为同步语句块,其作用的范围是大括号{ }里的代码,作用的对象是调用这个代码块的对象;方法:被修饰的方法称为同步方法,其作用的范围是整个方法,作用的对象是调用这个方法的对象静态方法:作用的范围是整个静态方法,作用的对象是这个类的所有对象...
2019-09-11 11:51:48
903
原创 OOM(Out Of Memory)
OOM定义:当JVM因为没有足够的内存来为对象分配空间并且垃圾回收器也已经没有空间可回收时,就会抛出这个errorOOM原因:(1)分配的少了:比如虚拟机本身可使用的内存(一般通过启动时的VM参数指定)太少(2)应用用的太多,并且用完没释放,浪费了。此时就会造成内存泄露或者内存溢出。内存泄露:申请使用完的内存没有释放,导致虚拟机不能再次使用该内存,此时这段内存就泄露了,因为申请者不用了,...
2019-09-11 10:35:12
198
原创 JVM内存区域解析
JVM内存模型分为线程共有和线程私有两个部分.线程共有:方法区,堆线程私有:虚拟机栈,本地方法栈,程序计数器堆内存堆内存是所有线程共有的,可以分为两个部分:年轻代和老年代。年轻代:存放没有经历过多次垃圾回收的对象老年代:存放经历过多次垃圾回收的对象方法区用于储存已被虚拟机加载的类信息,常量,静态变量,即时编译(JIT)后的代码等数据java虚拟机栈属于栈内存,存续虚拟机栈中的...
2019-09-11 10:19:34
224
原创 List、Set、Map的区别
List可以允许重复的对象可以插入多个null元素是一个有序容器,保持了每个元素的插入顺序,输出的顺序就是插入的顺序SET不允许重复的对象无序容器,无法保证每个元素的储存顺序,TreeSet通过comparatable或者Comparator维护了一个无序排列(comparatable为系统默认方法,comparator为自己设定的方法)只允许有一个null元素MapM...
2019-09-11 09:22:54
121
原创 Spring的特点
支持AOP,方便进行面向切面的编程方便解耦,简化开发,通过Spring提供的IoC容器(控制反转),利用依赖关系注入的方式,实现对象之间的解耦。支持声明式事务处理,只需要通过配置就可以完成对事物的管理,而无须手动编程方便程序的测试.Spring提供了对Junit4的支持,可以通过注解方便的测试Spring程序。方便集成各种优秀框架.Spring不排斥各种优秀的开源框架,其内部提供了对...
2019-09-10 16:33:07
592
原创 SpringMVC运行原理
客户端(浏览器)发送请求,请求达到SpringMVC的前端控制器(DispatcherServlet)前端控制器根据用户的url,请求处理器映射器(HandlerMapping)查找匹配该url的handler,并返回一个执行链(HandlerExecutionChain)前端控制器再请求处理器适配器(HandlerAdapter)调用相应的handler进行处理并返回给前端控制器一返回mo...
2019-09-10 16:11:40
83
原创 高并发的处理方法
异步编程集群 :多台服务器分流,静态资源集群和动态资源集群动静分离:静态资源和动态资源分离,把静态资源放在单独的服务器页面缓存:经常访问的页面作成静态页面放到缓存里SQL语句优化...
2019-09-04 14:42:56
919
原创 Redis讲解
Redis作用:解决数据库的高并发问题.单一使用数据库来保存数据,会面临面向磁盘,磁盘读/写速度比较慢的问题,容易使数据库瘫痪,导致服务器宕机Redis技术:是一种NoSQL技术,是一种基于内存的数据库,并且提供了一定的持久化功能.Redis可以支持每秒十几万次的读/写操作,并且还支持集群,分布式,主从同步等配置.并且还支持一定的事务能力,支持在服务器端计算集合的并,交和补集等,还支持多种...
2019-09-04 13:46:53
1353
原创 TCP的计时器
TCP中拥有四种计时器,分别为:重传计时器重传时间到了.如果还没有接收到对方的ACK,就从发此包,避免陷入无限等待中坚持计时器目的:解决零大小窗口导致的死锁问题死锁产生原因:当接收端窗口大小为0时,发送端停止发送,此后如果接收端有空余空间来接收数据,则发送一个新窗口大小的报文,如果该报文丢失了则导致双方都处于等待状态,产生死锁工作原理:当发送端接收到接收端发送的零大小窗口的报文时,就...
2019-09-04 10:14:41
281
原创 http和https的区别
http和https的区别:http是超文本传输协议,信息是明文传输.https则是具有安全性的ssl加密传输协议http和https使用的端口不同,http是80,https为443http和https的连接方式不同.http的连接方式是无状态的.https协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。http的缺点:http协议使用的...
2019-09-04 09:45:27
140
原创 计算机操作系统的分类
根据操作系统在用户界面的使用环境和功能特征的不同,操作系统一般可分为三种基本类型,即批处理系统、分时系统和实时系统。随着计算机体系结构的发展,又出现了许多种操作系统,它们是嵌人式操作系统、个人操作系统、网络操作系统和分布式操作系统。1.批处理操作系统批处理(Batch Processing)操作系统的工作方式是:用户将作业交给系统操作员,系统操作员将许多用户的作业组成一批作业,之后输入到计算机...
2019-09-04 09:19:17
5917
原创 说一下数据库有哪些索引类型,有什么优缺点?
索引的几种类型分别是普通索引、唯一索引、聚集索引、主键索引、全文索引几种。使用索引的优点:提高数据的搜索速度加快表与表之间的连接速度在信息检索过程中,若使用分组及排序子句进行时,通过建立索引能有效的减少检索过程中所需的分组及排序时间,提高检索效率。使用索引的缺点:在我们建立数据库的时候,需要花费的时间去建立和维护索引,而且随着数据量的增加,需要维护它的时间也会增加。在创建索引的...
2019-09-04 09:12:25
18435
6
原创 JAVA的生命周期
加载,验证,准备,解析,初始化,运行,卸载1.加载:关于加载,其实,就是将源文件的class文件找到类的信息将其加载到方法区中,然后在堆区中实例化一个java.lang.Class对象,作为方法区中这个类的信息的入口。2.验证:确定该类是否符合java语言的规范,有没有属性和行为的重复,继承是否合理,总之,就是保证jvm能够执行3.准备:主要做的就是为由static修饰的成员变量分配内存,...
2019-09-03 20:56:39
845
转载 一条sql执行过长的时间,你如何优化,从哪些方面?
1、查看sql是否涉及多表的联表或者子查询,如果有,看是否能进行业务拆分,相关字段冗余或者合并成临时表(业务和算法的优化)2、涉及链表的查询,是否能进行分表查询,单表查询之后的结果进行字段整合3、如果以上两种都不能操作,非要链表查询,那么考虑对相对应的查询条件做索引。加快查询速度4、针对数量大的表进行历史表分离(如交易流水表)5、数据库主从分离,读写分离,降低读写针对同一表同时的压力,至于...
2019-09-03 20:40:59
4080
原创 数据库设计的三大范式
第一范式:如果一个表中没有重复组(即行与列的交叉点上只有一个值,而不是一组值),则这个表属于第一范式(常记成1NF)。简而言之:“每一字段只存储一个值”。例如:职工号,姓名,电话号码组成一个表(一个人可能有一个办公室电话 和一个家里电话号码)第二范式第二范式的定义:如果一个表属于1NF,任何属性只依赖于关键字,则这个表属于第二范式(常记成2NF )。简而言之:必须先符合1NF的条件,且每一行...
2019-09-03 16:52:06
146
原创 TCP三次握手和四次挥手
本文为精简版,复杂内容请参考:TCP的三次握手与四次挥手理解及面试题(很全面)三次握手:客户端向服务器发送申请,请求建立连接(SYN=1)服务器收到申请,向客服端发送SYN及ACK(确立是否有效)客户端收到SYN+ACK,向服务器发送ACK表示已经收到请求四次挥手客服端向服务器发送连接释放报文(FIN=1),并停止向服务器发送数据服务器收到连接释放报文,向客户端发出确定报文(此时服务...
2019-09-03 16:30:05
107
原创 方格走法-牛客网(排列组合和动态规划)
方格走法-牛客网题目描述有一个X*Y的网格,小团要在此网格上从左上角到右下角,只能走格点且只能向右或向下走。请设计一个算法,计算小团有多少种走法。给定两个正整数int x,int y,请返回小团的走法数目。输入描述:输入包括一行,空格隔开的两个正整数x和y,取值范围[1,10]。输出描述:输出一行,表示走法的数目示例1输入3 2输出10先说简便方法,该题可以看做排列组合...
2019-08-20 17:28:47
4296
原创 python定义二位数组
最近卡在了定义二维数组上,研究后发现有以下方法:第一种方法list = [[0 for _ in range(n)] for i in range(m)]最终定义为list[m][n]=0第二种方法:listfor i in range(n): list.append([]) for i in range(n): list.append(0)两种方法一个意思,只是第一个是...
2019-08-20 17:26:39
1324
原创 sys.stdin.readline().strip()和raw_input().strip().split()返回值的区别
写题时发现二者还是不一样的line=sys.stdin.readline().strip()获得的值可以line[2]这么取对应位置的值line=raw_input().strip().split()只能获得一个list,line[0]为输入,不能通过line[2]这样获取第三个数的值测试发现可以使用line=raw_input()有一样的效果另外,如果使用sys不加.str...
2019-08-20 16:22:37
1708
1
原创 1,2,5相加为100 方法总数
这道题是华为的面试题,写是很容易写的,但是要考虑各种优化方法,因此变成面试题.来考察优化能力解法借鉴了CatcherTheRye的想法首先附上答案:本题结果:541首先想到的思路:三个for循环,实现如下:count=0for i in range(0,101,5): for j in range(0,101,2): for k in range(0,101,1): if...
2019-08-18 10:15:17
806
原创 python3添加空格
做笔试题时候发现要求输出的时候数字直接有空格,如果结尾可以存在空格可以使用print(sout,end=" ").但是结尾不允许空格时候就无法使用了,因此记录新方法.print(" ".join(map(str, sout)))例题如下(牛客网-数组操作)题目描述输入一个无序整数数组,调整数组中数字的顺序, 所有偶数位于数组的前半部分,使得所有奇数位于数组的后半部分。要求时间复杂度为O...
2019-08-17 19:17:30
18032
原创 数据库的ACID四原则
今天同学面试问了ACID四原则,网上查了一下,了解一下检查连接数据库的ACID四原则及:事物的原子性(Atomic)、一致性(Consistent)、独立性(Isolated)及持久性(Durable)。 1.事务的原子性是指一个事务要么全部执行,要么不执行.也就是说一个事务不可能只执行了一半就停止了.比如你从取款机取钱,这个事务可以分成两个步骤:1划卡,2出钱.不可能划了卡,而钱...
2019-08-17 10:33:33
2962
原创 回溯法-变态跳台阶
牛客网-变态跳台阶内容描述题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。解题思路尝试使用回溯法进行解决问题,遍历全部方法,从而找到跳法(本题目有更简单的方法,见后面)回溯法模板try(int i){ if(i>n) 输出结果; else { ...
2019-08-14 10:49:01
513
原创 牛客网-挑选代表
牛客网-挑选代表我们有很多区域,每个区域都是从a到b的闭区间,现在我们要从每个区间中挑选至少2个数,那么最少挑选多少个?输入描述:第一行是N(N<10000),表示有N个区间,之间可以重复然后每一行是ai,bi,持续N行,表示现在区间。均小于100000输出描述:输出一个数,代表最少选取数量。示例1输入44 72 40 23 6输出4解题思路将所有区间按...
2019-08-14 10:39:40
458
4
原创 python join()方法
语法str.join(sequence)sequence为要连接的元素序列例子str = "-";seq = ("a", "b", "c"); # 字符串序列print str.join( seq );输出结果:a-b-cpython中输出加入空格:print(" ".join(map(str, list)))其中list为要输出的数组...
2019-08-14 10:27:23
1372
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人