Heim Datenbank MySQL-Tutorial Hierarchyid数据类型

Hierarchyid数据类型

Jun 07, 2016 pm 02:56 PM
关系 uns 数据 数据库 类型

以往我们在关系数据库中建立树状结构的时候,通常使用ID+ParentID来实现两条 纪录间的父子关系。但这种方式只能标示其相对位置。解决这类问题在SqlServer2005出现之前通常是采用游标来操作,但熟悉数据库内部机制的人都 知道使用游标带来的性能问题和其他问

以往我们在关系数据库中建立树状结构的时候,通常使用ID+ParentID来实现两条 纪录间的父子关系。但这种方式只能标示其相对位置。解决这类问题在SqlServer2005出现之前通常是采用游标来操作,但熟悉数据库内部机制的人都 知道使用游标带来的性能问题和其他问题是比较严重的。

到了SqlServer2005下,可以选择用CTE来做递归查询,这种方式查询比 较简练,但由于数据库内部是采用递归查询的方式,其效率依旧不高;为了能够实现既简练又高效的查询,通常的做法是增加冗余字段,比如增加一个"Path" 字段,查询时用模糊查询来进行左匹配。对Path建索引后,这种查询的效率还是相当高的,因此这种方式也是一种常规的设计方式;

SQL SERVER 2008引入了新的hierarchyid数据类型,可以用它来做本地存储并且在树层次结构中管理其位置.只用这个函数能简洁地表示层次结构中的位置.该 函数提供的一些内置的函数方法可以操作和遍历层次结构,使得存储和查询分层数据更为容易,而不需要像那样通过CTE递归来获得.

Hierarchyid类型其实是一个CLR自定义数据类型依次打开:数据库->系统数据库->master->可编程性->类型->系统数据类型->CLR数据类型->hierarchyid,可以看到该数据类型.

于hierarchyid有关的一些函数主要有:

  • GetAncestor :取得某一个级别的祖先
  • GetDescendant :取得某一个级别的子代
  • GetLevel :取得级别
  • GetRoot :取得根
  • IsDescendantOf :判断某个节点是否为某个节点的子代
  • Parse :将字符串转换为hierarchyid。该字符串的格式通常都是/1/这样的
  • Read :Read 从传入的BinaryReader 读取SqlHierarchyId 的二进制表示形式,并将SqlHierarchyId 对象设置为该值。不能使用Transact-SQL 调用Read。请改为使用CAST 或CONVERT。
  • GetReparentedValue :可以用来移动节点(或者子树)
  • ToString :将hierarchyid转换为字符串,与parse正好相反
  • Write : 将SqlHierarchyId 的二进制表示形式写出到传入的BinaryWriter 中。无法通过使用Transact-SQL 来调用Write。请改为使用CAST 或CONVERT。

hierarchyid 数据类型的值表示树层次结构中的位置。hierarchyid 的值具有以下属性:

  • 非常紧凑

    在具有 n 个节点的树中,表示一个节点所需的平均位数取决于平均端数(节点的平均子级数)。端数较小时 (0-7),大小约为 6*logAn 位,其中 A 是平均端数。对于平均端数为 6 级、包含 100,000 个人的组织层次结构,一个节点大约占 38 位。存储时,此值向上舍入为 40 位,即 5 字节。

  • 按深度优先顺序进行比较

    给定两个 hierarchyid 值 aba 表示在对树进行深度优先遍历时,先找到 a,后找到 b。hierarchyid 数据类型的索引按深度优先顺序排序,在深度优先遍历中相邻的节点的存储位置也相邻。例如,一条记录的子级的存储位置与该记录的存储位置是相邻的。

  • 支持任意插入和删除

    通过使用 GetDescendant 方法,始终可以在任意给定节点的右侧、左侧或任意两个同级节点之间生成同级节点。在层次结构中插入或删除任意数目的节点时,该比较属性保持不变。大多数插 入和删除操作都保留了紧凑性属性。但是,对于在两个节点之间执行的插入操作,所产生的 hierarchyid 值的表示形式在紧凑性方面将稍微降低。

hierarchyid 数据类型具有以下局限性:

  • 类 型为 hierarchyid 的列不会自动表示树。由应用程序来生成和分配 hierarchyid 值,使行与行之间的所需关系反映在这些值中。一些应用程序甚至可能不需要用类型为 hierarchyid 的列来表示树。可能这些值为对其他表中定义的层次结构中位置的引用。

  • 由应用程序来管理生成和分配 hierarchyid 值时的并发情况。不能保证列中的 hierarchyid 值是唯一的,除非应用程序使用唯一键约束或应用程序自身通过自己的逻辑来强制实现唯一性。

  • 由 hierarchyid 值表示的层次结构关系不是像外键关系那样强制实现的。可能会出现下面这种层次结构关系而且有时这种关系是合理的:A 具有子级 B,然后删除了 A,导致 B 与一条不存在的记录之间存在关系。如果这种行为不可接受,应用程序在删除父级之前必须先查询其是否有后代。

