首页
关于
推荐
奈飞账号
摸鱼信息
Search
1
🎥购买Netflix奈飞账号获取低价渠道Netflix账号合租完全指南2024
550 阅读
2
最棒的开源OSS存储 MinIO,真香!
442 阅读
3
使用docker搭建自己的邮箱服务器收发邮件
387 阅读
4
手淫如何增强你的免疫系统
360 阅读
5
mysql开启事件调度器
343 阅读
生活杂谈
技术分享
读书笔记
互联网发现
阅读发现
登录
Search
标签搜索
docker
开发
tool
教程
windows
开源oss存储
MinIO
git
http代理
邮件服务
mail
mysql
sql
spring
读书
阅读
读书笔记
Linux
Shell
银行卡
https://www.ziyuzile.cn
累计撰写
21
篇文章
累计收到
4
条评论
首页
栏目
生活杂谈
技术分享
读书笔记
互联网发现
阅读发现
页面
关于
推荐
奈飞账号
摸鱼信息
搜索到
21
篇与
的结果
2019-04-29
根据银行卡号码获取银行卡归属地信息,银行卡发卡行
根据银行卡号码获取银行卡归属地信息接口地址:https://ccdcapi.alipay.com/validateAndCacheCardInfo.json?_input_charset=utf-8&cardNo=银行卡卡号&cardBinCheck=true返回结果如下:{ "SRCB": "深圳农村商业银行", "BGB": "广西北部湾银行", "SHRCB": "上海农村商业银行", "BJBANK": "北京银行", "WHCCB": "威海市商业银行", "BOZK": "周口银行", "KORLABANK": "库尔勒市商业银行", "SPABANK": "平安银行", "SDEB": "顺德农商银行", "HURCB": "湖北省农村信用社", "WRCB": "无锡农村商业银行", "BOCY": "朝阳银行", "CZBANK": "浙商银行", "HDBANK": "邯郸银行", "BOC": "中国银行", "BOD": "东莞银行", "CCB": "中国建设银行", "ZYCBANK": "遵义市商业银行", "SXCB": "绍兴银行", "GZRCU": "贵州省农村信用社", "ZJKCCB": "张家口市商业银行", "BOJZ": "锦州银行", "BOP": "平顶山银行", "HKB": "汉口银行", "SPDB": "上海浦东发展银行", "NXRCU": "宁夏黄河农村商业银行", "NYNB": "广东南粤银行", "GRCB": "广州农商银行", "BOSZ": "苏州银行", "HZCB": "杭州银行", "HSBK": "衡水银行", "HBC": "湖北银行", "JXBANK": "嘉兴银行", "HRXJB": "华融湘江银行", "BODD": "丹东银行", "AYCB": "安阳银行", "EGBANK": "恒丰银行", "CDB": "国家开发银行", "TCRCB": "江苏太仓农村商业银行", "NJCB": "南京银行", "ZZBANK": "郑州银行", "DYCB": "德阳商业银行", "YBCCB": "宜宾市商业银行", "SCRCU": "四川省农村信用", "KLB": "昆仑银行", "LSBANK": "莱商银行", "YDRCB": "尧都农商行", "CCQTGB": "重庆三峡银行", "FDB": "富滇银行", "JSRCU": "江苏省农村信用联合社", "JNBANK": "济宁银行", "CMB": "招商银行", "JINCHB": "晋城银行JCBANK", "FXCB": "阜新银行", "WHRCB": "武汉农村商业银行", "HBYCBANK": "湖北银行宜昌分行", "TZCB": "台州银行", "TACCB": "泰安市商业银行", "XCYH": "许昌银行", "CEB": "中国光大银行", "NXBANK": "宁夏银行", "HSBANK": "徽商银行", "JJBANK": "九江银行", "NHQS": "农信银清算中心", "MTBANK": "浙江民泰商业银行", "LANGFB": "廊坊银行", "ASCB": "鞍山银行", "KSRB": "昆山农村商业银行", "YXCCB": "玉溪市商业银行", "DLB": "大连银行", "DRCBCL": "东莞农村商业银行", "GCB": "广州银行", "NBBANK": "宁波银行", "BOYK": "营口银行", "SXRCCU": "陕西信合", "GLBANK": "桂林银行", "BOQH": "青海银行", "CDRCB": "成都农商银行", "QDCCB": "青岛银行", "HKBEA": "东亚银行", "HBHSBANK": "湖北银行黄石分行", "WZCB": "温州银行", "TRCB": "天津农商银行", "QLBANK": "齐鲁银行", "GDRCC": "广东省农村信用社联合社", "ZJTLCB": "浙江泰隆商业银行", "GZB": "赣州银行", "GYCB": "贵阳市商业银行", "CQBANK": "重庆银行", "DAQINGB": "龙江银行", "CGNB": "南充市商业银行", "SCCB": "三门峡银行", "CSRCB": "常熟农村商业银行", "SHBANK": "上海银行", "JLBANK": "吉林银行", "CZRCB": "常州农村信用联社", "BANKWF": "潍坊银行", "ZRCBANK": "张家港农村商业银行", "FJHXBC": "福建海峡银行", "ZJNX": "浙江省农村信用社联合社", "LZYH": "兰州银行", "JSB": "晋商银行", "BOHAIB": "渤海银行", "CZCB": "浙江稠州商业银行", "YQCCB": "阳泉银行", "SJBANK": "盛京银行", "XABANK": "西安银行", "BSB": "包商银行", "JSBANK": "江苏银行", "FSCB": "抚顺银行", "HNRCU": "河南省农村信用", "COMM": "交通银行", "XTB": "邢台银行", "CITIC": "中信银行", "HXBANK": "华夏银行", "HNRCC": "湖南省农村信用社", "DYCCB": "东营市商业银行", "ORBANK": "鄂尔多斯银行", "BJRCB": "北京农村商业银行", "XYBANK": "信阳银行", "ZGCCB": "自贡市商业银行", "CDCB": "成都银行", "HANABANK": "韩亚银行", "CMBC": "中国民生银行", "LYBANK": "洛阳银行", "GDB": "广东发展银行", "ZBCB": "齐商银行", "CBKF": "开封市商业银行", "H3CB": "内蒙古银行", "CIB": "兴业银行", "CRCBANK": "重庆农村商业银行", "SZSBK": "石嘴山银行", "DZBANK": "德州银行", "SRBANK": "上饶银行", "LSCCB": "乐山市商业银行", "JXRCU": "江西省农村信用", "ICBC": "中国工商银行", "JZBANK": "晋中市商业银行", "HZCCB": "湖州市商业银行", "NHB": "南海农村信用联社", "XXBANK": "新乡银行", "JRCB": "江苏江阴农村商业银行", "YNRCC": "云南省农村信用社", "ABC": "中国农业银行", "GXRCU": "广西省农村信用", "PSBC": "中国邮政储蓄银行", "BZMD": "驻马店银行", "ARCU": "安徽省农村信用社", "GSRCU": "甘肃省农村信用", "LYCB": "辽阳市商业银行", "JLRCU": "吉林农信", "URMQCCB": "乌鲁木齐市商业银行", "XLBANK": "中山小榄村镇银行", "CSCB": "长沙银行", "JHBANK": "金华银行", "BHB": "河北银行", "NBYZ": "鄞州银行", "LSBC": "临商银行", "BOCD": "承德银行", "SDRCU": "山东农信", "NCB": "南昌银行", "TCCB": "天津银行", "WJRCB": "吴江农商银行", "CBBQS": "城市商业银行资金清算中心", "HBRCU": "河北省农村信用社" }根绝银行卡归属标识码,查询银行logo图标接口地址:https://apimg.alipay.com/combo.png?d=cashier&t=CCB就是普通的get请求,把银行卡归属标识码作为t参数传入即可测试:https://ccdcapi.alipay.com/validateAndCacheCardInfo.json?_input_charset=utf-8&cardNo=6222021609007353797&cardBinCheck=true返回结果如下{ "bank": "ICBC", "validated": true, "cardType": "DC", "key": "6222021609007353797", "messages": [], "stat": "ok" }该接口返回银行Bin号的合法与否(validated),所属银行(bank),银行卡类型(cardType,DC:借记卡,CC:信用卡)。ICBC 标识码对映的就是 “ICBC”: “中国工商银行”结果如下
2019年04月29日
328 阅读
0 评论
0 点赞
2019-03-26
常用linux操作命令
su user : 切换用户 su - suer : 切换用户并启用单前用户的环境变量 ps aux 或 ps -ef : 查看所有进程 ps aux | grep exe 或 ps -ef | grep exe : 查看某个系统进程 netstat -nap | grep node 查看端口占用情况 | : 管线符,让上一次的输出内容作为下次输入内容的 kill -15 pid : 强制杀死进程 kill -9 pid : 暴力杀死进程 cp file dir : 复制 cp file dir/newfilename : 复制并且重命名 cp -r dir targetdir/ : 将目录递归复制到新目录中 rm file : 删除 rm -f file 不进入回收站删除 rm -rf dir : 强制递归删除 free : 查看内存KB free -m : 查看内存M ifconfig : 查询IP地址 tar -xvzf filename : 解压到单前文件夹 tar -xvzf filename -C dir: 解压到某个文件夹 tar -cvf filename.tar dir : 打包 tar -cvzf filename.tar.gz file1 file2 : 压缩打包 zip filename.zip file1 file2 : 打包 unzip filename.zip : 解压 unzip filename.zip -d dir : 解压到某个文件夹 ----------------war包操作 命令start--------------- 1.打包 jar -xvf project.war /project_a 说明: -c 创建war包 -v 显示过程信息 -f 指定 JAR 文件名,通常这个参数是必须的 -M 不产生所有项的清单(MANIFEST〕文件,此参数会忽略 -m 参数 -0 这个是阿拉伯数字,只打包不压缩的意思 2. 解压 jar -xvf project.war ----------------war包操作 命令end--------------- mkdir dirname : 新建目录,以.开始都进行隐藏文件 mkdir -p dirname/dirname : 新建目录多个 touch filename : 新建文件 mv filename newfilename : 重命名 mv filename dir/ : 移动文件到目录 cat file : 查看文件 more file : 分页查看文件 tail -f file : 滚屏查看日志 df -h : 查看挂载的磁盘 fdisk -l : 查看磁盘信息 systemctl stop firewalld 关闭contos7默认防火墙 systemctl disable firewalld 失效 yum -y install iptables-services 安装iptables防火墙 vi /etc/sysconfig/iptables 编辑iptablse文件 -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT 添加规则 service iptables restart 重启iptables服务 clear : 清屏 ----------------vi 命令--------------- 进入vi的命令 vi filename : 打开或新建文件,并将光标置于第一行首 vi +n filename : 打开文件,并将光标置于第n行首 vi + filename : 打开文件,并将光标置于最后一行首 vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处 vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filename vi filename....filename :打开多个文件,依次进行编辑 ---移动光标类命令--- l : 光标移至屏幕最后行 $ : 光标移至当前行尾 ---插入文本类命令--- i :在光标前 I :在当前行首 a:光标后 A:在当前行尾 o:在当前行之下新开一行 O:在当前行之上新开一行 r:替换当前字符 R:替换当前字符及其后的字符,直至按ESC键 s:从当前光标位置处开始,以输入的文本替代指定数目的字符 S:删除指定数目的行,并以所输入文本代替之 ncw或nCW:修改指定数目的字 nCC:修改指定数目的行 ---删除命令--- ndw或ndW:删除光标处开始及其后的n-1个字 do:删至行首 d$:删至行尾 ndd:删除当前行及其后n-1行 x或X:删除一个字符,x删除光标后的,而X删除光标前的 Ctrl+u:删除输入方式下所输入的文本 ---保存退出--- zz 保存并退出 :w filename 写入文件 :W 写入文件 :x 保存(如果当前文件修改过)并退出 :q! 不保存文件,直接退出 :q 退出vi :wq : 保存并退出 :wq! 强制保存和退出 常用命令: pwd : 查看单前所在目录 cd 目录 : 打开某个目录 cd : 直接返回单前用户的+目录 ls : 查看单前目录的信息 ls -l : 查询单前目录的详情信息 或者 ll ls -a : 查看目录文件,包括隐藏文件 文件权限: -/d rwx rwx rwx 文件/目录 单前用户权限 组权限 其他用户的权限 r w x 读 写 执行 1 1 1 二进制权限 chmod 文件夹/文件 +权限单词 : 添加权限 chmod 文件夹/文件 -权限单词 : 删除权限 chown -R user:group dir : 将某个目录给定某个用户 --------------用户------------ groupadd groupname : 新建分组 useradd username -g groupname : 新建用户分配到某一个分组 passwd username : 设置用户密码 系统环境变量: /etc/profile 配置jdk export JAVA_HOME=/usr/local/jdkpath export PATH=$JAVA_HOME:$PATH #多个环境变量使用:隔开 source /etc/profile : 使环境变量生效 reboot 或 init 6 : 重启服务器 halt 或 init 0 或 shutdown -h now : 关机 配置tomcat 配置网络: /etc/sysconfig/network-scripts/ifcfg-eth0 : 网卡0 自动获取ip地址: DEVICE=eth0 #TYPE=Ethernet #UUID=f2287a85-8005-48b8-832a-7bef8ff40cdc ONBOOT=yes NM_CONTROLLED=no BOOTPROTO=dhcp HWADDR=00:0C:29:4B:13:22 #DEFROUTE=yes #PEERDNS=yes #PEERROUTES=yes #IPV4_FAILURE_FATAL=yes #IPV6INIT=no #NAME="System eth0" service network restart : 重启 service network stop : 停止 service network start : 启动 配置DNS: /etc/resolv.conf centos 6.6 安装桌面: yum groupinstall "Desktop" yum groupinstall "X Window System" -y yum groupinstall "Chinese Support" yum -y install lrzsz rz -E 上传文件 sz 文件名 下载 查找某个字符串所在位置 grep -Irn 'LVVDB21B0HD194403' *.xml find .|xargs grep -ri "Z297010080120180000017" -l 目录读权限可以列出文件名,目录执行权限可以访问目录里内容 执行权限对文件和文件夹的意义不一样 查看权限命令 查看目录的相关权限可以采用命令ls -lD,或者直接用ls -la 如 ls -l opt //这里表示查看opt目录 修改权限命令 chmod 777 文件名 1.chmod 577 /home/stuser -R 2.umask -p 0200 3.chown XXXX YYYY (XXXX 为用户名 YYYY为文件名) 权限列表 -rw------- (600) 只有所有者才有读和写的权限 -rw-r--r-- (644) 只有所有者才有读和写的权限,组群和其他人只有读的权限 -rwx------ (700) 只有所有者才有读,写,执行的权限 -rwxr-xr-x (755) 只有所有者才有读,写,执行的权限,组群和其他人只有读和执行的权限 -rwx--x--x (711) 只有所有者才有读,写,执行的权限,组群和其他人只有执行的权限 -rw-rw-rw- (666) 每个人都有读写的权限 -rwxrwxrwx (777) 每个人都有读写和执行的权限
2019年03月26日
281 阅读
0 评论
0 点赞
2018-04-03
mysql in exists
如果查询的两个表大小相当,那么用in和exists差别不大。无论那个表大,用not exists都比not in要快。详细分析exists对外表用loop逐条查询,每次查询都会查看exists的条件语句,当 exists里的条件语句能够返回记录行时(无论记录行是的多少,只要能返回),条件就为真,返回当前loop到的这条记录,反之如果exists里的条 件语句不能返回记录行,则当前loop到的这条记录被丢弃,exists的条件就像一个bool条件,当能返回结果集则为true,不能返回结果集则为 false如下:select * from user where exists (select 1);对user表的记录逐条取出,由于子条件中的select 1永远能返回记录行,那么user表的所有记录都将被加入结果集,所以与 select * from user;是一样的又如下select * from user where exists (select * from user where userId = 0);可以知道对user表进行loop时,检查条件语句(select * from user where userId = 0),由于userId永远不为0,所以条件语句永远返回空集,条件永远为false,那么user表的所有记录都将被丢弃not exists与exists相反,也就是当exists条件有结果集返回时,loop到的记录将被丢弃,否则将loop到的记录加入结果集总的来说,如果A表有n条记录,那么exists查询就是将这n条记录逐条取出,然后判断n遍exists条件 in查询相当于多个or条件的叠加,这个比较好理解,比如下面的查询select * from user where userId in (1, 2, 3);等效于select * from user where userId = 1 or userId = 2 or userId = 3;not in与in相反,如下select * from user where userId not in (1, 2, 3);等效于select * from user where userId != 1 and userId != 2 and userId != 3;总的来说,in查询就是先将子查询条件的记录全都查出来,假设结果集为B,共有m条记录,然后在将子查询条件的结果集分解成m个,再进行m次查询值得一提的是,in查询的子条件返回结果必须只有一个字段,例如select * from user where userId in (select id from B);而不能是select * from user where userId in (select id, age from B);而exists就没有这个限制下面来考虑exists和in的性能考虑如下SQL语句1: select * from A where exists (select * from B where B.id = A.id); 2: select * from A where A.id in (select id from B);查询1.可以转化以下伪代码,便于理解for ($i = 0; $i < count(A); $i++) { $a = get_record(A, $i); #从A表逐条获取记录 if (B.id = $a[id]) #如果子条件成立 $result[] = $a;}return $result;大概就是这么个意思,其实可以看到,查询1主要是用到了B表的索引,A表如何对查询的效率影响应该不大假设B表的所有id为1,2,3,查询2可以转换为select * from A where A.id = 1 or A.id = 2 or A.id = 3;这个好理解了,这里主要是用到了A的索引,B表如何对查询影响不大下面再看not exists 和 not in1. select * from A where not exists (select * from B where B.id = A.id); 2. select * from A where A.id not in (select id from B);看查询1,还是和上面一样,用了B的索引而对于查询2,可以转化成如下语句select * from A where A.id != 1 and A.id != 2 and A.id != 3;可以知道not in是个范围查询,这种!=的范围查询无法使用任何索引,等于说A表的每条记录,都要在B表里遍历一次,查看B表里是否存在这条记录故not exists比not in效率高mysql中的in语句是把外表和内表作hash 连接,而exists语句是对外表作loop循环,每次loop循环再对内表进行查询。一直大家都认为exists比in语句的效率要高,这种说法其实是不准确的。这个是要区分环境的。 如果查询的两个表大小相当,那么用in和exists差别不大如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in。 例如:表A(小表),表B(大表)1: select * from A where cc in (select cc from B) 效率低,用到了A表上cc列的索引; select * from A where exists(select cc from B where cc=A.cc) 效率高,用到了B表上cc列的索引。 相反的 2: select * from B where cc in (select cc from A) 效率高,用到了B表上cc列的索引; select * from B where exists(select cc from A where cc=B.cc) 效率低,用到了A表上cc列的索引。not in 和not exists如果查询语句使用了not in 那么内外表都进行全表扫描,没有用到索引;而not extsts 的子查询依然能用到表上的索引。所以 无论那个表大,用not exists都比not in要快。 in 与 =的区别select name from student where name in ('zhang','wang','li','zhao'); 与 select name from student where name='zhang' or name='li' or name='wang' or name='zhao' 的结果是相同的。文章转自Franklin的博客
2018年04月03日
266 阅读
0 评论
0 点赞
2018-04-03
《查理·芒格的原则》
撸哥说过,世界上大部分是普通人,普世价值是错误的,如果随大流,仅能取得平均成绩。
2018年04月03日
262 阅读
0 评论
0 点赞
2018-03-22
spring动态注册bean
某些情况下静态的配置信息无法满足系统需求,需要根据静态配置动态生成bean注册到spring中。为啥要动态注册bean?某些情况下静态的配置信息无法满足系统需求,需要根据静态配置动态生成bean注册到spring中。在写一些工具的时候会用到的,原本打算写一个类似 Fegin 的小组件。于是有了这个研究动机。但后来网上找到了我想要的开源项目,就不重复造轮子了,但是技术点还是研究了一下。 感兴趣的可以去看看这个项目:Forest啥时候注册bean?太晚了肯定不行啊,@Autowired不等人,在Autowired注入之后注册肯定报错啊,想都不要想。那么就要在Autowired之前。咋注册呢?Spring 通过一个 BeanPostProcessor 对 @Autowired 进行解析,所以要让 @Autowired 起作用必须事先在 Spring 容器中声明 AutowiredAnnotationBeanPostProcessor Bean。思路一搞一个类实实现BeanPostProcessor,ApplicationContextAware接口 让它早于AutowiredAnnotationBeanPostProcessor运行。BeanPostProcessor,可以在spring容器实例化bean之后,在执行bean的初始化方法前后,添加一些自己的处理逻辑。but这个我没搞出来不知的问题出在哪里,有机会再研究研究。思路二搞一个类实现BeanFactoryPostProcessor接口.这是个啥接口呢?实现该接口,可以在spring的bean创建之前,修改bean的定义属性。不废话直接贴代码。public class MyBeanFactoryPostProcessor implements ApplicationContextAware, BeanFactoryPostProcessor { private static ApplicationContext applicationContext; private String packageS; public String getPackageS() { return packageS; } public void setPackageS(String packageS) { this.packageS = packageS; } @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { MyBeanFactoryPostProcessor.applicationContext = applicationContext; } public static ApplicationContext getApplicationContext() { return applicationContext; } public static Object getBean(String beanName) { return applicationContext.getBean(beanName); } public static <T>T getBean(String beanName , Class<T>clazz) { return applicationContext.getBean(beanName , clazz); } /** * 此方法会在bean初始化完成但未实例化时调用 */ public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException { //beanFactory 也可以拿到当前系统从已经初始化好的bean,也可以做一些修改 //设置了扫描路径则则可以根据扫描包扫描相应的注解 System.out.println("packageS==================="+packageS); //获取BeanFactory DefaultListableBeanFactory defaultListableBeanFactory = (DefaultListableBeanFactory)applicationContext.getAutowireCapableBeanFactory(); //模拟扫描到的bean,用动态代理等等方式创建 //创建bean信息. BeanDefinitionBuilder beanDefinitionBuilder =BeanDefinitionBuilder.genericBeanDefinition(RestBean.class); beanDefinitionBuilder.addPropertyValue("name","张三"); //动态注册bean. defaultListableBeanFactory.registerBeanDefinition("restBean",beanDefinitionBuilder.getBeanDefinition()); //注册进spring上下文的bean可以获取一下看看 BeanDefinition bd = beanFactory.getBeanDefinition("restBean"); } } javaConfig@Configuration public class Config { @Bean public MyBeanFactoryPostProcessor getMyBeanFactoryPostProcessor() { MyBeanFactoryPostProcessor sss = new MyBeanFactoryPostProcessor(); sss.setPackageS("com.xxxx"); return sss; } } 现在就可以在spring管理的任何类中使用了 @Autowired RestBean restBean;代码地址:BeanLoad 知乎上看到一个专栏,学到不少东西。有兴趣可以关注一下。晓风轻
2018年03月22日
197 阅读
0 评论
0 点赞
1
...
3
4
5