CI框架连接数据库配置操作以及多数据库操作
数据库快速入门例子代码 下面的内容将简单说明怎样使用数据库。更详细的信息请阅读各个函数的单独介绍页面。 初始化数据库类 下面的代码将依据你的数据库配置载入并初始化数据库类: $this-load-database(); 一旦被载入,你可以在任何地方像这样使用它: 注意
数据库快速入门例子代码
下面的内容将简单说明怎样使用数据库。更详细的信息请阅读各个函数的单独介绍页面。
初始化数据库类
下面的代码将依据你的数据库配置载入并初始化数据库类:
$this->load->database();
一旦被载入,你可以在任何地方像这样使用它:
注意: 如果你的所有页面均要求初始化数据库类,你可以让它自动加载。详见 数据库连接。
多结果标准查询(对象形式)
$query = $this->db->query('SELECT name, title, email FROM my_table');
foreach ($query->result() as $row)
{
}
echo 'Total Results: ' . $query->num_rows();
上面的result()函数返回一个对象的数组。例如:$row->title
多结果标准查询(数组形式)
$query = $this->db->query('SELECT name, title, email FROM my_table');
foreach ($query->result_array() as $row)
{
}
上面的result_array()函数返回一个带下标的数组。例如:$row['title']
测试查询结果
如果你的查询可能不返回结果,我们建议你先使用 num_rows()函数来测试:
$query = $this->db->query("YOUR QUERY");
if ($query->num_rows() > 0)
{
}
单结果标准查询(对象形式)
$query = $this->db->query('SELECT name FROM my_table LIMIT 1');
$row = $query->row();
echo $row->name;
上面的row()函数返回一个 对象。例如:$row->name
单结果标准查询(数组形式)
$query = $this->db->query('SELECT name FROM my_table LIMIT 1');
$row = $query->row_array();
echo $row['name'];
上面的row_array()函数返回一个 数组。例如:$row['name']
标准插入(insert)
$sql = "INSERT INTO mytable (title, name)
$this->db->query($sql);
echo $this->db->affected_rows();
快捷查询
快捷查询类能为我们提供快速取得数据的途径:
$query = $this->db->get('table_name');
foreach ($query->result() as $row)
{
}
上面的get()函数返回数据表中所有的结果。 快捷查询类 提供所有数据库操作的快捷函数。
快捷插入(insert)
$data = array(
$this->db->insert('mytable', $data);
// Produces: INSERT INTO mytable (title, name, date) VALUES ('{$title}', '{$name}', '{$date}')
数据库配置
CodeIgniter 有一个配置文件让你存放数据库连接值(username:用户名,password:密码,database name:数据库名,等等..). 配置文件位于以下路径:
application/config/database.php
配件文件存放在一个如下格式的一个多维数组里:
$db['default']['hostname'] = "localhost";
$db['default']['username'] = "root";
$db['default']['password'] = "";
$db['default']['database'] = "database_name";
$db['default']['dbdriver'] = "mysql";
$db['default']['dbprefix'] = "";
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = FALSE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = "";
$db['default']['char_set'] = "utf8";
$db['default']['dbcollat'] = "utf8_general_ci";
我们使用多维数组的原因是为了让你随意的存储多个连接值的设置。举例:如果你运行多个环境(development:开发、production:制作、test:测试 等等..),你能为每个环境建立独立的连接组,并在组直接进行切换。举例,设置一个"test"环境,你可以这样做:
$db['test']['hostname'] = "localhost";
$db['test']['username'] = "root";
$db['test']['password'] = "";
$db['test']['database'] = "database_name";
$db['test']['dbdriver'] = "mysql";
$db['test']['dbprefix'] = "";
$db['test']['pconnect'] = TRUE;
$db['test']['db_debug'] = FALSE;
$db['test']['cache_on'] = FALSE;
$db['test']['cachedir'] = "";
$db['test']['char_set'] = "utf8";
$db['test']['dbcollat'] = "utf8_general_ci";
那么,告诉系统使用"test"组,你可以设置位于配置文件中的变量:
$active_group = "test";
注意: "test"的名字是任意的,这可以让你自由设置,我们的主要连接默认使用"default"这个名字,当然,您可以基于您的项目为它起一个更有意义的名字。
Active Record
Active Record 类 可以通过数据库配置文件里的$active_record变量进行全局的设定(允许/禁止 TRUE/FALSE (boolean)). 如果你不用这个类,哪么你可以通过将这个变量值设置成FALSE来减少在数据库类初始化时对电脑资源的消耗。
$active_record = TRUE;
注意: 一些CodeIgniter的类,例如Sessions,在执行一些函数的时候需要Active Records的支持。
参数解析:
hostname - 数据库的主机名,通常位于本机,可以表示为 "localhost".
username - 需要连接到数据库的用户名.
password - 登陆数据库的密码.
database - 你需要连接的数据库名.
dbdriver - 数据库类型。如:mysql、postgres、odbc 等。必须为小写字母。
dbprefix - 当运行Active Record查询时数据表的前缀,它允许在一个数据库上安装多个CodeIgniter程序.
pconnect - TRUE/FALSE (boolean) - 使用持续连接.
db_debug - TRUE/FALSE (boolean) - 显示数据库错误信息.
cache_on - TRUE/FALSE (boolean) - 数据库查询缓存是否开启,详情请见数据库缓存类。
cachedir - 数据库查询缓存目录所在的服务器绝对路径。
char_set - 与数据库通信时所使用的字符集。
dbcollat - 与数据库通信时所使用的字符规则(character collation )。
port - 数据库端口号. 当前只用于 Postgres 驱动程序. 要使用这个值,你应该添加一行代码到数据库配置数组。
$db['default']['port'] = 5432;
提示: 并不是所有的值都是必须的,这取决与您所使用的数据库平台,如(MySQL, Postgres, 等.) 例如, 当你使用SQLite时,你不需要提供username 或 password, 数据库名字就是您数据库文件的路径. 以上内容假定您使用的是 MySQL 数据库.
连接你的数据库
有两种方法连接数据库:
自动连接
“自动连接” 功能将在每个一页面加载时被自动实例化数据库类。要启用“自动连接”,可在如下文件中的 library 数组里添加 database:
application/config/autoload.php
手动连接
如果仅仅是一部分页面要求数据库连接,你可以在你有需要的函数里手工添加如下代码或者在你的类里手工添加以供该类使用。
$this->load->database();
如果以上函数的第一个参数没有任何信息,它将会在系统指定的数据库配置文件中寻找,对多数人而言,这是一个首选的方法。
可用的参数
数据库连接值,用数组或DSN字符串传递。
TRUE/FALSE (boolean)。是否返回连接ID (参阅下面的“连接多数据库”)。
TRUE/FALSE (boolean)。是否启用 Active Record 类。默认设置为 TRUE。
手动连接到一个数据库
函数的第一个参数能够从你的配置文件中自由的指定你自定义的详细的数据库配置信息。或者你甚至可以不通过指定的配置文件来提交数据库的连接属性。样例:
要从你的配置文件中选择一个指定的数组你可以这么做:
$this->load->database('group_name');
group_name指的是存在于你的配置文件中的带有数据库连接信息的数组的名字。
要手动连接你要求的数据库你可以通过定义以下数组来实现:
$config['hostname'] = "localhost";
$config['username'] = "myusername";
$config['password'] = "mypassword";
$config['database'] = "mydatabase";
$config['dbdriver'] = "mysql";
$config['dbprefix'] = "";
$config['pconnect'] = FALSE;
$config['db_debug'] = TRUE;
$config['cache_on'] = FALSE;
$config['cachedir'] = "";
$config['char_set'] = "utf8";
$config['dbcollat'] = "utf8_general_ci";
$this->load->database($config);
想得到每一个配置属性的详细信息可点击 这里.
或者你可以以DSN的方式提交数据库配置信息。 DSN必然通过以下方式实现:
$dsn = 'dbdriver://username:password@hostname/database';
$this->load->database($dsn);
当用 DSN 字符串连接时,要覆盖配置默认值,则添加配置变量为查询字符串。
$dsn = 'dbdriver://username:password@hostname/database?char_set=utf8&dbcollat=utf8_general_ci&cache_on=true&cachedir=/path/to/cache';
$this->load->database($dsn);
连接多数据库
如果你需要同时连接多于一个的数据库,你可以用以下方式来实现:
$DB1 = $this->load->database('group_one', TRUE);
$DB2 = $this->load->database('group_two', TRUE);
注意:改变 "group_one" 和 "group_two" 为你指定了连接属性的组名 (或者通过上边说过的连接数组的数组名)。
通过设置函数的第二个参数为TRUE(boolean)来返回一个数据库对象。
当你使用这种方法,你将用对象名来执行操作命令而不是用户向导模式,也就是说,你将用以下方式执行数据库操作:
$DB1->query();
$DB1->result();
etc...
而不是:
$this->db->query();
$this->db->result();
etc...
重新连接 / 保持连接有效
当你正在进行一些重量级的PHP操作(例如处理图片)时,如果超出了数据库服务器的空闲超时限度,你应该考虑在执行更多查询之前使用reconnect()方法来向服务器发送ping命令,这样可以优雅地保持或重新建立连接。
$this->db->reconnect();
CI中的数据库操作
在system/application/config 文件夹和里面的config文件里已经配置了参数
$active_group = "default";
$db['default']['hostname'] = ""; hostname: 你的数据库的位置, 举例来说, 'localhost' 或 IP 地址
$db['default']['username'] = ""; username和password: 使用者名称和密码必须有充分的权限,允许你的网站存取数据库中的数据。
$db['default']['password'] = "";
$db['default']['database'] = ""; database: 你的数据库的名字, 举例来说, 'websits'
$db['default']['dbdriver'] = ""; dbdriver: 你正在使用的数据库的类型 - CI可受的有选项有MySQL、MySQLi、 Postgre SQL、ODBC和MS SQL
CI中第一次连接数据库,在控制器或模型的构造函数里输入以下语句
$this->load->database();
就不需要重复连接, 在那个控制器或模型就可以做任意多次的查询。
查询操作(等同select)
方法一:
$query = $this->db->get('sites'); //sites为表名
这是一个“select *”查询,目标是site表。换句话说,它取回所有的行
也可用下面这种方式写:
$this->db->from('sites');
$query = $this->db->get();
如果想要得到特定的列,而不是全部列,这样做:
$this->db->select('url','name','clientid');//'url','name','clientid'为列名
$query = $this->db->get('sites');
如果排序:
$this->db->select('url','name','clientid');//'url','name','clientid'为列名
$this->db->orderby("name", "desc");
$query = $this->db->get('sites');
如果想要限制返回的行数,比如想要最初五个结果
$this->db->select('url','name','clientid');//'url','name','clientid'为列名
$this->db->orderby("name", "desc");
$this->db->limit(5);
$query = $this->db->get('sites');
写where语句
==的情况
$this->db->where('clientid', '1'); //clientid属性 "1"为属性值
!=的情况
$this->db->where('url !=', 'www.mysite.com');
$this->db->where('id >', '3');
where后几个条件的可以写几个where 如
$this->db->where('url !=','www.mysite.com');
$this->db->where('id >', '3');
WHERE…OR的情况
$this->db->where('url !=','www.mysite.com' );
$this->db->orwhere('url !=','www.anothersite.com' );
连接表
$this->db->from('sites');
$this->db->join('people', 'sites.peopleid = people.id');
写个完整的查询
$this->db->select('url','name','clientid','people.surname AS client');
$this->db->where('clientid', '3');
$this->db->limit(5);
$this->db->from('sites');
$this->db->join('people', 'sites.clientid = people.id');
$this->db->orderby("name", "desc");
$query = $this->db->get();
方法二:
$this->db->query("SELECT id, name, url FROM sites WHERE 'type' = 'dynamic'");
可以像下面的语句一样写查询放条件
$condition = "client ='3' AND (type ='dynamic' OR type='static')";
$this->db->where($condition);
注意:双引号是定义变量的.不要混淆单引号和双引号.
显示查询结果
在查询语句后加上下面这句话
$query = $this->db->get();
如果有多个结果,他们被保存在$row对象中,可以用一个 foreach 循环:
foreach ($query->result() as $row)
{
print $row->url;
print $row->name;
print $row->client;
}
如果我们只想要一个结果,它可以作为一个对象被返回, 或在这里当做一个$row数组
if ($query->num_rows() > 0)
{
$row = $query->row_array();
print $row['url'];
print $row['name'];
print $row['client'];
}
增加数据(等同insert)
方法一:先建个数组,把要insert的值放在数组里.如下:其中url/name/clientid/type均为数据表属性值
$data = array(
'url' => 'www.mynewclient.com',
'name' => 'BigCo Inc',
'clientid' => '33',
'type' => 'dynamic'
);
然后使用$this->db->insert('sites', $data); 把数据增加到sites表中.
方法二:使用$this->db->set() 设置每一个值
$this->db->set('url', 'www.mynewclinet.com');
$this->db->set('name', 'BigCo Inc');
$this->db->set('clientid', '33');
$this->db->set('type', 'dynamic');
$this->db->insert('sites');
更新(等同update)
先定位要更新的记录,再update
$this->db->where('id', '1');
$this->db->update('sites', $data);
$this->db->set()方式也可以,和新增数据应该是一样的.
CI 提供几个函数检查数据库是否成功执行了相关操作。 最有用的:
$this->db->affected_rows();
在执行insert或update后应该返回 '1'-但是如果我正在update一批记录的话,可能返回更大的一个整数。
如果我正在insert一笔新的记录, 在实际产生它之前,我们并不知道ID具体的值。如果我需要引用新的记录的ID, 使用下列语句:
$new_id_number = $this->db->insert_id();
删除(等同delete)
$this->db->where('id', '2');
$this->db->delete('sites');
CI中使用多个数据库
第一步:创建数据库
现在假设我要操作的两个数据库分别为我本机MySQL数据库中的test数据库和test_other数据库。
test数据库中有一个t_news表(新闻表);
其SQL语句如下:
SQL复制代码
CREATE DATABASE /*!32312
IF NOT EXISTS*/`test` /*!40100 DEFAULT CHARACTER SET utf8 */;
USE `test`;
/*Table structure for table `t_news` */
DROP TABLE IF EXISTS `t_news`;
CREATE TABLE `t_news` (
`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '新闻ID',
`title` CHAR(255) NOT NULL COMMENT '新闻标题',
`sub_title` VARCHAR(500) DEFAULT NULL COMMENT '新闻副标题',
`content` TEXT COMMENT '新闻内容',
`create_time` DATETIME DEFAULT NULL COMMENT '创建时间',
`hits` INT(11) DEFAULT NULL COMMENT '点击率',
`author` CHAR(50) DEFAULT NULL COMMENT '作者',
`source` CHAR(255) DEFAULT NULL COMMENT '信息来源',
PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8
CHECKSUM=1 DELAY_KEY_WRITE=1ROW_FORMAT=DYNAMIC
COMMENT='新闻表';
test_other数据库中有一个t_sys_user(系统管理员表);
其SQL语句如下:
SQL复制代码
CREATE DATABASE /*!32312
IF NOT EXISTS*/`test_other` /*!40100 DEFAULT CHARACTER SET utf8 */;
USE `test_other`;
/*Table structure for table `t_sys_user` */
DROP TABLE IF EXISTS `t_sys_user`;
CREATE TABLE `t_sys_user` (
`id` INT(11) NOT NULL COMMENT '管理员ID',
`role_id` INT(11) NOT NULL COMMENT '角色ID',
`login_name` VARCHAR(50) NOT NULL COMMENT '用户名称',
`password` VARCHAR(255) NOT NULL COMMENT '密码',
`is_admin` TINYINT(1) NOT NULL DEFAULT '0' COMMENT '是否为管理员(0:否
1:是)',
`create_time` DATETIME DEFAULT NULL COMMENT '创建时间',
`last_login` DATETIME DEFAULT NULL COMMENT '上次登录时间',
`login_num` INT(11) DEFAULT '0' COMMENT '登录次数',
`last_ip` CHAR(15) DEFAULT NULL COMMENT '上次登录IP',
`status` TINYINT(1) NOT NULL DEFAULT '0' COMMENT '登录状态(0:未登录
1:已登录)',
`is_locked` TINYINT(1) NOT NULL DEFAULT '0' COMMENT '是否被锁定(0:否
1:是 注:锁定时不允许登录)',
PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8
CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC
COMMENT='系统管理员表';
打开./application/config/目录中的database.php文件,在原来的内容中增加另外一个数据库配置信息。文件内容如下:
PHP复制代码
if ( ! defined('BASEPATH')) exit('No
direct script access allowed');
/*
| -------------------------------------------------------------------
| DATABASE CONNECTIVITY SETTINGS
| -------------------------------------------------------------------
| This file will contain the settings needed to access your database.
|
| For complete instructions please consult the 'Database Connection'
| page of the User Guide.
|
| -------------------------------------------------------------------
| EXPLANATION OF VARIABLES
| -------------------------------------------------------------------
*/
$active_group = 'default';
$active_record = TRUE;
$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'root';
$db['default']['password'] = '111111';
$db['default']['database'] = 'test';
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = FALSE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;
//Additional database
$db['additional']['hostname'] = 'localhost';
$db['additional']['username'] = 'root';
$db['additional']['password'] = '111111';
$db['additional']['database'] = 'test_other';
$db['additional']['dbdriver'] = 'mysql';
$db['additional']['dbprefix'] = '';
$db['additional']['pconnect'] = FALSE;
$db['additional']['db_debug'] = TRUE;
$db['additional']['cache_on'] = FALSE;
$db['additional']['cachedir'] = '';
$db['additional']['char_set'] = 'utf8';
$db['additional']['dbcollat'] = 'utf8_general_ci';
$db['additional']['swap_pre'] = '';
$db['additional']['autoinit'] = TRUE;
$db['additional']['stricton'] = FALSE;
/* End of file database.php */
/* Location: ./application/config/database.php */
第三步:编写控制器
在./application/controllers/目录下创建名为dbc.php的控制器文件,其内容如下:
PHP复制代码
if ( ! defined('BASEPATH')) exit('No
direct script access allowed');
/**
* @package CI2.1.0
* @author Longde
* @version 1.0
*/
// ------------------------------------------------------------------------
header('Content-Type:text/html; charset=utf-8');
/**
* 数据库控制器
* 该控制器的主要做用是进行数据库方面的操作。
*
* @category Controllers
* @author Longde
*/
class Dbc extends CI_Controller {
/**
* 测试在同一个项目中同时使用多个数据库进行操作
* @access public
* @return array
*/
public function index()
{
//按照CI手册中的说法:如果需要同时连接多个数据库,则采用
//$DB1 = $this->load->database('group_one',TRUE);
//$DB2 = $this->load->database('group_two',TRUE);
//注意:confing/database.php中的$db[xxxx]['pconnect'] = FALSE
$db1 = $this->load->database('default',TRUE);//注意第一个参数:值与配置文件中的第一个索引对应
$db2 = $this->load->database('additional', TRUE);//注意第一个参数:值与配置文件中的第一个索引对应
//下面开始进行操作
//首先,在第一个数据库test的t_news表中插入数据
$data1 = array(
'title' => '测试在CI框架中同时操作多个数据库',
'sub_title' => 'CI框架允许使用多个数据库进行操作。具体的内容请查看CI手册......',
'content' => '如果你需要同时连接多于一个的数据库,你可以用以下方式来实现:$DB1
= $this->load->database(\'group_one\', TRUE);$DB2 = $this->load->database(\'group_two\', TRUE);注意:改变 "group_one" 和 "group_two" 为你指定了连接属性的组名 (或者通过上边说过的连接数组的数组名)。',
'create_time' => date('Y-m-d
H:i:s'),
'author' => 'Longde',
'source' => '原创'
);
//插入之前先判断是否已存在
$db1->select('id');
$id1 = $db1->get_where('t_news',array('title' => $data1['title']))->result_array();
if(empty($id1))
{
//插入数据
$db1->insert('t_news',$data1);
//获取刚才插入数据时生成的ID值
$id1 = $db1->insert_id();
}
else
{
$id1 = $id1[0]['id'];
}
//从数据库中读取数据
$result1 = $db1->get_where('t_news',array('id' => $id1))->result_array();
//格式化输出刚才的读取结果
echo ""
print_r($result1);
//其次,在第二个数据库test_other的t_sys_user表中插入数据
$data2 = array(
'role_id' => 1,
'login_name' => 'admin',
'password' => md5('admin'),
'is_admin' => 1,
'create_time' => date('Y-m-d
H:i:s'),
'status' => 0,
'is_locked' => 0
);
//插入之前先判断是否已存在
$db2->select('id');
$id2 = $db2->get_where('t_sys_user',array('login_name' => $data2['login_name']))->result_array();
if(empty($id2))
{
//插入数据
$db2->insert('t_sys_user',$data2);
//获取刚才插入数据时生成的ID值
$id2 = $db2->insert_id();
}
else
{
$id2 = $id2[0]['id'];
}
//从数据库中读取刚才插入的数据
$result2 = $db2->get_where('t_sys_user',array('id' => $id2))->result_array();
//格式化输出刚才的读取结果
echo ""
print_r($result2);
}
// ------------------------------------------------------------------------
}
/* End of file dbc.php */
/* Location: ./application/controllers/dbc.php */
说明一下,dbc.php文件中的index()方法主要是对两个数据库分别进行了插入操作,但在插入操作之前,先对该条记录是否存在进行了判断,如果存在则不进行插入操作并直接查询出结果;否则先进行插入,然后再查询。
值得注意的是,数据库配置文件database.php文件中的$db['group_name']['pconnect']值需要设置为FALSE,其次$db['group_name']中的索引group_name对应的就是“$DB1 = $this->load->database('group_name',TRUE)”;
如果文件保存完成后,通过站点访问即可看到查询出来的数据则说明多个数据库操作实现成功。

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Kimi : En une seule phrase, un PPT est prêt en seulement dix secondes. PPT est tellement ennuyeux ! Pour tenir une réunion, vous devez avoir un PPT ; pour rédiger un rapport hebdomadaire, vous devez avoir un PPT ; pour solliciter des investissements, vous devez présenter un PPT ; même pour accuser quelqu'un de tricherie, vous devez envoyer un PPT ; L'université ressemble plus à une spécialisation PPT. Vous regardez le PPT en classe et faites le PPT après les cours. Peut-être que lorsque Dennis Austin a inventé le PPT il y a 37 ans, il ne s'attendait pas à ce qu'un jour le PPT devienne aussi répandu. Parler de notre dure expérience de création de PPT nous fait monter les larmes aux yeux. "Il m'a fallu trois mois pour réaliser un PPT de plus de 20 pages, et je l'ai révisé des dizaines de fois. J'avais envie de vomir quand j'ai vu le PPT." "À mon apogée, je faisais cinq PPT par jour, et même ma respiration." était PPT." Si vous avez une réunion impromptue, vous devriez le faire

Tôt le matin du 20 juin, heure de Pékin, CVPR2024, la plus grande conférence internationale sur la vision par ordinateur qui s'est tenue à Seattle, a officiellement annoncé le meilleur article et d'autres récompenses. Cette année, un total de 10 articles ont remporté des prix, dont 2 meilleurs articles et 2 meilleurs articles étudiants. De plus, il y a eu 2 nominations pour les meilleurs articles et 4 nominations pour les meilleurs articles étudiants. La conférence la plus importante dans le domaine de la vision par ordinateur (CV) est la CVPR, qui attire chaque année un grand nombre d'instituts de recherche et d'universités. Selon les statistiques, un total de 11 532 articles ont été soumis cette année, dont 2 719 ont été acceptés, avec un taux d'acceptation de 23,6 %. Selon l'analyse statistique des données CVPR2024 du Georgia Institute of Technology, du point de vue des sujets de recherche, le plus grand nombre d'articles est la synthèse et la génération d'images et de vidéos (Imageandvideosyn

Nous savons que le LLM est formé sur des clusters informatiques à grande échelle utilisant des données massives. Ce site a présenté de nombreuses méthodes et technologies utilisées pour aider et améliorer le processus de formation LLM. Aujourd'hui, ce que nous souhaitons partager est un article qui approfondit la technologie sous-jacente et présente comment transformer un ensemble de « bare metals » sans même un système d'exploitation en un cluster informatique pour la formation LLM. Cet article provient d'Imbue, une startup d'IA qui s'efforce d'atteindre une intelligence générale en comprenant comment les machines pensent. Bien sûr, transformer un tas de « bare metal » sans système d'exploitation en un cluster informatique pour la formation LLM n'est pas un processus facile, plein d'exploration et d'essais et d'erreurs, mais Imbue a finalement réussi à former un LLM avec 70 milliards de paramètres et dans. le processus s'accumule

Rédacteur du Machine Power Report : Yang Wen La vague d’intelligence artificielle représentée par les grands modèles et l’AIGC a discrètement changé notre façon de vivre et de travailler, mais la plupart des gens ne savent toujours pas comment l’utiliser. C'est pourquoi nous avons lancé la rubrique « AI in Use » pour présenter en détail comment utiliser l'IA à travers des cas d'utilisation de l'intelligence artificielle intuitifs, intéressants et concis et stimuler la réflexion de chacun. Nous invitons également les lecteurs à soumettre des cas d'utilisation innovants et pratiques. Lien vidéo : https://mp.weixin.qq.com/s/2hX_i7li3RqdE4u016yGhQ Récemment, le vlog de la vie d'une fille vivant seule est devenu populaire sur Xiaohongshu. Une animation de style illustration, associée à quelques mots de guérison, peut être facilement récupérée en quelques jours seulement.

La génération augmentée par récupération (RAG) est une technique qui utilise la récupération pour améliorer les modèles de langage. Plus précisément, avant qu'un modèle de langage ne génère une réponse, il récupère les informations pertinentes à partir d'une vaste base de données de documents, puis utilise ces informations pour guider le processus de génération. Cette technologie peut considérablement améliorer l'exactitude et la pertinence du contenu, atténuer efficacement le problème des hallucinations, augmenter la vitesse de mise à jour des connaissances et améliorer la traçabilité de la génération de contenu. RAG est sans aucun doute l’un des domaines de recherche les plus passionnants en matière d’intelligence artificielle. Pour plus de détails sur RAG, veuillez vous référer à l'article de la rubrique de ce site "Quelles sont les nouveautés de RAG, spécialisée dans le rattrapage des défauts des grands modèles ?" Cette revue l'explique clairement. Mais RAG n'est pas parfait et les utilisateurs rencontrent souvent des « problèmes » lorsqu'ils l'utilisent. Récemment, la solution avancée d'IA générative de NVIDIA

Les dernières versions d'Apple des systèmes iOS18, iPadOS18 et macOS Sequoia ont ajouté une fonctionnalité importante à l'application Photos, conçue pour aider les utilisateurs à récupérer facilement des photos et des vidéos perdues ou endommagées pour diverses raisons. La nouvelle fonctionnalité introduit un album appelé "Récupéré" dans la section Outils de l'application Photos qui apparaîtra automatiquement lorsqu'un utilisateur a des photos ou des vidéos sur son appareil qui ne font pas partie de sa photothèque. L'émergence de l'album « Récupéré » offre une solution aux photos et vidéos perdues en raison d'une corruption de la base de données, d'une application d'appareil photo qui n'enregistre pas correctement dans la photothèque ou d'une application tierce gérant la photothèque. Les utilisateurs n'ont besoin que de quelques étapes simples

Lorsque Sora n'est pas parvenu à se manifester, les adversaires d'OpenAI ont utilisé leurs armes pour détruire les rues. Si Sora n'est pas ouvert à l'utilisation, il sera vraiment volé ! Aujourd'hui, la startup de San Francisco, LumaAI, a joué un atout et a lancé une nouvelle génération de modèle de génération vidéo IA DreamMachine. Gratuit et accessible à tous. Selon les rapports, le modèle peut générer des vidéos réalistes de haute qualité basées sur de simples descriptions textuelles, avec des effets comparables à ceux de Sora. Dès l’annonce de la nouvelle, un grand nombre d’utilisateurs se sont rassemblés sur le site officiel pour l’essayer. Bien que les responsables affirment que le modèle peut générer une vidéo de 120 images en seulement deux minutes, de nombreux utilisateurs attendent depuis des heures sur le site officiel en raison d'une augmentation des visites. BarkleyDai, responsable de la croissance des produits chez Luma, a dû commenter Discord

Le 24 juillet, Keling AI, grand modèle de génération vidéo Kuaishou, a annoncé que le modèle de base avait de nouveau été mis à niveau et était entièrement ouvert aux tests internes. Kuaishou a déclaré que afin de permettre à davantage d'utilisateurs d'utiliser Keling AI et de mieux répondre aux différents niveaux d'utilisation des créateurs, il lancera désormais également officiellement un système d'adhésion pour différentes catégories de créateurs, sur la base de tests internes entièrement ouverts. membres. Fournir des services fonctionnels exclusifs correspondants. Dans le même temps, le modèle de base de Keling AI a également été à nouveau mis à niveau pour améliorer encore l'expérience utilisateur. L'effet de modèle de base a été mis à niveau pour améliorer encore l'expérience utilisateur. Depuis sa sortie il y a plus d'un mois, Keling AI a été mis à niveau et itéré à plusieurs reprises. Avec le lancement de ce système d'adhésion, l'effet de modèle de base de Keling AI a été amélioré. à nouveau subi une transformation. La première est que la qualité de l'image a été considérablement améliorée et les effets visuels générés grâce au modèle de base amélioré.
