- 博客(17)
- 收藏
- 关注
原创 用java实现银行家算法
银行家算法核心是 先寻找满足系统当前剩余的资源量(avaliable )>=进程运行所需的资源数的进程(need),再假设这个进程安全校验是成功的,当这个进程运行完毕后,释放资源后,现在系统当前剩余的资源(avaliable)=avaliable+该线程之前已分配的资源(allocation) ,将该节点进程设为处理时忽略进程,再以上条件为前提进行安全校验。最后不断重复此步骤直到找出安全的执行序列
2017-07-17 15:00:45
7693
1
原创 java实现读者-写者问题
问题背景:一个数据文件或记录,可以被多个进程或者线程共享,其中不同的读进程可以并发的访问该临界资源,读和写进程或者线程,不能并发的对该临界资源进行错误,否则造成脏读和脏写。而我们今天的读者和写者模式 也成为读写锁,不过这里以信号量的方式进行互斥操作,就可以解决这个问题。 下面来看代码import java.util.concurrent.ExecutorService;import java.u
2017-07-15 17:53:17
4895
1
原创 史上最简单的kafka实战教程
你在写java 版的 kafka程序可能会遇到如下问题问题一:程序抛出了org.apache.kafka.common.errors.TimeoutException:在application.yml 中加入下面这句话 :logging.level.root:debug然后再看报错,可以发现下面这个错误错误:java.io.IOException: Can't resolve address: u...
2018-06-26 16:07:28
5468
原创 排列组合问题
public class Main { static int num=0; public static void swap(char[] arr,int i,int j){ char temp; temp=arr[i]; arr[i]=arr[j]; arr[j]=temp; } public st...
2018-05-04 22:40:15
247
原创 java经典笔试题~求链表是否带环,即其链表的长度
已经知道一条链表的头结点,求一个链表是否带环路,以及该链表的长度。 解题思路:遇到这种问题我们可以这么解决,我们想一下以前学数学的时候有也做过这种需求的题目,当A以x的速度沿着这条路跑,B以2x的速度沿着这条路跑,问这条路是否是存在环路的,并且求这条路的长度,我们很容易会想到当A如果能与B在开始后某一时刻相遇,说明这条路是存在环路的,如果A和B永远不会相遇说明这条路不是存在环路的。同理我们可以用俩
2017-10-22 13:49:50
782
原创 搜狗笔试题~求圆上的点最多可以组成多少个钝角三角形
题目好像是这样的给出一组数据点,这些点都在圆上,给出每个点的距离正北方向的角度,角度为顺时针递增,求圆上的点最多可以组成多少个钝角三角形,下面看一下输入样例。 第一行 x 表示有 多少个点 第2行到n行为每个点到正北方向的角度。 输出 y 表示有最多有y 个钝角三角形 输入样例 4 0 180 179 45 输出样例 2 解题思路,由于根据数学知识可知圆上的点与直径组成的三角
2017-10-17 11:55:41
1400
原创 bitMap
bitMap 因为是用位来存储,相比较其他数据来说比如int ,可以多存32个不同的数据。 bitMap适用场景,将给定一个10亿级的不重复的int型数据集合A,查询某个数据是否在A中。 如果用普通的数组存储或者HashMap,那么内存绝对要爆掉,可以计算一下4*10*10^8/1024/1024/1024=3.7G 如果用bitMap存储计算一下内存10*10^8/8/1024/1024/1
2017-09-18 16:17:08
557
原创 笔试经典题之链表倒序
假设有下面的这个链表 那么如何让它倒序了 首先我们创建两个值为null 的链表节点引用如下图 next=head.next; 执行上面的操作链表变化如下 head.next=pre; 因为pre=null 所以可以等价于下面这张图 pre=head; head=next; 这是第一次循环的结果 我们在来一下就可以看到神奇的变化了 next=head.
2017-09-09 18:29:38
379
原创 多线程下安全的单例模式(双重校验锁实现,登记者模式实现,利用内部类实现,利用枚举实现)
首先我们来看一下什么是懒汉模式:就是对象是在你需要的时后才会创建,也就是说当你第一次调用静态方法getInstance() 时它才会帮创建对象。 下面来看一下懒汉模式的线程安全的写法即双重校验锁的懒汉模式public class TwoCheckSingleInstance { private static volatile TwoCheckSingleInstance instanc
2017-08-25 18:09:55
547
原创 阿里巴巴测验题猴子摘桃问题(LIS问题)
问题描述:小猴子下山,沿着下山的路由一排桃树,每棵树都结了一些桃子。小猴子想摘桃子,但是有一些条件需要遵守,小猴子只能沿着下山的方向走,不能回头,每棵树最多摘一个,而且一旦摘了一棵树的桃子,就不能再摘比这棵树结的桃子少的树上的桃子了,那么小猴子最多能摘几个桃子呢?举例说明,比如有5课树,分别结了10,4,5,12,8颗桃子,那么小猴子最多能摘3颗桃子,来自于结了4,5,8或者4,5,12颗桃子的树。
2017-08-21 22:37:00
2406
原创 动态规划之换零钱
问题描述:如果我们有面值为1元、3元和5元的硬币若干枚,如何用最少的硬币凑够11元? 有人会说这太简单,对是太简单,但请你用动态规划解,将问题进行抽象,最后达到什么程度了,给出任意面值集合V,凑够的面值为m,求所需硬币最少的个数 j. 这是动态规划的入门题。 首先先介绍一下什么是动态规划: 动态规划算法通常基于一个递推公式及一个或多个初始状态。 当前子问题的解将由上一次子问题
2017-08-21 19:45:15
4193
2
原创 操作系统之线程
一. 首先我们来看一下线程是什么鬼: 上一章我们学的进程,其实线程说白就是一个轻进程,线程是可以拥有极小的资源,它属于进程,并和多个线程共享该进程的资源,是OS 资源分派和调度的基本单位,线程可以独立运行,也具有并发性。线程的创建速度比进程快,线程间的切换,资源的开销比进程要少很多。 线程具有6大特性,1.独立性,2.支持多处理机,3拥有资源,4并发性,5。是调度的基本单位,6.系统开销少。
2017-07-16 12:46:58
437
原创 操作系统之进程
首先我们来了解一下进程是什么鬼: 一 进程是程序的一个执行过程,是进程实体的一个运行过程,是操作系统分配资源和调度的独立单位。 进程有PCB +程序段+数据段等构成。 PCB (进程控制块)数据结构有,进程标识符+处理机信息+进程调度信息+进程控制信息组成。 PCB的作用:系统创建一个新进程时就会,创建一个PCB,进程结束时,又收回PCB ,进程也随之消亡,系统是通过PCB 来感知进程的存
2017-07-15 20:54:37
720
原创 java实现哲学家进餐问题,及其死锁问题的解决
首先我们来了解一下哲学家进餐问题的背景: 话说有5个哲学家围在一张桌子上吃饭,桌上只有5g根筷子,一个要吃饭必须的得有两根筷子,哲学家要吃饭时总是先拿起左边的筷子,在拿起右边的筷子,这样最佳的情况是可同时有两人可以进餐,最坏的情况是大家都拿起了左边的筷子,大家都没得吃。哲学家吃完时会停下来思考一段时间,等饿了在吃。 下面我们来看一下java如何模拟哲学家进餐问题import java.util.
2017-07-15 15:34:37
10025
3
原创 java实现生产者与消费者
生产者与消费者模式是一种经典同步案例 下面我用代码来描述一下这个同步该如何实现 实现基于lock+Condition 模式import java.util.ArrayList;import java.util.List;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;imp
2017-07-14 17:57:13
776
1
原创 用java实现操作系统的前趋图
学过操作系统的人都知道前驱图是一个很好用来描述多个进程或线程间的同步执行的过程 科普一下同步的概念:同步是用来描述多个并发线程或进程按某种规则顺序执行的过程。 首先我们来看一下最简单的前趋图 java如何实现了 有俩种方式 第一种基于Lock+Condition方式import java.util.concurrent.ExecutorService;import java.util
2017-07-14 16:25:51
2163
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