用于对分层数据进行索引的策略有两种:

  • 深度优先

    深度优先索引,子树中各行的存储位置相邻。例如,一位经理管理的所有雇员都存储在其经理的记录附近。

Nodes are stored together.
  • 广度优先

    广度优先将层次结构中每个级别的各行存储在一起。例如,同一经理直属的各雇员的记录存储在相邻位置。

Each hierarchy level is stored together.

例如下面的例子是一个职员表,数据有如下关系:

Scott

|

Mark Ravi

| |

Ben Laura Vijay Frank James

<span>Use</span> AdventureWorksLT <span>Go</span> --Scheme Creation <span>Create</span> <span>Schema</span> HumanResources <span>Go</span> --<span>Table</span> Creation <span>CREATE</span> <span>TABLE</span> HumanResources.EmployeeDemo 
(
OrgNode HIERARCHYID,
EmployeeID <span>INT</span>,
LoginID <span>VARCHAR</span>(100),
Title <span>VARCHAR</span>(200),
HireDate DATETIME
) <span>Go</span> --<span>Index</span> Creation <span>CREATE</span> <span>UNIQUE</span> <span>CLUSTERED</span> <span>INDEX</span> idxEmployeeDemo <span>ON</span> HumanResources.EmployeeDemo (OrgNode,EmployeeID)
Nach dem Login kopieren
下面插入一些数据
SERT HumanResources.EmployeeDemo (OrgNode, EmployeeID, LoginID, Title, HireDate)  
LUES (hierarchyid::GetRoot(), 1,<span>'adventure-works\scott'</span>, <span>'CEO'</span>, <span>'3/11/05'</span>) ; 
      
CLARE @Manager hierarchyid    
LECT @Manager = hierarchyid::GetRoot() <span>FROM</span> HumanResources.EmployeeDemo; 
SERT HumanResources.EmployeeDemo (OrgNode, EmployeeID, LoginID, Title, HireDate)     
LUES (@Manager.GetDescendant(<span>NULL</span>,<span>NULL</span>), 2, <span>'adventure-works\Mark'</span>, <span>'CTO'</span>, <span>'4/05/07'</span>)       
 


CLARE @Manager hierarchyid 
CLARE @FirstChild hierarchyid  
LECT @Manager = hierarchyid::GetRoot() <span>FROM</span> HumanResources.EmployeeDemo; 
lect @FirstChild = @Manager.GetDescendant(<span>NULL</span>,<span>NULL</span>)        
SERT HumanResources.EmployeeDemo (OrgNode, EmployeeID, LoginID, Title, HireDate)        
LUES (@Manager.GetDescendant(@FirstChild,<span>NULL</span>), 3, <span>'adventure-works\ravi'</span>, <span>'Director Marketing'</span>, <span>'4/08/07'</span>)        

           
Insert the <span>First</span> Descendant <span>of</span> a Child Node    
CLARE @Manager hierarchyid     
LECT @Manager = <span>CAST</span>(<span>'/1/'</span> <span>AS</span> hierarchyid)       
SERT HumanResources.EmployeeDemo (OrgNode, EmployeeID, LoginID, Title, HireDate) 
LUES (@Manager.GetDescendant(<span>NULL</span>, <span>NULL</span>),45, <span>'adventure-works\Ben'</span>,<span>'Application Developer'</span>, <span>'6/11/07'</span>) ;         

  
Insert the <span>Second</span> Descendant <span>of</span> a Child Node 
CLARE @Manager hierarchyid        
CLARE @FirstChild hierarchyid         
LECT @Manager = <span>CAST</span>(<span>'/1/'</span> <span>AS</span> hierarchyid)   
LECT @FirstChild = @Manager.GetDescendant(<span>NULL</span>,<span>NULL</span>)    

SERT HumanResources.EmployeeDemo (OrgNode, EmployeeID, LoginID, Title, HireDate)      
LUES (@Manager.GetDescendant(@FirstChild, <span>NULL</span>),55, <span>'adventure-works\Laura'</span>,<span>'Trainee Developer'</span>, <span>'6/11/07'</span>) ;           

           
Insert the <span>first</span> node who <span>is</span> the Descendant <span>of</span> Director Marketing      
CLARE @Manager hierarchyid     
CLARE @FirstChild hierarchyid     
LECT @Manager = <span>CAST</span>(<span>'/2/'</span> <span>AS</span> hierarchyid)          

SERT HumanResources.EmployeeDemo (OrgNode, EmployeeID, LoginID, Title, HireDate)   
LUES (@Manager.GetDescendant(<span>NULL</span>, <span>NULL</span>),551, <span>'adventure-works\frank'</span>,<span>'Trainee Sales Exec.'</span>, <span>'12/11/07'</span>) ;        

          
Insert the <span>second</span> node who <span>is</span> the Descendant <span>of</span> Director Marketing     
CLARE @Manager hierarchyid           
CLARE @FirstChild hierarchyid        
LECT @Manager = <span>CAST</span>(<span>'/2/'</span> <span>AS</span> hierarchyid)   
LECT @FirstChild = @Manager.GetDescendant(<span>NULL</span>,<span>NULL</span>)
SERT HumanResources.EmployeeDemo (OrgNode, EmployeeID, LoginID, Title, HireDate) 
LUES (@Manager.GetDescendant(@FirstChild, <span>NULL</span>),531, <span>'adventure-works\vijay'</span>,<span>'Manager Industrial Sales'</span>, <span>'12/09/06'</span>) ;         

    
Insert the third node who <span>is</span> the Descendant <span>of</span> Director Marketing <span>in</span> <span>between</span> 2 existing descendants    
CLARE @Manager hierarchyid    
CLARE @FirstChild hierarchyid      
CLARE @SecondChild hierarchyid     
LECT @Manager = <span>CAST</span>(<span>'/2/'</span> <span>AS</span> hierarchyid)          
LECT @FirstChild = @Manager.GetDescendant(<span>NULL</span>,<span>NULL</span>)   
LECT @SecondChild = @Manager.GetDescendant(@FirstChild,<span>NULL</span>)   
SERT HumanResources.EmployeeDemo (OrgNode, EmployeeID, LoginID, Title, HireDate)  
LUES (@Manager.GetDescendant(@FirstChild, @SecondChild),543, <span>'adventure-works\james'</span>,<span>'Manager Consumer Sales'</span>, <span>'12/04/06'</span>) ;           
Nach dem Login kopieren

Hierarchyid字段类型提供了一系列相关查询函数,可以方便的查询父子关系数据。下面我们查询下数据
<span>DECLARE</span> @TID hierarchyid <span>SELECT</span> @TID=OrgNode <span>FROM</span> HumanResources.EmployeeDemo <span>WHERE</span> title=<span>'cto'</span> <span>SELECT</span> *, OrgNode.GetLevel() <span>as</span> 层次,OrgNode.ToString() <span>as</span> 路径 <span>FROM</span> HumanResources.EmployeeDemo <span>WHERE</span> @TID.IsDescendantOf(OrgNode)=1 <span>SELECT</span> *, OrgNode.GetLevel() <span>as</span> 层次,OrgNode.ToString() <span>as</span> 路径 <span>FROM</span> HumanResources.EmployeeDemo <span>WHERE</span> OrgNode.IsDescendantOf(@TID)=1 
Nach dem Login kopieren
 
Nach dem Login kopieren
Nach dem Login kopieren
<img src="/static/imghw/default1.png"  data-src="http://www.68idc.cn/help/uploads/allimg/151109/1024114a8-2.png"  class="lazy"  title="image" alt="image"    style="max-width:90%"  style="max-width:90%" /> 
Nach dem Login kopieren
下面另外附几个操作的存储过程:
  • 向表里插入记录
<span>SET</span> QUOTED_IDENTIFIER <span>ON</span> <span>GO</span> --<span>Use</span> Serializable <span>Transaction</span> <span>CREATE</span> <span>PROCEDURE</span> [dbo].[AddEmployee](@ManagerID hierarchyid, @EmpID <span>int</span>,
@LogID <span>varchar</span>(100), @JobTitle <span>as</span> <span>varchar</span>(200), @JoiningDate datetime) <span>AS</span> <span>BEGIN</span> <span>DECLARE</span> @LastChild hierarchyid <span>SET</span> <span>TRANSACTION</span> <span>ISOLATION</span> <span>LEVEL</span> SERIALIZABLE <span>BEGIN</span> <span>TRANSACTION</span> <span>SELECT</span> @LastChild = <span>Max</span>(OrgNode) <span>From</span> HumanResources.EmployeeDemo <span>WHERE</span> OrgNode = @ManagerID 
INSERT HumanResources.EmployeeDemo (OrgNode, EmployeeID, LoginID, Title, HireDate) <span>VALUES</span>(@LastChild, @EmpID,@LogID , @JobTitle, @JoiningDate) <span>COMMIT</span> <span>END</span> ;
Nach dem Login kopieren
  • 移动层级关系
    Nach dem Login kopieren
<span>CREATE</span> <span>PROCEDURE</span> MoveOrg(@oldMgr nvarchar(256), @newMgr nvarchar(256) ) <span>AS</span> <span>BEGIN</span> <span>DECLARE</span> @nold HierarchyID <span>DECLARE</span> @nnew HierarchyID <span>SELECT</span> @nold = OrgNode <span>FROM</span> HumanResources.EmployeeDemo <span>WHERE</span> LoginID = @oldMgr ; <span>SET</span> <span>TRANSACTION</span> <span>ISOLATION</span> <span>LEVEL</span> SERIALIZABLE <span>BEGIN</span> <span>TRANSACTION</span> <span>SELECT</span> @nnew = OrgNode <span>FROM</span> HumanResources.EmployeeDemo <span>WHERE</span> LoginID = @newMgr ; <span>SELECT</span> @nnew = @nnew.GetDescendant(<span>max</span>(OrgNode), <span>NULL</span>) <span>FROM</span> HumanResources.EmployeeDemo <span>WHERE</span> OrgNode.GetAncestor(1)=@nnew ; <span>UPDATE</span> HumanResources.EmployeeDemo <span>SET</span> OrgNode = OrgNode.GetReparentedValue(@nold, @nnew) <span>WHERE</span> @nold.IsDescendantOf(OrgNode) = 1 <span>COMMIT</span> <span>TRANSACTION</span> <span>END</span> 
Nach dem Login kopieren

  • 获取最大的子节点,传递给GetDescendant() 函数获得新的子节点
<span>Create</span> <span>Function</span> GetMyMaxChild(@ManagerID <span>as</span> BigInt) <span>Returns</span> HierarchyID <span>BEGIN</span> <span>Declare</span> @ManagerNode HierarchyID <span>Declare</span> @MaxChild HierarchyID 
 --<span>Get</span> the ManagerNode <span>Select</span> @ManagerNode = OrgNode <span>from</span> HumanResources.EmployeeDemo <span>Where</span> EmployeeID = @ManagerID 
 --<span>Get</span> the <span>Max</span> Child <span>Select</span> @MaxChild = <span>Max</span>(OrgNode) <span>from</span> HumanResources.EmployeeDemo <span>Where</span> OrgNode.GetAncestor(1) = @ManagerNode 
--<span>Return</span> the <span>Value</span> <span>RETURN</span> @MaxChild <span>END</span> 
Nach dem Login kopieren
 
Nach dem Login kopieren
Nach dem Login kopieren
http://msdn.microsoft.com/zh-cn/library/bb677173.aspx
Nach dem Login kopieren

http://nibblersrevenge.cluss.de/archive/2009/05/31/how-to-use-hierarchyid-in-linqtosql-or-entity-framework-mssql.aspx

http://www.cnblogs.com/downmoon/archive/2011/05/03/2035259.html

<无>
Use AdventureWorksLT 
Go  
--Scheme Creation 
Create Schema HumanResources 
Go  
--Table Creation 
CREATE TABLE HumanResources.EmployeeDemo 
(
OrgNode HIERARCHYID,
EmployeeID INT,
LoginID VARCHAR(100),
Title VARCHAR(200),
HireDate DATETIME
)
Go 
--Index Creation 
CREATE UNIQUE CLUSTERED INDEX idxEmployeeDemo 
ON HumanResources.EmployeeDemo (OrgNode,EmployeeID)
Nach dem Login kopieren
SERT HumanResources.EmployeeDemo (OrgNode, EmployeeID, LoginID, Title, HireDate)  
LUES (hierarchyid::GetRoot(), 1,'adventure-works\scott', 'CEO', '3/11/05') ; 
      
CLARE @Manager hierarchyid    
LECT @Manager = hierarchyid::GetRoot() FROM HumanResources.EmployeeDemo; 
SERT HumanResources.EmployeeDemo (OrgNode, EmployeeID, LoginID, Title, HireDate)     
LUES (@Manager.GetDescendant(NULL,NULL), 2, 'adventure-works\Mark', 'CTO', '4/05/07')       
 


CLARE @Manager hierarchyid 
CLARE @FirstChild hierarchyid  
LECT @Manager = hierarchyid::GetRoot() FROM HumanResources.EmployeeDemo; 
lect @FirstChild = @Manager.GetDescendant(NULL,NULL)        
SERT HumanResources.EmployeeDemo (OrgNode, EmployeeID, LoginID, Title, HireDate)        
LUES (@Manager.GetDescendant(@FirstChild,NULL), 3, 'adventure-works\ravi', 'Director Marketing', '4/08/07')        

           
Insert the First Descendant of a Child Node    
CLARE @Manager hierarchyid     
LECT @Manager = CAST('/1/' AS hierarchyid)       
SERT HumanResources.EmployeeDemo (OrgNode, EmployeeID, LoginID, Title, HireDate) 
LUES (@Manager.GetDescendant(NULL, NULL),45,   'adventure-works\Ben','Application Developer', '6/11/07') ;         

  
Insert the Second Descendant of a Child Node 
CLARE @Manager hierarchyid        
CLARE @FirstChild hierarchyid         
LECT @Manager = CAST('/1/' AS hierarchyid)   
LECT @FirstChild = @Manager.GetDescendant(NULL,NULL)    

SERT HumanResources.EmployeeDemo (OrgNode, EmployeeID, LoginID, Title, HireDate)      
LUES (@Manager.GetDescendant(@FirstChild, NULL),55,  'adventure-works\Laura','Trainee Developer', '6/11/07') ;           

           
Insert the first node who is the Descendant of Director Marketing      
CLARE @Manager hierarchyid     
CLARE @FirstChild hierarchyid     
LECT @Manager = CAST('/2/' AS hierarchyid)          

SERT HumanResources.EmployeeDemo (OrgNode, EmployeeID, LoginID, Title, HireDate)   
LUES (@Manager.GetDescendant(NULL, NULL),551, 'adventure-works\frank','Trainee Sales Exec.', '12/11/07') ;        

          
Insert the second node who is the Descendant of Director Marketing     
CLARE @Manager hierarchyid           
CLARE @FirstChild hierarchyid        
LECT @Manager = CAST('/2/' AS hierarchyid)   
LECT @FirstChild = @Manager.GetDescendant(NULL,NULL)
SERT HumanResources.EmployeeDemo (OrgNode, EmployeeID, LoginID, Title, HireDate) 
LUES (@Manager.GetDescendant(@FirstChild, NULL),531, 'adventure-works\vijay','Manager Industrial Sales', '12/09/06') ;         

    
Insert the third node who is the Descendant of Director Marketing        
in between 2 existing descendants    
CLARE @Manager hierarchyid    
CLARE @FirstChild hierarchyid      
CLARE @SecondChild hierarchyid     
LECT @Manager = CAST('/2/' AS hierarchyid)          
LECT @FirstChild = @Manager.GetDescendant(NULL,NULL)   
LECT @SecondChild = @Manager.GetDescendant(@FirstChild,NULL)   
SERT HumanResources.EmployeeDemo (OrgNode, EmployeeID, LoginID, Title, HireDate)  
LUES (@Manager.GetDescendant(@FirstChild, @SecondChild),543,  'adventure-works\james','Manager Consumer Sales', '12/04/06') ;
Nach dem Login kopieren
DECLARE @TID hierarchyid 
SELECT @TID=OrgNode FROM HumanResources.EmployeeDemo  WHERE title='cto' 

SELECT *, OrgNode.GetLevel() as 层次,OrgNode.ToString() as 路径  FROM HumanResources.EmployeeDemo WHERE @TID.IsDescendantOf(OrgNode)=1 

SELECT *, OrgNode.GetLevel() as 层次,OrgNode.ToString() as 路径  FROM HumanResources.EmployeeDemo WHERE  OrgNode.IsDescendantOf(@TID)=1 
Nach dem Login kopieren
SET QUOTED_IDENTIFIER ON
GO
--Use Serializable Transaction 
CREATE PROCEDURE [dbo].[AddEmployee](@ManagerID hierarchyid, @EmpID int,
@LogID varchar(100), @JobTitle as varchar(200), @JoiningDate datetime)
AS 
BEGIN 

DECLARE @LastChild hierarchyid 
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE 
BEGIN TRANSACTION
SELECT @LastChild = Max(OrgNode) From HumanResources.EmployeeDemo 
WHERE OrgNode = @ManagerID 
INSERT HumanResources.EmployeeDemo (OrgNode, EmployeeID, LoginID, Title, HireDate) 
VALUES(@LastChild, @EmpID,@LogID , @JobTitle, @JoiningDate) 
COMMIT 
END ;
Nach dem Login kopieren
CREATE PROCEDURE MoveOrg(@oldMgr nvarchar(256), @newMgr nvarchar(256) ) 
AS 
BEGIN

DECLARE @nold HierarchyID 
DECLARE @nnew HierarchyID 

SELECT @nold = OrgNode FROM HumanResources.EmployeeDemo WHERE LoginID = @oldMgr ; 

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE 

BEGIN TRANSACTION 
SELECT @nnew = OrgNode FROM HumanResources.EmployeeDemo WHERE LoginID = @newMgr ; 
SELECT @nnew = @nnew.GetDescendant(max(OrgNode), NULL) 
FROM HumanResources.EmployeeDemo WHERE OrgNode.GetAncestor(1)=@nnew ; 
UPDATE HumanResources.EmployeeDemo 
SET OrgNode = OrgNode.GetReparentedValue(@nold, @nnew) 
WHERE @nold.IsDescendantOf(OrgNode) = 1
 
COMMIT  TRANSACTION
END
Nach dem Login kopieren
Create Function GetMyMaxChild(@ManagerID as BigInt) Returns HierarchyID 
BEGIN 

Declare @ManagerNode HierarchyID 
Declare @MaxChild HierarchyID 
 --Get the ManagerNode 
Select @ManagerNode = OrgNode from 
HumanResources.EmployeeDemo Where EmployeeID = @ManagerID 
 --Get the Max Child 

Select @MaxChild = Max(OrgNode) from HumanResources.EmployeeDemo 
Where OrgNode.GetAncestor(1) = @ManagerNode 
--Return the Value 

RETURN @MaxChild 
END 
Nach dem Login kopieren
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Langsame Internetgeschwindigkeiten für Mobilfunkdaten auf dem iPhone: Korrekturen Langsame Internetgeschwindigkeiten für Mobilfunkdaten auf dem iPhone: Korrekturen May 03, 2024 pm 09:01 PM

Stehen Sie vor einer Verzögerung oder einer langsamen mobilen Datenverbindung auf dem iPhone? Normalerweise hängt die Stärke des Mobilfunk-Internets auf Ihrem Telefon von mehreren Faktoren ab, wie z. B. der Region, dem Mobilfunknetztyp, dem Roaming-Typ usw. Es gibt einige Dinge, die Sie tun können, um eine schnellere und zuverlässigere Mobilfunk-Internetverbindung zu erhalten. Fix 1 – Neustart des iPhone erzwingen Manchmal werden durch einen erzwungenen Neustart Ihres Geräts viele Dinge zurückgesetzt, einschließlich der Mobilfunkverbindung. Schritt 1 – Drücken Sie einfach einmal die Lauter-Taste und lassen Sie sie los. Drücken Sie anschließend die Leiser-Taste und lassen Sie sie wieder los. Schritt 2 – Der nächste Teil des Prozesses besteht darin, die Taste auf der rechten Seite gedrückt zu halten. Lassen Sie das iPhone den Neustart abschließen. Aktivieren Sie Mobilfunkdaten und überprüfen Sie die Netzwerkgeschwindigkeit. Überprüfen Sie es erneut. Fix 2 – Datenmodus ändern 5G bietet zwar bessere Netzwerkgeschwindigkeiten, funktioniert jedoch besser, wenn das Signal schwächer ist

Die Vitalität der Superintelligenz erwacht! Aber mit der Einführung der sich selbst aktualisierenden KI müssen sich Mütter keine Sorgen mehr über Datenengpässe machen Die Vitalität der Superintelligenz erwacht! Aber mit der Einführung der sich selbst aktualisierenden KI müssen sich Mütter keine Sorgen mehr über Datenengpässe machen Apr 29, 2024 pm 06:55 PM

Ich weine zu Tode. Die Daten im Internet reichen überhaupt nicht aus. Das Trainingsmodell sieht aus wie „Die Tribute von Panem“, und KI-Forscher auf der ganzen Welt machen sich Gedanken darüber, wie sie diese datenhungrigen Esser ernähren sollen. Dieses Problem tritt insbesondere bei multimodalen Aufgaben auf. Zu einer Zeit, als sie ratlos waren, nutzte ein Start-up-Team der Abteilung der Renmin-Universität von China sein eigenes neues Modell, um als erstes in China einen „modellgenerierten Datenfeed selbst“ in die Realität umzusetzen. Darüber hinaus handelt es sich um einen zweigleisigen Ansatz auf der Verständnisseite und der Generierungsseite. Beide Seiten können hochwertige, multimodale neue Daten generieren und Datenrückmeldungen an das Modell selbst liefern. Was ist ein Modell? Awaker 1.0, ein großes multimodales Modell, das gerade im Zhongguancun-Forum erschienen ist. Wer ist das Team? Sophon-Motor. Gegründet von Gao Yizhao, einem Doktoranden an der Hillhouse School of Artificial Intelligence der Renmin University.

