Хранимые процедуры MySQL
Хранимые процедуры MySQL

Хранимая процедура (хранимая процедура) — это набор операторов SQL, которые используются для выполнения определенных функций в большой системе баз данных. Она хранится в базе данных и является постоянной после однократной компиляции. дает параметры (если хранимая процедура с параметрами) для ее выполнения. Хранимая процедура — важный объект в базе данных. Когда объем данных особенно велик, эффективность можно удвоить за счет использования хранимых процедур.

1. Обзор хранимых процедур

1.1. Что такое хранимая процедура?

Хранимая процедура — важный объект в базе данных.

Хранимая процедура — это набор операторов SQL в системе базы данных, которые используются для выполнения определенных функций. Хранимые процедуры хранятся в базе данных, компилируются один раз и запускаются повсюду. Нет необходимости компилировать заново, пользователь может выполнить ее, указав имя хранимой процедуры и передав параметры (если хранимая процедура имеет параметры).

1.2 Характеристики хранимых процедур.

Используется для завершения более сложных дел. Относительно гибкий, легко модифицируемый, простой в написании и легко программируемый. Написанные хранимые процедуры можно использовать повторно.

1.3. Преимущества и недостатки хранимых процедур.

преимущество

Хранимые процедуры компилируются непосредственно при их создании, а операторы SQL должны компилироваться каждый раз при их использовании, что очень эффективно.

Хранимые процедуры можно использовать повторно.

Хранимая процедура подключается к базе данных только один раз, тогда как оператор SQL подключается к базе данных несколько раз при доступе к нескольким таблицам.

Сохраненные программы безопасны. Предоставьте соответствующие разрешения приложению хранимой процедуры. недостаток Созданные там хранимые процедуры могут использоваться только там и имеют плохую переносимость.

Если при разработке хранимых процедур стандарты не установлены должным образом, последующее обслуживание будет затруднено.

Без специального редактора разработка и отладка неудобны.

Слишком сложная бизнес-логика не может быть решена с помощью хранимых процедур.

2. Создать хранимую процедуру

2.1. Создать формат

Язык кода:javascript
копировать
Формат:
create procedure имя процедуры()
begin
......
end;

Случай:

Просмотр полной информации в таблицах сотрудников и отделов

Язык кода:javascript
копировать
create procedure dept_emp()
begin
	select * from dept;
	select * from emp;
end;

mysql> call dept_emp();
+----+-----------+
| id | name      |
+----+-----------+
| 1  | Отдел исследований и разработок |
| 2  | Канальный отдел |
| 3  | Департамент по академическим вопросам |
| 4  | Исполнительный отдел |
+----+-----------+
4 строка в наборе данных (0.02 Второй)

+----+--------+--------+--------+------------+---------+
| id | name   | gender | salary | join_date  | dept_id |
+----+--------+--------+--------+------------+---------+
| 1  | Чжан Сан | мужской    | 7200   | 2013-02-24 | 1       |
| 2  | Джон Доу | мужской    | 3600   | 2010-12-02 | 2       |
| 3  | Ван Ву | мужской    | 9000   | 2008-08-08 | 2       |
| 4  | Чжао Лю | женский    | 5000   | 2015-10-07 | 3       |
| 5  | У Ци | женский    | 4500   | 2011-03-14 | 1       |
| 6  | Ван И | мужской    | 8768   | 2013-12-05 | NULL    |
| 7  | Ван Эр | женский    | NULL   | NULL       | NULL    |
+----+--------+--------+--------+------------+---------+
7 строка в наборе данных (0.05 Второй)

Query OK, 0 rows affected (0.05 Второй)

2.2. Переменные

Язык кода:javascript
копировать
Формат:
declare имя переменной Тип переменной default значение по умолчанию; #Объявляем переменные
set имя переменной=ценить; #Присваивание переменной
select Имя поля into имя переменной from база данныхповерхность; #Запрашиваем поля таблицы и завершаем присвоение переменной
select имя переменной; #отобразить переменные

Случай:

Просмотрите имя сотрудника с id=1 в таблице сотрудников.

Язык кода:javascript
копировать
create procedure emp_name()
begin
	declare ename varchar(20) default '';
	select name into ename from emp where id=1;
	select ename;
end;

mysql> call emp_name();
+--------+
| ename  |
+--------+
| Чжан Сан |
+--------+
1 строка в наборе данных (0.01 Второй)

Query OK, 0 rows affected (0.01 Второй)

2.3. Область действия переменных.

Переменные в хранимых процедурах имеют область действия. Область действия находится между блоками начала и конца. Область действия переменной заканчивается, когда заканчивается конец.

Переменные можно разделить на:

Локальные переменные: между начальным и конечным блоками

Глобальные переменные: Размещаются перед всеми блоками кода. Переменные параметров являются глобальными и могут работать между несколькими блоками.

Случай:

Сверьте количество сотрудников с количеством отделов в таблице отделов и узнайте максимальную и минимальную заработную плату (локальные переменные)

Язык кода:javascript
копировать
create procedure dept_or_emp()
begin
	begin
		declare e_n int default 0;
		declare d_n int default 0;
		select count(*) into e_n from emp;
		select count(*) into d_n from dept;
		select e_n,d_n;
	end;
	begin
		declare max_s double default 0;
		declare min_s double default 0;
		select max(salary) into max_s from emp;
		select min(salary) into min_s from emp;
		select max_s,min_s;
	end;
end;

mysql> call dept_or_emp();
+------+------+
| e_n  | d_n  |
+------+------+
| 7    | 4    |
+------+------+
1 строка в наборе данных (0.26 Второй)

+-------+-------+
| max_s | min_s |
+-------+-------+
| 9000  | 3600  |
+-------+-------+
1 строка в наборе данных (0.26 Второй)

Query OK, 0 rows affected (0.26 Второй)

Просмотрите количество сотрудников в сравнении с количеством отделов в таблице отделов и узнайте максимальную и минимальную заработную плату (глобальные переменные).

Язык кода:javascript
копировать
create procedure dept_or_emp1()
begin
	declare e_n int default 0;
	declare d_n int default 0;
	declare max_s double default 0;
	declare min_s double default 0;
	begin
		select count(*) into e_n from emp;
		select count(*) into d_n from dept;
	end;
	begin

		select max(salary) into max_s from emp;
		select min(salary) into min_s from emp;
	end;
	select e_n,d_n,max_s,min_s;
end;

mysql> call dept_or_emp1();
+------+------+
| e_n  | d_n  |
+------+------+
| 7    | 4    |
+------+------+
1 строка в наборе данных (0.22 Второй)

+-------+-------+
| max_s | min_s |
+-------+-------+
| 9000  | 3600  |
+-------+-------+
1 строка в наборе данных (0.23 Второй)

Query OK, 0 rows affected (0.23 Второй)

3. Параметры хранимой процедуры

Язык кода:javascript
копировать
Формат:
create procedure Имя процесса ([IN|OUT|INOUT] Имя параметра Тип данных параметра )
begin
......
end;

Уведомление:

in: передать параметры

out: исходящие параметры

inout: может быть передан или выведен

3.1、in

Указывает, что значение этого параметра необходимо указать перед вызовом хранимой процедуры. Если оно не указано явно как in, по умолчанию используется тип in.

Случай:

Просмотрите имя сотрудника на основе переданного идентификатора.

Язык кода:javascript
копировать
create procedure emp_id(eid int)
begin
	declare ename varchar(20) default '';
	select name into ename from emp where id=eid;
	select ename;
end;

mysql> call emp_id(1);
+--------+
| ename  |
+--------+
| Чжан Сан |
+--------+
1 строка в наборе данных (0.01 Второй)

Query OK, 0 rows affected (0.01 Второй)

mysql> call emp_id(2);
+--------+
| ename  |
+--------+
| Джон Доу |
+--------+
1 строка в наборе данных (0.01 Второй)

Query OK, 0 rows affected (0.02 Второй)

mysql> call emp_id(9);
+-------+
| ename |
+-------+
|       |
+-------+
1 строка в наборе данных (0.01 Второй)

Query OK, 0 rows affected (0.01 Второй)

3.2、out

Параметр out также необходимо указать, но он должен быть переменной, а не константой.

Случай:

На основе входящего идентификатора верните имя сотрудника.

Язык кода:javascript
копировать
create procedure emp_id1(eid int,out ename varchar(20))
begin
	select name into ename from emp where id=eid;
end;

mysql> set @ename='';
Query OK, 0 rows affected (0.02 Второй)

mysql> call emp_id1(3,@ename);
Query OK, 1 rows affected, 1 warnings (0.02 Второй)

mysql> select @ename;
+--------+
| @ename |
+--------+
| Ван Ву |
+--------+
1 строка в наборе данных (0.02 Второй)

3.3、inout

Если вам нужно вводить и выводить данные одновременно, вы можете использовать параметры типа INOUT.

Случай:

На основе входящего идентификатора верните идентификатор и имя сотрудника.

Язык кода:javascript
копировать
create procedure emp_id2(inout eid int,out ename varchar(20))
begin
	select id,name into eid,ename from emp where id=eid;
end;

mysql> set @eid=3;
Query OK, 0 rows affected (0.01 Второй)

mysql> set @ename='';
Query OK, 0 rows affected (0.01 Второй)

mysql> call emp_id2(@eid,@ename);
Query OK, 1 rows affected (0.01 Второй)

mysql> select @eid,@ename;
+------+--------+
| @eid | @ename |
+------+--------+
| 3    | Ван Ву |
+------+--------+
1 строка в наборе данных (0.01 Второй)

4. Условия хранимой процедуры

4.1、if…else…end if

Язык кода:javascript
копировать
Формат:
if()
then
...
else
...
end if;

Случай:

Введите идентификатор и определите, является ли это четным числом. При четных числах печатается соответствующее имя, а при нечетных числах — идентификатор.

Язык кода:javascript
копировать
create procedure emp_if_id(eid int)
begin
	declare ename varchar(20) default '';
	if(eid%2=0)
	then
		select name into ename from emp where id=eid;
		select ename;
  else
  	select eid;
  end if;
end;

mysql> call emp_if_id(2);
+--------+
| ename  |
+--------+
| Джон Доу |
+--------+
1 строка в наборе данных (0.02 Второй)

Query OK, 0 rows affected (0.02 Второй)

mysql> call emp_if_id(1);
+------+
| eid  |
+------+
| 1    |
+------+
1 строка в наборе данных (0.01 Второй)

Query OK, 0 rows affected (0.01 Второй)

4.2、if…elseif…else…endif

Язык кода:javascript
копировать
Формат:
if()
then
...
elseif()
then
...
else
...
end if;

Случай:

Сотрудникам с идентификаторами 1, 2 и 3 повысьте зарплату на 1000 юаней, в то время как остальные сотрудники останутся без изменений.

Язык кода:javascript
копировать
create procedure emp_if_salary(eid int)
begin
	declare esalary double default 0;
	if(eid=1)
	then
		update emp set salary=salary+1000 where id=eid;
  elseif(eid=2)
  then
  	update emp set salary=salary+1000 where id=eid;
  elseif(eid=3)
  then
  	update emp set salary=salary+1000 where id=eid;	
  else
  	update emp set salary=salary where id=eid;	
  end if;
  select salary into esalary from emp where id=eid;
  select esalary;
end;

mysql> call emp_if_salary(1);
+---------+
| esalary |
+---------+
| 8200    |
+---------+
1 строка в наборе данных (0.03 Второй)

Query OK, 0 rows affected (0.05 Второй)

mysql> call emp_if_salary(3);
+---------+
| esalary |
+---------+
| 10000   |
+---------+
1 строка в наборе данных (0.02 Второй)

Query OK, 0 rows affected (0.02 Второй)

mysql> call emp_if_salary(9);
+---------+
| esalary |
+---------+
| 0       |
+---------+
1 строка в наборе данных (0.02 Второй)

Query OK, 0 rows affected (0.02 Второй)

4.3、case

Язык кода:javascript
копировать
Формат:
case()
when... then...
when... then...
else...
end case;

Случай:

Сотрудникам с идентификаторами 1, 2 и 3 повысьте зарплату на 1000 юаней, в то время как остальные сотрудники останутся без изменений.

Язык кода:javascript
копировать
create procedure emp_case_salary(eid int)
begin
	declare esalary double default 0;
	case (eid)
	when 1 then update emp set salary=salary+1000 where id=eid;
  when 2 then update emp set salary=salary+1000 where id=eid;
  when 3 then update emp set salary=salary+1000 where id=eid;	
  else
  	update emp set salary=salary where id=eid;	
  end case;
  select salary into esalary from emp where id=eid;
  select esalary;
