CentOS7开发环境搭建(1)

文章目录

    • BIOS开启VT支持
    • U盘安装系统(2019-03-11)
    • CentOS DNS配置
    • CentOS网络配置
      • 配置静态IP
      • 克隆虚拟机网卡名称变更 CentOS6.5
    • 时间配置
    • 安装VMWare-tools
    • 用户管理 (2019-03-15 7.6.1810)
      • 给一般账号 root 权限
    • Samba服务配置
    • 安装必备软件
    • 获取本机公网ip
    • yum源和第三方库源管理
      • 配置本地源(2019-03-12)
      • 配置国内源
      • 使用第三方源
      • 多个gcc版本共存管理(2019-03-15)
      • 多版本系统资源
      • 常用工具安装
    • 单用户模式

系列文章

  • CentOS7开发环境搭建(1)
  • CentOS7开发环境搭建(2)

BIOS开启VT支持

  • 查询笔记本进入BIOS的按键,启动BIOS的虚拟化设置
  • 如果安装360卫士,那么请永久关闭Intel-VT核晶防护引擎
    这里写图片描述

U盘安装系统(2019-03-11)

  • 系统镜像:CentOS-7-x86_64-DVD-1810.iso
  • 制作工具:UltraISO

使用UltraISO制作安装U盘的步骤

  1. 【文件】【打开】选择系统镜像
  2. 【启动】【写入硬盘映像】【格式化】选择默认系统格式以及Label改成CENTOS7,快速格式化,完成后写入

常见问题:

  • 在INSTALLATION SOURCE中无法选择本地镜像
    可能安装U盘制作的问题,建议重新制作
  • Warning: /dev/root does not exist, could not boot
    此问题是由于无法找到U盘的问题,命令行下ls /dev/或者lsblk查看U盘对应的盘符,比如/dev/sda4. 启一下,上下键选择安装菜单,然后按下Tab键,编辑启动命令,将vmlinuz initrd=initrd.imginst.stage2=hd:LABEL=CentOS\x207\x20x86_64 rd.live.check quiet 改为:vmlinuz initrd=initrd.img inst.stage2=hd:/dev/sdb4 quite

CentOS DNS配置

Linux 下设置DNS位置有3处,其生效顺序如下:

  • /etc/hosts
  • 网卡配置文件DNS服务器地址
  • /etc/resolv.conf

通过设置主机表地址进行特定主机的解析,优先DNS服务器地址,/etc/hosts:

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
123.125.114.144 www.baidu.com #手动指定百度的IP

在/etc/hosts配置www.baidu.com的网址后,可以用ping www.baidu.com命令来观看ping的地址是否是123.125.114.114

Linux中默认的DNS服务器地址配置文件为/etc/resolv.conf:

nameserver 114.114.114.114 #配置DNS服务器地址,可配置多个
nameserver 8.8.8.8

在网卡配置文件中添加DNS服务器地址, /etc/sysconfig/network-scripts/ifcfg-eno16777736:

DNS1=114.114.114.114
DNS2=8.8.8.8

解析域名的方法:

[root@localhost]# nslookup baidu.com
Server:		114.114.114.114
Address:	114.114.114.114#53Non-authoritative answer:
Name:	baidu.com
Address: 220.181.57.217
Name:	baidu.com
Address: 111.13.101.208
Name:	baidu.com
Address: 123.125.114.144
Name:	baidu.com
Address: 180.149.132.47[root@localhost]# host baidu.com
baidu.com has address 180.149.132.47
baidu.com has address 220.181.57.217
baidu.com has address 111.13.101.208
baidu.com has address 123.125.114.144
baidu.com mail is handled by 10 mx.n.shifen.com.
baidu.com mail is handled by 20 mx1.baidu.com.
baidu.com mail is handled by 20 jpmx.baidu.com.
baidu.com mail is handled by 20 mx50.baidu.com.
[root@localhost]# dig baidu.com; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6 <<>> baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33094
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 0;; QUESTION SECTION:
;baidu.com.			IN	A;; ANSWER SECTION:
baidu.com.		202	IN	A	111.13.101.208
baidu.com.		202	IN	A	123.125.114.144
baidu.com.		202	IN	A	180.149.132.47
baidu.com.		202	IN	A	220.181.57.217;; Query time: 28 msec
;; SERVER: 114.114.114.114#53(114.114.114.114)
;; WHEN: Wed Nov 18 13:31:29 2015
;; MSG SIZE  rcvd: 91

