java短信群发项目:
编写一个项目,
1. 以下手机号码段,添加到Map集合当中
2. 从控制台输入要发送信息的短信号码,如果要发送多个,请用英文逗号隔开,输入短信内容
3. 编写一个短信发送类,号码发送前,先判断号码是否为空,再判断是否为红名单用户(手机号码在集合中),如果为红名 单,输出红名单数据,并计算红名单校验耗费的时间,如果条件都满足,发送短信,短信发送成功的概率为98%, 最后 展示发送成功的短信号码和内容
备注:红名单和普通名单可以同时提交发送,但是红名单的不能发送不会影响到普通名单号码的正常发送
展示的结果:是红名单输出红名单数据和耗费的时间
不是红名单输出普通用户的号码和短信的内容。
手机号码段:
头三位 中间四位 末尾四位
136 0371 0000-9999
0766
7335
7362
6385
0769
7494
3381
7496
7370
137 3383
3319
0088
8361
3315
8168
8151
0386
181 3788
3789
3782
3787
0349
3567
2234
0382
180 3951
0169
3991
3955
3928
3788
0387
3997
3923
150 0381
3719
0371
3816
0389
3681
0389
9326
3837
3802
public class Phone {
// 下标 电话
static HashMap<Integer, String> hm = new HashMap<>();
public Phone() {
//第一批
String[] middle1 = {"0371", "0766", "7335", "7362", "6385", "0769", "7494", "3381", "7496", "7370"};
//尾数
ArrayList<String> end = new ArrayList<>();
for (int i = 0; i <= 9999; i++) {
int q = i / 1000;
int b = i % 1000 / 100;
int s = i % 1000 % 100 / 10;
if (q == 0 && b == 0 && s == 0) {
String temp = "000";
temp += i;
end.add(temp);
} else if (q == 0 && b == 0) {
String temp = "00";
temp += i;
end.add(temp);
} else if (q == 0) {
String temp = "0";
temp += i;
end.add(temp);
} else {
end.add(i + "");
}
}
//下标
int index = 0;
for (String s : end) {
for (String i : middle1) {
String temp = 136 + i + s;
hm.put(index, temp);
index++;
}
}
//System.out.println("middle1=" + index);
String[] middle2 = {"3383", "3319", "0088", "8361", "3315", "8168", "8151", "0386"};
for (String s : end) {
for (String i : middle2) {
hm.put(index, 137 + i + s);
index++;
}
}
//System.out.println("middle2=" + index);
String[] middle3 = {" 3788" + "3789" + "3782" + " 3787" + "0349" + "3567" + "2234" + " 0382"};
for (String s : end) {
for (String i : middle3) {
String temp = 181 + i + s;
hm.put(index, temp);
index++;
}
}
//System.out.println("middle3=" + index);
String[] middle4 = {"3951", "0169", " 3991", " 3955", "3928", "3788", "0387", "3997", "3923"};
for (String s : end) {
for (String i : middle4) {
String temp = 180 + i + s;
hm.put(index, temp);
index++;
}
}
//System.out.println("middle4=" + index);
String[] middle5 = {"0381", "3719", "0371", "3816", "0389", "3681", "0389", "9326", "3837", "3802"};
for (String s : end) {
for (String i : middle5) {
String temp = 150 + i + s;
hm.put(index, temp);
index++;
}
}
//System.out.println("middle5=" + index);
//System.out.println(end.size());
}
//是否有红名单手机号如果有就删除并打印
public void isRedphone(ArrayList<String> p) {
boolean is =false ;
long star = System.currentTimeMillis();
Set<Integer> key = hm.keySet();
for (Integer i : key) {
String s = hm.get(i);
for (int k = 0; k < p.size(); k++) {
if (s.equals(p.get(k))) {
System.out.println("找到红名单手机号=" + s);
p.remove(k);
is=true;
}
}
}
long end = System.currentTimeMillis();
if (is){
System.out.println("一共耗时"+(end-star)+"毫秒!");
}
}
//查看手机名单
public void show(ArrayList<String> p) {
for (String s : p) {
System.out.print(s + "\t");
}
System.out.println();
}
}
public class Massage {
private ArrayList<String> p;
private String massage;
public Massage() {
}
public Massage(ArrayList<String> p, String massage) {
this.p = p;
this.massage = massage;
}
public ArrayList<String> getP() {
return p;
}
public void setP(ArrayList<String> p) {
this.p = p;
}
public String getMassage() {
return massage;
}
public void setMassage(String massage) {
this.massage = massage;
}
//发送信息
public void send() {
for (int i = 0; i < p.size(); i++) {
double is = Math.random() * 1;
//System.out.println(is);
if (is < (1 - 0.98)) {
System.out.println("电话:" + p.get(i) + "发送成功");
} else {
System.out.println("电话:" + p.get(i) + "发送成功");
}
}
System.out.println("短信内容为:" + massage);
}
}
public class Text {
public static void main(String[] args) {
Massage ma = new Massage();
Phone p = new Phone();
ArrayList<String> ph = new ArrayList<>();
Scanner sc = new Scanner(System.in);
System.out.println("请输入要发送的手机号多个用逗号分割");
//13603719999,15003714562,18438860920
String phones = sc.nextLine();
//分割
String[] split = phones.split(",");
for (String s : split) {
//用集合操控容易
ph.add(s);
}
//查看是否有红名单调用方法
p.isRedphone(ph);
System.out.println("查看:");
p.show(ph);//查看一下
ma.setP(ph);//传入手机号
System.out.println("请输入短信内容:");
String massage = sc.nextLine();
ma.setMassage(massage);
//发送
ma.send();
}
}
java短信群发项目:的更多相关文章
- 使用SMSManager短信管理器实现短信群发
import java.util.ArrayList; import android.os.Bundle;import android.provider.ContactsContract;import ...
- 【免费】iPhone上最好用的短信群发软件: 高速短信4.1
免费的最新的联系人.群组.多人发送短信软件短信群发4.1已经出炉.欢迎下载! *归属地信息让你时时记着好友的地方,让陌生号码变得不陌生: *您能够选择最经常使用的联系人然后发送高速短信; *群联系人 ...
- [TPYBoard - Micropython] 五分种学会用TPYBoard - GPS 制作短信群发机
转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi 欢迎加入讨论群 64770604 一.什么是TPYBoard-GPS TPYBoard-GPS又称TPYBoa ...
- java短信接口调用
java短信接口调用 之前一直在一个传统的单位上班好多听容易的技术都没接触过,即使有时候想搞一搞类似于支付宝支付,短信接口调用,微信公众号,小程序之类等功能,一直有心无力终于跳槽了,估计是氛围的原因吧 ...
- java 短信猫发送短信的方法
用java实现短信收发的功能,目前一般项目中短信群发功能的实现方法大致有下面三种: · 1. 向运行商申请短信网关,不需要额外的设备,利用运行商提供的API调用程序发送 ...
- Android短信过滤项目中的观察者模式
观察者模式: 观察者模式定义了对象之间的一对多依赖,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新. 观察者模式提供了一种对象设计, 让主题和观察者之间松耦合.主题只知道观察者实现了某个接 ...
- java短信验证和注册
最近公司需要用到短信验证注册,所以申请了阿里云的短信服务.我的项目是分布式的spring boot 原理: 利用第三方发送短信 获取回执消息,然后存入缓存里面 将用户填写的验证码与缓存里面的验证码对比 ...
- thinkphp3.2短信群发项目实例
项目功能是企业给客户群发短信,我就写这么多,也不知道你能不能运行成功,如果有问题可以在QQ上问我:605114821 项目文件SMS_V2.zip下载地址,百度云:http://yun.baidu.c ...
- java短信接口
一.背景 从是Java一直想做一个跟生活联系特别紧密的东西,比如短信.邮箱.电话什么的一直是我感兴趣的,可是楞是当初没有头绪弄,恰巧今天公司在做一个 webrtc的视频会议的软件,刚好有短信这个需求, ...
随机推荐
- 使用 Service Worker 缓解网站 DDOS 攻击
前言 传统的 DDOS 防御开销很大,而且有时效果并不好. 例如使用 DNS 切换故障 IP 的方案,由于域名会受到缓存等因素的影响通常有分钟级延时,前端难以快速生效.例如使用 CDN 服务,虽可抵挡 ...
- idea启动桌面出现三个日志文件解决办法
idea一启动就出现上图三个日志文件,soapui是一个接口测试工具插件,在setting中搜索soapui,一般不需要,卸载掉就可以了.
- MyBatis-Plus QueryWrapper及LambdaQueryWrapper的使用
转载自 MyBatis-Plus QueryWrapper及LambdaQueryWrapper的使用 LambdaQueryWrapper https://blog.csdn.net/lt32603 ...
- 【笔记】初探KNN算法(2)
KNN算法(2) 机器学习算法封装 scikit-learn中的机器学习算法封装 在python chame中将算法写好 import numpy as np from math import sqr ...
- 陀螺仪、加速度计与MPU6050的关系
文章目录 一.引言 二.陀螺仪 三.加速度计 四.MPU6050 一.引言 要开始做俩轮平衡小车了,所以需要补充一些关于平衡小车的知识,首先就是如何让小车保持平衡,这是要依据小车当前的三轴角度和平衡位 ...
- NOIP 模拟 $12\; \text{简单的填数}$
题解 一个纯的贪心,被我搞成 \(dp\) 了,最后把错解删掉了,骗了 \(10pts\) 考虑如何贪心,设置一种二元组 \((x,l)\),\(x\) 表示当前值,\(l\) 表示当前最长连续长度. ...
- 题解 matrix
传送门 无比毒瘤的dp题,而且伪装地好像很可做的样子 考场上我给它氪了差不多一个小时最后还是只能扔了个20pts状压走人 以下思路基本均来源于题解: 对于此题,题面中三个限制条件: (1)第 i 行第 ...
- .net core 通过动软连接数据库
.net core 与动软 首先创建asp.net core 或者 .net core 控制台程序.不需急着创建web.config 文件. 通过NuGet加个ado的包 System.Data.Sq ...
- 接口和包--Java学习笔记
接口 定义及基础用法 interface定义:没有字段的抽象类 interface person{ void hello(); String getName(); } /*接口本质上就是抽象类 abs ...
- mysql 优化面试题
第一方面:30种mysql优化sql语句查询的方法 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by涉及的列上建立索引. 2.应尽量避免在 where 子句中使用 ...