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的视频会议的软件,刚好有短信这个需求, ...
随机推荐
- Java8新特性(二)之函数式接口
.subTitle { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); border- ...
- MVC配置原理-源码
目录 举例 修改SpringBoot的默认配置 全面接管SpringMVC 参考链接 在进行项目编写前,我们还需要知道一个东西,就是SpringBoot对我们的SpringMVC还做了哪些配置,包括如 ...
- Golang语言系列-17-Gin框架
Gin框架 Gin框架简介 package main import ( "github.com/gin-gonic/gin" "io" "net/ht ...
- kali2020更换JDK&&安装burpsuite pro
写在前面 之前因为安装maven把JDK换成了1.8.0_261,尝试诸多方法依然打不开自带的burp,正好在做CTF做不出来 QAQ,一气之下打算安个破解版burp. 安装 0x00 更换JDK 使 ...
- 武器级工具包 Immunity Canvas 7.26 泄露事件 | 附下载地址
关于Immunity Canvas Immunity CANVAS是Immunity公司的一款商业级漏洞利用和渗透测试工具,包含了480多个以上的漏洞利用,该工具并不开源,其中文版介绍如下: &quo ...
- NOIP 模拟 $38\; \rm b$
题解 \(by\;zj\varphi\) 考虑转化问题,将计算最大公约数换为枚举最大公约数. 设 \(sum_i\) 为最大公约数为 \(i\) 的方案数,可以容斥求解,\(sum_i=f_i-\su ...
- Failed to set locale, defaulting to C.UTF-8
CentOS 8中执行命令,出现报错:Failed to set locale, defaulting to C.UTF-8 报错原因: 1.没有安装相应的语言包. 2.没有设置正确的语言环境. 解决 ...
- 【C#】GC和析构函数(Finalize 方法)
析构函数: (来自百度百科)析构函数(destructor) 与构造函数相反,当对象脱离其作用域时(例如对象所在的函数已调用完毕),系统自动执行析构函数.析构函数往往用来做"清理善后&quo ...
- 关于Typora的使用
关于Typora的使用 今天介绍一个做笔记用的一款markdown编辑器,用了之后,顺利被圈粉: Typora,美观小众,可用性强! 和传统的markdown编辑器不一样,传统的markdown编辑器 ...
- jQuery中的常用方法:empty()、each()、$.each()、$.trim()、focus()(二)
<!DOCTYPE html> <html> <head> <title>02_commonMethod.html</title> < ...