主頁 > 後端開發 > squid代理服務器---代理方式---acl訪問控制---sarg日志工具---squid反向代理!!!!

squid代理服務器---代理方式---acl訪問控制---sarg日志工具---squid反向代理!!!!

2020-11-03 17:35:01 後端開發

個人整理

  • 前言
    • 代理作業機制和好處
    • 代理的基本型別
    • ACL訪問控制
    • 反向代理
  • 一,安裝squlid部署環境:
  • 二,搭建傳統代理服務器
  • 三,搭建透明代理
  • 四,ACL訪問控制
  • 五,squid日志分析,sarg工具
  • 六,squid 反向代理

前言

代理作業機制和好處

  • 快取網頁物件,減少重復請求
  • 訪問速率提高
  • 隱藏客戶機真是ip地址

代理的基本型別

  • 傳統代理
    適用于internet ,需要指定服務端,開啟代理ip地址
  • 透明代理
    客戶機不需要指定代理服務器的地址和埠,而通過默認路由,防火墻策略將web訪問定向給代理服務器處理

ACL訪問控制

  • 控制方式
    根據源地址,目標URL,檔案型別等定義串列

acl 串列名稱 串列型別 串列內容…

再針對定義的串列做限制

http_access allow或deny 串列名

  • 規則優先級
    用戶訪問代理服務器時,squid會從上往下匹配,順序匹配定義所有規則串列,
    一旦匹配成功,立即停止匹配,!!
    相反,如果都不匹配,squid會使用最后一條相反的規則

最后一條是允許,相反:則是拒絕
最后一條是拒絕,相反:則是允許

常用ACL 串列型別

src             源地址
dst              目標地址
port             目標地址
dstdomain         目標域
time             訪問時間
maxconn           最大并發連接
url_regex          目標URL地址 
urlpath_regex      整個目標URL路徑 

反向代理

  • squid反向代理服務器中快取了該請求的資源,則將該請求直接回傳給客戶端;
  • 否則反向代理服務器將向后臺的web服務器請求資源,然后將請求的應答回傳給客戶端,同時也將該應答快取在本地,供下一個請求者使用

squid反向代理服務器:我有我直接給你,我沒有我跟后面web要,我給你,我也留一份,方便給下一個;

  • 作業機制和優點

快取網頁物件,減少重復請求
將外網(互聯網)請求,按照策略輪詢或權重分配到內網web服務器
安全,隱藏,避免用戶直接訪問web服務器;

squid代理服務器20.0.0.16
web20.0.0.17 centos7.4
web220.0.0.18 centos7.4
客戶端20.0.0.1 /192.168.100.10

一,安裝squlid部署環境:

  1. 安裝底層編譯環境
    yum -y install gcc gcc-c++ make

  2. 將軟體包拖到/opt/目錄,

解壓:
tar zxf squid-3.4.6.tar.gz     //解壓到當前目錄下就行了
編譯安裝:
cd squid-3.4.6/               //到軟體目錄下
./configure  --prefix=/usr/local/squid --sysconfdir=/etc   --enable-arp-acl --enable-linux-netfilter --enable-async-io=100 --enable-err-language="Simplify_Chinese" --enable-underscore --enable-poll --enable-gnuregex

 make && make install         //編譯有一會時間

編譯安裝的解釋:
1.指定安裝路徑;
2.組態檔存放目錄;
3.啟用acl訪問控制串列;通過客戶端的MAC地址進行管理,防止客戶使用arp欺騙,
4.內核過濾機制
5.支持透明模式功能
6.呼叫I/O執行緒優化
7.報錯提示簡體中文提示
8.url支持下劃線
9.字符設備去驅動中的函式,檔案指標掛載到當前等待佇列
10.支持正則運算式

3.將軟體squid命令能夠被系統命令能識別

//查看squid啟動命令是在那個目錄,是/bin 還是/sbin/
//在/sbin/下面,放到系統可以使用的/sbin/下,或者/bin

ln -s /usr//local/squid/sbin/squid /usr/local/sbin/

4.創建一個程式賬戶;

useradd -M -s /sbin/nologin squid

//更改屬賬戶權限, var目錄下有兩個目錄run,cahe當中都有squid的目錄
chown -R squid.squid /usr/local/squid/var

5.更改組態檔

vim /etc/squid.conf
 56 #http_access deny all
 57 http_access allow all                              //設定為允許所有
 60 http_port 3128
 61 cache_effective_user squid                   //添加主賬戶
 62 cache_effective_group squid                 //添加組賬戶
 68  coredump_dir /usr/local/squid/var/cache/squid      //在第一個快取目錄中保留coredump,容災目錄,出現問題故障可以通過目錄還原;

6.檢查組態檔語法:

[root@as squid]#squid -k parse 
.....省略部分.....
正確的話會顯示很快
[root@as squid]# squid -z
[root@as squid]# 2020/10/30 12:19:23 kid1| Set Current Directory to /usr/local/squid/var/cache/squid
2020/10/30 12:19:23 kid1| Creating missing swap directories
2020/10/30 12:19:23 kid1| No cache_dir stores are configured.
^C
[root@as squid]# squid
[root@as squid]# netstat -antp|grep squid
tcp6       0      0 :::3128                 :::*                    LISTEN      55371/(squid-1)     


7.配置squid啟動腳本;


vim   /etc/init.d/squid

#!/bin/bash
#chkconfig: 2345 90 25
PID="/usr/local/squid/var/run/squid.pid"   ##PID檔案行程號
CONF="/etc/squid.conf"                           ##主組態檔
CMD="/usr/local/squid/sbin/squid"           ##啟動命令

case "$1" in
start)
                netstat -ntap | grep squid &> /dev/null
                if [ $? -eq 0 ]
                then
                 echo "squid is running"
                 else
                 echo "正在啟動 squid...." 
                 $CMD
                 echo "啟動完成!"
                fi
                ;;
stop)
                $CMD -k kill &> /dev/null   ##關閉squid
                rm -rf $PID &> /dev/null    ##洗掉PID檔案
                ;;
status)
                [ -f $PID ] &> /dev/null
                 if [ $? -eq 0 ]
                                then
                                 netstat -ntap | grep squid
                                else
                                 echo "squid is not running"
                fi
                ;;
restart)
                $0 stop &> /dev/null
                echo "正在關閉 squid..."
                $0 start &> /dev/null
                echo "正在啟動 squid..."
                ;;
reload)
                $CMD -k reconfigure    ##多載組態檔
                ;;
check)
                $CMD -k parse      ##檢查語法
                ;;
*)
                echo "用法:$0{start|stop|reload|status|check|restart}"
                ;;
esac

驗證腳本:

[root@as init.d]# chmod +x /etc/init.d/squid           //腳本執行權限
[root@as init.d]# chkconfig --add  /etc/init.d/squid   //添加到啟動項
[root@as init.d]# service squid stop
[root@as init.d]# netstat -antp|grep squid
[root@as init.d]# service squid start
正在啟動 squid....
啟動完成!
[root@as init.d]# netstat -antp|grep squid
tcp6       0      0 :::3128                 :::*                    LISTEN      56348/(squid-1)     

二,搭建傳統代理服務器

手動指定代理服務器; 指定代理服務器;

  1. 更改squid配置,添加優化
[root@squid init.d]# vim /etc/squid.conf
       http_port 3128
      cache_effective_user squid
      cache_effective_group squid
63 cache_mem 64 MB	'//自定義快取空間大小,容量最好為4的倍數'
64 reply_body_max_size 10 MB	'//允許下載最大檔案大小,以位元組為單位,默認設定0表示不進行限制'
65 maximum_object_size 4096 KB	'  //允許保存到快取空間的最大物件的大小,以KB為單位,超過限制不會快取,直接轉到用戶端的快取'

