第十四章 JAVAEE定制篇 搭建JAVAEE环境

14.1 安装JDK

1)先将软件通过xftp5上传到/opt下

2)解压缩到/opt

3)配置环境变量的配置文件vim/etc/profile

JAVA_HOME=/opt/jdk1.7.0_79 #JAVA_HOME
PATH=/opt/jdk1.7.0_79/bin:$PATH #路径
export JAVA_HOME PATH #输出变量,环境变量生效

4)需要注销用户,环境变量才能生效

5)在任何目录下就可以使用java和javac

14.2 安装tomcat

1)解压缩到/opt

2)先进入到tomcat的bin目录,启动tomcat ./startup.sh

使用Linux本地的浏览是可以访问到tomcat

3)开放端口8080,这样外网才能访问到tomcat

vim /etc/sysconfig/iptables

重启防火墙

service iptables restart
service iptables status #查看8080端口是否开启

4)测试是否安装成功,在windows、Linux下访问http://linuxip:8080

14.3 Eclipse的安装

1)解压缩到/opt

2)启动eclipse,配置jre和server

启动方法1:创建一个快捷方式

启动方式2:进入到eclipse解压后的文件夹,然后执行./eclipse即可

14.4 mysql的安装和配置

一:卸载旧版本

使用下面的命令检查是否安装有MySQL Server

rpm -qa | grep mysql

有的话通过下面的命令来卸载掉

rpm -e mysql_libs   //普通删除模式
rpm -e --nodeps mysql_libs // 强力删除模式,如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除

二:安装MySQL

安装编译代码需要的包

yum -y install make gcc-c++ cmake bison-devel  ncurses-devel

下载MySQL 5.6.14

tar -zxvf mysql-5.6.14.tar.gz
cd mysql-5.6.14

编译安装[源码=》编译]

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/etc -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci
make && make install

三:配置MySQL

设置权限

使用下面的命令查看是否有mysql用户及用户组

cat /etc/passwd 查看用户列表
cat /etc/group 查看用户组列表

如果没有就创建

groupadd mysql
useradd -g mysql mysql

修改/usr/local/mysql权限

chown -R mysql:mysql /usr/local/mysql

初始化配置,进入安装路径(再执行下面的指令),执行初始化配置脚本,创建系统自带的数据库和表

cd /usr/local/mysql
scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql

注:在启动MySQL服务时,会按照一定次序搜索my.cnf,先在/etc目录下找,找不到则会搜索"$basedir/my.cnf",在本例中就是 /usr/local/mysql/my.cnf,这是新版MySQL的配置文件的默认位置!

注意:在CentOS 6.8版操作系统的最小安装完成后,在/etc目录下会存在一个my.cnf,需要将此文件更名为其他的名字,如:/etc/my.cnf.bak,否则,该文件会干扰源码安装的MySQL的正确配置,造成无法启动。

修改名称,防止干扰

mv /etc/my.cnf /etc/my.cnf.bak

启动MySQL

添加服务,拷贝服务脚本到init.d目录,并设置开机启动

[注意在 /usr/local/mysql 下执行]

cp support-files/mysql.server /etc/init.d/mysql
chkconfig mysql on
service mysql start --启动MySQL

执行下面的命令修改root密码

cd /usr/local/mysql/bin
./mysql -uroot
mysql> SET PASSWORD = PASSWORD('root');

第十五章 大数据定制篇SHELL编程

15.1 为什么要学习Shell编程

1)Linux运维工程师在进行服务器集群管理时,需要编写Shell程序来进行服务器管理。

2)对于JavaEE和Python程序员来说,工作的需要,你的老大会要求你编写一些Shell脚本进行程序或者是服务器的维护,比如编写一个定时备份数据库的脚本。

3)对于大数据程序员来说,需要编写Shell程序来管理集群。

15.2 Shell是什么

Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序。

15.3 shell编程快速入门-Shell脚本的执行方式

1.脚本格式要求:

1)脚本以#!/bin/bash开头

注:#!/bin/sh是指此脚本使用/bin/sh来解释执行,#!是特殊的表示符,其后面跟的是解释此脚本的shell的路径

2)脚本需要有可执行权限

2.编写第一个Shell脚本:

创建一个Shell脚本,输出helloworld!

touch myShell.sh
vim myShell.sh #!/bin/bash
echo "hello,world~"

3.脚本的常用执行方式

方式1(输入脚本的绝对路径或相对路径)

