hadoop-ha+zookeeper+hbase+hive+sqoop+flume+kafka+spark集群安裝

来源:https://www.cnblogs.com/hgc-bky/archive/2020/04/04/12635175.html
-Advertisement-
Play Games

創建3台虛擬機 主機為桌面版 其他為迷你版本 ******************************常用命令、進程名稱****************************啟動集群命令: start-all.sh啟動zookeeper: zkServer.sh start 啟動journal ...


創建3台虛擬機 主機為桌面版 其他為迷你版本

******************************常用命令、進程名稱****************************
啟動集群命令: start-all.sh
啟動zookeeper: zkServer.sh start
啟動journalnode: hadoop-daemon.sh start journalnode
啟動namenode: hadoop-daemon.sh --script hdfs start namenode
啟動zkfc: hadoop-daemon.sh --script hdfs start zkfc
啟動datanode: hadoop-daemon.sh --script hdfs start datanode

手動failover: hdfs haadmin -failover 主機名1 主機名2
查看namenode狀態:hdfs haadmin -getServiceState nn1
離開hadoop安全模式:hadoop dfsadmin -safemode leave
獲取當前hadoop運行狀態: hadoop dfsadmin -report
啟動 Hadoophistoryserver mr-jobhistory-daemon.sh start historyserver
防火牆關閉: service iptables stop & chkconfig iptables off
啟動NTP服務: service ntpd start & chkconfig ntpd on
ldd命令查看依賴庫

****************************************************************************

========================配置網路=====================
1. 查看網路介面狀態 ifconfig

2. 編輯eth0網卡(善用補全鍵 Table)
vi /etc/sysconfig/network-scripts/ifcfg-eth0

註意查看自己虛擬機的網路編輯器中的VMnet8給予的子網IP
對照子網IP進行設置

3.shift+G 到最後一行 O 另取一行開始編輯
寫入 :
IPADDR=192.168.80.141
GATEWAY=192.168.80.2
NETMASK=255.255.255.0
DNS1=192.168.80.2

修改:
BOOTPROTO=static
ONBOOT=yes

3.重啟網卡
service network restart
------------------------------------eg------------------------------------------------
[root@test1 ~]# service network restart
正在關閉介面 eth0: 設備狀態:3 (斷開連接)
[確定]
關閉環回介面: [確定]
彈出環回介面: [確定]
彈出界面 eth0: 活躍連接狀態:已激活
活躍連接路徑:/org/freedesktop/NetworkManager/ActiveConnection/1
[確定]
---------------------------------------------------------------------------------------

4. 檢測網路時候接通
ping 8.8.8.8

-------------------------------------eg----------------------------------------------
[root@test1 ~]# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=12 ttl=128 time=56.4 ms
64 bytes from 8.8.8.8: icmp_seq=13 ttl=128 time=24.4 ms
64 bytes from 8.8.8.8: icmp_seq=14 ttl=128 time=22.9 ms
----------------------------------------------------------------------------------------


5.修改 hosts文件(此文件是機器識別的身份證號碼)
vi /etc/hosts
在文件內容後添加
IP + 主機名(根據自己的實際情況改)
192.168.245.221 test1
192.168.245.222 test2
192.168.245.223 test3
192.168.245.224 test4

可以通過 ping 命令測試


===========================ssh免密配置================================
1.在每一臺進行安裝ssh客戶端(需要良好的網路環境否則會顯示鏡像錯誤)
yum install openssh-clients
·················································································錯誤解決方法················································································
檢查是否能上網:ping www.baidu.com

如果顯示沒有連接的話,就說明沒網,也就無法使用yum 命令安裝。

ping通了的話,還是用不了yum命令,大部分原因是yum鏡像有問題,下載一個更新。

在安裝完CentOS後一般需要修改yum源,這樣在安裝更新rpm包時速度比較快。國內比較快的有163源、sohu源。以下是以163源為例。

cd /etc/yum.repos.d
mv CentOS-Base.repo CentOS-Base.repo.backup
wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
mv CentOS6-Base-163.repo CentOS-Base.repo
yum clean all
最後在使用yum 就可以了。
·······················································································································································································
2. 生成公鑰私鑰對(最好在每一臺,嫌麻煩可以只在主機配置)
ssh-keygen

3.複製密匙(最好每一臺相互設置,嫌麻煩可只在主機設置)
ssh-copy-id 機器名稱


==============================時間同步====================================
採用的是同步上海時區的時間

下載時間同步模塊
yum -y install ntpdate

連接遠程伺服器
ntpdate -u time1.aliyun.com

修改文件
ntpdate -u ntp.api.bz

date 查看系統時間

hwclock --show 查看硬體時間

hwclock -w 永久保存

date 查看 成功

========================================================================


===========================安裝Jdk、Hadoop、zookeeper======================
【安裝JDK以及其他HADOOP以及組件需要註意環境配置裡面文件的位置名稱等等】
1.採用winscp或者rz、xshell等方式上傳安裝包到/home目錄

2.創建文件夾存放解壓文件
mkdir /home/java mkdir /home/hadoop mkdir /home/zk

3. 解壓安裝包(註意為tar.gz結尾)
tar -zxvf jdk-7u79-linux-x64.tar.gz -C /home/java
tar -zxvf hadoop-2.6.4.tar.gz -C /home/hadoop
tar -xzvf zookeeper-3.4.6.tar.gz -C /home

4.修改文件名(此步驟必須進入解壓文件存放的文件夾下即 /home/java 、/home/zookeeper-3.4.6和 /home/hadoop 目錄 )
mv jdk1.7.0_79 jdk mv hadoop-2.6.4 hadoop mv zookeeper-3.4.6 zk

5.配置環境變數
vi /etc/profile
寫入jdk環境變數:
export JAVA_HOME=/home/java/jdk
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

hadoop環境變數:
export HADOOP_HOME=/home/hadoop/hadoop
export PATH=.:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$JAVA_HOME/bin:$PATH

export HADOOP_LOG_DIR=/home/hadoop/hadoop/logs
export YARN_LOG_DIR=$HADOOP_LOG_DIR


zookeeper環境變數
export ZOOKEEPER_HOME=/home/zk/zk
export PATH=$PATH:$ZOOKEEPER_HOME/bin

6.運行 source /etc/profile (此步驟不會有提示 有提示就錯了!!!!)

--------修改zookeeper配置文件--------------------------
創建文件夾存放所需其他緩存文件(!!在每一臺上面!!)
mkdir /tmp/zookeeper -p
mkdir /tmp/logs/zookeeper -p
cd /tmp/zookeeper vi myid (新文件 這個文件寫入機器的ID 1~5依次類推)
第一臺:1
·······
·······
第五台:5

cd $ZOOKEEPER_HOME/conf (進入配置文件目錄)
cp zoo_sample.cfg zoo.cfg (拷貝配置文件模板)
寫入:
server.1=test1:2888:3888
server.2=test2:2888:3888
server.3=test3:2888:3888
server.4=test4:2888:3888
server.5=test5:2888:3888

cd $ZOOKEEPER_HOME/bin/zkEnv.sh
寫入:
ZOO_LOG_DIR=/tmp/logs/zookeeper

設置zookeeper自啟(避免多台機器要開啟 )
直接修改/etc/rc.d/rc.local文件
vi /etc/rc.d/rc.local
寫入:
export JAVA_HOME=/home/java/jdk #jdk安裝目錄
/home/zk/zk/bin/zkServer.sh start #zookeeper啟動命令
---------------------------------------------------------

---------------修改hadoop配置文件-------------------------
(針對Hadoop-Ha配置 5台機器 需要配置3台請見老文件)
【若主機名不同記得修改,否則會導致錯誤】
【記得文件中的起始標符號以及結束的標語】
創建需要的文件夾
mkdir -p /var/log/hadoop/tmp
mkdir -p /data/hadoop/yarn/local
mkdir -p /data/tmp/log
mkdir -p /home/hadoop/hadoop/tmp/hdfs/name
mkdir -p /home/hadoop/hadoop/tmp/hdfs/data

cd $HADOOP_HOME/etc/hadoop (進入hadoop配置文件所在目錄)

1.vi core-site.xml