Die U.S. Air Force präsentiert ihren ersten KI-Kampfjet mit großem Aufsehen! Der Minister führte die Testfahrt persönlich durch, ohne in den gesamten Prozess einzugreifen, und 100.000 Codezeilen wurden 21 Mal getestet. Die U.S. Air Force präsentiert ihren ersten KI-Kampfjet mit großem Aufsehen! Der Minister führte die Testfahrt persönlich durch, ohne in den gesamten Prozess einzugreifen, und 100.000 Codezeilen wurden 21 Mal getestet. May 07, 2024 pm 05:00 PM

Kürzlich wurde die Militärwelt von der Nachricht überwältigt: US-Militärkampfflugzeuge können jetzt mithilfe von KI vollautomatische Luftkämpfe absolvieren. Ja, erst kürzlich wurde der KI-Kampfjet des US-Militärs zum ersten Mal der Öffentlichkeit zugänglich gemacht und sein Geheimnis gelüftet. Der vollständige Name dieses Jägers lautet „Variable Stability Simulator Test Aircraft“ (VISTA). Er wurde vom Minister der US-Luftwaffe persönlich geflogen, um einen Eins-gegen-eins-Luftkampf zu simulieren. Am 2. Mai startete US-Luftwaffenminister Frank Kendall mit einer X-62AVISTA auf der Edwards Air Force Base. Beachten Sie, dass während des einstündigen Fluges alle Flugaktionen autonom von der KI durchgeführt wurden! Kendall sagte: „In den letzten Jahrzehnten haben wir über das unbegrenzte Potenzial des autonomen Luft-Luft-Kampfes nachgedacht, aber es schien immer unerreichbar.“ Nun jedoch,

Tesla-Roboter arbeiten in Fabriken, Musk: Der Freiheitsgrad der Hände wird dieses Jahr 22 erreichen! Tesla-Roboter arbeiten in Fabriken, Musk: Der Freiheitsgrad der Hände wird dieses Jahr 22 erreichen! May 06, 2024 pm 04:13 PM

Das neueste Video von Teslas Roboter Optimus ist veröffentlicht und er kann bereits in der Fabrik arbeiten. Bei normaler Geschwindigkeit sortiert es Batterien (Teslas 4680-Batterien) so: Der Beamte hat auch veröffentlicht, wie es bei 20-facher Geschwindigkeit aussieht – auf einer kleinen „Workstation“, pflücken und pflücken und pflücken: Dieses Mal wird es freigegeben. Eines der Highlights Der Vorteil des Videos besteht darin, dass Optimus diese Arbeit in der Fabrik völlig autonom und ohne menschliches Eingreifen während des gesamten Prozesses erledigt. Und aus Sicht von Optimus kann es auch die krumme Batterie aufnehmen und platzieren, wobei der Schwerpunkt auf der automatischen Fehlerkorrektur liegt: In Bezug auf die Hand von Optimus gab der NVIDIA-Wissenschaftler Jim Fan eine hohe Bewertung ab: Die Hand von Optimus ist der fünffingrige Roboter der Welt am geschicktesten. Seine Hände sind nicht nur taktil

Mit einer einzelnen Karte läuft Llama 70B schneller als mit zwei Karten, Microsoft hat gerade FP6 in A100 integriert | Mit einer einzelnen Karte läuft Llama 70B schneller als mit zwei Karten, Microsoft hat gerade FP6 in A100 integriert | Apr 29, 2024 pm 04:55 PM

FP8 und die geringere Gleitkomma-Quantifizierungsgenauigkeit sind nicht länger das „Patent“ von H100! Lao Huang wollte, dass jeder INT8/INT4 nutzt, und das Microsoft DeepSpeed-Team begann, FP6 auf A100 ohne offizielle Unterstützung von NVIDIA auszuführen. Testergebnisse zeigen, dass die FP6-Quantisierung der neuen Methode TC-FPx auf A100 nahe an INT4 liegt oder gelegentlich schneller als diese ist und eine höhere Genauigkeit aufweist als letztere. Darüber hinaus gibt es eine durchgängige Unterstützung großer Modelle, die als Open-Source-Lösung bereitgestellt und in Deep-Learning-Inferenz-Frameworks wie DeepSpeed ​​integriert wurde. Dieses Ergebnis wirkt sich auch unmittelbar auf die Beschleunigung großer Modelle aus – in diesem Rahmen ist der Durchsatz bei Verwendung einer einzelnen Karte zum Ausführen von Llama 2,65-mal höher als der von Doppelkarten. eins