[root@squid ~]# service squid reload	'//多載服務'
[root@squid ~]# netstat -antp |grep squid
tcp6       0      0 :::3128                 :::*                    LISTEN      56799/(squid-1)   

  1. 防火墻設定

[root@squid ~]# iptables -F ‘//清空防火墻表內容’
[root@squid ~]# iptables -L ‘//查看防火墻表內容’
[root@squid ~]# setenforce 0 ‘//關閉防火墻增強型功能’
[root@squid ~]# iptables -I INPUT -p tcp --dport 3128 -j ACCEPT ‘//新增規則,允許3128埠’

  1. (真機或win10虛擬機)瀏覽器驗證:
    使用瀏覽器不同,配置代理服務地址也不同;(我用的是firefox火狐)
    設定-----網路----選擇手動配置代理ip
    在這里插入圖片描述
    第一次:沒配置代理ip前
    第二次:配置代理ip后

web節點查看httpd訪問正確日志: cat /var/log/httpd/access.log

在這里插入圖片描述

問題:
1.如果訪問web網站,頁面顯示錯誤資訊,無法獲取URL資訊,解決方法如下:
//代理服務器組態檔,拒絕了acl訪問策略;
56 #http_access deny all //查看是不是忽略了這個,注釋掉
添加http_access allow all //允許所有,訪問策略

2.防火墻問題,是否關閉firewalld,iptables訪問策略清空,從新添加!!

三,搭建透明代理

關閉傳統代理的,客戶端代理ip

  1. 添加一個網卡ens36 做代理網關;
    識別不到新添加網卡:systemctl start networkmanager 網路管理服務;
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33  ifcfg-ens36

vim ifcfg-ens36
//檔案之前的ens33改成ens36
//uuid洗掉去掉
//ip地址為192.168.100.1  網關地址

//重啟下網路服務
systemctl restart network
-------------

  1. 做路由轉發
vim  /etc/sysctl.conf 
net.ipv4.ip_forward = 1

[root@squid network-scripts]# sysctl -p
net.ipv4.ip_forward = 1
  1. 更改squid組態檔,改為透明代理模式
vim /etc/squid.conf
60 http_port 192.168.100.1:3128  transparent 
//地址是新建網卡的網關地址;

  1. 重啟服務;
    service squid restart

  2. 防火墻策略設定:

iptables -t nat -I PREROUTING -i ens36 -s 192.168.100.0/24 -p tcp --dport 80 -j REDIRECT --to 3128        //定義入口規則 網卡名稱 源地址  協議   http80埠重定向到3128埠
iptables -t nat -I PREROUTING -i ens36 -s 192.168.100.0/24 -p tcp --dport 443 -j REDIRECT --to 3128      //定義入口規則 網卡名稱 源地址  協議   https443埠重定向到3128
iptables -I INPUT -p tcp --dport 3218 -j ACCEPT         //新增規則,允許3128埠

  1. web節點、

1.做靜態路由,指向squid代理服務器地址;

[root@web httpd]# route add -net 192.168.100.0/24 gw 20.0.0.16    //添加路由到路由表

[root@web httpd]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         20.0.0.2        0.0.0.0         UG    100    0        0 ens33
20.0.0.0        0.0.0.0         255.255.255.0   U     100    0        0 ens33
192.168.100.0   20.0.0.16       255.255.255.0   UG    0      0        0 ens33
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0


  1. 客戶端驗證:
    將之前的網卡更換,與squid代理服務網關網卡一致
    更改為192.168.100.10地址,網關指向代理服務網關192.168.100.1
    在這里插入圖片描述

win10 打開瀏覽器訪問web地址,輸入20.0.0.17
//顯示登陸界面;

  1. web端查看日志檔案
    tail /vat/log/httpd/access.log
    在這里插入圖片描述

四,ACL訪問控制

  1. 修改squid組態檔

vim /etc/squid.conf

acl  mygw    src 192.168.100.0/24             //訪問串列控制原地址某個網段;
acl  localip src 192.168.100.10/32           //訪問串列控制具體地址‘,固定ip地址是32位
acl  desthost   dst  20.0.0.17/32           //訪問串列控制目標地址
acl  mc20    maxconn  20                    //訪問數量,最大訪問
acl  burl    url_regex  -i  ^rtsp://  ^cmule://           //正則運算式,以什么協議為開頭
acl  purl    urlpath_regex -i  \.mp3$  \.mp4$  \.rmvb$   //以什么為結尾
acl  work time  MTWHF  08:30-17:30                        //對某段時間做限制,MTWHF是周一到周五,AC是周六周日



//拒絕localip串列;以上往下的順序
http_access deny localip


  1. acl訪問控制的ip地址,也可以放在一起串列管理
    方便,靈活,減少組態檔的代碼量

mkdi  /etc/squid/              //創建目錄,存放物件地址

vim  /etc/squid/dest.ip        //輸入web目標地址
20.0.0.17
20.0.0.18
.....

  1. 組態檔內
vim /etc/squid.conf

acl  desthost   dst   "/etc/squid/dest.ip"
  1. 重啟squid
    service squid restart

  2. 客戶端訪問

做訪問串列控制前:
在這里插入圖片描述
做訪問串列控制后:
在這里插入圖片描述

五,squid日志分析,sarg工具

  1. 安裝準備環境
    yum -y install gd gd-devel //影像處理擴展庫gd

  2. 創建編譯安裝準備目錄
    mkdir /usr/local/sarg

  3. 將軟體拖到/opt 解壓
    cd /opt
    tar zxvf sarg-2.3.7.tar.gz

  4. 編譯安裝
    cd sarg-2.3.7/
    ./configure --prefix=/usr/local/sarg --sysconfdir=/etc/sarg --enable-extraprotection

//–enable-extraprotection //額外安全防護

make && make install

  1. 將sarg配置備份,修改組態檔
    cd /etc/sarg/
    cp sarg.conf sarg.conf.bak

編輯配置

vim sarg.conf

7 access_log /usr/local/squid/var/logs/access.log
25 title "Squid User Access Reports"
120 output_dir /var/www/html/squid-reports
178 user_ip no
184 topuser_sort_field connect reverse
206 exclude_hosts /usr/local/sarg/noreport
257 overwrite_report no
289 mail_utility mailq.postfix
434 charset UTF-8
518 weekdays 0-6
525 hours 0-23
633 www_document_root /var/www/html

//配置解釋:
7:指定訪問日志檔案
25:網頁標題,可自定義
120:報告輸出目錄,存放目錄
178:使用用戶名顯示
184:top排序中有連接次數,訪問位元組,降序排列,升序是normal
206:不計入排序的站點串列檔案
257:同名日志是否覆寫
289:發送郵件報告命令
434:使用字符集
518:top排序的星期周期
525:top排序的時間周期
633:網頁根目錄

  1. 創建串列檔案
    touch /usr/local/sarg/noreport

  2. 將sarg命令能夠被系統識別

ln -s /usr/local/sarg/bin/sarg /usr/local/bin/

  1. 安裝httpd
    yum -y install httpd

  2. 開啟sarg工具,生成報告

[root@as sarg]# sarg
SARG: 紀錄在檔案: 81, reading: 100.00%
SARG: 成功的生成報告在 /var/www/html/squid-reports/2020Nov01-2020Nov01

  1. 執行每天生成報告
sarg -l  /usr/local/squid/var/logs/access.log  -o /var/www/html/squid-reports/ -z -d $(date -d "1 day ago" +%d/%m/%Y)-$(date +%d/%m/%Y)

