📄 blackentity.java
字号:
package com.pub.backserver.blackList;
import org.apache.log4j.*;
import org.apache.mina.common.ByteBuffer;
import com.pub.backserver.EntityHead;
/**
* 黑名单方案:
*
* 1 建立黑名单服务器,使用berkeleyDB管理黑名单
* 2 服务器 与数据库同步方案:服务器记录同步时间;数据库记录修改时间;增量同步;数据库要记录删除标志
*
*/
public class BlackEntity extends EntityHead {
public static final int BT_REVOKE = 0; //普通黑名单用户
public static final int BT_BADDY = 1; //恶意黑名单用户
public static final int BT_LEADER = 2; //领导用户
public static final int BT_NORMAL = 3; //常规用户
private static Logger log = Logger.getLogger(BlackEntity.class);
private static int PackageLength = 14;
byte flag;
byte low;
int hi;
public BlackEntity(){
super(PackageLength);
}
//-64~63
public int getType() {
int tmp = (0x7f & flag) << 25;
return (tmp >> 25);
}
public void setType(int t) {
flag &= 0x80; //clear
flag |= t & 0x7f; //set
}
public String getPhone() {
long tmp = hi;
tmp <<= 8;
tmp |= (low & 0xff);
return (((flag & 0x80) == 0) ? "0" : "") + tmp;
}
public void setPhone(String phone) {
if (phone == null || phone.length() < 1)
return;
flag &= 0x7f; //
if (phone.charAt(0) != '0')
flag |= 0x80;
long tmp = 0;
for (int i = 0; i < phone.length(); i++) {
tmp *= 10;
tmp += phone.charAt(i) - '0';
}
hi = (int) ((tmp & 0xffffffff00L) >> 8);
low = (byte) (tmp & 0xff);
}
public String toString() {
StringBuilder sb = new StringBuilder(50);
sb.append("phone=").append(getPhone()).append(' ');
sb.append("type=").append(getType());
return sb.toString();
}
public static void main(String[] args) {
BlackEntity br = new BlackEntity();
br.setPhone("13400000000");
br.setType(1);
System.out.println(br.toString());
// br.setType(0);
// System.out.println(br.toString());
// br.setPhone("08314730123");
// br.setType(2);
// System.out.println(br.toString());
// br.setType(63);
// br.setPhone("01065188989");
// System.out.println(br.toString());
// br.setPhone("02150807749");
// br.setType(-64);
// System.out.println(br.toString());
br.increase();
System.out.println(br.toString());
for (int i = 0; i < 256; i++)
br.increase();
System.out.println(br.toString());
for (int i = 0; i < 0x4fff; i++)
br.increase();
System.out.println(br.toString());
}
public byte getFlag() {
return flag;
}
public int getHi() {
return hi;
}
public byte getLow() {
return low;
}
public void setLow(byte low) {
this.low = low;
}
public void setHi(int hi) {
this.hi = hi;
}
public void setFlag(byte flag) {
this.flag = flag;
}
public void increase() {
if (this.low == (byte) 0xff) {
this.hi++;
low = 0;
} else
low++;
}
public int writePackage(ByteBuffer out) throws Exception {
super.writePackage(out);
out.putInt(hi);
out.put(low);
out.put(flag);
return 0;
}
public int readPackage(ByteBuffer in) throws Exception {
super.readPackage(in);
hi = in.getInt();
low = in.get();
flag = in.get();
return 0;
}
public int writePackage(java.nio.ByteBuffer out) throws Exception {
super.writePackage(out);
out.putInt(hi);
out.put(low);
out.put(flag);
return 0;
}
public int readPackage(java.nio.ByteBuffer in) throws Exception {
super.readPackage(in);
hi = in.getInt();
low = in.get();
flag = in.get();
return 0;
}
public int getHeaderLength() {
return HeaderLength;
}
public int getPackageLength() {
return PackageLength;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -