可以编辑的table antd

2023-11-17

版本一

效果图(有保存按钮 antd3)

在这里插入图片描述

代码

import React, { Component } from "react";
import { Form, Input, Button, Table, Divider, Popconfirm, Tooltip } from 'antd';
import "./targetform.less";

class TargetForm extends Component {
    state = {
        targetIp: this.props.targetIp,
        dataSource: [],
        count: 0,
    };

    componentDidMount() {
    }

    //添加一行
    handleAdd = () => {
        const { count, dataSource } = this.state;
        const newData = {
            key: count,
            name: "",
            example: "",
            save: false,
            editable: false
        };
        this.setState({
            dataSource: [...dataSource, newData],
            count: count + 1
        });
    };
    //编辑一行
    toggleEditable = (
        e,
        key,
        name
    ) => {
        let newData = [];
        newData = [...this.state.dataSource];
        const index = newData.findIndex(item => key === item.key);
        newData[index].save = false;
        newData[index].editable = false;
        this.setState({
            dataSource: newData
        });
    };
    //保存一行
    saveRow = (e, key) => {
        this.props["form"].validateFields(
            [
                `table[${key}].name`,
                `table[${key}].example`
            ],
            (err, values) => {
                if (!err) {
                    let newData = [];
                    newData = [...this.state.dataSource];
                    const index = newData.findIndex(item => key === item.key);
                    newData[index].save = true;
                    newData[index].editable = true;
                    this.setState({
                        dataSource: newData
                    });
                }
            }
        );
    };
    //删除一行
    handleDelete = (key) => {
        const newData = [...this.state.dataSource];
        this.setState({
            dataSource: newData.filter((item) => item.key !== key)
        });
    };
    //当行的值改变时
    handleFieldChange = (
        e,
        keyName,
        key
    ) => {
        let newData = [];
        newData = [...this.state.dataSource];
        const index = newData.findIndex(item => key === item.key);
        if (keyName === "name" || keyName === "example") {
            newData[index][keyName] = e.target.value;
        } else {
            newData[index][keyName] = e;
        }
        this.setState({
            dataSource: newData
        });
    };
    render() {
        const { targetIp, dataSource } = this.state
        const { getFieldDecorator } = this.props.form;
        const columns = [
            {
                title: "参数名",
                dataIndex: "name",
                width: '35%',
                render: (text, record, index) => {
                    if (!record.save) {
                        return (
                            <Form.Item key={index}>
                                {getFieldDecorator(`table[${record.key}].name`, {
                                    initialValue: text ? text : undefined,
                                    rules: [
                                        {
                                            required: true,
                                            message: "请输入参数名!",
                                            min: 1,
                                            max: 64
                                        }
                                    ]
                                })(
                                    <Input
                                        placeholder="请输入参数名"
                                        autoFocus
                                        onChange={e =>
                                            this.handleFieldChange(e, "name", record.key)
                                        }
                                    />
                                )}
                            </Form.Item>
                        );
                    }
                    return (
                        <Form.Item key={index}>
                            {getFieldDecorator(`table[${record.key}].name`, {
                                initialValue: text ? text : undefined
                            })(
                                <Tooltip placement="topLeft" title={text}>
                                    <span>{text.length > 10 ? text.substr(0, 10) + '...' : text}</span>
                                </Tooltip>
                            )}
                        </Form.Item>
                    );
                }
            },
            {
                title: "参数值",
                dataIndex: "example",
                width: '35%',
                render: (text, record, index) => {
                    if (!record.save) {
                        return (
                            <Form.Item key={index}>
                                {getFieldDecorator(`table[${record.key}].example`, {
                                    initialValue: text ? text : undefined,
                                    rules: [{ required: true, message: "请输入参数值!" }]
                                })(
                                    <Input
                                        placeholder="请输入参数值"
                                        autoFocus
                                        onChange={e =>
                                            this.handleFieldChange(e, "example", record.key)
                                        }
                                    />
                                )}
                            </Form.Item>
                        );
                    }
                    return (
                        <Form.Item key={index} >
                            {getFieldDecorator(`table[${record.key}].example`, {
                                initialValue: text ? text : undefined
                            })(
                                <Tooltip placement="topLeft" title={text}>
                                    <span>{text.length > 10 ? text.substr(0, 10) + '...' : text}</span>
                                </Tooltip>
                            )}
                        </Form.Item>
                    );
                }
            },
            {
                title: "操作",
                dataIndex: "operation",
                width: '30%',
                render: (text, record) => {
                    if (record.editable) {
                        return (
                            <span>
                                <a
                                    onClick={e =>
                                        this.toggleEditable(e, record.key, "removeheader")
                                    }
                                >
                                    编辑
                                </a>
                                <Divider type="vertical" />
                                <Popconfirm
                                    title="是否要删除此行?"
                                    onConfirm={() => this.handleDelete(record.key)}
                                    okText="确定" cancelText="取消"
                                >
                                    <a>删除</a>
                                </Popconfirm>
                            </span>
                        );
                    } else {
                        return (
                            <span>
                                <a
                                    onClick={e => {
                                        this.saveRow(e, record.key);
                                    }}
                                >
                                    保存
                                </a>
                                <Divider type="vertical" />
                                <Popconfirm
                                    title="是否要删除此行?"
                                    onConfirm={() => this.handleDelete(record.key)}
                                    okText="确定" cancelText="取消"
                                >
                                    <a>删除</a>
                                </Popconfirm>
                            </span>
                        );
                    }
                }
            }
        ];
        return (
            <Form  >
                <Form.Item label="目标系统" labelCol={{ span: 4 }}
                    wrapperCol={{ span: 14 }}
                    style={{ marginBottom: 10 }}
                >
                    {getFieldDecorator('ip', {
                        initialValue: targetIp ? targetIp : undefined,
                        rules: [{ required: true, message: '请输入目标系统IP地址!' }]
                    })(<Input placeholder="请输入目标系统IP地址" />)}
                </Form.Item>
                <span className="tabletop">请求头配置</span>
                <div >
                    <Table
                        className="target"
                        pagination={false}
                        columns={columns}
                        dataSource={dataSource}
                    />
                </div>
                <Button
                    style={{ width: "100%", marginTop: 16, marginBottom: 8 }}
                    type="dashed"
                    onClick={() => {
                        this.handleAdd();
                    }}
                    icon="plus"
                >
                    添加参数
                </Button>
            </Form>
        );
    }
}