1)首先要赋予helloworld.sh脚本的+x权限

2)执行脚本

chmod 744 myShell.sh # 给所有者一个x权限
./myShell.sh

方式2(sh+脚本),不推荐

不用赋予脚本+x权限,直接执行即可

sh ./myShell.sh

15.4 shell的变量

Shell的变量的介绍

1)LinuxShell中的变量分为,系统变量和用户自定义变量。

2)系统变量:\(HOME、\)PWD、\(SHELL、\)USER等等比如:echo$HOME等等..

3)显示当前shell中所有变量:set

shell变量的定义

基本语法

1)定义变量:变量=值

2)撤销变量:unset变量

3)声明静态变量:readonly 变量,注意:不能unse

快速入门

案例1:定义变量A

A=100
echo "A=$A"

案例2:撤销变量A

unset A
echo "A=$A"

案例3:声明静态的变量B=2,不能unset

readonly A=99
echo "A=$A"
unset A # 静态变量不能unset
echo "A=$A"

定义变量的规则

1)变量名称可以由字母、数字和下划线组成,但是不能以数字开头

2)等号两侧不能有空格

3)变量名称一般习惯为大写

将命令的返回值赋给变量(重点)

1)A=`ls -la`反引号,运行里面的命令,并把结果返回给变量A

2)A=$(ls-la)等价于反引号

RESULT='ls -l /home'
echo $RESULT
echo ""
MY_DATE=$(date)

15.5 设置环境变量

基本语法

1)export变量名=变量值(功能描述:将shell变量输出为环境变量)2)source配置文件(功能描述:让修改后的配置信息立即生效)3)echo $变量名(功能描述:查询环境变量的值)

快速入门

1)在/etc/profile文件中定义TOMCAT_HOME环境变量

TOMCAT_HOME=/opt/tomcat
export TOMCAT_HOME

2)查看环境变量TOMCAT_HOME的值

echo	$TOMCAT_HOME

3)在另外一个shell程序中使用TOMCAT_HOME

# 多行注释
:<<!
! echo "tomcathome=$TOMCAT_HOME"

注意:在输出TOMCAT_HOME环境变量前,需要让其生效source/etc/profile

15.6位置参数变量

介绍

当我们执行一个shell脚本时,如果希望获取到命令行的参数信息,就可以使用到位置参数变量,比如:./myshell.sh 100 200,这个就是一个执行shell的命令行,可以在myshell脚本中获取到参数信息

基本语法

$n(功能描述:n为数字,$0代表命令本身,$1-$9代表第一到第九个参数,十以上的参数,十以上的参数需要用大括号包含,如${10})
$*(功能描述:这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体)
$@(功能描述:这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待)
$#(功能描述:这个变量代表命令行中所有参数的个数)

位置参数变量应用实例

案例:编写一个shell脚本positionPara.sh,在脚本中获取到命令行的各个参数信息

echo "$0 $1 $2"
echo "$*"
echo "$@"
echo "参数个数=$#"

15.7 预定义变量

基本介绍

就是shell设计者事先已经定义好的变量,可以直接在shell脚本中使用

基本语法

$$(功能描述:当前进程的进程号(PID))
$!(功能描述:后台运行的最后一个进程的进程号(PID))
$?(功能描述:最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为非0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确了)

应用实例

在一个shell脚本中简单使用一下预定义变量

# !/bin/bash
echo "当前的进程号+$$"
# 后台的方式运行 myShell.sh
./myShell.sh &
echo "最后的进程号=$!"
echo "执行的值$?"

15.8 运算符

基本语法

1)“$((运算式))”或“$[运算式]”
2)expr m + n
注意expr运算符间要有空格
3)expr m - n
4)expr \*,/,% 乘,除,取余

应用实例

案例1:计算(2+3)X4的值

1)$((运算式))

#!/bin/bash
RESULT1=$((2+3)*4)
echo "result1=$RESULT1"

2)$[运算式]

#!/bin/bash
RESULT2=$[(2+3)*4]
echo "result2=$RESULT2"

3)expr

TEMP='expr 2 + 3'
RESULT3='expr $TEMP \* 4'
echo "result3=$RESULT3"

案例2:请求出命令行的两个参数[整数]的和

SUM=$[$1+$2]
echo "SUM=$SUM"

15.9 条件判断

判断语句

[ condition ](注意condition前后要有空格)
非空返回true

常用判断条件

