beisen
#include <stdio.h>
#include <pthread.h>
#include <windows.h>
#define N 100
#define true 1
#define producerNum 10
#define consumerNum 5
#define sleepTime 1000 typedef int semaphore;
typedef int item;
item buffer[N] = {};
int in = ;
int out = ;
int proCount = ;
semaphore mutex = , empty = N, full = , proCmutex = ; void * producer(void * a){
while(true){
while(proCmutex <= );
proCmutex--;
proCount++;
printf("生产一个产品ID%d, 缓冲区位置为%d\n",proCount,in);
proCmutex++; while(empty <= ){
printf("缓冲区已满!\n");
}
empty--; while(mutex <= );
mutex--; buffer[in] = proCount;
in = (in + ) % N; mutex++;
full++;
Sleep(sleepTime);
}
} void * consumer(void *b){
while(true){
while(full <= ){
printf("缓冲区为空!\n");
}
full--; while(mutex <= );
mutex--; int nextc = buffer[out];
buffer[out] = ;//消费完将缓冲区设置为0 out = (out + ) % N; mutex++;
empty++; printf("\t\t\t\t消费一个产品ID%d,缓冲区位置为%d\n", nextc,out);
Sleep(sleepTime);
}
} int main()
{
pthread_t threadPool[producerNum+consumerNum];
int i;
for(i = ; i < producerNum; i++){
pthread_t temp;
if(pthread_create(&temp, NULL, producer, NULL) == -){
printf("ERROR, fail to create producer%d\n", i);
exit();
}
threadPool[i] = temp;
}//创建生产者进程放入线程池 for(i = ; i < consumerNum; i++){
pthread_t temp;
if(pthread_create(&temp, NULL, consumer, NULL) == -){
printf("ERROR, fail to create consumer%d\n", i);
exit();
}
threadPool[i+producerNum] = temp;
}//创建消费者进程放入线程池 void * result;
for(i = ; i < producerNum+consumerNum; i++){
if(pthread_join(threadPool[i], &result) == -){
printf("fail to recollect\n");
exit();
}
}//运行线程池
return ;
}
2
#include<stdio.h>
#include<stdlib.h>
#include<semaphore.h>
#include<pthread.h>
#include<unistd.h> #define NumOf_Producer 5 //the max num of producer
#define NumOf_Consumer 10 //the max num of consumer
#define Maxnum 10 // the max num of product
sem_t Empty_sem; //the goal of whether the num of product is null
sem_t Full_sem; //the goal of whether the num of product is equal to Maxnum pthread_mutex_t Mutex; //the goal of whether someone use the buff int Producer_id = ;
int Consumer_id = ;
int NowNumOfProduce = ;
void *Producer(void *arg) //the thread of producer
{
int id = Producer_id++;
while()
{
sleep(0.1);
sem_wait(&Full_sem); //when it comes to zero ,it means that the num of product is equal to Maxnum
pthread_mutex_lock(&Mutex); //lock the buff
NowNumOfProduce++;
printf("Producerthread %d product one,the num is:%d \n",id%NumOf_Producer,NowNumOfProduce);
pthread_mutex_unlock(&Mutex);
sem_post(&Empty_sem); //when it comes to ten ,it means there are ten products can be used by consumer
} return ((void *));
} void *Consumer(void *arg)
{
int id = Consumer_id++;
while()
{
sleep(0.2);
sem_wait(&Empty_sem);
pthread_mutex_lock(&Mutex);
NowNumOfProduce--;
printf("Consumerthread %d use product one,the num is:%d \n",id%NumOf_Consumer,NowNumOfProduce);
pthread_mutex_unlock(&Mutex);
sem_post(&Full_sem);
}
return ((void *));
} int main()
{
pthread_t Con[NumOf_Consumer];
pthread_t Pro[NumOf_Producer]; int temp1 = sem_init(&Empty_sem,,);
int temp2 = sem_init(&Full_sem,,Maxnum);
if(temp1&&temp2!=)
{
printf("sem init failed \n");
exit();
} int temp3 = pthread_mutex_init(&Mutex,NULL); if(temp3!=)
{
printf("Mutex init failed \n");
exit();
} for(int i= ;i<NumOf_Producer;i++)
{
int temp4 = pthread_create(&Pro[i],NULL,Producer,(void *)&i);
if(temp4!=)
{
printf("thread create failed !\n");
exit();
}
} for(int i=;i<NumOf_Consumer;i++)
{
int temp5 = pthread_create(&Con[i],NULL,Consumer,(void *)&i);
if(temp5!=)
{
printf("thread create failed !\n");
}
exit();
}
//destroy the thread
for(int i=;i<NumOf_Consumer;i++)
{
pthread_join(Con[i],NULL);
} for(int i=;i<NumOf_Producer;i++)
{
pthread_join(Pro[i],NULL);
} return ;
}
3
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<semaphore.h>
#include<pthread.h>
#define msleep(x) usleep(x*1000)
#define PRODUCT_SPEED 3 //生产速度
#define CONSUM_SPEED 1 //消费速度
#define INIT_NUM 3 //仓库原有产品数
#define TOTAL_NUM 10 //仓库容量 sem_t p_sem, c_sem, sh_sem;
int num=INIT_NUM; void product(void) //生产产品
{
sleep(PRODUCT_SPEED);
} int add_to_lib() //添加产品到仓库
{
num++;//仓库中的产品增加一个
msleep();
return num;
} void consum() //消费
{
sleep(CONSUM_SPEED);
} int sub_from_lib() //从仓库中取出产品
{
num--; //仓库中的产品数量减一
msleep();
return num;
} void *productor(void *arg) //生产者线程
{
while()
{
sem_wait(&p_sem);//生产信号量减一
product();// 生产延时
sem_wait(&sh_sem);//这个信号量是用来互斥的
printf("push into! tatol_num=%d\n",add_to_lib());
sem_post(&sh_sem);
sem_post(&c_sem); //消费信号量加一
}
} void *consumer(void *arg) //消费者线程
{
while()
{ sem_wait(&c_sem); //消费者信号量减一
sem_wait(&sh_sem);
printf("pop out! tatol_num=%d\n",sub_from_lib());
sem_post(&sh_sem);
sem_post(&p_sem);//生产者信号量加一
consum();//消费延时 }
} int main()
{
pthread_t tid1,tid2;
sem_init(&p_sem,,TOTAL_NUM-INIT_NUM); sem_init(&c_sem,,INIT_NUM); sem_init(&sh_sem,,); pthread_create(&tid1,NULL,productor,NULL);
pthread_create(&tid2,NULL,consumer,NULL); pthread_join(tid1,NULL);
pthread_join(tid2,NULL);
return ;
}
er
1https://www.cnblogs.com/Dzhouqi/p/3362259.html
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<semaphore.h>
#include<pthread.h>
#define msleep(x) usleep(x*1000)
#define PRODUCT_SPEED 3 //生产速度
#define CONSUM_SPEED 1 //消费速度
#define INIT_NUM 3 //仓库原有产品数
#define TOTAL_NUM 10 //仓库容量 sem_t p_sem, c_sem, sh_sem;
int num=INIT_NUM; void product(void) //生产产品
{
sleep(PRODUCT_SPEED);
} int add_to_lib() //添加产品到仓库
{
num++;//仓库中的产品增加一个
msleep();
return num;
} void consum() //消费
{
sleep(CONSUM_SPEED);
} int sub_from_lib() //从仓库中取出产品
{
num--; //仓库中的产品数量减一
msleep();
return num;
} void *productor(void *arg) //生产者线程
{
while()
{
sem_wait(&p_sem);//生产信号量减一
product();// 生产延时
sem_wait(&sh_sem);//这个信号量是用来互斥的
printf("push into! tatol_num=%d\n",add_to_lib());
sem_post(&sh_sem);
sem_post(&c_sem); //消费信号量加一
}
} void *consumer(void *arg) //消费者线程
{
while()
{ sem_wait(&c_sem); //消费者信号量减一
sem_wait(&sh_sem);
printf("pop out! tatol_num=%d\n",sub_from_lib());
sem_post(&sh_sem);
sem_post(&p_sem);//生产者信号量加一
consum();//消费延时 }
} int main()
{
pthread_t tid1,tid2;
sem_init(&p_sem,,TOTAL_NUM-INIT_NUM); sem_init(&c_sem,,INIT_NUM); sem_init(&sh_sem,,); pthread_create(&tid1,NULL,productor,NULL);
pthread_create(&tid2,NULL,consumer,NULL); pthread_join(tid1,NULL);
pthread_join(tid2,NULL);
return ;
}
2https://blog.csdn.net/qq_33783291/article/details/70147401
#include <iostream>
#include <string>
#include <cmath> using namespace std; const double PRECISION = 1E-;
const int COUNT_OF_NUMBER = ;
const int NUMBER_TO_BE_CAL = ;
double number[COUNT_OF_NUMBER];
string expression[COUNT_OF_NUMBER];
bool Judgement = false; //判断是否有解。
int count = ; void Search(int n)
{
if (n == )
{
if ( fabs(number[] - NUMBER_TO_BE_CAL) <= PRECISION ) //对于除法,要小心小数的精确位数
{
cout << expression[] << "\t\t";
Judgement = true;
count ++;
if((count % )==)
cout<<endl;
}
else
{ } } for(int i=; i < n; i++)
{
for (int j = i + ; j < n; j++)
{
double a, b;
string expa, expb;
a = number[i];
b = number[j];
number[j] = number[n - ]; //递归之后,n比以前小一位,所以可以不停向前赋值
expa = expression[i];
expb = expression[j];
expression[j] = expression[n - ]; //递归之后,n比以前小一位,所以可以不停向前赋值
expression[i] = '(' + expa + '+' + expb + ')'; //加法不需要分顺序
number[i] = a + b;
Search(n-);
expression[i] = '(' + expa + '-' + expb + ')'; //减法应该分顺序,减数以及被减数
number[i] = a - b;
Search(n-);
expression[i] = '(' + expb + '-' + expa + ')'; //减法应该分顺序,减数以及被减数
number[i] = b - a;
Search(n-);
expression[i] = '(' + expa + '*' + expb + ')'; //乘法不需要分顺序
number[i] = a * b;
Search(n-);
if (b != )
{
expression[i] = '(' + expa + '/' + expb + ')'; //除法应该分顺序,除数以及被除数
number[i] = a / b;
Search(n-);
}
if (a != )
{
expression[i] = '(' + expb + '/' + expa + ')'; //除法应该分顺序,除数以及被除数
number[i] = b / a;
Search(n-);
} number[i] = a; //这4句语句是为了防止如果上面几种可能都失败了的话,
number[j] = b; //就把原来的赋值撤消回去,以无干扰的正确的进入到下一次
expression[i] = expa; //for循环队列中。
expression[j] = expb; //
}
}
} int main()
{
cout<<"请依次输入4个数字:\n";
for (int i = ; i < COUNT_OF_NUMBER; i++)
{
char buffer[];
cout<<"第"<<i+<<"个卡片:";
cin >> number[i];
itoa(number[i], buffer, ); //itoa()函数的作用是把第一个参数(数值)传送到第二个参数(字符串)中去,第三个
//参数(int型)是该数值在字符串里以什么进制存放。
expression[i] = buffer;
}
cout<<endl;
Search(COUNT_OF_NUMBER) ;
if(Judgement==true)
{
cout << "\n成功" << endl;
cout<<"所以可以计算的次数总和 = "<<count<<endl;
}
else
{
cout << "失败" << endl;
}
system("pause");
return ;
}
3
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<semaphore.h>
#include<pthread.h>
#define msleep(x) usleep(x*1000)
#define PRODUCT_SPEED 3 //生产速度
#define CONSUM_SPEED 1 //消费速度
#define INIT_NUM 3 //仓库原有产品数
#define TOTAL_NUM 10 //仓库容量 sem_t p_sem, c_sem, sh_sem;
int num=INIT_NUM; void product(void) //生产产品
{
sleep(PRODUCT_SPEED);
} int add_to_lib() //添加产品到仓库
{
num++;//仓库中的产品增加一个
msleep();
return num;
} void consum() //消费
{
sleep(CONSUM_SPEED);
} int sub_from_lib() //从仓库中取出产品
{
num--; //仓库中的产品数量减一
msleep();
return num;
} void *productor(void *arg) //生产者线程
{
while()
{
sem_wait(&p_sem);//生产信号量减一
product();// 生产延时
sem_wait(&sh_sem);//这个信号量是用来互斥的
printf("push into! tatol_num=%d\n",add_to_lib());
sem_post(&sh_sem);
sem_post(&c_sem); //消费信号量加一
}
} void *consumer(void *arg) //消费者线程
{
while()
{ sem_wait(&c_sem); //消费者信号量减一
sem_wait(&sh_sem);
printf("pop out! tatol_num=%d\n",sub_from_lib());
sem_post(&sh_sem);
sem_post(&p_sem);//生产者信号量加一
consum();//消费延时 }
} int main()
{
pthread_t tid1,tid2;
sem_init(&p_sem,,TOTAL_NUM-INIT_NUM); sem_init(&c_sem,,INIT_NUM); sem_init(&sh_sem,,); pthread_create(&tid1,NULL,productor,NULL);
pthread_create(&tid2,NULL,consumer,NULL); pthread_join(tid1,NULL);
pthread_join(tid2,NULL);
return ;
} // 1.16.cpp : Defines the entry point for the console application.
// #include "stdafx.h"
#include <iostream>
#include<string>
#include "stdio.h"
#include <math.h>
using namespace std; const int CardsNumber = ;//24点有四张卡
const double ErrorThreshold=1E-;//由于舍入误差,需要加入一个误差阈值,误差在一定范围之内为,判断相等
const int ResultValue = ; #define N 4 string result[CardsNumber]={"","","",""};
double number[CardsNumber]={,,,};
bool PointsGame(int n)
{
if(n == )
{
//如果结果为24
//由于舍入误差,应允许一定范围内的误差 if( fabs(number[]-ResultValue)<ErrorThreshold)
{
cout<<result[]<<endl;
//cout<<'1'<<endl;
return true;
}
else
{
return false;
} } for(int i= ;i<n ;i++)
{
for(int j=i+;j<n;j++)
{
double a,b;
string expa,expb; a=number[i];
b=number[j];
number[j]=number[n-]; expa=result[i];
expb=result[j];
result[j]=result[n-]; result[i]='('+ expa +'+'+expb+')';
number[i]=a+b;
if(PointsGame(n-))
return true; result[i]='('+ expa +'-' + expb +')';
number[i]=a-b;
if(PointsGame(n-))
return true; result[i]='('+ expa + '*' + expb +')';
number[i]=a*b;
if(PointsGame(n-))
return true; if(b!=)
{result[i]='('+expa +'/'+ expb +')';
number[i]=a/b;
if(PointsGame(n-))
return true; } number[i]=a;
number[j]=b;
result[i]=expa;
result[j]=expb; }
} return false;
} int _tmain(int argc, _TCHAR* argv[])
{ PointsGame(); return ;
} #include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
using namespace std; int a1[],b1[]; void gol(char f,int k,int num)
{
if (f=='a') for(int i=k;i<=num;i++) a1[i-]=a1[i];
if (f=='b') for(int i=k;i<=num;i++) b1[i-]=b1[i];
} int cal(int a,int b,int num)
{
if (num==) return a+b;
if (num==) return a-b;
if (num==) return a*b;
if (num==) return a/b;
} string cha(int a)
{
string p;
p="";
while(a>)
{
p=(char)(a%)+p;
a/=;
}
return p;
} string chaf(int a)
{
if (a==) return "+";
if (a==) return "-";
if (a==) return "*";
if (a==) return "/";
} int main()
{
string ans[];
int a[],b[],i,anum,bnum;
for(i=;i<=;i++) cin >> a[i];
memset(b,,sizeof(b));
bool f[];
int s,j,d[],ansnum;
while(b[]==)
{
/*for(i=1;i<=3;i++)
{
cout << b[i] << " ";
}*/
//cout << endl;
memset(f,,sizeof(f));
s=;
for(i=;i<=;i++)
{
if (b[i]== || b[i]==)
{
if (b[i-]== || b[i-]== || b[i+]== || b[i+]==)
{
s++;
d[s]=i;
}
}
}
while(f[]==)
{
for(i=;i<=s;i++)
{
cout << f[i] << " ";
}
cout << endl;
for(i=;i<=;i++) a1[i]=a[i];
for(i=;i<=;i++) b1[i]=b[i];
anum=;bnum=;
for(i=;i<=;i++) ans[i]="";
ansnum=;
j=;
while(j<=bnum)
{
if (f[j]==)
{
ansnum++;
ans[ansnum]=cha(a1[d[j]])+chaf(b1[d[j]])+chaf(a1[d[j]+])+"=";
a1[d[j]]=cal(a1[d[j]],a1[d[j]+],b1[d[j]]);
ans[ansnum]+=cha(a1[d[j]]);
gol('a',d[j]+,anum);
anum--;
gol('b',d[j]+,bnum);
bnum--;
}
j++;
}
j=;
//cout << anum << " " << bnum << endl;
while(j<=bnum)
{
if (b[j]== || b[j]==)
{
ansnum++;
ans[ansnum]=cha(a1[j])+chaf(b1[j])+chaf(a1[j+])+"=";
a1[j]=cal(a1[j],a1[j+],b1[j]);
ans[ansnum]+=cha(a1[j]);
gol('a',j+,anum);
anum--;
gol('b',j+,bnum);
bnum--;
}
j++;
}
//cout << anum << " " << bnum << endl;
j=;
while(j<=bnum)
{
ansnum++;
ans[ansnum]=cha(a1[j])+chaf(b1[j])+chaf(a1[j+])+"=";
a1[j]=cal(a1[j],a1[j+],b1[j]);
ans[ansnum]+=cha(a1[j]);
gol('a',j+,anum);
anum--;
gol('b',j+,bnum);
bnum--;
}
//cout << anum << " " << bnum << endl;
//cout << a1[1] << endl;
if (a1[]==)
{
for(j=;j<=ansnum;j++)
{
cout << ans[j] << endl;
}
return ;
}
j=s;
while(f[j]==)
{
f[j]==;
j--;
}
f[j]=;
}
//cout << "---------------\n";
i=;
while(b[i]==)
{
b[i]=;
i--;
}
b[i]++;
}
} #include <iostream>
#include <string>
#include <cmath> using namespace std; const double PRECISION = 1E-;
const int COUNT_OF_NUMBER = ;
const int NUMBER_TO_BE_CAL = ;
double number[COUNT_OF_NUMBER];
string expression[COUNT_OF_NUMBER];
bool Judgement = false; //判断是否有解。
int count = ; void Search(int n)
{
if (n == )
{
if ( fabs(number[] - NUMBER_TO_BE_CAL) <= PRECISION ) //对于除法,要小心小数的精确位数
{
cout << expression[] << "\t\t";
Judgement = true;
count ++;
if((count % )==)
cout<<endl;
}
else
{ } } for(int i=; i < n; i++)
{
for (int j = i + ; j < n; j++)
{
double a, b;
string expa, expb;
a = number[i];
b = number[j];
number[j] = number[n - ]; //递归之后,n比以前小一位,所以可以不停向前赋值
expa = expression[i];
expb = expression[j];
expression[j] = expression[n - ]; //递归之后,n比以前小一位,所以可以不停向前赋值
expression[i] = '(' + expa + '+' + expb + ')'; //加法不需要分顺序
number[i] = a + b;
Search(n-);
expression[i] = '(' + expa + '-' + expb + ')'; //减法应该分顺序,减数以及被减数
number[i] = a - b;
Search(n-);
expression[i] = '(' + expb + '-' + expa + ')'; //减法应该分顺序,减数以及被减数
number[i] = b - a;
Search(n-);
expression[i] = '(' + expa + '*' + expb + ')'; //乘法不需要分顺序
number[i] = a * b;
Search(n-);
if (b != )
{
expression[i] = '(' + expa + '/' + expb + ')'; //除法应该分顺序,除数以及被除数
number[i] = a / b;
Search(n-);
}
if (a != )
{
expression[i] = '(' + expb + '/' + expa + ')'; //除法应该分顺序,除数以及被除数
number[i] = b / a;
Search(n-);
} number[i] = a; //这4句语句是为了防止如果上面几种可能都失败了的话,
number[j] = b; //就把原来的赋值撤消回去,以无干扰的正确的进入到下一次
expression[i] = expa; //for循环队列中。
expression[j] = expb; //
}
}
} int main()
{
cout<<"请依次输入4个数字:\n";
for (int i = ; i < COUNT_OF_NUMBER; i++)
{
char buffer[];
cout<<"第"<<i+<<"个卡片:";
cin >> number[i];
itoa(number[i], buffer, ); //itoa()函数的作用是把第一个参数(数值)传送到第二个参数(字符串)中去,第三个
//参数(int型)是该数值在字符串里以什么进制存放。
expression[i] = buffer;
}
cout<<endl;
Search(COUNT_OF_NUMBER) ;
if(Judgement==true)
{
cout << "\n成功" << endl;
cout<<"所以可以计算的次数总和 = "<<count<<endl;
}
else
{
cout << "失败" << endl;
}
system("pause");
return ;
}
https://www.cnblogs.com/hnrainll/archive/2011/04/21/2024089.html
beisen的更多相关文章
- 前端工具 & git笔记
git diff (working dir to INDEX ) git diff --cached (INDEX to HEAD) git diff HEAD (working dir t ...
- .NET开发的大型网站列表、各大公司.NET职位精选,C#王者归来
简洁.优雅.高效的C#语言,神一样的C#创始人Anders Hejlsberg,async/await编译器级异步语法,N年前就有的lambda表达式,.NET Native媲美C++的原生编译性能, ...
- Selenium定位元素
Commands (命令) Action对当前状态进行操作失败时,停止测试 Assertion校验是否有产生正确的值 Element Locators指定HTML中的某元素 Patterns用于模式匹 ...
- 2018年4月更新70多个公司dnc招聘职位
2018年4月更新70多个公司dnc招聘职位 请在本页回复,补充dnc招聘信息.公司案例 dnc简介 dnc = .NET Core.dotnet Core简写 dnc是微软新一代主力编程平台,开源. ...
- 9、Docker私有registry
Docker Registry分类 Docker 默认是使用https的,但是如果在自己得私有局域网中,你指明使用http也是可以的. Registry主要的作用是托管镜像: 运行docker reg ...
- 5、Docker容器网络
使用Linux进行IP层网络管理的指 http://linux-ip.net/html/ # yum install iproute http://linux-ip.net/html/tool ...
- 3、Docker镜像管理基础
Docker image # docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE redis -alpine 23d561d12e92 d ...
- 2018 dnc .NET Core、.NET开发的大型网站列表、各大公司.NET职位精选,C#王者归来
简洁.优雅.高效的C#语言,神一样的C#创始人Anders Hejlsberg,async/await编译器级异步语法,N年前就有的lambda表达式,.NET Native媲美C++的原生编译性能, ...
- 大话设计模式--DI(依赖注入)
1.背景 想象一个场景:有个功能通过某个参数决定了路由到不同的方法上或者几个方法模块可以自由搭配,咋办?一般人会对每个方法写一个helper(比如SendMessageForEmail.SendMes ...
随机推荐
- Beta冲刺-星期四
这个作业属于哪个课程 <课程的链接> 这个作业要求在哪里 <作业要求的链接> 团队名称 Three cobblers 这个作业的目标 完成今天的冲刺 一 ...
- 【SQL】IN、EXISTS和表连接三者的效率比较
一. IN和EXISTS比较 在许多基于基础表的查询中,为了满足一个条件,往往需要对另一个表进行查询.此时就会用到IN和EXISTS. 例如:查询departments表中存在的部门的人数. 1. 使 ...
- 基于 CC2530 的温度采集系统(未定稿)
前言 最近在自学 Zigbee,每天的主要是任务是:看博客,看 CC2530 的 datasheet 和实践,熟悉片上的 SFR 以及控制板子. 学和做内容包括:IO.外部中断.Timer1/3/4. ...
- Deutsch lernen (15)
1. unterscheiden - unterschied - unterschieden 区别,区分:(能够)分清 Die beiden Begriffe sind nur schwer ...
- mvc登录授权特性
public class CommonAuthorize : AuthorizeAttribute { protected override bool AuthorizeCore(HttpContex ...
- java操作Excel的poi的导出Excel表格
页面布局 点击导出用户:触发函数,直接访问后台 后台方法如下: public String export()throws Exception{ Connection con=null; try { c ...
- 【转载】Java 集合详解
转载:https://www.cnblogs.com/ysocean/p/6555373.html 一.集合的由来 通常,我们的程序需要根据程序运行时才知道创建多少个对象.但若非程序运行,程序开发阶段 ...
- elasticsearch重建索引
1.重建索引 一个field的设置是不能被修改的,如果要修改一个Field,那么应该重新按照新的mapping,建立一个index,然后将数据批量查询出来,重新用bulk api写入index中 批量 ...
- 【剑指Offer】41、和为S的连续正数序列
题目描述: 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100.但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数). ...
- 【JavaScript】不使用正则表达式和字符串的方式来解析浏览器的URl地址信息
1.比如我们要获取的网站URl地址是:https://music.163.com/#/playlist?id=2384581760 一般我们能够想到的方式是直接使用正则表达式获取使用字符串直接解析的方 ...