моя контактная информация
Почтамезофия@protonmail.com
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Оглавление
Оглавление
(2) Передаваемый объект данных
(1) Соглашение об именовании базы данных:
(3) Характеристики именования:
(4) Технические характеристики внешнего и внутреннего интерфейса:
(2) Создайте новый проект и пригласите своих товарищей по команде:
(3) Написание спецификаций для интерфейсных документов.
4. Функция отладки (необходимо знать серверную часть)
6. На что следует обратить внимание:
(Один человек не может управлять страной!!!)
Конкретные из них:
(1) Уровень сущностей: Уровень сущностей хранит конкретные сущности объектов, соответствующие объектам в базе данных.
(2) Уровень DAO: (может быть разделен на два уровня (уровень интерфейса Dao и уровень реализации Dao)) — это уровень, который взаимодействует с базой данных, включая некоторые операции добавления, удаления, изменения и запроса базы данных.
(3) Уровень сервиса (может быть разделен на два уровня (уровень интерфейса сервиса и уровень реализации сервиса)): в основном отвечает за логическое проектирование приложений бизнес-модулей.
(4) Уровень контроллера. Уровень контроллера отвечает за управление конкретными процессами бизнес-модуля. Уровень контроллера отвечает за взаимодействие внешнего и внутреннего интерфейса, прием запросов внешнего интерфейса, вызов уровня обслуживания, получение данных, возвращаемых. уровень обслуживания и, наконец, возврат определенных страниц и данных клиенту.
(5) Уровень утилит. На уровне инструментов размещаются часто используемые классы инструментов. Например, некоторые распространенные методы могут быть написаны как служебные функции, а затем можно упростить общий код.
(6) Уровень исключений: вы можете написать унифицированный уровень исключений возврата.
(7) Уровень фильтра: Уровень фильтра, например единая фильтрация аутентификации личности. Если фильтр не проходит, он будет работать только в гостевом режиме.
DTO — это структура данных, отправляемая внешним запросом.
VO — это ответ, возвращаемый серверной частью в ответ на запрос, отправленный внешним интерфейсом.
PO — это фактическое соответствие между объектной сущностью и таблицей объектов базы данных.
BO — объектная сущность в процессе бизнес-обработки.
Пожалуйста, назовите его на английском языке, а не на китайском пиньинь.
Будьте простыми для понимания, а не причудливыми.
Используйте горбовые имена вместо обычных имен.
Используйте разрывы строк через определенные интервалы и не пишите длинными абзацами.
Будьте аннотированы, а не индивидуалистичны.
Не используйте ключевые слова, зарезервированные слова и т. д., которые имеют особое значение в самой Java! ! !
(1) Имя таблицы уникально, и несколько имен таблиц не могут использовать одно и то же имя.
(2) Имя таблицы должно состоять из строчных букв и символов подчеркивания. Старайтесь избегать использования заглавных букв или специальных символов. Используйте «user_info», например, «tbl_user» или «tbl_user_info».
(3) Не конфликтовать с ключевыми словами,Чтобы отключить зарезервированные слова, такие как Like, Desc, Range, Match, Delayed и т. д., обратитесь к официальным зарезервированным словам MySQL.
(4) Имя поля базы данных: оно состоит из 26 английских букв (с учетом регистра) плюс подчеркивание «_», например «user_id», «user_name», «user_password», «user_register_time», «user_login_time».
(5) Спецификации первичного и внешнего ключа:
Первичный ключ: pk_+имя таблицы.
Например:pk_main
Внешний ключ: fk_+имя подчиненной таблицы+_+имя основной таблицы
Например:fk_sub_main
(1) Аннотация класса:
Аннотации класса (Class) в основном используются для объявления того, для чего используется класс, а также некоторой информации, такой как создатель, версия даты создания, имя пакета и т. д.:
/**
* @версия: V1.0
* @автор: fendo
* @className: пользователь
* @packageName: пользователь
* @description: Это класс пользователя.
* @data: 2024-07-01 12:20
**/
(2) Аннотация метода (Конструктор):
/**
* @автор: fendo
* @methodsName: addUser
* @description: добавить пользователя
* @параметр: хххх
* @return: Строка
* @броски:
*/
(3) Комментарии к блоку кода: объясняют назначение определенной части вашего кода.
/**
* Создать экземпляр пользователя
* ххххххх
*/
Пользователь пользователь=новый Пользователь();
(4) Комментарии из одного предложения: прокомментируйте свой индивидуальный код.
Пользователь user=new User(); //Создание экземпляра пользователя
Назовите его так, чтобы другие могли его понять, назовите его в верблюжьем регистре и учитывайте регистр.
Например: UserController, FileController, BookService.
Например: getUserName(), userLogin(), getMessage();
Например: MAX_STOCK_COUNT/CACHE_EXPIRED_TIME.
1) Метод получения одного объекта имеет префикс get.2) Методы получения нескольких объектов начинаются со списка и заканчиваются множественным числом, например: listObjects3) Метод получения статистических значений имеет префикс count.4) Метод вставки имеет префикс save/insert.5) Метод удаления начинается с удаления/удаления.6) Модифицированный метод имеет префикс update.
1) Объект данных: xxxDO, xxx — имя таблицы данных.2) Объект передачи данных: xxxDTO, xxx — имя, связанное с бизнес-сферой.3) Объект отображения: xxxVO, xxx обычно представляет собой имя веб-страницы.
Использование существующих объектов — большая ошибка. Для оценки рекомендуется использовать метод равенства.
Положительный пример:(1) Укажите диапазон ошибок. Если разница между двумя числами с плавающей запятой находится в этом диапазоне, они считаются равными.плавать а = 1.0Ф - 0,9Ф ;плавать б = 0,9Ф - 0,8Ф ;плавать разница = 1е-6Ф ;если ( Математика . абс ( а - б ) < разница ) {Система . вне . println ( "истинный" );}(2) Используйте BigDecimal для определения значения, а затем выполните операции с числами с плавающей запятой.BigDecimal а = новый BigDecimal ( "1.0" );BigDecimal б = новый BigDecimal ( "0.9" );BigDecimal c = новый BigDecimal ( "0.8" );BigDecimal x = а . вычитать ( б );BigDecimal y = б . вычитать ( с );если ( Икс . по сравнению с ( у ) == 0) {Система . вне . println ( "истинный" );}
тип идентификатора | Правила именования | пример |
Пакеты | Префикс уникального имени пакета всегда состоит из строчных букв ASCII и представляет собой доменное имя верхнего уровня, обычно com, edu, gov, mil, net, org или английский двухсимвольный код, идентифицирующий страну, указанную в документе 1981 года. Стандарт ИСО 3166. Последующие части имени пакета различаются в зависимости от внутренних соглашений об именах различных организаций. В таких соглашениях об именах может использоваться композиция конкретных имен каталогов для различения отделов, проектов, компьютеров или имен входа. | com.sun.eng com.apple.quicktime.v2 edu.cmu.cs.bovik.cheese |
Классы | Правила именования: Имя класса представляет собой существительное, написанное в смешанном регистре, с заглавной буквой каждого слова. Старайтесь, чтобы имена классов были краткими и информативными. Используйте полные слова, избегайте сокращений (если только аббревиатура не используется более широко, например URL, HTML). | класс Растр; класс ImageSprite; |
Интерфейсы | Правила именования: правила регистра аналогичны именам классов. | интерфейс RasterDelegate; Интерфейс Хранение; |
Методы | Имя метода представляет собой глагол в смешанном регистре, в котором первая буква первого слова строчная, а первая буква последующих слов — прописная.Верблюжий случай именования | бегать(); беги быстро(); получитьФон(); |
Переменные | За исключением имен переменных, все экземпляры, включая классы и константы классов, написаны в смешанном регистре: первая буква первого слова — строчная, а первая буква последующих слов — прописная. Имена переменных не должны начинаться со знака подчеркивания или доллара, хотя синтаксически это разрешено. Имена переменных должны быть короткими и описательными. Имена переменных следует выбирать так, чтобы их было легко запомнить, то есть чтобы они указывали на их назначение. | Список<User> Списокпользователей; Строка Имя пользователя; |
Константы | Объявления констант класса и констант ANSI должны быть написаны заглавными буквами, а слова разделяться подчеркиванием. (Старайтесь избегать констант ANSI, которые могут легко вызвать ошибки) | статическое конечное целое MIN_WIDTH = 4; статическое конечное целое MAX_WIDTH = 999; статическое конечное целое GET_THE_CPU = 1; |
а) ПОЛУЧИТЬ: получить ресурсы с сервера. (можно рассматривать как операцию выбора)б) POST: создайте новый ресурс на сервере. (можно рассматривать как операцию вставки)в) PUT: обновить ресурсы на сервере. (можно рассматривать как операцию обновления)г) УДАЛЕНИЕ: удалить ресурсы с сервера. (можно рассматривать как операцию удаления)
code
: код состояния http message
: Соответствующая текстовая информация. data
list
dict
- {
- "code": 200,
- "message": "new user has created",
- "data": {
- "id": "user-4d51faba-97ff-4adf-b256-40d7c9c68103",
- "firstName": "crifan",
- "lastName": "Li",
- "password": "654321",
- "phone": "13511112222",
- "createdAt": "2016-10-24T20:39:46",
- "updatedAt": "2016-10-24T20:39:46"
- ......
- }
- }
(3) Код состояния ответа
Ошибка:
2XX успех
200 ок (запрос успешен)
204 нет контента (запрос прошел успешно, но результат не возвращен)
206 частичное содержимое (клиент запрашивает часть ресурса, сервер успешно отвечает и возвращает диапазон ресурсов)
перенаправление 3XX
301 переехать навсегда (постоянное перенаправление)
Найдено 302 (временное перенаправление)
303 см. другое (указывает, что, поскольку для ресурса, соответствующего запросу, существует другой URI, следует использовать GET
Метод, направленный на получение запрошенного ресурса)
304 не изменено (указывает, что когда клиент использует условный доступ к ресурсу, сервер находит ресурс, но условия запроса не соответствуют условиям. К перенаправлению это не имеет никакого отношения)
307 временный редирект (то же значение, что и 302)
Ошибка клиента 4XX
400 плохой запрос (в сообщении запроса имеется синтаксическая ошибка)
401 не авторизован (требуется аутентификация (первый возврат) или аутентификация не удалась (второй возврат))
403 запрещено (запрос отклонен сервером)
404 не найден (запрошенный ресурс не найден на сервере)
Ошибка сервера 5XX
500 внутренняя ошибка сервера (ошибка произошла при выполнении сервером запроса)
503 служба недоступна (сервер перегружен или отключен на техническое обслуживание и не может обработать запрос)
проиллюстрировать: Ограничение по умолчанию для nginx составляет 1 МБ, а ограничение по умолчанию для tomcat — 2 МБ. Если существует деловая необходимость передать более крупный контент, вы можете увеличить лимит на стороне сервера.
проиллюстрировать: После успешного выполнения оператора return в блоке try он не возвращается немедленно, а продолжает выполнять оператор в блокеfinally. Если здесь есть оператор return, он возвращается прямо сюда, безжалостно отбрасывая точку возврата в блоке. попробуй заблокировать.
Ссылка: щелкните ссылку, чтобы загрузить apifox напрямую (просто загрузите последнюю версию). Apifox — интегрированная платформа для совместной работы над документацией API, отладкой, макетированием и тестированием. Он имеет такие функции, как управление документацией интерфейса, отладка интерфейса, макетирование и автоматическое тестирование, а эффективность разработки интерфейса, тестирования и совместной отладки увеличивается в 10 раз. Лучший инструмент управления документами интерфейса и инструмент автоматизации тестирования интерфейса.https://apifox.com/
1. Создайте свою команду и создайте новый проект:
Пригласите своих товарищей по команде
2. Создайте новый интерфейс и создайте новую модель данных:
(1) Определите, что это за запрос (POST, GET, PUT, DELETE):
(2) Тестовая среда должна быть единой, а URL-адреса в разных средах различаются:
(3) Параметры запроса настроены:
Какие параметры настроены? Предоставьте примеры параметров, названия на китайском языке и описания параметров.
(4) Ответ должен быть настроен:
Например, необходимо указать, какая информация возвращается в разных состояниях, а также должны быть примеры успеха и примеры исключений (для удобства фронтенда).
- {
- "code": 200,
- "message": "登入成功",
- "data": {
- "user_id": 27,
- "user_name": "孟霞",
- "user_password": "123456",
- "user_age": "15",
- "user_photo": "http://dummyimage.com/400x400",
- "user_last_time": "1996-12-11 09:03:49",
- "user_indentity": "messager",
- "user_birthday": "2024-02-23"
- }
- }
(5) Модель данных может быть создана:
Вы можете создать несколько моделей данных, что очень удобно для возврата полей ответа, а также удобно для внешнего интерфейса для просмотра ваших полей данных.
Характеристики написания и особенности апифокса.
Краткое руководство по Apifox | Справочная документация Apifoxhttps://apifox.com/help/
(1) В начале документа интерфейса API должно быть введение. Этот раздел может включать в себя следующее:
Цель этой части — дать читателям понять основную ситуацию и справочную информацию об интерфейсе API.
(2) Список интерфейсов
Далее в документе интерфейса API нам нужно перечислить все интерфейсы. Каждый интерфейс должен содержать следующую информацию:
Цель этого раздела — дать читателям возможность быстро понять основную информацию о каждом интерфейсе и правильно использовать интерфейсы на основе примеров в документе.
(3) Описание параметров запроса и параметров ответа.
После списка интерфейсов нам необходимо детализировать параметры запроса и параметры ответа для каждого интерфейса. В этом разделе должна быть указана следующая информация:
Для типов и форматов параметров вы можете использовать стандартные типы и форматы данных или определить свои собственные типы и форматы данных в соответствии с конкретными обстоятельствами. Необходимость определения обязательных значений и значений по умолчанию должна определяться исходя из реальной ситуации.
(4) Описание кода ошибки
При использовании интерфейса API иногда возникает ошибка. В этом случае необходимо вернуть код ошибки, чтобы объяснить тип и причину ошибки. Поэтому в документации интерфейса API нам необходимо указать все возможные коды ошибок. В этом разделе должна быть указана следующая информация:
Цель этого раздела — дать читателю понять все возможные типы и причины ошибок, а также уметь правильно обрабатывать ошибки на основе примеров в документации.
(1) Конкретные операции:
Определить тестовый класс
предположение:
Имя тестового класса: Имя тестируемого класса Test CalculatorTest
Имя пакета: xx.xx.xx.test cn.itcast.test
Определить методы тестирования: можно запускать независимо
предположение:
Имя метода: имя тестового метода testAdd()
Возвращаемое значение: недействительно
Список параметров: пустые параметры
Добавьте @Test в метод
Импортировать среду зависимостей Junit
результат решения:
Красный: не удалось
зеленый: успех
Обычно мы используем статический метод AssertEquals(ожидаемый, фактический) в классе Assert для обработки ожидаемых результатов и результатов вывода.
Утверждать.assertEquals(3, результат);
Двумя параметрами являются: ожидаемое значение, значение результата программы.
Зачем использовать Assert.assertEquals(ожидаемое, фактическое) для обработки результатов теста?
Потому что мы оговариваем, что красный цвет означает неудачу, а зеленый — правильность. Когда мы используем метод тестирования для проверки метода сложения компьютера, мы выводим только этот результат (при условии, что исключений не возникает). Если мы введем 1 и 3, мы ожидаем получить результат 4, но на выходе мы получим 2, а ожидаемый результат — 4. Результат, полученный в этот момент, не соответствует нашим ожиданиям, но текущий результат все еще зеленый. (представляет правильно). Разве это не правильно? В настоящее время мы можем использовать метод AssertEquals в конце, чтобы сравнить ожидаемое значение и значение результата, выдаваемое программой. Если они равны, оно будет зеленым и. если они не равны, он будет красным. Соответствует ли это время нашему определению зеленого и красного?
- package cn.itcast.test;
-
- import cn.itcast.junit.Calculator;
- import org.junit.Assert;
- import org.junit.Test;
-
- public class CalculatorTest {
- /**
- * 测试add方法
- */
- @Test
- public void testAdd(){
- Calculator c = new Calculator();
- int a = 1, b = 2;
- int result = c.add(1, 2);
- Assert.assertEquals(3, result);
- }
-
- /**
- * 测试sub方法
- */
- @Test
- public void testSub(){
- Calculator c = new Calculator();
- int a = 1, b = 2;
- int result = c.sub(1, 2);
- Assert.assertEquals(-1, 2);
- }
- }
-
@До
Добавьте @Before перед методом тестирования, и он станет методом инициализации. Этот метод будет автоматически выполняться перед выполнением всех методов тестирования. Обычно он используется для приложения ресурсов.
@После
Добавьте @After перед методом тестирования, и он станет методом освобождения ресурсов, который будет автоматически выполняться после выполнения всех методов тестирования.
Метод, украшенный @Before, будет выполнен до выполнения тестового метода.
Метод, украшенный @After, будет выполнен после выполнения тестового метода.
Методы, измененные с помощью @Before или @After, будут выполняться независимо от того, используется ли тестовый метод.
(2) Автоматическое создание плагинов тестового класса.
(1) При написании документа интерфейса на внутренней стороне он должен быть написан четко и ясно, чтобы ваш интерфейс мог его понять. Он должен быть написан стандартизированным образом. Не пишите его так, чтобы вы могли понять его самостоятельно. Переписанное имя и ответ интерфейса значения по умолчанию должны быть написаны правильно.
(2) В дополнение к тому, чему вас обучают, вы можете самостоятельно изучить некоторые другие вещи, такие как регистрация для проверки электронной почты, вход с кодом подтверждения, c3p0, шифрование MD5, журналы журналов, стиль результатов и т. д.
(3) Написание кода также должно быть стандартизировано, а логика должна быть строгой; настройки (файлы cookie, сеансы) там, где необходимы пустые суждения, должны быть сделаны пустыми суждениями, а там, где можно повысить безопасность, вы можете извлечь из этого уроки.
(4) Фронтенд и бэкэнд должны хорошо взаимодействовать. Не позволяйте бэкэнду просто делать свое дело, не сказав ни слова фронтенду. Интерактивный ответ внешнего и внутреннего интерфейса также является частью оценки, на которую приходится большая часть. Интерфейс, который вы написали, не может быть запущен только через apifox. Есть ли какие-либо ошибки при представлении на конкретной странице внешнего интерфейса. ? Есть ли какие-либо логические проблемы и т. д. Возможно, стоит подумать.
(5) Во время анализа спроса укажите функции и интерфейсы, которые вы хотите выполнить. Если вы выполнили некоторые функции, но внешний интерфейс их не выполнил, вы можете их реализовать, если то, что они сделали, требует вашего внутреннего интерфейса. интерфейсы/данные, если не написал, то размышляйте внимательно и общайтесь больше.
Вы можете сравнивать проекты, которые действительно работают, или что-то подобное, например, торговый веб-сайт. Затем вам следует сравнить с Taobao внутренние интерфейсы этого веб-сайта, функциональные модули, которые он может иметь, и конкретные детали.
(6) Не стремитесь слепо к большему, будьте логичны и разумны и научитесь упрощать те части, которые можно упростить. Но базовое количество интерфейсов и объем кода также должны быть гарантированы. (Изначально написанные нами интерфейсы насчитывали более 40)