1)两个整数的比较
= 字符串比较
-lt 小于
-le 小于等于
-eq 等于
-gt 大于
-ge 大于等于
-ne 不等于
2)按照文件权限进行判断
-r 有读的权限[-r文件]
-w 有写的权限
-x 有执行的权限
3)按照文件类型进行判断
-f 文件存在并且是一个常规的文件
-e 文件存在
-d 文件存在并是一个目录

应用实例

案例1:"ok"是否等于"ok"

if [ "ok100" = "ok" ]
then
echo "equal"
fi

案例2:23是否大于等于22

if [ 23 -gt 22 ]
then
echo "大于"
fi

案例3:/root/install.log目录中的文件是否存在

if [ -e /root/install.log ]
then
echo "存在"
fi

15.10 流程控制

if判断

基本语法
if [ 条件判断式 ]
then
程序
fi if [ 条件表达式 ]
then
程序
elif [ 条件判断式 ]
then
程序
fi

注意事项:(1)[ 条件判断式 ],中括号和条件判断式之间必须有空格 (2)推荐使用第二种方式

应用实例

案例:请编写一个shell程序,如果输入的参数,大于等于60,则输出"及格了",如果小于60,则输出"不及格"

#!/bin/bash
if [ $1 -ge 60 ]
then
echo "及格了"
elif [ $1 -lt 60 ]
then
echo "不及格"
fi

case语句

基本语法
case $变量名 in
"值1")
如果变量值等于值1,则执行程序1
;;
"值2")
如果变量值等于值2,则执行程序2
;;
...省略其他分支...
*)
如果变量的值都不是以上的值,则执行此程序
;;
esac

应用实例

案例1:当命令行参数是1时,输出"周一",是2时,就输出"周二",其它情况输出"other"

#!/bin/bash
case $1 in
"1")
echo “周一”
;;
“2”)
echo "周二"
;;
*)
echo "other"
;;
esac

for循环

基本语法1
for 变量 in 值1 值2 值3 ...
do
程序
done
基本语法2
for(( 初始值;循环控制条件;变量变化 ))
do
程序
done

应用实例

案例1:打印命令行输入的参数【会使用到\(*\)@】

#!/bin/bash
for i in "$*"
do
echo "the sum is $i"
done
echo "====================="
for i in "$@"
do
echo "the sum is $j"
done

案例2:从1加到100的值输出显示

#!/bin/bash
SUM=0
for(( i=1;i<=100;i++ ))
do
SUM=$[$SUM+$i]
done
echo "sum=$SUM"

while循环

基本语法
while [ 条件判断式 ]
do
程序
done

应用实例

案例1:从命令行输入一个数n,统计从1+..+n的值是多少?

#!/bin/bash
SUM=0
i=0
while [ $i -le $1 ]
do
SUM=$[$SUM+$i]
i=$[$i+1]
done
echo "sum=$SUM" 运行文件
./myShell 100

15.11 read读取控制台输入

基本语法
read(选项)(参数)
选项:
-p: 指定读取值时的提示符
-t: 指定读取值时等待的时间(秒),如果没有在指定的时间内输入,就不再等待了
参数:
变量:指定读取值的变量名

应用实例

案例1:读取控制台输入一个num值

#!/bin/bash
read -p "请输入一个数num1=" NUM1
echo “你输入的值是num1=$NUM1”

案例2:读取控制台输入一个num值,在10秒内输入

#!/bin/bash
read -t 10 -p "请输入一个数num2=" NUM2
echo “你输入的值是num2=$NUM2”

15.12 函数

函数介绍

shell编程和其它编程语言一样,有系统函数,也可以自定义函数。系统函数中,我们这里就介绍两个。

系统函数

basename 基本语法
功能:返回完整路径最后/的部分,
basename [pathname] [suffix]
basename [string] [suffix] (功能描述:basename命令会删掉所有的前缀包括最后一个(‘/’)字符,然后将字符串显示出来)
选项:
suffix为后缀,如果suffix被指定了,basename会将pathname或string中的suffix去掉 dirname 基本语法
功能:返回完整路径最后/的前面的部分,常用于返回路径部分
dirname 文件绝对路径(功能描述:从给定的包含绝对路径的文件名中去除文件名(非目录的部分),然后返回剩下的路径(目录的部分))

应用实例

案例1:请返回/home/aaa/test.txt的"test.txt"部分