<configuration>
        <property>
                  <name>fs.defaultFS</name>
                  <value>hdfs://mycluster</value>
        </property>
        <property>
                   <name>hadoop.tmp.dir</name>
                  <value>/var/log/hadoop/tmp</value>
        </property>
         <property>
                <name>ha.zookeeper.session-timeout.ms</name>
                <value>30000</value>
         </property>
</configuration>

2.vi hadoop-env.sh
export JAVA_HOME=/home/java/jdk

3. vi yarn-env.sh
export JAVA_HOME=/home/java/jdk

4. vi mapred-site.xml
cp mapred-site.xml.template mapred-site.xml (複製模板編輯)

<configuration>
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.address</name>
                <value>test1:10020</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.webapp.address</name>
                <value>test1:19888</value>
        </property>
</configuration>

5. vi yarn-site.xml

<configuration>

<!-- Site specific YARN configuration properties -->
<property>
    <name>yarn.resourcemanager.hostname</name>
    <value>test1</value>
</property>
<property>
    <name>yarn.resourcemanager.address</name>
    <value>${yarn.resourcemanager.hostname}:8032</value>
</property>
<property>
    <name>yarn.resourcemanager.scheduler.address</name>
    <value>${yarn.resourcemanager.hostname}:8030</value>
</property>
<property>
    <name>yarn.resourcemanager.webapp.address</name>
    <value>${yarn.resourcemanager.hostname}:8088</value>
</property>
<property>
    <name>yarn.resourcemanager.webapp.https.address</name>
    <value>${yarn.resourcemanager.hostname}:8090</value>
</property>
<property>
    <name>yarn.resourcemanager.resource-tracker.address</name>
    <value>${yarn.resourcemanager.hostname}:8031</value>
</property>
<property>
    <name>yarn.resourcemanager.admin.address</name>
    <value>${yarn.resourcemanager.hostname}:8033</value>
</property>
<property>
    <name>yarn.resourcemanager.local-dirs</name>
    <value>/data/hadoop/yarn/local</value>
</property>
<property>
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
</property>
<property>
    <name>yarn.resourcemanager.remote-app-log-dir</name>
    <value>/data/tmp/logs</value>
</property>
<property>
    <name>yarn.log.server.url</name>
    <value>http://test1:19888/jobhistory/logs/</value>
    <description>URL for job history server</description>
</property>
<property>
    <name>yarn.nodemanager.vmem-check-enabled</name>
    <value>false</value>
</property>
<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>
<property>
    <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
    <value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
    <name>yarn.nodemanager.resource.memory-mb</name>
    <value>2048</value>
</property>
<property>
    <name>yarn.scheduler.minimum-allocation-mb</name>
    <value>512</value>
</property>
<property>
    <name>yarn.scheduler.maximum-allocation-mb</name>
    <value>4096</value>
</property>
<property>
    <name>mapreduce.map.memory.mb</name>
    <value>2048</value>
</property>
<property>
    <name>mapreduce.reduce.memory.mb</name>
    <value>2048</value>
</property>
<property>
    <name>yarn.nodemanager.resource.cpu-vcores</name>
    <value>1</value>
</property>
</configuration>

6. vi slaves(寫入從機名稱)
test3
test4
test5

7. vi hdfs-site.xml

<configuration>
<property>
        <name>dfs.namenode.name.dir</name>
        <value>file:///home/hadoop/hadoop/tmp/hdfs/name</value>
</property>
<property>
        <name>dfs.datanode.data.dir</name>
        <value>file:///home/hadoop/hadoop/tmp/hdfs/data</value>
</property>
<property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>test1:50090</value>
</property>
<property>
        <name>dfs.replication</name>
        <value>2</value>  #文件副本數目
</property>
<property>
        <name>dfs.qjournal.start-segment.timeout.ms</name>
        <value>60000</value>
</property>
<property>
        <name>dfs.nameservices</name>
        <value>mycluster</value>
</property>
<property>
        <name>dfs.ha.namenodes.mycluster</name>
        <value>test1,test2</value>
</property>
<property>
        <name>dfs.namenode.rpc-address.mycluster.test1</name>
        <value>test1:8020</value>
</property>
<property>
        <name>dfs.namenode.rpc-address.mycluster.test2</name>
        <value>test2:8020</value>
</property>
<property>
        <name>dfs.namenode.http-address.mycluster.test1</name>
        <value>test1:50070</value>
</property>
<property>
        <name>dfs.namenode.http-address.mycluster.test2</name>
        <value>test2:50070</value>
</property>
<property>
        <name>dfs.namenode.shared.edits.dir</name>
        <value>qjournal://test1:8485;test2:8485;test3:8485;test4:8485;test5:8485/mycluster</value>
</property>
<property>
        <name>dfs.client.failover.proxy.provider.mycluster</name>
        <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<property>
        <name>dfs.ha.fencing.methods</name>
        <value>sshfence</value>
</property>
<property>
        <name>dfs.ha.fencing.ssh.private-key-files</name>
        <value>/root/.ssh/id_rsa</value>
</property>
<property>
        <name>dfs.journalnode.edits.dir</name>
        <value>/tmp/jn</value>
</property>
<property>
        <name>dfs.ha.automatic-failover.enabled</name>
        <value>true</value>
</property>
<property>
        <name>ha.zookeeper.quorum</name>
        <value>test1:2181,test2:2181,test3:2181,test4:2181,test5:2181</value>
</property>
</configuration>

-------------------------------------------------------------------------------------------------------------------------

=========================拷貝安裝文件夾、配置文件============================
命令:scp -r +原目標文件位置 機器名:存放目標文件位置
eg:
scp -r /home test2:/
scp -r /etc/profile test2:/etc/profile (每一臺拷貝過去後記得刷新 source /etc/profile )
scp -r /etc/hosts test2:/etc/hosts
scp -r /etc/rc.d/rc.local test2:/etc/rc.d/rc.local

====================================================================

=======================================================
創建文件夾在每一臺上面 mkdir /data/hadoop/hdfs/jn -p

在五台機上運行 hadoop-daemon.sh start journalnode
刪除匹配集群ID文件(遇到datanode啟動不了可以刪除這兩個文件之後再格式化)
rm -rf $HADOOP_HOME/tmp/hdfs/name/current
rm -rf $HADOOP_HOME/tmp/hdfs/data/current


關閉防火牆:每一臺 service iptables stop & chkconfig iptables off (連續輸入兩次)

格式化namenode
test1上面: hdfs namenode -format
test1上面: hadoop-daemon.sh start namenode

test2: hdfs namenode -bootstrapStandby

初始化journalnode
test1: hadoop-daemon.sh stop namenode
test1: hdfs namenode -initializeSharedEdits

=======================以上步驟為hadoop集群格式化===========================

 

在每一臺機器啟動zookeeper
zkServer.sh start


初始化ZooKeeper集群
hdfs zkfc -formatZK

主機進入zkClient 【查看是否有 hadoop-ha 沒有就沒初始化成功 要檢查每一臺要創建的文件夾、配置文件是否弄好】
[root@test1 ~]#
eg:
[zk: localhost:2181(CONNECTED) 0] 即為進入zk客戶端 輸入 ls /

查看是否有 hadoop-ha 如若沒有即為每成功!!!!!

啟動hadoop-ha集群順序
zookeeper(這裡我們設置了開機自啟,需要重啟後生效: reboot)----journalnode-----namenode------zkfc------datanode

每一臺重啟後步驟完成 start-all.sh 即可啟動集群
輸入 hadoop dfsadmin -report 可獲取集群狀況 否則自動切換主機沒成功

======================================================================


================================hive配置===============================
hive安裝配置需要開啟集群且集群可以正常使用
mysql安裝
1. 查看電腦中已安裝的mysql版本:
rpm -qa | grep mysql

2. 選擇卸載,或者保留當前前版本
卸載: rpm -e xxxxxxxxxxxxxx(mysql版本) --nodeps (--nodeps代表強制卸載)
例: rpm -e mysql-libs-5.1.73-8.el6_8.x86_64 --nodeps
或者: rpm -e --nodeps mysql

3. 解壓傳過來的mysql.tar包
cd /home
tar -zxvf mysql-5.6.43-linux-glibc2.12-x86_64.tar.gz -C /home

4. 安裝mysql服務
yum install mysql-server

5. 安裝開發庫以及包含文件
yum install mysql-devel

6.開啟mysqld服務
service mysqld start

7.登錄mysq進行設置
mysql -u root -p (初始密碼為空)
設置密碼:
set password for 'root'@'localhost'=password('123456');
set password for 'root'@'%'=password('123456');
set password for 'root'@'test1'=password('123456');

開放遠程連接:
grant all privileges on *.* to root@"%" identified by "root" with grant option;

讓設置立即生效:
flush privileges

創建資料庫便於hive使用
create database hivedb (名字自己修改)

新建文件夾,mkdir /home/hive

上傳Hive安裝文件壓縮包

解壓hive安裝文件壓縮文件

tar -zxvf apache-hive-2.1.1-bin.tar.gz -C /home/

重命名hive解壓文件
mv apache-hive-2.1.1 hive

配置環境變數:
vi /etc/profile

在文件末尾增加一段(hive包含bin文件的目錄)
export HIVE_HOME=/home/hive/
export PATH=${HIVE_HOME}/bin:$PATH

讓環境變數生效
source /etc/profile

進入Hive的配置文件目錄
cd /home/hive/hive/conf
修改hive-env.sh
cp hive-env.sh.tamplate hive-env.sh
將以下內容寫到hive-env.sh中
export JAVA_HOME=/home/java/jdk
export HADOOP_HOME=/home/hadoop/hadoop
export HIVE_HOME=/home/hive/

新建hive-site.xml文件
vi hive-site.xml
寫入

<configuration>
        <property>
                <name>javax.jdo.option.ConnectionURL</name>
                <value>jdbc:mysql://192.168.80.131:3306/hahive?createDatabaseIfNotExist=true</value>#(本機ip以及資料庫名稱)
        </property>

        <property>
                <name>javax.jdo.option.ConnectionDriverName</name>
                <value>com.mysql.jdbc.Driver</value>#(驅動)
        </property>

        <property>
                <name>javax.jdo.option.ConnectionUserName</name>
                <value>root</value>#(資料庫賬戶)
        </property>

        <property>
                <name>javax.jdo.option.ConnectionPassword</name>
                <value>123456</value>#(密碼)
        </property>

        <property>
                <name>hive.metastore.schema.verification</name>
                <value>false</value>
        </property>
</configuration>

將mysql驅動上傳到虛擬機
拷貝驅動到 /home/hive/lib
cp mysqlxxx--xx------ /home/hive/lib

初始化Hive
schematool -initSchema -dbType mysql (若報錯使用 schematool -dbType mysql -initSchema )

(開啟mysqld服務)運行hive測試(登錄mysql命令mysql -uroot -p123456)

====================================================================

============================HBASE安裝部署=============================
HBASE需要在完整Hadoop-Ha下進行除Hive外 【時間同步必須進行檢驗】
1.在官網下載HBASE安裝包,並上傳到虛擬機 、home

2.解壓安裝包

tar -zxvf hbase-xxxxxxxxxx -C /home
mv /home/hbasexxxxxxx /home/hbase

3.編輯環境變數
vi /etc/profile
寫入:
export HBASE_HOME=/home/hbase
export PATH=$PATH:$HBASE_HOME/bin

4.編輯HBASE配置文件 進入HBASE安裝目錄 cd /home/hbase/conf

vi hbase-env.sh
寫入:
export JAVA_HOME=/home/java/jdk/
export HBASE_CLASSPATH=/home/hadoop/hadoop/etc/hadoop
export HBASE_LOG_DIR=${HBASE_HOME}/logs
export HBASE_MANAGES_ZK=false

vi hbase-site.xml (註意主機名)

<property>
                <name>hbase.rootdir</name>
                <value>hdfs://mycluster/hbase</value>
        </property>
        <property>
                <name>hbase.cluster.distributed</name>
                <value>true</value>
        </property>
        <property>
                <name>hbase.zookeeper.quorum</name>
                <value>test1,test2,test3,test4,test5</value>
        </property>
        <property>
                <name>dfs.replication</name>
                <value>2</value>
        </property>

vi regionservers (加入從機)

test3
test4
test5