Innerhalb weniger Stunden nach der Veröffentlichung hat Microsoft in Sekundenschnelle ein großes Open-Source-Modell gelöscht, das mit GPT-4 vergleichbar ist! Vergiftungstest vergessen Innerhalb weniger Stunden nach der Veröffentlichung hat Microsoft in Sekundenschnelle ein großes Open-Source-Modell gelöscht, das mit GPT-4 vergleichbar ist! Vergiftungstest vergessen Apr 23, 2024 pm 05:22 PM

Letzte Woche hat Microsoft WizardLM-2, ein Open-Source-Modell namens GPT-4 Level, aus der Luft abgeworfen. Aber ich hatte nicht damit gerechnet, dass es ein paar Stunden nach der Veröffentlichung sofort gelöscht würde. Einige Internetnutzer stellten plötzlich fest, dass die Modellgewichte und Ankündigungsbeiträge von WizardLM alle gelöscht worden waren und sich nicht mehr in der Microsoft-Sammlung befanden. Abgesehen von der Erwähnung der Website konnten keine Beweise dafür gefunden werden, dass es sich um ein offizielles Microsoft-Projekt handelte. Die GitHub-Projekthomepage ist zu einem 404-Fehler geworden. Projektadresse: https://wizardlm.github.io/ Einschließlich des Gewichts des Modells auf HF sind alle verschwunden ... Das gesamte Netzwerk ist voller Verwirrung. Warum ist WizardLM verschwunden? Der Grund dafür war jedoch, dass Microsoft vergessen hatte, das Modell zu „testen“. Später, Mikro

Umfassendes Open-Source-Upgrade von Open-Sora: Unterstützt 16s-Videogenerierung und 720p-Auflösung Umfassendes Open-Source-Upgrade von Open-Sora: Unterstützt 16s-Videogenerierung und 720p-Auflösung Apr 25, 2024 pm 02:55 PM

Open-Sora wurde in der Open-Source-Community stillschweigend aktualisiert. Es unterstützt jetzt die Videogenerierung bis zu 16 Sekunden mit Auflösungen bis zu 720p und kann Text-zu-Bild, Text-zu-Video, Bild-zu-Video usw. verarbeiten. und Video-zu-Video mit jedem Seitenverhältnis und den Generierungsanforderungen für unendlich lange Videos. Probieren wir es aus. Erstellen Sie eine horizontale Weihnachtsschneeszene, posten Sie sie auf der B-Site und erstellen Sie dann einen vertikalen Bildschirm, und erstellen Sie mit Douyin ein 16-sekündiges Video. Jetzt kann jeder ein Leben lang süchtig nach Drehbuch schreiben. Anleitung GitHub: https://github.com/hpcaitech/Open-Sora Was noch cooler ist, ist, dass Open-Sora immer noch vollständig Open Source ist, einschließlich der neuesten Modellarchitektur, der neuesten Modellgewichte, Multi-Time/Resolution/Long-Term

KI-Startups wechselten gemeinsam ihre Jobs zu OpenAI, und das Sicherheitsteam formierte sich neu, nachdem Ilya gegangen war! KI-Startups wechselten gemeinsam ihre Jobs zu OpenAI, und das Sicherheitsteam formierte sich neu, nachdem Ilya gegangen war! Jun 08, 2024 pm 01:00 PM

Letzte Woche wurde OpenAI inmitten der Welle interner Kündigungen und externer Kritik von internen und externen Problemen geplagt: - Der Verstoß gegen die Schwester der Witwe löste weltweit hitzige Diskussionen aus - Mitarbeiter, die „Overlord-Klauseln“ unterzeichneten, wurden einer nach dem anderen entlarvt – Internetnutzer listeten Ultramans „ Sieben Todsünden“ – Gerüchtebekämpfung: Laut durchgesickerten Informationen und Dokumenten, die Vox erhalten hat, war sich die leitende Führung von OpenAI, darunter Altman, dieser Eigenkapitalrückgewinnungsbestimmungen wohl bewusst und hat ihnen zugestimmt. Darüber hinaus steht OpenAI vor einem ernsten und dringenden Problem – der KI-Sicherheit. Die jüngsten Abgänge von fünf sicherheitsrelevanten Mitarbeitern, darunter zwei der prominentesten Mitarbeiter, und die Auflösung des „Super Alignment“-Teams haben die Sicherheitsprobleme von OpenAI erneut ins Rampenlicht gerückt. Das Fortune-Magazin berichtete, dass OpenA

See all articles