jumpserver跳板机搭建,适合centos6和centos7的使用
第17章 jumpserver的搭建
17.1 jumpserver的介绍
- jumpserver是全球首款开源的堡垒机,使用的是GNU,GPL的开源协议.
- jumpserver是用python和go语言进行开发的,使用的是web界面进行使用的,方便,简单
- jumpserver现在支持ssh,telnet,vnc协议资产
17.2 搭建jumpserver的意义
- jumpserver可以拦截非法访问和恶意攻击,对不符合法的命令进行阻断
- jumpserver建立了完善的用户权限管理制度,可以更加的精确的指定用户所特有的服务器,最大的程度导致越权造成的问题,提高运维的安全性
- jumpserver可以集中账号的管理,提高管理效率
17.3 支持的系统
- 硬件:ssh协议的硬件设备
- 软件:centos,redhat,fedora,linux,Debian,SUSE,Ubuntu,FreeBSD
17.4 jumpserver的特点
- 完全开源,GPL授权
- python开发,容易再次开发
- 实现了跳板机的基本功能.认证,授权,审计
- 支持web界面,界面美观
- 录像回放
- 监控管理
- 批量上传下载
17.5 jumpserver命令行配置
17.5.1 关闭防火墙和selinux
[root@jumpserver ~] # systemctl status firewalld 关闭
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: man:firewalld(1)
[root@jumpserver ~] # getenforce
Disabled 关闭
[root@jumpserver ~] #
17.5.2 安装所需的jumpserver的软件信息
yum -y install git python-pip mysql-devel mariadb-server gcc automake autoconf python-devel vim sshpass lrzsz readline-devel
17.5.3 下载jumpserver
[root@jumpserver opt] # cd /opt/
[root@jumpserver opt] # git clone https://git.coding.net/jumpserver/jumpserver.git
Cloning into 'jumpserver'...
Receiving objects: 100% (11559/11559), 13.56 MiB | 218.00 KiB/s, done.
Resolving deltas: 100% (7897/7897), done.
You have new mail in /var/spool/mail/root
[root@jumpserver opt] #
17.5.4 安装python依赖的软件
17.5.4.1 更新pip源
[root@jumpserver opt] # mkdir ~/.pip/
You have new mail in /var/spool/mail/root
[root@jumpserver opt] # vim ~/.pip/pip.conf
[global]
index-url = https://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
17.5.4.2 安装的python的依赖软件
[root@jumpserver opt] # cd /opt/jumpserver/install/
[root@jumpserver install] # pip install -r requirements.txt
17.5.4.3 重启数据库
[root@jumpserver install] # systemctl restart mariadb
[root@jumpserver install] #
17.5.5 软件进行初始化的过程
[root@jumpserver install] # python /opt/jumpserver/install/install.py
请务必先查看wiki https://github.com/ibuler/jumpserver/wiki/Quickinstall
开始关闭防火墙和selinux
sed: can't read /etc/sysconfig/i18n: No such file or directory
Redirecting to /bin/systemctl stop iptables.service
Failed to stop iptables.service: Unit iptables.service not loaded.
请输入您服务器的IP地址,用户浏览器可以访问 [10.0.0.81]: 10.0.0.81
是否安装新的MySQL服务器? (y/n) [y]: y
请输入SMTP地址:
smtp.qq.com
请输入SMTP端口 [25]:
请输入账户: 460523471@qq.com
请输入密码:
enoncgdkvjhlbjbd
请登陆邮箱查收邮件, 然后确认是否继续安装
是否继续? (y/n) [y]: y
开始写入配置文件
请输入管理员用户名 [admin]: admin
请输入管理员密码: [5Lov@wife]: admin
请再次输入管理员密码: [5Lov@wife]: admin
Starting jumpsever service:manage.py not running
run_websocket.py not running
[SUCCESS]
安装成功,请访问web, 祝你使用愉快。
请访问 https://github.com/ibuler/jumpserver 查看文档
You have new mail in /var/spool/mail/root
[root@jumpserver install] #
17.5.1.1 出现启动失败的处理情况
[root@jumpserver install] # cd /opt/jumpserver/
You have new mail in /var/spool/mail/root
root@jumpserver jumpserver] # ./service.sh start
Starting jumpsever service: [ OK ]
[root@jumpserver jumpserver] #
17.6 jumpserver web界面配置
17.6.1 登录web界面(账号:admin,密码:admin)
17.6.2 用户管理操作
17.6.2.1 添加用户(一般添加的为普通用户)
17.6.2.2 添加用户常见的问题
- 创建用户邮件没有发送成功
- 查看你在后台和你linux界面的邮箱地址是否一样(vim /etc/jumpserver.conf)
- 查看邮箱服务是否正常,如果正常,重启看下
17.6.3 资产管理操作(资产管理主要是让什么用户来进行资产的管理)
17.6.3.1 添加资产
17.6.3.2 批量添加资产信息
17.6.4 授权管理
17.6.4.1 添加sudo别名(普通用户由于权限没什么,所以现在获得了权限)
17.6.4.2 系统用户的添加(定义资产用户的)
17.6.4.3 授权管理(就是告诉那个登录jumpserver,并且可以管理的资产,和登录资产用户所使用的普通用户是哪个)
17.6.5 登录普通用户
17.6.5.1 查看lyx普通用户可以管理的主机信息
17.6.5.2 查看普通用户管理的主机是否连接成功,系统用户是不是正常的
17.6.5.3 批量执行命令,目前这里只管理一台主机,现在在去添加一台主机(操作就是上面的用户推送的时候推送给哪台主机)
17.6.5.4 单个服务器进行操作
17.6.6 日志审核
17.6.6.1 在线
17.6.6.2 登录历史
17.6.6.3 命令记录
17.6.7 上传下载
17.6.7.1 上传(把东西上传到指定的服务器上面,以web01服务器为主)
17.6.7.2 下载(将服务器的信息下载到指定的本地上)
17.6.8 在liunx界面操作
17.6.8.1 登录成功的界面信息
17.6.8.2 分析jumpserver软件的一些功能
- 上述开机就会出现,是因为他调用了一个位置的脚本(/etc/profile.d)
- 不是广宏伟的用户
- 是广宏伟的用户
17.6.9 jumpserver常见的错误信息
17.6.9.1 权限问题
17.6.9.2 用户问题
17.6.9.3 查看日志
tail -f /opt/jumpserver/logs/jumpserver.log
注:里面包含了详细的日志,包含了账号和密码,一切完成后,请将 jumpserver.conf中的log改为 warning等
17.6.9.4 推送系统用户失败,Authentication failed,报错如下图
- 在系统用户列表,点击系统用户名称,查看系统用户详情,把鼠标放到失败按钮上或点击,会看到失败的原因,如下图
- 原因:管理用户不对或密码不对
- 解决:查检你的管理帐号设置的正确,管理帐号是后端服务器真实存在的,再重新推送。如下图
17.6.9.5 安装时或加用户发送邮件发送失败
- 原因:出现mail,smtp等错误通常都是由于发送邮件导致的
- 解决:请尝试不同提供商的邮件设置
- 原因:该邮箱并不存在
- 解决:使用真实邮箱
- 原因:ssl没有启用
- 解决:vim /opt/jumpserver/jumpserver.conf 中 email_use_tls = False 将False改为True
17.6.9.6 server启动失败
- 请进入/opt/jumpserver目录,手动运行./service.sh restart
- 注:如果启动失败端口是否被占用,默认端口是80,web访问要加上:8000,可以vim /opt/jumpserver.conf 80修改为8000
17.6.9.7 Permission denied /home/test/.python-eggs,PYTHON_EGG_CACHE
> 原因:没有权限创建
> 解决:vim /etc/profile
> export PYTHON_EGG_CACHE=/tmp/.python-eggs
> 保存后执行命令:
> source /etc/profile
17.6.9.8 mpz_powm_sec
> 原因:系统自带 gmp 库版本太低,需要升级到 gmp 5.x
> 解决:
> 1.gmp-6.1.0.tar.bz2 下载最新版并解压
> tar xjvf gmp-6.1.0.tar.bz2
> 2.编译安装
> cd gmp-6.1.0
> ./configure
> make
> make install
> 3.加入 ldconfig
> echo "/usr/local/lib" >> /etc/ld.so.conf.d/gmp.conf
> ldconfig
> 4.查看确认是否已经加入
> strings /etc/ld.so.cache|grep gmp
> 5.重新安装 pycrypto
> pip uninstall pycrypto
> pip install pycrypto
17.6.9.9 Crypto,getStrongprime,HAVE_DECL_MPZ_POWM_SEC等错误
> 很常见的错误,通常是由 pycrypto的版本问题,请卸载重新安装
> pip uninstall pycrypto
> rm -rf /usr/lib64/python2.6/site-packages/Crypto/
> rm -rf /usr/lib64/python2.6/site-packages/pycrypto-2.6.1-py2.6-linux-x86_64.egg(大部分不执行这条就能解决)
> pip install pycrypto==2.4.1
17.6.9.10 web登录,当前帐号是admin 账号,想WebTerminal,报没有授权系统用户如下图
> 原因:admin超级管理员也是需要在授权规则里添加
> 解决:授权规则里添加 admin,如下图
报错 django.db.utils.OperationalError: (1045, Access denied for user jumpserver 127.0.0.1 (using password: YES))
- 原因: 通常是配置信息不对
- 解决:先查检 mysql -u jumpserver -p -h 127.0.0.1 正常登录 ,再查检一下jumpserver.conf 配置文件中[db]部分信息是否正确
17.6.9.12 安装完成后,使用admin登陆,输入正确密码点击登陆还是停留在登陆页面,也不提示用户名密码失败。若估计输入错误的用户名密码就会提示密码错误
- 原因:IE浏览器不兼容,兼容问题
- 解决:换成Chrome、火狐、360要用极速模式
17.6.9.13 ./install.py 报错安装Jumpserver依赖的python的库失败
> 原因:可能被墙了
> 解决:pip install -r requirements.txt 多尝试几次
> 或者指定源安装
> `pip install -r requirements.txt -i http://pypi.douban.com/simple --trusted-host pypi.douban.com`
17.6.9.14 web terminal 登陆失败
> 原因:系统默认只允许tty登录
> 解决:开启允许后台运行:vim /etc/sudoers 需注释掉 #Default requiretty
> 原因:资产不是网络设备而是主机,推送系统用户
使用了模拟推送,此时[]里面是空的
> 解决:选择使用密钥,然后在推送系统用户
> 原因:推送系统用户,选择使用密钥推送,此时[]里面有主机名,而终端登陆客户端没问题
> 解决:先清除浏览器的缓存,在尝试 web terminal登陆,如果不行在删除 /opt/jumpserver/keys/user目录下的key,在次尝试 web terminal登陆
> 原因:客户端sshd_config 中 AuthorizedKeysFile .ssh/abc/authorized_keys 路径修改过
> 解决:AuthorizedKeysFile .ssh/authorized_keys 修改回默认路径,service sshd restart 重启服务
> ![webterminal](https://github.com/jumpserver/static/blob/master/wiki/faq/69.png)
> 原因:python manage.py runserver 10.10.100.176 8888,这样启动JMS而tornado并没有启动
> 解决: ./service.sh restart 启动JMS
> ![webterminal](https://github.com/jumpserver/static/blob/master/wiki/faq/68.png)
> 原因:客户端sshd_config 中 AuthorizedKeysFile 指定了其它用户的公钥
> 解决:AuthorizedKeysFile .ssh/authorized_keys 修改回默认路径,service sshd restart 重启服务
> ![webterminal](https://github.com/jumpserver/static/blob/master/wiki/faq/67.png)
> 原因:添加系统用户设置密码时,用了特殊字符如@、中文等,从jumpserver.log 中可以看到role_pass是串编码
> 解决:设置密码不要用特殊字符如@、中文等
> 原因:资产的主机名称太长
> 解决:资产的主机名称小于54个字符,git pull 到最新代码,已限制53个字符
> 原因:资产的主机名称有中文
> 解决:修改资产的主机名称不要有中文
> 原因:登录JMS本机
> 解决:不要登录JMS本机(不能管理本机)
> 原因:客户端之前安装过0.3.0 版本或者JMS之前安装是0.3.0版本
> 解决:cd /etc/profile.d/ && rm -rf zzjumpserver.sh
> 原因:资产的主机名称包含"/"字符
> 解决:资产的主机名称不要有"/"字符,最好用"_"下划线
> 原因:连接登陆时间跨天的问题
> 解决:可以通过创建计划任务,定时修改日志权限
> vim date.sh 内容如下
> `mkdir /opt/jumpserver/logs/tty/$(date +%Y%m%d)`
> `chmod -R 777 /opt/jumpserver/logs/tty/$(date +%Y%m%d)`
> crontab -e 添加计划任务,每天0时1分创建或者修改目录
> `1 0 * * * /root/date.sh`
> crontab -l 查看计划任务
> 1 0 * * * /root/date.sh
17.6.9.15 ServerError: 端口可能不对 Connect SSH Socket Port Error, Please Correct it.
原因:后端服务器是否没有启动,关机状态。
17.6.9.16 报错如图
解决:pip install paramiko --upgrade
17.6.9.20 推送系统用户时,报错:visudo:command not found
> 原因:centos 系统版本 < 6.0会有这个问题
> 解决:ln -s /usr/sbin/visudo /usr/bin/visudo 加了个软连接
可以了
17.6.9.21 报错UnicodeEncodeError如图
> 原因:主机名不支持用中文
> 解决:主机名不要用中文
17.6.9.22 ssh密钥登录不上,如图
> 原因:172.19.16.230是客户端,不能直接登录客户端
> 解决:35054用户应该先登录JMS在跳转登录172.19.16.230客户端
> 原因:客户端iptablse或者SElinux 阻止了ssh登陆
> 解决:修改iptablse规则、SElinux关掉
> 原因:/权限不对,如图
> 解决:修改/权限为555
> 原因:进行二次开发集成了域,而JMS的/etc/passwd下并没有这个用户
17.6.9.23 jumpserver如何更新代码
cd /opt/jumpserver
git pull
17.6.9.24 推送系统用户失败:错误提示是/var/tmp/scl5N8iRw: line 8: -k: command not found
> 原因:客户端安装了软件(如devtoolset)会修改PATH 导致sudo命令的路径不是/usr/bin/sudo
which sudo查看sudo命令的路径是否为/usr/bin/sudo
> 解决:可以弄个软链接
或者
把路径改回去
或者
卸载软件
17.6.9.25 输入g没有显示组
> 原因:授权规则
方式中
没有选择资产组
授权
> 解决:授权规则
方式中
选择资产组
授权
输入g 才会显示
17.6.9.25 Error: ansible requires a json module, none found!
> 原因:client 端python版本过低,python < 2.6
> 解决:要不升级python要不就安装python-simplejson
17.6.9.26 推送系统用户报错cp:/etc/sudoers: NO such file or directory ..
> 原因:FreeBSD 默认在/usr/local/etc/sudoers
> 解决:ln -s /usr/local/etc/sudoers /etc/sudoers
17.6.9.27 推送系统用户报错如图 LANG=C:command not found
> 原因:FreeBSD 系统默认shell 为csh
> 解决:安装bash
> cd /usr/ports/shells/bash
> make install clean
> chsh -s /usr/local/bin/bash
> 退出:
> exit
> 在登录执行:
> echo $SHELL // 显示/usr/local/bin/bash说明更改成功
> 创建软链接:
> ln -s /usr/local/bin/bash /bin/bash
17.6.9.28 SSH Error: Permission denied (publickey)
> 原因:/etc/ssh/sshd_config 关闭ssh密码登录
> 解决:PasswordAuthentication yes #不能关闭ssh密码登录
17.6.9.29 推送系统用户报错:Aborting, target useres selinux but python bindings( libselinux-python)are n't installed!
> 原因:后端服务器开启了selinux
> 解决:yum install libselinux-python -y
17.6.9.30 认证失败 Authentication Error 如下图
> 原因:如果推送系统用户时有选:使用密钥,并且推送成功,keys/user目录下key问题
> 解决:cd /opt/jumpserver/keys/user 然后删除所有key或以登录失败用户名开头的所有key,再尝试登录
> 原因:客户端的sshd_config 中 UsePAM no
> 解决:改为 UsePAM yes
> 原因:客户端的.ssh/authorized_keys 文件被人删掉
> 解决:从其他的正常客户端重新考一份
17.6.9.31 推送系统用户报错:FAILED: key cannot be used for signing
> 原因:批量导入资产:其中管理账号(使用默认),而默认设置并没有设置
> 解决:设置-->默认设置
17.6.9.32 报错如下图
> 原因:后端服务器没有启动
> 解决:启动后端服务器
17.6.9.33 git clone 失败
> 原因:系统时间没对上
> 解决:设置一下系统时间
17.6.9.34 安装报错: gcc:error: /usr/lib/rpm/redhat/redhat-hardened-cc1: NO such file or directory
> 原因:依赖包没有装全
> 解决:yum -y install rpm-build
17.6.9.35 报错: failed to open a SFTP connection,如图
> 原因:客户端sshd_config 中SFTP默认路径信息不对
> cat /etc/ssh/sshd_conf
> Subsystem sftp /usr/libexec/sftp-server
> ll /usr/libexec/sftp-server 是否会列出该文件信息,可用于判断路径对不对
> 解决:一种/usr/libexec/sftp-server路是对的
> ln -s /usr/libexec/openssh/sftp-serve /usr/libexec/sftp-server 创建软连接
> vim /etc/ssh/sshd_conf
> Subsystem sftp /usr/libexec/openssh/sftp-serve
> 另一种/usr/libexec/sftp-server路是不对,正确路径是/usr/libexec/openssh/sftp-serve
> vim /etc/ssh/sshd_conf
> Subsystem sftp /usr/libexec/openssh/sftp-serve
> 注:修改后保存 service sshd restart
17.6.9.36 报错: failed to open a SFTP connection ((1, 'Administratively prohibited'))
> 原因:客户端sshd_config中启用了
> MaxAuthTries 4
> MaxSessions 2
> 解决:用#号注释掉保存, service sshd restart
> jms 服务重启 ./service.sh restart
17.6.9.37 报错如图
> 原因:在python交互式下导入ssl报错,说明系统没有安装_ssl module
> 解决:yum install openssl openssl-devel
> 解决:Ubuntu: apt-get install libssl-dev
> 注:如果是编译安装的python,安装openssl后需重新编译下
17.6.9.38 ImportError: No module named cryptography.hazmat.backends
> 解决:pip install cryptography --force-reinstall
17.6.9.39 推送用户失败,如下图
> 原因:客户端默认关闭sftp
> 解决:开启sftp
17.6.9.40 报错如图
> 原因:客户端上给普通用户添加sudo权限作为管理帐号,添加sudo权限语法不对
> 解决:添加语法请看FAQ第34条
17.6.9.41 Error: Package: git-1.7.12.4-1.el5.rf.x86_64 (rpmforge)报错如图
> 解决:
> [root@test28 install]#rpm -qa|grep rpmforge
> rpmforge-release-0.5.2-2.el6.rf.x86_64
> [root@test28 install]# rpm --erase rpmforge-release-0.5.2-2.el6.rf.x86_64
> warning: /etc/yum.repos.d/rpmforge.repo saved as /etc/yum.repos.d/rpmforge.repo.rpmsave
> [root@test28 install]# yum install git
> Setting up Install Process
> Package git-1.7.1-4.el6_7.1.x86_64 already installed and latest version
17.6.9.42 添加用户选发送邮件,收到邮件中的URL少了端口
> 原因:JMS默认端口使用8000
> 解决:修改jumpserver.conf配置
> port = 8000 修改成80 或者修改url = http://[ip|域名]:8000
> ./service.sh restart 让修改配置生效
17.6.9.43 完成JMS安装,启动失败,即便手动./service.sh restart还是启动失败
> 原因:使用virtualenv环境,而service.sh中python环境会使用宿主机的
> 解决:修改service.sh中python,改成pyenv中python绝对路径就行了
17.6.9.44 报错如图
> 原因:没有jumpserver.conf配置文件(可能被你移动到别目录),或者[base]部分代码不对(被修改过)
> 解决:cp一份回来
jumpserver跳板机搭建,适合centos6和centos7的使用的更多相关文章
- 其他综合-CentOS7 安装 Jumpserver 跳板机
CentOS7 安装 Jumpserver 跳板机 1.实验描述 搭建 jumpserver 平台,实现有效的运维安全审计.完美做到事先防范,事中控制和事后溯源 2.实验环境 物理机系统:Window ...
- Linux系统——JumpServer跳板机的搭建和部署
公网源部署jumpserver跳板机 建立阿里云公网源yum仓库(服务端)[root@localhost ~]# lsanaconda-ks.cfg install.log.syslog jumpse ...
- jumpserver跳板机docker安装小小趟坑
最近日常运维的时候发现每次登陆服务器都要打开终端目录连接对应的服务器,闲暇的时候还好,运维任务很重的时候才发现这样的玩法很傻,浪费时间且一点儿都跟不上潮流,然后打开githup开始搞起来.docker ...
- linux Jumpserver跳板机 /堡垒机详细部署
关于跳板机/堡垒机的介绍: 跳板机的定义: 跳板机就是一台服务器,开发或运维人员在维护过程中首先要统一登录到这台服务器,然后再登录到目标设备进行维护和操作: 跳板机缺点: 没有实现对运维人员操作行为的 ...
- jumpserver跳板机(堡垒机)安装
jumpserver跳板机(堡垒机) Jumpserver 是一款由Python编写开源的跳板机(堡垒机)系统,实现了跳板机应有的功能,基于ssh协议来管理,客户端无需安装agent,助力互联网企业 ...
- 项目(五)jumpserver企业开源跳板机搭建
跳板机是什么?跳板机是运维堡垒主机的另个称呼.作为技术或者运维人员应该不会陌生.企业为了服务器的安全,通常所有的ssh连接都是通过跳板机来完成,以便于对ssh连接进行验证和管理. 接下来,我来讲述一下 ...
- CentOS 7 搭建Jumpserver跳板机(堡垒机)
跳板机概述: 跳板机就是一台服务器,开发或运维人员在维护过程中首先要统一登录到这台服务器,然后再登录到目标设备进行维护和操作 跳板机缺点:没有实现对运维人员操作行为的控制和审计,使用跳板机的过程中还是 ...
- Jumpserver跳板机的搭建和部署
1.需要搭云yum仓库wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo 2. ...
- jumpserver跳板机的搭建
搭建的跳板机基于0.3.2,别问我为什么不用0.5版本的,我能说我没有搭建成功么,步骤贼多,功能不完善,不建议生产环境使用 步骤其实很简单: github wiki :https://github.c ...
随机推荐
- 创建基于OData的Web API - Knowledge Builder API, Part I:Business Scenario
在.NET Core 刚刚1.0 RC的时候,我就给OData团队创建过Issue让他们支持ASP.NET Core,然而没有任何有意义的答复. Roadmap for ASP.NET Core 1. ...
- lqb 基础练习 01字串 (itoa)
基础练习 01字串 时间限制:1.0s 内存限制:256.0MB 问题描述 对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能.它们的前几个是: 00000 00001 0 ...
- 简单的 smartpointer
水水地 发第一篇blog, 瘦身版的smartpointer. template <typename T> class CountedPtr { private: T* ptr; long ...
- PL真有意思(一):引言
前言 断断续续学编译原理到之前发过写一个编译器和正则表达式引擎系列文章也有一段时间了,然后最近看完PLP这本书,这本书应该算是入门书,但是对我这种半吊子收获很大.所以为了弥补最近学操作系统和接外包摸的 ...
- centos7清理矿机木马qw3xT,kpgrbcc
腾讯云报告了root口令被暴力破解,并种了木马kpgrbcc 昨晚找到/usr/bin/ rm -rf kpgrbcc 删除 rm -rf kpgrbcb 删除 并ps -ef | grep kpg ...
- caffe网络在多线程中无法使用GPU的解决方案 | cpp caffe net run in multiple threads
本文首发于个人博客https://kezunlin.me/post/8d877e63/,欢迎阅读! cpp caffe net run in multiple threads Guide set_mo ...
- css 给div添加滚动并隐藏滚动条
在html中 <div class="box"> <div>下面内容会单独滚动</div> <div class="scroll ...
- Java设计模式之鸭子模式
这两天在看HeadFirst设计模式,第一种鸭子模式都不太理解.后来在百度知道上看了某大神的解释 明白了不少. 列出如下: 假设我们需要设计出各种各样的鸭子,一边游泳戏水, 一边呱呱叫.很明显这时我们 ...
- Scala学习笔记三
scala变量理解: package com.cxy.scala object Hello { def main(args: Array[String]): Unit = { println(&quo ...
- Java 大小端转换(基于ByteBuffer)
大小端的基础知识: 小端( little-endian):低位字节在前,高位字节在后.大端( Big-Endian),则反之.具体而言,就是为了说清楚,CPU架构1 字(word)中byte的存储顺序 ...