next

nginx的6种负载均衡策略

Deadly 提交于 2020-12-17 15:56:23
在服务器集群中,Nginx起到一个反向代理服务器的作用。为了避免单独一个服务器压力过大导致服务器奔溃,就需要将不同用户的请求转发给不同给不同的服务器,保证集群中的每一台服务器都能正常运作,这种机制就叫做负载均衡。 下面说一下Nginx支持的6种负载均衡策略。 轮询(默认) 轮询是Nginx支持的默认负载均衡策略,轮询策略就是指每个请求会按时间顺序逐一分配到不同的后台服务器上。比如说一个集群中只有服务器A和服务器B,第一次访问是服务器A,第二次访问就是服务器B,第三次访问就是服务器A...以此类推。 upstream balanceServer { server localhost: 8081 ; server localhost: 8082 ; server localhost: 8083 ; server localhost: 8084 ; } 轮询策略提供如下参数: fail_timeout 与max_fails结合使用,表示max_fails次失败后服务器暂停的时间。 max_fails 设置在fail_timeout参数设置的时间内最大失败次数,默认是1,如果在这个时间内,所有针对该服务器的请求都失败了,那么认为该服务器会被认为是停机了,返回proxy_next_upstream模块定义的错误。 fail_time 服务器会被认为停机的时间长度,默认为10s。 backup

Handler系列源码解析

时光总嘲笑我的痴心妄想 提交于 2020-12-17 15:52:04
前言 老是看大佬们分析这个东西,也看了一些文章,总感觉云里雾里,决定自己来对着源码理一理,能力有限,先写下自己所理解的,后期再加上来。 在我努力认真(边玩边睡)的阅读下,终于,瞧出了一丝门道,下面就给大家分析分析。 浅谈理解 多线程 谈这个之前,我觉得首先需要聊聊多线程这个东西(毕竟Handler很多时候是跨线程通信的),那么,什么是多线程呢?比如,我们去银行办理业务,由于是淡季,我们发现办理窗口只开了一个,大家都得排着队一个一个来(这就是单线程),那么,开了两个甚至多个窗口同时处理银行的事务,那么这样子就等于开了多个线程(这就是多线程)。 了解了多线程,我们就开始转移到我们的主要战地(Handler)上面,我们使用Handler的时候,很多的时候都是在子线程中做完操作后需要UI线程(主线程)中更新界面,一般的做法就是 使用 Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { /** * 根据参数做一些操作 */ } }; ​ handler.sendEmptyMessageDelayed(1,2000); Handler是Android线程间通讯的一种方式,它常被我们用来更新UI,是的,我是这么用,还有延时,只有拿出来总结的时候,才会发现有时候使用的时候是有缺漏的

ArrayList 集合的几种遍历的方法

心已入冬 提交于 2020-12-17 15:39:11
ArrayList 集合 也可称作动态数组(长度可变),在新建的时候是 没有默认长度 的,在新增数据长度小于10的时候,ArrayList 的长度会自动设置为10 //了解更多可以 按住Ctrl 再点击你需要查看的方法或者类名 , 查看List 源代码 ,ArrayList 源代码 public static void main (String[] args) throws Exception { Arraylist 新增数据时长度是10 当长度为10的时候 增长是如何增长的? 增长因子数位0.5倍,向下取整数。 ArrayList arr= new ArrayList(); arr.add("a");//给集合赋值 arr.add("b"); arr.add("c"); arr.add("d"); arr.add("e"); System.out.println(arr.size()); //ArrayList 集合可以有重复对象 System.out.println("-------下标输出方式"); //下标输出方式 for(int i=0;i<arr.size();i++) { System.out.println(arr.get(i)); } System.out.println("-------foreach输出(jdk>1.5)"); //foreach输出(jdk>

Unity/Unity3D软件下载、安装及激活教程

做~自己de王妃 提交于 2020-12-17 15:26:12
Unity/Unity3D软件 是一套完整的计算机游戏设计和开发、具有强大的游戏引擎以及高级编程的集成开发环境。 Unity的简单用户界面可以让许多公司和用户使用更少的编码、解码器做更多的事情来创建图形游戏。Unity Pro软件支持流行的编程语言,使用3D软件输出和智能物理引擎的存在。 VR/AR游戏开发引擎Unity Pro 2018.2.6f1的安装与注册激活步骤 下载Unity Pro 2018.2.6f1+注册文件 压缩包 ,解压缩后找到UnitySetup64-2018.2.6f1.exe双击开始安装, 点击“Next”, 勾选“I ac ce pt...”,然后点击“Next”, 继续点击“Next”, 接着点击“Next”, 安装完成,点击“Finish”。 接下来我们注册激活Unity Pro 2018.2.6f1,打开压缩包里的Crack文件夹,将Unity.exe复制到C:Program FilesUnityEditor,然后在C:ProgramData文件夹下创建一个Unity文件夹,接下来将Crack文件夹内的Unity_lic.ulf文件复制进去即可。 完成以上步骤后,就可以打开Unity Pro 2018.2.6f1了, OK,到此,VR/AR游戏开发引擎Unity Pro 2018.2.6f1的下载、安装与注册激活教程介绍完毕。 来源:

死锁及常见死锁模型