export default Form.create()(TargetForm);

版本二

效果图(无保存按钮 antd4)

在这里插入图片描述

代码

import React, { Component } from 'react';
import { connect } from 'umi';
import styles from './index.less';
import { PlusOutlined } from '@ant-design/icons';
import {
  Drawer,
  Button, Form, Input, Table, Divider, Popconfirm, Tooltip, Select
} from 'antd';

class ActivationAfter extends Component {
  formRef = React.createRef();
  state = {
    dataSource: [],
    ValueList: [],
    businessList: [],
    valuetype: 0,
    ActivationAfterData: this.props.ActivationAfterData,
    lookType: true
  };
  componentDidMount() {
    this.getModelList();
    //请求业务规则列表
    this.quertBusinessList()
    this.echoData()
  }

  // 回显数据
  echoData = () => {
    const { ActivationAfterData } = this.props;
    console.log(ActivationAfterData);
    if (ActivationAfterData.businessRuleIds || ActivationAfterData.dataInfos) {
      this.formRef.current.setFieldsValue({
        'businessRule': ActivationAfterData.businessRuleIds ? ActivationAfterData.businessRuleIds.split(',') : []
      })
      this.setState({
        lookType: false,
        dataSource: this.getdataSource(ActivationAfterData.dataInfos),
      })
    }
  }
  // 回显处理表单数据
  getdataSource = (obj) => {
    let aa = []
    for (let key in obj) {
      let b = obj[key]
      aa.push({
        key: parseInt(this.randParamId()),
        name: key,
        type: b.type,
        value: b.value,
      })
    }
    return aa
  }

  // 通过类型查列表
  getTypeList = (key) => {
    const value = this.formRef.current.getFieldValue(`name_${key}`)
    let valueList = []
    if (value) {
      const { propertyList } = this.props;
      const typeName = propertyList.filter(item => {
        return item.id == value
      })[0].propertyTypeName
      const list = propertyList.filter(item => {
        return item.id !== value
      })
      valueList = list.filter(item => {
        return item.propertyTypeName == typeName
      })
    }
    return valueList
  }

  // 获取全部的模型数据
  getModelList = () => {
    const { dispatch } = this.props;
    dispatch({
      type: 'dataModel/fetch',
      payload: {
        modelId: window.sessionStorage.getItem('modelId'),
        sortType: this.state.sortType,
      },
    })
  };
  quertBusinessList() {
    const { dispatch } = this.props;
    const modelId = window.sessionStorage.getItem('modelId');
    const appId = window.sessionStorage.getItem('appId');
    dispatch({
      type: 'dataModel/queryBusinessList',
      payload: {
        modelId: modelId,
        appId: appId,
      },
      callback: (res) => {
        if (res.result && res.data.length !== 0) {
          let businessList = []
          businessList = res.data.map((item, index) => {
            return {
              key: index + 1,
              ruleCold: item.ruleCode,
              ruleName: item.ruleName,
              ruleType: item.ruleType,
              ruleId: item.ruleId,
              defaultRule: item.defaultRule
            }
          })
          sessionStorage.setItem('businessList', JSON.stringify(res.data))
          this.setState({
            businessList: businessList
          })
        }
      }
    })
  }

  // 关闭窗口
  onClose = () => {
    this.props.noticeonCloseDrawer();
  };
  // 处理活动后参数格式
  getStandDataInfos = (obj) => {
    let aa = {}
    let keyList = Object.keys(obj)
    let nameList = keyList.filter(item => {
      return item.indexOf('name') != -1
    })
    let list = []
    nameList.forEach(
      item => {
        list.push(item.substr(5,))
      }
    )
    list.forEach(item => {
      aa[obj[`name_${item}`]] = {
        type: obj[`type_${item}`],
        value: obj[`value_${item}`]
      }
    }
    )
    return aa
  }

  // 保存数据
  saveParams = () => {
    const { current } = this.formRef
    current.validateFields().then((values) => {
      const params = {
        dataInfos: this.getStandDataInfos(values),
        businessRuleIds: values.businessRule ? values.businessRule.join(',') : ''
      }
      this.props.getactiveAfterParams(params)
      this.props.noticeonCloseDrawer();
    });
  };
  //生成随机paramId
  randParamId = () => {
    let num = '';
    for (let i = 0; i < 13; i++) {
      const val = parseInt(Math.random() * 10, 10);
      if (i === 0 && val === 0) {
        i--;
        continue;
      }
      num += val;
    }
    return num;
  };

