总结

JAVA 中的Iterator
迭代器是一种设计模式,他是对象,他可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构,迭代器通常称为“轻量级”对象,因为创建他是代加小

sql 语句从编译和运行的角度可以分为俩种,静态sql和动态sql。这俩种sql在使用方式,运行机制和性能表现等方面各有特点;
静态sql :语句一般用于切入式sql应用中。在程序运行前,sql语句必须是确定的,例如sql中涉及到的列名和表名必须是存在的。静态是sql是在应用程序运行前进行的,编译的结果会存储在数据库内部。而后程序运行时。数据库将直接执行编译好的sql语句,降低运行开销、。,
动态sql : 动态sql语句是在应用程序运行时编译和执行的。例如:使用DB2的交互式工具CLP访问数据库时。用户输入的sql语句是不确定的。因此sql语句只能被动态地编译。
动态 SQL 的应用较多,常见的 CLI 和 JDBC 应用程序都使用动态 SQL。

防火墙 四种技术

1》包过滤技术

2》应用代理

 3》状态监控过滤包
  4》应用层监控和控制状态包过滤

2 什么叫“限制的访问控制技术”?
2)在访问控制列表中,默认是拒绝所有
2)这种默认行为为拒绝所有的控制技术就被称为“
"限制的访问控制技术”

3 关于访问控制列表的处理流程
1)入站的访问控制列表 In
A 流量从接口流入
B 若匹配访问控制列表。且执行动作为Permit,则继续执行
c 若匹配访问控制列表,且执行动作为Deny,. 则丢弃该数据包
d 若配置的访问控制列表均没有匹配,则丢弃该数据包
总结 :先检查访问控制列表,在检查路由表
2) 出站的访问控制列表 out
a 流量需要从设备转发出去
b 设备查路由表,确定流量该从哪一个接口转发出去
c 此时,若该接口部署了访问控制列表,且执行方向为出方向
d 若匹配访问控制列表, 且执行动作Permit,则执行方向为出方向
e 若匹配访问控制列表,且执行动作Deny,则丢弃该数据包
f 若配置访问控制列表均没有匹配,则丢弃该数据包;;

MYSQL手册中find_in_set函数用法:
FIND_IN_SET(str,strlist)
注意:str要查询的字符串,strlist字段名。参数以“,”分割如
(1,2,6,8)
查询字段中包含str的结果。返回结果为null或记录。
假如字符串str在由N个子链组成的字符串列表strlist中,则返回值的范围在1到N之间。
一个字符串列表就是一个由一些被“,”符号分开的子链组成的字符串,如果第一个参数是一个常量字符串。而第二是type set列,则find_in_set()函数被优化,使用比特计算。
如果str不在strlist为空字符串,则返回值为0.如果任意一个null,则返回值为null。这个函数在第一个包含一个逗号(,)时将无法正常运行、。

mysql> SELECT FIND_IN_SET('b', 'a,b,c,d');

输出2,应为b在strlist集合中放在2的位置,从1开始。

find_in_set()和in的区别
弄个测试表来说明俩则的区别
CREATE TABLE tb_test (
id int(8) NOT NULL auto_increment,
name varchar(255) NOT NULL,
list varchar(255) NOT NULL,
PRIMARY KEY (id)
);

INSERT INTO tb_test VALUES (1, ‘name’, ‘daodao,xiaohu,xiaoqin’);
INSERT INTO tb_test VALUES (2, ‘name2’, ‘xiaohu,daodao,xiaoqin’);
INSERT INTO tb_test VALUES (3, ‘name3’, ‘xiaoqin,daodao,xiaohu’);
我们来看俩天语句
SQL1: SELECT id,name,list from tb_test WHERE ‘daodao’ IN(list);
SQL2: SELECT id,name,list from tb_test WHERE ‘daodao’ IN (‘libk’, ‘zyfon’, ‘daodao’);

sql1不行,这样只有当list字段的值等于‘daodao’时(和in前面的字符串完全匹配),查询才有效,否则都得不到结果。既使‘daodao’真的在list中;
sql2 是可行的
这俩条到底有什么区别呢?为什么第一条不能取得正确的结果,二条却能取得结果
其实原因是sql1中(list)是变量,而sql2中(‘libk’,‘zyfon’,‘daodao’)是常量。
所以如果要让sql1 能正常工作,需要用find_in_set();
SELECT id,name,list from tb_test WHERE FIND_IN_SET(‘daodao’,list);
总结:如果list是常量,则可以直接用in,否则要用find _in_set()函数,mysql字符串函数find_in_set(str1,str2)函数是返回str2中str1所在的位置索引,str2必须以“,”分割开

函数IFNULL(SUM(transfer_amount),0),
当数据库不存在任何符合求和记录时,sum返回0

例如:SELECT IFNULL(SUM(transfer_amount),0) FROM cm_agent_withdrawal WHERE transfer_status in (1,2,3)

mysql IFNULL(expr1,expr2)

如果 expr1 不是 NULL,IFNULL() 返回 expr1,否则它返回 expr2。

IFNULL()返回一个数字或字符串值,取决于它被使用的上下文环境。

    String mouthBegin = DateUtils.getYear() + "-" + DateUtils.getMonth()+"-01";
                    double mouthSum = 0;
                    // 查询年累计用
                    String yearBegin = DateUtils.getYear()+"-01-01";

看看下面这个sql
SELECT
c.name AS ‘name’,
IFNULL(SUM(IF(a.status=2 AND a.model_type LIKE concat(’%’,4,’%’),1,0)),0) AS ‘violation’,
IFNULL(SUM(IF(a.status=3 OR (a.status = 2 AND a.model_type NOT LIKE concat(’%’,4,’%’)),1,0)),0) AS ‘noViolation’,
IFNULL(SUM(IF((a.status=2 AND a.model_type LIKE concat(’%’,1,’%’)) OR (a.status=3 OR (a.status = 2 AND a.model_type NOT LIKE concat(’%’,4,’%’))),1,0)),0) AS ‘count’
FROM money_account_info a
LEFT JOIN sys_account b ON b.account_number = a.account_number
LEFT JOIN sys_office c ON c.id = b.office_id

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值