- 博客(48)
- 资源 (1)
- 收藏
- 关注
原创 实现操作系统的参考资料
操作系统的参考资料课程MTI 6.828 :https://pdos.csail.mit.edu/6.828/2018/schedule.html哈工大李治军 操作系统:https://www.icourse163.org/course/HIT-1002531008书籍《一个64位操作系统的设计与实现》:https://book.douban.com/subject/30222325/《Orange’s 一个操作系统的实现》:https://book.douban.com/subject/
2020-11-30 13:09:47 239
原创 桥接(Bridge)
桥接(Bridge)桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。将抽象与实现分离开来,使它们可以独立变化。介绍意图:将抽象部分与实现部分分离,使它们都可以独立的变化。主要解决:在有多种可能会变化的情况下,用继承会造成类爆炸问题,扩展起来不灵活。何时使用...
2019-07-16 10:05:47 1704
原创 装饰器模式
装饰器模式装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。动态的往一个类里增加功能介绍意图:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活。主要解决:一般的,我们为了扩展一个类经常使用继承方式实现,由于继承为类引入静态特征,并且...
2019-07-16 10:03:23 236
原创 并发测试工具
并发测试工具一、PostmanPostman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。官方网站:https://www.getpostman.com/Postman常用于接口的测试,比如GET,POST等接口的测试...
2019-06-15 14:40:47 62438 16
原创 ThreadPoolExecutor线程池
线程池开发中几乎所有的并发或者异步程序都可以使用线程池,它能带来三个好处:降低资源消耗。通过复用已存在的线程和降低线程关闭的次数来尽可能降低系统性能损耗; 提升系统响应速度。通过复用线程,省去创建线程的过程,因此整体上提升了系统的响应速度; 提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,因此,需要使用线程池来管理线程。线程池的工...
2019-06-14 17:07:09 193
原创 原子操作
Java中的原子基本类型有 AtomicBoolean AtomicInteger AtomicLong 常用操作有AtomicInteger的常用方法有: int addAndGet(int delta):以原子的方式将输入的值与实例中的值(AtomicInteger里的value)相加,并把结果返回 boolean compareA...
2019-06-14 15:37:23 183
原创 Java中的锁
锁LockLock接口提供的synchronized所不具备的主要特性特性 描述 尝试非阻塞地获取锁 当前线程尝试获取锁,如果这一时刻锁没有被其他线程获取到,则成功获取并持有锁 能被中断地获取锁 与synchronized不同,获取到的锁能够响应中断,当获取到锁的线程被中断时,中断异常将会被抛出,同时锁会被释放 超时获取锁 在指定的时间截止之前获取锁...
2019-06-14 13:44:51 150
原创 Java 内存模型
Java 内存模型基础知识线程同步同步是指程序中用于控制不同线程间操作发生相对顺序的机制,共享内存模型中,同步必须显式的控制,代码中某个部分需要在线程之间互斥操作。线程通信线程之间交换信息称之为线程通信。线程通信的机制有两种: 共享内存:通过读写内存的公共状态进行 消息传递:线程之间没有公共状态,必须发送消息来进行显式的通信 内存模型JMM规定了线程和主...
2019-06-11 15:38:09 154
原创 并发实现原理
并发实现原理volatilejava内存模型中,volatile声明的变量让所有线程都是可见的而且看到时唯一的。实现原理修改volatile 变量时,所产生的汇编代码会加上 Lock前缀,Lock前缀有两个作用 把当前处理器缓存行写会内存中 对于其他CPU缓存了该地址的数据失效 当处理器把volatile变量写回内存,因为缓存一致协议,其他CPU在嗅探总线...
2019-06-06 18:00:56 1074
原创 用jvisualvm分析dump文件
用jvisualvm分析dump文件最近有一个java服务的堆内存溢出,然后僵死了,在重启服务之前用jmap命令生成了一份dump文件便于后面分析。生成dump文件的命令:jmap -dump:format=b,file=20170307.dump 16048file后面的是自定义的文件名,最后的数字是进程的pid。使用jvisualvm来分析dump文件:jvisu...
2019-06-06 17:58:26 12931
原创 影响并发性能的原因
影响并发性能的原因上下文切换CPU 通过时间片分配来并发执行任务,当前任务执行一个时间片后就会切换到下一个任务 ,切换之前会保存当前任务的状态。从保存这个任务的状态到再加载的一次过程就是一次上下文的切换。过多的上下文切换会带来一些不必要的性能消耗,减少上下文切换的方法有以下几个: 无锁并发编程 CAS算法 使用最少线程和使用协程 无锁并发编程多线...
2019-06-06 17:54:50 1266
原创 计算机互联网之传输层
三、运输层网络层只把分组发送到目的主机,但是真正通信的并不是主机而是主机中的进程。运输层提供了进程间的逻辑通信,运输层向高层用户屏蔽了下面网络层的核心细节,使应用程序看起来像是在两个运输层实体之间有一条端到端的逻辑通信信道。内容UDP 和 TCP 的特点用户数据报协议 UDP(User Datagram Protocol)是无连接的,尽最大可能交付,没有拥塞控制,面向...
2018-09-10 18:24:07 503
原创 计算机网络之应用层
应用层应用进程在应用层通过应用层协议的套接字实现网络通信,一般有C/S模型和P2P模型。内容进程通信和网络层的关系在两个不同端系统上的进程通过计算机网络交换报文而相互通信。进程通过一个套接字的网络接口从网络进行首发信息。一般进行网络交互时需要两种信息来标志地址: 1. 主机的地址 2. 目的主机接受信息的进程标识符,一般为端口。下图说明了和运输层的交互...
2018-09-06 22:43:49 277
原创 计算机网络之概述
一、概述计算机网络由全球范围内的计算机设备和各种非传统的设备(智能手机、平板电脑、电视、游戏机、web相机、汽车、各种传感器)和安全系统以及各种中转设备以及链路组成的系统。由主机或者端系统互相连接起来的系统,2011年估计因特网的用户超过了20亿。内容结构网络核心由互联因特网端系统的分组交换机和链路构成的网状网络,途中加粗阴影线勾画的部分。网络的网络网络...
2018-09-03 17:53:38 343
原创 计算机网络之网络层
四、网络层概述网络层是整个网络的核心部分,网络层中进行着数据从主机到主机的实际传输,所以应当是网络层尽可能的简单。网络层向上层提供简单,无连接的,尽最大努力的交互数据的数据报服务。网络层使用的是IP协议,目前主流为IPv4,可以吧结构不相同的物理网络连接起来,使其看起来像一个统一的网络。与 IP 协议配套使用的还有三个协议:地址解析协议 ARP(Address Resol...
2018-09-03 01:46:05 478
原创 160. Intersection of Two Linked Lists(java)
Write a program to find the node at which the intersection of two singly linked lists begins. For example, the following two linked lists:A: a1 → a2 ↘ ...
2018-08-20 12:01:15 345
转载 快速掌握一个语言最常用的50%
转自:https://blog.csdn.net/myan/article/details/3144661 最近这几天在看java,看到这篇前辈的文章很有感触,虽然已经十年过去了,但是道理依旧就是这样。以下为原文: 现在的开发工作要求我们能够快速掌握一门语言。一般来说应对这种挑战有两种态度:其一,粗粗看看语法,就撸起袖子开干,边查Google边学习;其二是花很多时间完整地把整个...
2018-08-13 20:20:32 162
原创 快速排序
ElementType Median3( ElementType A[], int Left, int Right ) { int Center = (Left+Right) / 2; if ( A[Left] > A[Center] ) Swap( &A[Left], &A[Center] ); if ( A[Left] ...
2018-04-25 22:55:14 233
原创 数据结构作业--西邮校园导航
介绍学习了数据结构课程中的一些简单的数据结构之后,用C语言和数据结构中的一些知识实现一个简易的学校的导航系统。 基本上的功能如下:数据结构采用图来存储信息,根据百度地图抽象出图的结构使用的是邻接矩阵,利用节点图,直接生成邻接矩阵的图数据结构。 校园的地点信息采用文件存储的方式,随时读取。两点之间的最短路径,采用迪杰斯特拉算法找到最短的路径。所有路径,采用深度优先的想法,进行递归的遍历寻找
2018-04-24 19:51:43 2834 3
原创 python os库的简单介绍以及文件目录树的应用(tree命令的实现)
python的官方文档中对于OS库的介绍是 This module provides a portable way of using operating system dependent functionality.具体意思是os模块提供了简单方便的方法来使用操作系统的一些功能。就是说通过os库你可以使用python执行一些常见的操作系统的功能,比如切换目录,增删文件,设置环境变量,运行shell...
2018-04-21 21:30:33 1550
原创 python的文件存取
python可以通过创建一个属于 file 类的对象并适当使用它的 read 、 readline 、 write 方法来打开或使用文件,并对它们进行读取或写入。读取或写入文件的能力取决于你指定以何种方式打开文件。最后,完成了文件,你可以调用 close 方法来告诉 Python 我们已经完成了对该文件的使用。OK ,我们来看一下实例poem = '''\Programming is funWhe...
2018-04-21 15:34:37 419
转载 数据库的删除和修改
数据库的操作删除一个数据库DROP DATABASE <数据库名>;对一张数据表的操作重命名一张表RENAME TABLE 原名 TO 新名;ALTRE TABLE 原名 RENAME 新名;ALTRE TABLE 原名 RENAME TO 新名;删除一张表删除一张表的语句和删除一个数据库的语句类似DROP TABLE 表名;对一列的修改增加一列的语句格式如下:ALTER TABLE ...
2018-04-12 21:36:02 21250
转载 SELECT语句
主要包括:基本的SELECT语句基本格式如下:SELECT 要查询的列名称 FROM 表名称 WHERE 限制条件;查询全部的内容把 要查询的列名称改成 *就好了,比如我们简单的来一个查询数学符号条件SELECT 语句常常会有 WHERE 限制条件,用于达到更加精确的查询。WHERE限制条件可以有数学符号 (=,<,>,>=,<=) ,写一条带限制的查询语句AND 与 OR...
2018-04-12 18:11:19 590
原创 创建数据库并插入数据
新建数据库首先,我们创建一个数据库,给它一个名字,比如 mysql_test,以后的几次实验也是对 mysql_shiyan 这个数据库进行操作。 语句格式为 CREATE DATABASE <数据库名字>;,前面的 CREATE DATABASE 也可以使用小写,具体命令为:CREATE DATABASE mysql_text;数据表数据表是实质存储数据的内容,一个数据库中一般有多个...
2018-04-08 22:21:39 1107
原创 MySQL的介绍及MySQL的安装
MySQL 介绍MySQL 是一个 DBMS(数据库管理系统),由瑞典 MySQLAB 公司开发,目前属于 Oracle 公司,MySQL 是最流行的关系型数据库管理系统(关系数据库,是建立在关系数据库模型基础上的数据库,借助于集合代数等概念和方法来处理数据库中的数据)。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发者都选择 MySQL 作为网站数据库。MySQ...
2018-04-08 19:49:51 362
转载 传输层概述
传输层有两种协议,TCP(可靠)和UDP(不可靠),运输层在应用程序的端点之间传输应用层报文,端到端层面,传输层负责将应用层的数据分段,提供可靠或者不可靠 的传输,还处理了端到端的差错控制和流量控制问题。 1.传输层负责将上层的数据分段和提供端到端的可靠或者不可靠的数据传输以及端到端的差错控制和流量控制等问题。 2.包含的主要协议:TCP协...
2018-04-02 21:06:33 5586
原创 应用层概述
超文本传输协议——HTTP万维网的工作过程 用户确定要访问网页的URL,并将其输入到浏览器的地址栏中。 浏览器向DNS服务器发出请求,获取Web服务器域名所对应的IP地址。 浏览器向指定IP地址的Web服务器发出与端口80建立一条TCP连接的请求。80端口是Web服务器提供Web服务的端口。 在得到Web服务器确认并且TCP连接建立成功后,浏览器再向Web服务器发出一条请求传输网页的HTTP命令。...
2018-03-29 22:04:44 5186
原创 C++ vector容器
typedef type name 把type 定义成namevector 类型,是标准库类型的容器,可以存放指定类型的一连串的值,vector可以动态增长。 操作: v.begin()返回一个值,表示v中的第一个元素 v.end()返回一个值,表示v中的最后一个元素的下一个位置 ...
2018-03-05 23:07:32 212
转载 C++ 循环
while 循环语法C++ 中 while 循环的语法:while(condition){ statement(s);}在这里,statement(s) 可以是一个单独的语句,也可以是几个语句组成的代码块。condition 可以是任意的表达式,当为任意非零值时都为真。当条件为真时执行循环。当条件为假时,程序流将继续执行紧接着循环的下一条语句。for 循环语法C++ 中 for 循环的语法:...
2018-03-05 23:06:59 327
转载 C++ 数据类型
基本的内置类型C++ 为程序员提供了种类丰富的内置数据类型和用户自定义的数据类型。下表列出了七种基本的 C++ 数据类型:类型关键字布尔型bool字符型char整型int浮点型float双浮点型double无类型void宽字符型wchar_t下表显示了各种变量类型在内存中存储值时需要占用的内存,以及该类型的变量所能存储的最大值和最小值。注意:不同系统会有所差异。类型位范围char1 个字节-128...
2018-03-05 23:05:46 144
转载 C++中"\n"与endl的区别是什么?
C++中"\n"与endl的区别是什么?"\n" 表示内容为一个回车符的字符串。std::endl 是流操作子,输出的作用和输出 "\n" 类似,但可能略有区别。std::endl 输出一个换行符,并立即刷新缓冲区。例如:std::cout << std::endl;相当于:std::cout << '\n' << std::flush;或者std::cout..
2018-03-05 23:03:37 9051
原创 Code::Blocks和Debug
#### Code::Blocks,一个免费的轻量级的IDE,基本功能都齐全,特别是自动补全,调试也不错,可以中文化,也可以自定义配色,基本上可以满足我们现在的需求了。我们这篇文章介绍一下Code::Blocks的安装,基本使用,部分快捷键,以及它的中文化和自定义外观和如何使用Code::Blocks进行基本的调试。外观它打开之后就长这个样子,当然这些都可是根据个人喜好修改 安装可以在官网下
2017-12-07 17:10:39 879 2
转载 flask 基本应用,调试,路由以及模板
最基本的应用一个最基本的Flask的应用就是这个样子,然后from flask import Flaskapp = Flask(__name__)@app.route('/')def hello_world(): return 'Hello World!'if __name__ == '__main__': app.run()调试模式调试模式
2017-10-31 01:25:59 497
原创 第一章 布尔逻辑
引言,各种的数字设备,比如电脑,智能手机,或者网络路由器,都是由一系列芯片组成的,芯片都是由相同的构造模块制作而来的。基本的逻辑门就是就是最基础的,模块。布尔门(Boolean gate):就是布尔函数的物理实现。布尔代数:布尔代数就是处理布尔型二进制数值的代数。真值表表示法:枚举所有的变量输入的可能情况,然后写出每种情况所对应的函数输出值。基本算子:与(and)或(or)
2017-10-27 01:47:59 1093
原创 412. Fizz Buzz
Write a program thatoutputs the string representation of numbers from 1 to n.But for multiples of threeit should output “Fizz” instead of the number and for the multiples of fiveoutput “Buzz”. For n
2017-09-13 16:56:12 290
原创 461. Hamming Distance(汉明距离)
The Hammingdistance between two integers is the number of positions atwhich the corresponding bits are different.Given two integers x and y, calculate the Hamming distance.Note: 0 ≤ x, y < 2
2017-09-13 16:55:27 387
原创 7. Reverse Integer (翻转一个整数)
Reverse digits of aninteger.Example1: x = 123, return 321Example2: x = -123, return -321 给你一个整数,返后它倒序的数字最好就是用数学运算来解决这个问题,让这个数循环除以10取余,然后让输出的数字循环乘以10然后加上当前取余的结果,是一种类似位运算的思想,可以
2017-09-13 16:55:05 218
原创 561. Array Partition I (数组分组)
Given an array of 2n integers, your task is to groupthese integers into n pairsof integer, say (a1, b1), (a2, b2),..., (an, bn) which makes sum of min(ai, bi) forall i from 1 to n as large as po
2017-09-13 16:54:39 186
原创 237. Delete Node in a Linked List
Writea function to delete a node (except the tail) in a singly linked list, givenonly access to that node.Supposed the linked list is 1 -> 2 -> 3 -> 4 and you are given thethird node with value
2017-09-13 16:52:34 165
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人