  // 格式化显示table
  getNameText = (value) => {
    const { propertyList } = this.props;
    let text = ''
    const target = propertyList.filter(item => {
      return item.id == value
    })
    text = target[0].name
    return text
  }
  //添加一行
  handleAdd = () => {
    const { dataSource } = this.state;
    const num = parseInt(this.randParamId())
    const newData = {
      key: num,
      type: '',
      value: '',
      name: '',
    };
    this.setState({
      dataSource: [...dataSource, newData],
      lookType: true
    });
  };
  //删除一行
  handleDelete = (key) => {
    const newData = [...this.state.dataSource];
    this.setState({
      dataSource: newData.filter((item) => item.key !== key)
    });
  };
  //当行的值改变时
  handleFieldChange = (
    e,
    keyName,
    key
  ) => {
    let newData = [];
    newData = [...this.state.dataSource];
    const index = newData.findIndex(item => key === item.key);
    if (keyName === 'value') {
      newData[index][keyName] = e.target.value;
    } else {
      newData[index][keyName] = e;
    }
    this.setState({
      dataSource: newData
    });
  };
  // 选择数据项
  handleNameChange = (value, formTypeName, formValueName) => {
    this.formRef.current.setFieldsValue({ [(() => formTypeName)()]: undefined })
    this.formRef.current.setFieldsValue({ [(() => formValueName)()]: undefined })
    const { propertyList } = this.props;
    const typeName = propertyList.filter(item => {
      return item.id == value
    })[0].propertyTypeName
    const list = propertyList.filter(item => {
      return item.id !== value
    })
    const valueList = list.filter(item => {
      return item.propertyTypeName == typeName
    })
    this.setState({
      ValueList: valueList
    })
  }
  handleTypeChange = (value, formValueName) => {
    this.formRef.current.setFieldsValue({ [(() => formValueName)()]: undefined })
    this.setState({
      valuetype: value
    })
  }
  render() {
    const { dataSource, ValueList, businessList, lookType } = this.state
    const { propertyList } = this.props
    const layout = {
      labelCol: { span: 4 },
      wrapperCol: { span: 12 },
    };
    const columns = [
      {
        title: '数据项',
        dataIndex: 'name',
        width: 200,
        render: (text, record, index) => {
          return (
            <Form.Item
              initialValue={text}
              key={index}
              name={`name_${record.key}`}
              rules={[{ required: true, message: '请输入' }]}
            >
              {
                propertyList ?
                  <Select
                    onChange={
                      (value) => {
                        this.handleNameChange(value, `type_${record.key}`, `value_${record.key}`)
                      }
                    }
                    placeholder="请选择"
                  >
                    {propertyList.map(item => (
                      <Select.Option key={item.id} >
                        {item.name}
                      </Select.Option>
                    ))}
                  </Select> : ''
              }
            </Form.Item>
          );
        }
      },
      {
        title: '操作方式',
        dataIndex: 'mode',
        width: 90,
        render: (text, record, index) => {
          return (
            <span>等于</span>
          );
        }
      },
      {
        title: '值类型',
        dataIndex: 'type',
        width: 120,
        render: (text, record, index) => {
          return (
            <Form.Item
              initialValue={text}
              key={index}
              name={`type_${record.key}`}
              rules={[{ required: true, message: '请输入' }]}
            >
              <Select
                onChange={(value) => {
                  this.handleTypeChange(value, `value_${record.key}`)
                }}
                placeholder="请选择"
              >
                <Select.Option value="fixed" >
                  固定值
                </Select.Option>
                <Select.Option value="dynamic" >
                  动态值
                </Select.Option>
              </Select>
            </Form.Item>
          );
        }
      },
      {
        title: '值',
        dataIndex: 'value',
        render: (text, record, index) => {
          return (
            <Form.Item
              initialValue={text}
              key={index}
              name={`value_${record.key}`}
              rules={[{ required: true, message: '请输入' }]}
            >
              {
                lookType ?
                  (this.formRef.current.getFieldValue(`type_${record.key}`) == 'fixed' ?
                    <Input
                      autoFocus
                      onChange={e =>
                        this.handleFieldChange(e, 'value', record.key)
                      }
                      placeholder="请输入参数值"
                    />
                    :
                    <Select
                      placeholder="请选择"
                    >
                      {this.getTypeList(record.key).map(item => (
                        <Select.Option key={item.id} >
                          {item.name}
                        </Select.Option>
                      ))}
                    </Select>)
                  :
                  (record.type == 'fixed' ?
                    <Input
                      autoFocus
                      onChange={e =>
                        this.handleFieldChange(e, 'value', record.key)
                      }
                      placeholder="请输入参数值"
                    />
                    :
                    <Select
                      placeholder="请选择"
                    >
                      {this.getTypeList(record.key).map(item => (
                        <Select.Option key={item.id} >
                          {item.name}
                        </Select.Option>
                      ))}
                    </Select>)
              }
            </Form.Item>
          );
        }
      },
      {
        title: '操作',
        width: 110,
        dataIndex: 'operation',
        render: (text, record) => {
          if (record.editable) {
            return (
              <span>
                <Popconfirm
                  cancelText="取消"
                  okText="确定"
                  onConfirm={() => this.handleDelete(record.key)} title="是否要删除此行?"
                >
                  <a>删除</a>
                </Popconfirm>
              </span>
            );
          } else {
            return (
              <span>
                <Popconfirm
                  cancelText="取消"
                  okText="确定"
                  onConfirm={() => this.handleDelete(record.key)} title="是否要删除此行?"
                >
                  <a>删除</a>
                </Popconfirm>
              </span>
            );
          }
        }
      }
    ];

    return (
      <Drawer
        bodyStyle={{ paddingBottom: 80 }}
        footer={
          <div style={{ textAlign: 'center' }}>
            <Button onClick={this.onClose} style={{ marginRight: 8 }}>
              取消
            </Button>
            <Button onClick={this.saveParams} style={{ marginRight: '15px' }} type="primary">
              保存
            </Button>
          </div>
        }
        onClose={() => this.onClose()}
        placement="right"
        title="自定义通知设置"
        visible
        width={720}
      >
        <Form ref={this.formRef}>
          <span className={styles.contentTitle}> 设置数据</span>
          <Table
            className={styles.target}
            columns={columns}
            dataSource={dataSource}
            pagination={false}
          />
          <Button
            icon={<PlusOutlined />}
            onClick={() => {
              this.handleAdd();
            }}
            style={{ width: '100%', marginTop: 16, marginBottom: 8 }}
            type="dashed"
          >
            新增数据
          </Button>
          <div className={styles.contentTop} ></div>
          <span className={styles.contentTitle}> 触发动作</span>
          <Form.Item label="执行业务规则"
            labelCol={{ span: 4 }}
            name="businessRule"
            wrapperCol={{ span: 14 }}
          >
            <Select
              allowClear
              mode="multiple"
              placeholder="请选择"
            >
              {businessList.map(item => (
                <Select.Option key={item.ruleId} >
                  {item.ruleName}
                </Select.Option>
              ))}
            </Select>
          </Form.Item>

        </Form>
      </Drawer>
    );
  }
}