CentOS网络配置

配置静态IP

根据centos7.0安装教程安装虚拟机。

su root切换到root用户,编辑配置文件vim /etc/sysconfig/network-scripts/ifcfg-eno16777736

HWADDR=00:0C:29:23:C4:B1 #ip link show查看
TYPE=Ethernet
#BOOTPROTO=dhcp
BOOTPROTO=static
IPADDR=192.168.0.122
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
DNS1=114.114.114.114
DNS2=8.8.8.8
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
NM_CONTROLLED=no
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eno16777736
UUID=ebd7eace-f0b7-4d48-b4d6-fd6ee3f7e21d #nmcli con show
# ONBOOT=no
ONBOOT=yes

注意配置能够使用的DNS,否则无法解析域名,可参考常用公共DNS服务器地址

service network restart重启网络

ping baidu.com是否能够ping通百度

自动生成配置文件:nmcli con add con-name ens3f0 type ethernet ifname ens3f0

配置多个网卡
配置第二个时,需要自己创建配置文件,在重启网卡之前,停止NetworkManager
systemctl stop NetworkManager
systemctl disable NetworkManager

克隆虚拟机网卡名称变更 CentOS6.5

虚拟机克隆后发现网卡名称从eth0改成了eth1,如何改回呢:

  1. /etc/udev/rules.d/70-persistent-net.rules查看到两块网卡eth0与eth1,eth0为克隆系统的,eth1为重新生成,注释掉第一个eth0网卡信息。将eth1更改为eth0并记录下mac地址;
    # This file was automatically generated by the /lib/udev/write_net_rules
    # program, run by the persistent-net-generator.rules rules file.
    #
    # You can modify it, as long as you keep each rule on a single
    # line, and change only the value of the NAME= key.# PCI device 0x8086:0x100f (e1000)
    #SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:94:65:9c", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"# PCI device 0x8086:0x100f (e1000)
    SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:aa:e3:ea", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"```
    
  2. /etc/sysconfig/network-scripts/ifcfg-eth0更改DEVICE与HWADDR
  3. 重启系统,此处重启网络不行

时间配置

配置本地时区:
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
同步网络时间:
yum install ntpdate
ntpdate pool.ntp.org
手动配置时间:

date –s '2016-12-09 15:50:59'clock -r //读CMOS日期
clock –w //将日期写入CMOShwclock --show                          //查看硬件时钟
hwclock --set --date="11/23/2016 22:16:59" //设置硬件时钟

或者使用RHEL7及CentOS7中新增的systemd的timedatectl命令,具体参考Linux(RHEL7及CentOS7)的时间设置篇(timedatectl,date,hwclock)-系统管理(2)

# timedatectlLocal time: Thu 2019-03-07 09:10:03 CSTUniversal time: Thu 2019-03-07 01:10:03 UTCRTC time: Thu 2019-03-07 01:10:03Time zone: Asia/Shanghai (CST, +0800)NTP enabled: no
NTP synchronized: noRTC in local TZ: noDST active: n/a
# timedatectl -h
timedatectl [OPTIONS...] COMMAND ...Query or change system time and date settings.-h --help                Show this help message--version             Show package version--no-pager            Do not pipe output into a pager--no-ask-password     Do not prompt for password-H --host=[USER@]HOST    Operate on remote host-M --machine=CONTAINER   Operate on local container--adjust-system-clock Adjust system clock when changing local RTC modeCommands:status                   Show current time settingsset-time TIME            Set system timeset-timezone ZONE        Set system time zonelist-timezones           Show known time zonesset-local-rtc BOOL       Control whether RTC is in local timeset-ntp BOOL             Control whether NTP is enabled

安装VMWare-tools

# 【虚拟机】-【安装VMWare-tools】
mount /dev/cdrom /mnt
cd /mnt
tar xvf /mnt/VMwareTools-9.9.0-2304977.tar.gz -C /tmp
cd /tmp/vmware-tools-distrib
./vmware-install.pl  # 一路回车即可

【问题1】安装过程中报错:vmhgfs-only/page.c:1625:23: 错误:提供给函数‘wait_on_bit’的实参太多

1、在解压后的 vmware-tools-distrib/ 目录中,进入到 lib/modules/source/,解压 vmhgfs.tar,得到 vmhgfs-only 目录。

2、修改文件 vmhgfs-only/page.c :把第1622行

#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 17, 0)改成#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 10, 0) 因为 CentOS 7 的内核版本是 3.10.0。

3、重新把 vmhgfs-only 目录打包为 vmhgfs.tar。

4、重新执行安装脚本 vmware-install.pl。

【问题2】vmvare安装后,共享的文件夹在/mnt/hgfs目录并没有显示出来

1、运行/usr/bin/vmware-config-tools.pl会出现错误
2、/usr/lib/vmware-tools/modules/source目录,同问题的解决步骤进行修改
3、在运行/usr/bin/vmware-config-tools.pl

用户管理 (2019-03-15 7.6.1810)

给一般账号 root 权限

默认情况下,一般账号是没有 root 权限的。为什么不直接用 root 账号,而是要给一般账号 root 权限呢?

  • 日常工作中使用 root 账号,是非常糟糕且危险的习惯!无论是服务器还是个人电脑都是如此。
  • 安装软件时需要 root 权限,只能 su 切换到 root 账户再安装。对于习惯使用 sudo 的人来说,还是有些麻烦。

假设账户名为 seisman,要授予他 root 权限,则要修改配置文件 /etc/sudoers :

$ su
# echo 'seisman ALL=(ALL) ALL'>> /etc/sudoers # 向配置文件中加入语句
# tail -1 /etc/sudoers  # 检查一下是否正确
seisman ALL=(ALL) ALL

其中 seisman 为当前用户名。

Samba服务配置

yum install samba samba-client samba-common安装相关软件

# rpm -qa | grep samba
samba-4.1.12-23.el7_1.x86_64
samba-libs-4.1.12-23.el7_1.x86_64
samba-common-4.1.12-23.el7_1.x86_64
samba-client-4.1.12-23.el7_1.x86_64

这里顺便说一下搭建samba服务器所需要的基本软件包:

  1. samba 这个软件包包含了主要的daemon文件(smbd和nmbd)
  2. samba-common 提供samba的主要配置文件(smb.conf)、smb.conf语法检测程序(testparm)等
  3. samba-client 当linux作为samba 客户端的时候,提供了一套所需的工具和指令。

备份配置文件cp /etc/samba/smb.conf /etc/samba/smb.conf.$(date +%F)
编辑vim /etc/samba/smb.conf

[global]workgroup = MYGROUPserver string = Samba Server Version %vlog file = /var/log/samba/log.%mmax log size = 50security = userpassdb backend = tdbsamload printers = yescups options = raw[samba]comment = my share dirpath = /home/userbrowseable = yesguest ok = yeswritable = yespublic = yes

添加用户smbpasswd -a samba_user,设置密码
重启服务
service smb restart
service nmb restart

关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0

安装iptables服务
yum install iptables-services

Linux下客户端测试
smbclient -L //192.168.0.122/samba -U samba_user

设置开机启动
systemctl enable smb.service

Win8下添加网络位置
进入我的电脑,【右击】-【添加网络位置】根据向导一直点击【下一步】,在Internet地址或网络位置下填写\\192.168.0.122\samba,【下一步】根据提示填写用户与密码。

安装必备软件

  • 安装gcc: yum -y install gcc
  • 安装g++: yum -y install gcc-c++
  • 安装gccgo: yum -y install gcc-go
  • 安装小工具:
  • yum -y install lrzsz screen
  • yum -y install socat nc nmap
  • yum -y install tree

获取本机公网ip

  • curl http://members.3322.org/dyndns/getip
  • curl ipinfo.io
{"ip": "36.110.42.197","hostname": "No Hostname","city": "Beijing","region": "Beijing Shi","country": "CN","loc": "39.9289,116.3883","org": "AS4847 China Networks Inter-Exchange"
}

yum源和第三方库源管理

安装完系统,我们常常意愿使用国内的yum源或本地源以提高下载速度,使用第三方库源来获取不在标准库中的资源。常用管理总结如下

yum工具配置文件/etc/yum.conf

[main]
cachedir=/var/cache/yum/$basearch/$releasever # basearch就是架构,如x86_64,releasever版本号,如7
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release#  This is the default, if you make this bigger yum won't see if the metadata
# is newer on the remote and so you'll "gain" the bandwidth of not having to
# download the new metadata and "pay" for it by yum not having correct
# information.
#  It is esp. important, to have correct metadata, for distributions like
# Fedora which don't keep old packages around. If you don't like this checking
# interupting your command line usage, it's much better to have something
# manually check the metadata once an hour (yum-updatesd will do this).
# metadata_expire=90m# PUT YOUR REPOS HERE OR IN separate files named file.repo
# in /etc/yum.repos.d

配置本地源(2019-03-12)

系统镜像:CentOS-7-x86_64-DVD-1810.iso

  • 【虚拟机】【设置】【硬件】【CD/DVD(IDE)】【设备状态】选择启动时连接,【连接】使用ISO镜像文件,选择ISO文件;或者在实体机中连接镜像光驱
  • 查看配置文件,系统安装后自带
    # cat /etc/yum.repos.d/CentOS-Media.repo 
    # CentOS-Media.repo
    #
    #  This repo can be used with mounted DVD media, verify the mount point for
    #  CentOS-7.  You can use this repo and yum to install items directly off the
    #  DVD ISO that we release.
    #
    # To use this repo, put in your DVD and use it with the other repos too:
    #  yum --enablerepo=c7-media [command]
    #  
    # or for ONLY the media repo, do this:
    #
    #  yum --disablerepo=\* --enablerepo=c7-media [command][c7-media]
    name=CentOS-$releasever - Media
    baseurl=file:///media/CentOS/file:///media/cdrom/file:///media/cdrecorder/
    gpgcheck=1
    enabled=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
    
    baseurl中可以知道,会去/media/cdrom这项去找源
  • sudo mkdir /media/cdrom;sudo mount /dev/cdrom /media/cdrom 挂载ISO
  • yum repolist all查看源的状态
    c7-media          CentOS-7 - Media         disabled
    
  • yum-config-manager --enable c7-media

配置国内源

查看CentOS源的帮助,根据CentOS版本进行对应的操作

  • http://mirrors.aliyun.com
  • http://mirrors.163.com
  • https://mirrors.huaweicloud.com/
  • https://mirrors.tuna.tsinghua.edu.cn/

使用第三方源

CentOS7

yum localinstall http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm
# ffmpeg 2.8.15yum localinstall --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-7.noarch.rpm https://download1.rpmfusion.org/nonfree/el/rpmfusion-nonfree-release-7.noarch.rpm
# ffmpeg 3.4.7

CentOS6.7为例

  1. 安装yum优先级插件

yum install yum-priorities

  1. epel简介: https://fedoraproject.org/wiki/EPEL/zh-cn
rpm -Uvh http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

以上URL请按实际情况修改

  1. 查看是否安装成功

rpm -q epel-release

  1. 导入key:

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6

  1. 修改/etc/yum.repos.d/epel.repo文件

在[epel]最后添加一条属性 priority=11

vi /etc/yum.repos.d/epel.repo
意思是yum先去官方源查,官方没有再去epel的源找

  1. 重建缓存

yum makecache

多个gcc版本共存管理(2019-03-15)

在一些软件编译时,对编译器的版本有要求,比如gcc不低于某某或者不高于某某。

Centos7 gcc版本默认4.8.3,为了兼容CentOS6的包,提供了compat-gcc安装包

# yum search compat-gcc
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile* base: mirrors.163.com* extras: mirrors.163.com* updates: mirrors.163.com
====================================== N/S matched: compat-gcc ======================================
compat-gcc-44.x86_64 : Compatibility GNU Compiler Collection
compat-gcc-44-c++.x86_64 : C++ support for compatibility compiler
compat-gcc-44-gfortran.x86_64 : Fortran support for compatibility compiler

Red Hat 为了软件的稳定和版本支持,yum 上gcc版本也是4.8.3,所以无法使用yum进行软件更新。要升级更高版本的gcc,我们需要scl源

  • 安装scl源 yum install -y centos-release-scl
  • 要启用和运行 SCL 中的应用,你还需要安装下列包: yum install -y scl-utils-build
  • 安装高版本的gcc yum install -y devtoolset-8-toolchain
  • 查看scl安装的软件列表 scl --list
  • 使用devtoolset-4的环境 scl enable devtoolset-4 bash

参考: Centos7升级gcc版本方法之一使用scl软件集

多版本系统资源

http://vault.centos.org/

常用工具安装

  • yum install man-pages libstdc++-docs 安装开发手册, man手册中文版设置

单用户模式

虚拟机长时间不用,最可能发生的事情是忘记root密码

https://www.cnblogs.com/zhangjianghua/p/6094496.html

参考:

  • CentOS7下设置网卡名称以eth开头
  • CentOS虚拟机如何设置共享文件夹,并在Windows下映射网络驱动器?
  • CentOS IP、DNS配置
  • LINUX的DNS怎么设置?linux下如何修改DNS地址​
  • Linux学习之CentOS(三十三)–DNS基础及域名系统架构
  • CentOS—网络配置详解
  • CentOS6.5下添加epel源
  • CentOS yum 源的配置与使用
  • CentOS 7下编译安装Boost_1_57_0
  • 在 CentOS 7 下配置 Android 开发环境

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/508627.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NS2相关学习——创建Xgraph的输出文件

经过前面学习代码的编写&#xff0c;这一部分&#xff0c;我们要学会如何进行分析&#xff0c;一个很直观的方式就是将结果图形化表示出来。 ns-allinone包的一部分是“xgraph”&#xff0c;一个绘图程序&#xff0c;可用于创建模拟结果的图形表示。 在本节中&#xff0c;将向…

An Energy-Efficient Ant-Based Routing Algorithm for Wireless Sensor Networks (无线传感网中基于蚁群算法的能量有效路由)2

牙说&#xff1a;接着上一篇继续写。论文标题&#xff1a;An Energy-Efficient Ant-Based Routing Algorithm forWireless Sensor Networks作者&#xff1a;Tiago Camilo, Carlos Carreto, Jorge S Silva, Fernando Boavida正文&#xff1a; 2、相关工作可以考虑无线传感器网络…

NS2仿真分析无线网络的攻击防御(1)

这个学期有个选题是NS2仿真分析无线网络的攻击防御&#xff0c;比较有意思的样子&#xff0c;现在来慢慢学一下这个是什么东西。 首先&#xff0c;还是一篇文章&#xff08;老长老长了&#xff09;&#xff0c;还是全英文的&#xff0c;还是先来分析一下它到底在说什么&#x…

Java集合之HashMap源码分析

以下源码均为jdk1.7 HashMap概述 HashMap是基于哈希表的Map接口的非同步实现. 提供所有可选的映射操作, 并允许使用null值和null健. 此类不保证映射的顺序. 需要注意的是: HashMap不是同步的. 哈希表 哈希表定义: 哈希表是一种根据关键码去寻找值的数据映射结构, 该结构通…

NS2相关学习——可靠的MANET应用程序的Gossip协议分析

好久不写&#xff0c;应该努力啦&#xff01;老师把这篇论文给了我&#xff0c;现在还不知道它在讲什么&#xff0c;来边翻译边学习吧&#xff01; 文章链接&#xff1a;https://www.researchgate.net/publication/316844643_Analyzing_Gossip_Protocols_for_Reliable_MANET_Ap…

Java集合之LinkedList源码分析

概述 LinkedLIst和ArrayLIst一样, 都实现了List接口, 但其内部的数据结构不同, LinkedList是基于链表实现的(从名字也能看出来), 随机访问效率要比ArrayList差. 它的插入和删除操作比ArrayList更加高效, 但还是要遍历部分链表的指针才能移动到下标所指的位置, 只有在链表两头的…

lex和yacc环境配置

lex和yacc的使用很简单&#xff0c;但环境配置却是各种问题&#xff0c;本章说明lex和yacc在windows下的环境配置。 软件需求&#xff1a; 系统 win7-64位(win7-32, win8, win10全部通过) c编译器&#xff1a; vs2010(2008,2013,2015也全部通过) lex和yacc编译器&#xff1a…

Java集合之Vector源码分析

概述 Vector与ArrayLIst类似, 内部同样维护一个数组, Vector是线程安全的. 方法与ArrayList大体一致, 只是加上 synchronized 关键字, 保证线程安全, 下面就不具体分析源码了, 具体可以查看ArrayList中的源码分析. Vector源码分析 1.主要字段 2.构造函数 3.增删改查 其他方法…

Gossip协议的P2P会员管理

阅读此论文主要目的在于理解gossip协议及其背后的原理&#xff0c;此部分详细翻译&#xff0c;其余部分看时间 文章标题&#xff1a;Gossip协议的P2P会员管理 作者&#xff1a;Ayalvadi J. Ganesh, Anne-Marie Kermarrec, and Laurent Massoulie Abstract&#xff1a;基于…

Java集合之LinkedHashSet源码分析

概述 LinkedHashSet与HashSet类似, 不同的是LinkedHashSet底层使用LinkedHashMap维护元素插入的顺序. LinkedHashSet继承自HashSet, 只是重写了HashSet的构造方法, 初始化一个LinkedHashMap, 其他均与HashSet相同. LinkedHashSet构造方法 HashSet的构造方法: 以上几乎就是Li…

Java集合之ArrayList源码分析

概述 ArrayList可以理解为动态数组, 根据MSDN的说法, 就是Array的复杂版本. 与数组相比, 它的容量能动态增长. ArrayList是List接口的可变数组的实现. 实现了所有可选列表操作, 允许包括null在内的所有元素. 数组的特点, 查询快增删慢. 每个ArrayList实例都有一个容量, 该容…

Java集合之Hashtable源码分析

概述 Hashtable也是基于哈希表实现的, 与map相似, 不过Hashtable是线程安全的, Hashtable不允许 key或value为null. 成员变量 Hashtable的数据结构和HashMap一样, 采用 数组加链表的方式实现. 几个成员变量与HashMap一样: 方法 Hashtable的方法与HashMap基本一样, 只是 Ha…

视频质量检测中的TP、FP、Reacll、Precision

在看论文《Measuring Vedio QoE from Encrypted Traffic》的时候看到TP&#xff08;True Positives&#xff09;、FP&#xff08;False Positives&#xff09;、Precison、Recall的概念&#xff0c;这属于数据挖掘方面的内容&#xff0c;学习之后特来记录。 首先&#xff0c;下…

Java集合之LinkedHashMap源码分析

概述 HashMap是无序的, 即put的顺序与遍历顺序不保证一样. LinkedHashMap是HashMap的一个子类, 它通过重写父类的相关方法, 实现自己的功能. 它保留插入的顺序. 如果需要输出和输入顺序相同时, 就选用此类. LinkedHashMap原理 LinkedHashMap是如何保证输入输出顺序的呢? L…

Java集合之HashSet源码分析

概述 HashSet是基于HashMap来实现的, 底层采用HashMap的key来保存数据, 借此实现元素不重复, 因此HashSet的实现比较简单, 基本上的都是直接调用底层HashMap的相关方法来完成. HashSet的构造方法就是创建HashMap: 基本操作 1.添加操作 2.删除操作 3.迭代器 其他方法基本也是调…

三次握手wireshark抓包分析,成功握手和失败握手

转载之前&#xff1a;基于HTTP的视频流中&#xff0c;客户端有时会打开使用多条TCP与服务器连接&#xff0c;为了验证每一对话的sessionID是否相同&#xff0c;使用wireshark进行了抓包分析&#xff08;抓到的都是加密的包&#xff0c;无卵用orz....&#xff09;&#xff0c;这…

Java 内部类及其原理

Java中实现内部类 内部类相信大家都用过很多次了&#xff0c;就不说它是怎么用的了。 内部类 1.成员内部类 需要注意的是&#xff0c; 当成员内部类拥有和外部类同名的成员变量或这方法时&#xff0c; 默认情况下访问的是内部类的成员&#xff0c; 如要访问外部类的同名成员&…

Java8 Lambda表达式

概述 lambda表达式&#xff0c; 是Java8中的一个新特性。可以理解为一个匿名函数。 lambda表达式可以理解为将一个函数浓缩为一行代码&#xff0c;使代码更加简洁紧凑。 lambda表达式语法&#xff1a; (parameters) -> statement; 或 (parameters) -> {statements;} 参…

Java8 方法引用

概述 方法引用是用来直接访问类或实例阴茎存在的方法或者构造方法.它需要由兼容的函数式接口(lambda表达式中用到的接口)构成的目标类型上下文. 有时候, 当我们想要实现一个函数式接口的方法, 但是已经由类实现了我们想要的功能, 这时可以使用方法引用来直接使用现有的功能实现…

配置过程中的一些问题

一、 Tomcat相关问题 1、百度经验有设置用户名密码&#xff0c;但是按照步骤进行&#xff0c;到测试的时候发现还是错误的。 解决&#xff1a;在设置的时候应该stop Tomcat&#xff0c;在设置好之后再重新开启Tomcat&#xff0c;发现可以。 2、把web项目加入Tomcat&#xff0…