自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Enpong之家

地狱中的烂旗,有鬼扯过

  • 博客(52)
  • 资源 (5)
  • 收藏
  • 关注

原创 leetcode---241. 为运算表达式设计优先级

回溯搜索。该问题牵涉到括号的组合问题,一般使用递归+回溯的思想。主要想法:递归回溯。可以产生所有的组合方式。每个小组合方式相当于一个子集,不断的将计算结果返回给上一层。举例:a + (b - (c * d))会不断的变成a + (b - (res1 * res2))-> a + (res1 - res2) -> res1 + res2计算结果需要for循环!!!其实有这种情...

2019-03-22 15:39:51 203

原创 leetcode---二分查找

//二分查找基本实现public int binarySearch(int[] nums, int key){ int l = 0, h = nums.length-1; while(l<=h){ int mid = l+(h-l)/2; //防止(h+l)/2加法溢出 if(nums[mid]==key) return mid; else if(nums[mid]...

2019-03-22 15:10:34 285

原创 操作系统---线程同步

进程中线程同步的四种常用方式:临界区(CCriticalSection)当多个线程访问一个独占性共享资源时,可以使用临界区对象。拥有临界区对象的线程可以访问被保护的资源或代码段,其他线程若想访问,则被挂起,直到拥有临界区的线程释放临界区为止。定义临界区对象CCriticalSection g_CriticalSection;在访问共享资源之前,先获取临界区对象,g_CriticalSec...

2019-03-21 16:22:46 440

原创 Java实现LRU策略缓冲

1.基于&amp;quot;双向链表+HashMap“实现:访问某个节点时,将该节点从双向链表中原位置删除,并重新插入链表头。这样可以保证链表尾部节点就是最近最久未被使用的,当节点数量大于缓存空间就淘汰链表尾部节点;为了能在O(1)时间内从链表删除某个节点,不能通过遍历链表查找该节点。需要借助HashMap存储key与节点的映射,通过key在O(1)时间内找到节点,并在O(1)时间内删除该节点。pub...

2019-03-08 21:05:21 467

原创 Java多线程的中断操作

InterruptedException如果一个线程处于阻塞、限期等待或无限期等待状态时,调用该线程的interrupt()方法中断线程,就会抛出InterruptedException,从而提前结束该线程;(注意:不能中断IO阻塞和Synchronized锁阻塞)Interupted如果一个线程的run()方法执行一个循环体,并且循环体中没有会抛出InterruptedException...

2019-03-06 15:33:09 266

转载 Web页面请求过程

转自:https://github.com/CyC2018/CS-Notes/blob/master/docs/notes/计算机网络.md#web-页面请求过程DHCP配置主机信息假设主机最开始没有IP地址以及其他信息,那么就需要先使用DHCP来获取;主机生成一个DHCP请求报文,并将这个报文放入具有目的端口67和源端口68的UDP报文段中;该报文段则被放入在一个具有广播IP目的地址(...

2019-03-06 14:23:37 339

原创 五种IO模型

一个输入操作通常有两个阶段:等待数据准备,即从存储介质(磁盘,网络等)拷贝到内核;从内核向进程复制数据阻塞I/O应用进程被阻塞,直到数据从内核缓冲区复制到应用进程缓冲区中才返回非阻塞I/O应用进程执行系统调用之后,内核返回一个错误码。应用进程可以继续执行,但是需要不断的执行系统调用来获知 I/O 是否完成,这种方式称为轮询(polling)。I/O复用使用 se...

2019-03-05 12:55:40 160

转载 JAVA中BitSet

