精华内容
下载资源
问答
  • 2017-01-25 19:38:34

    PK——Belongs to primary key作为主键

    NN——Not Null非空

    UQ——被赋予unique属性的列将确保所有值都有不同的值,只是null值可以重复。一般会指定一个列为unique,以确保该列的所有值都不同

    BIN——binary属性只用于char和varchar值。当为列指定了该属性时,将以区分大小写的方式排序。与之相反,忽略binary属性时,将使用不区分大小写的方式排序。

    UN——Unsigned data type无符号数据类型(需要整数形数据)

    ZF —— zerofill属性可用于任何数值类型,用0填充所有剩余字段空间。例如,无符号int的默认宽度是10;因此,当“零填充”的int值为4时,将表示它为0000000004。

    AI——Auto Incremental自增长,auto_increment能为新插入的行赋一个唯一的整数标识符ID。为列赋此属性将为每个新插入的行赋值为上一次插入的ID+1。MySQL要求将auto_increment属性用于作为主键的列。此外,每个表只允许有一个auto_increment列。

    default——在没有任何值可用的情况下,赋予某个常量值,这个值必须是常量,因为MySQL不允许插入函数或表达式值。此外,此属性无法用于BLOB或TEXT列。如果已经为此列指定了NULL属性,没有指定默认值时默认值将为NULL,否则默认值将依赖于字段的数据类型。


    更多相关内容
  • Ikke Work Graph-crx插件

    2021-04-03 20:50:46
    至于名称,Ikke是荷兰语的口语单词,其含义接近于“我,我和我”,这使其成为该应用程序的合适名称。 隐私是关键:当您使用Ikke时,Google会自动收集有关该扩展程序的某些信息,包括有关您的Web浏览器,IP地址,时区...
  • 2376.752838] index 7 [ 2377.777063] server run 8 [ 2377.777069] index 8 [ 2378.801040] server run 9 [ 2378.801042] index 9 [ 2379.827048] server run 10 四、自定义工作队列 函数含义与默认差不多 create_...

     

    目录

    一、工作队列

    二、工作队列结构体

    三、工作队列初始化(系统自带)

    缺省工作队列示例

    四、自定义工作队列

    自定义示例


     

     

    一、工作队列

    工作队列可以把工作推后,交由一个内核线程去执行,工作队列允许重新调度甚至是睡眠。

    内核把推迟的任务交给特定的通用线程的这样一种接口

    用途:中断处理、进程同步、定时等场合。可以使用等待队列实现阻塞进程的唤醒。它以队列为基础数据结构,与进程调度机制紧密结合,能够用于实现内核中的异步时间通知机制,同步对系统资源的访问等待

     

    二、工作队列结构体

    1、正常工作结构体

    struct work_struct {
    	atomic_long_t data;
    	struct list_head entry;
    	work_func_t func;
    ...
    };
    

    2、延迟工作结构体

    queue_delayed_work用于向工作队列提交delayed_work实例,它确保在延期工作执行之前,少会经过由delay指定的一段时间。

    struct delayed_work {
        struct work_struct work;
        struct timer_list timer; //定时器,用于实现延迟
    };

    3、工作队列

    struct workqueue_struct {
    	struct list_head	pwqs;		/* WR: all pwqs of this wq */
    	struct list_head	list;		/* PR: list of all workqueues */
    
    	struct mutex		mutex;		/* protects this wq */
    	int			work_color;	/* WQ: current work color */
    	int			flush_color;	/* WQ: current flush color */
    	atomic_t		nr_pwqs_to_flush; /* flush in progress */
    
    	struct list_head	maydays;	/* MD: pwqs requesting rescue */
    	struct worker		*rescuer;	/* MD: rescue worker */
    
    	int			nr_drainers;	/* WQ: drain in progress */
    	int			saved_max_active; /* WQ: saved pwq max_active */
    
    	struct workqueue_attrs	*unbound_attrs;	/* PW: only for unbound wqs */
    	struct pool_workqueue	*dfl_pwq;	/* PW: only for unbound wqs */
    
    	char			name[WQ_NAME_LEN]; /* I: workqueue name */
    	struct rcu_head		rcu;
    
    	/* hot fields used during command issue, aligned to cacheline */
    	unsigned int		flags ____cacheline_aligned; /* WQ: WQ_* flags */
    	struct pool_workqueue __percpu *cpu_pwqs; /* I: per-cpu pwqs */
    	struct pool_workqueue __rcu *numa_pwq_tbl[]; /* PWR: unbound pwqs indexed by node */
    };

     

    三、工作队列初始化(系统自带)

    缺省的工作者线程都会从多个地方得到后被推后的工作,交给缺省的工作线程去做。

    系统默认的工作队列名:keventd_wq

    默认的工作者线程:events/n,n代表处理器编号

    例如:单处理器的系统只有events/0这样一个线程,而双处理器的系统就会多一个events/1线程。

    缺省系统调用为

    start_kernel->rest_init->do_basic_setup->init_workqueues

    工作队列相关函数

    //静态创建
    DECLARE_WORK(name,fun)
    //带延时,
    DECLARE_DELAYED_WORK(name,fun)
    
    //动态创建
    INIT_WORK(_work, _func)
    //带延时
    INIT_DELAYED_WORK(_work, _func)
     
     

    工作调度

    int schedule_work(struct work_struct *work) 
    //延迟调度
    int schedule_delayed_work(struct delay_work *dwork, unsigned long delay)

     

    刷新与取消

    //刷新工作队列
    void flush_scheduled_work(void)
    
    //取消延迟工作
    static inline int cancel_delayed_work(struct delayed_work *work)

    缺省工作队列示例

    每隔一秒进行一次调度,并将新的值传递到后执行队列中

    #include <linux/init.h>
    #include <linux/module.h>
    #include <linux/kernel.h>
    #include <linux/mm.h>
    #include <linux/in.h>
    #include <linux/inet.h>
    #include <linux/socket.h>
    #include <net/sock.h>
    #include <linux/kthread.h>
    #include <linux/sched.h>
    #include <linux/workqueue.h>
    
    #define BUF_SIZE 1024
    struct task_struct *main_task;
    
    struct my_work {
        struct work_struct w;
        int data;
    };
    static struct my_work real_work;
    
    static inline void sleep(unsigned sec)
    {
        __set_current_state(TASK_INTERRUPTIBLE);
        schedule_timeout(sec * HZ);
    }
    
    static void my_work_func(struct work_struct *work)
    {
        struct my_work *pwork;
        pwork = container_of(work, struct my_work, w);
    
        printk(KERN_NOTICE "index %d\n", pwork->data);
    }
    
    static int queue_work_(void *data)
    {
        int index = 0;
        INIT_WORK(&real_work.w, my_work_func);
    
        while (!kthread_should_stop()) {
            printk(KERN_NOTICE "server run %d\n", index);
            real_work.data = index;
    
            if (schedule_work(&real_work.w) == 0) {
                printk(KERN_NOTICE " work failed!\n");
            }
            index ++;
            sleep(1);
        }
    
        return 0;
    }
    
    static int model_init(void)
    {
        printk("init, workqueue \n");
        //task_struct init
        main_task = kthread_run(queue_work_,NULL,"queue_work");
    
        return 0;
    }
    static void model_exit(void)
    {
        printk("exit!\n");
        kthread_stop(main_task);
    
    }
    
    module_init(model_init);
    module_exit(model_exit);
    
    MODULE_LICENSE("GPL");
    MODULE_AUTHOR("wyong");
    

     使用dmesg查看打印输出如下

    [ 2369.599934] server run 0
    [ 2369.599938] index 0
    [ 2370.609331] server run 1
    [ 2370.609335] index 1
    [ 2371.632714] server run 2
    [ 2371.632716] index 2
    [ 2372.656413] server run 3
    [ 2372.656415] index 3
    [ 2373.680923] server run 4
    [ 2373.680927] index 4
    [ 2374.705357] server run 5
    [ 2374.705362] index 5
    [ 2375.729315] server run 6
    [ 2375.729320] index 6
    [ 2376.752834] server run 7
    [ 2376.752838] index 7
    [ 2377.777063] server run 8
    [ 2377.777069] index 8
    [ 2378.801040] server run 9
    [ 2378.801042] index 9
    [ 2379.827048] server run 10
    

     

    四、自定义工作队列

    函数含义与默认差不多

    create_workqueue(name) 
    
    int queue_work(struct workqueue_struct *wq, struct work_struct *work)
    
    int queue_delayed_work(struct workqueue_struct *wq,struct delayed_work *dwork, unsigned long delay)
    
    void flush_workqueue(struct workqueue_struct *wq)
    
    void destroy_workqueue(struct workqueue_struct *wq)
    

    自定义示例

    实验现象:10秒钟后执行延迟函数,使用dmesg 查看输出信息

    #include <linux/init.h>                                                                                                                  
    #include <linux/module.h>
    #include <linux/kernel.h>
    #include <linux/workqueue.h>
    
    static struct workqueue_struct *wq;                 /*声明一个工作队列*/
    static struct delayed_work d_work;                  /*声明一个延期工作实例*/
    
    //工作队列延迟处理函数
    void print_hello(struct work_struct *work)
    {
        printk("print workqueue` ...\n");
    }
    
    static int __init wq_init(void)
    {
        int ret = 0;
    
        wq = create_workqueue("test_wq"); //创建工作队列
        if (!wq) {
            printk("create workqueue failed \n");
            return -1; 
        }   
    
    
    	INIT_DELAYED_WORK(&d_work, print_hello);//动态延迟初始化工作队列
        ret = queue_delayed_work(wq, &d_work, msecs_to_jiffies(10000));  //向工作队列添加工作项
    
        return 0;
    }
    
    static void __exit wq_exit(void)
    {
        int ret = 0;
    
        printk("test_wy exit\n");
        ret = cancel_delayed_work(&d_work);             /*取消工作项*/
        flush_workqueue(wq);                            /*刷新工作队列*/
        destroy_workqueue(wq);                          /*销毁工作队列*/
    }
    
    module_init(wq_init);
    module_exit(wq_exit);
    MODULE_LICENSE("GPL");
    MODULE_AUTHOR("wyong");
    MODULE_DESCRIPTION("workqueue driver");
    
    

    Makefile文件 

    ifneq ($(KERNELRELEASE),)
    obj-m:=main.o
    else
    KERNELDIR:=/lib/modules/$(shell uname -r)/build
    PWD:=$(shell pwd)
    default:
            $(MAKE) -C $(KERNELDIR)  M=$(PWD) modules
    clean:
            rm -rf *.o *.mod.c *.mod.o *.ko
    endif
    

     

     

     

     


     

     

     

     

    展开全文
  • 【PP】工作中心(Work Center)

    万次阅读 2019-04-27 22:03:12
    工作中心是用于生产产品的生产资源,包括机器、人和设备,是各种生产或能力加工单元的总称。工作中心属于能力的范畴即计划的范畴,而不属于固定资产或者设备管理的范畴。一个工作中心可以是一台设备、一组功能相同的...

            工作中心是用于生产产品的生产资源,包括机器、人和设备,是各种生产或能力加工单元的总称。工作中心属于能力的范畴即计划的范畴,而不属于固定资产或者设备管理的范畴。一个工作中心可以是一台设备、一组功能相同的设备、一条自动生产线、一个班组、一块装配面积或者某种生产单一产品的封闭车间。对于外协工序,对应的工作中心则是一个协作单位的代号。除此之外,工作中心还可以反映成本范畴的概念。一个加工件的工艺路线报告中一般每一道工序对应一个工作中心,但有些情况,也可以几个连续工序对应同一个工作中心(这种情况往往出现在装配工作中心)。工艺经过每一个工作中心要发生费用,产生成本。这可通过工作中心的成本数据和工艺路线中相应的工时定额来计算。

    工作中心功能:

    1、可以做一些描述 Description;

    2、可以指定一些默认值(方便建立工艺路线的时候带入) Default values;

    3、可以排程 Scheduling;

    4、可以计算有效产能 Available capacity;

    5、可以计算成本 Costing;

    工作中心数据(CR01/CR02/CR03/CR05):

    1、General data基本数据

    ●描述:必输,方面人员去区分选择;

    ●工作中心类别:一般机器为主(0001)或者人工为主(0003);

    ●负责人员:班长或者组长,谁负责该工作中心,没什么其他意义;

    ●用途:默认009(所有任务单类型),若要使用群组任务清单类型需要后台自行定义,定义后建立的工作中心直接分配给工艺路线即可(虚拟工作中心),直到生产订单下达的时候才指定真正的工作中心;

    ●反冲:需要结合物料主数据中的功能使用(“MRP2”视图下的“反冲”);

           

    反冲使用的情况:不方便发料,价值比较低,使用比较频繁。

    ●标准值码:可以带出“关键值”(SAP规定最多六个),可以用来收集成本,可以记录相应的时间,可以维护角色(必输/可选);

    2、Default values for routing缺省值

    这里面定义会自动带入到工艺路线中。

    ●控制键值:通常设置PP01 ,勾选了“参考标示”,工艺路线中就无法更改(灰色),若该值永远固定,则建议勾选;     

    ●标准值的计量单位:这里设置了单位会自动带入到工艺路线中;

    这里对该页签不做过多解释,基本都是方面工艺路线的录入而设定的。

    3、Capacity dara能力

    ●能力类别:不用过于关注,该值会根据工作中心类别自动带出来;

    我们需要关注的是能力里的数据,双击进入下面的画面。

    ●能力计划员组:该能力的负责人,意义不大;

    ●工厂日历ID:该日历定义了该工作中心什么时候上班什么时候休息;

    ●活动版本:不同的版本记录不同的工作时间,不算产能分析该字段默认“1”即可;

    ●基本计量单位:以小时H来计量;

    ●开始、完成、休息时间:何时开始上班,何时下班,中间休息时间具体是何时,设定的比较粗;

    ●能力利用:比如正常上班8小时,实际的利用率是多少,一般设置100%(8小时都在上班);

    ●单项能力数量:计算的单位;

    ●能力:加工时间*能力利用*单项能力数量(例如上图8*100%*2 = 16);

    ●和有限计划相关:产能分析需要用到,不勾选即表示可以无限产能,勾选则不能超过上面的计划产能;

    ●过载:超负荷能力,比如设置150%,则可以16*150%的产能;

    ●长期计划:用到“长期计划”功能才需要勾选;

    4、 Scheduling data计划

    ●能力类别:同上面,会根据工作中心类别自动带出来;

    ●加工公式:产品经过该道工序的时候会消耗多少工时;

    5、Costing and Human Resources data成本核算

    如何去定义一个工作中心呢?

    1、定义工作中心类别

    主要关注的是“应用程序”:该工作中心可以用在什么地方。

    这里比如有一个“0007”我们比较熟悉了,可以用到之前讲到的重复制造里。

    2、定义字段选择

    字段必输/可选/隐藏的控制,这里无需多说了。

    3、定义任务清单用途

    这里“直达下达”栏位的意思是直达订单的下达之前,都可以使用这个工艺路线的工作中心,需要下达的话则需要重新指定需要的工作中心。

    4、标准值-定义标准值码

    “生成”的意思当你勾选后,保存的时候SAP自动会生成一段代码,系统会提高执行效率。

    那么其中的Z_001、Z_002、Z_003、Z_004四个参数是怎么定义的呢?

    那么工作中心中的公式就容易理解了:

    制造费用-人工 = 制造费用-人工 * 工序数量 / 基本数量
    制造费用-机器 = 制造费用-人工 * 工序数量 / 基本数量
    制造费用-能源 = 制造费用-人工 * 工序数量 / 基本数量
    制造费用-辅料 = 制造费用-人工 * 工序数量 / 基本数量

    制造费用-人工 * 工序数量 / 基本数量 = Z_001 * SAP_09 / SAP_08

    基本数量直接在工序主数据中可以找到,这里的工序数量一般要用生产订单来协助理解,正常不出意外,一般工序数量等于生产订单的数量。

    未完......

     

    展开全文
  • 解决SVN“Failed to run the WC DB work queue associated with”错误 SVN无法更新、提交代码,Clean Up错误 解决方案:清空svn的队列 SVN无法更新、提交代码,Clean Up错误 svn checkout 代码是出现如标题的错误,...

    解决SVN“Failed to run the WC DB work queue associated with”错误

    SVN无法更新、提交代码,Clean Up错误

    svn checkout 代码是出现如标题的错误,提示我clean up ,但是每次都clean up失败,于是网上查找了clean up 失败的解决方法,具体错误如下图所示:在这里插入图片描述
    在这里插入图片描述

    这里svn无法再次完成Clean Up了,猜测可能原因是因为上次cleanup中断后,导致SVN 工作队列占满导致无法清除。

    解决方案:清空svn的队列

    1.下载 sqlite3.exehttp://www.sqlite.org/download.html

    2.找到你项目的 .svn 文件,查看是否存在 wc.db

    3.将 sqlite3.exe 放到 .svn 的同级目录

    4.启动cmd执行

    sqlite3.exe .svn/wc.db "select * from work_queue"
    
    sqlite3.exe .svn/wc.db "delete from work_queue"
    

    在这里插入图片描述
    在这里插入图片描述

    5.执行Clean Up应该就可以了。

    展开全文
  • git在push到远程仓库的时候报错Updates were rejected because the remote contains work that you do 含义: 远程仓库的部分东西本地仓库没有,例如远程仓库有readme.md文档本地没有就会报错。 解决方法: 先拉取...
  • 1.下载sqlite3.exe,将下载好的sqlite3放到出问题的svn的根目录 .svn/sqlite3.exe; 2.使用window键+R,输入cmd回车,打开windows的命令行; 3.使用命令sqlite3 wc.db ...delete from work_queue...
  • 唐池科技-GetWork协议

    千次阅读 2018-07-26 09:53:41
    分解,那么每个数值的含义就很明确了: 00000001 // uint32, 块版本 c570c4764aadb3f09895619f549000b8b51a789e7f58ea750000709700000000 // uint256, 前向块Hash 103ca064f8c76c390683f8203043e91466a7fcc40e6...
  • 现在是北京时间2021年9月18号凌晨2点25分,项目9点封版,连夜加班该bug,我很困哈哈哈 进入正题 : ...报错信息是We're sorry but 项目名称 doesn't work properly without JavaScript enabled. Ple...
  • [work] shell中数组下标访问

    千次阅读 2018-10-28 09:26:24
    注意:echo的参数及其具体含义:  \c suppress trailing newline抑制尾随换行符  \n new line换行  \r carriage return回车  \t horizontal tab水平标签  \v vertical tab垂直标签  -n...
  • Linux中目录的rwx权限含义

    千次阅读 2020-04-03 10:36:31
    所谓的工作目录(work directory)就是你目前所在的目录啦!举例来说,当你登入Linux时, 你所在的家目录就是你当下的工作目录。而变换目录的指令是『cd』(change directory)啰! 大致的目录权限概念是这样,底下我们...
  • 工作队列(work queue)是Linux kernel中将工作推后执行的一种机制。这种机制和BH或Tasklets不同之处在于工作队列是把推后的工作交由一个内核线程去执行,因此工作队列的优势就在于它允许重新调度甚至睡眠。 工作...
  • word xml 各个标签含义

    千次阅读 2019-07-22 16:43:09
    <w:p> <!--表示一个段落--> <w:val > <!--表示一个值--> <w:r> <...--表示一个样式串,指明它包括的文本的显示样式,表示一个特定的文本格式-->...标签内的标签,...
  • 2.3 根据上述正则表达式的含义,可写出如下的表达式:"\d+\.?\d*"; 2.4 \d+匹配1次或者多次数字,注意这里不要写成*,因为即便是小数,小数点之前也得有一个数字;\.?这个是匹配小数点的,可能有,也可能没有...
  • 同一概念或/和相同科学内容的不同术语的矛盾含义通常存在于学科内部和学科之间。 我们通过引入学科内语义技术的概念,开始对科学知识的有意义的分类、搜索和开发的讨论。 G-work 分析框架被扩展到跨学科的科学研究...
  • Proof of work - 工作量证明

    万次阅读 多人点赞 2016-09-13 23:16:09
    转自: http://www.3says.com/article/621 ... http://www.8btc.com/the-proof-of-work-concept 起源 工作量证明(Proof Of Work,简称POW),简单理解就是一份证明,用来确认你
  • tomcat服务器中各个目录及文件夹的含义

    千次阅读 多人点赞 2019-09-26 15:49:19
    我们在设计Java Web项目的过程中,经常会用到tomcat服务器,所以我们也需要对...我们可以看到一共有bin,conf,lib,logs,temp,webapps,work, 一共7个文件夹,下面来对它们分别进行介绍: (1)bin目录 该目录...
  • 高通开发笔记---Yangtze worknote

    千次阅读 2016-11-24 08:27:40
     //具体的含义?  interrupt-names = "vbat-det-lo",  "vbat-det-hi",  "chgwdog",  "state-change",  "trkl-chg-on",  "fast-chg-on",  "chg-failed",  "chg-done";  };  2). qpnp_chg_hwinit@kernel/...
  • 在SAP中会将Work Center中的工时,费用等归结Cost Center中,对于这种关系几它们之间的数据传送关系,哪位可以介绍以下 或者如何维护Work Center and Rounting以及如何在两者之间建立联系,在Work Center and Rounting...
  • You define this in Customizing for Product Cost by Period or Product Cost by Order with the valuation variant for work in process and scrap. You can calculate production variances. For informational...
  • Java中tomcat下各个目录的含义

    千次阅读 2019-10-30 18:40:40
    bin、conf、lib、logs、temp、webapps、work
  • RIS 格式参考文献的参数含义

    千次阅读 多人点赞 2020-11-22 14:15:00
    AV Location in Archives BT This field maps to T2 for all reference types except for Whole Book and Unpublished Work references. It can contain alphanumeric characters. There is no practical limit to ...
  • ForkJoinPool一种ExecutorService的实现,运行ForkJoinTask任务,它采用了一种工作窃取(work-stealing)的机制。维护了WorkQueue的数组(2的整数次方),每个workQueue都有任务队列,并且用base、top指向任务队列队尾和...
  • Linux kernel 中的work queue原理

    千次阅读 2011-10-06 14:08:49
    先简单快速总结一下,更详细的剖析...分成两大部分,第一部分是用来执行work queue中每个节点上挂载的函数的内核线程,第二部分是从驱动程序的角度看work queue的使用。 第一部分 worker_thread内核线程 Linux
  • system load average的含义

    2020-03-18 15:50:35
    linux系统中的Load对当前CPU工作量的度量(WikiPedia: the system load is a measure of the amount of work that a computer system is doing)。也有简单的说是进程队列的长度。 Load Average 就是一段时间 (1 分钟...
  • 文件的读写执行权限比较好理解,但是目录的读写执行权限具体含义又是什么呢? 目录读权限:表示用户可以用ls命令将目录下的具体子目录和文件罗列出来。 示例 test1@ubuntu:/home/dyp930/work$ mkdir temp ...
  • 1、standFord parser (短语结构)各符号含义 ROOT:要处理文本的语句;IP:简单从句;NP:名词短语;VP:动词短语;PU:断句符,通常是句号、问号、感叹号等标点符号;LCP:方位词短语;PP:介词短语;CP:由‘的’...
  • //Do setup work here return { color: "black", size: "unisize" } }); 存在依赖的函数式定义 如果模块存在依赖:则第一个参数是依赖的名称数组;第二个参数是函数,在模块的所有依赖加载完毕后,该函数会...
  • 域名后缀含义

    2020-02-14 23:07:49
    域名后缀含义 .com 全球注册量第一,注册首选 .cn 中国企业和个人的互联网标识 .net 为企业树立全球化商业品牌 .xin 网络诚信专属域名 .ltd 有限公司简称,公司专属域名 .store 网上超市、便利网店的专属域名 .vip ...
  • 官方文档说明 硬件设备限制 ...CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS cl_uint 數據並行編程模型中所用全局和局部作業項 ID 的最大維數(參見 clEnqueueNDRangeKernel)。對於類型不是 CL_DEVICE_TYPE_CUSTO...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 46,790
精华内容 18,716
关键字:

work的含义