Это 98-я оригинальная статья без воды.Если вы хотите получить больше оригинальных статей, выполните поиск в общедоступном аккаунте и подпишитесь на нас~ Эта статья была впервые опубликована в блоге Zhengcaiyun:SpreadJS для исследования визуализации данных
Введение
Визуализация данных состоит из трех ветвей: научная визуализация, визуализация информации и визуальный анализ.
1. Научная визуализация в основном связана с визуализацией трехмерных явлений, таких как различные системы в архитектуре, метеорологии, медицине или биологии. Основное внимание уделяется реалистичной отрисовке объемов, лиц, источников света и т. д. и, возможно, даже какой-то динамической составляющей.
2. Визуализация информации – это изображение, сочетающее в себе данные и дизайн, которое выгодно отдельным лицам или организациям для быстрого и эффективного распространения информации среди аудитории.
3. Визуальная аналитика определяется как наука об анализе и рассуждении, основанная на визуальном интерфейсе, который объединяет графику, интеллектуальный анализ данных, взаимодействие человека с компьютером и другие технологии для формирования взаимодополняющего и взаимного улучшения интеллекта человеческого мозга и машинного интеллекта.
Визуальные отчеты являются высшим приоритетом в визуальном анализе, который может быстро отображать большой объем данных и гибко выполнять операции с данными, включая фильтрацию данных, ассоциацию, связывание, детализацию, запрос копирайтинга, замену и настройку стиля.Внедрение условного форматирования реализует многоуровневые, наборы значков, гистограммы, повторяющиеся значения и вставка формул, связь между таблицами и т. д. SpreadJS является наиболее заметным в решении отчетов визуального анализа.Ниже мы обсуждаем только роль SpreadJS в визуальном анализе.
2. Сложности с визуализацией отчета
Индустрия услуг электронной коммерции в Интернете обычно обрабатывает большой объем деловой информации и информации о пользователях.Основными пользователями отчета являются специалисты по обслуживанию клиентов и аналитики данных.
Служба поддержки клиентов обычно обрабатывает большое количество рабочих заказа на заполнение заказа, регистрации жалобы клиентов, импортных данных из сторонних платформ, статистического сводка, рассмотрения и утверждения, электронная подпись, распределение и другая работа каждый день. Обычно носитель большинства рабочей информации представляет собой Excel, и сервер необходимо обрабатывать большое количество документов каждый день. Поскольку данные самого документа Excel сложно извлечь и хранить, не удобно распространять шаблон обновления Оператор в первый раз, и это трудно интегрировать его на веб-страницу. И другие вопросы.
Аналитикам данных необходимо получить данные для обобщения, рассчитать продажи каждой товарной марки, максимальное значение, минимальное значение, среднее значение и т. д., а также определить ценные данные. Возьмите достоверные данные и сделайте доклад боссу.
Для приведенных выше сценариев визуализация отчета может суммировать следующие трудности:
1. Параллелизм
В компании работает большое количество персонала по обслуживанию клиентов, тысячи людей одновременно активно работают в сети, цикл делового оборота короткий, а объем данных велик, поэтому одновременное потребление производительности сервера очень велико. Apache POI можно использовать в фоновом режиме для извлечения и изменения данных Excel, выполнения расчетов по формулам и многого другого. Это столкнется с двумя узкими местами производительности:
1) Документы необходимо часто загружать и скачивать, а пропускная способность сервера находится под большим давлением;
2) Все операции синтаксического анализа и извлечения Excel выполняются на стороне сервера, и сервер перегружен частыми операциями ввода-вывода.
Вышеуказанные два показателя производительности трудно превзойти при текущей архитектуре, что также является одним из самых сложных требований при рефакторинге проекта. Конечно, конфигурация сервера с жесткой кучей также является решением, но она не может решить некоторые другие проблемы, а также усложняет эксплуатацию и техническое обслуживание.
2. Для операций Excel иТребования к совместимости высокие
Если новая система не может быть использована всеми быстро, стоимость обучения будет непосильной для размера пользователей этого проекта. И иметь возможность напрямую импортировать существующие шаблоны отчетов Excel, иначе было бы неприемлемо заново разрабатывать или проектировать все отчеты Excel.
3. Формат отчета является гибким и изменчивым
Шаблон отчета — это тоже тысяча переменных. Поэтому нет необходимости развивать вмешательство, на странице может быть важнее дизайн оператора и начинки.
4. Расчет формулы поддержки
Поскольку он включает в себя такие модули, как товары, заказы, учет затрат, финансовая статистика и т. д., он предъявляет высокие требования к типам и производительности расчетных формул.
5. Документы данных в рабочем процессе
В предыдущем системном рабочем процессе, когда речь идет об отчетах Excel, либо данные будут собираться на сервере и шаблоне Excel, либо система будет находить файл Excel на файловом сервере по пути, а затем перетекать в соответствующий связь. Некоторые новые бизнес-модули могут даже использовать электронную почту только для передачи файлов.
Этот процесс будет генерировать большое количество файлов, что создаст большую нагрузку на файловый сервер.Фон также должен выполнять разбиение и обслуживание пакетных данных на регулярной основе. На этот раз система обновления должна решить эту проблему.
3. Подумайте, как выбрать
Прежде всего, первым шагом в выборе является выяснение того, какие продукты доступны на рынке, из которых мы можем выбирать.На рынке существует множество продуктов, которые можно интегрировать в систему и поддерживать этот вид редактирования документов в онлайн-форме. Вообще говоря, я разделил их на две категории.
1. Продукты типа облачных документов
Таких продуктов много, например WPS, графитовые документы, офис онлайн. Они имеют высокую степень завершенности и помогли пользователям реализовать почти все функции, включая онлайн-сотрудничество, и даже поддерживают определенную степень вторичной разработки и могут быть развернуты в частном порядке. Но проблема в том, что эти продукты обычно относительно закрыты, а вторичная заказная разработка относительно сложна и недостаточно легковесна. Методы авторизации в основном авторизуются по времени, параллелизму, количеству пользователей и т. д., что дорого и не очень подходит для наших нужд.
2. Продукты типа управления
Стандартные элементы управления, такие как LuckySheet, Handsontable и SpreadJS, представляют собой чистые интерфейсные табличные элементы управления, поддерживающие функции Excel и привязку данных json.
LuckySheetЭто внутреннее программное обеспечение MIT с открытым исходным кодом, которое можно использовать в коммерческих целях. Но когда я исследовал его, он был запущен всего 1 или 2 месяца, и, в отличие от React, он был одобрен крупной компанией, поэтому использовать его в нашем официальном проекте было невозможно. Прошел уже год, и платформы для общения, такие как группы QQ и форумы, запускались одна за другой, но они все еще слабы.
HandsontableЭто иностранная коммерческая форма контроля.Говорят, что есть много вторичных ям разработки, но самая большая проблема для нас заключается в том, что у него нет китайской группы поддержки.
SpreadJSЭто коммерческий элемент управления формой Excel от Grape City.Интересно, я обнаружил, что в области комментариев под LuckySheet на V2EX автор LuckySheet также сказал, что SpreadJS является отраслевым эталоном. Он поддерживает импорт большинства функций Excel, включая формулы, диаграммы, стили, условное форматирование (макросы не поддерживаются). И самое удивительное, что его рабочий интерфейс представляет собой полноценный интерфейс Excel, полностью разработанный на чистом JS, с использованием json для взаимодействия с шаблонами и данными. В то же время SpreadJS также имеет соответствующую группу послепродажной поддержки.Технические проблемы могут быть сообщены по телефону или форуму в любое время в течение рабочего дня.Соответствующие материалы включают видео, документы, примеры и руководства по API.Они также очень богаты, и они могут даже пригласить своих технических консультантов в компанию для обучения. Для такой проектной группы, как наша, с коротким периодом строительства и тяжелыми задачами разработки, это действительно может сэкономить много энергии и снизить риски.
Источник изображения:Онлайн-редактор Excel SpreadJS
Так что же такое элементы управления? Зачем использовать элементы управления?
Ссылка на ВикипедиюВ компьютерном программировании,контролирует(иличасть, виджет или элемент управления)графический интерфейсэлементы, расположение отображаемой информации в которых может быть изменено пользователем, напр.ОкнаилиТекстовое окно. Характерной чертой определения элемента управления является предоставление единой точки взаимодействия для прямого манипулирования заданными данными. Элемент управления — это базовый визуальный строительный блок, включенный в приложение и контролирующий все данные, которые программа обрабатывает и взаимодействует с этими данными.
Согласно моему собственному пониманию, элемент управления — это функциональный модуль, который обеспечивает только основные функции и поддерживает вторичную разработку. относительный контрольменее зависимый,пластичностьлучше, и есть соответствующиеДокументация по разработке и API, представляет собой базовый пакет функций для разработчиков, функции которого легко настроить в соответствии с требованиями.
В-четвертых, решения и преимущества требований SpreadJS
1. Параллелизм
из-заSpreadJS предназначен для разделения данных и шаблонов., заполняющему персоналу нужно только завершить заполнение на странице. При отправке вы можете отправлять только заполненные данные в формате json, и серверу больше не нужно централизованно анализировать все файлы Excel. Потребление полосы пропускания также напрямую сокращается вдвое.
2. Более высокие требования к эксплуатации Excel и совместимости
Во внутренних испытаниях, финансовых и клиентских отзывах маленьких сестер,Опыт почти идентичен Excel, дальнейшее обучение не требуется. и наша собственная массаОтчеты Excel можно импортировать напрямуюВойдите (пакетный и удаленный импорт также можно реализовать после вторичной разработки), ряд элементов, включая диаграммы, формулы, стили таблиц и т. д., можно напрямую импортировать в онлайн-операции.
3. Формат отчета гибкий и изменчивый
Дизайнеры могут напрямую проектировать в Интернете или перенести отчет, созданный в Excel, в веб-интерфейс и хорошо поработать.привязка данных, отправьте и сохраните его в формате json (формат ssjson Spread JS включает всю информацию документа Excel)
4. Расчет формулы поддержки
Поддерживает более 450 формул (более 480 в Excel), вы также можете сами разработать расширенные пользовательские формулы, которых достаточно для финансов. ТакжеПоддерживает все справочные операции Excel, такие как перекрестные ссылки, абсолютные ссылки, информация об именах функций и т. д.
5. Документы данных в рабочем процессе
В основном избавиться от зависимости от файла, все состояния процессов и зависимые данные могут быть записаны в базу данных, а файловому серверу нужно лишь сохранить небольшое количество шаблонных документов (фактически, когда количество шаблонов невелико, его можно сразу поместить в базу данных, но у нас есть готовый файловый сервер). Это экономит 90 % пространства, занимаемого нашим файловым сервером, а партнерам по эксплуатации и обслуживанию приходится просыпаться посреди ночи.
Пять, углубленный SpreadJS
Дело вот в чем: на самом деле, что меня больше всего интересует как разработчика интерфейса, так это часть базовой конструкции SpreadJS, а также оптимизация баланса памяти и производительности. Я провел много исследований и исследований по этому поводу, но, к счастью, нетрудно найти информацию по этому поводу, которую часто можно найти вОткрытая секция официального форума Виноградного городаОбнаружены некоторые связанные технологии, чтобы поделиться. Ниже приводится краткое изложение того, что я узнал:
1. Производительность рендеринга
Производительность, безусловно, является самой большой проблемой для каждого пользователя Deep Form Control. Объем данных у нас часто достигает нескольких тысяч штук, а Excel неудобен для разбиения на страницы (задействуя итоговую формулу расчета фронтенда), поэтому я очень переживаю при выборе. Позже я обнаружил, что слишком много думал. SpreadJS может легко загрузить 500 000 фрагментов данных. Загрузка занимает около 200 мс (Пример демонстрации производительности официального сайтаМожно загрузить только 50 000, а мы сами выбрали 500 000). После глубокого понимания они поняли, что для решения этой проблемы их мышление выглядит следующим образом:
- Рендеринг в реальном времени + двойная буферизация (в переводе на двойную буферизацию?):
Используйте Canvas для рендеринга части таблицы и рендеринга только той части контента, которую видит пользователь, что реализует быструю загрузку 1000 строк и 100000 строк данных, а производительность не сильно отличается.
Двойная буферизация предназначена для решения проблемы непрерывного опыта непрерывного рендеринга, а также может еще больше повысить скорость рендеринга. Подсчитано, что мало кто слышал этот термин, но каждый должен был с ним столкнуться.Двойная буферизация обычно называется двойной буферизацией в графике.Фактическая команда рисования выполняется в буфере.Рисование здесь происходит очень быстро.После инструкции по рисованию законченный график немедленно отображается на экране с помощью инструкции по обмену, что позволяет избежать неполного рисования и имеет высокую эффективность. На самом деле это очень распространено в играх.Когда персонаж, которым мы управляем, работает на карте, игровой движок будет загружать и отображать карту в режиме реального времени в соответствии с направлением движения персонажа, что позволяет избежать длительного ожидания при загрузке большой карты. в одно время.
Источник изображения:Открытый курс Grape City [Оптимизация производительности SpreadJS]
- Разреженный массив:
SpreadJS оптимизирует хранение табличных данных, используя структуру данных разреженного массива. Разреженные массивы часто используются для оптимизации объема памяти двумерных массивов (таких как шахматные доски, карты и т. д.), но у них есть свой недостаток — низкая скорость доступа.
Так что в ответ на этот вопрос в свое время я сделал на нем стресс-тест, и обход миллионного уровня занял более 200 мс. Производительность может удовлетворить наши потребности.
2. Вычислительный движок
Согласно официальному представлению, механизм формул фактически включает две части: одна — система логики вычислений, а другая — система отсчета.
- система цитирования
Вычисление формул в Excel зависит от некоторых исходных данных, таких как ссылки C1 на B1, ссылки B1 на A1 и т. д. SpreadJS инкапсулирует эту часть функции очень естественно, и разработчикам не нужно беспокоиться об этом (если только нет ссылается на особые потребности, такие как поиск с возвратом).
В Excel есть прямые ссылки, ссылки между листами, относительные/абсолютные ссылки, ссылки на информацию об именах, ссылки на формулы строк и столбцов таблицы, ссылки между книгами и т. д. Среда выполнения SpreadJS находится на веб-странице, поэтому не думайте о межкнижных ссылках, по крайней мере, в данный момент она определенно не поддерживается.
- вычислительная логика
СУММ, ЕСЛИ, ПОИСКПОЗ, ВПР, формулы расчета, которые можно вводить в ячейки, используются как небольшие «логические пакеты».В настоящее время SpreadJS имеет более 460 собственных функций формул, в то время как Excel имеет только 490+, а SpreadJS может настраивать формулы , а опыт такой же, как и у нативных формул.
Фактически, для базовой реализации после нескольких версий итераций эти формулы больше не являются независимыми «логическими островами». Реализация формулы имеет много абстракции и повторного использования на нижнем уровне.Говорят, что новая версия улучшает производительность, а размер кода значительно проще, чем старая версия, которая также более удобна для упаковки переднего плана. конечные проекты.
Для реализации вычисления вложенной формулы SpreadJS строит дерево AST внизу для разбора логики вычисления формулы, заданной пользователем.Из кода официального примера внизу формулы устанавливается набор выражений, и есть соответствующий публичный интерфейс для вызова, как показано на рисунке:
Источник изображения:[Отображение дерева структуры формулы SpreadJS]
- представление
Прежде всего, в качестве передовой технологии мы можем сначала проанализировать возможные узкие места и влияние производительности на технические требования расчета формулы. Мы используем много пользовательских событий, грязных данных, связывания и других функций в разработке.Важной предпосылкой для всех этих функций для обеспечения правильной работы является то, чтоДолжна быть возможность гарантировать, что правильный результат вычисления может быть получен в любое время, поэтому наиболее прямая идея реализации состоит в том, чтобы позволить формуле выполнять вычисление высокоприоритетным и синхронным образом..
Мы все знаем, что многопоточность может помочь распределить вычислительную нагрузку, но помимо трудностей проектирования и реализации, JavaScript является строго однопоточным языком, даже если он поддерживает Web Worker, потому что его подпотоки Web Worker полностью контролируются основной поток, а основной поток нельзя заблокировать и приостановить. Таким образом, даже если Web Worker будет представлен, упомянутое выше синхронное выполнение не может быть гарантировано.
После приведенного выше анализа видно, что ограничение производительности вычисления формулы зависит от вычислительной мощности JavaScript. Я нашел соответствующую картинку, которая может напрямую отражать вычислительную мощность Node.js (Node.js — это движок V8, признанный самым быстрым движком JS)
Картинка взята из «Введение в Node.js».
А SpreadJS официально дает расчетные данные набора формул, ссылка такая:
Согласно нашим тестам, приведенная выше вычислительная производительность близка к производительности нативного JS, а оптимизация SpreadJS в этом отношении очень близка к физическому пределу. В настоящее время в нашем сценарии применения этой вычислительной производительности достаточно для использования, но это не исключает того, что в будущем возникнет большой объем данных и требований к вычислению формул, и в связи с этим официальный представитель также дал соответствующие решения,обратитесь сюда.
Говорят, что чиновник все еще развивает технологию кэширования для реализации блочного кэширования вычисления формулы: даже если значение в цепочке ссылок изменяется, нет необходимости вычислять формулу всей цепочки ссылок. Звучит очень мощно, а идеи надежны, надеюсь скоро запустят.
3. Система стилей
Система стилей Excel очень сложна. Каждая функциональная точка, такая как границы, шрифты, выравнивание, форматирование данных, условное форматирование и т. д., имеет очень гибкую и масштабную реализацию. Когда я впервые узнал о SpreadJS, я был ошеломлен его классом Style, кроме того, я могу представить границы, фоны, шрифты, выравнивание и т. д., которые могут быть «видимыми», но есть также типы ячеек, форматы данных, кнопки таблиц, раскрывающиеся списки, водяные знаки и другие вещи. Не могу не вздохнуть, что Style слишком тяжелый, если настраивать большое количество стилей ячеек, память и производительность точно будут плохими. Однако в практических приложениях узких мест обнаружено не было, оказалось, что здесь для проектирования использовалась многоуровневая структура, как показано на рисунке:
Источник изображения:Открытый курс Grape City [Оптимизация производительности SpreadJS]
6. Как использовать SpreadJS?
1. Рендерим таблицу
Рис. 6.1—1 Привязка данных и формул
Сначала получите глобальный объект разворота, разворот — это основная часть всей таблицы, а разворот разделен на несколько листов. Когда SpreadJS инициализируется, он возвращает объект распространения.
- объект распространения версии vue
<gc-spread-sheets @workbookInitialized='spreadInitHandle($event)' />
methods:{
spreadInitHandle: function (spread) {
this.spread = sprea
},
}
- связать данные, связать формулу
tableDataBind() {
// 数据源,可以从后台请求拿到
var dataSource = {
// 注意这里加了一层bindPath,用于映射表格的绑定路径
bindPath_table: [{
c1: 100,
c2: 90,
c3: 30,
c4: 40
}, {
c1: 88,
c2: 66,
c3: 55,
c4:100
}, {
c1: 30,
c2: 89,
c3: 100,
c4: 40
},{
c1: 40,
c2: 66,
c3: 88,
c4: 40
}]
};
// 表格绑定和单元格绑定数据源,需要用SpreadJS的CellBindingSource包装一下
var spreadNS = GC.Spread.Sheets;
var dataSource1 = new spreadNS.Bindings.CellBindingSource(dataSource);
var table2 = this.activeSheet.tables.add("tableName", 0, 0, 1, 5, spreadNS.Tables.TableThemes.light6);
table2.showFooter(true);
table2.autoGenerateColumns(false);
var c1 = new spreadNS.Tables.TableColumn(1);
c1.name("语文");
c1.dataField("c1");
var c2 = new spreadNS.Tables.TableColumn(2);
c2.name("数学");
c2.dataField("c2");
var c3 = new spreadNS.Tables.TableColumn(3);
c3.name("英语");
c3.dataField("c3");
var c4 = new spreadNS.Tables.TableColumn(4);
c4.name("化学");
c4.dataField("c4");
var c5 = new spreadNS.Tables.TableColumn(5);
c5.name("合计");
table2.bindColumns([c1, c2, c3, c4, c5]);
table2.bindingPath("bindPath_table");
// 设置公式
table2.setColumnDataFormula(4, "=[@语文]+[@数学]+[@英语]+[@化学]");
table2.setColumnFormula(4, "=SUBTOTAL(109,[合计])");
// 设置允许单元格的内容超出单元格,与绑定无关
this.activeSheet.options.allowCellOverflow = true;
// 绑定dataSource
this.activeSheet.setDataSource(dataSource1);
this.spread.resumePaint();
},
Рис. 6.1—2 Таблица сопоставления имен функций и кодов функций2. Рендеринг условного форматирования
Рендеринг условного форматирования: завершение рендеринга данных может только гарантировать, что данные могут отображаться нормально, но это не может удовлетворить потребности аналитиков данных, и необходимо четко отображать действительные данные, такие как: максимальное значение и минимальное значение отмечено красным, а индикатор прогресса показывает изменение состояния.Отображение значка поднимается или опускается, двухуровневое, трехуровневое и т. д. Как этого добиться?
- Набор иконок: эффект показан на рисунке
- код реализации
iconset() {
var activeSheet = this.activeSheet;
var iconSetRule = new GC.Spread.Sheets.ConditionalFormatting.IconSetRule();
// 演示demo先写死区域
iconSetRule.ranges([new GC.Spread.Sheets.Range(0,0, 5, 5)]);
// IconSetType图标志的类型:箭头,圆圈和execl 打通的,excel有哪些这这边就支持哪些
iconSetRule.iconSetType(GC.Spread.Sheets.ConditionalFormatting.IconSetType.threeArrowsColored);
var iconCriteria = iconSetRule.iconCriteria();
iconCriteria[0] = new GC.Spread.Sheets.ConditionalFormatting.IconCriterion(
true,
GC.Spread.Sheets.ConditionalFormatting.IconValueType.number,
60
);//(<60)
iconCriteria[1] = new GC.Spread.Sheets.ConditionalFormatting.IconCriterion(
true,
GC.Spread.Sheets.ConditionalFormatting.IconValueType.number,
90
);//(60<= <90)
iconCriteria[2] = new GC.Spread.Sheets.ConditionalFormatting.IconCriterion(
true,
GC.Spread.Sheets.ConditionalFormatting.IconValueType.number,
90
);//(>=90)
iconSetRule.reverseIconOrder(false);
iconSetRule.showIconOnly(false);
activeSheet.conditionalFormats.addRule(iconSetRule);
},
- Индикатор выполнения: эффект показан на рисунке.
- код реализации
dataBar(){
var activeSheet = this.activeSheet;
activeSheet.conditionalFormats.addDataBarRule(
GC.Spread.Sheets.ConditionalFormatting.ScaleValueType.number,0,//最小数
GC.Spread.Sheets.ConditionalFormatting.ScaleValueType.number, 100,//最大值
"orange",//颜色
[new GC.Spread.Sheets.Range(0,0, 5, 4)]
);
},
- Значение повтора: эффект показан на рисунке.
- код реализации
duplicateValue() {
var activeSheet = this.activeSheet;
var style = new GC.Spread.Sheets.Style();
style.backColor = "yellow";
style.foreColor = "red";
var ranges = [new GC.Spread.Sheets.Range(0,0, 5, 4)];
activeSheet.conditionalFormats.addDuplicateRule(style, ranges);
},
- Ячейка с текстом 6: эффект показан на рисунке
- код реализации
includeText() {
var activeSheet = this.activeSheet;
var style = new GC.Spread.Sheets.Style();
style.backColor = "red";
var ranges = [new GC.Spread.Sheets.Range(0,0, 5, 5)];
activeSheet.conditionalFormats.addSpecificTextRule(
GC.Spread.Sheets.ConditionalFormatting.TextComparisonOperators.contains, "6", style, ranges
);
},
- На основании приведенных выше результатов показано достижение
Семь, написанные в последнем
Эта статья в основном знакомит с некоторыми из моих исследований в области визуализации данных и будет полезна некоторым студентам, которые готовятся к исследованиям рынка, отчетам о подписке по электронной почте, онлайн-сотрудничеству и визуальному анализу.
Из-за длины пространства задействовано много концептуальных вещей, и неизбежно будут возникать ошибки.Я надеюсь, что все меня поправят, спасибо!
Рекомендуемое чтение
Реализуйте экспозицию переднего плана и скрытых точек с помощью пользовательских инструкций Vue.
Схема кэширования списка страниц H5
Карьера
ZooTeam, молодая, увлеченная и творческая команда, связанная с отделом исследований и разработок продукции Zhengcaiyun, базируется в живописном Ханчжоу. В настоящее время в команде более 40 фронтенд-партнеров, средний возраст которых составляет 27 лет, и почти 30% из них — инженеры полного стека, настоящая молодежная штурмовая группа. В состав членов входят «ветераны» солдат из Ali и NetEase, а также первокурсники из Чжэцзянского университета, Университета науки и технологий Китая, Университета Хандянь и других школ. В дополнение к ежедневным деловым связям, команда также проводит технические исследования и фактические боевые действия в области системы материалов, инженерной платформы, строительной платформы, производительности, облачных приложений, анализа и визуализации данных, а также продвигает и внедряет ряд внутренних технологий. Откройте для себя новые горизонты передовых технологических систем.
Если вы хотите измениться, вас забрасывают вещами, и вы надеетесь начать их бросать; если вы хотите измениться, вам сказали, что вам нужно больше идей, но вы не можете сломать игру; если вы хотите изменить , у вас есть возможность добиться этого результата, но вы не нужны; если вы хотите изменить то, чего хотите достичь, вам нужна команда для поддержки, но вам некуда вести людей; если вы хотите изменить установившийся ритм, это будет "5 лет рабочего времени и 3 года стажа работы"; если вы хотите изменить исходный Понимание хорошее, но всегда есть размытие того слоя оконной бумаги.. , Если вы верите в силу веры, верьте, что обычные люди могут достичь необыкновенных вещей, и верьте, что они могут встретить лучшего себя. Если вы хотите участвовать в процессе становления бизнеса и лично способствовать росту фронтенд-команды с глубоким пониманием бизнеса, надежной технической системой, технологиями, создающими ценность, и побочным влиянием, я думаю, что мы должны говорить. В любое время, ожидая, пока вы что-нибудь напишете, отправьте это наZooTeam@cai-inc.com