end;

mysql> call emp_case_salary(3);
+---------+
| esalary |
+---------+
| 12000   |
+---------+
1 строка в наборе данных (0.02 Второй)

Query OK, 0 rows affected (0.02 Второй)

5. Цикл хранимых процедур

5.1、while

Язык кода:javascript
копировать
Формат:
пока (выражение) do 
......  
end while;

Случай:

Запросить имена первых 5 сотрудников в таблице сотрудников по идентификатору.

Язык кода:javascript
копировать
create procedure emp_view()
begin
	declare eid int default 1;
	declare ename varchar(20) default '';
	while(eid<=5) do
		select name into ename from emp where id=eid;	
		select ename;
		set eid=eid+1;
	end while;	
end;

mysql> call emp_view();
+--------+
| ename  |
+--------+
| Чжан Сан |
+--------+
1 строка в наборе данных (0.01 Второй)

+--------+
| ename  |
+--------+
| Джон Доу |
+--------+
1 строка в наборе данных (0.01 Второй)

+--------+
| ename  |
+--------+
| Ван Ву |
+--------+
1 строка в наборе данных (0.02 Второй)

+--------+
| ename  |
+--------+
| Чжао Лю |
+--------+
1 строка в наборе данных (0.02 Второй)

+--------+
| ename  |
+--------+
| У Ци |
+--------+
1 строка в наборе данных (0.03 Второй)

Query OK, 0 rows affected (0.03 Второй)

5.2、repeat

Язык кода:javascript
копировать
Формат:
repeat
...
until состояние -- состояниеучредил,Выйти из цикла
....
конец повтора;

Случай:

Запросить имена первых 5 сотрудников в таблице сотрудников по идентификатору.

Язык кода:javascript
копировать
create procedure emp_view1()
begin
	declare eid int default 1;
	declare ename varchar(20) default '';
	repeat
		select name into ename from emp where id=eid;		
		select ename;
		set eid=eid+1;
	until eid>5
	end repeat;	
end;

mysql> call emp_view1();
+--------+
| ename  |
+--------+
| Чжан Сан |
+--------+
1 строка в наборе данных (0.02 Второй)

+--------+
| ename  |
+--------+
| Джон Доу |
+--------+
1 строка в наборе данных (0.03 Второй)

+--------+
| ename  |
+--------+
| Ван Ву |
+--------+
1 строка в наборе данных (0.05 Второй)

+--------+
| ename  |
+--------+
| Чжао Лю |
+--------+
1 строка в наборе данных (0.06 Второй)

+--------+
| ename  |
+--------+
| У Ци |
+--------+
1 строка в наборе данных (0.06 Второй)

Query OK, 0 rows affected (0.06 Второй)

6. Курсор хранимой процедуры

Курсор — это временная область, в которой сохраняются результаты запроса.

Язык кода:javascript
копировать
Формат:
declare имя курсора cursor for оператор SQL; #Объявляем курсор
open имя курсора; #Открыть курсор
fetch имя курсора into имя переменной; #Получаем значение курсора
close имя курсора; #Закрыть курсор

Случай:

Выведите идентификатор и имя в таблице сотрудников.

Язык кода:javascript
копировать
create procedure emp_all_view()
begin
	declare eid int default 1;
	declare ename varchar(20) default '';
	declare c_emp cursor for select id,name from emp;
	open c_emp;
	fetch c_emp into eid,ename;
	select eid,ename;
	close c_emp;
end;

mysql> call emp_all_view();
+------+--------+
| eid  | ename  |
+------+--------+
| 1    | Чжан Сан |
+------+--------+
1 строка в наборе данных (0.03 Второй)

Query OK, 0 rows affected (0.03 Второй)

Таким образом, мы извлекли только одну часть информации. Нужно ли нам сейчас зацикливаться?

Язык кода:javascript
копировать
create procedure emp_all_view1()
begin
	declare eid int default 1;
	declare ename varchar(20) default '';
	declare c_emp cursor for select id,name from emp;
	
	open c_emp;
	loop
		fetch c_emp into eid,ename;
		select eid,ename;
	end loop;
	close c_emp;
end;