basename /home/aaa/test.txt
结果:
test basename /home/aaa/test.txt .txt
结果:
test

案例2:请返回/home/aaa/test.txt的/home/aaa

dirname /home/aaa/test.txt
结果:
/home/aaa dirname /home/aaa/ccc/jjj/ooo/test.txt
结果:
/home/aaa/ccc/jjj/ooo

自定义函数

基本语法
[ function ]funName[()]
{
action;
[return int;]
}
调用直接写函数名:funName [值]

应用实例

案例1:计算输入两个参数的和(read),getSum

#!/bin/bash
funcation getSum(){
SUM=$[$n1+$n2]
echo "SUM=$SUM"
} read -p "请输入第一个数n1" n1
read -p "请输入第一个数n2" n2 #调用getSum
getSum $n1 $n2

15.13 Shell编程综合案例

需求分析

)每天凌晨2:10备份数据库atguiguDB到/data/backup/db

2)备份开始和备份结束能够给出相应的提示信息

3)备份后的文件要求以备份时间为文件名,并打包成.tar.gz的形式,比如:2018-03-12_230201.tar.gz

4)在备份的同时,检查是否有10天前备份的数据库文件,如果有就将其删除

4)在备份的同时,检查是否有10天前备份的数据库文件,如果有就将其删除

$ vim /usr/sbin/mysql_db_backup.sh

#!/bin/bash
echo "=======开始备份======="
echo "=======备份的路径是 $BACKUP/$DATETIME.tar.gz======"
#主机
HOST=localhost
#用户名
DB_USER=root
#密码
DB_PWD=root
#备份数据库名
DATABASE=shellDB
#创建备份的路径
#如果备份的路径文件夹存在,就使用,否则创建
[ ! -d "$BACKUP/$DATETIME" ] && mkdir -p "$BACKUP/$DATETIME"
#执行mysql的备份数据库的指令 执行完前面通过管道压缩
mysqldump -u${DB_USER} -p${DB_PWD} --host=$HOST $DATABASE | gzip > $BACKUP/$DATETIME/$DATETIME.sql.gz
#打包备份文件
cd $BACKUP
tar -zcvf $DATETIME.tar.gz $DATETIME
#删除临时目录
rm -rf $BACKUP/$DATETIME
#删除10天前的备份文件
find $BACKUP -mtime +10 -name "*.tar.gz" -exec rm -rf {} \;
echo "======备份文件成功======"
在crontab中配置
$ crontab -e
10 2 * * * /usr/sbin/mysql_db_backup.sh

第十六篇 PYTHON定制篇 开发平台Ubuntu

16.1 Ubuntu的介绍

Ubuntu(友帮拓、优般图、乌班图)是一个以桌面应用为主的开源GNU/Linux操作系统,Ubuntu是基于GNU/Linux,支持x86、amd64(即x64)和ppc架构,由全球化的专业开发团队(CanonicalLtd)打造的。

专业的Python开发者一般会选择Ubuntu这款Linux系统作为生产平台。

温馨提示:

Ubuntu和Centos都是基于GNU/Linux内核的,因此基本使用和Centos是几乎一样的,它们的各种指令可以通用,在学习和使用Ubuntu的过程中,会发现各种操作指令在前面学习CentOS都使用过。只是界面和预安装的软件有所差别。

Ubuntu下载地址:http://cn.ubuntu.com/download/

16.2 Ubuntu的安装

安装的步骤

之后进入图形安装系统界面,按照指示安装即可,之后等待,安装完毕后安装Parallels tools工具

查看python环境

注:中国化的ubuntu系统----------优麒麟

16.3 Ubuntu的roo用户

介绍

安装ubuntu成功后,都是普通用户权限,并没有最高root权限,如果需要使用root权限的时候,通常都会在命令前面加上sudo。有的时候感觉很麻烦。

我们一般使用su命令来直接切换到root用户的,但是如果没有给root设置初始密码,就会抛出su:Authenticationfailure这样的问题。所以,我们只要给root用户设置一个初始密码就好了。

给root用户设置密码并使用

1)输入sudo passwd命令,输入一般用户密码并设定root用户密码

2)设定root密码成功后,输入su命令,并输入刚才设定的root密码,就可以切换成root了。提示符$代表一般用户,提示符#代表root用户

3)输入exit命令,退出root并返回一般用户

4)以后就可以使用root用户了

16.4 Ubuntu下开发Python

说明

安装好Ubuntu后,默认就已经安装好Python的开发环境[Python2.7和Python3.5]

在Ubuntu下开发一个Python程序

1)vim hello.py[编写hello.py]
注:如果Ubuntu没有vim我们可以根据提示信息安装一个vim(sudo apt install vim)
编写内容:print("hello,world!")
2)python3 hello.py[运行hello.py]
输出结果:hello,world!

第十七篇 PYTHON定制篇 APT软件管理和远程登陆

17.1 apt介绍

apt是AdvancedPackagingTool的简称,是一款安装包管理工具。在Ubuntu下,我们可以使用apt命令可用于软件包的安装、删除、清理等,类似于Windows中的软件管理工具。

17.2 Ubuntu软件操作的相关命令

sudo apt-get update 更新源
sudo apt-get install package 安装包
sudo apt-get remove package 删除包
sudo apt-cache search package 搜索软件包
sudo apt-cache show package 获取包额相关信息,如说明、大小、版本等
sudo apt-get install package --reinsall 重新安装包
sudo apt-get -f insall 修复安装
sudo apt-get remove package --purge 删除包,包括配置文件等
sudo apt-get build-dep package 安装相关的编译环境
sudo apt-get upgrade 更新已安装的包
sudo apt-get dist-upgrade 升级系统
sudo apt-cache depends package 了解使用该包依赖哪些包
sudo apt-cache rdepends package 查看该包被哪些包依赖
sudo apt-get source package 下载该包的源代码

17.3 更新Ubuntu软件下载地址

寻找国内镜像源

https://mirrors.tuna.tsinghua.edu.cn/

所谓的镜像源:可以理解为提供下载软件的地方,比如Android手机上可以下载软件的安卓市场;iOS手机上可以下载软件的AppStore

备份Ubuntu默认的源地址

sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup

更新源服务器列表

su root
echo '' > sources.list #将sources.list清空
vim sources.list # 编辑清华镜像到此文件
exit
exit
sudo apt-get update # 更新ubuntu的软件列表

17.4 Ubuntu软件安装,卸载的最佳实践

案例说明:使用apt完成安装和卸载vim软件,并查询vim软件的信息

sudo apt-get remove vim
sudo apt install vim
sudo apt-cache show vim

17.5 使用ssh远程登录Ubuntu

ssh介绍

SSH为SecureShell的缩写,由IETF的网络工作小组(NetworkWorkingGroup)所制定;SSH为建立在应用层和传输层基础上的安全协议。

SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。常用于远程登录,以及用户之间进行资料拷贝。几乎所有UNIX平台—包括HP-UX、Linux、AIX、Solaris、DigitalUNIX、Irix,以及其他平台,都可运行SSH。

使用SSH服务,需要安装相应的服务器和客户端。客户端和服务器的关系:如果A机器想被B机器远程控制,那么,A机器需要安装SSH服务器,B机器需要安装SSH客户端。

和CentOS不一样,Ubuntu默认没有安装SSHD服务,因此,我们不能进行远程登录。

17.6 使用ssh远程登录Ubuntu

安装SSH和启用

sudo apt-get install openssh-server

执行上面指令后,在当前这台Linux上就安装了SSH服务端和客户端。

service sshd restart

执行上面的指令,就启动了sshd服务。会监听端口22

远程登陆Ubuntu即可

使用ssh访问,如访问出现错误。可查看是否有该文件~/.ssh/known_ssh尝试删除该文件解决。

使用exit或logout登出。

