主外键是数据库提供的一种两表之间强制关联的方法,也可以从应用层实现。...优点 缺点 数据库实现的主外键 由数据库层机制保证,无需应用额外实现 强关联,不易扩展变更 应用实现的主外键 易扩展变更 完全由应用控制,要求较高 我认为需要根据实际情况进行取舍,例如表不复杂,可以由应用实现...存在主外键关联的主表,由于存在外键关联关系,因此有些操作就会禁止,例如truncate。 实验 1....现在主表和子表没有任何数据,此时执行truncate主表 SQL> truncate table tbl_a; Table truncated. 可以执行。 3....主外键关联中的主表,如果有数据,则不能直接用truncate方式删除,因为会认为有外键和其关联,不能直接截断主表,若需要做,可以先禁止外键约束,主表变成一个独立的表,这样就可以执行truncate了。
创建架构,复合主键,主表,从表的创建方法。...null, u_id int constraint PK_ID primary key(id,s_id,u_id)--创建复合主键 ) create table XIXI.O(--主表...create table XIXI.K(--从表 id int constraint FK_id foreign key(id) references XIXI.O(id) ) --先删从表再删主表
正则表达式 正则表达式是一种模板表达式语言 通过定义规则去匹配、查找、替换、分割一个长字符串中特定的子字符信息。...如在一篇文章中查找出所有合法的电子邮箱地址,则可以先用正则表达式定义一个电子邮箱规则,然后再使用这个规则在整个字符串中查找。 爬虫程序一般都会借助正则表达式定义的规则在爬出来的内容中做精细化筛检。...正则表达式有自己独立于其它计算机语言的语法结构,此大部分计算机编程语言都提供有对正则表达式的支持。...正则表达式中的普通字符,在匹配一个字符串的时候,匹配与之相同的一个字符。 如需在 “This is my love” 中匹配 “love” 子字符串,则表达式就是 "love"。...(小数点和 + 号失去语法赋予的意义) 修饰匹配次数的特殊符号 {n} 表达式重复 n次 {m,n} 表达式至少重复 m 次,最多重复 n 次 {m,} 表达式至少重复 m 次 ?
标题场景例如本站右侧标签云,主要的排序依据是tag标签出现的次数。由于数据库设计时,将tag标签独立,并没有作为article文章表的一个字段。...通过一个中间关联表(art_tag)来对应文章表(article)和tag表(tags)之间的映射关系。通过查询tags表中的数据,以art_tag表中的映射数量进行排序操作。...先来看下三个表结构涉及的字段。...业务目标即:对art_tag表中的tags_id进行count计数作为tags表查询的排序依据。...如果你需要在大数量级中应用类似查询,那等待的就有可能是脚本超时咯。所以当时在做的时候,一时没有好的办法,就没有深入去研究重写。
今天得空,改造了下程序,通过操作数组来达到避开在遍历中使用count查询的目的。 先来通过thinkPHP的debug函数来测试下昨天的程序性能。...上一篇是正常思维,通过查询tag表中的id在关联表中做count查询查询,最后以count依据截取需要的部分内容返回给控制器。...今天换个思路来实现相同的目的。...后续对这个数组截取需要的部分在tag表中使用in查询,返回最终查询结果即可。...性能提升还是非常明显的。性能提升的关键在用PHP数组内置函数去代替了count计数查询,第二是截取需要的部分进行最后的数据查询。
你的企业如何利用这一巨大的科技趋势? 960x0-10.jpg 什么是物联网(IoT)? 物联网是指每天围绕着我们的智能、互联设备、物品和家电的不断增长的网络。...想想健身追踪器是如何与你手机上的应用程序同步的。 智能温控器可以智能地调节你家的温度,这是物联网的一个常见例子。其他例子包括Amazon Echo和类似的智能扬声器、智能灯泡、智能家居安全系统。...第一步:重新审视你的商业策略 如果你打算实施新的业务流程,或者甚至可能改变你的业务模型来利用技术趋势,那么这样做必须有一个合理的理由。而这正是你的总体业务战略的切入点。...客户受益于个性化的健康建议和经济回报,而保险公司受益于更健康的客户,他们的健康保险理赔次数减少。双赢! 第三步:考虑所涉及的数据 物联网会产生大量的数据,因此您需要考虑如何准备和处理这些数据。...因此,您需要考虑如何最好地保护您的设备,如何帮助您的客户更安全,以及在出现漏洞时应采取的措施。 通过遵循这三个步骤,您就可以以最有利于您的业务和客户的方式,开始研究如何利用物联网趋势。
正则表达式就像加减乘除四则运算符一样,可以跨语言使用。编程语言只要涉及字符处理,都会引入功能强大的正则表达式。可以说正则表达式本身就是一套应用于字符串环境的小型编程语言。...举一个小栗子来讲一下Python中正则表达式的用法。 >>> import re >>> str="H33+copyright+1" >>> re.sub(r"\w\d{1,2}(?...=\+)","credits",str) 'credits+copyright+1' 在Python中re模块提供了几个函数来使用正则表达式,上面用到的sub方法便是用来替换匹配到的字符串。...我们在str中搜索符合正则表达式的字符或字符串,并将之替换成"credits"。 r"\w\d{1,2}(?=+)"是我们用来搜索"+"前面"H33"而编写的正则表达式。...\w范围比较大,代表[a-zA-Z0-9],若想要精确匹配可以用更精准的正则表达式。感觉又找到可以写的内容了:-)
在开发后台管理系统时,经常会遇到这样一种需求,查询前多少天、多少周、多少月的数据,虽然 UI框架有自带的组件可以实现这些功能,但是操作起来却不是很方便,而且这些都是查询最近时间的数据,没有必要用日期组件...以上功能的基本实现思路为:根据日、周、月分别定义三个下拉选项,选择不同的日期类型时,显示不同的日期下拉选项,默认为第一个下拉选项。 以下是这个功能中主要用到的一些方法的代码实现: 1....获取日查询选项 这里仅获取前30天的下拉选项: // 获取天的选项 getDayOptions(){ let timeList = []; for(let i=1;i<31;i++){...获取周查询选项 这里仅获取前8周的下拉选项: // 获取周的选项 getWeekOptions(){ let timeList = []; for(let i=0;i<8;i++){...获取月查询选项 这里仅获取前6个月的下拉选项: // 获取月的选项 getMonthOptions(){ let timeList = []; for(let i=0;i<6;i++){
(d{1,2}|1dd|2[0-4]d|25[0-5])$" //IP地址 Python中也有正则表达式(正则表达式30分钟入门教程)的模块,那就是re,下面就来了解一些我们常用的正则方法: re.search...re.search 模式:在字符串中查找匹配的对象,找到第一个后返回,如果没有返回None re.search的函数为:re.search(pattern,string,flags)...:pattern) 正向预查的正向匹配,等效于 (?=pattern) 正向预查的正向匹配,匹配后面跟着pattern的字符串 (?!...pattern 正向预查的正向不匹配,匹配后面不跟着pattern的字符串 (?<=pattern) 反向预查的反向匹配,匹配前面是pattern的字符串 (?<!...pattern) 反向预查的反向不匹配,匹配前面不是pattern的字符串 量词? 非贪婪模式
遇到这个问题的时候在网上搜索 绝大部分都是同样的一个解决方案 就是改一下软件的某个设置。 这个方法是十分不严谨的,所以网仔细琢磨了一下这个错误说明。...首先看一下官方给的说明: 微软 - 编译器错误 C2760 有多种方法可导致此错误。 通常,它是由编译器无法识别的令牌序列引起的。...而问题不一定出在最后的“;”。 这个时候我也是很头大,因为我的代码简单明了,没有任何有问题的字符。...这里最好的方式是检查一下类的定义和使用 比如说你定义了一个 A类,但是在引入这个类声明之前,就已经在使用了,就会报这个错误。...把类的定义放到该文件的上方,( 有的时候这种问题和 .h文件导入位置有关系。 ) 譬如导入的 .h文件中的类 在导入之前就使用,也会有同样的问题。
前m大的数 #include int a[3005],b[5000000]; bool cmp(int a,int b) { return a>b;//从大到小进行排序...cin>>n>>m&&n&&m) { int i,j,k=0; memset(a,0,sizeof(a)); memset(b,0,sizeof(b));//作用是在一段内存块中填充某个给定的值...,它是对较大的结构体或数组进行清零操作的一种最快方法。...for(i=0;i<n;i++) cin>>a[i]; for(i=0;i<n;i++)//得到所有的两两相加的数,需要两个循环 for(j=i+1;j<n;j++) {...b[k++]=a[i]+a[j];//存到新数组内,为后续排序做准备 } sort(b,b+n*(n-1)/2,cmp);//排序 for(i=0;i<m-1;i++)//得到前m项最大的数
乘着下午凉快,想着解决一下股票中的复权,因为我们看股票软件的时候呐,经常是断崖式的下跌,这基本就是除权等操作,大概的意思就是说送股,意思就是说成本不变,价格变成了原来的多少倍,当然股价的变动的落脚地就是流通股的数量的变化...在一般的炒股软件中都有一个复权的按钮。比如通达信的在这里不复权: 不复权的话,我们第一感觉就是这股可能是个起伏很大的股票吧。我们看看它的前复权: 复权之后,会发现这股票咋后悔没买.........反思一下问题出在哪里呐,最浅显的就是我们按照技术派的图谱去看待趋势的,但是技术派并没有将复权这样的图给画出来。也就是如果技术指标上进行不除权操作,那么技术上的指标就要凉凉。...就是在获取数据的时候改变一下参数就可以了。想想呐好高兴呀!让我们看看吧!下图是除权之后的效果。看样子和通达信的除权效果很类似哦! 下边是baostock官网上提供的获取日k线的代码。...## 登出系统 #### bs.logout() 这里呐字可能比较模糊,作者这里抄一下哈: adjustflag=3 表示不复权 adjustflag=1 表示后复权 adjustflag=2 表示前复权
以表达式“a+b+(c+d)*e*f+g”为例,在进行运算符优先级解析时,它将被视作一串按二元运算符分隔的主表达式。...注意,括号表达式也是主表达式,所以在解析二元表达式时无须特殊照顾(c+d)这样的嵌套表达式。...一开始,每个表达式都由一个主表达式打头阵,身后可能还跟着一串由有序对构成的列表,其中有序对的格式为[binop, primaryexpr]: /// expression /// ::= primary...上述代码进而将“(c+d)”识别为主表达式,并构造出相应的有序对[+, (c+d)]。...现在,主表达式右侧的binop是“*”,由于“*”的优先级高于“+”,负责检查运算符优先级的if判断通过,执行流程得以进入if语句的内部。
如下图1所示的工作表,在主工作表MASTER中存放着从数据库下载的全部数据。...现在,要根据列E中的数据将前12列的数据分别复制到其他工作表中,其中,列E中数据开头两位数字是61的单元格所在行前12列数据复制到工作表61中,开头数字是62的单元格所在行前12列数据复制到工作表62中...,同样,开头数字是63的复制到工作表63中,开头数字是64或65的复制到工作表64_65中,开头数字是68的复制到工作表68中。...Dim i62 As Integer Dim i63 As Integer Dim i6465 As Integer Dim i68 As Integer '选择前12...个人觉得,这段代码的优点在于: 将数据存储在数组中,并从数组中取出相应的数据。 将数组数据直接输入到工作表单元格,提高了代码的简洁性和效率。 将代码适当修改,可以方便地实现类似的需求。
物化视图日志和主表存放在一起,一张主表对应一个日志,如果视图涉及到了join操作,那么涉及到的每张表都要创建对应的日志 2.1 主键物化视图 主键物化视图记录主表被更新记录的主键,允许在不影响FAST刷新的前提下...,重新组织物化视图的主表 主键物化视图的主表必须包含启用中的主键约束。...常规DML的修改会被存储在与主表关联的物化视图日志中,direct-path INSERT操作的变化会被存储direct loader日志中 使用限制: 在使用create语句前,必须在物化视图的主表中创建物化视图日志...4.3 START WITH & NEXT 使用START WITH为第一次自动刷新时间指定一个日期时间表达式,然后通过NEXT指定自动刷新间隔的datetime表达式,计算结果必须为未来的时间。...如果省略 START WITH 值,则数据库通过评估与物化视图的创建时间相关的 NEXT 表达式来确定第一次自动刷新时间。
exists,如数据量于一万以上使用,数据量少时可以使用in 示例: /*1.检查‘logic java’ 课程最近一次考试成绩*/ /*2.如果有80分以上,显示分数排前5名的学员学号和分数*/ select...3.子查询注意事项 (1)任何允许使用表达式的地方都可以使用子查询 (2)嵌套在父查询SELECT语句的子查询可包括: SELECT子句 FROM子句 WHERE子句 GROUP BY子句 HAVING...子句 (3)只出现在IN子查询中而没有出现在父查询中的列不能包含在输出列中 4.分组查询用法 SELECT列表中只能包含: 1.被分组的列 2.为每个分组返回一个值的表达式,如聚合函数 掌握GROUP...student中数据逐条匹配表result中的数据 1.匹配,返回到结果集 2.无匹配,NULL值返回到结果集 示例: /*左外连接 left join 前面的表为主表,以主表里的字段为依据,把从表里的数据填充给主表...右表逐条去匹配记录;否则NULL填充 示例: /*右外连接 right join前面的表为主表,以主表里的字段为依据,把从表里的数据填充给主表,从表里面没有的字段以null填充 right join
元数据表达 元数据表达式: 一元表达式 一元表达式 meta 一元表达式 一元表达式 一元表达式: 类型表达式 + 一元表达式 - 一元表达式 not 一元表达式...标识符 括号表达式 括号表达式: ( 表达式 ) 未实现的表达式 未实现的表达式: ......调用表达式 调用表达式: 主表达式 ( 参数列表opt ) 参数列表: 表达式 表达式 , 参数列表 列表表达式 列表表达式: { 项目列表选择 } 项目列表: ...: 主表达式字段选择器 字段选择器: 必需字段选择器 可选字段选择器 必需字段-选择器: [ 字段名称 ] 可选字段选择器: [ 字段名称 ] ?...字段名称: 通用标识符 引用标识符 隐式目标字段选择: 字段选择器 投影: 主表达式必需投影 主表达式可选投影 required-projection
其它表达式 ① 模板表达式 五、扩展:Java中#{}和${}的使用 1. #{}的使用 2. ${}的使用 一、SpEL介绍 SpEL(Spring Expression Language):Spring...)元素修改 数组(集合、字典)投影 数组(集合、字典)选择 其他表达式: 模板表达式 需要注意:SpEL表达式中的关键字是不区分大小写的。...Elivis运算符 表达式格式:表达式1?:表达式2 Elivis运算符是从Groovy语言引入用于简化三目运算符(表达式1? 表达式1:表达式2)的。...前边的表达式为null时抛出空指针异常,而是返回null;修改对象属性值则可以通过赋值表达式或Expression接口的setValue方法修改。...五、扩展:Java中#{}和${}的使用 1. #{}的使用 SpEL模板表达式 MyBatis中的占位符,以预编译的方式传入参数,可以有效的防止SQL注入。
使用方法见: http://blog.csdn.net/jiangyu1013/article/details/53161580
领取专属 10元无门槛券
手把手带您无忧上云