데이터 베이스 MySQL 튜토리얼 CI框架连接数据库配置操作以及多数据库操作

CI框架连接数据库配置操作以及多数据库操作

Jun 07, 2016 pm 03:11 PM
시작하기 빠른 작동하다 데이터 베이스 액자 연결하다 구성

数据库快速入门例子代码 下面的内容将简单说明怎样使用数据库。更详细的信息请阅读各个函数的单独介绍页面。 初始化数据库类 下面的代码将依据你的数据库配置载入并初始化数据库类: $this-load-database(); 一旦被载入,你可以在任何地方像这样使用它: 注意

数据库快速入门例子代码
下面的内容将简单说明怎样使用数据库。更详细的信息请阅读各个函数的单独介绍页面。

初始化数据库类
下面的代码将依据你的数据库配置载入并初始化数据库类:

$this->load->database();
 
一旦被载入,你可以在任何地方像这样使用它:

注意: 如果你的所有页面均要求初始化数据库类,你可以让它自动加载。详见 数据库连接。

多结果标准查询(对象形式)
$query = $this->db->query('SELECT name, title, email FROM my_table');

foreach ($query->result() as $row)
{
  echo $row->title;
  echo $row->name;
  echo $row->email;
}

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)
{
  echo $row['title'];
  echo $row['name'];
  echo $row['email'];
}
 
上面的result_array()函数返回一个带下标的数组。例如:$row['title']

测试查询结果
如果你的查询可能不返回结果,我们建议你先使用 num_rows()函数来测试:

$query = $this->db->query("YOUR QUERY");

if ($query->num_rows() > 0)
{
  foreach ($query->result() as $row)
  {
  echo $row->title;
  echo $row->name;
  echo $row->body;
  }

单结果标准查询(对象形式)
$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) 
  VALUES (".$this->db->escape($title).", ".$this->db->escape($name).")";

$this->db->query($sql);

echo $this->db->affected_rows(); 
快捷查询
快捷查询类能为我们提供快速取得数据的途径:

$query = $this->db->get('table_name');

foreach ($query->result() as $row)
{
  echo $row->title;
}
 
上面的get()函数返回数据表中所有的结果。 快捷查询类 提供所有数据库操作的快捷函数。

快捷插入(insert)
$data = array(
  'title' => $title,
  'name' => $name,
  'date' => $date
  );

$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)”;

 如果文件保存完成后,通过站点访问即可看到查询出来的数据则说明多个数据库操作实现成功。

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. 크로스 플레이가 있습니까?
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

클릭 한 번으로 PPT를 생성해보세요! 키미: 'PPT 이주노동자'가 먼저 대중화되게 해주세요 클릭 한 번으로 PPT를 생성해보세요! 키미: 'PPT 이주노동자'가 먼저 대중화되게 해주세요 Aug 01, 2024 pm 03:28 PM

키미: 단 한 문장이면 단 10초만에 PPT가 완성됩니다. PPT가 너무 짜증나네요! 회의를 하려면 PPT가 있어야 하고, 주간 보고서를 작성하려면 PPT가 있어야 하며, 누군가를 부정행위를 했다고 비난하려면 PPT를 보내야 합니다. 대학은 PPT 전공을 공부하는 것과 비슷합니다. 수업 시간에 PPT를 보고 수업 후에 PPT를 하는 거죠. 아마도 데니스 오스틴이 37년 전 PPT를 발명했을 때, 언젠가 PPT가 이렇게 널리 보급될 것이라고는 예상하지 못했을 것입니다. 우리가 PPT를 만들면서 힘들었던 경험을 이야기하면 눈물이 납니다. "20페이지가 넘는 PPT를 만드는 데 3개월이 걸렸고, 수십 번 수정했어요. PPT를 보면 토할 것 같았어요. 한창 때는 하루에 다섯 장씩 했는데, 숨소리까지 냈어요." PPT였어요." 즉석 회의가 있으면 해야죠.

CVPR 2024 시상식 전체가 발표되었습니다! 약 10,000명이 오프라인으로 컨퍼런스에 참석했으며 Google의 중국인 연구원이 최우수 논문상을 수상했습니다. CVPR 2024 시상식 전체가 발표되었습니다! 약 10,000명이 오프라인으로 컨퍼런스에 참석했으며 Google의 중국인 연구원이 최우수 논문상을 수상했습니다. Jun 20, 2024 pm 05:43 PM

