问答 第12页

【怎么写银行家算法的代码】 import java.util.*;class ThreadTest { static int type = 4, num = 10; //定义资源数目和线程数目 static int[] resource = new int[type]; //系统资源总数 //st...【微信公众号封面图尺寸是多少】 微信公众号的封面图尺寸分为两种:一级和二级。一级封面图的推荐尺寸是900像素宽*500像素高,如果无法达到这个尺寸,应保持接近的宽高比,以确保缩略图效果。二级封面图,即缩略图,尺寸固定为200*200像素,这对于二级图文消息分享至关重要,因此重要信息应放置在封面图片中心...

怎么写银行家算法的代码

import java.util.*;

class ThreadTest {
static int type = 4, num = 10; //定义资源数目和线程数目
static int[] resource = new int[type]; //系统资源总数
//static int[] copyResource = new int[type]; //副本
static Random rand = new Random();
static Bank[] bank = new Bank[num]; //线程组
Bank temp = new Bank();

public void init() {
//初始化组中每个线程,随机填充系统资源总数
for(int i = 0; i < type; i++)
resource[i] = rand.nextInt(10) + 80;
System.out.print( Resource: );
for(int i = 0; i < type; i++)
System.out.print( + resource[i]);
System.out.println( );
for(int i = 0; i < bank.length; i++)
bank[i] = new Bank( # + i);
}
public ThreadTest4() {
init();
}

class Bank extends Thread {
//银行家算法避免死锁
public int[]
max = new int[type], //总共需求量
need = new int[type], //尚需资源量
allocation = new int[type]; //已分配量
private int[]
request = new int[type], //申请资源量
copyResource = new int[type]; //资源副本
private boolean isFinish = false; //线程是否完成
int[][] table = new int[bank.length][type*4]; //二维资源分配表

private void init() {
// 随机填充总共、尚需、已分配量
synchronized(resource) {
for(int i = 0; i < type; i++) {
max[i] = rand.nextInt(5) + 10;
need[i] = rand.nextInt(10);
allocation[i] = max[i] - need[i];
resource[i] -= allocation[i]; //从系统资源中减去已分配的
}
printer();
for(int i = 0; i < type; i++) {
if(resource[i] < 0) {
//若出现已分配量超出系统资源总数的错误则退出
System.out.println( The summation of Threads allocations is out of range! );
System.exit(1);
}
}
}
}

public Bank(String s) {
setName(s);
init();
start();
}
public Bank() {
//none
}

public void run() {
try {
sleep(rand.nextInt(2000));
}
catch(InterruptedException e) {
throw new RuntimeException(e);
}
while(true) {
//程序没有完成时一直不断申请资源
if(askFor() == false) {
try {
sleep(1000);
}
catch(InterruptedException e) {
throw new RuntimeException(e);
}
}
else
tryRequest();
if(noNeed() == true)
break;
}
//休眠一段时间模拟程序运行
try {
sleep(1000);
}
catch(InterruptedException e) {
throw new RuntimeException(e);
}
System.out.println(getName() + finish! );
synchronized(resource) {
//运行结束释放占有资源
for(int i = 0; i < type; i++) {
resource[i] += allocation[i];
need[i] = allocation[i] = max[i] = 0;
}
}
}

private void printer() {
//打印当前资源信息
System.out.print(getName() + Max: );
for(int i = 0; i < type; i++)
System.out.print( + max[i]);
System.out.print( Allocation: );
for(int i = 0; i < type; i++)
System.out.print( + allocation[i]);
System.out.print( Need: );
for(int i = 0; i < type; i++)
System.out.print( + need[i]);
System.out.print( Available: );
for(int i = 0; i < type; i++)
System.out.print( + resource[i]);
System.out.println( );
}
private boolean askFor() {
//随机产生申请资源量并检测是否超标
boolean canAsk = false;
for(int i = 0; i < type; i++) {
request[i] = rand.nextInt(20);
//防止申请量超过所需量
if(request[i] > need[i])
request[i] = need[i];
}
for(int i = 0; i < type; i++) //防止随机申请资源全为0
if(request[i] > 0)
canAsk = true;
synchronized(resource) {
//锁住可供资源检查是否超标
for(int i = 0; i < type; i++) {
if(request[i] > resource[i])
//如果申请资源超过可供资源则等待一段时间后重新申请
return false;
}
}
return canAsk;
}
private void tryRequest() {
//创建副本尝试分配请求
synchronized(resource) {
for(int i = 0; i < type; i++)
//依然要防止请求量超出范围
if(request[i] > resource[i])
return;
for(int i = 0; i < type; i++) {
//复制资源量并减去需求量到一个副本上
copyResource[i] = resource[i];
copyResource[i] -= request[i];
}
System.out.print(getName() + ask for: );
for(int i = 0; i < type; i++)
System.out.print( + request[i]);
System.out.println( );
if(checkSafe() == true) {
//如果检查安全则将副本值赋给资源量并修改占有量和需求量
for(int i = 0; i < type; i++) {
resource[i] = copyResource[i];
allocation[i] += request[i];
need[i] -= request[i];
}
System.out.println(getName() + request succeed! );
}
else
System.out.println(getName() + request fail! );
}
}
private boolean checkSafe() {
//银行家算法检查安全性
synchronized(bank) {
//将线程资源信息放入二维资源分配表检查安全性,0~type可用资源/type~type*2所需资源/type*2~type*3占有资源/type*3~-1可用+占用资源
for(int i = 0; i < bank.length; i++) {
for(int j = type; j < type*2; j++) {
table[i][j] = bank[i].need[j%type];
}
for(int j = type*2; j < type*3; j++) {
table[i][j] = bank[i].allocation[j%type];
}
}
//冒泡排序按需求资源从小到大排
for(int i = 0; i < bank.length; i++) {
for(int j = i; j < bank.length-1; j++) {
sort(j, 4);
}
}
//进行此时刻的安全性检查
for(int i = 0; i < type; i++) {
table[0][i] = copyResource[i];
table[0][i+type*3] = table[0][i] + table[0][i+type*2];
if(table[0][i+type*3] < table[1][i+type])
return false;
}
for(int j = 1; j < bank.length-1; j++) {
for(int k = 0; k < type; k++) {
table[j][k] = table[j-1][k+type*3];
table[j][k+type*3] = table[j][k] + table[j][k+type*2];
if(table[j][k+type*3] < table[j+1][k+type])
return false;
}
}
}
return true;
}
private void sort(int j, int k) {
//递归冒泡排序
int tempNum;
if(table[j][k] > table[j+1][k]) {
for(int i = type; i < type*2; i++) {
tempNum = table[j][i];
table[j][i] = table[j+1][i];
table[j+1][i] = tempNum;
}
/*temp = bank[j];
bank[j] = bank[j+1];
bank[j+1] = temp;*/
}
else if(table[j][k] == table[j+1][k] && k < type*2) //此资源量相同时递归下一个资源量排序并且防止超出范围
sort(j, k+1);
}
private boolean noNeed() {
//是否还需要资源
boolean finish = true;
for(int i = 0; i < type; i++) {
if(need[i] != 0) {
finish = false;
break;
}
}
return finish;
}
}

public static void main(String[] args) {
ThreadTest t = new ThreadTest();
//后台线程,设定程序运行多长时间后自动结束
new Timeout(30000, ---Stop!!!--- );
}
}
继续阅读:怎么写银行家算法的代码

微信公众号封面图尺寸是多少

微信公众号的封面图尺寸分为两种:一级和二级。一级封面图的推荐尺寸是900像素宽*500像素高,如果无法达到这个尺寸,应保持接近的宽高比,以确保缩略图效果。二级封面图,即缩略图,尺寸固定为200*200像素,这对于二级图文消息分享至关重要,因此重要信息应放置在封面图片中心。


具体设置方法如下:



  • 登录微信公众平台,进入素材管理,选择创建多图文消息。

  • 尽管官方推荐的尺寸是360*200,但实际显示时,手机微信上的标题可能会遮挡图片部分。因此,建议使用200*200像素的图片,或者保持宽高不超过500像素,以确保最佳显示效果。如果希望图片不被标题遮挡,制作时可适当预留空间在图片上方,只要高度超过200像素即可。

  • 上传封面图后,填写标题和内容,预览并确认无误,最后在其他微信公众号进行测试。


总的来说,确保你的封面图片清晰且适应微信平台的尺寸要求,将有助于提升内容的呈现效果和用户体验。

继续阅读:微信公众号封面图尺寸是多少

美国亚马逊和亚马逊海外购的区别是什么

美国亚马逊和亚马逊海外购的主要区别在于商品来源和价格。美国亚马逊直接从美国发货,商品价格相对稳定,而亚马逊海外购则是从其他国家采购,价格较低但可能高于部分海外站点。值得注意的是,亚马逊海外购其实是中国亚马逊的一个板块,因此也支持银联支付,但建议避免使用,因为银联在海外交易时可能会遇到退款难题。美国亚马逊的部分商品支持全球直邮,确保了商品从美国发货,直接送达全球各地,这样的服务在一定程度上保证了商品的正品身份,尤其对于第三方商品,虽然无法完全杜绝假货,但美国法律的完善使得假货问题相对较少。相比之下,亚马逊海外...
继续阅读:美国亚马逊和亚马逊海外购的区别是什么

专科大学生学市场营销怎么样

我自己是专科市场营销专业的毕业生,认为专科市场营销还是有其独特之处的。首先,专科学校更注重学生的专业技能培养。比如,我们营销专业每学期都会安排一到两次的实训,由专业课老师指导我们进行课题研究。这些实训由浅入深,从最开始让你卖东西,写过程和总结,到后来让你撰写整个销售策划方案,项目计划,人员安排,使你能够将所学知识全面应用。其次,专科学校通常会为学生安排实习单位。尽管这些实习单位不一定完全对口,但学校不会强制要求学生自己寻找。总的来说,无论是专科还是本科都有各自的优势,关键在于自身的努力和把握机会。在实习过程...
继续阅读:专科大学生学市场营销怎么样

SOP是什么,写SOP的时候有什么基本的原则,什么样的SOP是好的SOP?_百度...

SOP,私域运营的标准化指南:如何打造高效的SOP模板在私域运营的世界里,SOP就像一座导航灯塔,为企业微信运营带来了秩序与效率。作为专业的服务商,圈量深知其重要性,因此,我们将深入探讨SOP的本质,以及如何制定出优质的SOP,帮助你的运营之路更加顺畅。SOP,全称Standard Operating Procedure,即标准化操作流程,简而言之,它就是运营中的“游戏规则”。有了明确的SOP,私域运营才能从个体操作迈向规模化、精细化管理。圈量作为微信用户运营管理的专家,我们耗时打造了一份详尽的SOP模板,...
继续阅读:SOP是什么,写SOP的时候有什么基本的原则,什么样的SOP是好的SOP?_百度...

线下做营销活动,现场送什么礼品才能吸引年轻人积极参与?

无论是线上还是线下的营销活动,有效的使用户了解并参与进来是活动成功的关键。除了前期宣传预热,现场游戏互动是非常重要的环节,恰当的奖品激烈不仅能活跃气氛吸引关注,还能将用户带入到活动当中,进而了解我们的产品。具体到你这个问题,送什么礼品才能吸引年轻人积极参与呢?目前各种营销活动随处可见,大家已经对小扇子、水杯、笔记本这样的常规礼品免疫了,建议你可以尝试一下数字礼品,比如腾讯视频会员、网易云音乐会员、抖音直播币、WPS会员、美团外卖代金券等,这些都比较受年轻人的欢迎。这些东西均可以直接在福禄聚采商城上批量采购,...
继续阅读:线下做营销活动,现场送什么礼品才能吸引年轻人积极参与?

手机重置输入GooIe帐户信息是什么?

当你想取出或更换谷歌帐户,您会发现,系统不会删除现有的谷歌帐户,它会提示你恢复出厂设置,删除,那么你是不是很苦恼呢?我也和其他人一样,当我用我的谷歌帐户,帮朋友弄一台机器,结果莫名其妙更多的尊重,但我没有找到退出谷歌帐户,您必须还原出厂设置!嗯,我当然不这样做,一些试验和错误之后,我终于找到解决它的办法!首先,确保你有一个设备(手机)有一个根(不是根急着找一个超级用户有回收包装单刷或者去论坛置顶方法的根!/>第一步)1:GoogleBackupTransport.apk2:GoogleContacts...
继续阅读:手机重置输入GooIe帐户信息是什么?

国际E邮宝是什么?epacket寄件要求及使用流程介绍

国际E邮宝,即E邮宝、epacket,是中国邮政专为跨境电商打造的经济型小包服务。它借助国际EMS物流资源,大幅提升了小件包裹的运输效率,显著缩短了物流时间。在全球电子商务市场中,E邮宝凭借快速的配送速度和较低的价格,成为了亚马逊、速卖通、ebay、shopify等跨境电商B2C卖家的主要物流选择。然而,对于一些新入行的卖家,由于对物流行业缺乏了解,不清楚E邮宝(epacket)的具体使用要求和流程,盲目使用可能会导致一些意外情况的发生。接下来,我们将详细介绍E邮宝(epacket)的寄件要求、使用流程等关...
继续阅读:国际E邮宝是什么?epacket寄件要求及使用流程介绍

日本雅虎邮箱注册步骤

日本雅虎邮箱的注册步骤主要包括以下几个环节:首先,用户需要访问日本雅虎的官方网站,并在网站首页找到并点击“新规取得”按钮,这是开始注册新账号的入口。接着,在弹出的注册界面中,用户需要填写一系列必要的个人信息。这通常包括邮箱地址、用户ID、密码以及邮政编码等。此外,用户还需要编辑并完成输入位于界面最下方的日语验证码,这是为了验证注册信息的有效性。完成上述信息的填写和验证后,用户需要点击登录按钮,此时系统会向用户提供的邮箱地址发送一个验证码。用户需要在弹出的界面框中输入这个验证码,以进一步确认账号的真实性。最后...
继续阅读:日本雅虎邮箱注册步骤

爬取采集亚马逊商品评论(Review)一键搞定!

大家好,我是阿狸,瓦特研究所的所长。1968年的那个鼠标诞生,如今已不再仅仅是键盘操作的辅助,而成为我们日常工作中的一种工具。然而,有人在面对大量商品调研时,仍然在鼠标与复制粘贴之间挣扎,这让人不禁疑惑:没有鼠标,我们还能用什么?答案来啦!我发现了一个名为Instant Data Scraper的神奇插件,它改变了我的采集方式。原本繁复的火车头、八爪鱼或Web Scraper等工具,似乎都变得多余。Instant Data Scraper运用了AI技术,无需编程知识,就能智能抓取Amazon、eBay等各大...
继续阅读:爬取采集亚马逊商品评论(Review)一键搞定!