原创 h5播放rtsp視頻-vlc

當前很多攝像頭使用rtsp協議來實時播放直播視頻。而rtsp協議的視頻無法直接在html5上播放。 我們可以通過vlc軟件來將rtsp協議的視頻轉成http協議的視頻,這樣就可以很方便的通過h5的video標籤播放了。 安裝vlc vlc官

原创 觀察者模式(observer pattern)

理解觀察者模式 當被觀察者數據發生變化了以後通知觀察者,觀察者可以做出響應的處理,這是一個一對多的過程。其實就是通知,觀察者在被觀察者那裏留一個地址,然後被觀察者可以根據所有觀察者留下的地址給他們發送通知。 java實現 自己實現這個模式也

原创 迭代器模式(iterator pattern)

核心就是對外提供統一的集合數據遍歷方法Iterator。這樣可以用for in循環來訪問數據。 好處 訪問者不需要知道內部的數據組織結構來選擇使用哪一種遍歷方式,使用統一的for in循環。 內部可以自定義數據的訪問順序,我想讓誰先被訪問

原创 責任鏈模式(chain of responsibility pattern)

現實開發中會遇到這樣的場景,我們會根據條件做不同的處理,簡單的話我們就通過if-else來實現。當系統複雜了以後我們的if-else會很長,而且如果業務改變了需要調整判斷順序會很麻煩。這個時候我們可以採用責任鏈模式。 責任鏈模式的重點是將每

原创 策略模式(strategy pattern)

策略模式等價於多態 從效果來說:針對不同的情況有不同的表現,其實就是面向對象中的多態。所以在這裏我可以很負責的和大家說,如果單從實現的效果來說,策略模式就是多態的效果。 策列模式的重點 只不過策略模式的重點不是在最終實現的效果上。 策略模

原创 命令模式(command pattern)

最近面試被問到了這個問題,當時沒有看過這個東西,被問蒙了。但是回頭想想,面試官的解答不值得推敲。 面試題 問題引入。 用什麼設計模式能代替java中的if-else,我懵逼狀態。 然後給我舉了電腦鍵盤不同按鍵執行不同的操作的例子,我懵逼

原创 java線程池

1. 線程池的作用 重複利用線程資源(這個資源也很寶貴,重複創建和銷燬對性能影響極大) 避免無限制的創建線程導致系統癱瘓 2. ThreadPoolExecutor類 java併發包提供了ThreadPoolExecutor類來創建線程

原创 反爬蟲機制與應對方法

終極反爬蟲:讓爬蟲爬假數據或者假頁面(和真的結構上幾乎沒有區別),讓爬蟲開發者意識不到自己的錯誤。最後爬蟲開發者被離職~~ 1. 請求頭驗證。 瀏覽器訪問網站的時候除了會發送url,參數等內容外,還會給服務器端傳遞一些額外的請求頭(r

原创 hashmap數據結構

數據結構 jdk8之前是數組+鏈表 jdk8引入了紅黑樹的部分,整體結構是數組+鏈表+紅黑樹 hash算法 對key取hashCode(),然後將得到的int值(32位)與其高位16位做亦或運算(^) 增加/修改數據 判斷屬於

原创 java枚舉的兩種用法

1.實現單例模式 單例模式的實現有很多方法,這裏說說枚舉是怎麼實現單例的。 假設有這麼一個Person對象,它有name和age屬性,有一個方法能打印出它的屬性。怎麼通過枚舉類來實現Person對象的單例模式呢? public class

原创 訓練第一個神經網絡:基本分類

1. 導入庫 # 導入tensorflow import tensorflow as tf # 導入tensorflow的高階api-keras from tensorflow import keras # 導入numpy-->簡單矩陣處理

原创 影評文本分類

1. 導庫並下載數據 import tensorflow as tf from tensorflow import keras import numpy as np import matplotlib.pyplot as plt 2. 下

原创 matplotlib動畫

import numpy as np import matplotlib.pyplot as plt import matplotlib.animation as animation fig,ax=plt.subplots() X=np

原创 21 sklearn交叉驗證與可視化

1. Knn算法預測鳶尾花數據 from sklearn import datasets iris=datasets.load_iris() X=iris.data y=iris.target from sklearn.model_se

原创 matplotlib各種圖形

1. 折線圖 plot 2. 散點圖 scatter 普通的散點圖 plt.figure() plt.scatter(np.arange(10),np.arange(10)) plt.show() 隨機散點圖 n=1024 X