自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

giver

欲采蜂蜜,勿蹴蜂巢。

  • 博客(19)
  • 资源 (2)
  • 收藏
  • 关注

原创 Nginx架构赏析

淘宝的某位大佬曾经做过测试,在一台24G内存的机器上,Nginx的最大并发连接数达到了200万。同学们听到这个结论后,是不是被Nginx的超高性能深深折服了,它内部的架构设计究竟是怎么样的呢?这篇文章就带同学们来认识一下Nginx的架构设计吧。本文主要参考了淘宝技术团队写的Nginx文章,将会从以下个方面去进行分享:Nginx进程模型Nginx事件模型Nginx进程模型Nginx默认以多进程的方式启动运行,当然Nginx也是支持多线程的方式的,只是我们主流的方式还是多进程的方式,也是Nginx

2021-01-24 16:53:57 133

原创 ReentrantLock原理分析

ReentrantLock是Java并发包中提供的一个可重入的互斥锁,它拥有与synchronized相同的作用,但却比synchronized有更好的性能,在许多高并发编程中都会用到它。由于大部分同学都只停留在了API调用的层次,对ReentrantLock的原理一知半解,甚至一无所知,因此写下了这篇文章,让同学们真正的把ReentrantLock给拿下!本文将会从以下几个方面去进行分享:使用场景源码实现设计思想使用场景public class ReentrantLockTest {

2021-01-17 10:10:33 256 4

原创 类加载面试题分析

类加载顺序加载 —> 连接(验证,准备,解析) —> 初始化 —> 使用 —> 卸载;原理在准备阶段,所有类变量都会附上初始值(int类型初始值为0,对象类型初始值为null);在初始化阶段,所有类变量,静态代码块会按照源代码出现的先后顺序依次执行赋值操作;可以在类变量定义代码之前,对其进行赋值,但是不能对其进行读取;...

2019-11-27 20:40:50 164

原创 Java类加载时机

Java类加载时机类加载顺序类初始化时机类加载顺序加载 —> 连接(验证,准备,解析) —> 初始化 —> 使用 —> 卸载;加载,验证,准备,初始化,卸载 这五个步骤是确定的,解析阶段则不一定,某些情况下它会在初始化后才开始,主要是为了支持Java的运行时绑定;类初始化时机什么时候进行类加载的第一阶段(加载),JVM规范中并没有强制约束,这点交给具体的JVM实现...

2019-10-30 00:35:51 145

原创 [寻找环链表入口点] 快慢指针数学原理剖析

链表环路检测及环入口定位是一个非常经典的算法问题,它可在死锁检测等实际应用场景发挥重要作用。想必大家都知道这个问题应该使用快慢指针去求解,因为它具有最优的时间复杂度O(n)。但是大家可能对快慢指针的数学原理不是很清楚,为啥它能达到最优。详细读了这篇文章,大家必定豁然开朗,掌握快慢指针背后的数学原理。我们直接来看图。先讲一下链表环路检测的原理,相比环入口定位,原理比较简单。起点设置...

2018-12-02 14:25:25 2810 5

原创 【八皇后问题】善用数学规律提升算法性能

或许很多读者尚未发现,八皇后问题存在一个重要数学规律。如何运用这个规律对算法进行性能优化,使得约束函数的时间复杂度从O(n)降至O(1),相信是每一个算法爱好者所关心的。今天写这篇文章的目的便是带大家一起探究一下,八皇后问题之中到底存在什么样的数学规律,能够摆脱传统的递归解法,使得性能提升一个量级。先放出基本递归解法的代码吧!public int caculate(int[] locat...

2018-11-23 00:34:01 861

原创 动态规划算法之寻找最长回文数串

给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢?输出需要删除的字符个数。本题可转化为动态规划算法求解最长公共子序列问题,然后用总字符串长度减去最长子序列长度,便得出问题的答案。先将给定的初始字符串S1反过来排列,设为S2,求S1和S2的最长公共子序列便可。C++代码如下:#include #include #incl

2017-02-18 16:06:19 1809

原创 动态规划算法之01背包问题

问题描述:给定N中物品和一个背包。物品i的重量是Wi,其价值位Vi ,背包的容量为C。问应该如何选择装入背包的物品,使得转入背包的物品的总价值为最大??在选择物品的时候,对每种物品i只有两种选择,即装入背包或不装入背包。不能讲物品i装入多次,也不能只装入物品的一部分。因此,该问题被称为0-1背包问题。 问题分析:令V(i,j)表示在前i(1(1)          

2017-02-16 15:37:48 255

原创 青蛙过河问题

青蛙过河是一个非常有趣的智力游戏,其大意如下: 一条河之间有若干个石块间隔,有两队青蛙在过河,每队有3 只青蛙,如 图 10-19所示。这些 青蛙只能向前移动,不能向后移动,且一次只能有一只青蛙向前移动。在移动过程中,育蛙可以向 前面的空位中移动,不可一次跳过两个位置,但是可以跳过对方一只青蛙进入前面的一个空位。问 两队青蛙该如何移动才能够用最少的步数分别走向对岸?先来分析一下青蛙过河问题。可

2017-02-08 23:36:17 2213 1

原创 寻找假银币算法

寻找假银币是一个非常有趣的智力题目,寻找假银币的大意如下: 现在有8 枚银币,其中有一枚是假币。但是,从外观和做工上无法分辨哪枚是真币哪枚是假币, 只知道假币的重量要比真币稍轻。要求仅使用一个天平,如何以最少的步骤寻找到假银币。      先来分析一下寻找假银币问题。其实寻找假银币并不难,一种最基本的方法便是给硬币编上序 号 ( 1〜8),然后通过天平进行两两比较,操作步骤如下:

2017-02-08 19:57:30 1547

原创 【回溯法】八皇后问题

八皇后问题是高斯于1850年提出的,这是一个典型的回溯算法的问题。 八皇后问题的大意如下:国际象棋的棋盘有8 行 8 列共64个单元格,在棋盘上摆放八个皇后,使其不能互相攻击,也就 是说任意两个皇后都不能处于同一行、同一列或同一斜线上。问总共有多少种摆放方法,每一种摆 放方式是怎样的。 首先来分析八皇后问题。这个问题的关键是,八个皇后中任意两个皇后都不能处于同一行、同 一列或同一斜线上。...

2017-02-07 21:41:57 445

原创 计算水仙花数

水仙花数是指一个n 位正整数(n>3 ) , 它的每个位上的数字的n 次幂之和等于它本身。水 仙花数也是一种具有奇特性质的数。水仙花数满足如下奇特的现象:153=1^3+5^3+3^3370=3^3+7^3+0^3371=3^3+7^3+1^3407=4^3+0^3+7^3简单地说,这些三位正整数在数值上等于其各位数字的立方之和(也就是3 次幂之和)。哈代称 之 为 “水仙

2017-01-24 15:36:57 1567

原创 计算亲密数

亲密数是具有特殊性质的整数。亲密数展示了两个整数之间通过因子的密切联系。如果整数3 的因子和等于整数匕整数1)的因子和等于整数3, 因子包括1 但不包括本身,且 3 不 等 于 匕 则 称 3、1)为亲密数对。 例如,220 和 204 便是一对亲密数,因为其满足如下规则。 220 的各个因子之和为:1+2+4+5+10+11+20+22+44+55+110=204。 204 的各...

2017-01-24 14:44:50 844

原创 计算完全数

完 全 数 (Perfectnumber)是一些特殊的自然整数。完全数等于其所有因子的和。这里所谓的因 子就是所有可以整除这个数的数,而不包括该数本身。本节将简单介绍完全数的基本规则和性质, 以及判断完全数的算法。       与完全数相关的两个概念便是亏数和盈数。一般来说,判断一个自然数是亏数、盈数以及完全 数,可以通过其所有真因子的和来判断。 • 当一个自然数的所有真因子的和小

2017-01-24 10:39:38 1142

原创 快速排序(C++实现)

快速排序算法通过多次比较和交换来实现排序,其排序流程如下: (1) 首先设定一个分界值,通过该分界值将数组分成左右两部分。 (2) 将大于等于分界值的数据集中到数组右边,小于分界值的数据集中到数组的左边。此时,左边部分中各元素都小于等于分界值,而右边部分中各元素都大于等于分界值。 (3) 然后,左边和右边的数据可以独立排序。对于左侧的数组数据,又可以取一个分界值,将 该部分数据分成左右

2017-01-12 15:53:16 2078

原创 shell排序 C++

Shell排序算法严格来说基于插入排序的思想,又称为希尔排序或缩小增量排序。Shell排序算 法的排序流程如下: (1) 将有 n个元素的数组分成n/2 个数字序列,第 1 个数据和第n/2+1 个数据为一对,……。 (2) 一次循环使每一个序列对排好顺序。 (3) 然后,再变为n/ 4 个序列,再次排序。 (4) 不断重复上述过程,随着序列减少最后变为1 个,也 就完成了整个排序

2017-01-12 12:26:49 1018

原创 C++外观模式

在讲解模式之前,先来举个生活中的例子吧:为了方便,一个电源总开关控制四盏灯,一个风扇,一台空调和一台电视机的启动与关闭。假设没有这个总开关,可想而知,启动一次或者关闭一次这些设备,需要重复多次相同的工作。适当引入电源总开关同时控制所有设备,极大的提高了效率,这就是外观模式的缩影。这篇博客具体讲解了外观模式,对模式动机,使用场景,优缺点,UML类图等进行了分析,以及C++代码实现。外观模式(Fa

2017-01-08 13:30:00 631

原创 二叉树操作 C++实现

所谓之其然,还要知其所以然,为了提高C++开发效率,我们可能会选择直接使用标准库提供的二叉树操作,但是,作为一个合格的programmer,有必要掌握这些常用数据结构的基本实现。本博文旨在分享自己用C++实现的二叉树操作源码,主要对二叉树的四个遍历方式(层次遍历,先序遍历,中序遍历,后续遍历)做了实现。希望对大家学习二叉树有所参考和帮助。由于时间有限,若有不足,欢迎指出!如果对按层次遍历算法还是没...

2017-01-01 10:34:21 293

原创 C#版操作系统实验—CPU调度

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using

2015-12-08 13:01:11 895

C++反射功能

众所周知,C++不支持反射,这让热衷C++的伙伴们难免有些失意,在需要用到反射的时候,不得不使用java或者C#。然而,通过一定的技巧,C++依然可以实现类似反射的功能。该源码项目通过运用函数指针,tinyxml,哈希map等技术,实现了在配置文件xml中自由切换类名,程序运行时动态创建相应类对象的功能。

2017-01-07

tinyxml(C++读取xml工具)

TinyXml是一个用于C++读取xml配置文件的工具包,功能十分强大,而且可同时用于window和linux下,不受操作系统限制,提升了C++开发的效率,非常好用。

2017-01-07

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除