admin管理员组

文章数量:1568307

2024年1月22日发(作者:)

神彩彩票合买代购系统开发文档

第一章 架设篇

后台服务端配置

bat批处理

进入F:001java2012center注意 路径

双击每个bin文件夹下的

或将以下代码保存为格式的批处理,就可以直接双击运行了

@echo off

start "" "F:001java2012centerrbc_"

start "" "F:001java2012centerrbc_"

是WINDOW下执行的命令;是WINDOW下执行的命令;

删除LOGS目录下所有文件

@echo off

echo 正在删除My logs 文件夹下的所有文件,请稍等......

cd /d "F:001java2012centerrbc_sessionlogs"

del /s /q /f *.*

for /d %%i in (*) do rd /s /q "%%i"

cd /d "F:001java2012centerrbc_enginelogs"

del /s /q /f *.*

for /d %%i in (*) do rd /s /q "%%i"

echo 清除系统logs完成

pause

神彩彩票合买代购系统开发文档

神彩彩票合买代购系统开发文档

如果是LINUX,执行

以下是证书目录:

文件夹名称

Rbc_engine

Rbc_session

端口

3100

3300

说明

对阵数据/期次引擎/邮件引擎/短信引擎

缓存引擎/赛事缓存

前后台登录

SERVICE目录,放入对应的JAR包:该目录下的JAR包,供该目录以外的JAVA程序调用,如:F:001java2012adminApps

F:001java2012webApps

即使每个目录下的SERVICE是空的也不要删除,每个项目下新建一个SERVICE目录

服务端程序目录结构

文件夹 PATH 列表

卷序列号为 141F-53E1

F:.

│ ------------------->删除LOGS目录下所有文件

├─license

│ ├─4000

│ │

│ │

│ │

│ │

│ └─8000

├─rbc_engine

│ │

神彩彩票合买代购系统开发文档

神彩彩票合买代购系统开发文档

│ ├─bin

│ │

│ │

│ │

│ ├─conf

│ │

│ │ ties

│ │ ties│ │

│ ├─lib

│ │

│ │

│ │

│ │

│ │

│ │ cpdata_

│ │

│ │ g_

│ │

│ │

│ │

│ │

│ │

│ │

│ │ rbc_

│ │ rbc_

│ │ t_

│ │

│ │ │ │

│ ├─logs

│ │ │

│ │ ├─sms

│ │ ├─trade

│ │ └─user

│ └─service

│ cpweb_

├─rbc_session

│ ├─bin

│ │ err

│ │ out

神彩彩票合买代购系统开发文档

神彩彩票合买代购系统开发文档

│ │

│ │

│ │

│ ├─conf

│ │

│ │ ties

│ │

│ ├─lib

│ │

│ │

│ │

│ │

│ │

│ │ cpdata_

│ │ g_

│ │

│ │

│ │

│ │ rbc_

│ │ rbc_

│ │ t_

│ │

│ ├─logs

│ └─service

│ cpadmin_

│ cpweb_

└─新建文件夹

LINUX 常用命令

chmod 777 /001/java2012/html -R

chmod 777 /001/java2012/data -R

chmod 777 /001/java2012/tdata -R

神彩彩票合买代购系统开发文档

神彩彩票合买代购系统开发文档

cd /001/apache-tomcat-6.0.39/bin

./

cd /001/java2012/center/rbc_session/bin

cd /001/java2012/center/rbc_engine/bin

ps auxf | grep java

nohup ./ &

NODEJS

文件夹 PATH 列表

卷序列号为 0000005B 141F:53E1

F:.

├─award

│ award_

│ award_

│ award_

│ award_

├─data

├─lottery

神彩彩票合买代购系统开发文档

神彩彩票合买代购系统开发文档

├─node_modules│

└─sports

│ match_

│ match_

│ match_

│ match_

│ match_

│ match_

│ match_

│ match_

│ result_

│ result_bjdc_

│ result_bjdc_

│ result_

│ result_

│ result_

│ result_

└─data

cd /001/java2012/nodejs

node

cd /001/java2012/nodejs/lottery

node

神彩彩票合买代购系统开发文档

神彩彩票合买代购系统开发文档

cd /001/java2012/nodejs/sports

screen node

cd /001/java2012/nodejs/sports

screen node

Tomcat

进入F:javaapache-tomcat-6.0.41conf

配置

resourceName="UserDatabase"/>

xmlNamespaceAware="false" xmlValidation="false">

reloadable="true"/>

suffix=".txt" pattern="%h %l %u %t "%r" %s %b" />

resourceName="UserDatabase"/>

xmlNamespaceAware="false" xmlValidation="false">

神彩彩票合买代购系统开发文档

神彩彩票合买代购系统开发文档

reloadable="true"/>

suffix=".txt" pattern="%h %l %u %t "%r" %s %b" />

修改日志文件路径ties

F:001java2012webAppsWEB-INFconfig

ties

---------------------------------------------

# Type CONSOLE, FILE, SOCKET

# Level TRACE DEBUG INFO WARN ERROR

=CONSOLE

=DEBUG

=

=F:001java2012centerrbc_enginelogs

#=CONSOLE

=FILE

=ERROR

#=F:001java2012centerrbc_enginelogs

神彩彩票合买代购系统开发文档

神彩彩票合买代购系统开发文档

F:001java2012adminAppsadminWEB-INFconfig

ties

---------------------------------------------

# Type CONSOLE, FILE, SOCKET

# Level TRACE DEBUG INFO WARN ERROR

=FILE

=DEBUG

=

=F:001java2012centerrbc_sessionlogs

#=CONSOLE

=FILE

=ERROR

----------------------------------------------

神彩彩票合买代购系统开发文档

神彩彩票合买代购系统开发文档

driverName="Driver"

dbUrl="jdbc:oracle:thin:@//:1521/orcl"

userName="c##cyt2010" passWord="root" checkSql="select 1+2 FROM dual"

interval="1" startNum="5" maxNum="15" maxCallNum="0" serverType="ORACLE"

dbUrlBak="">

F:javaapache-tomcat-6.0.41bin

神彩彩票合买代购系统开发文档

神彩彩票合买代购系统开发文档

启动

前端nginx配置修改

1. 修改(conf/)

#user nobody;

worker_processes 1;

#error_log logs/;

#error_log logs/ notice;

#error_log logs/ info;

#pid logs/;

events {

worker_connections 1024;

}

