После недавней смены работы я уже несколько месяцев пишу о своем бизнесе. После того, как потребности закончились, найдите то, о чем вам нравится писать, и измените свой вкус.
Самая сложная часть кодирования — это присвоение имен переменным. Так что просто напишите генератор переменных.
Демонстрация выглядит следующим образом:
Идеи реализации:
Используйте самые известные инструменты повышения производительности на своем MacAlfred
. использоватьAlfred
позвони на местныйpython
Скрипт с помощью модуля http запрашивает удаленный интерфейс API.
После того, как удаленный API получит символы запроса, сначала используйте结巴分词
, сегментируйте предложение запроса, а затем вызовите перевод API Youdao Dictionary и верните его после объединения.
В конце концов, одним нажатием можно занести результат в нашу IDE, что сокращает массу операций, и мама больше не будет переживать, что я не могу получить имя переменной.
Реализация API:
Поскольку я говорю другой вкус, я определенно не буду использовать «Spring mvc» для API.
В основном используется «vertx», полностью асинхронная библиотека Java, основанная на «netty». Заинтересованные студенты могут обратиться кvartx.io.
Управляйте жизненным циклом объектов с помощью Spring boot.
Используйте «причастие заикания» для токенизации запроса.
Используйте кеш гуавы для кэширования результатов запроса. Зачем кешировать? Основная причина в том, что API перевода Youdao платный, после проверки и кэширования результатов можно немного сэкономить.
А зачем использовать локальный кеш вместо Redis? Потому что Redis от Alibaba Cloud стоит 25 юаней в месяц. Построить самому? Всего на моем vps всего 1 ГБ оперативной памяти.
В конечном счете, архитектурный проект должен учитывать реальную ситуацию, и слепо полагаться на высокие технологии не рекомендуется. Подгонка самая лучшая.
vertx-web
написалnetty
студенты знают, чтоnetty
Бизнес-логика написана наhandler
середина.
такой жеvertx
также похож наnetty
также использоватьhandler
для обработки запроса.
vertx направляет запросы к разным обработчикам через класс Router. Итак, давайте посмотрим непосредственно на код:
@Component
public class StaticServer extends AbstractVerticle {
@Autowired
private VariableHandler variableHandler;
@Override
public void start() throws Exception {
Router router = Router.router(vertx);
router.route().handler(BodyHandler.create());
router.post("/api/hump").handler(routingContext ->variableHandler.get(routingContext));
vertx.createHttpServer().requestHandler(router::accept).listen(8080);
}
}
мы кладемVariableHandler
Он привязан к почтовому методу uri ‘/api/hump’. После запуска сервер будет прослушивать порт 8080. Для работы vertx-web не требуется такой контейнер, как tomcat.
RestTemplate
Мы обычно используемHttpclient
Вызовите интерфейс http в своем коде. Но я думаю, что пакет HTTPClient не очень хорош. мы можем напрямую использоватьSpring boot web
Предоставлен RestTemplate (действительно ароматный). Посмотрите прямо на код:
private ApiResponse requestYoudao(String param){
long timeMillis = System.currentTimeMillis();
String salt = String.valueOf(timeMillis);
String sign = Md5Utils.md5(appKey + param + salt + secretKey);
MultiValueMap<String,String> bodyMap = new LinkedMultiValueMap<>();
bodyMap.add("q",param);
bodyMap.add("from","auto");
bodyMap.add("to","auto");
bodyMap.add("appKey",appKey);
bodyMap.add("salt",salt);
bodyMap.add("sign",sign);
MultiValueMap<String,String> headersMap = new LinkedMultiValueMap<>();
HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<>(bodyMap, headersMap);
return restTemplate.postForObject(url, requestEntity,ApiResponse.class);
}
Guava
Guava — это класс базовой библиотеки Java, предоставляемый Google.Если вы можете использовать Guava, эффективность вашей разработки удвоится. В этом проекте в основном используются локальный кеш и строковые операции, предоставляемые Guava:
Использование кеша Guava очень просто, если смотреть на код напрямую:
@Autowired
private Cache<String,ApiResponse> cache;
private ApiResponse cachedResponse(String param){
try {
return cache.get(param, () -> requestYoudao(param));
}catch (Exception e){
log.error("error",e);
}
return null;
}
Guava предоставляет множество мощных манипуляций со строками. В частности, он обеспечивает мощную поддержку символов подчеркивания строк, использования заглавных букв и верблюжьего регистра. Это позволяет нашему API предоставлять различные стили переменных форм. Давайте посмотрим непосредственно на генерацию:
switch (status){
case Constants.LOWER_CAMEL:
return CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL,underline);
case Constants.LOWER_HYPHEN:
return CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.LOWER_HYPHEN,underline);
case Constants.LOWER_UNDERSCORE:
return CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.LOWER_UNDERSCORE,underline);
case Constants.UPPER_CAMEL:
return CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.UPPER_CAMEL,underline);
case Constants.UPPER_UNDERSCORE:
return CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.UPPER_UNDERSCORE,underline);
default:
return CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL,underline);
}
Выше приведена реализация интерфейса API.
скрипт питона
Локальный скрипт на Python чрезвычайно прост:
# -*- coding:utf-8 -*-
import httplib,urllib,json
url = 'xilidou.com'
def query(q,status=0):
response = get(q,status)
dates = json.loads(response.read())
items = list()
for date in dates:
item = {}
item['title'] = date.encode('utf-8')
item['arg'] = date.encode('utf-8')
item['subtitle'] = '回车复制'
item['icon'] = getIcon()
items.append(item)
jsonBean = {}
jsonBean['items'] = items
json_str = json.dumps(jsonBean)
if json_str:
print json_str
return str
def get(q,status=0):
parameters= dict()
parameters['q'] = q
parameters['status'] = status
parameters = urllib.urlencode(parameters)
headers = {"Content-type": "application/x-www-form-urlencoded"}
conn = httplib.HTTPSConnection(url)
conn.request('POST','/api/hump',parameters,headers)
response = conn.getresponse()
return response
def getIcon():
icon = {}
icon['path'] = 'icon.png'
return icon
if __name__ == '__main__':
query('中文')
Сделайте две вещи:
- Получите строку запроса, введенную пользователем, от Альфреда.
- Вызовите удаленный интерфейс API, чтобы получить возвращаемый формат, а затем распечатайте результат.
Alfred
Вы можете скачать код github напрямую. находится в папке pythonhump.alfredworkflow
Двойной клик. установлен на вашем Mac.
Предпосылка заключается в том, что вы установили afred на свой Mac и платите, чтобы стать пользователем премиум-класса.
наконец-то
Адрес старых правил на гитхабе:GitHub.com/tune центр 007…
Адрес загрузки рабочего процесса:скачать
Я также разработал рабочий процесс, который использует alfred для прямого запроса словаря Youdao. Эффект следующий:
Адрес загрузки следующий:у-у-у-у. xilidu.com/2017/10/24/…
Добро пожаловать в мой публичный аккаунт WeChat: