Linux Shell基础篇二 - 变量
Shell变量在Shell中包括有三种变量类型:系统环境变量、自定义变量和特殊符号变量。
系统环境变量系统环境变量是系统提供的共享变量,是linux系统加载Shell的配置文件中定义的变量共享给所有的Shell程序使用。环境变量按照其作用范围不同大致可以分为系统级环境变量和用户级环境变量。
系统级环境变量:Shell环境加载全局配置文件中的变量共享给所有用户所有Shell程序使用,全局共享
用户级环境变量:Shell环境加载个人配置文件中的变量共享给当前用户的Shell程序使用,登录用户使用
Shell的配置文件分类:
全局配置文件
/etc/profile/etc/profile.d/*.sh/etc/bashrc
个人配置文件
当前用户/.bash_profile当前用户/.bashrc
环境变量加载初始化过程:
登录Shell环境:需要用户名\密码登录的Shell环境,配置在:/etc/profile、/当前用户/.bash_profile
非登录Shell环境:不需要用户名,密码进入的Shell环境或执行脚本文件,配置在:/当前用户/.bashrc、/etc/b ...
Linux Shell基础篇一 - 简介
介绍Linux Shell是Linux操作系统提供给用户访问linux内核的“外壳”,也就是说用户通过编写Shell命令发送给linux内核去执行,然后由内核去操作计算机硬件, 所以Shell命令是用户操作计算机硬件的桥梁。
Shell命令类似于windows系统的dos命令,它可算作是一门程序设计语言,里面含有变量、函数、逻辑控制语句等。
当用户下达指令给该操作系统的时候,实际上是把指令告诉shell,经过shell解释处理后让内核做出相应的动作。 系统的回应和输出的信息也由shell处理,然后显示在用户的屏幕上。
Shell解释器查看linux系统centos支持的shell解析器:
1cat /etc/shells
解析器类型:
解析器类型
介绍
/bin/sh
Bourne Shell,是UNIX最初使用的shell;
/bin/bash
Bourne Again Shell它是Bourne Shell的扩展,简称bash,是LinuxOS默认shell,有灵活和强大的编辑接口,同时又很友好的用户界面,交互性很强;
/sbin/nologin
未登 ...
Spring Security实现分布式系统授权
分布式系统认证方案分布式系统随着软件环境和需求的变化 ,软件的架构由单体结构演变为分布式架构,具有分布式架构的系统叫分布式系统,分布式系统的运行通常依赖网络,它将单体结构的系统分为若干服务,服务之间通过网络交互来完成用户的业务处理,当前流行的微服务架构就是分布式系统架构,如下图:
分布式系统具体如下基本特点:
分布性:每个部分都可以独立部署,服务之间交互通过网络进行通信,比如:订单服务、商品服务。
伸缩性:每个部分都可以集群方式部署,并可针对部分结点进行硬件及软件扩容,具有一定的伸缩能力。
共享性:每个部分都可以作为共享资源对外提供服务,多个部分可能有操作共享资源的情况。
开放性:每个部分根据需求都可以对外发布共享资源的访问接口,并可允许第三方系统访问。
分布式认证需求分布式系统的每个服务都会有认证、授权的需求,如果每个服务都实现一套认证授权逻辑会非常冗余,考虑分布式系统共享性的特点,需要由独立的认证服务处理系统认证授权的请求;考虑分布式系统开放性的特点,不仅对系统内部服务提供认证,对第三方系统也要提供认证。分布式认证的需求总结如下:
统一认证授权
提供独立的认证服务,统一处理 ...
Spring Security OAuth2.0实现
前言OAuth(开放授权)是一个开放标准,允许用户授权第三方移动应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方移动应用或分享他们数据的所有内容,OAuth2.0是OAuth协议的延续版本,但不向后兼容OAuth 1.0即完全废止了OAuth1.0。
Spring Security OAuth2.0即利用Spring Security框架对OAuth2标准的一种实现。
OAuth2.0认证流程
引自OAauth2.0协议rfc6749 https://tools.ietf.org/html/rfc6749
OAauth2.0包括以下角色:
客户端:本身不存储资源,需要通过资源拥有者的授权去请求资源服务器的资源,比如:Android客户端、Web客户端(浏览器端)、微信客户端等。
资源拥有者:通常为用户,也可以是应用程序,即该资源的拥有者。
授权服务器(也称认证服务器):用于服务提供商对资源拥有的身份进行认证、对访问资源进行授权,认证成功后会给客户端发放令牌(access_token),作为客户端访问资源服务器的凭据。
资源服务器:存储资源的服 ...
Spring Security的认证和授权
前言Spring Security是为基于Spring的应用程序提供声明式安全保护的安全性框架。Spring Security提供了完整的安全性解决方案,它能够在Web请求级别和方法调用级别处理身份认证和授权。因为基于Spring框架,所以Spring Security充分利用了依赖注入(dependency injection,DI)和面向切面(AOP)的技术。
基本概念认证以手机必装APP微信为例,在初次使用微信前需要注册成为微信用户,然后输入账号和密码即可登录微信,输入账号和密码登录微信的过程就是认证。
系统为什么要认证?
认证是为了保护系统的隐私数据与资源,用户的身份合法方可访问该系统的资源。用户认证就是判断一个用户的身份是否合法的过程,用户去访问系统资源时系统要求验证用户的身份信息,身份合法方可继续访问,不合法则拒绝访问。常见的用户身份认证方式有:用户名密码登录,二维码登录,手机短信登录,指纹认证等方式。
会话用户认证通过后,为了避免用户的每次操作都进行认证可将用户的信息保存在会话中。会话就是系统为了保持当前用户的登录状态所提供的机制,常见的有基于session方式、基于 ...
回溯算法的经典应用 - 排列与组合
定义引用自百度百科:
回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。许多复杂的,规模较大的问题都可以使用回溯法,有“通用解题方法”的美称。
回溯算法实际上是对所有结果的一种暴力枚举方法,以走迷宫为例,它尝试走每条路径,一旦路径不通则退回到最近的分岔点,继续尝试下一条路径,如此反复,直到找到一条正确的路径,或者走完所有路径。对于诸如八皇后、数独这类往往需要枚举所有可能性方案的问题,使用回溯算法再合适不过了。回溯算法采用递归的方式去遍历所有可能结果,时间复杂度高达$ O(n!) $,一般需要伴随“剪枝”操作,以应对庞大的时间复杂度。
假设是走迷宫,这个回溯算法的模板应该是这样:
1234567891011def backtrace(path,depth,length): if depth ...
【转载】如何在CentOS 7服务器之间使用NFS共享目录
NFS 即 (Network File System) 的缩写,最大的功能就是可以通过网络,让不同的机器、不同的操作系统实现共享彼此的文件。
NFS 服务端可以让客户端将网络中的 NFS 服务器共享的目录挂载到本地端的文件系统中,而在本地端的系统中来看,那个远程主机的目录就好像是自己的一个磁盘分区一样,在使用上相当便利。
NFS 一般用来存储共享视频,图片,文件等静态数据。
准备条件
192.168.1.101 ,系统为 CentOS 7,NFS 服务端
192.168.1.102 ,系统为 CentOS 7,NFS 客户端
安装 NFS 服务步骤一、安装 NFS 和 PRC 软件
如果要实现NFS共享目录,首先我们要在一台 CentOS 7 上安装 NFS 服务,安装过程中需要安装两个软件分别是rpcbind和nfs-utils,安装命令如下:
12yum install -y rpc-bind nfs-utils #安装nfs服务yum install -y rpcbind #安装rpc服务
步骤二、启动服务并设置为开机自启动
启动服务的过程需要注意,先启动 RPC 服务,再启 ...
数据结构之AVL平衡二叉树
平衡二叉搜索树是由前苏联的数学家 Adelse-Velskil 和 Landis 在 1962 年最先提出的高度平衡的二叉树,根据科学家的英文名所以也被称为 AVL 树。
小技巧 - 计算下一个周几间隔天数
问题假设一周中的7天分别用0-6表示周日、周一、周二、周三、周四、周五、周六。给定一个当前值n,n的范围属于[0,6],表示当天是周几。给定一个目标值k,k的范围属于[0,6],表示要到达周几,如果当前天超过了k,则k应是下一周的周几。设计一个函数dayInterval,计算从当天到下一个目标天,之间间隔了多少天。
例如:当n=1,k=1,表示从周一到下一个周一经历的天数,函数应该返回7当n=2,k=1,表示从周二到下一个周一经历的天数,函数应该返回6当n=0,k=1,表示从周日到下一个周一经历的天数,函数应该返回1
该函数只可以包含一行代码,即你要用一行纯计算表达式得出结果。
分析假设k=1,表示要达到下一个周一的天数,那么n属于[0,1,2,3,4,5,6]分别对应着结果[1,7,6,5,4,3,2]
假设k=2,表示要达到下一个周二的天数,那么n属于[0,1,2,3,4,5,6]分别对应着结果[2,1,7,6,5,4,3]
通过观察和分析可以知道,从本周的某天到达下个目标天最大时间跨度是7天,最小天数是1天,也就是说答案一定是在[1-7]之间,那么k和这个结果又有什么关系呢 ...
为你的Nginx配置免费SSL证书
一般配置https方法一般当你申请或购买了ssl证书后,都会提供给你cer和key后缀的文件,将文件上传到nginx服务器上,然后修改nginx配置文件,重启nginx即可生效,一个常见的ssl配置如下:
1234567891011121314151617server { listen 443; server_name localhost; ssl on; root html; index index.html index.htm; ssl_certificate cert/证书名称.pem; ssl_certificate_key cert/证书名称.key; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_se ...