自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 Java日志框架

所有的Java项目都会涉及到日志相关的东西,经验不丰富的人往往会被各种框架搞得有点糊涂,因此,这里对Java项目中经常用到的日志框架进行介绍。Java的日志框架主要分为两大类,一类是实际记录日志的框架,比如log4j、log4j2、logback和JDK Logging等,另一类其实是统一的日志规范接口,使用了设计模式当中的外观模式(Facade模式),比如SLF4j(Simple Logging...

2018-02-24 14:16:39 327

原创 Java成长之路开篇

其实一直都想系统地梳理一下成为合格的Java工程师的技能图谱,今天恰巧看到了一个图片,就把它拿过来作为自己的努力的一个方向。已经工作半年的时间了,发现图中说到的很多东西确实在工作中都有用到,因此本人也打算根据图中但不仅限于图中的东西尽量从基本的方面可以逐步完善自己,分享所学。以下就是图片原图:

2018-02-07 20:31:11 342

转载 BIO NIO AIO

【转自】http://qindongliang.iteye.com/blog/2018539 在高性能的IO体系设计中,有几个名词概念常常会使我们感到迷惑不解。具体如下: 序号 问题 1 什么是同步? 2 什么是异步? 3 什么是阻塞? 4 什么是非阻塞? 5 什么是同步阻塞? 6 什么是同步非阻塞? 7 什么是异步阻塞? 8 什么是异步非阻塞? 

2016-07-03 14:38:21 627

原创 同步,异步,阻塞,非阻塞的一点理解

同步异步,阻塞非阻塞区别这是两对概念,用在不同的语境会有一些不同的含义,不能一概而论。 整体来说,同步就是两种东西通过一种机制实现步调一致,异步是两种东西不必步调一致。 一、同步调用与异步调用: 在用在调用场景中,无非是对调用结果的不同处理。 我理解同步调用就是调用一但返回,就能知道结果,而异步是返回时不一定知道结果,还得通过其他机制来获知结果,如: a. 状态 b. 通知

2016-06-28 10:23:53 667

转载 百度网盘是如何实现妙传的

最近看到一篇不错的写百度网盘如何实现的文章,写的简单易懂,原文链接:http://www.aboutyun.com/thread-8125-1-1.html问题导读1.百度网盘是如何分配空间的?2.对于用户大量上传数据是如何处理的?3.网盘是如何实现妙传的?4.你对软件、云技术是否有新的认识?前段时间在使用百度网盘时,突然发现百度网盘可以免费领取 2TB 空间啦!

2016-05-27 11:49:19 3074

原创 Hadoop MapReduce初探 自己写的MapReduce程序

Hadoop自己写的MapReduce WordCount程序以下是我写的WordCount程序,代码的具体讲解已经在注释中给出,所以就不做赘述,我再学习的时候写WordCount程序是用的MapReduce八股文,非常好用,先写出一个框架,再向框架中添加血肉:javapackage org.hadoop.MapReduce;import java.io.IOException;import

2016-05-25 15:02:51 1630 1

原创 LeetCode 342 power of 4

欢迎使用Markdown编辑器写博客一开始最直观的想法是用一个循环来判断,首先考虑特殊情况num为负数的时候,返回false。如果num%4==0,则num \=4,用1作为判断条件。如果最后num为1,则代表true,如果num不为1,则代表false。代码如下:c++class Solution {public: bool isPowerOfFour(int num) {

2016-05-17 17:29:52 511

原创 数据库SQL语句1

显示当前系统已有的数据库Show databases; 创建数据库:Create database/schema  [if not exists] 数据库名 ; 修改数据库:Alter database/schema 数据库名 选项(character set字符集名)/(collate校对规则名) 删除数据库Drop database if exists数

2016-04-22 14:48:02 559

原创 数据库索引 建立方法

数据库索引是将数据库表中的某一列或几列以特定的数据结构存起来,比如B-Tree,Hash等,这样查找的时候就可以不用从头插到尾要O(n),这样可以缩短到O(log)级别甚至O(1)。建立索引之后查找和修改,排序等操作可以省很多时间。索引是对数据库表中一个或多个列(例如,employee 表的姓名 (name) 列)的值进行排序的结构。如果想按特定职员的姓来查找他或她,则与在表中搜索所有的行

2016-04-20 15:08:18 2553

原创 B-树与B+树

在大规模数据查找中大量信息存储在外存磁盘中,选择正确的数据结构可以显著降低查找时间。B-树和B+树就是两种常见的高效的外存数据结构。B-树:B-树主要应用在文件系统中。为了将大型数据库文件存储在硬盘上 以减少访问硬盘次数为目的 在此提出了一种平衡多路查找树——B-树结构 。B-树是一种平衡的多路查找树。注意哦,是平衡的,根节点到每个叶子节点的深度都一样哦。是查找树说明B-树中的数据

2016-04-20 14:08:09 605

原创 C++ 实现堆排序 归并排序 快速排序

#include using namespace std;//////////////////////快排void quickSort( int array[], int left, int right ){int i=left, j=right;int x = array[i];if(i{while(i{while(i{if(array[j]

2016-04-19 10:02:06 620

原创 C语言 fork()笔试题

分享腾讯笔试中的一道题,是关于fork()的。#include#include #include void main(){int i=0;for(i=0; i{fork();printf("K");}}问你一共打印出几个K。如果了解fork()工作机制的人会很快答出6个K,P1产生了P2和P3两个进程,P2产生了P4进程,P1,P2打印两次(

2016-04-05 16:33:55 696

原创 C++ 判断double变量是否为0

在笔试题中我们总会看到让判断double变量是否为零是否正确的题目。判断double变量是否为零不能像我们直观想象的那样double d;if( d == 0 );这种做法是极其错误的,因为double是双精度的,他表示本身就是有精度误差的,所以这样判断零不正确。应正确步骤应该是先定义一个精度范围,当double小于该精度范围时就可以判定double变量是否为0了。代码如下:#define M

2016-04-02 10:43:41 15714 1

原创 C++ primer中有很多好玩的东西

C++ primer中有很多好玩的东西,主要包括以下这么多。智能指针,随机数引擎,流随机访问,RTTI,union,volatile,extern "C"。智能指针智能指针有auto_ptr,shared_ptr, weak_ptr。这里就简单介绍以下,详细还得看书啊。用法都是shared_ptr这种。智能指针最主要的用途就是能够在运行完的时候,自动把内存释放掉,不用我们惦记着释放,这

2016-03-25 15:40:39 807

原创 C++ 多重继承 虚继承 虚函数表 多态

C++中的多重继承和虚继承是一个非常重要的概念,也是看你是不是懂C++的一个重要的标志之一。这中间包括了运行时多态,虚函数表等等相关概念。多重继承,顾名思义,是一个类继承了多个父类。例如class C:public A, publicB{};这样就是一个多重继承。首先看看多重继承的构造和析构函数。多重继承的构造函数是先执行父类中的构造函数在执行自己的构造函数,多个父类按照继承顺序来。上

2016-03-25 15:05:11 4546

原创 C++ dynamic_cast static_cast const_cast reinterpret_cast

C++中的强制转换类型主要有4种,分别是static_cast, dynamic_cast, const_cast, reinterpret_cast。我们首先来说一下比较简单的两种吧。const_castconst_cast主要是用来修改的const和volatile属性的。const char *pc;char *p = const_cast(pc);//正确,但是通过p写

2016-03-25 14:23:58 959

原创 C++ 引用和指针 const与#define #define与内联函数

面试的时候总会有这样的问题,让你比较一下引用和指针,const与#define ,#define与内联函数 new delete与malloc free(这个已经写过了),接下来就看看比较结果。引用和指针引用其实是变量的另一个别名而已,它用的时候完全与之前的变量一模一样。引用使用的时候是有规则的:(1)引用创建时候必须初始化(指针可以在任何时候初始化)(2)引用一旦创建就不能更

2016-03-24 16:55:50 925

原创 C++ malloc free与new delete

之前面试的时候面试官问了我一个问题,是C语言中有了malloc和free为什么还要再有new 和delete。说一下这两者的区别。其实之前也有看过这个东西,包括malloc free是C语言的库函数,而new和delete是C++的操作符。malloc开辟出的是一片空间,返回的是一个void *的指针,用的时候必须强制转换。而new直接返回的就是该类型的指针。但是这些都不是最为重点的。最为

2016-03-24 16:00:29 589

原创 C++ 重载 覆盖 隐藏

重载 覆盖 隐藏是C++中最为常见的几种函数相关的概念,特别是在存在虚函数的类继承中特别容易混淆。因此,区分三个概念是非常重要的。重载(overload)是在一个类中,相同的函数名,不同的参数,可以实现重载。跟返回值无关,返回值不同,不能叫做重载。不是两个函数的名字相同就能构成重载。全局函数和类的成员函数同名也不算重载,因为函数的作用域不同。例如void Print();//全局函数

2016-03-24 15:44:17 580

原创 C++ 拷贝构造函数和重载赋值函数

拷贝构造函数和重载赋值=的函数可以有效防止在浅复制过程中可能对于同一片内存释放两次的问题。然而拷贝函数和重载复制=的函数很容易混淆。拷贝构造函数是在对象创建时调用的,而赋值函数只能被已经存在的对象调用。一个例子 类String的拷贝构造函数和赋值函数。//拷贝构造函数String::String(const String &other){}//赋值函数S

2016-03-24 15:05:10 4080 1

原创 C++ 空指针调用函数 静态绑定

首先看一段代码是否知道其正确还是错误。class A{public:void print(){cout }};void main(){A *a = NULL;a.print();}问你程序是否正确执行,或者执行结果是什么。这就是一个典型的表示C++是一个静态语言的特征。可以阐明“静态绑定”和“动态绑定”的区别。真正的原因是:因为对于非

2016-03-24 14:38:57 1130

原创 C++ 类的继承和组合

C++中设计孤立的类是非常容易的,难的是如何设计正确的基类和派生类。继承(inheritance) 组合(composition)如果类A和类B没啥太大关系,不要为了让类B多点功能就硬是让它继承类A,这样就好像一个好好地大老爷们你给他各种吃人参,吃甲鱼补身体一样。还有关键的一点是如果B是A的一种(a kind of)这时候就要用到继承了,比如Man是一种(a kind of)Human

2016-03-24 14:23:32 649

原创 C++ const提高函数的健壮性

const提高函数的健壮性参数const只能修饰输入参数。因为输出参数的话是需要修改的,如果const修饰过后就白扯了。const作函数的输入参数是,可以采用指针或者引用传递,用const修饰,这样就可以防止意外修改了,但是如果是值传递,即没有指针或者引用时就不需要了,因为参数复制,即使函数改了也是白改,不会影响实参注意 对于费内部数据类型的输入参数,应该将值传递改为const引用

2016-03-24 14:11:57 537

空空如也

空空如也

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

TA关注的人

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