http {

include ;

default_type application/octet-stream;

log_format main '$remote_addr - $remote_user [$time_local] "$request" '

# '$status $body_bytes_sent "$http_referer" '

# '"$http_user_agent" "$http_x_forwarded_for"';

#access_log logs/ main;

sendfile off;

#tcp_nopush on;

#keepalive_timeout 0;

keepalive_timeout 65;

ssi on;

gzip on;

神彩彩票合买代购系统开发文档

神彩彩票合买代购系统开发文档

#win10 不支持改写法 - 20160401

# upstream {

# server :1020 weight=10;

# }

upstream javaadmin {

server :3088 weight=10;

}

upstream javaweb {

server :3089 weight=10;

}

include vhost/*.conf;

}

2.编辑前端

server {

listen 2688;

server_name ;

charset utf-8;

include ;

server_name_in_redirect off;

#access_log logs/ main;

ssi on;

ssi_silent_errors on;

ssi_types text/shtml;

#Baiduspider

if ($http_user_agent ~* (Jullo|pangolin|) ) {

return 444;

}

add_header P3P "CP=CAO PSA OUR";

location /{

root F:/001/java2012/html;

神彩彩票合买代购系统开发文档

神彩彩票合买代购系统开发文档

index ;

if ($request_uri ~* /([0-9]+)$) {

set $regfrom $1;

add_header Set-Cookie

"regfrom=$regfrom;domain=;path=/;max-age=31536000;";

rewrite ^/([0-9]+)$ / permanent;

}

}

location ^~/uploads {

root F:/001/java2012;

index ;

}

location ^~/data {

root F:/001/java2012;

index ;

}

location ~ .*.(do)$ {

proxy_intercept_errors on;

proxy_pass javaweb;

# proxy_pass javamob;

error_page 404 /error/;

error_page 500 502 503 504 /error/;

}

location ^~/admin {

proxy_pass javaadmin;

}

error_page 404 /error/;

error_page 500 502 503 504 /error/;

# redirect server error pages to the static page /

#

#error_page 500 502 503 504 /;

location = / {

神彩彩票合买代购系统开发文档

神彩彩票合买代购系统开发文档

root html;

}

}

3.编辑手机端

server {

listen 2488 default_server;

server_name ;

charset utf-8;

include ;

server_name_in_redirect off;

#access_log logs/ main;

ssi on;

ssi_silent_errors on;

ssi_types text/shtml;

#Baiduspider

if ($http_user_agent ~* (Jullo|pangolin|) ) {

return 444;

}

add_header P3P "CP=CAO PSA OUR";

location /{

root F:/001/java2012/html5;

index ;

}

location ^~/data {

root F:/001/java2012;

index ;

}

location ~ .*.(do)$ {

proxy_intercept_errors on;

神彩彩票合买代购系统开发文档

神彩彩票合买代购系统开发文档

proxy_pass javaweb;

error_page 404 /error/;

error_page 500 502 503 504 /error/;

}

error_page 404 /error/;

error_page 500 502 503 504 /error/;

# redirect server error pages to the static page /

#

#error_page 500 502 503 504 /;

location = / {

root html;

}

}

4.编辑

server {

listen 2680;

server_name ;

charset utf-8;

include ;

server_name_in_redirect off;

#access_log logs/ main;

ssi on;

ssi_silent_errors on;

ssi_types text/shtml;

#Baiduspider

if ($http_user_agent ~* (Jullo|pangolin|) ) {

return 444;

}

add_header P3P "CP=CAO PSA OUR";

神彩彩票合买代购系统开发文档

神彩彩票合买代购系统开发文档

location /{

root F:/001/java2012/adminApps;

index ;

if ($request_uri ~* /([0-9]+)$) {

set $regfrom $1;

add_header Set-Cookie

"regfrom=$regfrom;domain=:2680;path=/;max-age=31536000;";

rewrite ^/([0-9]+)$ / permanent;

}

}

location ~ .*.(code)$ {

proxy_intercept_errors on;

proxy_pass javaadmin;

error_page 404 F:/001/java2012/adminApps/admin/manage/;

error_page 500 502 503 504 F:/001/java2012/adminApps/admin/manage/;

}

location ~ .*.(jsp)$ {

proxy_intercept_errors on;

proxy_pass javaadmin;

error_page 404 F:/001/java2012/adminApps/admin/manage/;

error_page 500 502 503 504 F:/001/java2012/adminApps/admin/manage/;

}

location ~ .*.(do)$ {

proxy_intercept_errors on;

proxy_pass javaadmin;

error_page 404 F:/001/java2012/adminApps/admin/manage/;

error_page 500 502 503 504 F:/001/java2012/adminApps/admin/manage/;

}

location ^~/data {

root F:/001/java2012;

index ;

}

神彩彩票合买代购系统开发文档

神彩彩票合买代购系统开发文档

error_page 404 F:/001/java2012/adminApps/admin/manage/;

error_page 500 502 503 504 F:/001/java2012/adminApps/admin/manage/;

# redirect server error pages to the static page /

#

#error_page 500 502 503 504 /;

location = / {

root F:/001/java2012/adminApps/admin/manage;

}

}

proxy_redirect off;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header HTTP-X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

client_max_body_size 50m;

client_body_buffer_size 256k;

proxy_connect_timeout 90;

proxy_send_timeout 90;

proxy_read_timeout 90;

proxy_buffer_size 4k;

proxy_buffers 4 32k;

proxy_busy_buffers_size 64k;

proxy_temp_file_write_size 64k;

proxy_max_temp_file_size 128m;

#proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;

#proxy_store on;

#proxy_store_access user:rw group:rw all:r;

#proxy_temp_path /dev/shm/nginx_proxy;

#proxy_temp_path /data2/nginx_cache;

神彩彩票合买代购系统开发文档

神彩彩票合买代购系统开发文档

注意:这里的目录要和F:001java2012center里的CMD或SH里的配置要写的一致

set SERV_HOME=F:/001/java2012/center/rbc_engine

rem echo %SERV_HOME%

set LIB_HOME=F:/001/java2012/center/rbc_engine

set CONF_HOME=F:/001/java2012/center/rbc_engine

set DATA_HOME=F:/001/java2012/data

set CLASSPATH=.;%SERV_HOME%/classes/

启动nginx

cd f:optsnginx-1.7.7

F:

start nginx

-s stop

-s quit

-s reload

the stystem cannot find the specified

修改配置文件路径

Windows 和LINUX配置文件需修改路径的文件:

D:ties

F:optsexportwebappsWEB-INFclasses

神彩彩票合买代购系统开发文档

神彩彩票合买代购系统开发文档

F:optsexportwebmanageadminWEB-INFconfig

打包编译

注意未打钩的源码不会出现在JAR包中,如下图

神彩彩票合买代购系统开发文档

神彩彩票合买代购系统开发文档

暂时不需要反编译的框架核心JAR包

rbc_

rbc_

rbc_

rbc_

t_

生成的JAR包复制到对应的:

1)F:001java2012center下的lib子目录

2)F:001java2012center下的service子目录

3)F:001java2012webAppsWEB-INFlib

4)F:001java2012adminAppsadminWEB-INFlib

神彩彩票合买代购系统开发文档

神彩彩票合买代购系统开发文档

智能复制

cd /001/java2012/nodejs

node

var mFs = require('fs');

var

source=['cpdata_','wg_','g_','cpweb_','g_','cpdata_','cpweb_','cpadmin_','cpadmin_','g_','cpweb_','g_','cpweb_'];

var results=[];

('F:/001/java2012/center/rbc_engine/lib/cpdata_');

('F:/001/java2012/center/rbc_engine/lib/wg_');

('F:/001/java2012/center/rbc_engine/lib/g_');

('F:/001/java2012/center/rbc_engine/service/cpweb_');

('F:/001/java2012/center/rbc_session/lib/g_');

('F:/001/java2012/center/rbc_session/lib/cpdata_');

('F:/001/java2012/center/rbc_session/service/cpweb_');//分开

('F:/001/java2012/center/rbc_session/service/cpadmin_');

('F:/001/java2012/adminApps/admin/WEB-INF/lib/cpadmin_');

('F:/001/java2012/adminApps/admin/WEB-INF/lib/g_');

('F:/001/java2012/adminApps/admin/WEB-INF/lib/cpweb_');

('F:/001/java2012/webApps/WEB-INF/lib/g_');

('F:/001/java2012/webApps/WEB-INF/lib/cpweb_');//分开

for (var i = 0; i < ; i++) {

var readStream = ReadStream('F:/00002/MyEclipse Professional 2012/builder/bin/'+source[i]);

var writeStream = WriteStream(results[i]);

(writeStream);

('end', function () {

('copy success');

});

神彩彩票合买代购系统开发文档

神彩彩票合买代购系统开发文档

('error', function () {

(results[i]+source[i]+'copy error');

});

}

前后台登陆方式与账号

前台

:2688

Test

123456

后台

:2680/admin/manage/

admin

123456

本机配置文件(WINDOWS环境)

第二章 维护篇

核心算法快速入门

截止时间

神彩彩票合买代购系统开发文档

神彩彩票合买代购系统开发文档

竞彩投注、合买截止时间应该是多个投注期号最小的那一期;比如

3串1

2 截止时间 18:00

2 截止时间 18:50

2 截止时间 19:00

截止时间是18:00 ;截止时间写入数据库

网站认购由触发器实现;

合买发起人出票成功 ,将保底没有扣完的扣除;

投注表存放总数据,出票表是分数据;派奖是先读投注表再读出票表;

合买、竟彩多串过关、自由过关投注表里只能有一条记录,派奖时以ticket表为准,

ticket_selectid 区分单复式

启动服务调式

1.打开F:001java2012center下的各个目录,查看conf/

2.查看lib,引用了哪些jar包

3.找到如:className="atchEngine"对应文件

调式

神彩彩票合买代购系统开发文档

神彩彩票合买代购系统开发文档

修改代码

.............................................................

String os = perty("");

String fpath = "";

if (rCase().startsWith("win")) {

}

fpath = "F:/001/java2012/data/interface/";

fpath = "/001/java2012/data/interface/";

} else {

File file = new File(fpath + "");

JXmlWapper xmlWap = (file);

int count = mlNodes("row");

for (int i = 0; i < count; i++) {

}

String gid= ingValue("row[" + i + "].@gid");

String xurl= ingValue("row[" + i + "].@xurl");

(gid, xurl);

中奖匹配

{GamePlugin_}

{GamePlugin_}

bingoMatcher(GameCastCode code, GameAwardCode bingoCode, int gradeNum)

需要按位来算

int[] bnum = new int[5];// 中球数

int[] cnum = new int[5];// 选球数

long tmp = cc & bc;

long bdf = 0;

for (int i = 0; i < ; i++) {

bnum[i] = nt(tmp & (0x3FFL << i * 10));

if (bnum[i] == 1) {

神彩彩票合买代购系统开发文档

神彩彩票合买代购系统开发文档

bdf |= (1L << i);

}

cnum[i] = nt(cc & (0x3FFL << i * 10));

}

计算是组3,组6

private int same(long a, long b, long c) {

if (a == b && a == c) {

return 3;

}

if (a == b || b == c || a == c) {

return 2;

}

return 0;

}

各彩种玩法中奖算法列表

双色球,大乐透

long first = 0;//投注号码区间,胆码

long second = 0;//投注号码区间,拖码

long third = 0;//投注号码区间,蓝球

重庆彩

大小单双

long first = 0;//投注号码区间,十位

long second = 0;//投注号码区间,个位

直选3

int n = nt(st() & st());

组3

n += nt(st() & ond());

n += nt(st() & rd());

if (n == 3) {

}

if (sames == 2) {

levels[g] = 1;

int sames = same(st(), ond(), rd());

神彩彩票合买代购系统开发文档

神彩彩票合买代购系统开发文档

}

if (sames == 0) {

}

long l = 1L << bcodes[0];

if (nt(st() & l) == 1) {

}

int len = nt(st() & bfirst);

if (len >= 2) {

}

int len = nt(st() & bfirst);

if (len >= 3) {

}

int len = nt(st() & bfirst);

if (len >= 4) {

}

if (nt(st() & bfirst) == 5) {

}

levels[pm-1] += 1 * mu;

levels[pm-1] += C(4,len) * mu;

levels[pm-1] += C(3,len) * mu;

levels[pm-1] += C(2,len) * mu;

levels[pm-1] += 1 * mu;

int n = nt(st() & st());

n += nt(st() & ond());

n += nt(st() & rd());

if (n == 3) {

}

levels[g] = 1;

int n = nt(st() & st());

n += nt(st() & ond());

n += nt(st() & rd());

if (n == 3) {

}

levels[g] = 1;

组6

11选5常规投注

int sames = same(st(), ond(), rd());

if (pm == R1) {

} else if (pm == R2) {

} else if (pm == R3) {

} else if (pm == R4) {

} else if (pm == R5) {

} else if (pm == R6) {

神彩彩票合买代购系统开发文档

神彩彩票合买代购系统开发文档

if (nt(st() & bfirst) == 5) {

}

if (nt(st() & bfirst) == 5) {

}

if (nt(st() & bfirst) == 5) {

}

long l = 0;

for (int i = 0; i < 2; i++) {

}

if (nt(st() & l) == 2) {

}

long l = 0;

for (int i = 0; i < 3; i++) {

}

if (nt(st() & l) == 3) {

}

long lf = 0, ls = 0;

lf |= 1L << bcodes[0];

ls |= 1L << bcodes[1];

if (nt(st() & lf) == 1 && nt(ond()

}

long lf = 0, ls = 0, lt = 0;

lf |= 1L << bcodes[0];

ls |= 1L << bcodes[1];

lt |= 1L << bcodes[2];

if (nt(st() & lf) == 1 && nt(ond()

levels[pm-1] += 1 * mu;

levels[pm-1] += 1 * mu;

l |= 1L << bcodes[i];

levels[pm-1] += 1 * mu;

l |= 1L << bcodes[i];

levels[pm-1] += 1 * mu * C(8-5, nt(st()) -5);

levels[pm-1] += 1 * mu * C(7-5, nt(st()) -5);

levels[pm-1] += 1 * mu * C(6-5, nt(st()) -5);

} else if (pm == R7) {

} else if (pm == R8) {

} else if (pm == Z2) {

} else if (pm == Z3) {

} else if (pm == Q2) {

& ls) == 1) {

} else if (pm == Q3) {

神彩彩票合买代购系统开发文档

神彩彩票合买代购系统开发文档

& ls) == 1 && nt(rd() & lt) == 1) {

11选5胆拖投注

}

}

int dz = nt(st() & bfirst);

int tz = nt(ond() & bfirst);

if (dz + tz >= 2 && (dz == nt(st()))) {

}

int dz = nt(st() & bfirst);

int tz = nt(ond() & bfirst);

if (dz + tz >= 3 && (dz == nt(st()))) {

}

int dz = nt(st() & bfirst);

int tz = nt(ond() & bfirst);

if (dz + tz >= 4 && (dz == nt(st()))) {

}

int dz = nt(st() & bfirst);

int tz = nt(ond() & bfirst);

if ( (dz + tz == 5) && (dz == nt(st())) ) {

}

int dz = nt(st() & bfirst);

int tz = nt(ond() & bfirst);

if (dz + tz == 5 ) {

if ( dz == 5 ) {

levels[pm-1] += C(6 -

levels[pm-1] += C(5 - dz,tz) * mu;

levels[pm-1] += C(4 - dz,tz) * mu;

levels[pm-1] += C(3 - dz,tz) * mu;

levels[pm-1] += C(2 - dz,tz) * mu;

}

levels[pm-1] += 1 * mu;

if (pm == R2) {

} else if (pm == R3) {

} else if (pm == R4) {

} else if (pm == R5) {

} else if (pm == R6) {//TODO ??

nt(st()),nt(ond())) * mu;

} else {

}

levels[pm-1] += C(6 - nt(st()) -

tz,nt(ond()) - tz) * mu;

神彩彩票合买代购系统开发文档

神彩彩票合买代购系统开发文档

} else if (pm == R7) {

int dz = nt(st() & bfirst);

int tz = nt(ond() & bfirst);

if (dz + tz == 5 ) {

}

int dz = nt(st() & bfirst);

int tz = nt(ond() & bfirst);

if (dz + tz == 5 ) {

}

long l = 0;

for (int i = 0; i < 2; i++) {

}

int dz = nt(st() & l);

int tz = nt(ond() & l);

if (dz + tz == 2 && dz == nt(st())) {

}

long l = 0;

for (int i = 0; i < 3; i++) {

}

l |= 1L << bcodes[i];

levels[pm-1] += 1 * mu;

l |= 1L << bcodes[i];

if ( dz == 5 ) {

levels[pm-1] += C(8 -

if ( dz == 5 ) {

levels[pm-1] += C(7 -

nt(st()),nt(ond())) * mu;

} else {

}

levels[pm-1] += C(7 - nt(st()) -

tz,nt(ond()) - tz) * mu;

} else if (pm == R8) {

nt(st()),nt(ond())) * mu;

} else {

}

levels[pm-1] += C(8 - nt(st()) -

tz,nt(ond()) - tz) * mu;

} else if (pm == Z2) {

} else if (pm == Z3) {

神彩彩票合买代购系统开发文档

神彩彩票合买代购系统开发文档

}

int n = nt(rd());// 蓝球数

int r = nt(st() & base);// 中红球数

int b = nt(rd() & spec);// 中蓝球数

levels[getRealGrade(0)] += C(6, r) * C(1, b);// 6+1

levels[getRealGrade(1)] += C(6, r) * (n - C(1, b));// 6+0

levels[getRealGrade(2)] += C(5, r) * C(1, m - r) * C(1, b);// 5+1

levels[getRealGrade(3)] += C(5, r) * C(1, m - r) * (n - C(1, b));// 5+0

levels[getRealGrade(3)] += C(4, r) * C(2, m - r) * C(1, b);// 4+1

levels[getRealGrade(4)] += C(4, r) * C(2, m - r) * (n - C(1, b));// 4+0

levels[getRealGrade(4)] += C(3, r) * C(3, m - r) * C(1, b);// 3+1

levels[getRealGrade(5)] += C(2, r) * C(4, m - r) * C(1, b);// 2+1

levels[getRealGrade(5)] += C(1, r) * C(5, m - r) * C(1, b);// 1+1

levels[getRealGrade(5)] += C(0, r) * C(6, m - r) * C(1, b);// 0+1

int t = nt(ond());// 拖球数

int n = nt(rd());// 蓝球数

int s = nt(st() & base);// 中胆球数

int k = nt(ond() & base);// 中拖球数

int b = nt(rd() & spec);// 中蓝球数

levels[getRealGrade(0)] += C(6 - s, k) * C(6 - d - (6 - s), t - k) * C(1, b);// 6+1

levels[getRealGrade(1)] += C(6 - s, k) * C(6 - d - (6 - s), t - k) * (n - C(1, b));//

levels[getRealGrade(2)] += C(5 - s, k) * C(6 - d - (5 - s), t - k) * C(1, b);// 5+1

levels[getRealGrade(3)] += C(5 - s, k) * C(6 - d - (5 - s), t - k) * (n - C(1, b));//

levels[getRealGrade(3)] += C(4 - s, k) * C(6 - d - (4 - s), t - k) * C(1, b);// 4+1

int dz = nt(st() & l);

int tz = nt(ond() & l);

if (dz + tz == 3 && dz == nt(st())) {

}

levels[pm-1] += 1 * mu;

双色球常规投注

双色球胆拖投注

6+0

5+0

int m = nt(st());// 红球数

int d = nt(st());// 胆球数

神彩彩票合买代购系统开发文档

神彩彩票合买代购系统开发文档

4+0

七星彩

//中7个

if (f == 0x7F) {// 7个

}

//中6个

if (same(f,0x3F) ) {// 6个

levels[0] = mu;

byte f = 0;

for (int i = 0; i < ; i++) {

}

if (bnums[i] == 1) {

}

f |= 0x01 << i;

int[] bnums = new int[7];// 各位的中球数

int[] dnums = new int[7];// 各位的未中球数

for (int i = 0; i < 6; i++) {

}

bnums[6] = nt(ond() & (ond() & 0x3FFL));

dnums[6] = cnums[6] - bnums[6];

bnums[i] = nt(bc & (cc & (0x3FFL << (i * 10))));

dnums[i] = cnums[i] - bnums[i];

int[] cnums = new int[7];// 各位的选球数

for (int i = 0; i < 6; i++) {

}

cnums[6] = nt(ond() & 0x3FFL);

cnums[i] = nt(cc & (0x3FFL << (i * 10)));

long cc = st();

long bc = st();

levels[getRealGrade(5)] += C(2 - s, k) * C(6 - d - (2 - s), t - k) * C(1, b);// 2+1

levels[getRealGrade(5)] += C(1 - s, k) * C(6 - d - (1 - s), t - k) * C(1, b);// 1+1

levels[getRealGrade(5)] += C(0 - s, k) * C(6 - d - (0 - s), t - k) * C(1, b);// 0+1

levels[getRealGrade(4)] += C(3 - s, k) * C(6 - d - (3 - s), t - k) * C(1, b);// 3+1

levels[getRealGrade(4)] += C(4 - s, k) * C(6 - d - (4 - s), t - k) * (n - C(1, b));//

神彩彩票合买代购系统开发文档

神彩彩票合买代购系统开发文档

}

if (same(f,(0x3F << 1)) ) {// 6个

}

//中5个

if ( same(f,0x1f)) {// 5个 12345**

}

if ( same(f,(0x1f << 1)) ) {// 5个 *23456*

}

if ( same(f,(0x1f << 2)) ) {// 5个 **34567

}

levels[2] += mu * (cnums[0] * dnums[1]);

levels[2] += mu * (dnums[6] * dnums[0]);

levels[2] += mu * (dnums[5] * cnums[6]);

levels[1] += mu * dnums[0];

levels[1] += mu * dnums[6];

//中4个

if (same(f,0x0f)) {// 4个 1234***

}

if (same(f,(0x0f << 1))) {// 4个 *2345**

}

if (same(f,(0x0f << 2))) {// 4个 **3456*

}

if (same(f,(0x0f << 3))) {// 4个 ***4567

}

//中3个

if (same(f,0x07) && same(f,(0x07 << 4))) {// 3个 123****&&****567

levels[4] += mu * (dnums[3] * (cnums[4] * cnums[5] * cnums[6] + cnums[2] * cnums[1]

levels[3] += mu * (cnums[0] * cnums[1] * dnums[2]);

levels[3] += mu * (cnums[0] * dnums[1] * dnums[6]);

levels[3] += mu * (dnums[0] * dnums[5] * cnums[6]);

levels[3] += mu * (dnums[4] * cnums[5] * cnums[6]);

* cnums[0] - 1));

}else if (same(f,0x07)) {// 3个 123****

levels[4] += mu * (dnums[3] * cnums[4] * cnums[5] * cnums[6]);

levels[4] += mu * (dnums[3] * cnums[2] * cnums[1] * cnums[0]);

} else if (same(f,(0x07 << 4))) {// 3个 ****567

神彩彩票合买代购系统开发文档

神彩彩票合买代购系统开发文档

}

if (same(f,(0x07 << 1))) {// 3个 *234***

}

if (same(f,(0x07 << 2))) {// 3个 **345**

}

if (same(f,(0x07 << 3))) {// 3个 ***456*

}

//中2个

if (same(f,0x03)) {// 2个 12*****

}

if (same(f,(0x03 << 1))) {// 2个 *23****

}

if (same(f,(0x03 << 2))) {// 2个 **34***

}

if (same(f,(0x03 << 3))) {// 2个 ***45**

}

if (same(f,(0x03 << 4))) {// 2个 ****56*

levels[5] += mu * (dnums[6] * dnums[3] * cnums[2] * cnums[1] * cnums[0]);

levels[5] += mu * (dnums[5] * cnums[6] * dnums[2] * cnums[1] * cnums[0]);

if (same(f,0x03)) {

}

levels[5] += mu * (0 - dnums[2] * dnums[5] * cnums[6]);

levels[5] += mu * (dnums[4] * cnums[5] * cnums[6] * dnums[1] * cnums[0]);

levels[5] += mu * (dnums[3] * cnums[4] * cnums[5] * cnums[6] * dnums[0]);

if (same(f,(0x07 << 4))) {

}

levels[5] += mu * (0 - dnums[0] * dnums[3]);

if(same(f, (0xf << 3))){

}

if(same(f, (0x7 << 3))){

}

if(same(f, (0x7 << 4))){

}

levels[5] += mu * (0 - dnums[2] * dnums[3]);

levels[5] += mu * (0 - dnums[2] * dnums[6]);

levels[5] += mu * (0 - dnums[2]);

levels[5] += mu * (dnums[2] * cnums[3] * cnums[4] * cnums[5] * cnums[6]);

levels[4] += mu * (dnums[2] * dnums[6] * cnums[1] * cnums[0]);

levels[4] += mu * (dnums[1] * dnums[5] * cnums[0] * cnums[6]);

levels[4] += mu * (dnums[0] * dnums[4] * cnums[5] * cnums[6]);

神彩彩票合买代购系统开发文档

神彩彩票合买代购系统开发文档

}

if (same(f,(0x03 << 5))) {// 2个 *****67

}

if(same(f, 0xf)){

}

if(same(f, 0x7)){

}

if(same(f, (0x7 << 1))){

}

if (same(f,0x03)) {

}

if (same(f,(0x03 << 1))) {

}

if (same(f,(0x03 << 2))) {

}

levels[5] += mu * (0 - cnums[0] * dnums[1] * dnums[4]);

levels[5] += mu * (0 - dnums[0] * dnums[3] * dnums[4]);

levels[5] += mu * (0 - dnums[2] * cnums[3] * dnums[4]);

levels[5] += mu * (0 - dnums[0] * dnums[4]);

levels[5] += mu * (0 - dnums[3] * dnums[4]);

levels[5] += mu * (0 - dnums[4]);

levels[5] += mu * (cnums[0] * cnums[1] * cnums[2] * cnums[3] * dnums[4]);

if(same(f, 0x7)){

}

if (same(f,0x03)) {

}

if (same(f,(0x03 << 1))) {

}

levels[5] += mu * (0 - dnums[0] * dnums[3] * dnums[6]);

levels[5] += mu * (0 - dnums[2] * dnums[3] * dnums[6]);

levels[5] += mu * (0 - dnums[3] * dnums[6]);

七乐彩常规投注

int n = nt(st());// 选球数

int m = nt(st() & base);// 中球数

int sp = nt(st() & spec);

levels[0] = multi * C(7, m);// 7+0

levels[1] = multi * sp * C(6, m) * C(1 - sp, n - m - sp);// 6+1

levels[2] = multi * (sp * C(6, m) * C(1, n - m - sp) + (1 - sp) * C(6, m) * C(1,

n - m));// 6+0

神彩彩票合买代购系统开发文档

神彩彩票合买代购系统开发文档

levels[3] = multi * sp * C(5, m) * C(2 - sp, n - m - sp);// 5+1

levels[4] = multi * (sp * C(5, m) * C(2, n - m - sp) + (1 - sp) * C(5, m) * C(2,

levels[5] = multi * sp * C(4, m) * C(3 - sp, n - m - sp);// 4+1

levels[6] = multi * (sp * C(4, m) * C(3, n - m - sp) + (1 - sp) * C(4, m) * C(3,

七乐彩胆拖投注

n - m));// 5+0

n - m));// 4+0

int d = nt(st());// 胆球数

大乐透常规投注 int m = nt(st());// 前区数

if (pm != PM_SXL) {

levels[0] += C(5, r) * C(2, b) * multi;// 5+2

levels[1] += C(5, r) * (C(1, n - b) * C(1, b)) * multi;// 5+1

levels[2] += C(5, r) * C(2, n - b) * multi;// 5+0

levels[2] += C(4, r) * C(1, m - r) * C(2, b) * multi;// 4+2

levels[3] += C(4, r) * C(1, m - r) * (C(1, n - b) * C(1, b)) * multi;// 4+1

int r = nt(st() & base);// 中前区数

int b = nt(rd() & spec);// 中后区数

int n = nt(rd());// 后区数

levels[0] = multi * C(7 - s, k) * C(7 - d - (7 - s), t - k);// 7+0

levels[1] = dp * multi * C(6 - s, k) * C(7 - d - (6 - s), t - k) + tp * multi * C(6

levels[2] = (1 - dp) * multi * C(6 - s, k) * C(7 - d - (6 - s), t - k - tp);// 6+0

levels[3] = dp * multi * C(5 - s, k) * C(7 - d - (5 - s), t - k) + tp * multi * C(5

levels[4] = (1 - dp) * multi * C(5 - s, k) * C(7 - d - (5 - s), t - k - tp);// 5+0

levels[5] = dp * multi * C(4 - s, k) * C(7 - d - (4 - s), t - k) + tp * multi * C(4

levels[6] = (1 - dp) * multi * C(4 - s, k) * C(7 - d - (4 - s), t - k - tp);// 4+0

int dp = nt(st() & spec);

int tp = nt(ond() & spec);

int s = nt(st() & base);// 中胆球数

int k = nt(ond() & base);// 中拖球数

int t = nt(ond());// 拖球数

- s, k) * C(7 - d - (6 - s) - tp, t - k - tp);// 6+1

- s, k) * C(7 - d - (5 - s) - tp, t - k - tp);// 5+1

- s, k) * C(7 - d - (4 - s) - tp, t - k - tp);// 4+1

神彩彩票合买代购系统开发文档

神彩彩票合买代购系统开发文档

levels[3] += C(3, r) * C(2, m - r) * C(2, b) * multi;// 3+2

levels[4] += C(4, r) * C(1, m - r) * C(2, n - b) * multi;// 4+0

levels[4] += C(3, r) * C(2, m - r) * (C(1, n - b) * C(1, b)) * multi;// 3+1

levels[4] += C(2, r) * C(3, m - r) * C(2, b) * multi;// 2+2

levels[5] += C(3, r) * C(2, m - r) * C(2, n - b) * multi;// 3+0

levels[5] += C(2, r) * C(3, m - r) * (C(1, n - b) * C(1, b)) * multi;// 2+1

levels[5] += C(1, r) * C(4, m - r) * C(2, b) * multi;// 1+2

levels[5] += C(0, r) * C(5, m - r) * C(2, b) * multi;// 0+2

大乐透胆拖投注

int d = nt(st());// 胆球数

int t = nt(ond());// 拖球数

int dh = nt(rd());// 后区胆数

int th = nt(r());// 后区拖数

int s = nt(st() & base);// 中胆球数

int k = nt(ond() & base);// 中拖球数

int sh = nt(rd() & spec);// 中后区胆数

int kh = nt(r() & spec);// 中后区拖数

if (pm != PM_SXL) {

levels[0] += C(5 - s, k) * C(5 - d - (5 - s), t - k) *

levels[2] += C(5 - s, k) * C(5 - d - (5 - s), t - k) *

levels[3] += C(4 - s, k) * C(5 - d - (4 - s), t - k) *

levels[4] += C(4 - s, k) * C(5 - d - (4 - s), t - k) *

C(0 - sh, kh) * C(2 - dh - (0 - sh), th - kh) * multi;// 4+0

C(1 - sh, kh) * C(2 - dh - (1 - sh), th - kh) * multi;// 3+1

levels[4] += C(3 - s, k) * C(5 - d - (3 - s), t - k) *

levels[4] += C(2 - s, k) * C(5 - d - (2 - s), t - k) *

C(1 - sh, kh) * C(2 - dh - (1 - sh), th - kh) * multi;// 4+1

C(2 - sh, kh) * C(2 - dh - (2 - sh), th - kh) * multi;// 3+2

levels[3] += C(3 - s, k) * C(5 - d - (3 - s), t - k) *

C(0 - sh, kh) * C(2 - dh - (0 - sh), th - kh) * multi;// 5+0

C(2 - sh, kh) * C(2 - dh - (2 - sh), th - kh) * multi;// 4+2

levels[2] += C(4 - s, k) * C(5 - d - (4 - s), t - k) *

C(2 - sh, kh) * C(2 - dh - (2 - sh), th - kh) * multi;// 5+2

C(1 - sh, kh) * C(2 - dh - (1 - sh), th - kh) * multi;// 5+1

levels[1] += C(5 - s, k) * C(5 - d - (5 - s), t - k) *

神彩彩票合买代购系统开发文档

神彩彩票合买代购系统开发文档

C(2 - sh, kh) * C(2 - dh - (2 - sh), th - kh) * multi;// 2+2

levels[5] += C(3 - s, k) * C(5 - d - (3 - s), t - k) *

C(0 - sh, kh) * C(2 - dh - (0 - sh), th - kh) * multi;// 3+0

C(1 - sh, kh) * C(2 - dh - (1 - sh), th - kh) * multi;// 2+1

C(2 - sh, kh) * C(2 - dh - (2 - sh), th - kh) * multi;// 1+2

C(2 - sh, kh) * C(2 - dh - (2 - sh), th - kh) * multi;// 0+2

levels[5] += C(2 - s, k) * C(5 - d - (2 - s), t - k) *

levels[5] += C(1 - s, k) * C(5 - d - (1 - s), t - k) *

levels[5] += C(0 - s, k) * C(5 - d - (0 - s), t - k) *

算法基础

package {}

public

static

}

int bitCount(long i) {

//采取平行算法进行计算

// HD, Figure 5-14

//1.求出i对应的二进制数的每两位之和,比如(01)(11)(10)(00)-->(01)(10)(01)(00)

i = i - ((i >>> 1) & 0x5555555555555555L);

//2.求出(1.)中i对应的二进制数的每四位之和,比如(0110)(0001)(1001)(1001)

//-->(0010)(0001)(0010)(0010)

i = (i & 0x3333333333333333L) + ((i >>> 2) & 0x3333333333333333L);

//3.同上求出(2.)中i的二进制数的每八位之和。

i = (i + (i >>> 4)) & 0x0f0f0f0f0f0f0f0fL;

//4.同上求出(3.)中i的二进制数的每十六位之和。

i = i + (i >>> 8);

//5.同上求出(4.)中i的二进制数的每三十二位之和。

i = i + (i >>> 16);

//6.同上求出(5.)中i的二进制数的每六十四位之和。

i = i + (i >>> 32);

//1的个数最多也不会超过64个,所以只取最后7位即可。

return (int)i & 0x7f;

public byte byteValue() {

//long的最大长度为64bits,byte的最大长度为8bits,该方法取long值的末8bits得到的值

return (byte)value;

神彩彩票合买代购系统开发文档

神彩彩票合买代购系统开发文档

}

public static int compare(long x, long y) {

//如果xy的情况,返回1

return (x < y) ? -1 : ((x == y) ? 0 : 1);

}

public int compareTo(Long anotherLong) {

//调用方法3进行判断,返回值同3一致

return compare(, );

}

public static Long decode(String nm) throws NumberFormatException {

int radix = 10;

//默认为10进制

int index = 0;

boolean negative = false;

Long result;

if (() == 0)

throw new NumberFormatException("Zero length string");

//获取nm字符串的第一位,判断是否为'+'、'-'

char firstChar = (0);

// Handle sign, if present

if (firstChar == '-') {

negative = true;

index++;

} else if (firstChar == '+')

index++;

// Handle radix specifier, if present

if (With("0x", index) || With("0X", index))

//处理十六进制字符串

index += 2;

radix = 16;

}

else if (With("#", index)) {

//处理十六进制字符串

index ++;

radix = 16;

}

神彩彩票合买代购系统开发文档

{

神彩彩票合买代购系统开发文档

else if (With("0", index) && () > 1 + index){

//处理八进制字符串

index ++;

radix = 8;

}

//此时的index为符号位加上进制标识位后的位数,如果此时出现'+'、'-',则抛出异常

if (With("-", index) || With("+", index))

throw new NumberFormatException("Sign character in wrong

position");

try {

//获取指定进制下除进制标志位与符号位的Long型值

result = f(ing(index), radix);

//判断是否为负数

result = negative ? f(-lue()) : result;

} catch (NumberFormatException e) {

// If number is _VALUE, we'll end up here. The next line

// handles this case, and causes any genuine format error to be

// rethrown.

String constant = negative ? ("-" + ing(index))

: ing(index);

result = f(constant, radix);

}

return result;

}

public double doubleValue() {

//因为Double的长度与Long的长度一致,故Double将包含Long的值并返回

return (double)value;

}

public boolean equals(Object obj) {

if (obj instanceof Long) {

//如果obj是Long的示例,直接进行值的比较

return value == ((Long)obj).longValue();

}

return false;

}

神彩彩票合买代购系统开发文档

神彩彩票合买代购系统开发文档

public float floatValue() {

//long的最大长度为64bits,float的最大长度为32bits,该方法取long值的末32bits得到的值

public

public

public

return (float)value;

}

static Long getLong(String nm, Long val) {

String v = null;

try {

v = perty(nm);

//根据nm获取系统属性的编码

} catch (IllegalArgumentException e) {

} catch (NullPointerException e) {

}

if (v != null) {

try {

return (v);

//将编码转换为Long型值

} catch (NumberFormatException e) {

}

}

return val;

}

int hashCode() {

//返回当前Long的值的位移操作结果

return (int)(value ^ (value >>> 32));

}

static

}

long highestOneBit(long i) {

// HD, Figure 3-1

i |= (i >> 1);

//右移一位,并与i进行或操作,使得最高两位全为1

i |= (i >> 2);

//右移两位,并与i进行或操作,使得最高四位全为1

i |= (i >> 4);

//右移四位,并与i进行或操作,使得最高八位全为1

i |= (i >> 8);

//右移八位,并与i进行或操作,使得最高十六位全为1

i |= (i >> 16);

//右移十六位,并与i进行或操作,使得最高三十二位全为1

i |= (i >> 32);

//右移三十二位,并与i进行或操作,使得最高六十四位全为1

return i - (i >>> 1);

本篇主要讲述位移运算在Long中所扮演的重要角色,有些出神入化的我根本无法理解,但是我一直秉承着无论对错都要记录思考的过程的宗旨写每一篇文章。这 一篇也不例外,读Long这个类确实需要比较广泛的知识面,我也是一边在OSChina和stackoverflow上提问,一边慢慢的钻研,难免会存在 偏差。

先来看个简单的。

神彩彩票合买代购系统开发文档

神彩彩票合买代购系统开发文档

public static int signum(long i) {

// HD, Section 2-7

return (int) ((i >> 63) | (-i >>> 63));

}

这 个函数作用就是返回参数i的符号,如果返回-1则是负数,如果返回0则是0,如果返回1则是正数。算法就是(int) ((i >> 63) | (-i >>> 63)),如果是正数的话i有符号右移63位后为0,-i无符号右移63位之后结果为1,或操作之后结果就是1.如果i为负数,那么有符号右移63位后就 变成了1,然后-i无符号右移63位后就只剩下符号位,最后做或(|)操作结果就是-1. 如果参数i为0,那么移位后结果就是0.

n((100L));

n((0L));

n((-100L));

接着是一个很少用到,但是实现方式不错的两个方法,循环左移和循环右移方法。

public static long rotateLeft(long i, int distance) {

return (i << distance) | (i >>> -distance);

}

public static long rotateRight(long i, int distance) {

return (i >>> distance) | (i << -distance);

}

实现的代码量可以说已经精简到最少了,有一点要注意的是,循环移位时,参数distance可以接受负数,当distance为负数时,这个等式是成立 的,rotateLeft(i, distance) = rotateRight(i, -distance)。这个方法中有两点值得借鉴的,第一从整体上讲循环移位的实现方式;第二是distance与-distance的巧妙运用。

就拿循环左移先来说说第二点吧,前置条件,我们首先假设distance大于0,起先我是很不理解i >>> -distance的,后来在stackoverflow上发问,有人给出了解释,在移位的时候,如果distance小于0,会根据被移位数的长度进行 转换。就比如说这里我们对long进行移位,那么-distance就会被转换成(64 + distance)(注,这里的distance是小于0的)。这样的话,如果distance大于0时,(i << distance) | (i >>> -distance);就会被转化成(i << distance) | (i >>> 64 + distance);

清楚了第二点,那么第一点也就不难理解了。用一幅图来解释循环左移。

神彩彩票合买代购系统开发文档

神彩彩票合买代购系统开发文档

在 distance大于0的前提下,先左移distance位,然后再右移64-distance,最终用或运算相加,就是循环移位的结果。图中为了省事儿 用了8位做了个演示,先左移3位,然后右移(8-3)位,或运算之后就是结果啦。关于-distance在stackoverflow上的提问在这里。

下面是个更给力的方法-reverse(long i),可以说就是高效率的化身。

public static long reverse(long i) {

// HD, Figure 7-1

i = (i & 0x5555555555555555L) << 1 | (i >>> 1) & 0x5555555555555555L;

i = (i & 0x0f0f0f0f0f0f0f0fL) << 4 | (i >>> 4) & 0x0f0f0f0f0f0f0f0fL;

i = (i & 0x00ff00ff00ff00ffL) << 8 | (i >>> 8) & 0x00ff00ff00ff00ffL;

i = (i << 48) | ((i & 0xffff0000L) << 16) |

((i >>> 16) & 0xffff0000L) | (i >>> 48);

return i;

}

从整体上说,这个reverse方法集移位与二分算法于一身,堪称经典。 第一步以单位为单位,奇偶位交换 第二步以两位为单位,完成前后两位的交换。 第三步以四位为单位,完成前后四位的交换。 第四步以八位为单位,完成前后八位的交换。 最后一步没有按常理继续二分,而是通过一个转换一步就完成了以16和32位为单位的交换。进而结束了整个64位的反转。

现在一步一步剖析都是如何实现的。

i = (i & 0x5555555555555555L) << 1 | (i >>> 1) & 0x5555555555555555L;

16进制的5为0101,或操作前半部分首先取出i的所有奇数位,然后整体左移一位,这样实现i的奇数位左移一位变成偶数位;或操作后半部分先右移,即将偶数位右移变成奇数位,然后再取出奇数位。这样就完成了64位中奇数位与偶数位的交换。

i = (i & 0x3333333333333333L) << 2 | (i >>> 2) & 0x3333333333333333L;

这 句同样是实现交换,只不过3对应的16进制为0011,即本次交换以2个字节为单位,交换完成了4个字节的反转。 Liquid error: Flag value is invalid: -O ”” 直到这行代码,实现了以字节为单位的反转,最后仅仅使用一行代码就实现了一两个字节和四个字节为单位的反转。 为了方便画图,现在对操作进行编号,另外从以字节为单位交换开始,之前的细节忽略。

神彩彩票合买代购系统开发文档

神彩彩票合买代购系统开发文档

(i & 0x00ff00ff00ff00ffL) << 8 | (i >>> 8) & 0x00ff00ff00ff00ffL;

(i << 48)

(i & 0xffff0000L) << 16)

(i >>> 16) & 0xffff0000L)

(i >>> 48);

这幅图描述每个编号代码执行之后64位的变化。

不多做解释,由于这个reverse的最后一行不是按常理”出牌”,所以我使用纯粹的二分法来实现reverse。

public static long reverse(long i) {

// HD, Figure 7-1

i = (i & 0x5555555555555555L) << 1 | (i >>> 1) & 0x5555555555555555L;

i = (i & 0x3333333333333333L) << 2 | (i >>> 2) & 0x3333333333333333L;

i = (i & 0x0f0f0f0f0f0f0f0fL) << 4 | (i >>> 4) & 0x0f0f0f0f0f0f0f0fL;

i = (i & 0x00ff00ff00ff00ffL) << 8 | (i >>> 8) & 0x00ff00ff00ff00ffL;

i = (i & 0x0000ffff0000ffffL) << 16 | (i >>> 16) & 0x0000ffff0000ffffL;

i = (i & 0x00000000ffffffffL) << 32 | (i >>> 32) & 0x00000000ffffffffL;

return i;

}

至于为什么要采用那种方式,而不是用”纯粹”的二分法,在stackoverflow上有人提到,可能是因为前一种实现方式需要9个操作,而后一种实现方 式需要10个操作。具体是出于怎样的目的可能只有作者才知道。关于reverse我在stackoverflow上的提问在这里。

最后看一个方法。

public static int bitCount(long i) {

神彩彩票合买代购系统开发文档

神彩彩票合买代购系统开发文档

// HD, Figure 5-14

i = i - ((i >>> 1) & 0x5555555555555555L);

i = (i & 0x3333333333333333L) + ((i >>> 2) & 0x3333333333333333L);

i = (i + (i >>> 4)) & 0x0f0f0f0f0f0f0f0fL;

i = i + (i >>> 8);

i = i + (i >>> 16);

i = i + (i >>> 32);

return (int)i & 0x7f;

}

这个方法是返回一个long类型的数字对应的二进制中1的个数,其实google上有很多种,这里采用的叫平行算法实现的,算法如下图。

但是这个方法的第一行又采取了一个特别的方式实现i中奇数位+偶数位,我有点儿没想明白。总体上就是像图中所示那样,相邻的两位相加的结果再相邻的四位相加,最后得到二进制中1的个数。还有一点值得提一下,就是最后一行与上7f,因为long类型,1的个数最多也不会超过64个,所以只取最后7位即可。

后台

神彩彩票合买代购系统开发文档

神彩彩票合买代购系统开发文档

单关玩法算法说明

竞彩篮球

举例说明

周二301

周二302

周二303

周二304

周二305

周二306

周二307

周二308

周二313

周二314

周二315

周二316

周二309

周二310

周二311

周二312

胜负

0

0

0

0

0

0

0

0

1

1

1

1

1

1

1

1

让分胜负

0

0

0

0

1

1

1

1

0

0

0

0

1

1

1

1

胜分差

0

0

1

1

0

0

1

1

0

0

1

1

0

0

1

1

大小分

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

十进制

0000->0

0001->1

0010->2

0011->3

0100->4

0101->5

0110->6

0111->7

1000->8

1001->9

1010->10

1011->11

1100->12

1101->13

1110->14

1111->15

在F:001java2012nodejssports

match_中设置采集篮球的网址

神彩彩票合买代购系统开发文档

神彩彩票合买代购系统开发文档

竞彩足球

举例说明

周二001

周二002

周二003

周二004

胜平负

0

1

1

0

让球胜平负

0

1

0

1

总进球数

1

1

1

1

比分

1

1

1

1

半全场

1

1

1

1

十进制

00111->7

11111->31

10111->23

01111->15

性能优化

消息队列apache-activemq

启动以上3项

F:001java2012centerrbc_engineconf

新增配置

修改前端JS

神彩彩票合买代购系统开发文档

神彩彩票合买代购系统开发文档

F:

add:"/t/?fid=join",//参与方案

//add:"/t/?fid=join_mq",//参与方案消息队列

两种方式进行参与方案;查看效果

:8161/admin/

admin

admin

第三章 出票篇

测试账号:

agentID

3821

100015

51000027

url

:8089/bin/

101.251.205.35:8088

120.237.131.58:1999/newif/services/Iprotocol?wsdl

key

a8b8c8d8e8f8g8h8

FVUGWH9KUE

CYTU27LZ

正式账号:

agentID

832825

100017

51000027

url

:8089/bin/

101.251.205.46:8088

114.119.7.144:8080/newif/services/Iprotocol?wsdl

key

t888888

9P2EKLKRFY

CYTU27LZ

测试主程序

神彩彩票合买代购系统开发文档

神彩彩票合买代购系统开发文档

没有出票通道的测试方法:

:8088/admin/ticket/com/cpticket/

<%@ page language="java" import=".*" pageEncoding="gbk" %><%@ page

import=".*" %><%tentType("application/xml;charset=UTF-8");

String d =rentDateTime().replace(" ","").replace("-","").replace(":","");

String action=ameter("a");

String tickets=ameter("n");

String gid=ameter("gid");

int n=0;

if(tickets!=null && tickets!=""){

n=nt(tickets);

}

String html = "000050000.00";

html += "" + d + "";

html += "" + n + "";

html += "";

int index = 0;

while(index<=n){

html += "";

html += "" + d + index + "";

html += "9";

html += "2";

html += "10";

html += "0";

html += "";

html += "0000";

html += "";

index+=1;

}

html += "";

n(html);

//ter().write(html);

%>

神彩彩票合买代购系统开发文档

神彩彩票合买代购系统开发文档

第四章 数据库篇

oracle

alter pluggable database pdborcl open;

数据库表说明

select table_name from user_tables;

LOT_USERS_POINT

LOT_PAY_KEY

LOT_USERS

LOT_SOLAR_DATA

LOT_TEAM_JC_SP

LOT_TEAM_BB_SP

LOT_TEAM_VALUE

LOT_REDPACKET

LOT_USERS_HOT

LOT_USERS_FOLLOW

LOT_SITE_AD

LOT_PAY_BANK

LOT_ACCOUNT_ORDER

LOT_SITE_CONFIG

LOT_GAME_CLASS

LOT_GAME_METHOD

LOT_USERS_LOGIN

LOT_NEWS

LOT_NEWS_CLASS

LOT_USERS_NOTICE

LOT_PAY_LOGS

LOT_GAME_PRIZE

LOT_SSC_CLASS

神彩彩票合买代购系统开发文档

本文标签: 投注实现进行操作算法