精华内容
下载资源
问答
  • 创建一个查询页面,比如下面这个demo。 1. 分析界面的html源码。 右击查询按钮 ——》检查 弹出开发工具窗口,查看对应的html。 从上面的源码可以知道,该查找界面是通过component://common/widget/...

    创建一个查询页面,比如下面这个demo。


    1. 分析界面的html源码。

    右击查询按钮 ——》检查  弹出开发工具窗口,查看对应的html。


    从上面的源码可以知道,该查找界面是通过component://common/widget/CommonScreens.xml#FindScreenDecorator这个装饰器界面实现的。

    打开component://common/widget/CommonScreens.xml#FindScreenDecorator

        <screen name="FindScreenDecorator">
            <section>
                <widgets>
                    <section>
                        <condition>
                            <if-empty field="titleProperty"/>
                        </condition>
                        <widgets>
                            <container style="page-title"><label text="${title}"></label></container>
                        </widgets>
                        <fail-widgets>
                            <container style="page-title"><label text="${uiLabelMap[titleProperty]}"></label></container>
                        </fail-widgets>
                    </section>
                    <decorator-section-include name="menu-bar"/>
                    <container style="clear"/>
                    <screenlet id="searchOptions" name="findScreenlet" collapsible="true" title="${uiLabelMap.CommonSearchOptions}">
                        <container id="search-options">
                            <decorator-section-include name="search-options" />
                        </container>
                    </screenlet>
                    <screenlet padded="false">
                        <label style="h3" text="${uiLabelMap.CommonSearchResults}"/>
                        <container id="search-results">
                            <decorator-section-include name="search-results"/>
                        </container>
                    </screenlet>
                </widgets>
            </section>
        </screen>

    从该装饰器可以看到还需要实现的3个widgets:menu-bar,search-options,search-results。

    2. 如何调用装饰器FindScreenDecorator的呢?

    打开component://manufacturing/webapp/manufacturing/WEB-INF/controller.xml找到对uri请求/main的处理配置:

        <request-map uri="main">
            <security https="true" auth="true"/>
            <response name="success" type="view" value="main"/>
        </request-map>
        <view-map name="main" page="component://manufacturing/widget/manufacturing/JobshopScreens.xml#FindProductionRun" type="screen"/>
    打开component://manufacturing/widget/manufacturing/JobshopScreens.xml#FindProductionRun

        <screen name="FindProductionRun">
            <section>
                <actions>
                    <set field="titleProperty" value="ManufacturingFindProductionRun"/>
                    <set field="headerItem" value="jobshop"/>
                    <set field="viewIndex" from-field="parameters.VIEW_INDEX" type="Integer"/>
                    <property-to-field resource="widget" property="widget.form.defaultViewSize" field="viewSizeDefaultValue"/>
                    <set field="viewSize" from-field="parameters.VIEW_SIZE" type="Integer" default-value="${viewSizeDefaultValue}"/>
                </actions>
                <widgets>
                    <decorator-screen name="CommonManufacturingDecorator" location="${parameters.commonManufacturingDecoratorLocation}">
                        <decorator-section name="body">
                            <section>
                                <widgets>
                                    <decorator-screen name="FindScreenDecorator" location="component://common/widget/CommonScreens.xml">
                                        <decorator-section name="menu-bar">
                                            <container style="button-bar">
                                                <link target="CreateProductionRun" text="${uiLabelMap.ManufacturingCreateProductionRun}" style="buttontext create"/>
                                            </container>
                                        </decorator-section>
                                        <decorator-section name="search-options">
                                            <include-form name="FindProductionRun" location="component://manufacturing/widget/manufacturing/ProductionRunForms.xml"/>
                                        </decorator-section>
                                        <decorator-section name="search-results">
                                            <include-form name="ListFindProductionRun" location="component://manufacturing/widget/manufacturing/ProductionRunForms.xml"/>
                                        </decorator-section>
                                    </decorator-screen>
                                </widgets>
                            </section>
                        </decorator-section>
                    </decorator-screen>
                </widgets>
            </section>
        </screen>

    上面可以看到对装饰器FindScreenDecorator的初始化。


    3. 进一步分析装饰器FindScreenDecorator的3个具体实现。

    3.1 分析menu-bar

    <decorator-section name="menu-bar">
    	<container style="button-bar">
    		<link target="CreateProductionRun" text="${uiLabelMap.ManufacturingCreateProductionRun}" style="buttontext create"/>
    	</container>
    </decorator-section>

    菜单栏只包含一个按钮栏button-bar,而按钮栏包含一个链接(样式是按钮)link标签。点击后访问CreateProductionRun,按钮显示的文本查找ManufacturingUiLabels.xml的ManufacturingCreateProductionRun定义,如果语言选择中国,应该是 “新建一个生产运行”。
        <property key="ManufacturingCreateProductionRun">
            <value xml:lang="de">Produktionsauftrag erstellen</value>
            <value xml:lang="en">Create a Production Run</value>
            <value xml:lang="es">Crear orden de producción</value>
            <value xml:lang="fr">Création O.F.</value>
            <value xml:lang="it">Nuovo ordine di produzione</value>
            <value xml:lang="ja">生産実行を作成</value>
            <value xml:lang="pt-BR">Criar execução de produção</value>
            <value xml:lang="ro">Creare Comanda de Productie</value>
            <value xml:lang="th">สร้างการผลิตสินค้า</value>
            <value xml:lang="vi">Bắt đầu Chế tác lô hàng mới</value>
            <value xml:lang="zh">新建一个生产运行</value>
            <value xml:lang="zh-TW">新建一個生產運行</value>
        </property>

    3.2 分析search-options

    该场景主要是包括一个表单。表单的定义见component://manufacturing/widget/manufacturing/ProductionRunForms.xml
        <form name="FindProductionRun" target="FindProductionRun" title="" type="single"
            header-row-style="header-row" default-table-style="basic-table">
            <field name="workEffortTypeId"><hidden value="PROD_ORDER_HEADER"/></field>
            <field name="workEffortId" title="${uiLabelMap.ManufacturingProductionRunId}"><text-find/></field>
            <field name="currentStatusId" title="${uiLabelMap.CommonStatus}">
                <check all-checked="false">
                    <entity-options entity-name="StatusItem" key-field-name="statusId">
                        <entity-constraint name="statusTypeId" value="PRODUCTION_RUN"/>
                    </entity-options>
                 </check>
            </field>
            <field name="productId" title="${uiLabelMap.ProductProductId}"><lookup target-form-name="LookupProduct"/></field>
            <field name="workEffortName" title="${uiLabelMap.ManufacturingProductionRunName}"><text-find/></field>
            <field name="estimatedStartDate" title="${uiLabelMap.ManufacturingStartDate}"><date-find default-value="${nowTimestamp}"/></field>
            <field name="facilityId" title="${uiLabelMap.ProductFacilityId}">
                <drop-down allow-empty="true">
                    <entity-options entity-name="Facility" key-field-name="facilityId" description="${facilityName} [${facilityId}]">
                        <!--<entity-constraint name="facilityTypeId" value="WAREHOUSE"/>-->
                    </entity-options>
                 </drop-down>
            </field>
            <field name="submitButton" title="${uiLabelMap.CommonFind}"><submit/></field>
        </form>
    

    具体一个个字段分析:
    <field name="workEffortTypeId"><hidden value="PROD_ORDER_HEADER"/></field>
    该行代码表示解析一个隐藏字段,如:
    <input type="hidden" name="workEffortTypeId" value="PROD_ORDER_HEADER" id="FindProductionRun_workEffortTypeId">

    <field name="workEffortId" title="${uiLabelMap.ManufacturingProductionRunId}"><text-find/></field>
    该行代码就是实现如下效果:



    其中<text-find/>标签应该是对应上图中那个下拉框选择,表示该文本是 包含,等于,为空,忽略大小写 等查找方式。


    <field name="currentStatusId" title="${uiLabelMap.CommonStatus}">
                <check all-checked="false">
                    <entity-options entity-name="StatusItem" key-field-name="statusId">
                        <entity-constraint name="statusTypeId" value="PRODUCTION_RUN"/>
                    </entity-options>
                 </check>
            </field>

    这个demo界面的状态复选框选项。对check和entity-option标签不是很了解。所以猜测一下:

    ${uiLabelMap.CommonStatus}表示形式表单的左边的文本。
    check标签表示一组复选框按钮。
    entity-options标签表示一组复选框按钮里面的待选项。entity-name属性表示查询的实体名,key-field-name表示复选框的key值,entity-constraint表示约束限制。
    即对应的查询sql:
    SELECT * FROM Status_Item WHERE status_type_id='PRODUCTION_RUN' 
    实际上Status_Item表有个排序字段sequence_id,但根据demo显示结果来看似乎并没有使用。下面是查询结果:
    然后,复选框后面的文本,如:已取消,已关闭等是如何显示出来的呢?猜测是根据description字段在XXXUiLabels.xml文件中找到对应的值显示出来。
    经过查找,在ManufacturingUiLabels.xml中并没有找到对应的定义。但是查找CommonUiLabels.xml文件发现有类似CommonCancelled、CommonClose等值的定义。
    所以估计其逻辑是description值前面加上Common字符,然后去CommonUiLabels.xml找到对应的值显示。(测试修改了CommonCancelled的定义显示的文本,清除缓存和重启都没有生效,可能猜测不对,有空再深入研究具体实现源码)

    下面这个控件是就牛了,实现了2个功能,一个是输入关键字后会自动提示下拉选项,另一个是可以点击右边的图标,在弹出窗口中选择选项。
    <field name="productId" title="${uiLabelMap.ProductProductId}"><lookup target-form-name="LookupProduct"/></field>
    具体重点应该是lookup标签的配置。访问controller.xml文件,找到LookupProduct的配置:
    <view-map name="LookupProduct" page="component://product/widget/catalog/LookupScreens.xml#LookupProduct" type="screen"/>
    打开文件component://product/widget/catalog/LookupScreens.xml#LookupProduct
        <screen name="LookupProduct">
            <section>
                <condition>
                    <if-service-permission service-name="catalogPermissionCheck" main-action="VIEW"/>
                </condition>
                <actions>
                    <property-map resource="ProductUiLabels" map-name="uiLabelMap" global="true"/>
                    <set field="title" value="${uiLabelMap.PageTitleLookupProduct}"/>
                    <set field="queryString" from-field="result.queryString"/>
                    <set field="entityName" value="Product"/>
                    <set field="searchFields" value="[productId, internalName, brandName]"/>
                </actions>
                <widgets>
                    <decorator-screen name="LookupDecorator" location="component://common/widget/CommonScreens.xml">
                        <decorator-section name="search-options">
                            <include-form name="LookupProduct" location="component://product/widget/catalog/FieldLookupForms.xml"/>
                        </decorator-section>
                        <decorator-section name="search-results">
                            <include-form name="ListLookupProduct" location="component://product/widget/catalog/FieldLookupForms.xml"/>
                        </decorator-section>
                    </decorator-screen>
                </widgets>
            </section>
        </screen>

    具体实现好像蛮复杂的,暂时不深入研究了,以后再专门研究lookup标签。

    <field name="workEffortName" title="${uiLabelMap.ManufacturingProductionRunName}"><text-find/></field>
    这个和前面的workEffortId类似,就不对说了。

    <field name="estimatedStartDate" title="${uiLabelMap.ManufacturingStartDate}"><date-find default-value="${nowTimestamp}"/></field>
    这个是日期的查询条件选择,date-find标签实现如下效果:


    好像有点看不懂,这个日期到底是怎么判断的。

            <field name="facilityId" title="${uiLabelMap.ProductFacilityId}">
                <drop-down allow-empty="true">
                    <entity-options entity-name="Facility" key-field-name="facilityId" description="${facilityName} [${facilityId}]">
                        <!--<entity-constraint name="facilityTypeId" value="WAREHOUSE"/>-->
                    </entity-options>
                 </drop-down>
            </field>

    这个是下拉框控件。类似复选框控件,其对应的sql查询是:
    SELECT * FROM Facility 
    /* where facility_Type_Id ='WAREHOUSe' */
    对应查询结果:


    <field name="submitButton" title="${uiLabelMap.CommonFind}"><submit/></field>

    这个是提交按钮。

    3.3 分析search-results

    打开component://manufacturing/widget/manufacturing/ProductionRunForms.xml#ListFindProductionRun
        <form name="ListFindProductionRun" list-name="listIt" title="" type="list" paginate-target="FindProductionRun"
            odd-row-style="alternate-row" default-table-style="basic-table hover-bar">
            <actions>
                <service service-name="performFind" result-map="result" result-map-list="listIt">
                    <field-map field-name="inputFields" from-field="requestParameters"/>
                    <field-map field-name="entityName" value="WorkEffortAndGoods"/>
                    <field-map field-name="viewIndex" from-field="viewIndex"/>
                    <field-map field-name="viewSize" from-field="viewSize"/>
                    <field-map field-name="orderBy" value="estimatedStartDate"/>
                </service>
            </actions>
            <row-actions>
                <entity-one entity-name="Product" value-field="product"/>
                <entity-one entity-name="Uom" value-field="uom">
                    <field-map field-name="uomId" from-field="product.quantityUomId"/>
                </entity-one>
            </row-actions>
            <field name="workEffortId" title=" " widget-style="buttontext">
                <hyperlink description="${workEffortId}" target="ShowProductionRun" also-hidden="false">
                    <parameter param-name="productionRunId" from-field="workEffortId"/>
                </hyperlink>
            </field>
            <field name="workEffortName" title="${uiLabelMap.ManufacturingProductionRunName}"><display/></field>
            <field name="productId" title="${uiLabelMap.ProductProductId}"><display/></field>
            <field name="estimatedQuantity" title="${uiLabelMap.ManufacturingQuantity}"><display/></field>
            <field name="QuantityUom" title="${uiLabelMap.ProductQuantityUom}"><display description="${uom.abbreviation}"></display></field>
            <field name="currentStatusId" title="${uiLabelMap.CommonStatus}">
                <display-entity entity-name="StatusItem" key-field-name="statusId"/>
            </field>
            <field name="estimatedStartDate" title="${uiLabelMap.ManufacturingStartDate}"><display/></field>
            <field name="description" title="${uiLabelMap.CommonDescription}"><display/></field>
            <field name="facilityId" title="${uiLabelMap.ProductFacilityId}"><display/></field>
        </form>

    该查询的业务逻辑查看service的配置。service-name="performFind" 。找到performFind服务的定义。通过服务引擎工具查找如下信息:


    打开文件org.apache.ofbiz.common.FindServices,路径:framework/common/servicedef/services.xml

        <service name="performFind" auth="false" engine="java" invoke="performFind" location="org.apache.ofbiz.common.FindServices">
            <description>Generic service to return an entity iterator.  set filterByDate to Y to exclude expired records.
               set noConditionFind to Y to find without conditions.  </description>
            <attribute name="entityName" type="String" mode="IN" optional="false"/>
            <attribute name="inputFields" type="java.util.Map" mode="IN" optional="false"/>
            <attribute name="fieldList" type="java.util.List" mode="IN" optional="true"/>
            <attribute name="orderBy" type="String" mode="IN" optional="true"/>
            <attribute name="noConditionFind" type="String" mode="IN" optional="true"><!-- find with no condition (empty entityConditionList) only done when this is Y --></attribute>
            <attribute name="distinct" type="String" mode="IN" optional="true"><!-- distinct find only done when this is Y --></attribute>
            <attribute name="filterByDate" type="String" mode="IN" optional="true"/>
            <attribute name="filterByDateValue" type="Timestamp" mode="IN" optional="true"/>
            <attribute name="fromDateName" type="String" mode="IN" optional="true"/>
            <attribute name="thruDateName" type="String" mode="IN" optional="true"/>
            <attribute name="viewIndex" type="Integer" mode="IN" optional="true"/>
            <attribute name="viewSize" type="Integer" mode="IN" optional="true"/>
            <attribute name="listIt" type="org.apache.ofbiz.entity.util.EntityListIterator" mode="OUT" optional="true"/>
            <attribute name="listSize" type="Integer" mode="OUT" optional="true"/>
            <attribute name="queryString" type="String" mode="OUT" optional="true"/>
            <attribute name="queryStringMap" type="java.util.Map" mode="OUT" optional="true"/>
        </service>

    打开org.apache.ofbiz.common.FindServices,查看performFind方法:

        /**
         * performFind
         *
         * This is a generic method that expects entity data affixed with special suffixes
         * to indicate their purpose in formulating an SQL query statement.
         */
        public static Map<String, Object> performFind(DispatchContext dctx, Map<String, ?> context) {
            String entityName = (String) context.get("entityName");
            String orderBy = (String) context.get("orderBy");
            Map<String, ?> inputFields = checkMap(context.get("inputFields"), String.class, Object.class); // Input
            String noConditionFind = (String) context.get("noConditionFind");
            String distinct = (String) context.get("distinct");
            List<String> fieldList =  UtilGenerics.<String>checkList(context.get("fieldList"));
            GenericValue userLogin = (GenericValue) context.get("userLogin");
            Locale locale = (Locale) context.get("locale");
            Delegator delegator = dctx.getDelegator();
            if (UtilValidate.isEmpty(noConditionFind)) {
                // try finding in inputFields Map
                noConditionFind = (String) inputFields.get("noConditionFind");
            }
            if (UtilValidate.isEmpty(noConditionFind)) {
                // Use configured default
                noConditionFind = EntityUtilProperties.getPropertyValue("widget", "widget.defaultNoConditionFind", delegator);
            }
            String filterByDate = (String) context.get("filterByDate");
            if (UtilValidate.isEmpty(filterByDate)) {
                // try finding in inputFields Map
                filterByDate = (String) inputFields.get("filterByDate");
            }
            Timestamp filterByDateValue = (Timestamp) context.get("filterByDateValue");
            String fromDateName = (String) context.get("fromDateName");
            if (UtilValidate.isEmpty(fromDateName)) {
                // try finding in inputFields Map
                fromDateName = (String) inputFields.get("fromDateName");
            }
            String thruDateName = (String) context.get("thruDateName");
            if (UtilValidate.isEmpty(thruDateName)) {
                // try finding in inputFields Map
                thruDateName = (String) inputFields.get("thruDateName");
            }
    
            Integer viewSize = (Integer) context.get("viewSize");
            Integer viewIndex = (Integer) context.get("viewIndex");
            Integer maxRows = null;
            if (viewSize != null && viewIndex != null) {
                maxRows = viewSize * (viewIndex + 1);
            }
    
            LocalDispatcher dispatcher = dctx.getDispatcher();
    
            Map<String, Object> prepareResult = null;
            try {
                prepareResult = dispatcher.runSync("prepareFind", UtilMisc.toMap("entityName", entityName, "orderBy", orderBy,
                                                   "inputFields", inputFields, "filterByDate", filterByDate, "noConditionFind", noConditionFind,
                                                   "filterByDateValue", filterByDateValue, "userLogin", userLogin, "fromDateName", fromDateName, "thruDateName", thruDateName,
                                                   "locale", context.get("locale"), "timeZone", context.get("timeZone")));
            } catch (GenericServiceException gse) {
                return ServiceUtil.returnError(UtilProperties.getMessage(resource, "CommonFindErrorPreparingConditions", UtilMisc.toMap("errorString", gse.getMessage()), locale));
            }
            EntityConditionList<EntityCondition> exprList = UtilGenerics.cast(prepareResult.get("entityConditionList"));
            List<String> orderByList = checkList(prepareResult.get("orderByList"), String.class);
    
            Map<String, Object> executeResult = null;
            try {
                executeResult = dispatcher.runSync("executeFind", UtilMisc.toMap("entityName", entityName, "orderByList", orderByList,
                                                                                 "fieldList", fieldList, "entityConditionList", exprList,
                                                                                 "noConditionFind", noConditionFind, "distinct", distinct,
                                                                                 "locale", context.get("locale"), "timeZone", context.get("timeZone"),
                                                                                 "maxRows", maxRows));
            } catch (GenericServiceException gse) {
                return ServiceUtil.returnError(UtilProperties.getMessage(resource, "CommonFindErrorRetrieveIterator", UtilMisc.toMap("errorString", gse.getMessage()), locale));
            }
    
            if (executeResult.get("listIt") == null) {
                if (Debug.verboseOn()) Debug.logVerbose("No list iterator found for query string + [" + prepareResult.get("queryString") + "]", module);
            }
    
            Map<String, Object> results = ServiceUtil.returnSuccess();
            results.put("listIt", executeResult.get("listIt"));
            results.put("listSize", executeResult.get("listSize"));
            results.put("queryString", prepareResult.get("queryString"));
            results.put("queryStringMap", prepareResult.get("queryStringMap"));
            return results;
        }

    这里涉及到了服务的定义与实现,不是本章关注的重点。本章主要关注的重点是

    <form name="ListFindProductionRun" list-name="listIt" title="" type="list" paginate-target="FindProductionRun"
            odd-row-style="alternate-row" default-table-style="basic-table hover-bar">

        <form name="FindProductionRun" target="FindProductionRun" title="" type="single"
            header-row-style="header-row" default-table-style="basic-table">

    2个表单通过paginate-target属性关联起来。


    总结:

    查询页面的大体框架布局有了初步了解。介绍了常用的表单控件的使用。

    还有待深入研究的lookup控件和date-find控件。以及check控件的国际化是在哪里配置的。






    展开全文
  • 此gem使用(例如用于导航或无限滚动)有效地查找相对于当前记录的下一个或上一个记录。 安装 添加到Gemfile: gem 'order_query' , '~> 0.5.0' 用法 使用order_query(scope_name, *order_option)在模型中创建范围...
  • 1.查询时钟服务是谁:yum search ntp 2.查询时钟服务配置文件:rpm -qc chrony.x86_64 3.找到配置文件 /etc/chrony.conf 用vim编辑 4. :set nu 设置行号 :4,6d 删除4,6两行 w,t p 保存退出 rpm -ql ...

     

    1.查询时钟服务是谁:yum search ntp

     

    2.查询时钟服务配置文件:rpm -qc chrony.x86_64

    3.找到配置文件 /etc/chrony.conf   用vim编辑

    4. :set nu   设置行号

         :4,6d     删除4,6两行

     

    w,c,t,空格

    复制classroom.example.com,粘贴

    保存退出

    rpm -ql chrony.x86_64 | grep service  查询服务叫什么名字

    重启,设置开机自启动服务

    systemctl   restart  chronyd

    systemctl enable chronyd   ,开机启动服务

    测试:timedatectl ,等待一会儿,

    看NTP enabled:yes,如果不是yes,输入:timedatectl set-ntp yes

    然后过一会儿看NTP synchronized : yes 表示成功

     

     

    NTP  synchronized:yes  表示设置成功

    ================================================================================================================================================================================================

    ②创建用户,用户 ID 及密码

    useradd -u 1111 fred

    echo fred1111 | passwd -- stdin fred

    测试: ssh fred@localhost     ,输入id

     

    ================================================================================================================================================================================================

    ③创建SWAP分区       

    一定要先分拓展分区e,再分逻辑分区

    确认硬盘空间十分充足:lsblk

    fdisk   /dev/vda

    n

    e

    开始分区按两次回车选择默认

    再次按n

    +2G

    w保存

    partprobe 重读分区表

     

    partprobe 让分区生效

    lsblk再次查看

    mkswap  /dev/vda5

    复制UUID,编辑fstab文件,让它开机自动生效

    vim  /etc/fstab

    UUID      swap(挂载点,没有的话,标准写none,不标准写swap) swap(文件格式)   defaults (选项,默认)  0  0 (是否启用日志文件系统和开机检测顺序)

    :x 保存退出

    可以man fstab ,筛选第二项      :/second             查看帮助

    让swap生效:

    free -h  查看当前交换分区

    swapon -a  启用所有新增的分区,让它立即生效

    free -h 查看

     ================================================================================================================================================================================================

    ④查找文件

    man find | grep find.*exec

    ls /opt/finddir -l          查看文件夹/opt/finddir/ 里面的文件是否都属于Harry用户

    ================================================================================================================================================================================================

    ⑤过滤文件

    grep seismic  /usr/share/dirt/words  >/root/lines.txt

    cat    /root/lines.txt        查看是否有空格 顺序是否跟原来一样

     

    ================================================================================================================================================================================================

    ⑥创建一个归档

    lsblk 

    fdisk  /dev/vda

    n  两个回车,最后一题全给,w退出

    partprobe

     

    lsblk查看是否多出一个vda6

     pvcreate  /dev/vda6

    vgcreate  -s 16M  datastorage  /dev/vda6

     

    lvcreate  -l 50  -n database  datastorage

     查看:

    lvdisplay   /dev/datastorage/database

    vgdisplay  datastorage

     

    格式化逻辑卷

    mkfs.vfat   /dev/datastorage/database

    blkid  /dev/datastorage/database

    mkdir  /mnt/measure

    vim  /etc/fstab

    G o

     

     

    mount -a 

    sync

    reboot

    新开终端,切换到root: su -

    su后面带-

    exam-grade   ,查看分数

    展开全文
  • mkdir a 创建一个名为a的文件夹 touch a.txt 创建一个名为a.txt的文件 mv b /var/…/ 将文件夹b移动到/var/…/下 rm -rf a 删除整个a文件夹 (如果其中含有自文件夹,自动递归删除,不会再询问) mv b.txt c.txt 将...

    Linux文件基本操作

    • mkdir a
      创建一个名为a的文件夹

    • touch a.txt
      创建一个名为a.txt的文件

    • mv b /var/…/
      将文件夹b移动到/var/…/下

    • rm -rf a
      删除整个a文件夹 (如果其中含有自文件夹,自动递归删除,不会再询问)

    • mv b.txt c.txt
      将文件移到当前目录下且更名为c

    • cp a.log …
      将a文件复制到上一层去

    • cp a.log …/b.log
      将a文件复制到上一层且更名为b

    • cat a.log
      查看文件 不可以修改

    • head a.log
      查看a文件的前10行

    • head -n 20 a.log
      查看a文件的前20行

    • tail -f a.log
      动态查看a文件**

    查找文件

    find / -name xx
    (例如: find / -name var)从根目录寻找名为war的文件夹,同样可以跟文件名
    find ./ -name xx
    (例如: find ./ -name var)从当前目录寻找名为war的文件夹,同样可以跟文件名

    查询目录下包含某关键字的所有文件–相当于全局搜

    find .|xargs grep -ri “spring” -l
    查找目录下所有文件中含有spring字符串的文件,并且打印出文件名

    展开全文
  • 要从两个表中找到最高和最低值,请使用MAX...让我们首先创建一个表-createtableDemoTable1(UniqueIdintNOTNULLAUTO_INCREMENTPRIMARYKEY,Score1int);使用插入命令在表中插入一些记录-insertintoDemoTable1(Score1)va...

    要从两个表中找到最高和最低值,请使用MAX()和MIN()。由于要从两个表中显示结果,因此需要使用UNION。让我们首先创建一个表-create table DemoTable1

    (

    UniqueId int NOT NULL AUTO_INCREMENT PRIMARY KEY,

    Score1 int

    );

    使用插入命令在表中插入一些记录-insert into DemoTable1(Score1) values(56);

    insert into DemoTable1(Score1) values(76);

    insert into DemoTable1(Score1) values(65);

    使用select语句显示表中的所有记录-select *from DemoTable1;

    这将产生以下输出-+----------+--------+

    | UniqueId | Score1 |

    +----------+--------+

    |        1 |     56 |

    |        2 |     76 |

    |        3 |     65 |

    +----------+--------+

    3 rows in set (0.00 sec)

    以下是创建第二个表的查询-create table DemoTable2

    (

    UniqueId int NOT NULL AUTO_INCREMENT PRIMARY KEY,

    Score2 int

    );

    使用插入命令在表中插入一些记录-insert into DemoTable2(Score2) values(67);

    insert into DemoTable2(Score2) values(94);

    insert into DemoTable2(Score2) values(98);

    使用select语句显示表中的所有记录-select *from DemoTable2;

    这将产生以下输出-+----------+--------+

    | UniqueId | Score2 |

    +----------+--------+

    |        1 |     67 |

    |        2 |     94 |

    |        3 |     98 |

    +----------+--------+

    3 rows in set (0.00 sec)

    以下是在2个表中查找最高和最低的查询-select max(commonValue) AS Highest_Value,min(commonValue) AS Lowest_Value from

    (

    select Score1 as commonValue from DemoTable1

    union

    select Score2 as commonValue from DemoTable2

    ) tbl;

    这将产生以下输出-+---------------+--------------+

    | Highest_Value | Lowest_Value |

    +---------------+--------------+

    |            98 |           56 |

    +---------------+--------------+

    1 row in set (0.04 sec)

    展开全文
  • 由于不必须按顺序存储,链表在插入的时候可以达到O(1)的复杂度,比另一种线性表顺序表快得多,但是查找一个节点或者访问特定编号的节点则需要O(n)的时间,而线性表和顺序表相应的时间复杂度分别是O(lo
  • 假定现有大量人员需要管理,给每个人分配一个n位数的id,现要求快速查找,于是我们建一颗10叉树来管理这批人的信息,这样查找结果为真时查询次数为n,时间复杂度为常数,可谓是最优解了 代码如下: 1 using...
  • 让我们首先创建一个表-mysql>createtableDemoTable(Scoreint);使用插入命令在表中插入一些记录-mysql>insertintoDemoTablevalues(80);mysql>insertintoDemoTablevalues(45);mysql>insertintoDemoTable.....
  • 创建一个窗口,窗口表面和交换链 1.检测交换链是否支持 2.启用交换链扩展 3.选择适当的表面格式 4.查找最佳的可用呈现模式 5.设置交换范围 6.创建窗口表面 7.创建交换链 8.查询交换链支持细节 Vulkan 是一个平台...
  • 1.创建两个学生链表,含有姓名、年龄的信息,一个链 表存放男生,一个链表存放女生。 2.将上面两个链表合并,按学生的年龄进行排序,合 成新的链表. 3.将上题中建立的链表进行反转,实现按年龄的逆序 排列 4.题目:在...
  • 要搜索以逗号分隔的列表,请使用MySQL find_in_set()。这里不需要为此使用正则表达式。语法如下-select*...让我们创建一个表-mysql>createtabledemo17−>(−>idintnotnullauto_inc...
  • 我们都知道,数据结构最典型的就是数组和链表,在《算法图解》书中,详细介绍了数组和链表的优缺点: 数组查询快(下标),但删除或者插入就比较慢(遍历) 链表与之相反,删除和插入元素很快,但查找很慢 所以...
  • 当让实现方法有很多,可以直接生成一个随机数,然后查找该随机数有没有被注册过,若是没有,则生成成功,否则,重新执行以上步骤。这个方法有个很大的问题:随着注册的号码越来越多,以后每生成一个号码,可能要多次...
  • 查找创建表的时间

    2005-03-18 12:54:38
    问题:如何查找表的创建时间查询:解决:user_objects总结:经常用到表user_tables 很少注意这表 ,让我顿好找!有空需要写存储过程 定期删除那些temp表[@more@] ...
  • 索引是提高查询性能的一个重要工具,索引就是把查询语句所需要的少量数据添加到索引分页中,这样访问数据时只要访问少数索引的分页就可以。但是索引对于提高查询性能也不是万能的,也不是建立越多的索引就越好。索引...
  • 试按以下要求完成设计:(1)创建一个选择查询查找并显示"团队ID"、"导游姓名"、"线路名","天数","费用",等五个字段的内容,所建查询命名为"qT1";(2)创建一个选择查询查找并显示旅游"天数"在五到十天之间(包括...
  • 本文是记一次运维过程中实际发生的一个案例背景介绍应用这边运行缓慢,卡顿严重,查看数据库所在服务器,CPU100%,怀疑有大量查询占用资源导致。故查询DB中的慢sql,发现确实有耗时相当长的sql。用kill 命令杀掉该...
  • 试按以下要求完成设计:(1)创建一个选择查询查找并显示"团队ID"、"导游姓名"、"线路名","天数","费用",等五个字段的内容,所建查询命名为"qT1";(2)创建一个选择查询查找并显示旅游"天数"在五到十天之间(包括...
  • 1.all用法  select * from emp where sal> all   (select sal from emp where deptno='20') //括号里返回多条记录必需要用all 2.any用法 ... (select sal from emp where deptno='20') //查找
  • 通常我们在多表格查询的时候都会想到vlookup函数,今天小编就来分享一个它的高级用法,并且还能达到快速定位的效果首先第一步:根据数据源创建辅助列,在A3中输入=B3&C3,下拉填充即可解释:小编按照多对一的...
  • 索引是提高查询性能的一个重要工具,索引就是把查询语句所需要的少量数据添加到索引分页中,这样访问数据时只要访问少数索引的分页 就可以。但是索引对于提高查询性能也不是万能的,也不是建立越多的索引就越好。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,450
精华内容 980
关键字:

创建一个查询查找