别等时光非礼了梦想. 提交于 2020-12-17 08:27:21
Ⅰ、死锁的概念 两个或两个以上的事务在执行过程中,因争夺资源而造成的一种互相等待的现象 最常见:AB-BA 稍微复杂:A-B B-C C-A形成如下图的循环 tips: lock wait time out 和 dead lock不是一回事 1.1 死锁的处理机制 锁超时 --innodb_lock_wait_timeout 让一个超时另一个执行,但这个机制在数据库中是不用的 自动死锁检测 通过锁的信息链表和事务等待链表构造出一个等待图(wait-for graph),如下: t1 t2 t3 t4 是事务列表,四个事务之间的边表示等待关系——edge,每个节点(事务)和每个edge加进去的时候会判断下有没有回路,如果有,就那啥,懂的吧? 检测到了后会很聪明地选择其中一个事务回滚,那选择哪个呢? 根据undo的量判断,回滚量少的,不记得是5.5还是5.6开始才有这个机制,之前的数据库版本是直接回滚后面一个事务,比较挫 5.6版本对图的死锁检测部分的内核算法进行了优化,原来是递归的方式做的,现在通过重写,非递归,提升了性能,所以大并发时5.6性能比5.5好很多,这块也有功劳 Ⅱ、死锁演示 2.1 先模拟下场景 begin: session1: select a for update; session2: begin: select b for update; select a for

【教程向】——基于hexo+github搭建私人博客

百般思念 提交于 2020-12-17 08:16:22
前言 1.github pages服务生成的全是静态文件,访问速度快; 2.免费方便,不用花一分钱就可以搭建一个自由的个人博客,不需要服务器不需要后台; 3.可以随意绑定自己的域名,不仔细看的话根本看不出来你的网站是基于github的; 4.数据绝对安全,基于github的版本管理,想恢复到哪个历史版本都行; 5.博客内容可以轻松打包、转移、发布到其它平台; <!--more--> hexo、git配置和安装 什么是hexo? Hexo 是一个快速、简洁且高效的博客框架。Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页。 安装 安装hexo只需要几分钟,但前提是你的确保你的电脑中已经安装了下列应用程序: 下载必须程序 node.js Node.js是一个Javascript运行环境(runtime) Git Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。 从上面链接下载git for windows最好挂一个代理,否则下载速度会十分缓慢,你可以参考** 这个页面 **,其中收录了存储于百度云的下载地址。 下载之后你可以在你想要创建博客的位置新建一个文件夹,进行node.js和git的安装,打开安装包,按顺序安装即可。 安装完成后可以打开cmd命令行检查是否安装完成: hexo安装

CodeForce-955C

本秂侑毒 提交于 2020-12-17 07:57:49
C. Sad powers time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output You're given Q queries of the form (L, R). For each query you have to find the number of such x that L ≤ x ≤ R and there exist integer numbers a > 0, p > 1 such that x = ap. Input The first line contains the number of queries Q (1 ≤ Q ≤ 105). The next Q lines contains two integers L, R each (1 ≤ L ≤ R ≤ 1018). Output Output Q lines — the answers to the queries. Example input Copy 6 1 4 9 9 5 7 12 29 137 591 1 1000000 output 2 1 0 3 17 1111 Note In query one the suitable

Jquery 筛选选择器

半世苍凉 提交于 2020-12-17 07:28:31
  筛选选择器(方法)     既然是方法 那就应该对象调用 obj.metch();     $(“.dd”).children("ul"),show(); //找到.dd下的带Ul的所有子元素 显示         .eq(index)    //匹配index下标的元素         .first()      //获取第一元素         .last()      //获取最后一个元素         .find()      //后代查找         .parent()    //查找父标签         .siblings()    //兄弟元素         .next()    //下一个兄弟元素         .prev()    //前一个兄弟元素         . <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <script src="jquery1.12/jquery-1.12.4.js"></script>

java流程控制

天涯浪子 提交于 2020-12-17 06:09:10
java流程控制 用户交互Scanner Java提供了这样一个工具类,我们可以获取用户的输入。java.util.Scanner 是Java5的新特征,我们可以 通过Scanner类来获取用户的输入。 基本语法: Scanner S = new Scanner(System. in); 通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前我们一般需要使用hasNext()与hasNextLine()判断是否还有输入的数据。 next(): 1、一定要读取到有效字符后才可以结束输入。 2、对输入有效字符之前遇到的空白值(空格),next() 方法会自动将其去掉。 3、只有输入有效字符后才将其后面输入的空白值(空格)作为分隔符或者结束符。 4、 next() 不能得到带有空格的字符串。 public class Test { public static void main(String[] args) { //创建一个扫描器对象,用于接收键盘数据 Scanner s = new Scanner(System.in); System.out.println("使用next方式接收-请输入: "); if (s.hasNext()) { //判断用户有没有输入数据 //使用next方式接收 String str = s.next();/

Java-JUC(六):创建线程的4种方式

故事扮演 提交于 2020-12-17 01:54:17
Java创建线程的4种方式: Java使用Thread类代表线程,所有线程对象都必须是Thread类或者其子类的实例。Java可以用以下4种方式来创建线程: 1)继承Thread类创建线程; 2)实现Runnable接口创建线程; 3)实现Callable接口,通过FutureTask包装器来创建Thread线程; 4)使用ExecutorService、Callable(或者Runnable)、Future实现由返回结果的线程。 接下来,针对这四种方式详细介绍及其用法: 1)继承Thread类创建线程 Thread类本质上是实现了Runnable接口的一个实例,代表一个线程的实例。启动线程的唯一方法就是通过Thread类的start()实例方法。start()方法是一个native方法,它将启动一个新线程,并执行run()方法。这种方式实现多线程很简单,通过自己的类直接extends Thread,并复写run()方法,就可以启动新线程并执行自己定义的run()方法。 例如: /** * 无返回值的 */ class MyThread extends Thread { CountDownLatch countDownLatch; public MyThread(CountDownLatch countDownLatch) { this .countDownLatch =