安装JDK
可以上Oracle官网下载Linux版的jdk安装包,jdk-8u60-linux-x64.tar.gz
上传jdk包到/usr/local目录下并解压配置环境变量
cd /usr/local/
tar zxvf jdk-8u60-linux-x64.tar.gz
ln -s /usr/local/jdk1.8.0_60 /usr/local/jdk
sed -i.ori '$a export JAVA_HOME=/usr/local/jdk\nexport PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH\nexport CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar' /etc/profile
tail -3 /etc/profile
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATHexport CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
source /etc/profile
验证安装是否成功 java -version
部署weblogic 新建一个用户 weblogic无法在root用户下安装
groupadd weblogic
useradd -g weblogic weblogic
设置密码 passwd weblogic
上传weblogic安装包并在/opt创建weblogic文件夹
mkdir -p /opt/weblogic
设置weblogic文件夹所有者为weblogic chown -R weblogic:weblogic /opt/weblogic
在/opt目录创建下边的文件
$ vi wls.rsp
Linux进程管理 1、进程 进程是执行期的程序,包含可执行代码、打开的文件、挂起的信号、内核内部数据、处理器状态、一个或多个具有内存映射的内存地址空间及一个或多个线程以及存放全局数据的数据段等。
线程是在进程中活动的对象,每个线程拥有一个独立的程序计数器、进程栈和一组进程寄存器。内核的调度对象为线程。在Linux实现中,线程是一种特殊的进程。
进程提供两种虚拟机制:虚拟处理器以及虚拟内存。虚拟处理器让进程觉得自己在独享处理器,而虚拟内存则让进程在分配和管理内存时觉得拥有系统所有的内存资源。线程之间可以共享虚拟内存,但每个都拥有自己的虚拟处理器。
Linux通过slab分配器分配task_struct结构,从而达到对象复用和缓存着色。通过预先分配和重复使用task_struct,可以避免动态分配和释放所带来的资源消耗。
1.1 进程状态如下: 1.2 进程上下文 一般程序在用户空间执行,当一个程序执行了系统调用或者触发了某个异常时,程序陷入内核空间,此时称内核代表进程执行并进入进程上下文。
CPU上下文及上下文切换:CPU 寄存器和程序计数器就是 CPU 上下文,因为它们都是 CPU 在运行任何任务前,必须的依赖环境。
CPU 寄存器是 CPU 内置的容量小、但速度极快的内存。 程序计数器则是用来存储 CPU 正在执行的指令位置、或者即将执行的下一条指令位置。 上下文切换:前一个任务的 CPU 上下文(也就是 CPU 寄存器和程序计数器)保存起来,然后加载新任务的上下文到这些寄存器和程序计数器,最后再跳转到程序计数器所指的新位置,运行新任务。而这些保存下来的上下文,会存储在系统内核中,并在任务重新调度执行时再次加载进来。这样就能保证任务原来的状态不受影响,让任务看起来还是连续运行。
1.3 进程创建 Linux进程创建通过fork()和exec()函数族来进行。首先fork()通过拷贝当前进程创建一个子进程,父子进程的区别仅在于PID、PPID和某些资源和统计量。exec()函数族负责读取可执行文件并将其加载到地址空间开始运行。
1.3.1 写时拷贝 写时拷贝是一种可以推迟甚至免除拷贝数据的技术。内核此时并不复制整个地址空间,而是让父子进程共享同一个拷贝。只有在需要写入的时候,数据才会被复制,从而使各个进程都有自己的拷贝,在此之前,以只读的方式共享。
1.3.2 fork() Linux通过clone()的系统调用实现fork(),通过指定一系列参数标志来指明父子进程需要共享的资源。fork()、vfork()、__clone()库函数都根据各自需要的参数标志去调用clone(),后clone()调用do_fork()。
do_fork()完成了创建中的大部分工作,该函数调用on_process()函数,然后让进程开始运行。如果on_process()函数成功返回,新创建的子进程被唤醒并让其投入运行。
2、线程 2.1 线程的实现 Linux把所有的线程都当作进程来实现,线程仅仅被视为一个与其他进程共享某些资源的进程,每个线程都拥有唯一隶属于自己的task_struct,线程和其他的一些进程共享某些资源,如地址空间。
线程的创建和普通进程的创建类似,只不过在调用clone()的时候需要传递一些参数标志来指明需要共享的资源。
2.2 内核线程 内核在需要执行一些后台操作时,这些任务可以通过内核线程来完成——独立运行在内核空间的标准进程。内核线程和普通线程之间的区别在于没有独立的地址空间,只在内核空间运行。同普通进程一样,可以被调度也可以被抢占。
3、进程终结 当进程终结时,内核对其所占用的资源进行释放并告知父进程。一般来说,进程的析构是自身引起的,发生在进行调用exit()系统调用时,既可能显式调用,也可以隐式地从某个程序的主函数返回。当进程接收到它既不能处理也不能忽略的信号或者异常时,它还可能被动地终结。进程终结的大部分任务通过do_exit()来完成。
调用do_exit()后,线程已经不能运行,但系统依旧保留了它的进程描述符,这么做可以让系统有办法在子进程终结后仍能够获取它的信息。在父进程获取到已终结的子进程的信息后,或者通知内核它并不关注那些信息后,子进程的task_struct才开始释放。
wait()函数族通过调用wait4()来实现。标准动作是挂起调用它的进程,直到其中一个子进程退出,此时函数会返回该子进程的PID。此外,调用该函数时提供的指针会包含子函数退出时的退出代码。
如果父进程在子进程之前退出,系统会给子进程在当前的线程组内找一个线程作为父亲,如果不行,就让init做它们的父进程。在do_exit()中会调用exit_notify(),该函数会调用forget_original_parent(),而后者会调用find_new_reaper()来执行寻父过程。一旦系统为进程成功找到和设置了新的父进程,就不会有驻留僵死进程的风险了。init进程会例行调用wait()来检查其子进程,清除所有与其相关的僵死进程。
mysql和mariadb 关系 自行百度吧 mysql和mariadb 关系 自行百度吧 mysql和mariadb 关系 自行百度吧 Xtrabackup介绍 Xtrabackup是由percona开源的免费数据库热备份软件,它能对InnoDB数据库和XtraDB存储引擎的数据库非阻塞地备份(对于MyISAM的备份同样需要加表锁);mysqldump备份方式是采用的逻辑备份,其最大的缺陷是备份和恢复速度较慢,如果数据库大于50G,mysqldump备份就不太适合。
Xtrabackup优点 1)备份速度快,物理备份可靠
2)备份过程不会打断正在执行的事务(无需锁表)
3)能够基于压缩等功能节约磁盘空间和流量
4)自动备份校验
5)还原速度快
6)可以流传将备份传输到另外一台机器上
7)在不增加服务器负载的情况备份数据
8)物理备份工具,在同级数据量基础上,都要比逻辑备份性能要好的多。几十G到不超过TB级别的条件下。但在同数据量级别,物理备份恢复数据上有一定优势。
安装 下载 wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.9/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.9-1.el7.x86_64.rpm 安装 rpm -ivh percona-xtrabackup-24-2.4.9-1.el7.x86_64.rpm 下载安装的依赖 wget http://mirror.centos.org/centos/7/extras/x86_64/Packages/libev-4.15-7.el7.x86_64.rpm rpm -ivh libev-4.15-7.el7.x86_64.rpm yum install perl-DBI yum -y install perl perl-devel libaio libaio-devel perl-Time-HiRes perl-DBD-MySQL yum -y install perl-Digest-MD5 rpm -ivh percona-xtrabackup-24-2.4.9-1.el7.x86_64.rpm rpm -ql percona-xtrabackup-24 发现 /usr/bin/innobackupex #xtrabackup 的软连接 常用参数 1.
the second day Great oaks from little acorns grow. I bought a book called Vbird's Linux Cuisine<<niaoge de Linux sifangcai>> If you only listen to lectures, you will never learn skills. Because you use Listen and don't do it. you will never know how to write the word experience. Some of the more famous learning websites. http://www.study-area.org http://www.study-area.org/compu/compu.htm http://www.study-area.org/network/network.htm http://linux.vbird.org/linux_basic http://www.tldp.org
数据库的列类型 数值,字符串,时间和日期,null
数值类型
数值类型 描述 长度 tinyint 十分小的数据 1字节 smallint 较小的数据 2字节 mediumint 中等大小的数据 3字节 int 标准的整数 4字节 bigint 较大的数据 8字节 float 浮点数 4字节 double 浮点数(存在精度问题) 8字节 decimal 字符串形式的浮点数(一般用于金融运算) 字符串类型
字符串类型 描述 长度 char 固定大小字符串 0~255 varchar 可变字符串 0~65535 tinytext 微型文本 2 ^ 8 - 1 text 文本串(保存大文本) 2 ^ 16 - 1 时间日期
数据库的字段属性 学前须知:表格的设置在如下位置 字段属性表格展示
字段属性 描述 Unsigned 无符号的整数,该列不能被声明为负数 zerofill 零填充,不足的位数使用0来填充。例如:int(3),5 -->005 autoincrement 自增:自动在上一条记录的基础上+1(默认)通常用于设置唯一的主键 index,必须是整数类型可以自定义设置主键自增的起始值和步长 NULL 和 NOT NULL null:如果不赋值就默认为nullnot null:必须赋值 default(默认) 设置默认的值如果不指定值该列值则填写为默认值 字段属性测试
自增
自行测试,这里不再赘述
主键:一定要非空
非空
空会报错,不再赘述
默认值default:注意要用 '' 包裹,否则会报错
如图,将 sex 默认值设定为男 如下图,表格 sex 栏自动填充为男 0填充
1.top进程的动态列表 2.安装系统监控软件 glances iftop htop https://blog.csdn.net/ba__lu/article/details/80557947 yum install epel* -y yum install python-pip python-devel -y yum install glances -y 3.安装htop软件 https://blog.51cto.com/duanyexuanmu/2404459 步骤一:yum install -y epel-release 步骤二:yum install -y htop 4.Ctrl + C 和 Kill命令:停止进程 5.
窗口版的hello world //HelloMsg.c #include<Windows.h> int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdLine,int iCmdShow) { MessageBox(NULL,TEXT(hello,Windows!),TEXT(HelloMsg),0); return 0; } 分析 头文件 类似命令行的#include<stdio.h>,不过更像C++的#include<iostream>,包含了其他许多的头文件。窗口版也包含了一个头文件,它包含了其他Windows表头文件
其中:
windef.h:基本类型定义 winnt.h:支持Unicode的类型定义(但是我在里面并没有找到) winbase.h:Kernel函数。定义了32位Windows的基本APIs winuser.h:USER接口函数。用户过程声明,常量定义和宏。 wingdi.h : 图形设备接口函数。GDI过程声明,常量定义和宏 程序进入点 正如在C程序中的进入点是函数main一样,Windows程序的进入点是WinMain,总是像这样出现:
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdLine,int iCmdShow) 由操作系统为WinMain传入参数
在winbase.h中WinMain的声明如下:
WinMain ( _In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPSTR lpCmdLine, _In_ int nShowCmd ); _In_表示为输入参数,_In_opt_表示可选输入参数,指示参数可能为NULL,参见批注函数参数和返回值
WinMain的声明与HelloMsg.c中的第三个参数稍有不同,LP前缀表示长指针,是16位Windows下的产物。HelloMsg.c中还改变了两个变量的名称,Windows程序变量名使用【匈牙利表示法】命名变量,i表示整数,sz表示以0结尾的字符串
WINAPI标识符定义在minwindef.h中(书上写定义在windef.h中,时间太长Windows某些东西变了?)语句如下:
#define WINAPI __stdcall __stdcall表示由被调用方清理堆栈,参数从右向左传递。参见参数传递和命名约定
WinMain的第一个参数被称为执行实体句柄,在Windows中句柄指唯一标识某些东西的数字。
在Windows的早期版本中,当同时运行同一程序多次时,您便创建了该程序的「多个执行实体(multiple instances)」。同一应用程序的所有执行实体共享程序和只读的内存(通常是例如菜单和对话框模板的资源)。程序通过检查hPrevInstance参数就能够确定自身的其它执行实体是否正在运行。然后它可以略过一些繁杂的工作并从前面的执行实体将某些数据移到自己的数据区域。在32位Windows版本中,该概念已被抛弃。传给WinMain的第二个参数总是NULL(定义为0)。
WinMain的第三个参数是用于执行程序的命令列。某些Windows应用程序利用它在程序启动时将文件加载内存。
WinMain的第四个参数指出程序最初显示的方式,可以是正常的或者是最大化地充满整个画面,或者是最小化显示在工作列中。
MessageBox函数 MessageBox函数用于显示短信息。虽然,MessageBox显示的小窗口不具有什么功能,实际上它被认为是一个对话框。
一、添加用户
sudo useradd anakin -d /home/anakin -m
cat /etc/passwd | grep anakin
二、设置密码
sudo passwd anakin
三、给用户添加sudo权限
#增加写权限
sudo chmod u+w /etc/sudoers
编辑/etc/sudoers文件
sudo vi /etc/sudoers
恢复原来/etc/sudoers权限
sudo chmod u-w /etc/sudoers
四、解决远程登录问题
sudo vi /etc/passwd
找到新增的用户anakin,添加如下内容
腾讯云和阿里云禁止root用户登录 2、设置root禁止登录,修改ssh配置
vi /etc/ssh/sshd_config
在文件中找到PermitRootLogin yes 把yes修改为no
如:PermitRootLogin no
进行保存退出,重启sshd服务,systemctl restart sshd
3、登录普通用户之后使用 su - 登录root用户即可
https://music.163.com/#/download
这是网易云的官网,右上角有下载Linux的链接
听说会出现无法打开网易云的问题,请参考这篇https://blog.csdn.net/qq_36561697/article/details/86556399。我这里没有出现。
我尝试了1.2.1版本(20190428)后发现,登录信息在重启后失效,也无法下载音乐。
原因是权限不够
依次输入这四条即可
find ~/.config/netease-cloud-music -exec sudo chown $USER:$USER {} + find ~/.config/netease-cloud-music -exec sudo chmod 755 {} + find ~/.cache/netease-cloud-music -exec sudo chown $USER:$USER {} + find ~/.cache/netease-cloud-music -exec sudo chmod 755 {} + 结果新的问题来了:无法下载歌曲?
from https://blog.csdn.net/chauncygu/article/details/109143966
或者 https://www.ubuntukylin.com/ukylin/forum.php?mod=viewthread&tid=188255 的下面有位大佬也说到了两种方法
这里为了保险采用方法二
sudo gedit /usr/share/applications/netease-cloud-music.desktop 找到 exec 那一行
改为
Exec=sh -c unset SESSION_MANAGER && netease-cloud-music %U 尝试之后,发现确实可以下载歌曲;但是双击下载后的歌曲却无法播放,提示“加载失败,网络错误,可以在设置中发送反馈”
打开下载文件夹,发现CloudMusic文件夹被上锁了。
于是猜测是这样的:网易云下载好了歌曲后,需要从缓存迁移到CloudMusic文件夹里面。但是权限不够,写入文件失败。但是以为已经下载成功了。
双击播放已经下载好了的歌曲时,发现CloudMusic下没有对应的文件,遂报错。
既然这个文件夹被锁了,那么换个下载目录不就是了?
在网易云里面设置后,网易云会自动重启并迁移数据。可是它啥傻乎乎的说迁移失败(没有权限访问CloudMusic)……真可怜,自己的孩子都没了,让我想起了祥林嫂
那么只好给这个文件夹权限咯
sudo chmod 777 CloudMusic 至此,重启网易云,发现可以成功使用。