mysql> call emp_all_view1();
+------+--------+
| eid  | ename  |
+------+--------+
| 1    | Чжан Сан |
+------+--------+
1 строка в наборе данных (0.01 Второй)

+------+--------+
| eid  | ename  |
+------+--------+
| 2    | Джон Доу |
+------+--------+
1 строка в наборе данных (0.02 Второй)

+------+--------+
| eid  | ename  |
+------+--------+
| 3    | Ван Ву |
+------+--------+
1 строка в наборе данных (0.03 Второй)

+------+--------+
| eid  | ename  |
+------+--------+
| 4    | Чжао Лю |
+------+--------+
1 строка в наборе данных (0.03 Второй)

+------+--------+
| eid  | ename  |
+------+--------+
| 5    | У Ци |
+------+--------+
1 строка в наборе данных (0.03 Второй)

+------+--------+
| eid  | ename  |
+------+--------+
| 6    | Ван И |
+------+--------+
1 строка в наборе данных (0.04 Второй)

+------+--------+
| eid  | ename  |
+------+--------+
| 7    | Ван Эр |
+------+--------+
1 строка в наборе данных (0.05 Второй)

No data - zero rows fetched, selected, or processed

7. Операции хранимых процедур

7.1. Просмотр хранимых процедур.

Язык кода:javascript
копировать
Формат:
show procedure status [like '%нить%'];

Случай:

Язык кода:javascript
копировать
mysql> show procedure status;
Язык кода:javascript
копировать
mysql>show procedure status like '%emp%';

7.2 Удаление хранимых процедур.

Язык кода:javascript
копировать
Формат:
drop procedure имя процесса хранилища;

Случай:

Язык кода:javascript
копировать
mysql> drop procedure emp_id;
Query OK, 0 rows affected (0.02 Второй)

8. Пользовательские функции

8.1. Создание пользовательской функции.

Самая большая разница между функциями и хранимыми процедурами заключается в том, что функции должны иметь возвращаемое значение, иначе будет сообщено об ошибке.

Язык кода:javascript
копировать
Формат:
create function Имя функции (параметр) returns Тип возврата
begin
.....
return возвращаемое значение;
end;

Случай:

Получите имя сотрудника, введя идентификатор

Язык кода:javascript
копировать
create function getName(eid int) returns varchar(20)
begin
	declare ename varchar(20) default '';
	select name into ename from emp where id=eid;
	return ename;
end;

Уведомление:

Когда мы включаем bin-log, мы должны указать, что наша функция указывает детерминированный и неопределенный параметр. no sql Оператор SQL отсутствует, и, конечно, данные не будут изменены. читает данные sql, только читает данные, конечно, не изменяет данные изменяет данные sql для изменения данных содержит SQL содержит операторы SQL

Язык кода:javascript
копировать
create function getName(eid int) returns varchar(20) reads sql data
begin
	declare ename varchar(20) default '';
	select name into ename from emp where id=eid;
	return ename;
end;

mysql> select getName(1);
+------------+
| getName(1) |
+------------+
| Чжан Сан     |
+------------+
1 строка в наборе данных (0.02 Второй)

8.2. Работа с пользовательской функцией.

8.2.1. Запрос пользовательской функции.
Язык кода:javascript
копировать
Формат:
show function status [like '%нить%'];

Случай:

Язык кода:javascript
копировать
mysql> show function status;
Язык кода:javascript
копировать
mysql> show function status like '%getName%';
8.2.2. Удаление пользовательской функции.
Язык кода:javascript
копировать
Формат:
drop function имя функции;

Случай:

Язык кода:javascript
копировать
mysql> drop function getName;
Query OK, 0 rows affected (0.03 Второй)

9. Триггер

Триггеры аналогичны функциям и хранимым процедурам. Триггер — это объект, который может инициировать некоторые действия в зависимости от времени работы таблицы. Этими действиями могут быть операции вставки, обновления, удаления и другие.

9.1. Создание триггера.

Язык кода:javascript
копировать
create trigger имя триггера Время срабатывания триггерное событие on поверхность for each row
begin
    -- Триггерное тело содержимого, заканчивайте каждую строку точкой с запятой
end

Уведомление:

Время срабатывания:

когда команда SQL возникает, когда,Приведет к изменению данных в строке,И каждыйповерхность Соответствующая строка имеет два состояния:До и после манипуляции данными