JAVA中BitSet就是“位图”数据结构,根据“位图”的语义,数据的存在性可以使用bit位上的1或0来表示;一个bit具有2个值:0和1,正好可以用来表示false和true。对于判断“数据是否存在”的场景,我们通常使用HashMap来存储,不过hashmap这个数据结构KEY和Value的保存需要消耗较多的内存,不适合保存较多的数据,即大数据场景;比如在有10亿条URL中判定一个(www.ba...

2019-03-02 19:10:27 235

原创 Leetcode---208.实现Trie前缀树

Java非递归版class Trie { private class Node{ boolean isTrie; Map&lt;Character, Node&gt; children = new HashMap&lt;&gt;(); } private Node root = new Node(); /** Initia...

2019-03-02 17:59:11 481

原创 剑指offer---删除链表中重复的结点

2019-03-02 14:10:38 78

原创 LeetCode869---重新排序得到2的幂

2019-03-02 12:54:18 780

原创 操作系统---进程通信

对进程通信的理解进程是资源分配的基本单位,所以说某块资源分配给一个进程后,该资源只能是该进程独占,所以进程之间的通信就会比较麻烦,因为需要让不同的进程间能够看到一份公共的资源。所以交换数据必须通过内核,在内核中开辟一块缓冲区,进程1把数据从用户空间拷到内核缓冲区,进程2再从内核缓冲区把数据读走,内核提供的这种机制称为进程间通信。实现进程通信的方式匿名管道(pipe)管道是通过调用 pip...

2019-03-01 23:54:07 232

转载 操作系统---进程同步经典问题

生产者-消费者问题问题描述:使用一个缓冲区来保存物品,只有缓冲区没有满,生产者才可以放入物品;只有缓冲区不为空,消费者才可以拿走物品。因为缓冲区属于临界资源,因此需要使用一个互斥量 mutex 来控制对缓冲区的互斥访问。为了同步生产者和消费者的行为,需要记录缓冲区中物品的数量。数量可以使用信号量来进行统计,这里需要使用两个信号量:empty 记录空缓冲区的数量,full 记录满缓冲区的数量。...

2019-03-01 20:43:04 271

原创 SSM---对Spring的理解

概述Spring是一个开源框架,为简化企业级应用开发而生。Spring可以是使简单的JavaBean实现以前只有EJB才能实现的功能。Spring是一个IOC和AOP容器框架。主要核心控制反转(IOC),传统的Java开发模式中,当需要一个对象时,我们会自己使用new或者getInstance等直接或者间接调用构造方法创建一个对象,而在Spring开发模式中,spring容器使用了工厂模式...

2019-03-01 14:24:16 252

原创 操作系统---概述

基本特征并发一段时间内运行多个程序为并发;同一时刻运行多条指令为并行;并行需要硬件支持,比如多核处理器、分布式系统操作系统引入进程和线程,使得程序能够并发运行共享指系统资源可以被多个并发进程使用两种共享方式:互斥共享、同时共享虚拟两种虚拟技术:时分复用技术,多个进程在同一个处理器上并发执行空分复用技术,虚拟内存异步指一个进程不是一次执行完毕,而是走走停停...

2019-02-28 20:00:54 132

转载 JavaIO---字符操作

编码与解码编码就是把字符转换为字节,而解码是把字节重新组合成字符。如果编码和解码过程使用不同的编码方式那么就出现了乱码。GBK 编码中,中文字符占 2 个字节,英文字符占 1 个字节;UTF-8 编码中,中文字符占 3 个字节,英文字符占 1 个字节;UTF-16be 编码中,中文字符和英文字符都占 2 个字节。UTF-16be 中的 be 指的是 Big Endian,也就是大端...

2019-02-28 18:59:12 139

原创 装饰者模式

定义在不改变原类文件以及不使用继承的情况下,动态地将责任附加到对象上,从而实现动态拓展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象组成部分抽象构件(Component)它是具体构件和抽象装饰类的共同祖先,声明了具体构件需要实现的业务方法具体构件(ConcreteComponent)它是抽象构件的子类,用于定义具体的构件对象,实现了在抽象构件中声明的业务...

2019-02-28 18:47:23 105

原创 java基础

基本数据类型,byte/8、short/16、char/16、int/32、float/32、long/62、double/16、boolean(只有两个值,可以用1bit来表示,但是具体大小没有明确规定,JVM在编译时期将boolean类型的数据转成int类型)包装数据类型,基本数据类型都有对应的包装数据类型,两者之间的转换过程为装箱拆箱,装箱:基本数据类型–&gt;包装数据类型;缓存池:...

2019-02-28 17:18:03 100

原创 Java并发---互斥同步

Java提供两种锁机制控制多线程对互斥资源的互斥访问,一种是JVM实现的synchronized,一种是JDK实现的RentranLock.synchronized同步一个代码块;只作用于一个对象,如果调用两个不同的对象上的同步代码块,不会进行同步;public class SynchronizedExample { public void func1() { ...

2019-02-28 11:18:58 454

原创 剑指offer---数组中只出现一次地数字

题目描述一个整型数组里除了两个数字之外,其他的数字都出现了偶数次。请写程序找出这两个只出现一次的数字解题思路两个相同的数异或的结果为0;利用这点将数组的所有元素异或得到的结果即是不存在重复的两个元素异或的结果;diff &amp;= -diff 得到出 diff 最右侧不为 0 的位,也就是不存在重复的两个元素在位级表示上最右侧不同的那一位,利用这一位就可以将两个元素区分开来假设两个元...

2019-02-28 10:33:29 86

转载 剑指offer---求1+2+3+...+n

题目描述求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。解法使用递归解法最重要的是指定返回条件,但是本题无法直接使用 if 语句来指定返回条件。条件与 &amp;&amp; 具有短路原则,即在第一个条件语句为 false 的情况下不会去执行第二个条件语句。利用这一特性,将递归的返回条件取非然后作为 &...

2019-02-28 00:35:20 203

转载 面向对象思想

三大特性封装继承多态编译时多态:主要指方法的重载运行时多态:三个条件(继承,重写,向上转型)类图泛化关系:描述继承关系,extend实现关系:实现一个接口,implement聚合关系:整体和部分不是强依赖,整体不存在,部分可以存在组合关系:整体和部分强依赖,整体消失,部分跟着消失关联关系:表示不同类对象之间的关联,这是一种静态关系,与运行过程无关,如1对1,1对多…依...

2019-02-27 22:16:43 89

原创 剑指offer---第一个只出现一次的字符

使用 HashMap 对出现次数进行统计public int FirstNotRepeatingChar(String str) { if(str==null || str.length()==0) return -1; Map&lt;Character, Integer&gt; map = new HashMap&lt;&gt;();...

2019-02-27 17:10:43 76

转载 剑指offer---丑数

来源牛客网:https://www.nowcoder.com/profile/835689/codeBookDetail?submissionId=1522621通俗易懂的解释:首先从丑数的定义我们知道,一个丑数的因子只有2,3,5,那么丑数p = 2 ^ x * 3 ^ y * 5 ^ z,换句话说一个丑数一定由另一个丑数乘以2或者乘以3或者乘以5得到,那么我们从1开始乘以2,3,5,就得到...

2019-02-27 16:29:36 66

转载 剑指offer---整数中1出现的次数

来源:牛客网https://www.nowcoder.com/questionTerminal/bd7f978302044eee894445e244c7eee6主要思路:设定整数点(如1、10、100等等)作为位置点i(对应n的各位、十位、百位等等),分别对每个数位上有多少包含1的点进行分析根据设定的整数位置,对n进行分割,分为两部分,高位n/i,低位n%i当i表示百位,且百位对应的数&...

2019-02-27 15:28:57 97

原创 剑指offer---最小的K个数

解法一:最小堆复杂度:O(NlogK) + O(K)特别适合处理海量数据应该使用大顶堆来维护最小堆,而不能直接创建一个小顶堆并设置一个大小,企图让小顶堆中的元素都是最小元素。维护一个大小为 K 的最小堆过程如下:在添加一个元素之后,如果大顶堆的堆顶大小大于该元素,那么需要将大顶堆的堆顶元素与该元素交换,重新调整最大堆。public ArrayList&lt;Integer&gt; G...

2019-02-27 15:23:00 113

原创 剑指offer---数组中出现次数超过一半的数字

一般解法 :1.先对数组进行排序,然后取数组中间位置元素,再对数据扫描一趟来判断此元素是否为多数元素。时间复杂度O(nlog(n)),空间复杂度O(1)。2.使用一个hash表,对数组进行一趟扫描统计每个元素出现的次数,即可得到多数元素。时间复杂度O(n),空间复杂度O(n)多数投票问题解法:可以利用 Boyer-Moore Majority Vote Algorithm 来解决这个问题...

2019-02-27 10:31:02 138

转载 大数据量处理

给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url?方案1:可以估计每个文件安的大小为50G×64=320G,远远大于内存限制的4G。所以不可能将其完全加载到内存中处理。考虑采取分而治之的方法。s 遍历文件a,对每个url求取 ,然后根据所取得的值将url分别存储到1000个小文件(记为 )中。这样每个小文件的大约为300M。...

2019-02-27 10:16:41 111

原创 剑指offer---字符串的排列

基于回溯法思想(排列树):第一次交换:字符串首字母与其他位置字母分别交换,形成多个子树;再第一次交换基础上,发生第二次交换,第二次交换是字符串第二个字母与其他位置字母交换;…直到最后一个字母结束;public ArrayList&lt;String&gt; Permutation(String str) { List&lt;String&gt; res = new Arr...

2019-02-27 09:37:53 160

原创 剑指offer---二进制中的个数

题目描述输入一个整数,输出该数二进制表示中 1 的个数。n&amp;amp;(n-1)该位运算去除 n 的位级表示中最低的那一位。n : 10110100n-1 : 10110011n&amp;amp;(n-1) : 10110000时间复杂度:O(M),其中 M 表示 1 的个数。public int NumberOf1(int n) { int count ...

2019-02-27 01:01:06 166

原创 剑指offer---数值的整数次方

高效解法:下面的讨论中 x 代表 base,n 代表 exponent。因为 (x*x)n/2 可以通过递归求解,并且每次递归 n 都减小一半,因此整个算法的时间复杂度为 O(logN)。比如:我们的目标是求出一个数字的32次方,如果我们已经知道了它的16次方,那么只要16次放的基础上再平方一次就可以了。而16次方又是8次方的平方。这样以此类推,我们求32次方只需要5次乘方:先求平方,在平...

2019-02-27 01:00:58 118

原创 剑指offer---链表中倒数第k个节点

解题思路:设链表的长度为 N。设两个指针 P1 和 P2,先让 P1 移动 K 个节点,则还有 N - K 个节点可以移动。此时让 P1 和 P2 同时移动,可以知道当 P1 移动到链表结尾时,P2 移动到 N - K 个节点处,该位置就是倒数第 K 个节点。public ListNode FindKthToTail(ListNode head,int k) { if(head...

2019-02-27 01:00:49 74

原创 剑指offer---反转链表

递归:public ListNode FindKthToTail(ListNode head,int k) { if(head==null) return null; ListNode p1 = head; while(p1!=null &amp;amp;&amp;amp; k--&amp;gt;0){ p1 = p1.ne...

2019-02-27 01:00:42 83

转载 剑指offer---复制链表的复制

第一步,在每个节点的后面插入复制的节点。第二步,对复制节点的 random 链接进行赋值。第三步,拆分public RandomListNode Clone(RandomListNode pHead) { if(pHead == null){ return null; } //插入复制节点 ...

2019-02-27 01:00:35 124

原创 剑指offer---二叉搜索树与双向链表

题目描述:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。递归法,中序遍历: private TreeNode pre = null; private TreeNode head = null; public TreeNode Convert(TreeNode pRootOfTree) { in...

2019-02-27 01:00:22 93

原创 Arrays.asList()的坑

避免使用基本数据类型数组转换为列表 public static &amp;lt;T&amp;gt; List&amp;lt;T&amp;gt; asList(T... a) { return new ArrayList&amp;lt;&amp;gt;(a); } asList接收的参数是一个泛型的变长参数,因为基本数据类型是无法泛型化的,也就是说8个基本类型无法作为asList的参数,要想作为泛型参数必须使用对应的包装类型...

2018-12-18 22:27:01 148

原创 Vector与ArrayList

Vector的实现 - 与ArrayList的实现类似,但是使用了synchronized进行同步。ArrayList的实现 public synchronized boolean add(E e) { modCount++; ensureCapacityHelper(elementCount + 1); elementData[elementCount++] =...

2018-12-18 21:59:53 155

原创 ArrayList源码分析

ArrayList类的定义,父类及实现的接口:public class ArrayList&amp;amp;lt;E&amp;amp;gt; extends AbstractList&amp;amp;lt;E&amp;amp;gt; implements List&amp;amp;lt;E&amp;amp;gt;, RandomAccess, Cloneable, java.io.Serializable - 继承AbstractLi

2018-12-18 21:35:22 105

原创 迭代器模式与Java容器

迭代器模式 迭代器模式,提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示,属于行为型模式。 把在元素之间游走地责任交给迭代器,而不是聚合对象,并可以以不同方式来遍历整个聚合对象。 优点:  1.支持以不同方式遍历一个聚合对象;  2.将存储数据和遍历数据地职责分离,简化了聚合类;  3.在同一聚合上可以拥有多个遍历。 缺点:  1.将存储数据和遍历数据地职...

2018-12-18 17:48:10 138

转载 UML各种线的含义

原文:http://www.cnblogs.com/me115/p/4092632.html 内容目录:从一个示例开始类之间的关系时序图附录:《图说设计模式》看懂UML类图和时序图这里不会将UML的各种元素都提到,我只想讲讲类图中各个类之间的关系; 能看懂类图中各个类之间的线条、箭头代表什么意思后,也就足够应对 日常的工作和交流...

2018-12-18 16:38:06 603

LC3中断实验

计算机系统LC-3中断实验,利用LC-3让输入输出通过执行中断处理程序的方式来暂停和恢复一个正在运行的程序,内含汇编代码和注释

2018-06-13

调度算法实验

4种调度算法(先来先服务、短作业优先、高响应比、时间片轮转),含代码和分析以及运行结果

2018-06-13

缓冲区溢出攻击

计算机系统实验,内附代码(工具),以及实验报告,报告中含通关详细分析

2018-06-13

求Pi值的MPI并行程序

求Pi值得MPI并行程序实验报告,内附代码和分析,实验结果

2018-06-13

综合组网实验

计算机网络课程综合组网的实验,内附配置方法和配置分析。

2018-06-13

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除