原创 python 發送郵件示例

這裏以QQ郵箱爲例,封裝一個簡單的發送郵件函數,支持普通文本和富文本以及附件發送功能。 代碼 import os import smtplib from email import encoders from email.heade

原创 Java 執行系統命令

有時候我們需要在程序中調用執行一些系統命令,比如,執行cmd/shell命令,調用其他第三方程序等,Java已經提供了這樣的功能,但是感覺不是太好用,沒有python的subprocess簡潔。 最近要用Java調用 ffmpeg 做

原创 Spring Boot打包跳過單元測試

在Spring Boot中打包時跳過單元測試其實很簡單,只要在pom文件的properties標籤中配置<skipTests>true</skipTests>即可,示例: <properties> <project.build.

原创 Spring Boot集成Log4j2+顏色設置+按時間拆分

前言 Log4j 2是Log4j的升級版屬於新一代日誌框架,它基於LMAX公司開發的Disruptor(一個開源的無鎖併發框架),改善了Log4j和Logback在架構設計方面的缺陷,具有超高的吞吐量和低延遲,性能比Log4j1.x和

原创 Spring Boot添加自定義yml文件配置

背景 項目當中有大量配置,統一放在application.yml中管理不太方便,所以需要將配置拆分,放在幾個不同的yml文件中。 解決方案 解決方案很簡單,只需要如下幾步操作即可。 在application.yml文件同目錄創建其

原创 Spring MVC 自定義返回異常

項目微服務接口要全部返回固定格式的數據,包括異常在內,該怎麼處理? 默認的,Spring MVC在拋出異常後會返回給調用方一段異常信息,那麼怎麼讓接口調用異常的時候返回自定義的信息呢? 其實很簡單,直接上代碼。 首先創建一個異常處理器

原创 POST 下載文件

需求背景 遇到個需求,需要根據用戶輸入的id列表下載文件。一般情況下,下載文件用GET請求就能滿足需求,但是,這個需求的請求參數中可能有上千個id,GET請求很可能超出瀏覽器參數長度限制。那麼該怎麼解決這個問題呢? 解決方案 請求方式

原创 Nginx解決跨域,session,cookie無效

問題背景 這兩天遇到一個這樣的需求: 有兩個項目a和b,在a項目中有頁面需要調用b中的接口,兩項目的域名不同,分別爲a.com, b.com。這時候如果直接調用,顯然跨域了。一番折騰之後,問題解決了,這裏記錄一下解決方法。 解決方法

原创 HTML5桌面應用程序開發

前端時間要寫一個桌面軟件,比來比去沒有滿意的,要麼不好看,要麼不好用,要麼打包體積太大。所以就有了這個小項目——easy-window。 easy-window是什麼? easy-window 是一個旨在簡化桌面開發難度的通用窗體,它

原创 Python3 + Appium + 安卓模擬器 實現APP自動化測試,並生成測試報告

概述 本文主要分爲以下幾個部分 安裝Python3 安裝Python3的Appium庫 安裝Android SDK 安裝JDK 安裝Appium 安裝模擬器 編寫測試腳本並生成測試報告 正文 一、安裝Python3 直接登錄Pyt

原创 python 獲取本機IP地址,檢測端口是否被佔用

import socket def get_host_ip(): """ get host ip address 獲取本機IP地址 :return: """ s = socket.

原创 Java 解析url,獲取參數

一個簡單的解析url,獲取參數的Java工具類 import java.util.HashMap; import java.util.Map; /** * @author lixk * @description url工具類

原创 python 日誌處理

平時做數據處理基本離不了日誌記錄功能。每次都配置一堆挺煩人,索性封裝個模塊,這裏記錄一下,與大家共享。 說明 本日誌模塊目前只有一個方法getLogger,其他配置項通過參數傳遞,包括日誌文件名,等級,日誌文件劃分方式,日誌清除配置,日誌

原创 自己實現簡單Java緩存類

需求分析 項目中經常會遇到這種場景:一份數據需要在多處共享,有些數據還有時效性,過期自動失效。比如手機驗證碼,發送之後需要緩存起來,然後處於安全性考慮,一般還要設置有效期,到期自動失效。我們怎麼實現這樣的功能呢? 解決方案 使用現有的緩

原创 bottle 使用 gevent 庫 cannot import name wsgi

示例代碼 from gevent import monkey monkey.patch_all() from bottle import Bottle app = Bottle() @app.route('/') def index