- SQL中的Having使用
slb190623
#SQLSERVERSQLHAVING分组查询数据筛选数据库
SQL中的Having使用语法:selecttop/distinct字段名称from表名称where筛查条件groupby分组字段列表Having分组后筛查orderby排序字段列表备注:1、where里面的字段只能是原始表里面的字段进行筛查;having是对分组后的数据进行筛查2、执行顺序:首先是查找原始表数据,然后where对原始表中的数据进行筛查,然后groupby对筛查后的数据进行分组,然
- SQL HAVING用法详解
52 H
Oracle函数
HAVING子句对GROUPBY子句设置条件的方式与WHERE和SELECT的交互方式类似。WHERE搜索条件在进行分组操作之前应用;而HAVING搜索条件在进行分组操作之后应用。HAVING语法与WHERE语法类似,但HAVING可以包含聚合函数。HAVING子句可以引用选择列表中显示的任意项。下面的示例按产品ID对SalesOrderDetail进行了分组,并且只包含那些订单合计大于$1,00
- 解决 MySQL 的 sql_mode 中包含 only_full_group_by模式导致group by SQL报错
zLcw_
mysqlsql数据库
sql报错:Cause:java.sql.SQLSyntaxErrorException:Expression#6ofSELECTlistisnotinGROUPBYclauseandcontainsnonaggregatedcolumn'ev_data_transmission.p.push_type'whichisnotfunctionallydependentoncolumnsinGROUP
- SQL语句中HAVING的用法以及与WHERE的区别
Champion-Dai
沐白杂记(Java)数据库sql数据库WHERE子句HAVING子句的用法
HAVING的用法以及与WHERE的区别在SQL中,HAVING子句通常与GROUPBY子句一起使用,用于对聚合函数的结果进行过滤。这与WHERE子句类似,但WHERE子句在聚合之前对单个行进行过滤,而HAVING子句在聚合之后对聚合结果进行过滤。以下是HAVING的基本用法:1.基本语法:SELECTcolumn1,column2,...FROMtable_nameGROUPBYcolumn1,
- SQL GROUP BY 自定义排序规则
Full Stack Developme
SQLsql数据库
在SQL中,GROUPBY子句用于将结果集按一个或多个列进行分组。默认情况下,GROUPBY会按照列的自然顺序(如字母顺序或数字顺序)进行排序。如果你需要按照自定义的排序规则对结果进行分组,可以使用ORDERBY子句结合CASE语句来实现。假设你有一个orders表,其中包含以下列:order_id(订单ID)customer_id(客户ID)order_date(订单日期)status(订单状态
- leetcode day30 去除重复字母
RickyGuo00
leetcode算法职场和发展
day30笔记1.题目描述2.代码构思(debug)1.题目描述2.代码构思(debug)classSolution:defremoveDuplicateLetters(self,s:str)->str:stack=[]seen=set()remain_counter=collections.Counter(s)forcins:ifcnotinseen:whilestackandc0:seen.d
- MySQL 高级查询与 SQL 优化详解
要努力努力呀
MySQLmysqlsql数据库
在数据库开发中,查询性能对系统的整体效率影响巨大。合理使用高级查询技巧可以让SQL代码更简洁高效,而SQL优化则能极大提升数据库性能,减少查询时间和资源消耗。本文将深入探讨MySQL高级查询与SQL优化,并提供详细的SQL代码示例。一、高级查询1.1子查询(Subquery)子查询是指嵌套在SELECT、INSERT、UPDATE或DELETE语句中的查询,主要用于查找满足特定条件的数据。示例1:
- [特殊字符] Dify v1.1.3 震撼更新!效率翻倍、安全升级,这些新功能太香了!
福大大架构师每日一题
福大大架构师每日一题deepseekchatgpt
引言:“Dify又双叒叕更新了!”这次v1.1.3版本不仅修复了多个关键问题,还带来了多项效率优化和安全升级。无论你是开发者还是普通用户,这些改进都将让你的体验更流畅、更安全!核心亮点速览工作流动态升级:新增related-id支持,迭代节点更灵活!iOS输入修复:终于不用再担心iOS设备输入报错了!ESLint缓存加速:代码检查速度UP,开发效率翻倍!XSS防护加强:SVG内容严格过滤,安全再升
- 卸载conda,poetry常用命令,vscode使用poetry虚拟环境
LeonNo11
pythoncondawindowslinux
~/miniconda3/bin/condainitbash~/miniconda3/bin/condainitzshcondainfo查看当前环境的配置信息condainstallpackage-namecondainstallpackage-name=version安装依赖包condauninstallpackage-name=version卸载依赖包condaupdatepackage-na
- Java并发编程从入门到实战:同步、异步、多线程核心原理全解析
猿享天开
开发语言java
《Java并发编程从入门到实战:同步、异步、多线程核心原理全解析》一、多线程基础认知(从单核到多核的进化)1.1什么是线程?线程是程序执行的最小单元,一个进程可以包含多个线程。例如浏览器同时下载文件(后台线程)和渲染页面(UI线程)。1.2创建线程的三种方式//方式1:继承Thread类classMyThreadextendsThread{@Overridepublicvoidrun(){Syst
- SpringBoot万能启停脚本
You Only Live Once_2
springboot
startup.sh#!/bin/bashmkdir-plogmkdir-puploadPathrm-rflog/*shstop.shCUR_DIR="$(cd"$(dirname"$0")"&&pwd)"echo"CUR_DIR=$CUR_DIR"cd$CUR_DIRAPP_NAME=exampleAPP_JAR_NAME="$APP_NAME.jar"nohupjava-jar-Xms128m
- unsupported operand type(s) for |: ‘dict‘ and ‘dict‘
AI算法网奇
python基础开发语言python
unsupportedoperandtype(s)for|:'dict'and'dict'解决方法1.升级到Python3.9+如果你能升级到Python3.9或更高版本,直接使用|运算符合并字典是可以的。例如:data=output|dict(framerate=framerate,start_datetime=start_datetime,end_datetime=end_datetime,i
- open-spider开源爬虫工具:抖音数据采集_抖音直播爬虫采集
2401_84010165
程序员爬虫
静态内容抓取是指从网页中直接提取信息的过程。这通常涉及到以下几个步骤:使用requests库发送HTTP请求,获取网页的原始数据。例如,你可以使用requests.get(url)来获取抖音首页的HTML内容。利用BeautifulSoup库对获取到的HTML进行解析。BeautifulSoup提供了丰富的方法来处理和提取HTML文档中的数据。例如,你可以使用find()或find_all()方法
- DeepSeek+RAG局域网部署
长飞哥
RAGdeepseek增强检索生成ChromastreamlitlangchainRAG部署
已经有很多平台集成RAG模式,dify,cherrystudio等,这里通过AI辅助,用DS的API实现一个简单的RAG部署。框架主要技术栈是Chroma,langchain,streamlit,答案流式输出,并且对答案加上索引。支持doc,docx,pdf,txt。RAGimportosimportstreamlitasstimportchromadbimportfitz#PyMuPDFimpo
- Java类初始化过程
自由与自然
java开发语言
packageorg.example;importjava.util.ArrayList;importjava.util.Scanner;/***Helloworld!*/publicclassApp{publicstaticvoidmain(String[]args)throwsInterruptedException{newChild();}}classParent{Stringname=in
- dockerfile tomcat用例
大山运维
tomcatjava
#使用官方的CentOS基础镜像FROMcentos:7#维护者信息LABELmaintainer="your-email@example.com"#安装必要的软件包和工具RUNyum-yupdate&&\yum-yinstallwgettargzipjava-1.8.0-openjdk-devel&&\yumcleanall#设置环境变量ENVCATALINA_HOME/usr/local/to
- IS-IS 邻居关系建立的过程(2-way 3-way)
杨玉庭的博客
网络面试网络协议
IS-IS邻居关系建立过程(2-way3-way)(1)P2P网络:分为两次握手机制和三次握手机制。(TLV240,对端的system-id)TLV240包含:邻居状态、邻居的链路ID、邻居的sys-id、自己的链路ID。①、两次握手只要路由器收到对端发来的Hello报文,就单方面宣布邻居状态为UP状态,建立邻居关系,不过容易存在单通风险。②、三次握手:通过三次发送P2P的IS-ISHelloPD
- ThreadLocal
重生之我在成电转码
javajvm开发语言多线程
一、什么是ThreadLocalThreadLocal是Java提供的线程本地变量(ThreadLocalVariable)机制:作用:给每个线程分配一份独立的变量副本,互不干扰,避免多线程环境下的共享冲突问题。特点:同一个ThreadLocal变量,在不同线程中有不同的值(隔离性)。本质:每个线程内部有个ThreadLocalMap,ThreadLocal作为key,自己存自己的值。二、核心使用
- 第十四章:模板实例化_《C++ Templates》notes
郭涤生
c/c++c++开发语言笔记
模板实例化核心知识点解析多选题设计题关键点总结核心知识点解析两阶段查找(Two-PhaseLookup)原理:模板在编译时分两个阶段处理:第一阶段(定义时):检查模板语法和非依赖名称(Non-dependentNames),此时不依赖模板参数。第二阶段(实例化时):检查依赖名称(DependentNames),并绑定到具体类型。代码示例:#includetemplatevoidfoo(Tt){//
- linux arm64安装PYQT5
Xiangming Zhou
python
原链接:原文链接:https://blog.csdn.net/weixin_50005386/article/details/141460070此链接遇到点问题,给管理员权限就行1、安装依赖环境sudoapt-getinstallcmakegccg++pip3install--upgradepippip3installwheelsetuptoolssudoapt-updatesudoapt-get
- 2.字典的增删改查
恸流失
Python学习基础python
一.字典的基础知识1.字典的创建2.字典中的键与值二.字典方法:增删改查1.增:setdefault(),update(),通过键名添加2.删:pop(),popitem(),clear()3.改:通过键名修改,update()4.查:get(),keys(),values(),items(),通过键名查看字典的基础知识1.字典的创建通过字典名={"键":"值","键":"值"},进行创建,每对键
- Flutter项目升级到指定版本的详细步骤指南
Zender Han
Flutter知识学习指南flutterandroidios
一、升级前的准备工作备份项目使用Git提交当前所有修改:gitcommit-am"Pre-upgradebackup"或直接复制项目文件夹查看当前环境信息flutter--versionflutterdoctor二、升级FlutterSDK到指定版本方法1:通过版本管理工具升级(推荐)切换发布渠道#查看可用渠道:stable/beta/dev/masterflutterchannelstable获
- C++使用QtHttpServer开发服务端Server的Http POST接口和客户端Client示例
BigBookX
Qtc++qthttp
ClientHTTPPOST假设http://127.0.0.1:8888/post/是一个能够接受POST请求的路径,我们想要向它提交一段json数据,用Qt可以这样实现:SupposewewanttomakeanHTTPPOSTwithjsonbodytohttp://127.0.0.1:8888/post/.QCoreApplicationapp(argc,argv);QNetworkAcc
- Flutter Scaffold 实现抽屉,浮窗,底部栏,和顶部侧边栏
书弋江山
flutterjavascript前端
直接贴代码import'package:flutter/cupertino.dart';import'package:flutter/material.dart';classTestApp2Demo5extendsStatefulWidget{@overrideStatecreateState(){//TODO:implementcreateStatereturn_TestApp2Demo5Sta
- 多线程编程
Ye1l0vv
linux
多线程编程pthread_create创建线程#includeintpthread_create(pthread_t*thread,//线程标识符(输出参数)constpthread_attr_t*attr,//线程属性(通常设为NULL)void*(*start_routine)(void*),//线程入口函数void*arg//传递给线程函数的参数);//成功返回0,失败返回错误码(非errn
- Rk3568驱动开发_设备树点亮LED_10
Narnat
驱动开发
设备树中添加节点在设备树文件中添加led节点,添加完后需要重新编译内核,因为单独编译这个设备树文件生成的dtb文件目前不能直接做替换,所以要编译内核将编译好的boot.img文件烧录到设备里,boot.img里包含新添加的设备树节点,注意zboot.img没有设备树烧录,按下UPDATE+复位,然后单独强制烧录烧写后重启,看到设备中是否有新添加节点
- Java中有哪几种方式来创建线程执行任务?
只想码代码
java
1、继承Thread类总结:重写的是run()方法,而不是start()方法,但是占用了继承的名额,Java中的类是单继承的。2、实现Runnable接口总结:实现Runnable接口,实现run()方法,使用依然要用到Thread,这种方式更常用。3、实现Callable接口总结:实现Callable接口,实现call()方法,得使用Thread+FutureTask配合,这种方式支持拿到异步执
- Linux线程同步
zc_shbj
linux多线程c语言
Linux线程同步1.互斥量确保同一时间只有一个线程访问数据。pthread_mutex_tmut;//两种初始化方法mut=PTHREAD_MUTEX_INITIALIZER;pthread_mutex_init(&mut,NULL);1.初始化intpthread_mutex_init(pthread_mutex_t*__mutex,constpthread_mutexattr_t*__mut
- linux进程 线程详解
Lntano__y
CMake学习c++linux
进程在Linux操作系统中,进程是执行中的程序的实例。理解进程及其管理是系统编程、性能调优和系统管理的基础。以下是对Linux进程的详细介绍,包括进程的基本概念、生命周期、管理以及常用的命令和工具。基本概念进程(Process):进程是程序在执行中的实例。每个进程都有一个唯一的进程标识符(PID)以及一组资源(如内存、文件描述符等)。线程(Thread):线程是进程内的一个执行单元。一个进程可以包
- void OSTaskNameSet (INT8U prio, INT8U *pname, INT8U *)函数的作用
weixin_44799641
ucosc语言
OSTaskNameSet是uC/OS-II(一种广泛应用的嵌入式实时操作系统)中的一个函数,其作用是为指定优先级的任务设置一个可读的名称。下面为你详细介绍该函数的各个参数以及整体功能:函数原型cvoidOSTaskNameSet(INT8Uprio,INT8U*pname,INT8U*perr);参数解释prio:类型为INT8U(无符号8位整数),它代表了要设置名称的任务的优先级。在uC/OS
- linux系统服务器下jsp传参数乱码
3213213333332132
javajsplinuxwindowsxml
在一次解决乱码问题中, 发现jsp在windows下用js原生的方法进行编码没有问题,但是到了linux下就有问题, escape,encodeURI,encodeURIComponent等都解决不了问题
但是我想了下既然原生的方法不行,我用el标签的方式对中文参数进行加密解密总该可以吧。于是用了java的java.net.URLDecoder,结果还是乱码,最后在绝望之际,用了下面的方法解决了
- Spring 注解区别以及应用
BlueSkator
spring
1. @Autowired
@Autowired是根据类型进行自动装配的。如果当Spring上下文中存在不止一个UserDao类型的bean,或者不存在UserDao类型的bean,会抛出 BeanCreationException异常,这时可以通过在该属性上再加一个@Qualifier注解来声明唯一的id解决问题。
2. @Qualifier
当spring中存在至少一个匹
- printf和sprintf的应用
dcj3sjt126com
PHPsprintfprintf
<?php
printf('b: %b <br>c: %c <br>d: %d <bf>f: %f', 80,80, 80, 80);
echo '<br />';
printf('%0.2f <br>%+d <br>%0.2f <br>', 8, 8, 1235.456);
printf('th
- config.getInitParameter
171815164
parameter
web.xml
<servlet>
<servlet-name>servlet1</servlet-name>
<jsp-file>/index.jsp</jsp-file>
<init-param>
<param-name>str</param-name>
- Ant标签详解--基础操作
g21121
ant
Ant的一些核心概念:
build.xml:构建文件是以XML 文件来描述的,默认构建文件名为build.xml。 project:每个构建文
- [简单]代码片段_数据合并
53873039oycg
代码
合并规则:删除家长phone为空的记录,若一个家长对应多个孩子,保留一条家长记录,家长id修改为phone,对应关系也要修改。
代码如下:
- java 通信技术
云端月影
Java 远程通信技术
在分布式服务框架中,一个最基础的问题就是远程服务是怎么通讯的,在Java领域中有很多可实现远程通讯的技术,例如:RMI、MINA、ESB、Burlap、Hessian、SOAP、EJB和JMS等,这些名词之间到底是些什么关系呢,它们背后到底是基于什么原理实现的呢,了解这些是实现分布式服务框架的基础知识,而如果在性能上有高的要求的话,那深入了解这些技术背后的机制就是必须的了,在这篇blog中我们将来
- string与StringBuilder 性能差距到底有多大
aijuans
之前也看过一些对string与StringBuilder的性能分析,总感觉这个应该对整体性能不会产生多大的影响,所以就一直没有关注这块!
由于学程序初期最先接触的string拼接,所以就一直没改变过自己的习惯!
- 今天碰到 java.util.ConcurrentModificationException 异常
antonyup_2006
java多线程工作IBM
今天改bug,其中有个实现是要对map进行循环,然后有删除操作,代码如下:
Iterator<ListItem> iter = ItemMap.keySet.iterator();
while(iter.hasNext()){
ListItem it = iter.next();
//...一些逻辑操作
ItemMap.remove(it);
}
结果运行报Con
- PL/SQL的类型和JDBC操作数据库
百合不是茶
PL/SQL表标量类型游标PL/SQL记录
PL/SQL的标量类型:
字符,数字,时间,布尔,%type五中类型的
--标量:数据库中预定义类型的变量
--定义一个变长字符串
v_ename varchar2(10);
--定义一个小数,范围 -9999.99~9999.99
v_sal number(6,2);
--定义一个小数并给一个初始值为5.4 :=是pl/sql的赋值号
- Mockito:一个强大的用于 Java 开发的模拟测试框架实例
bijian1013
mockito单元测试
Mockito框架:
Mockito是一个基于MIT协议的开源java测试框架。 Mockito区别于其他模拟框架的地方主要是允许开发者在没有建立“预期”时验证被测系统的行为。对于mock对象的一个评价是测试系统的测
- 精通Oracle10编程SQL(10)处理例外
bijian1013
oracle数据库plsql
/*
*处理例外
*/
--例外简介
--处理例外-传递例外
declare
v_ename emp.ename%TYPE;
begin
SELECT ename INTO v_ename FROM emp
where empno=&no;
dbms_output.put_line('雇员名:'||v_ename);
exceptio
- 【Java】Java执行远程机器上Linux命令
bit1129
linux命令
Java使用ethz通过ssh2执行远程机器Linux上命令,
封装定义Linux机器的环境信息
package com.tom;
import java.io.File;
public class Env {
private String hostaddr; //Linux机器的IP地址
private Integer po
- java通信之Socket通信基础
白糖_
javasocket网络协议
正处于网络环境下的两个程序,它们之间通过一个交互的连接来实现数据通信。每一个连接的通信端叫做一个Socket。一个完整的Socket通信程序应该包含以下几个步骤:
①创建Socket;
②打开连接到Socket的输入输出流;
④按照一定的协议对Socket进行读写操作;
④关闭Socket。
Socket通信分两部分:服务器端和客户端。服务器端必须优先启动,然后等待soc
- angular.bind
boyitech
AngularJSangular.bindAngularJS APIbind
angular.bind 描述: 上下文,函数以及参数动态绑定,返回值为绑定之后的函数. 其中args是可选的动态参数,self在fn中使用this调用。 使用方法: angular.bind(se
- java-13个坏人和13个好人站成一圈,数到7就从圈里面踢出一个来,要求把所有坏人都给踢出来,所有好人都留在圈里。请找出初始时坏人站的位置。
bylijinnan
java
import java.util.ArrayList;
import java.util.List;
public class KickOutBadGuys {
/**
* 题目:13个坏人和13个好人站成一圈,数到7就从圈里面踢出一个来,要求把所有坏人都给踢出来,所有好人都留在圈里。请找出初始时坏人站的位置。
* Maybe you can find out
- Redis.conf配置文件及相关项说明(自查备用)
Kai_Ge
redis
Redis.conf配置文件及相关项说明
# Redis configuration file example
# Note on units: when memory size is needed, it is possible to specifiy
# it in the usual form of 1k 5GB 4M and so forth:
#
- [强人工智能]实现大规模拓扑分析是实现强人工智能的前奏
comsci
人工智能
真不好意思,各位朋友...博客再次更新...
节点数量太少,网络的分析和处理能力肯定不足,在面对机器人控制的需求方面,显得力不从心....
但是,节点数太多,对拓扑数据处理的要求又很高,设计目标也很高,实现起来难度颇大...
- 记录一些常用的函数
dai_lm
java
public static String convertInputStreamToString(InputStream is) {
StringBuilder result = new StringBuilder();
if (is != null)
try {
InputStreamReader inputReader = new InputStreamRead
- Hadoop中小规模集群的并行计算缺陷
datamachine
mapreducehadoop并行计算
注:写这篇文章的初衷是因为Hadoop炒得有点太热,很多用户现有数据规模并不适用于Hadoop,但迫于扩容压力和去IOE(Hadoop的廉价扩展的确非常有吸引力)而尝试。尝试永远是件正确的事儿,但有时候不用太突进,可以调优或调需求,发挥现有系统的最大效用为上策。
-----------------------------------------------------------------
- 小学4年级英语单词背诵第二课
dcj3sjt126com
englishword
egg 蛋
twenty 二十
any 任何
well 健康的,好
twelve 十二
farm 农场
every 每一个
back 向后,回
fast 快速的
whose 谁的
much 许多
flower 花
watch 手表
very 非常,很
sport 运动
Chinese 中国的
- 自己实践了github的webhooks, linux上面的权限需要注意
dcj3sjt126com
githubwebhook
环境, 阿里云服务器
1. 本地创建项目, push到github服务器上面
2. 生成www用户的密钥
sudo -u www ssh-keygen -t rsa -C "xxx@xx.com"
3. 将密钥添加到github帐号的SSH_KEYS里面
3. 用www用户执行克隆, 源使
- Java冒泡排序
蕃薯耀
冒泡排序Java冒泡排序Java排序
冒泡排序
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
蕃薯耀 2015年6月23日 10:40:14 星期二
http://fanshuyao.iteye.com/
- Excle读取数据转换为实体List【基于apache-poi】
hanqunfeng
apache
1.依赖apache-poi
2.支持xls和xlsx
3.支持按属性名称绑定数据值
4.支持从指定行、列开始读取
5.支持同时读取多个sheet
6.具体使用方式参见org.cpframework.utils.excelreader.CP_ExcelReaderUtilTest.java
比如:
Str
- 3个处于草稿阶段的Javascript API介绍
jackyrong
JavaScript
原文:
http://www.sitepoint.com/3-new-javascript-apis-may-want-follow/?utm_source=html5weekly&utm_medium=email
本文中,介绍3个仍然处于草稿阶段,但应该值得关注的Javascript API.
1) Web Alarm API
&
- 6个创建Web应用程序的高效PHP框架
lampcy
Web框架PHP
以下是创建Web应用程序的PHP框架,有coder bay网站整理推荐:
1. CakePHP
CakePHP是一个PHP快速开发框架,它提供了一个用于开发、维护和部署应用程序的可扩展体系。CakePHP使用了众所周知的设计模式,如MVC和ORM,降低了开发成本,并减少了开发人员写代码的工作量。
2. CodeIgniter
CodeIgniter是一个非常小且功能强大的PHP框架,适合需
- 评"救市后中国股市新乱象泛起"谣言
nannan408
首先来看百度百家一位易姓作者的新闻:
三个多星期来股市持续暴跌,跌得投资者及上市公司都处于极度的恐慌和焦虑中,都要寻找自保及规避风险的方式。面对股市之危机,政府突然进入市场救市,希望以此来重建市场信心,以此来扭转股市持续暴跌的预期。而政府进入市场后,由于市场运作方式发生了巨大变化,投资者及上市公司为了自保及为了应对这种变化,中国股市新的乱象也自然产生。
首先,中国股市这两天
- 页面全屏遮罩的实现 方式
Rainbow702
htmlcss遮罩mask
之前做了一个页面,在点击了某个按钮之后,要求页面出现一个全屏遮罩,一开始使用了position:absolute来实现的。当时因为画面大小是固定的,不可以resize的,所以,没有发现问题。
最近用了同样的做法做了一个遮罩,但是画面是可以进行resize的,所以就发现了一个问题,当画面被reisze到浏览器出现了滚动条的时候,就发现,用absolute 的做法是有问题的。后来改成fixed定位就
- 关于angularjs的点滴
tntxia
AngularJS
angular是一个新兴的JS框架,和以往的框架不同的事,Angularjs更注重于js的建模,管理,同时也提供大量的组件帮助用户组建商业化程序,是一种值得研究的JS框架。
Angularjs使我们可以使用MVC的模式来写JS。Angularjs现在由谷歌来维护。
这里我们来简单的探讨一下它的应用。
首先使用Angularjs我
- Nutz--->>反复新建ioc容器的后果
xiaoxiao1992428
DAOmvcIOCnutz
问题:
public class DaoZ {
public static Dao dao() { // 每当需要使用dao的时候就取一次
Ioc ioc = new NutIoc(new JsonLoader("dao.js"));
return ioc.get(