до: состояние до изменения данных в таблице.

after: состояние после изменения данных в таблице.

Триггерное событие:

Триггеры срабатывают только при отправке изменений данных, а соответствующие операции — это только вставка, обновление и удаление.

Случай:

При вставке данных в таблицу сотрудников запишите вставленный идентификатор, действие и время.

Язык кода:javascript
копировать
#Создать действиеповерхность
create table emp_log(
	id int primary key auto_increment,
  eid int,
  eaction varchar(20),
  etime datetime
);

mysql> select * from emp_log;
пустой набор данных (0.01 Второй)

#Создаем триггер
create trigger emp_insert after insert on emp for each row
begin
	insert into emp_log values(null,NEW.id,'insert',now());
end;

mysql> insert into emp(id,name,gender)values(8,'Ван Сан','мужской');
Query OK, 1 rows affected (0.01 Второй)

mysql> select * from emp_log;
+----+------+---------+---------------------+
| id | eid  | eaction | etime               |
+----+------+---------+---------------------+
| 1  | 8    | insert  | 2020-02-21 03:12:44 |
+----+------+---------+---------------------+
1 строка в наборе данных (0.02 Второй)

9.2. Триггерная операция.

9.2.1. Триггерный просмотр.
Язык кода:javascript
копировать
Формат:
show triggers [like '%нить%'];

Случай:

Язык кода:javascript
копировать
mysql> show triggers;
Язык кода:javascript
копировать
mysql> show triggers like '%emp%';
9.2.2. Удаление триггера.
Язык кода:javascript
копировать
Формат:
drop trigger Имя триггера;

Случай:

Язык кода:javascript
копировать
mysql> drop trigger emp_insert;
Query OK, 0 rows affected (0.02 Второй)

10. События

События заменяют работу, которая ранее выполнялась только запланированными задачами операционной системы, а планировщик событий MySQL может точно выполнять одну задачу каждую секунду, в то время как запланированные задачи операционной системы могут выполняться точно только один раз в минуту.

10.1. Создание события.

Язык кода:javascript
копировать
Формат:
create event[IF NOT EXISTS] event_name -- Создать событие
on schedule время и частота -- on schedule Когда оно будет исполнено?
[on completion [NOT] preserve] -- Будет ли сохранен план планирования после завершения выполнения
[enable | disable] -- Включить ли события, включено по умолчанию
[comment 'Описание события'] -- Заметки о событии
do event_body;-- SQL, который необходимо выполнить

Уведомление:

Пример одной запланированной задачи Казнен один раз в 4:00 1 февраля 2019 г. on schedule at ‘2019-02-01 04:00:00’

Повторить выполнение плана on schedule every 1 second Выполнять раз в секунду on schedule every 1 minute Выполнять раз в минуту on schedule every 1 day Выполнять один раз в день

Повторяющиеся запланированные задачи в указанном диапазоне времени Выполняется один раз в день в 20:00:00. on schedule every 1 day starts ‘2019-02-01 20:00:00’

Случай:

Каждые 5 секунд вставляйте предыдущую запись даты и времени в emp_log.

Язык кода:javascript
копировать
mysql> desc emp_log;
Язык кода:javascript
копировать
create event e_insert on schedule every 5 second on completion preserve
enable
comment «Вставлять каждые 5 секунд»
do
begin
	insert into emp_log values(null,1,'insert1',now());
end;
#do call хранилищепроцесс 
#do select имя функции

10.2. Операции с событиями.

10.2.1. Просмотр событий.
Язык кода:javascript
копировать
Формат:
show events;

Случай:

Язык кода:javascript
копировать
mysql> show events;
10.2.2. Включение и отключение событий.
Язык кода:javascript
копировать
Формат:
alter event название события disable/enable;

Отключить событие

Язык кода:javascript
копировать
mysql> alter event e_insert disable;
Query OK, 0 rows affected (0.01 Второй)

mysql> select * from emp_log;

включить событие

Язык кода:javascript
копировать
mysql> alter event e_insert enable;
Query OK, 0 rows affected (0.02 Второй)

mysql> select * from emp_log;
10.2.3. Удаление событий.
Язык кода:javascript
копировать
Формат:
drop event название события;

Случай:

Язык кода:javascript
копировать
mysql> drop event e_insert;
Query OK, 0 rows affected (0.02 Второй)

mysql> show events;
пустой набор данных (0.01 Второй)
boy illustration
RasaGpt — платформа чат-ботов на основе Rasa и LLM.
boy illustration
Nomic Embed: воспроизводимая модель внедрения SOTA с открытым исходным кодом.
boy illustration
Улучшение YOLOv8: EMA основана на эффективном многомасштабном внимании, основанном на межпространственном обучении, и эффект лучше, чем у ECA, CBAM и CA. Малые цели имеют очевидные преимущества | ICASSP2023
boy illustration
Урок 1 серии Libtorch: Тензорная библиотека Silky C++
boy illustration
Руководство по локальному развертыванию Stable Diffusion: подробные шаги и анализ распространенных проблем
boy illustration
Полностью автоматический инструмент для работы с видео в один клик: VideoLingo
boy illustration
Улучшения оптимизации RT-DETR: облегченные улучшения магистрали | Support Paddle облегченный rtdetr-r18, rtdetr-r34, rtdetr-r50, rtdet
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | Деформируемое внимание с большим ядром (D-LKA Attention), большое ядро ​​​​свертки улучшает механизм внимания восприимчивых полей с различными функциями
boy illustration
Создано Datawhale: выпущено «Руководство по тонкой настройке развертывания большой модели GLM-4»!
boy illustration
7B превышает десятки миллиардов, aiXcoder-7B с открытым исходным кодом Пекинского университета — это самая мощная модель большого кода, лучший выбор для корпоративного развертывания.
boy illustration
Используйте модель Huggingface, чтобы заменить интерфейс внедрения OpenAI в китайской среде.
boy illustration
Оригинальные улучшения YOLOv8: несколько новых улучшений | Сохранение исходной информации — алгоритм отделяемой по глубине свертки (MDSConv) |
boy illustration
Второй пилот облачной разработки | Быстро поиграйте со средствами разработки на базе искусственного интеллекта
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция с нулевым кодированием и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
Решенная Ошибка | Загрузка PyTorch медленная: TimeoutError: [Errno 110] При загрузке факела истекло время ожидания — Cat Head Tiger
boy illustration
Brother OCR, библиотека с открытым исходным кодом для Python, которая распознает коды проверки.
boy illustration
Новейшее подробное руководство по загрузке и использованию последней демонстрационной версии набора данных COCO.
boy illustration
Выпущен отчет о крупной модели финансовой отрасли за 2023 год | Полный текст включен в загрузку |
boy illustration
Обычные компьютеры также могут работать с большими моделями, и вы можете получить личного помощника с искусственным интеллектом за три шага | Руководство для начинающих по локальному развертыванию LLaMA-3
boy illustration
Одной статьи достаточно для анализа фактора транскрипции SCENIC на Python (4)
boy illustration
Бросая вызов ограничениям производительности небольших видеокарт, он научит вас запускать большие модели глубокого обучения с ограниченными ресурсами, а также предоставит полное руководство по оценке и эффективному использованию памяти графического процессора!
boy illustration
Команда Fudan NLP опубликовала 80-страничный обзор крупномасштабных модельных агентов, в котором в одной статье представлен обзор текущего состояния и будущего агентов ИИ.
boy illustration
[Эксклюзив] Вы должны знать о новой функции JetBrains 2024.1 «Полнострочное завершение кода», чтобы решить вашу путаницу!
boy illustration
Краткое изложение базовых знаний о регистрации изображений 1.0
boy illustration
Новейшее подробное руководство по установке и использованию библиотеки cv2 (OpenCV, opencv-python) в Python.
boy illustration
Легко создайте локальную базу знаний для крупных моделей на основе Ollama+AnythingLLM.
boy illustration
[Решено] ошибка установки conda. Среда решения: не удалось выполнить первоначальное зависание решения. Повторная попытка с помощью файла (графическое руководство).
boy illustration
Одна статья поможет вам понять RAG (Retrival Enhanced Generation) | Введение в концепцию и теорию + практику работы с кодом (включая исходный код).
boy illustration
Эволюция архитектуры шлюза облачной разработки
boy illustration
Docker и Kubernetes [Разработка контейнерных приложений с помощью Python]