前一天的時間 - 今天的時間 = 就是一天的生成報告時間
[root@as squid-reports]# date -d "1 day ago" +%d/%m/%Y
31/10/2020
[root@as squid-reports]# date  +%d/%m/%Y
01/11/2020

六,squid 反向代理

20.0.0.17 網頁檔案修改

vi /var/www/html/index.html

<h1> this  is web1 </h1>
  1. 新添加 web2節點 20.0.0.18

//安裝httpd
yum -y install httpd

//開啟服務,做站點目錄網頁檔案,

vi /var/www/html/index.html

<h1> this  is web2 </h1>

systemctl enable httpd
systemctl start httpd

netstat -antp|grep 80


//添加路由表,靜態路由指向代理服務器ip
route add -net 192.168.100.0/24 gw 20.0.0.16

route -n        //查看路由表

ping 192.168.100.10    測驗客戶端的連通性
  1. squid端 修改squid配置,改為反向代理
vim   /etc/squid.conf
http_port 20.0.0.16:80 accel vhost vport                  //監聽squid代理地址,埠為80
cache_peer 20.0.0.17 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web        //訪問后面web節點服務,重定向,定位到80埠,采用輪詢機制,最大訪問量30 , 權重為1  ,別名web
cache_peer 20.0.0.18 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web2      //訪問后面web節點服務,重定向,定位到80埠,采用輪詢機制,最大訪問量30 , 權重為1  ,別名web
cache_peer_domain web web2 www.as.com       //匹配,如果訪問的域名是www.as.com  就訪問到兩個web節點;



//停止httpd服務;埠沖突
systemctl  stop httpd

//重啟squid服務,過濾埠
[root@squid ~]# service squid restart
正在關閉 squid...
正在啟動 squid...
[root@squid ~]# netstat -antp |grep squid
tcp        0      0 20.0.0.16:80            0.0.0.0:*               LISTEN      60392/(squid-1)  

  1. 防火墻策略
[root@squid ~]# iptables -F             //清除之前的所有規則
[root@squid ~]# iptables -t nat -F    //清除之前表內的所有策略
[root@squid ~]# iptables -I INPUT -p tcp --dport 3128 -j ACCEPT      //新添加入規則,允許埠3128
[root@squid ~]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:squid

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination 


  1. 客戶端
    驗證:
    //開啟代理ip
    在這里插入圖片描述

如果不想做域名,輪詢,可以去掉這個配置,直接通過ip就可以
cache_peer_domain web web2 www.as.com

//做hosts主機映射
C:\Windows\System32\drivers\etc 下的 hosts檔案中-------添加20.0.0.16 www.as.com-----驗證

在這里插入圖片描述

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/201181.html

標籤:java

上一篇:資料庫重設登錄密碼以及忘記密碼該怎么辦?(5.6版本和5.7版本)

