原创 使用poi+itextpdf將word轉成pdf

將word轉換成pdf確實有很多種方案! 背景 最近正好需要做一個這樣的功能,需求是將word模板進行簽名後轉換爲pdf。爲此,我花了一點時間去網上找方案。期間遇到了一些坑,這裏記錄一下。 方案選擇 首先,因爲代碼是跑在linux

原创 記一次sftp工具類導致jvm頻繁GC事件

背景 項目中需要使用sftp進行遠程文件的讀取,入庫。原有代碼中存在一個SFTPUtil類,底層使用的是jsch庫調用方法。 經過 事件前一天正好進行了發版,上線版本中,我修改了原有SFTPUtil中的一個問題:原有代碼讀取完成

原创 Java8 Optional的正確打開方式

Java8新推出了Optional,配合lambda,對null對象的處理變得cool起來,但是如何使用呢 先看Optional中的一些常用方法 - public<U> Optional<U> map(Function<? sup

原创 Ubuntu18.04源碼安裝MySQL8.0

前置說明 使用源碼編譯安裝的好處是靈活,可以安裝多個版本。此次安裝是將所有mysql相關信息都放在/home/mysql8目錄下的!因此理論上是可以一臺機器安裝多個版本的。 另由於環境差異和個人的水平不同,有些細節性的東西不再贅述

原创 Java分派

首先來看以下代碼的運行結果 public class StaticDispatch { static abstract class Human { } static class Man extends H

原创 MySQL中的explain

explain是MySQL中執行計劃分析的利器,經常用來分析低效SQL。通過explain我們可以獲取到數據的訪問類型、索引的使用、分區信息等情況。這裏列舉以下explain分析的結果含義。 select_type 表示sele

原创 Java爲什麼會有併發問題?

因爲Java是一種單進程、多線程的模型。 所以當一個請求過來的時候,Java會將產生一個線程來處理這個請求。 如果多個線程訪問同一個共享變量的時候,就會出現併發問題。 所以,併發問題產生的條件之一是“共享變量”。那麼什麼樣的變量是

原创 MySQL中的字符集

MySQL中的字符集字符集和校對規則校對規則命名約定字符集級別及設置服務端字符集和校對規則數據庫字符集和校對規則表字符集和校對規則列字符集和校對規則連接字符集和校對規則MySQL字符集修改步驟步驟 字符集和校對規則 MySQL包含

原创 MySQL中的整數類型int(n)有啥用

如果你認爲括號內n指定了數值的大小,那就錯啦! 括號內的n表示的是顯示寬度,一般與zerofill配合使用。 請看下例: 一般我們都不會在建表時指定zerofill的,所以看起來是沒有差別的。 但是如果你在字段上指定zerof

原创 MySQL char與varchar的區別

存儲方式不同 char列的長度固定爲創建表時聲明的長度,刻度可以爲從0~255的人一直 varchar爲可變長字符串,長度可以指定爲0~65535之間的值。 檢索方式不同 char列會刪除尾部的空格 varchar保留尾部的空格

原创 SQL中的常用查詢

聚合 聚合的語法規則如下 SELECT [field1,field2,...fieldn] fun_name FROM tablename [WHERE where_condition] [GROUP BY field1,fiel

原创 maven-compiler-plugin 插件配置詳解

最近在本地運行老項目時,將老代碼拉下來mvn install發現無法執行。報錯如下: [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plu

原创 Java併發都有啥

最近看了《實戰Java高併發程序設計》這本書,才發現Java併發體系大概都有些啥。以前都是斷斷續續瞭解併發相關的知識,對Java的併發總感覺隔着一層膜一樣,遇到相關的問題也不能將其串聯起來。讀了之後,感到對我最大的幫助就是知道了Jav

原创 SQL中where、having之間的區別和用法

聚合函數是比較where、having 的關鍵。 開門見山。where條件、聚合函數、having 在from後面的執行順序: where條件 > 聚合函數(sum,min,max,avg,count) > having 樣例:

原创 CentOS編譯安裝PHP

Target Version:PHP 7.1 1. download php7.1 http://cn2.php.net/downloads.php 2. upload to server so easy, just do it 3.