03_Linux定制篇的更多相关文章

  1. [置顶] 【原创分享】嵌入式linux应用之内核移植定制篇-前篇(linux-3.8.12 mini2440)--20130824

    移植的话其实很早就做过了,不过那时用的友善定制的老版本2.6.32 驱动什么的全部弄好了,仅仅用默认配置而已.基本不用改动什么,很简单. 内核更新其实非常的快,今天我就用个3.8.12来移植. 当然, ...

  2. Windows 7 封装与定制不完全教程

    Windows 7 封装与定制不完全教程 从定制Win7母盘到封装详细教程 手把手教你定制WIN7小母盘 Windows 7 封装与定制不完全教程 [教程] Windows 7 封装与定制不完全教程( ...

  3. 01_Linux基础篇

    学于黑马.传智播客.尚硅谷 感谢 黑马官网 传智播客官网 尚硅谷官网 微信搜索"艺术行者",关注并回复关键词"linux"获取视频和教程资料! b站在线视频 第 ...

  4. TGL站长关于常见问题的回复

    问题地址: http://www.thegrouplet.com/thread-112923-1-1.html 问题: 网站配有太多的模板是否影响网站加载速度 月光答复: wp不需要删除其他的模板,不 ...

  5. 尚硅谷韩顺平Linux教程学习笔记

    目录 尚硅谷韩顺平Linux教程学习笔记 写在前面 虚拟机 Linux目录结构 远程登录Linux系统 vi和vim编辑器 关机.重启和用户登录注销 用户管理 实用指令 组管理和权限管理 定时任务调度 ...

  6. 浏览器上写代码,4核8G微软服务器免费用,Codespaces真香

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 一图胜千言 先上图,下面是欣宸在自己的iPad Pro ...

  7. Windows 7 封装篇(一)【母盘定制】[手动制作]定制合适的系统母盘

    Windows 7 封装篇(一)[母盘定制][手动制作]定制合适的系统母盘 http://www.win10u.com/article/html/10.html Windows 7 封装篇(一)[母盘 ...

  8. 定制Eclipse IDE之杂症篇

    上文回顾:定制Eclipse IDE之插件篇(二) 该篇将讲述在开发Eclipse 插件过程发生的疑难杂症.不谈功能,只说病症. 前言.拿哪个Eclipse作为定制的基础? 我建议是你用哪个Eclip ...

  9. 定制Eclipse IDE之插件篇(二)

    上文回顾:定制Eclipse IDE之插件篇(一) 延续上一篇的插件篇,这一篇将会讲到一个最关键的插件aptana. 一.aptana插件 官方的解释我就不说了,从下面图可以看到插件提供了什么功能,列 ...

随机推荐

  1. Linux服务搭之 - 消息队列(RabbitMQ)

    本章主要目的是为了后续spring-cloud-bus做准备,讲述在Linux Centos7操作系统中搭建 RabbitMQ… - 什么是RabbitMQ RabbitMQ 是一个使用 Erlang ...

  2. MySQL授权--WITH GRANT OPTION

    今天在学习MySQL的时候,看到一句描述 WITH GRANT OPTION should be left out if the user need not be able to grant othe ...

  3. .netcore开发环境和服务器注意事项

    对于开发环境,如果你需要使用.netcore命令的话,你需要安装SDK:如果你还需要运行.netcore的网站的话,你必须还要安装它的[runtime]和[hosting server]: 对于服务器 ...

  4. 神秘的角落之张东升做了Java老师,悲剧就这样开始了

    故事背景   主人公张东升是某大学某软件学院的一名Java老师,他平时给学生讲课风格古怪呆板,加上他普通话不标准,一口家乡话,每次给学生讲课都分两种情况: 第一种情况:手持课本,把本节要讲的内容按书本 ...

  5. OldTrafford after 102 days

    THE RED GO MARCHING ON   One Team One Love Through the highs and the lows   One hundred and two long ...

  6. 「疫期集训day7」周期

    我们成功入侵了圣康坦,屋子里到处都是面包,食物,水...现在我们的目标就在眼前----亚眠------鲁道登夫攻势中损失惨重的德国精英兵 今天考试考出了历史最低,原因在于T1签到题挂了,ull真的毒瘤 ...

  7. zsh切换bash提示chsh: no changes made问题

    前提纪要:1.我们都知道mac有默认bash工具,在下载zsh后,把一切都配置好后,输入切换命令:chsh - s /bin/zsh ,总是提示 chsh: no changes made错误.那我我 ...

  8. Spring Boot读取配置文件的几种方式

    Spring Boot获取文件总的来说有三种方式,分别是@Value注解,@ConfigurationProperties注解和Environment接口.这三种注解可以配合着@PropertySou ...

  9. 微信小程序中的深拷贝与浅拷贝问题

    最近在弄小程序项目的时候遇到了一个json对象复制的问题,也就是俗称的深拷贝与浅拷贝了. 一般用变量直接接收就是浅拷贝,那么如何理解浅拷贝与深拷贝的意义呢? 浅拷贝:只是将对象地址的复制,并没有开辟新 ...

  10. 数据可视化之DAX篇(二十六)Power BI度量值:滚动聚合

    https://zhuanlan.zhihu.com/p/85996745 上一篇文讲了累计聚合,这篇文章继续讲一下滚动聚合,比如常用的MAT计算,Moving Annual Total,滚动年度总计 ...