java學習

          java學習

           

          2021年9月22日

          docker 筆記

          下載的docker鏡像默認存儲路徑是/var/lib/docker .具體的鏡像文件就在containers文件夾中
          docker save -o d:/docker/zen.tar easysoft/zentao:15.5
          docker run -d -p 80:80  \
                  -e ADMINER_USER="admin" -e ADMINER_PASSWD="qqzj126" -e MYSQL_ROOT_PASSWORD=qqzj126  \
                  -e BIND_ADDRESS="false" \
                  -v /opt/data/zbox/:/opt/zbox/ \
                  -v /opt/mysqldata:/var/lib/mysql  \
                  --name zentao-server \
                  easysoft/zentao:15.5
            docker logs -f 

          posted @ 2021-09-22 17:02 楊軍威 閱讀(94) | 評論 (0)編輯 收藏

          2021年6月1日

          后臺運行jar包并輸出日志

          運行命令(注意路徑)

          java -jar /web/share-book.jar > /web/log.txt &
          該命令的意思是:執行share-book.jar這個文件,并且輸出到log.txt文件,&表示后臺運行

          解決更新項目帶來的頻繁重啟操作,創建2個腳本

          start.sh

          #! /bin/bash
          #注意:必須有&讓其后臺執行,否則沒有pid生成   jar包路徑為絕對路徑
          java -jar /web/share-book.jar > /web/log.txt &
           
          # 將jar包啟動對應的pid寫入文件中,為停止時提供pid
          echo $! > /web/pid.txt
          stop.sh

          #! /bin/bash
          PID=$(cat /web/pid.txt)
          kill -9 $PID

          啟動項目:./start.sh

          停止項目:./stop.sh

          posted @ 2021-06-01 13:56 楊軍威 閱讀(2934) | 評論 (0)編輯 收藏

          2021年4月19日

          HADOOP_HOME and hadoop.home.dir are unset

          一.問題描述:windows本地調試Hadoop程序時報錯
          錯誤信息:
          其原因是需要在windows本地搭建Hadoop環境,下載winutils文件,并將hadoop-2.8.4包內的bin文件替換,將下載文件中hadoop.dll放到C:\Windows\System32下
          二.解決過程如下:
          1.下載hadoop,去官網下載對應的hadoop版本,我在linux集群搭建的是hadoop-2.8.4,因此將hadoop-2.8.4下載到windows本地
          https://www.jianshu.com/p/a65a95108620

          posted @ 2021-04-19 09:45 楊軍威 閱讀(564) | 評論 (0)編輯 收藏

          2021年1月14日

          從git倉庫中刪除.idea文件夾

          如果不配置.gitignore的文件,帶push代碼的時候就會把一寫不必要的文件push到遠程倉庫,如.idea文件。如果不小心出現此文件在遠程倉庫可以通過一下步驟delete此文件:

          1.配置.gitignore文件(新建/編輯)

          echo '.idea' >> .gitignore

          2.將.gitignore文件上傳到遠程倉庫

          git pull git add .gitignore git commit -m 'edit .gitignore' git push origin master

          3.刪除git的.idea文件

          git rm --cached -r .idea

          4.同步到遠程倉庫

          git commit -m 'delete .idea' git push origin master

          完成之后就可以發現git倉庫中的.idea文件已經被刪除,而且之后push代碼也不會再把.idea文件上傳。

          PS:我在使用PyCharm編寫python代碼,一般是通過new -> .ignore file -> .gitignore file 自動生成.gitignore文件。
          下面是我自己比較常用的.gitignore文件簡短配置:

          .project .settings/ .prefs .pydevproject .idea/ .idea .DS_Store .cache *.pyc *.html *.xlm

          posted @ 2021-01-14 15:15 楊軍威 閱讀(189) | 評論 (0)編輯 收藏

          2020年12月1日

          GC overhead limit exceeded和java heap space

          1、java heap space  一次申請太大的內存空間
          2、GC overhead limit exceeded   創建太多的對象,gc收集不完

          posted @ 2020-12-01 10:19 楊軍威 閱讀(285) | 評論 (0)編輯 收藏

          2020年11月19日

          緩存一致性和緩存雪崩

               摘要:   閱讀全文

          posted @ 2020-11-19 14:12 楊軍威 閱讀(87) | 評論 (0)編輯 收藏

          2020年11月17日

          linux Tomcat 開機啟動配置

          1、 vim /etc/rc.d/rc.local
          2、添加內容
          export JAVA_HOME=/usr/java/jdk1.8.0_111
          /app/tomcat/bin/startup.sh start
          3、
          chmod 777 /etc/rc.d/rc.local

          posted @ 2020-11-17 10:40 楊軍威 閱讀(133) | 評論 (0)編輯 收藏

          2020年10月30日

          java synchronized 鎖對象

          /**
          * synchronized 放在普通方法上,內置鎖就是當前類的實例
          * @return
          */
          public synchronized int getNext() {
          return value ++;
          }
          /**
          * 修飾靜態方法,內置鎖是當前的Class字節碼對象
          * Sequence.class
          * @return
          */
          public static synchronized int getPrevious() {
          // return value --;
          return 0;
          }

          posted @ 2020-10-30 16:37 楊軍威 閱讀(94) | 評論 (0)編輯 收藏

          2020年8月31日

          canal簡單安裝使用

          1、數據庫配置

          首先使用canal需要修改數據庫配置

          [mysqld] 
          log-bin=mysql-bin # 開啟
          binlog binlog-format=ROW # 選擇 ROW 模式
          server_id=1 # 配置 MySQL replaction 需要定義,不要和 canal 的 slaveId 重復

          創建canal數據庫用戶

          CREATE USER canal IDENTIFIED BY 'canal';  
          GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON
          *.* TO 'canal'@'%';
          FLUSH PRIVILEGES;

           

          2、安裝canal

          下載:https://github.com/alibaba/canal/releases

          解壓(修改版本號):tar zxvf canal.deployer-1.1.4.tar.gz -C ./canal

          配置開放服務器端口:11110、11111、11112

          修改canal配置文件(這里設置了兩個instance,即兩個數據庫):

          vi canal/conf/canal.properties 
          canal.destinations
          = example1,example2

           配置instance:

          cp -R canal/conf/example conf/example1
          mv conf/example conf/example2

          第一個數據庫配置

          vi canal/conf/example1/instance.properties
          canal.instance.master.address
          =32.1.2.140:3306

          第二個數據庫配置

          vi canal/conf/example2/instance.properties
          canal.instance.master.address
          =32.1.2.140:3307

          #如果需要新增一個instance,只需要修改canal.properties文件,并新增一個instance配置即可,無需重啟canal。

          運行:

          sh canal/bin/startup.sh # 查看日志
          cat canal/logs/canal/canal

           

          3、Java使用樣例

          引入pom依賴,需要與安裝的canal版本一致

          復制代碼
          <dependencies>     <dependency>         <groupId>com.alibaba.otter</groupId>         <artifactId>canal.client</artifactId>         <version>1.1.4</version>     </dependency> </dependencies>
          復制代碼

          示例代碼(異步打印兩個數據庫的修改內容):

          復制代碼
          package cn.spicybar.dblog;  import com.alibaba.otter.canal.client.CanalConnector; import com.alibaba.otter.canal.client.CanalConnectors; import com.alibaba.otter.canal.protocol.CanalEntry.Entry; import com.alibaba.otter.canal.protocol.CanalEntry.EntryType; import com.alibaba.otter.canal.protocol.CanalEntry.RowChange; import com.alibaba.otter.canal.protocol.Message;  import java.net.InetSocketAddress; import java.util.List;  public class CanalClient {      public static void main(String[] args) {         new Thread(() -> initConnector("example1")).start();         new Thread(() -> initConnector("example2")).start();     }      private static void initConnector(String destination) {         CanalConnector connector = CanalConnectors.newSingleConnector(new InetSocketAddress("32.1.0.237", 11111), destination, "", "");         try {             connector.connect();             connector.subscribe(".*\\..*");             connector.rollback();             while (true) {                 Message message = connector.getWithoutAck(1000);                 if (message.getId() != -1 && message.getEntries().size() > 0) {                     printEntry(message.getEntries());                 }                 connector.ack(message.getId());             }         } finally {             connector.disconnect();         }     }      private static void printEntry(List<Entry> entries) {         for (Entry entry : entries) {             if (entry.getEntryType() == EntryType.TRANSACTIONBEGIN || entry.getEntryType() == EntryType.TRANSACTIONEND) {                 continue;             }             try {                 RowChange rowChange = RowChange.parseFrom(entry.getStoreValue());                 System.out.println(rowChange.getSql());             } catch (Exception e) {                 throw new RuntimeException("ERROR ## parser error, data:" + entry.toString(), e);             }         }     }

          posted @ 2020-08-31 10:55 楊軍威 閱讀(674) | 評論 (0)編輯 收藏

          2020年8月7日

          java 二分法查詢數據

          public int binarySearch(long value) {
          int middle = 0;
          int low = 0;
          int pow = arr.length;

          while(true) {
          middle = (pow + low) / 2;
          if(arr[middle] == value) {
          return middle;
          } else if(low > pow) {
          return -1;
          } else {
          if(arr[middle] > value) {
          pow = middle - 1;
          } else {
          low = middle + 1;
          }
          }
          }
          }

          posted @ 2020-08-07 11:00 楊軍威 閱讀(141) | 評論 (0)編輯 收藏

          僅列出標題  下一頁

          導航

          統計

          常用鏈接

          留言簿

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 新宁县| 福安市| 沿河| 黄大仙区| 哈密市| 天津市| 大港区| 友谊县| 小金县| 镇雄县| 岑巩县| 正蓝旗| 高安市| 称多县| 建平县| 邯郸县| 霍山县| 南京市| 宜昌市| 庆阳市| 托克逊县| 甘孜县| 霍城县| 德保县| 贵南县| 白玉县| 灵丘县| 永吉县| 黄龙县| 布拖县| 原平市| 称多县| 松滋市| 黔南| 霞浦县| 广安市| 丽水市| 金川县| 出国| 会东县| 波密县|