export default connect(({ dataModel: { propertyList, attrList } }) => ({ propertyList, attrList }))(ActivationAfter);

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

可以编辑的table antd 的相关文章

  • 如何通过aws-sdk(javascript或node)获取s3存储桶大小

    我尝试使用 javascript nodejs aws sdk 查找 获取 s3 存储桶信息 但没有找到这样的 api 如何通过 aws sdk javascript 或 node api 获取 s3 存储桶大小 信息 每天一次向 Clou
  • 使用 npm 作为构建工具连接文件

    我最近发现我可以使用 npm 作为任务运行程序 而不是 gulp 或 grunt 到目前为止 一切都很棒 lint stylus jade uglify watch 等 但串联部分 我似乎无法实现 gulp 是这样的 gulp task s
  • 如果浏览器在 asp .net 中关闭,请从浏览器中注销?

    我的要求有点复杂 用户正在使用 Web 浏览器访问数据库 而在访问数据库时 如果用户关闭活动页面而不是注销会话 该会话需要自动注销 有人可以指导我如何做这个吗 我在母版页中使用了jquery onbeforeunload 我收到消息离开页面
  • 缓存 firestore 中 get 的第一个实现

    我希望 firestore 每次都先从缓存中获取数据 根据 Firestore 文档 传递 缓存 或 服务器 选项必须启用相同的功能 下面的例子 db collection cities where capital true get cac
  • Streamjs和linqjs有什么关系

    读完SICP后 我最近发现streamjs https github com dionyziz stream js 开发商参考linqjs http linqjs codeplex com 作为具有不同语法的替代实现 但我无法建立连接 St
  • 如何为 HTML5 音频元素制作加载栏?

    我正在尝试为 HTML5 音频元素制作一个加载栏 显示加载 缓冲的百分比 对于视频标签 可以使用以下方法进行计算 video buffered end 0 video duration 但我无法让它与音频标签一起使用 它只是返回一个固定值
  • jQuery 验证日期范围问题

    我的代码中有很多地方有成对的相关开始和结束日期字段 范围 我需要验证开始日期早于结束日期 我正在使用 jQuery 验证插件 这是我的代码 http jsfiddle net jinglesthula dESz2 http jsfiddle
  • 改进 D3 序列旭日示例

    This D3示例作为我的出发点 http bl ocks org kerryrodden 7090426 http bl ocks org kerryrodden 7090426 我想更改提供图表的数据 并且我做了以下新示例 http j
  • 如何将函数传递给 JavaScript Web Worker

    我想通过一个 或多个 函数传递postMessage 给网络工作者 因为我无法引用常规文件 为了启动 Web Worker 我将一个对象 URL 从 Blob 创建 传递给Worker构造函数 然后我传递一条消息 但到目前为止还没有在消息中
  • AngularJS 输入字段未从控制器内的 setTimeout 更新

    我正在使用 AngularJS 支持的页面 并且我需要在只读输入文本字段内显示正在运行的时钟 与data ng model 为了模拟运行的时钟 我使用了 JavaScript 调度程序setTimeout每 1000 毫秒调用一个函数 该函
  • 获得一次性绑定以适用于 ng-if

    这个问题已经被之前问过 https stackoverflow com questions 23969926 angular lazy one time binding for expressions 但我无法让该解决方案发挥作用 所以我想
  • JavaScript:预期的赋值或函数调用,却看到了一个表达式

    我正在使用 JSHint 来确保我的 JavaScript 是 严格的 但我收到以下错误 预期是赋值或函数调用 但看到的是表达式 关于以下代码 var str A B C D var data var strArr str split fo
  • 由于固定导航,增加了 FancyBox v2 的顶部和底部边距

    我目前正在开发一个网站 该网站将来将具有响应能力 该网站主要由图像组成 单击这些图像会加载到 FancyBox 中 FancyBox v2 现在具有响应能力 因此可以在屏幕尺寸发生变化时重新调整图像等的大小 作为我设计的一部分 我有两个固定
  • JavaScript 访问密码字段值是否被视为存在安全风险?

    如果安全 正确地存储密码是良好的风格和安全性 那么对于要求用户输入密码的网页来说不应该也是如此吗 考虑这个例子
  • 如何生成 JavaScript 堆栈跟踪? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 关于如何以跨浏览器的方式在 javascript 中生成堆栈跟踪有什么建议吗 较新的浏览器 Chrome 和 Firefox 公开了一个允
  • 如何修复 getImageData() 错误画布已被跨源数据污染?

    我的代码在本地主机上运行得很好 但在网站上却不起作用 我从控制台收到此错误 对于这一行 getImageData x y 1 1 data Uncaught SecurityError Failed to execute getImageD
  • 数字和小数的输入掩码

    在测试我的程序后 我发现了以下错误 我在 sqlserver 中的表包含 价格数字 6 2 我的程序的用户输入价格 555 00 就很好了 但是当他输入 555555 时 这是错误的 所以我需要指定掩码 其中尾数是可选的 0 到 999 小
  • 跨浏览器:禁用输入字段的不同行为(文本可以/不能复制)

    我有一个被禁用的输入 html 字段 在某些浏览器 Chrome Edge Internet Explorer 和 Opera 中可以选择并复制文本 但至少在 Firefox 中这是不可能的 您可以通过在不同浏览器中执行以下代码来测试
  • 如何设置 Firebase 用户的显示名称?

    根据Firebase网站上的JS Auth文档 它只展示了如何获取 displayName 以及如何更新 displayName 所以我尝试更新它 但这有点不合逻辑 因为你怎么能在不创建某些东西的情况下更新它呢 所以我的问题是 如何设置注册
  • NodeJS:如何获取服务器的端口?

    您经常会看到 Node 的示例 hello world 代码 它创建一个 Http Server 开始侦听端口 然后执行以下操作 console log Server is listening on port 8000 但理想情况下你会想要

随机推荐

  • 【机器学习】SMO算法

    1 SMO基础概念 将原始最优化问题转化成了其对偶问题 因为对偶问题是一个凸二次规划问题 这样的凸二次规划问题具有全局最优解 其中 xi yi xi yi 表示训练样本数据 xixi为样本特征 yi 1 1 yi 1 1 为样本标签 C为惩
  • 中国货币超发严重 去年新增货币占全球近一半

    提要 2009年以来 中国已成为目前全球最大的 印钞机 2012年 全球新增货币供应量中国占近一半 21世纪网评估发现 均衡人均收入差异后 中国的经济货币化程度高居全球前列 截至2012年末 中国M2余额达到人民币97 42万亿元 居世界第
  • JS考点

    JavaScript 1 原始值和引用值类型及区别 原始值即存在栈中的数据 包含symbol number string null undefined boolean类型 引用值即存在堆中的对象 对象地址 指针 存在栈中 指向堆中存储的数据
  • 2021-07-25

    神经网络 M P神经元 感知机 感知机 神经网络 M P神经元 1 M P神经元 模拟生物行为的数学模型 接手n个输入 来自其他的神经元 并给各个输入赋予权重计算加权和 再跟自己特有的阀值 比较 通常用减法 最后经过激活函数 模拟 抑制 和
  • Stable Diffusion Base Model from safetensors transfer to diffusers

    Steps File Setup Clone the ControlNet model repo from HF into a folder like hf controlnet model git clone https huggingf
  • Qt 中父子关系使用总结

    背景 Qt 中到父子关系和类的继承无关 仅表示对象间到从属关系 继承自 QObject 的对象在构造时需要指定父对象指针 include
  • 计算机基础知识+Java语言基础 +JAVA学习笔记-DAY01

    计算机基础知识 01 01 计算机概述 了解 A 什么是计算机 计算机在生活中的应用举例 计算机 Computer 全称 电子计算机 俗称电脑 是一种能够按照程序运行 自动 高速处理海量数据的现代化智能电子设备 由硬件和软件所组成 没有安装
  • Cent OS6.5 安装nodeJS(分分钟搞定)

    第一步 下载 cd opt wget https nodejs org dist v7 5 0 node v7 5 0 linux x64 tar xz 第二步 解压缩文件包 xz d node v7 5 0 linux x64 tar x
  • hive原理与源码分析-hive源码架构与理论(一)

    什么是Hive 数据仓库 存储 查询 分析大规模数据 SQL语言 简单易用的类SQL查询语言 编程模型 允许开发者自定义UDF Transform Mapper Reducer 来更简单地完成复杂MapReduce无法完成的工作 数据格式
  • 运放增加输出电流

    功率输出模块 采用三极管9012 9013来进行双向扩流以提高其带载能力 可以完全满足发挥部分所要求的稳幅输出能力 当负载变化时 其输出电压幅度变化小于3 如图所示 集成运放的扩流和扩压 一 集成运放的扩流 在集成运放的输出端再加一级互补对
  • k8s-client(java)从6.0.1升级到11.0.0出现patch问题may not be specified for non-apply patch/cannot unmarshal...

    背景 kubernetes client java升级 复杂的patch出现各种问题 并且没有找到解决方案 经过研究 测试 找到了解决方案 希望能帮助到使用kubernetes client java客户端的同学 patch方法调用出现异常
  • IEEE 1471(ISO/IEC/IEEE 42010)架构描述方法

    ISO IEC IEEE 42010 架构描述方法 关于 背景 架构描述 利益相关者和关注点 架构视图和架构观点 架构模型 架构关系 架构原理 关于 本文对软件体系架构的描述方法的研究基于 ISO IEC IEEE 42010 ISO IE
  • unity ethan_响应式网页设计的挑战,Ethan Marcotte

    unity ethan In this episode of the Versioning Show David and Tim are joined by Ethan Marcotte a well known designer who
  • c语言设计(TVI)地铁自动售票机---@颜麓

    设计TVI 地铁自动售票机 机软件 输入站数 计算费用 计费规则 6站2元 7 10站3元 11站以上为4元 输入钱数 计算找零 找零时优先找回面额大的钞票 找零方式为各种面额张数 可识别面额 100 50 20 10 5 1 includ
  • Sentinel整合Ribbon/OpenFeign,Sentinel自定义限流熔断

    Sentinel服务熔断环境搭建 服务熔断 应对微服务雪崩效应的一种链路保护机制 类似保险丝 需要完成Sentinel整合Ribbon openFeign 所以我们先要搭建环境 那么先从整合Ribbon开始 环境搭建 为了演示操作 所以在这
  • DBeaver改成英语

    DBeaver改成英语 安装目录中有个dbeaver ini文件 追加 Duser language en可以改回英文 有些数据库术语翻译后反而不太容易理解
  • java获取唯一时间戳Id.多线程保证唯一性

    工程里有获取唯一时间戳作为id的需求 想了想用乐观锁cas实现 自旋 cas原子性操作获得了绝对唯一的时间戳 系统时间 纳秒版本 单机有效 不能分布式调用 public class AtomicTimeStamp private Atomi
  • Anaconda的安装与环境配置

    这里简单的记录一下Anaconda的安装过程 没有干货 只是记录 但也看了就会 下载安装包 这里有两个下载地址 分别是官网和清华镜像源 推荐清华镜像 下的快 官网下半天还可能失败 无论是哪个下载地址 找到对应你系统的安装程序下载即可 官网
  • Ubuntu下安装JDK图文教程详解

    操作系统 Ubuntu 11 10 我们选择的是jdk1 6 0 30版本 安装文件名为jdk 6u30 linux i586 bin 1 复制jdk到安装目录 1 假设jdk安装文件在桌面 我们指定的安装目录是 usr local jav
  • 可以编辑的table antd

    版本一 效果图 有保存按钮 antd3 代码 import React Component from react import Form Input Button Table Divider Popconfirm Tooltip from