Shadow

Linux下CentOS模拟多台主机

扶醉桌前 提交于 2020-05-06 14:53:57
1.拷贝主机 进入CentOS安装目录,将CentOS拷贝一份以作为第二台主机,CentOS10为原先安装的主机,CentOS20为拷贝的第二台主机。 ​ 2.修改CentOS20主机配置 1.使用Xshell等连接工具连接CentOS20,由于CentOS20是从CentOS10拷贝过来的,连接信息和CentOS10一样,但需先断开CentOS10,否则会因为端口占用而连接失败。 2.修改CentOS20的配置文件,修改其端口以来区分CentOS10,修改IPADDR属性 vi /etc/sysconfig/network-scripts/ifcfg-ens33 IPADDR=192.168.2.20 3.修改主机名,修改HOSTNAME属性 vi /etc/sysconfig/network HOSTNAME=server20 4.配置主机ip和主机名的映射关系 vi /etc/hosts 192.168.2.10 server10 192.168.2.20 server20 5.测试 来源: oschina 链接: https://my.oschina.net/staybug/blog/4268207

Nginx实现负载均衡

回眸只為那壹抹淺笑 提交于 2020-05-06 14:32:37
1.为什么要进行负载均衡 随着互联网的发展,公司的业务流量越来越大,业务逻辑也越来越复杂,单台服务器的性能遇到了瓶颈。于是可以使用多台服务器来处理相同的业务,但是多个相同的来自客户端的请求具体交给哪台服务器进行处理呢,于是负载均衡技术就应运而生了。 ​ 2.Nginx负载均衡配置 1.修改nginx配置文件,添加如下内容 upstream tomcatservers { #weight:权重,默认为1,数值越大负载的权重就越大 server 192.168.2.10:8070 weight=1; server 192.168.2.10:8080 weight=1; server 192.168.2.10:8090 weight=1; } server{ listen 80; #访问的域名 server_name d.com; location / { #请求转发tomcatservers定义的服务器列表 proxy_pass http://tomcatservers; index index.html index.htm; } } 2.一台虚拟机下创建3个tomcat实例以来模拟三个服务器,三台tomcat服务器的端口分别为8070、8080、8090 。客户端访问的域名为:d.com ,此步骤的详细配置可参考我之前的文章 Nginx实现反向代理 。 3.测试

Android | 带你零代码实现安卓扫码功能

守給你的承諾、 提交于 2020-05-06 11:01:53
小序   这是一篇纯新手教学,本人之前没有任何安卓开发经验(尴尬),本文也不涉及任何代码就可以使用一个扫码demo,华为scankit真是新手的福音…… 背景介绍   最近被导师要求做一个购物收费的app,毕设好难呀~ 网上找了半天全是zxing,但是扫码效果真是有点小垃圾,无奈只能继续寻寻觅觅……突然发现网上有篇讲集成hms的文章,稍微借鉴了一下。由于在下是安卓小白,全篇没有一点代码,只是搬运一下华为网站的codelab,抱着忐忑的心情,竟然可以一键运行…… 前期准备   开发工具用的是android studio   用过android studio的人直接忽略,没用过的可以参考: https://developer.android.com/studio 相关的安装流程可以参考: https://www.cnblogs.com/xiadewang/p/7820377.html。   zxing和华为扫码服务对比   回到我们的主题上—扫码,我在选择扫码库的时候,首先接触到的是google的开源库ZXing,也上手进行了实操,可以说集成过程还是蛮简单的,但是针对我本身的业务场景和需求,识别率上还是不够达标,自动对焦能力也不具备,不能够达到即开即用的要求,所以我就继续进行了调研,就了解到了华为的一个扫码服务,按照网站上的一些指引,20分钟就搞出来一个小demo,然后就真香

算法竞赛专题解析(8):搜索进阶(3)--广搜进阶

只愿长相守 提交于 2020-05-06 01:23:25
本系列是这本算法教材的扩展资料:《算法竞赛入门到进阶》( 京东 当当 ) 清华大学出版社 PDF下载地址: https://github.com/luoyongjun999/code 其中的“补充资料” 如有建议,请联系:(1)QQ 群,567554289;(2)作者QQ,15512356 [toc]   《算法竞赛入门到进阶》的第4章“搜索技术”,讲解了递归、BFS、DFS的原理,以及双向广搜、A*算法、剪枝、迭代加深搜索、IDA*的经典例题,适合入门搜索算法。   本文分几篇专题介绍搜索扩展内容、讲解更多习题,便于读者深入掌握搜索技术。   第1篇:搜索基础。   第2篇:剪枝。   第3篇:广搜进阶。   第4篇:迭代加深、A*、IDA*。   本文是第3篇。   本篇深入地讲解了双向广搜、BFS+优先队列、BFS+双端队列的算法思想和应用,帮助读者对BFS的理解更上一层楼。 <font size=4>1 双向广搜</font> <font size=3>1.1 双向广搜的原理和复杂度分析</font>   双向广搜的应用场合:有确定的起点和终点,并且能把从起点到终点的单个搜索,变换为分别从起点出发和从终点出发的“相遇”问题,可以用双向广搜。   从起点s(正向搜索)和终点t(逆向搜索)同时开始搜索,当两个搜索产生相同的一个子状态v时就结束。得到的s-v-t是一条最佳路径

Nginx实现虚拟主机

心已入冬 提交于 2020-05-05 19:51:02
前言 Nginx的安装可参考https://my.oschina.net/staybug/blog/4254456 Nginx实现虚拟主机主要有两种方式,基于域名的虚拟主机和基于端口的虚拟主机。 1.基于域名的虚拟主机配置 两个域名指向同一台Nginx服务器,用户访问不同的域名显示不同的网页类容。我设置的两个域名是 a.com 和 b.com ,Nginx使用的虚拟机是 192.168.2.10 。 1.1修改hosts文件 配置a.com、b.com和虚拟机192.168.2.10的映射关系,修改Windows下的hosts配置文件(文件位置: C:\Windows\System32\drivers\etc )。 ​ 1.2创建访问成功页面 在Linux中Nginx安装目录下创建两个欢迎页面,首先创建两个目录。 mkdir -p /usr/local/nginx/a_html mkdir -p /usr/local/nginx/b_html /usr/local/nginx/a_html 为 a.com 域名访问的目录; /usr/local/nginx/b_html 为 b.com 访问的目录。目录中的内容使用Nginx自带的html文件,将/usr/local/nginx/html中的类容分别拷贝到上面两个目录中,并将a_html中index.html的<h1

JS核心理论之《React Native原理浅析》

我的梦境 提交于 2020-05-05 15:32:35
React Native是一个优秀的跨平台移动应用解决方案,可以让你轻松地使用React(和JavaScript)来创建native移动应用程序。 React Native 需要使用 JavaScript 引擎执行 JavaScript 代码,包括 JavaScriptCore、Hermes、V8。 随着Flutter等新框架的崛起,React Native正经受着越来越大的挑战,RN性能上的瓶颈愈发明显。为了在与Flutter等框架的对抗中保持竞争力, RN在架构上也进行了一次非常大的升级。 原有架构及问题 一共分四个部分: 用户编写的React代码 React代码转换之后的js The Bridge Native side 原有架构最大的问题 : 组件和 API 太过依赖 JSBridge 的初始化 ,而且通讯能力也局限于这一条通道。 JS和Native之间并不真正直接通信,它们的通信依赖于 跨Bridge传输的异步JSON消息 。 它们之间传递的信息,都要序列化为JSON之后进行异步传输。这样就造成一个比较常见的性能问题,比如快速滑动ListView的时候会白屏。 因为 JSBridge 的异步关系导致了 shadow 层最终呈现到原生的 UI 是异步的,而且滑动太快后会有大量的 UI 事件会阻塞在 JSBridge。 UI 的渲染过程分为三层: JS 业务层、shadow

React Navigation5.0系列三:Drawer navigation的使用

↘锁芯ラ 提交于 2020-05-04 20:19:40
首先祝大家五四青年节及五一假期快乐。 在前面系列文章中我们了解5.0最新版本堆栈导航和选项卡导航的用法,今天我们来看看抽屉导航的使用方法。 React Navigation5.0系列一:StackNavigator的使用 React Navigation5.0系列二:TabNavigation的使用 @[toc] 安装 yarn add @react-navigation/drawer 使用 1.导入对应的组件 import { createDrawerNavigator } from '@react-navigation/drawer' 2.创建两个页面 const SettingsScreen = ({ navigation }) => { return ( <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}> <Text>SettingScreen</Text> <Button title="Go to Details" onPress={() => navigation.navigate('Home')} /> </View> ) } const HomeScreen = ({ navigation }) => { return ( <View style={{ flex: 1,

基于JDK命令行工具的监控

风格不统一 提交于 2020-05-04 18:06:56
JVM的参数类型 JVM参数类型大体分为三种: 标准参数,基本每个版本的JVM都有的参数,比较稳定不变 X参数,非标准化的参数,每个JVM版本的都有些不一样,但是变化较小 XX参数,非标准化的参数,相对不稳定,每个JVM版本的变化都比较大,主要用于JVM调优和Debug 常见的标准参数: -help -server -client -version -showversion -cp -classpath 常见的X参数: -Xint : 解释执行 -Xcomp : 第一次使用就编译成本地代码 -Xmixed : 混合模式,JVM自己来决定是否编译成本地代码,这是默认的模式 XX参数又分为两大类,一种是Boolean类型,如下: 格式 :-XX : [ + - ] < name > 表示启用或禁用name属性 比如: -XX:+UseConcMarkSweepGC 表示启用UseConcMarkSweepGC -XX:+UseG1GC 表示启用UseG1GC 另一种则是key/value类型的,如下: 格式:-XX : < name > = < value > 表示name属性的值是value 比如: -XX:MaxGCPauseMillis=500 表示MaxGCPauseMillis属性的值是500 -XX:GCTimeRatio=19 表示GCTimeRatio属性的值是19

前端Chrome调试技巧汇总

痴心易碎 提交于 2020-05-04 14:30:09
保持鼠标放上去的效果 Ctrl+F 搜文字定位dom节点 复制日志对象 先右键保存全局对象 console输入 copy(temp1) 不同网速测试 定位,通过键盘上下可以修改大小 按住Ctrl,可以10为单位修改大小 样式级别(由上到下) 样式最终计算值 来源: oschina 链接: https://my.oschina.net/jeecg/blog/4264290

教你如何手动新建Linux用户

霸气de小男生 提交于 2020-05-04 09:29:27
环境: CentOS 8 需求:手动新建一个用户,用户名为zhangsan,uid设置为1024(前提是这个uid没有被占用),gid也设置为1024,组名与用户名同名,家目录在/home/zhangsan、默认 shell 为/bin/bash 注意:以下步骤都是使用root用户进行,部分 命令 和操作只有root用户才有权限。 第一步:修改 /etc/passwd 文件 vim 打开 /etc/passwd 文件追加一行信息 /etc/passwd文件的每一行代表一个用户的信息,用冒号分隔的每一个字段分别代表不同的含义。 第一个字段:用户名 第二个字段:密码,这里的 x 仅仅是一个标识,真正的密码加密保存在 /etc/shadow 中 第三个字段:UID 第四个字段:GID 第五个字段:用户描述信息,可不填 第六个字段:用户家目录位置 第七个字段:默认shell 修改完成,保存退出。 第二步:修改 /etc/shadow 文件 用 vim 打开 /etc/shadow 文件,进入输入模式,系统给出警告。它告诉你,你正在打算修改一个只读文件(其实读权限也没有)。 可以看一下,shadow 文件啥权限也没有 不过没关系,咱用的root用户,想干啥就干啥。按下 Enter 键继续。 在 shadow 文件的最后追加一行信息。 shadow文件同样是一行一个用户的信息