5.拷貝到其他機器(每一臺)
scp -r /home/hbase test2:/home/
scp -r /etc/profile test2:/etc/profile

HBASE常用命令:
啟動: hbase-daemon.sh start master (第一臺)
其他啟動: hbase-daemon.sh start regionserver
進入shell: hbase shell

---------------------------------------------ERROR---------------------------------------------------------
假如啟動 hbase shell報錯:
[ERROR] Terminal initialization failed; falling back to unsupported
...............................
Unhandled Java exception: java.lang.IncompatibleClassChangeError: Found class jline.Terminal, but interface was expected
java.lang.IncompatibleClassChangeError: Found class jline.Terminal, but interface was expected

是 /home/hadoop/hadoop/share/hadoop/yarn/lib/jline-0.9.94.jar jar包版本太低
解決方案:

刪除原本的jar包 rm -rf /home/hadoop/hadoop/share/hadoop/yarn/lib/jline-0.9.94.jar

拷貝新jar包 cp /home/hive/lib/jline-2.12.jar /home/hadoop/hadoop/share/hadoop/yarn/lib/

-------------------------------------------------------------------------------------------------------------
========================HBASE shell常用命令==============================
1. 版本獲取: version
hbase(main):005:0> version
2.0.6, rd65cccb5fda039217954a558c65bda423e0d6df3, Wed Aug 14 15:44:48 UTC 2019
Took 0.0003 seconds
版本號 校驗碼 發佈時間 運行命令的時間

2. 狀態獲取: status
hbase(main):006:0> status
1 active master, 0 backup masters, 4 servers, 0 dead, 0.7500 average load
Took 0.0094 seconds

3. 幫助: help

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在閱讀unpv1時運行源代碼的環境配置,這裡簡單記錄一下 源代碼里的README 寫得挺詳細的,但是在Linux 系統的下還是沒辦法直接編譯通過的, 這裡我使用的是ubuntu 19.10(在騰訊雲ubuntu server 18.04.1也測試通過) 以下是簡單的步驟: 1.下載源碼並解壓 2.解 ...
  • 安裝流程 這裡使用 brew 來安裝軟體。 安裝 查看安裝信息(經常用到, 比如查看安裝目錄等) 安裝後,主要看brew把nginx安裝到哪裡去了,預設是安裝到 常用命令記錄 查看nginx版本 啟動nginx服務 訪問: 後,看到如下內容就是啟動成功了。 如果沒有啟動成功,查看一下進程, : 查看 ...
  • 本次實驗環境:cn_windows_server_2019_x64_dvd_4de40f33cn_windows_7_enterprise_x64_dvd_x15-70741第一步:用戶創建第二步:添加主機第三步:資源分配1、用戶創建點擊工具選擇Active Directory用戶和電腦右鍵添加一... ...
  • 本次實驗環境:cn_windows_server_2019_x64_dvd_4de40f33第一步:安裝DNS服務搭建,提供域環境的功能變數名稱解析;第二部:安裝Active Directory服務搭建,域服務。1、安裝DNS服務安裝DNS服務,伺服器必須設置為固定IP地址。伺服器管理模板點擊管理-添加角色... ...
  • CentOS7主要有rpm和yum這兩種包軟體的管理。兩者有功能上的區別,其中主要區別是:yum使用簡單但需要聯網,yum會去網上包源去獲取所需要的軟體包。而rpm的需要做的事情就更細一些,比如我們需要記錄軟體的安裝位置、版本、信息等,類似macOS的homebrew。 rpm的工作原理是以一種數據 ...
  • 更多電腦使用技巧可以訪問 "https://xiaoheidiannao.com" 查看哦 今天打開微信電腦版的時候就自動更新到了2.9.0測試版(可能早已經有人更新到此版本了),更新內容如下: 1.Windows7及以上系統新增小程式面板,可查看最近使用和我的小程式。 2.聊天中可以引用更多類型的 ...
  • 先安裝zsh 安裝oh my zsh 手動安裝 自動安裝 ` 不管使用手動 自動安裝,完成後都需要重啟。oh my zsh才能生效。 修改主題 挑選你喜歡的主題:https://github.com/robbyrussell/oh my zsh/wiki/Themes ...
  • Redis是一個開源的、基於記憶體的數據結構存儲器,可以用作資料庫、緩存和消息中間件 Redis最常用的功能 緩存 分散式鎖 ...
一周排行
    -Advertisement-
    Play Games
  • 概述:在C#中,++i和i++都是自增運算符,其中++i先增加值再返回,而i++先返回值再增加。應用場景根據需求選擇,首碼適合先增後用,尾碼適合先用後增。詳細示例提供清晰的代碼演示這兩者的操作時機和實際應用。 在C#中,++i 和 i++ 都是自增運算符,但它們在操作上有細微的差異,主要體現在操作的 ...
  • 上次發佈了:Taurus.MVC 性能壓力測試(ap 壓測 和 linux 下wrk 壓測):.NET Core 版本,今天計劃準備壓測一下 .NET 版本,來測試並記錄一下 Taurus.MVC 框架在 .NET 版本的性能,以便後續持續優化改進。 為了方便對比,本文章的電腦環境和測試思路,儘量和... ...
  • .NET WebAPI作為一種構建RESTful服務的強大工具,為開發者提供了便捷的方式來定義、處理HTTP請求並返迴響應。在設計API介面時,正確地接收和解析客戶端發送的數據至關重要。.NET WebAPI提供了一系列特性,如[FromRoute]、[FromQuery]和[FromBody],用 ...
  • 原因:我之所以想做這個項目,是因為在之前查找關於C#/WPF相關資料時,我發現講解圖像濾鏡的資源非常稀缺。此外,我註意到許多現有的開源庫主要基於CPU進行圖像渲染。這種方式在處理大量圖像時,會導致CPU的渲染負擔過重。因此,我將在下文中介紹如何通過GPU渲染來有效實現圖像的各種濾鏡效果。 生成的效果 ...
  • 引言 上一章我們介紹了在xUnit單元測試中用xUnit.DependencyInject來使用依賴註入,上一章我們的Sample.Repository倉儲層有一個批量註入的介面沒有做單元測試,今天用這個示例來演示一下如何用Bogus創建模擬數據 ,和 EFCore 的種子數據生成 Bogus 的優 ...
  • 一、前言 在自己的項目中,涉及到實時心率曲線的繪製,項目上的曲線繪製,一般很難找到能直接用的第三方庫,而且有些還是定製化的功能,所以還是自己繪製比較方便。很多人一聽到自己畫就害怕,感覺很難,今天就分享一個完整的實時心率數據繪製心率曲線圖的例子;之前的博客也分享給DrawingVisual繪製曲線的方 ...
  • 如果你在自定義的 Main 方法中直接使用 App 類並啟動應用程式,但發現 App.xaml 中定義的資源沒有被正確載入,那麼問題可能在於如何正確配置 App.xaml 與你的 App 類的交互。 確保 App.xaml 文件中的 x:Class 屬性正確指向你的 App 類。這樣,當你創建 Ap ...
  • 一:背景 1. 講故事 上個月有個朋友在微信上找到我,說他們的軟體在客戶那邊隔幾天就要崩潰一次,一直都沒有找到原因,讓我幫忙看下怎麼回事,確實工控類的軟體環境複雜難搞,朋友手上有一個崩潰的dump,剛好丟給我來分析一下。 二:WinDbg分析 1. 程式為什麼會崩潰 windbg 有一個厲害之處在於 ...
  • 前言 .NET生態中有許多依賴註入容器。在大多數情況下,微軟提供的內置容器在易用性和性能方面都非常優秀。外加ASP.NET Core預設使用內置容器,使用很方便。 但是筆者在使用中一直有一個頭疼的問題:服務工廠無法提供請求的服務類型相關的信息。這在一般情況下並沒有影響,但是內置容器支持註冊開放泛型服 ...
  • 一、前言 在項目開發過程中,DataGrid是經常使用到的一個數據展示控制項,而通常表格的最後一列是作為操作列存在,比如會有編輯、刪除等功能按鈕。但WPF的原始DataGrid中,預設只支持固定左側列,這跟大家習慣性操作列放最後不符,今天就來介紹一種簡單的方式實現固定右側列。(這裡的實現方式參考的大佬 ...