这算法里total cost s是什么
时间: 2024-03-15 17:42:41 浏览: 64
在k-medoids算法中,total cost s是指所有数据点到其所属簇的中心点(即代表对象)的距离之和,也可以理解为所有簇内对象之间的距离之和。在算法的迭代过程中,通过不断更新代表对象,可以使得total cost s不断减小,达到收敛的目的。因此,k-medoids算法的目标是将所有数据点分到k个簇中,使得total cost s最小。
相关问题
ORDERS表中的TotalCost列的数据类型为NUMBER(35,2),怎么使用DBMS_CRYPTO以618272为密钥加密TotalCost列
您可以使用以下SQL语句来使用DBMS_CRYPTO加密TotalCost列:
```
UPDATE ORDERS
SET TotalCost = DBMS_CRYPTO.ENCRYPT(
UTL_RAW.CAST_TO_RAW(TotalCost),
DBMS_CRYPTO.TRIPEDES_CBC,
UTL_RAW.CAST_TO_RAW('618272'),
UTL_RAW.CAST_TO_RAW('0000000000000000')
)
WHERE TotalCost IS NOT NULL;
```
这里使用TRIPLEDES_CBC加密算法,并将618272作为密钥传递给DBMS_CRYPTO。由于TotalCost列的数据类型为NUMBER,我们需要先将其转换为RAW类型。在加密过程中,还需要指定一个初始化向量(IV),这里我们选择了一个全0的IV。
需要注意的是,加密后的TotalCost列将无法进行常规的数值计算,必须先进行解密才能得到原始的数值。因此,您需要在使用加密数据之前先对其进行解密。
改正:ALTER TABLE ORDERS MODIFY TotalCost NUMBER(35,2);DECLARE i_key RAW(32); BEGIN i_key :=UTL_RAW.cast_to_raw('618272'); UPDATE ORDERS SET TotalCost = DBMS_CRYPTO.ENCRYPT( src=>UTL_RAW.CAST_TO_RAW(TotalCost), typ=>DBMS_CRYPTO.AES_CBC_PKCS5, key=>i_key, iv=>NULL ) WHERE TotalCost IS NOT NULL; END; /
修改:ALTER TABLE ORDERS MODIFY TotalCost NUMBER(35,2);
DECLARE
i_key RAW(32);
BEGIN
i_key := UTL_RAW.cast_to_raw('618272');
UPDATE ORDERS
SET TotalCost = DBMS_CRYPTO.ENCRYPT(
src => UTL_RAW.CAST_TO_RAW(TO_CHAR(TotalCost)),
typ => DBMS_CRYPTO.AES_CBC_PKCS5,
key => i_key,
iv => NULL
)
WHERE TotalCost IS NOT NULL;
END; /
这个修改过的代码将 TotalCost 列中的值进行了加密,并将其更新回数据库。在这里,我们使用 AES_CBC_PKCS5 加密算法对 TotalCost 进行加密,使用的密钥是 '618272'。注意,我们需要通过 TO_CHAR 函数将 TotalCost 转换为字符串类型,以便进行加密。
阅读全文