베이징 시간으로 6월 20일 이른 아침, 시애틀에서 열린 최고의 국제 컴퓨터 비전 컨퍼런스인 CVPR2024가 최우수 논문 및 기타 수상작을 공식 발표했습니다. 올해는 우수논문 2편, 최우수 학생논문 2편 등 총 10편의 논문이 수상하였습니다. 컴퓨터 비전(CV) 분야 최고 학회는 매년 수많은 연구기관과 대학이 모여드는 CVPR이다. 통계에 따르면 올해 총 1만1532편의 논문이 제출돼 2719편이 채택돼 합격률 23.6%를 기록했다. Georgia Institute of Technology의 CVPR2024 데이터 통계 분석에 따르면 연구 주제 관점에서 가장 많은 논문이 이미지 및 비디오 합성 및 생성입니다(Imageandvideosyn

베어메탈부터 700억 개의 매개변수가 있는 대형 모델까지 튜토리얼과 바로 사용할 수 있는 스크립트가 있습니다. 베어메탈부터 700억 개의 매개변수가 있는 대형 모델까지 튜토리얼과 바로 사용할 수 있는 스크립트가 있습니다. Jul 24, 2024 pm 08:13 PM

우리는 LLM이 대규모 데이터를 사용하여 대규모 컴퓨터 클러스터에서 훈련된다는 것을 알고 있습니다. 이 사이트는 LLM 훈련 프로세스를 지원하고 개선하는 데 사용되는 다양한 방법과 기술을 소개합니다. 오늘 우리가 공유하고 싶은 것은 기본 기술에 대해 심층적으로 살펴보고 운영 체제 없이도 수많은 "베어 메탈"을 LLM 교육을 위한 컴퓨터 클러스터로 전환하는 방법을 소개하는 기사입니다. 이 기사는 기계가 생각하는 방식을 이해하여 일반 지능을 달성하기 위해 노력하는 AI 스타트업 Imbue에서 가져온 것입니다. 물론 운영 체제가 없는 "베어 메탈"을 LLM 교육을 위한 컴퓨터 클러스터로 전환하는 것은 탐색과 시행착오로 가득 찬 쉬운 과정이 아니지만 Imbue는 마침내 700억 개의 매개변수를 사용하여 LLM을 성공적으로 교육했습니다. 과정이 쌓이다

AI 활용 | AI가 혼자 사는 소녀의 생활 브이로그를 만들어 3일 만에 수만 개의 좋아요를 받았습니다. AI 활용 | AI가 혼자 사는 소녀의 생활 브이로그를 만들어 3일 만에 수만 개의 좋아요를 받았습니다. Aug 07, 2024 pm 10:53 PM

Machine Power Report 편집자: Yang Wen 대형 모델과 AIGC로 대표되는 인공지능의 물결은 우리가 살고 일하는 방식을 조용히 변화시키고 있지만 대부분의 사람들은 여전히 ​​그것을 어떻게 사용하는지 모릅니다. 이에 직관적이고 흥미롭고 간결한 인공지능 활용 사례를 통해 AI 활용 방법을 자세히 소개하고 모두의 사고를 자극하고자 'AI in Use' 칼럼을 론칭하게 됐다. 또한 독자들이 혁신적인 실제 사용 사례를 제출하는 것을 환영합니다. 영상 링크 : https://mp.weixin.qq.com/s/2hX_i7li3RqdE4u016yGhQ 최근 샤오홍슈에서는 혼자 사는 소녀의 인생 브이로그가 인기를 끌었습니다. 몇 가지 치유의 말과 함께 일러스트레이션 스타일의 애니메이션을 단 며칠 만에 쉽게 익힐 수 있습니다.

RAG의 12가지 문제점을 카운트다운하는 NVIDIA 수석 아키텍트가 솔루션을 가르칩니다. RAG의 12가지 문제점을 카운트다운하는 NVIDIA 수석 아키텍트가 솔루션을 가르칩니다. Jul 11, 2024 pm 01:53 PM

검색 증강 생성(RAG)은 검색을 사용하여 언어 모델을 향상시키는 기술입니다. 특히, 언어 모델은 답변을 생성하기 전에 광범위한 문서 데이터베이스에서 관련 정보를 검색한 다음 이 정보를 사용하여 생성 프로세스를 안내합니다. 이 기술은 콘텐츠의 정확성과 관련성을 크게 향상시키고 환각 문제를 효과적으로 완화하며 지식 업데이트 속도를 높이고 콘텐츠 생성 추적성을 향상시킬 수 있습니다. RAG는 ​​의심할 여지 없이 인공 지능 연구에서 가장 흥미로운 분야 중 하나입니다. RAG에 대한 자세한 내용은 본 사이트의 칼럼 기사 "대형 모델의 단점을 보완하는 데 특화된 RAG의 새로운 발전은 무엇인가?"를 참조하시기 바랍니다. 이 리뷰는 이를 명확하게 설명합니다." 그러나 RAG는 완벽하지 않으며 사용자는 이를 사용할 때 몇 가지 "고통"에 직면하는 경우가 많습니다. 최근 NVIDIA의 고급 생성 AI 솔루션

iOS 18에는 손실되거나 손상된 사진을 검색할 수 있는 새로운 '복구된' 앨범 기능이 추가되었습니다. iOS 18에는 손실되거나 손상된 사진을 검색할 수 있는 새로운 '복구된' 앨범 기능이 추가되었습니다. Jul 18, 2024 am 05:48 AM

Apple의 최신 iOS18, iPadOS18 및 macOS Sequoia 시스템 릴리스에는 사진 애플리케이션에 중요한 기능이 추가되었습니다. 이 기능은 사용자가 다양한 이유로 손실되거나 손상된 사진과 비디오를 쉽게 복구할 수 있도록 설계되었습니다. 새로운 기능에는 사진 앱의 도구 섹션에 '복구됨'이라는 앨범이 도입되었습니다. 이 앨범은 사용자가 기기에 사진 라이브러리에 포함되지 않은 사진이나 비디오를 가지고 있을 때 자동으로 나타납니다. "복구된" 앨범의 출현은 데이터베이스 손상으로 인해 손실된 사진과 비디오, 사진 라이브러리에 올바르게 저장되지 않은 카메라 응용 프로그램 또는 사진 라이브러리를 관리하는 타사 응용 프로그램에 대한 솔루션을 제공합니다. 사용자는 몇 가지 간단한 단계만 거치면 됩니다.

또 다른 소라 레벨 플레이어가 거리로 나섭니다! 소라와 케링과 비교해봤습니다. 또 다른 소라 레벨 플레이어가 거리로 나섭니다! 소라와 케링과 비교해봤습니다. Aug 02, 2024 am 10:19 AM

소라가 나오지 않자 OpenAI의 반대자들은 무기를 사용해 거리를 파괴했습니다. 소라를 사용할 수 있게 공개하지 않으면 정말 도난당할 것입니다! 오늘 샌프란시스코 스타트업 LumaAI는 트럼프 카드를 사용하여 차세대 AI 비디오 생성 모델 DreamMachine을 출시했습니다. 무료이며 누구나 사용할 수 있습니다. 보도에 따르면 이 모델은 간단한 텍스트 설명을 기반으로 소라에 버금가는 효과로 고품질의 사실적인 동영상을 생성할 수 있다고 합니다. 소식이 알려지자마자 수많은 사용자들이 이를 시험해 보기 위해 공식 홈페이지로 몰려들었습니다. 관계자들은 이 모델이 단 2분 만에 120프레임의 영상을 생성할 수 있다고 주장하고 있지만, 방문 급증으로 인해 공식 홈페이지에서 많은 이용자들이 몇 시간씩 기다려 오고 있다. Luma의 제품 성장 책임자인 BarkleyDai는 Discord에 대해 언급해야 했습니다.

PHP 프레임워크의 학습 곡선은 다른 언어 프레임워크와 어떻게 비교됩니까? PHP 프레임워크의 학습 곡선은 다른 언어 프레임워크와 어떻게 비교됩니까? Jun 06, 2024 pm 12:41 PM

PHP 프레임워크의 학습 곡선은 언어 숙련도, 프레임워크 복잡성, 문서 품질 및 커뮤니티 지원에 따라 달라집니다. PHP 프레임워크의 학습 곡선은 Python 프레임워크에 비해 높고 Ruby 프레임워크에 비해 낮습니다. Java 프레임워크에 비해 PHP 프레임워크는 학습 곡선이 적당하지만 시작하는 데 걸리는 시간이 더 짧습니다.

See all articles