Power Pivot 通过 DAX 查询可以实现从不同的视角查看数据。但在 Excel 中编写 DAX 查询却不太方便,所以本篇在讲解 DAX 查询用法的时候,以 DAX Studio 作为工具。关于 DAX Studio 请自行在网上搜索,我的上一篇也有介绍。
本篇的示例数据来自 《DAX 圣经》这本书,示例数据我已经上传到 github,文章的末尾有链接,方便大家学习。
查询表的所有数据
DAX 查询一般从 EVALUATE 关键字开始,可以把 DAX 查询语句理解为 EVALUATE 关键字引导的表达式构成的语句。比如我要查询 Sales 表的所有数据,DAX 查询语句为:
-- 查询 Sales 表所有数据
EVALUATE Sales
相当于 SQL 语句的 SELECT * FROM Sales;
第一行是注释。
字段排序
DAX 查询的 ORDER BY
关键字引导的表达式对查询结果进行排序。升序为 ASC,降序为DESC 。
-- 按 Order Date字段排序
EVALUATE
Sales ORDER BY [Order Date] ASC
DAX 支持按多个字段排序:
EVALUATE
Sales
ORDER BY
[Order Date] ASC,
[CustomerKey] ASC
选择指定字段
SQL 语句选择指定字段很直观:SELECT A, B FROM sometable
。DAX 查询选择指定字段用 SUMMARIZE
函数。SUMMARIZE
函数第一个参数为 table 的名称,后面跟若干个字段,即可以选择指定的列:
EVALUATE
SUMMARIZE ( 'Sales', [ProductKey],
[OrderDateKey], [Quantity], [Unit Price] )
DAX 查询结果的界面:
数据筛选
数据筛选用 FILTER
函数,FILTER
函数第一个参数为 table 名称,第二个参数为筛选表达式,返回值为 table。比如我们要筛选出 Product 表中所有 Class 为 Economy 的数据:
EVALUATE
FILTER ( 'Product', Product[Class] = "Economy")
分组计算
数据透视表就是分组计算,如果我们要数据透视表的逻辑,但并不需要数据透视表的格式,使用 DAX 查询的分组计算作为输出就非常合适。分组计算用到 SUMMARIZE
函数的标准用法。SUMMARIZE
函数语法如下:
SUMMARIZE(,
[, ]…
[, , ]…)
函数的第一个参数是 table 名称;第二组参数是一系列列名称,根据列名进行分组,比如先按照客户,再按照产品名称等等;第三组参数由 name 和 expression 成对构成,比如 name 为 toal quantity, expression 为 SUM([Quantity],就根据 Quantity 列来计算合计数。假设我们需要按客户来计算销售的数量:
EVALUATE
SUMMARIZE ( Sales, [CustomerKey], "Total Sales", SUM ( Sales[Quantity] ) )
多字段分组:先按照客户,再按照产品分组计算销售数量的合计:
EVALUATE
SUMMARIZE (
Sales,
[CustomerKey],
[ProductKey],
"Total Quantity", SUM ( Sales[Quantity] )
)
ORDER BY [CustomerKey]
基于多表的操作
前面的示例都是基于一个表,接下来讲解多表关联的 DAX 查询。Power Pivot 中表的关系在关系图视图中维护,关系维护好后,在 DAX 查询时,表的关系都为左连接且不能修改为其它连接方式 。这种机制虽然降低了灵活性,但却让 DAX 基于多表的查询语法变得非常简单。
比如我们要查询基于客户名称和产品名称的销售数量明细。我们刚才讲过,返回指定字段用 SUMMARIZE
函数:
EVALUATE
SUMMARIZE (
Sales,
Customer[Company Name],
'Product'[Product Name],
Sales[Quantity]
)
查询结果截图如下:
这个查询涉及到 3 个表的关联,相同功能的 SQL 语句要复杂得多。同理,基于多个表的分组计算,也是只需要选择某个表的字段,而不需要关注表的关系。我们来对基于客户和产品计算销售数量合计的查询进行变更:
EVALUATE
SUMMARIZE (
Sales,
Customer[Company Name],
'Product'[Product Name],
"Total Sales", SUM ( Sales[Quantity] )
)
查询的截图如下:
数据筛选也能自由地使用其他表的字段。比如下面的示例,查询 Sales 表,但筛选条件是 Product 的 Brand 为 Litware。需要用到
RELATED
函数:
EVALUATE
FILTER ( Sales, RELATED ( Product[Brand] ) = "Litware" )
基于多表筛选且选择指定字段
嵌套使用 FILTER
和 SUMMARIZE
函数能达到这种效果。先用 SUMMARIZE
函数返回一个包含指定列的表,然后用 FILTER
函数基于这个计算表进行筛选:
EVALUATE
FILTER (
SUMMARIZE (
sales,
Customer[Country],
Product[Brand],
"Total Quantity", SUM ( Sales[Quantity] )
),
[Brand] = "Contoso"
)
添加列
添加列在 Power Pivot 中非常容易,但我们也可以在 DAX 查询中使用 ADDCOLUMNS
函数来添加列。ADDCOLUMNS
函数的语法如下:
ADDCOLUMNS(, , [, , ]…)
根据函数的语法,我们知道,可以一次添加多个列。下面的示例添加了一个计算列:计算出每一行的销售金额(单价 * 数量):
EVALUATE
ADDCOLUMNS ( Sales, "Line Prcie", Sales[Quantity] * Sales[Unit Price] )
定义变量
在 DAX 查询中,可以使用 VAR 定义变量,使用变量能够简化 DAX 查询语句的编写。定义变量需要在 EVALUATE 之前用 DEFINE
关键字引导,用 VAR
定义变量。比如,我们先定义一个按客户的国别和产品品牌分组计算销售数量的表,将这个表保存在变量 groupedSales 中,然后对销售按品牌进行筛选:
DEFINE
VAR groupedSales =
SUMMARIZE (
Sales,
Customer[Country],
'Product'[Brand],
"Total Quantity", SUM ( Sales[Quantity] )
)
EVALUATE
FILTER ( groupedSales, [Brand] = "Contoso" )
在 DAX 查询中定义度量值
DAX 查询也可以定义度量值。度量值用 MEASURE
关键字定义,MEASURE 返回一个标量值。比如我们要按照品牌计算出销售额,先定义一个度量值,然后再基于品牌来作为筛选上下文计算。这种方法相对难懂,仅为了介绍定义度量值的方法。注意下面 DAX 查询中度量值的表达方法。
DEFINE
MEASURE Sales[salesamt] =
SUMX ( Sales, Sales[Quantity] * Sales[Unit Price] )
EVALUATE
ADDCOLUMNS ( VALUES ( 'Product'[Brand] ), "Total Sales", 'Sales'[salesamt] )
示例数据
github - sample data
参考
理解EVALUATE语法
Using DAX to retrieve tabular data
你可能感兴趣的:(Power Pivot 系列 (4) - DAX 查询)
我是如何在一周内拿到4份offer的?
yoyo小小汐~
软件测试 面试 软件测试 程序员 测试工程师 简历
前言我大概面试了6,7家公司吧,有大公司也有小公司,最后拿到4家offer,可能有的人看到这样的数据,会说我在吹牛*,我想说的是你做不到的事情不代表别人做不到。现在把我是如何在一周内拿到4份offer的经验和经历做个简单的介绍,分享一下自己的心得,希望对即将找工作的你有些帮助。面试准备简历简历是面试者的敲门砖,只有通过HR的初步筛选你才能有机会得到面试,所以简历还是一大关。说实话我也不确定我的简历
Excel VBA 运行时错误1004’:方法‘Open’作用于对象‘Workbooks’时失败 的解决方法
唐骁虎
excel
使用Excel编写VBA脚本时出现如下错误:运行时错误1004’:方法‘Open’作用于对象‘Workbooks’时失败我的功能是打开一系列excel文件从中自动复制数据到汇总excel的各个指定的sheet中,来源的excel是从网站上下载的。出现这个问题后从网上查找各种办法,有说要进行信任设置的,有说要删除XLSSTART文件夹的,有说什么新版本office对vba格式要求更严格的,信任设置我
WPF学习笔记(6)——WPF+Stylet+MVVM:ListBox添加项、获取所选项、删除项、删除所选项
billy_gisboy
# WPF/MVVM wpf mvvm c#
功能描述使用Stylet框架,对WPF进行MVVM模式下的开发。不在xaml.cs中写业务逻辑,业务逻辑均在VM中,且业务逻辑只针对属性,不涉及ListBox控件。实现功能:(1)ListBox添加一个项,项具有图片、信息(2)展示一个所选项的信息(3)删除一个项(4)删除所选项实现效果首先创建学生类namespaceStyletTest.Model{publicclassStudent{////
Adobe Firefly AI驱动设计:实用技巧与创新思维路径
reddingtons
人工智能 adobe 大数据 photoshop illustrator Premiere InDesign
开篇分享最近深度体验了英国ParvisSchoolofEconomicsandMusic的Adobe正版教育订阅,挖掘CreativeCloud全家桶的各种功能时,收获了不少惊喜,迫不及待想跟大家分享!简单聊聊这个订阅的体验:Firefly积分超给力,每周1500点,堪称我用过最慷慨的版本;设备支持方面,最多可绑定4台设备,可惜我手头设备不多,没能玩个尽兴(预算有限,笑);透明度上,学校提供的IT
设计大佬都在用的5个Adobe神仙技巧,悄悄帮你重塑工作流
reddingtons
adobe 人工智能 photoshop illustrator 设计师 设计技巧 UI设计
哈喽,大家好!最近有机会深度体验了一下奥地利Blueskyy艺术学院的Adobe教育版全家桶,在研究和使用过程中,发现了不少有意思的东西,觉得非常有价值,忍不住想和大家分享一下。先简单聊聊这个订阅的感受吧:Firefly积分:这应该是我见过最慷慨的版本了,每周有1500点积分,对于我们这种经常需要AI辅助创作的设计师来说,简直是“无限弹药”。设备数量:官方支持4台设备激活。我个人设备没那么多(钱包
如何让人工智能使你的工作效率一日千里
南风过闲庭
人工智能 ai python
1.自动化重复性任务1.1识别并自动化日常任务提高工作效率的首要步骤是识别日常工作中重复性高且耗时的任务。根据麦肯锡全球研究院的报告,知识工作者大约有40%的时间花费在此类任务上。通过自动化这些任务,员工可以将更多时间投入到需要创造性思维和复杂决策的工作上。数据支持:一项针对500名知识工作者的调查显示,通过自动化日常任务,平均每天可以节省2小时的工作时间。这些任务包括数据录入、文件整理、邮件分类
从用户日志到智能宏:我的BFS寻宝奇遇记(2014. 重复 K 次的最长子序列)
满分观察网友z
算法解构与应用 算法
从用户日志到智能宏:我的BFS寻宝奇遇记大家好,我是一个在代码世界里摸爬滚打了N年的老兵。今天想和大家聊聊最近在项目中遇到的一个棘手问题,以及我是如何用一个看似“学院派”的算法——广度优先搜索(BFS)——漂亮地解决它的。这趟旅程有“踩坑”的窘迫,也有“恍然大悟”的喜悦,希望能给同在路上的你带来一些启发。一、我遇到了什么问题?一个“善解人意”的功能我所在的团队正在开发一款面向设计师的创意软件。为了
材料力学数值方法:有限元法(FEM)在流体力学中的应用_2024-08-04_00-17-21.Tex
chenjj4003
材料力学 算法 计算机视觉 人工智能 机器学习 网络
材料力学数值方法:有限元法(FEM)在流体力学中的应用绪论有限元法的基本概念有限元法(FiniteElementMethod,FEM)是一种数值计算方法,用于求解复杂的工程问题,如结构力学、热传导、流体力学等。它将连续的物理域离散化为有限数量的、形状规则的子域,即“有限元”。每个子域内的物理量(如位移、压力、温度等)用多项式函数近似表示,通过在每个子域内应用物理定律(如牛顿第二定律、连续性方程等)
02【IDEA、数据类型转换、运算符、方法】
緑水長流*z
# 《JavaSE系列》 运算符 数据类型转换 idea的配置 位运算 强制转换 位移运算
文章目录一、开发工具IntelliJIDEA1.1开发工具概述1.2安装IntelliJIDEA1.3创建项目和模块1)创建项目2)创建模块3)编写代码4)运行代码:1.4IDEA的项目目录1.5IDEA基本设置1.5.1字体设置1.5.2代码模板1.5.3快捷键模板1.5.3提示忽略大小写1.6IDEA快捷键1.6.1修改快捷键1)代码提示快捷键2)字体大小缩放快捷键1.6.2IDEA常用快捷键
[插电式混合动力车辆][交替方向乘子法(ADMM)结合CVX]插电式混合动力车辆的能源管理:基于凸优化算法用于模型预测控制MPC研究(Matlab代码实现)
程序辅导帮
算法 matlab 人工智能
欢迎来到本博客❤️❤️博主优势:博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。⛳️座右铭:行百里者,半于九十。本文目录如下:目录⛳️赠与读者1概述2运行结果3参考文献4Matlab代码、数据、文章⛳️赠与读者做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。当哲学课上老师问你什么是科学,什么是电的时
从HTML4到HTML5+CSS3,如何快速掌握?(有老版HTML基础或经验)
唐骁虎
html 前端
从HTML4.0到HTML5+CSS3的升级是Web开发技术的一次重要迭代,两者在语法、功能、兼容性等方面存在显著差异。以下是具体异同点、学习注意事项及快速掌握方法:一、HTML5与HTML4.0的核心差异语义化标签HTML5新增:、、、、等,使代码结构更清晰,利于SEO和可维护性。HTML4.0依赖:主要用配合class/id实现布局,语义性较弱。多媒体支持HTML5原生支持:、标签,无需依赖F
【ESP32设备通信】- LoRaWAN网关
视觉与物联智能
物联网全栈开发实战 嵌入式硬件 嵌入式 物联网 ESP32 LoRa 无线通信
ESP32LoRaWAN网关文章目录ESP32LoRaWAN网关1、LoRaWAN简单介绍2、LoRa模块的区域频率注意事项3、硬件准备与接线3.1LoRaWAN网关接线3.2LoRa节点接线4、代码实现4.1LoRaWAN网关代码实现4.2LoRa节点代码实现在物联网(IoT)时代,连接设备和收集数据变得比以往任何时候都更加容易和重要。LoRaWAN(远程广域网)技术已成为远程、低功耗物联网通信
同花顺python_【本地直连】同花顺 Python量化交易接口上线
weixin_39938724
同花顺python
来源:雪球App,作者:私募之家THS,(https://xueqiu.com/5808549553/129022113)导读:同花顺智能交易终端MindGo版已上线2年多,凭借着同花顺深厚的技术底蕴,不断地对终端进行优化。至今,已服务近1000位个人客户,超过200家私募机构,市场份额不断扩大。目前终端已实现:支持股票、指数、基金、期货、外汇、黄金T+D等6个品种日/分钟级策略回测投研策略无缝对
数智助农 金融兴乡:中和农信双轮驱动农业现代化实践
雷焰财经
金融
植根三农服务最后一百米,中和农信以“小额信贷夯基,数智科技赋能”的创新实践,正在成为衔接中国小农户与现代农业的关键纽带。在我国小农户占比超80%的基本国情下,面对农村互联网普及率仅60%的数字鸿沟挑战,中和农信依托深耕多年建立的毛细血管式服务网络(5800名村级站长覆盖220万亩耕地)、科技金融双引擎(自研中和金服APP与乡助农技平台)及生态化服务闭环,累计服务480万农户,覆盖23省550县域。
ai工具推荐系列:文生图,图生图工具liblibAi
风生水气
ai应用体验 人工智能 深度学习 神经网络
在ai应用泛滥的今天,你是否也想通过简单的描述来创作一张这样高质量的图片?你可能听过一些比较知名软件,比如Midjourney,Stability.ai等,但是这些软件在国内访问起来都不是很方便。今天推荐一个国内可以访问的且可以生成较高自由度的图片生成工具---liblibAi。相比于国内其他的文生图,图生图工具,它拥有更多的参数可供调节,可以从不同粒度约束图片最终的生成效果。对于专业的同学来说更
【小白Java进阶之路】 2024年Java小白如何成为大牛?超详细学习路线图!
全栈陈序员
Java后端开发 java 学习 windows
??2024年Java小白如何成为大牛?超详细学习路线图!摘要本文为Java初学者提供了一份详细的学习路线图,旨在帮助他们从基础到进阶,最终成为Java领域的专家。文章涵盖了Java基础、进阶技术、Web开发、框架与工具、软技能等多个方面,并提供了代码示例、流程图和表格,以增强理解和实践能力。关键词Java,学习路线图,进阶,Web开发,框架,工具,软技能1.Java基础1.1语法基础变量和数据类
Java进阶学习
m0_67403013
面试 学习路线 阿里巴巴 android 前端 后端
进阶学习过程的几个方面第一阶段的学习是java基础的学习和javaEE的学习。第二阶段就是java学习的进阶啦。主要是面试书籍,下面是书籍推荐:多线程、并发实战java高并发程序设计和java并发编程的艺术:——“java高并发程序设计”,这本书主要是为了看第二本书做铺垫,直接看第二本书可能会很吃力。实战java高并发程序设计主要看:前4章、5.1、5.2、5.3、5.10、5.11和第6章。——
计算机英语上 期末 复习(广外软工)
记忆中的你问我
学习 经验分享 课程设计 笔记 其他
前言广外21级软件工程计算机英语期末复习,考试据说只考前10页的内容期末考试题型:1.名词解释2.翻译(如果有翻译错误/小道消息/未补充的知识点请评论,祝大家期末科科4.0!)Chapter01.名词解释computerscienceItisthedisciplinethatseekstobuildascientificfoundationforsuchtopicsascomputerdesign
高效设计,从AntDesign3.9 Axure组件库开始
劳筝千Daphne
高效设计,从AntDesign3.9Axure组件库开始项目地址:https://gitcode.com/open-source-toolkit/48b29项目介绍在现代产品设计中,高效、美观的原型设计是不可或缺的一环。为了满足这一需求,我们推出了AntDesign3.9Axure组件库。这个组件库基于广受欢迎的AntDesign设计规范,专为Axure3.9版本打造,旨在为产品设计师、UI/UX
JAVA进阶之路
夜澜听雨声
Java Advance java 开发语言
JAVA进阶之路一、Java企业开发基础1.JavaWeb2.SSM框架3.Maven4.Springboot25.mybatis-plus6.前端学习(不算很重要)7.SpringSecurity(有时间再看,不重要)8.代码开发规范(不重要,有时间看)9.Git10.Linux(不重要,会用就行)二、Java企业开发进阶1.设计模式2.Redis(核心)3.消息队列RocketMQ(核心)4.
AXURE Ant Design 4.40 - web组件库 ant design pro 后台模板 产品经理
Barry·X!
前端 axure 产品经理
AntDesign是基于AntDesign设计体系的ReactUI组件库,主要用于研发企业级中后台产品。antdesign4.40-web组件库是基于Axure,参考AntDesign的样式而设计的一套模板库,是产品经理必备套件库,AntDesign4.40-最新精编文件22年3月,AXURE原型设计,需要的素材和模板内容里面都有可以借鉴。rplib不能在AxureRP10中打开,但rp文件可以。
【嵌入式硬件实例】-555定时器实现警灯LED闪烁效果
视觉与物联智能
嵌入式硬件基础 嵌入式硬件 555定时器 电路 物联网
555定时器实现警灯LED闪烁效果文章目录555定时器实现警灯LED闪烁效果1、555定时器介绍2、硬件准备与接线3、电路工作原理在这个项目中,我们将使用555定时器和CD4017十进制计数器IC构建一个闪烁的警灯。闪烁的警灯设计为以不同的闪光率运行,通常在不同的颜色之间交替,最常见的是红色和蓝色,以吸引公众的注意力,并在视觉上传达紧迫感和谨慎性。闪烁的警灯是公认的权威和秩序的象征。当警灯闪烁时,
Java--方法递归
介绍:递归就是方法自己调用自己,每次调用时传入不同的变量,递归有助于编程者解决复杂问题,同时让代码变得简介。递归重要规则:1.执行一个方法时,就创建一个新的受保护的独立空间2.方法的局部变量是独立的,不会相互影响,比如n变量3.如果方法中使用的是引用类型变量(比如数组,对象),就会共享该引用类型的数据。4.递归必须向退出递归的条件逼近,否则就是无限递归,5.当一个方法执行完毕,或者遇到retur,
原有的原生flutter项目如何迁移到鸿蒙?
harmonyos
原有的原生flutter项目如何迁移到鸿蒙?1、创建个新项目,把旧项目的lib与assets目录复制覆盖到新项目2、修改pubspec.yaml依赖,改为支持鸿蒙版本3、如果编译没问题理论上就能跑在鸿蒙设备上了4、Android或iOS平台上的一些特殊修改复制到新项目以上操作相对简单一些。如果在老项目里面改也是可以的,直接在项目根目录直行fluttercreate--platformsohos.然
Flutter多设备之响应式布局
harmonyos
Flutter多设备之响应式布局参考鸿蒙原生响应式布局场景,保持相似体验。布局能力使用场景使用说明断点将窗口宽度划分为不同的范围(即断点),监听窗口尺寸变化,当断点改变时同步调整页面布局。依赖扩展库:breakpoint媒体查询媒体查询支持监听窗口宽度、横竖屏、深浅色、设备类型等多种媒体特征,当媒体特征发生改变时同步调整页面布局。直接使用FlutterSDK中MediaQuery,无需额外适配栅格
瑞芯微RK3288、RK3399、RK3568、RK3368芯片性能介绍与对比分析
不对法
硬件编程 嵌入式硬件 linux 单片机 mcu
目录标题RK3568RK3288RK3368RK3399RK3568是瑞芯微2020年底最新发布的一款定位中高端的通用型SoC,采用22nm工艺制程,支持Android11和Linux操作系统(Linux+qt/Fedora/Debian/Ubuntu),主要面向行业应用市场,如视频会议、智慧安防、商业显示、边缘计算、物联网网关、视频编解码等领域。集成4核arm架构A55处理器和MaliG522E
在VMware下安装Ubuntu12后出现的问题解决方法
shanzhizi
Linux vmware ubuntu
今天再VMware9.0下安装了Ubuntu12.04的桌面版,结果安装成功,重启后输入用户密码,图形界面卡住没有反应了,但是可以进入字符界面。网上搜索找到了一个解决方法,尝试了一下果然可以,记录下来供大家参考吧:l另外还有一个问题,开机老是提示piix4_smbus0000:00:007.3:HostSMBuscontrollernotenabled,虽然说不会影响系统的正常运行,但是很影响开机
【全网最快,不服来战,输了叫大哥】Ubuntu 22.04安装Docker
逆羽飘扬
Docker学习 ubuntu docker linux
文章目录Docker的安装快速绿色安装Docker正常安装Docker报错解决完全卸载Docker其他问题解决方法参考博客点此到文末惊喜↩︎Docker的安装特别鸣谢,这位大佬写的非常好:https://blog.csdn.net/weixin_42571882/article/details/134015815比我速度快、简单且稳定的,评论区给我你的博客,输了叫你大哥快速绿色安装Docker选择
《伴时匣》app开发技术分享--表单提交准备(4)
鸿蒙小林
鸿蒙 端云一体化 harmonyos
技术栈Appgalleryconnect开发准备上一节我们实现了用户登录功能,现在我们进入首页,可以开始准备着手发布我们的日期计划了,在这之前我们先实现信息表的创建。在首页实现一个标题栏,一个悬浮的按钮。功能分析我们的信息表要展示的内容很多,首先是我们的事件名称,目标日期选择,公历农历,正数倒数,倒数类目的选择,是否实现置顶效果,是否显示精确时间,事件颜色,事件图标,事件心情,事件天气,跟用户绑定
【软件系统架构】系列四:数字信号处理器(DSP)
目录一、什么是DSP?二、DSP的核心架构特点1.基本结构2.工作流程:3.关键特性:三、DSP与MCU/MPU/NPU的对比四、DSP与通用处理器的对比五、常用DSP算法类型六、常见DSP芯片平台七、开发工具链与语言支持八、典型应用场景举例通信领域:音频处理:图像与视频处理:工业控制:军事与航空航天:九、选型关键因素十、技术趋势总结一、什么是DSP?DSP(DigitalSignalProces
java杨辉三角
3213213333332132
java基础
package com.algorithm;
/**
* @Description 杨辉三角
* @author FuJianyong
* 2015-1-22上午10:10:59
*/
public class YangHui {
public static void main(String[] args) {
//初始化二维数组长度
int[][] y
《大话重构》之大布局的辛酸历史
白糖_
重构
《大话重构》中提到“大布局你伤不起”,如果企图重构一个陈旧的大型系统是有非常大的风险,重构不是想象中那么简单。我目前所在公司正好对产品做了一次“大布局重构”,下面我就分享这个“大布局”项目经验给大家。
背景
公司专注于企业级管理产品软件,企业有大中小之分,在2000年初公司用JSP/Servlet开发了一套针对中
电驴链接在线视频播放源码
dubinwei
源码 电驴 播放器 视频 ed2k
本项目是个搜索电驴(ed2k)链接的应用,借助于磁力视频播放器(官网:
http://loveandroid.duapp.com/ 开放平台),可以实现在线播放视频,也可以用迅雷或者其他下载工具下载。
项目源码:
http://git.oschina.net/svo/Emule,动态更新。也可从附件中下载。
项目源码依赖于两个库项目,库项目一链接:
http://git.oschina.
Javascript中函数的toString()方法
周凡杨
JavaScript js toString function object
简述
The toString() method returns a string representing the source code of the function.
简译之,Javascript的toString()方法返回一个代表函数源代码的字符串。
句法
function.
struts处理自定义异常
g21121
struts
很多时候我们会用到自定义异常来表示特定的错误情况,自定义异常比较简单,只要分清是运行时异常还是非运行时异常即可,运行时异常不需要捕获,继承自RuntimeException,是由容器自己抛出,例如空指针异常。
非运行时异常继承自Exception,在抛出后需要捕获,例如文件未找到异常。
此处我们用的是非运行时异常,首先定义一个异常LoginException:
/**
* 类描述:登录相
Linux中find常见用法示例
510888780
linux
Linux中find常见用法示例
·find path -option [ -print ] [ -exec -ok command ] {} \;
find命令的参数;
SpringMVC的各种参数绑定方式
Harry642
springMVC 绑定 表单
1. 基本数据类型(以int为例,其他类似):
Controller代码:
@RequestMapping("saysth.do")
public void test(int count) {
}
表单代码:
<form action="saysth.do" method="post&q
Java 获取Oracle ROWID
aijuans
java oracle
A ROWID is an identification tag unique for each row of an Oracle Database table. The ROWID can be thought of as a virtual column, containing the ID for each row.
The oracle.sql.ROWID class i
java获取方法的参数名
antlove
java jdk parameter method reflect
reflect.ClassInformationUtil.java
package reflect;
import javassist.ClassPool;
import javassist.CtClass;
import javassist.CtMethod;
import javassist.Modifier;
import javassist.bytecode.CodeAtt
JAVA正则表达式匹配 查找 替换 提取操作
百合不是茶
java 正则表达式 替换 提取 查找
正则表达式的查找;主要是用到String类中的split();
String str;
str.split();方法中传入按照什么规则截取,返回一个String数组
常见的截取规则:
str.split("\\.")按照.来截取
str.
Java中equals()与hashCode()方法详解
bijian1013
java set equals() hashCode()
一.equals()方法详解
equals()方法在object类中定义如下:
public boolean equals(Object obj) {
return (this == obj);
}
很明显是对两个对象的地址值进行的比较(即比较引用是否相同)。但是我们知道,String 、Math、I
精通Oracle10编程SQL(4)使用SQL语句
bijian1013
oracle 数据库 plsql
--工资级别表
create table SALGRADE
(
GRADE NUMBER(10),
LOSAL NUMBER(10,2),
HISAL NUMBER(10,2)
)
insert into SALGRADE values(1,0,100);
insert into SALGRADE values(2,100,200);
inser
【Nginx二】Nginx作为静态文件HTTP服务器
bit1129
HTTP服务器
Nginx作为静态文件HTTP服务器
在本地系统中创建/data/www目录,存放html文件(包括index.html)
创建/data/images目录,存放imags图片
在主配置文件中添加http指令
http {
server {
listen 80;
server_name
kafka获得最新partition offset
blackproof
kafka partition offset 最新
kafka获得partition下标,需要用到kafka的simpleconsumer
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.
centos 7安装docker两种方式
ronin47
第一种是采用yum 方式
yum install -y docker
 
java-60-在O(1)时间删除链表结点
bylijinnan
java
public class DeleteNode_O1_Time {
/**
* Q 60 在O(1)时间删除链表结点
* 给定链表的头指针和一个结点指针(!!),在O(1)时间删除该结点
*
* Assume the list is:
* head->...->nodeToDelete->mNode->nNode->..
nginx利用proxy_cache来缓存文件
cfyme
cache
user zhangy users;
worker_processes 10;
error_log /var/vlogs/nginx_error.log crit;
pid /var/vlogs/nginx.pid;
#Specifies the value for ma
[JWFD开源工作流]JWFD嵌入式语法分析器负号的使用问题
comsci
嵌入式
假如我们需要用JWFD的语法分析模块定义一个带负号的方程式,直接在方程式之前添加负号是不正确的,而必须这样做:
string str01 = "a=3.14;b=2.71;c=0;c-((a*a)+(b*b))"
定义一个0整数c,然后用这个整数c去
如何集成支付宝官方文档
dai_lm
android
官方文档下载地址
https://b.alipay.com/order/productDetail.htm?productId=2012120700377310&tabId=4#ps-tabinfo-hash
集成的必要条件
1. 需要有自己的Server接收支付宝的消息
2. 需要先制作app,然后提交支付宝审核,通过后才能集成
调试的时候估计会真的扣款,请注意
应该在什么时候使用Hadoop
datamachine
hadoop
原帖地址:http://blog.chinaunix.net/uid-301743-id-3925358.html
存档,某些观点与我不谋而合,过度技术化不可取,且hadoop并非万能。
--------------------------------------------万能的分割线--------------------------------
有人问我,“你在大数据和Hado
在GridView中对于有外键的字段使用关联模型进行搜索和排序
dcj3sjt126com
yii
在GridView中使用关联模型进行搜索和排序
首先我们有两个模型它们直接有关联:
class Author extends CActiveRecord {
...
}
class Post extends CActiveRecord {
...
function relations() {
return array(
'
使用NSString 的格式化大全
dcj3sjt126com
Objective-C
格式定义The format specifiers supported by the NSString formatting methods and CFString formatting functions follow the IEEE printf specification; the specifiers are summarized in Table 1. Note that you c
使用activeX插件对象object滚动有重影
蕃薯耀
activeX插件 滚动有重影
使用activeX插件对象object滚动有重影 <object style="width:0;" id="abc" classid="CLSID:D3E3970F-2927-9680-BBB4-5D0889909DF6" codebase="activex/OAX339.CAB#
SpringMVC4零配置
hanqunfeng
springmvc4
基于Servlet3.0规范和SpringMVC4注解式配置方式,实现零xml配置,弄了个小demo,供交流讨论。
项目说明如下:
1.db.sql是项目中用到的表,数据库使用的是oracle11g
2.该项目使用mvn进行管理,私服为自搭建nexus,项目只用到一个第三方 jar,就是oracle的驱动;
3.默认项目为零配置启动,如果需要更改启动方式,请
《开源框架那点事儿16》:缓存相关代码的演变
j2eetop
开源框架
问题引入
上次我参与某个大型项目的优化工作,由于系统要求有比较高的TPS,因此就免不了要使用缓冲。
该项目中用的缓冲比较多,有MemCache,有Redis,有的还需要提供二级缓冲,也就是说应用服务器这层也可以设置一些缓冲。
当然去看相关实现代代码的时候,大致是下面的样子。
[java]
view plain
copy
print
?
public vo
AngularJS浅析
kvhur
JavaScript
概念
AngularJS is a structural framework for dynamic web apps.
了解更多详情请见原文链接:http://www.gbtags.com/gb/share/5726.htm
Directive
扩展html,给html添加声明语句,以便实现自己的需求。对于页面中html元素以ng为前缀的属性名称,ng是angular的命名空间
架构师之jdk的bug排查(一)---------------split的点号陷阱
nannan408
split
1.前言.
jdk1.6的lang包的split方法是有bug的,它不能有效识别A.b.c这种类型,导致截取长度始终是0.而对于其他字符,则无此问题.不知道官方有没有修复这个bug.
2.代码
String[] paths = "object.object2.prop11".split("'");
System.ou
如何对10亿数据量级的mongoDB作高效的全表扫描
quentinXXZ
mongodb
本文链接:
http://quentinXXZ.iteye.com/blog/2149440
一、正常情况下,不应该有这种需求
首先,大家应该有个概念,标题中的这个问题,在大多情况下是一个伪命题,不应该被提出来。要知道,对于一般较大数据量的数据库,全表查询,这种操作一般情况下是不应该出现的,在做正常查询的时候,如果是范围查询,你至少应该要加上limit。
说一下,
C语言算法之水仙花数
qiufeihu
c 算法
/**
* 水仙花数
*/
#include <stdio.h>
#define N 10
int main()
{
int x,y,z;
for(x=1;x<=N;x++)
for(y=0;y<=N;y++)
for(z=0;z<=N;z++)
if(x*100+y*10+z == x*x*x
JSP指令
wyzuomumu
jsp
jsp指令的一般语法格式: <%@ 指令名 属性 =”值 ” %>
常用的三种指令: page,include,taglib
page指令语法形式: <%@ page 属性 1=”值 1” 属性 2=”值 2”%>
include指令语法形式: <%@include file=”relative url”%> (jsp可以通过 include