下一篇:在CentOS 7中使用BIND部署DNS服務器

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【C++】Microsoft C++、C 和匯編程式檔案

    ......

    uj5u.com 2020-09-10 00:57:23 more
  • 例外宣告

    相比于斷言適用于排除邏輯上不可能存在的狀態,例外通常是用于邏輯上可能發生的錯誤。 例外宣告 Item 1:當函式不可能拋出例外或不能接受拋出例外時,使用noexcept 理由 如果不打算拋出例外的話,程式就會認為無法處理這種錯誤,并且應當盡早終止,如此可以有效地阻止例外的傳播與擴散。 示例 //不可 ......

    uj5u.com 2020-09-10 00:57:27 more
  • Codeforces 1400E Clear the Multiset(貪心 + 分治)

    鏈接:https://codeforces.com/problemset/problem/1400/E 來源:Codeforces 思路:給你一個陣列,現在你可以進行兩種操作,操作1:將一段沒有 0 的區間進行減一的操作,操作2:將 i 位置上的元素歸零。最終問:將這個陣列的全部元素歸零后操作的最少 ......

    uj5u.com 2020-09-10 00:57:30 more
  • UVA11610 【Reverse Prime】

    本人看到此題沒有翻譯,就附帶了一個自己的翻譯版本 思考 這一題,它的第一個要求是找出所有 $7$ 位反向質數及其質因數的個數。 我們應該需要質數篩篩選1~$10^{7}$的所有數,這里就不慢慢介紹了。但是,重讀題,我們突然發現反向質數都是 $7$ 位,而將它反過來后的數字卻是 $6$ 位數,這就說明 ......

    uj5u.com 2020-09-10 00:57:36 more
  • 統計區間素數數量

    1 #pragma GCC optimize(2) 2 #include <bits/stdc++.h> 3 using namespace std; 4 bool isprime[1000000010]; 5 vector<int> prime; 6 inline int getlist(int ......

    uj5u.com 2020-09-10 00:57:47 more
  • C/C++編程筆記:C++中的 const 變數詳解,教你正確認識const用法

    1、C中的const 1、區域const變數存放在堆疊區中,會分配記憶體(也就是說可以通過地址間接修改變數的值)。測驗代碼如下: 運行結果: 2、全域const變數存放在只讀資料段(不能通過地址修改,會發生寫入錯誤), 默認為外部聯編,可以給其他源檔案使用(需要用extern關鍵字修飾) 運行結果: ......

    uj5u.com 2020-09-10 00:58:04 more
  • 【C++犯錯記錄】VS2019 MFC添加資源不懂如何修改資源宏ID

    1. 首先在資源視圖中,添加資源 2. 點擊新添加的資源,復制自動生成的ID 3. 在解決方案資源管理器中找到Resource.h檔案,編輯,使用整個專案搜索和替換的方式快速替換 宏宣告 4. Ctrl+Shift+F 全域搜索,點擊查找全部,然后逐個替換 5. 為什么使用搜索替換而不使用屬性視窗直 ......

    uj5u.com 2020-09-10 00:59:11 more
  • 【C++犯錯記錄】VS2019 MFC不懂的批量添加資源

    1. 打開資源頭檔案Resource.h,在其中預先定義好宏 ID(不清楚其實ID值應該設定多少,可以先新建一個相同的資源項,再在這個資源的ID值的基礎上遞增即可) 2. 在資源視圖中選中專案資源,按F7編輯資源檔案,按 ID 型別 相對路徑的形式添加 資源。(別忘了先把檔案拷貝到專案中的res檔案 ......

    uj5u.com 2020-09-10 01:00:19 more
  • C/C++編程筆記:關于C++的參考型別,專供新手入門使用

    今天要講的是C++中我最喜歡的一個用法——參考,也叫別名。 參考就是給一個變數名取一個變數名,方便我們間接地使用這個變數。我們可以給一個變數創建N個參考,這N + 1個變數共享了同一塊記憶體區域。(參考型別的變數會占用記憶體空間,占用的記憶體空間的大小和指標型別的大小是相同的。雖然參考是一個物件的別名,但 ......

    uj5u.com 2020-09-10 01:00:22 more
  • 【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

    眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......

    uj5u.com 2020-09-10 01:00:41 more
最新发布
  • Rust中的智能指標:Box<T> Rc<T> Arc<T> Cell<T> RefCell<T> Weak

    Rust中的智能指標是什么 智能指標(smart pointers)是一類資料結構,是擁有資料所有權和額外功能的指標。是指標的進一步發展 指標(pointer)是一個包含記憶體地址的變數的通用概念。這個地址參考,或 ” 指向”(points at)一些其 他資料 。參考以 & 符號為標志并借用了他們所 ......

    uj5u.com 2023-04-20 07:24:10 more
  • Java的值傳遞和參考傳遞

    值傳遞不會改變本身,參考傳遞(如果傳遞的值需要實體化到堆里)如果發生修改了會改變本身。 1.基本資料型別都是值傳遞 package com.example.basic; public class Test { public static void main(String[] args) { int ......

    uj5u.com 2023-04-20 07:24:04 more
  • [2]SpinalHDL教程——Scala簡單入門

    第一個 Scala 程式 shell里面輸入 $ scala scala> 1 + 1 res0: Int = 2 scala> println("Hello World!") Hello World! 檔案形式 object HelloWorld { /* 這是我的第一個 Scala 程式 * 以 ......

    uj5u.com 2023-04-20 07:23:58 more
  • 理解函式指標和回呼函式

    理解 函式指標 指向函式的指標。比如: 理解函式指標的偽代碼 void (*p)(int type, char *data); // 定義一個函式指標p void func(int type, char *data); // 宣告一個函式func p = func; // 將指標p指向函式func ......

    uj5u.com 2023-04-20 07:23:52 more
  • Django筆記二十五之資料庫函式之日期函式

    本文首發于公眾號:Hunter后端 原文鏈接:Django筆記二十五之資料庫函式之日期函式 日期函式主要介紹兩個大類,Extract() 和 Trunc() Extract() 函式作用是提取日期,比如我們可以提取一個日期欄位的年份,月份,日等資料 Trunc() 的作用則是截取,比如 2022-0 ......

    uj5u.com 2023-04-20 07:23:45 more
  • 一天吃透JVM面試八股文

    什么是JVM? JVM,全稱Java Virtual Machine(Java虛擬機),是通過在實際的計算機上仿真模擬各種計算機功能來實作的。由一套位元組碼指令集、一組暫存器、一個堆疊、一個垃圾回收堆和一個存盤方法域等組成。JVM屏蔽了與作業系統平臺相關的資訊,使得Java程式只需要生成在Java虛擬機 ......

    uj5u.com 2023-04-20 07:23:31 more
  • 使用Java接入小程式訂閱訊息!

    更新完微信服務號的模板訊息之后,我又趕緊把微信小程式的訂閱訊息給實作了!之前我一直以為微信小程式也是要企業才能申請,沒想到小程式個人就能申請。 訊息推送平臺🔥推送下發【郵件】【短信】【微信服務號】【微信小程式】【企業微信】【釘釘】等訊息型別。 https://gitee.com/zhongfuch ......

    uj5u.com 2023-04-20 07:22:59 more
  • java -- 緩沖流、轉換流、序列化流

    緩沖流 緩沖流, 也叫高效流, 按照資料型別分類: 位元組緩沖流:BufferedInputStream,BufferedOutputStream 字符緩沖流:BufferedReader,BufferedWriter 緩沖流的基本原理,是在創建流物件時,會創建一個內置的默認大小的緩沖區陣列,通過緩沖 ......

    uj5u.com 2023-04-20 07:22:49 more
  • Java-SpringBoot-Range請求頭設定實作視頻分段傳輸

    老實說,人太懶了,現在基本都不喜歡寫筆記了,但是網上有關Range請求頭的文章都太水了 下面是抄的一段StackOverflow的代碼...自己大修改過的,寫的注釋挺全的,應該直接看得懂,就不解釋了 寫的不好...只是希望能給視頻網站開發的新手一點點幫助吧. 業務場景:視頻分段傳輸、視頻多段傳輸(理 ......

    uj5u.com 2023-04-20 07:22:42 more
  • Windows 10開發教程_編程入門自學教程_菜鳥教程-免費教程分享

    教程簡介 Windows 10開發入門教程 - 從簡單的步驟了解Windows 10開發,從基本到高級概念,包括簡介,UWP,第一個應用程式,商店,XAML控制元件,資料系結,XAML性能,自適應設計,自適應UI,自適應代碼,檔案管理,SQLite資料庫,應用程式到應用程式通信,應用程式本地化,應用程式 ......

    uj5u.com 2023-04-20 07:22:35 more