- 博客(69)
- 收藏
- 关注
转载 依赖注入原理(为什么需要依赖注入)
0. 前言在软件工程领域,依赖注入(Dependency Injection)是用于实现控制反转(Inversion of Control)的最常见的方式之一。本文主要介绍依赖注入原理和常见的实现方式,重点在于介绍这种年轻的设计模式的适用场景及优势。1. 为什么需要依赖注入控制反转用于解耦,解的究竟是谁和谁的耦?这是我在最初了解依赖注入时候产生的第一个问题。下面我引用Ma...
2017-01-31 15:11:00 118
转载 浅谈依赖注入
最近几天在看一本名为Dependency Injection in .NET的书,主要讲了什么是依赖注入,使用依赖注入的优点,以及.NET平台上依赖注入的各种框架和用法。在这本书的开头,讲述了软件工程中的一个重要的理念就是关注分离(Separation of concern,SoC)。依赖注入不是目的,它是一系列工具和手段,最终的目的是帮助我们开发出松散耦合(lo...
2017-01-31 14:53:00 157
转载 Stack的三种含义
作者:阮一峰日期:2013年11月29日学习编程的时候,经常会看到stack这个词,它的中文名字叫做"栈"。理解这个概念,对于理解程序的运行至关重要。容易混淆的是,这个词其实有三种含义,适用于不同的场合,必须加以区分。含义一:数据结构stack的第一种含义是一组数据的存放方式,特点为LIFO,即后进先出(Last in, first out)。在这种数...
2017-01-07 09:02:00 181
转载 STL sort 函数实现详解
作者:fengcc 原创作品 转载请注明出处前几天阿里电话一面,被问到STL中sort函数的实现。以前没有仔细探究过,听人说是快速排序,于是回答说用快速排序实现的,但听电话另一端面试官的声音,感觉不对劲,知道自己回答错了。这几天特意看了一下,在此记录。函数声明#include <algorithm> template< class Ran...
2017-01-07 00:44:00 124
转载 Google C++命名规范
时间:2014.03.02地点:基地----------------------------------------------------------------------------------------一、简述 Google 的C++规范号称世界上最优秀的编码规范,于是拿来研究下,已改善自己以后的工作,今天只先学习下它的命名规范。-------------...
2016-12-29 18:24:00 52
转载 C++11中的std::function
看看这段代码先来看看下面这两行代码:std::function<void(EventKeyboard::KeyCode, Event*)> onKeyPressed;std::function<void(EventKeyboard::KeyCode, Event*)> onKeyReleased;这两行代码是从Cocos2d-x中摘出来的,重点是这...
2016-12-29 00:22:00 55
转载 设计模式六大原则(3):依赖倒置原则
定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。问题由来:类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来达成。这种场景下,类A一般是高层模块,负责复杂的业务逻辑;类B和类C是低层模块,负责基本的原子操作;假如修改类A,会给程序带来不必要的风险。解决方案:将类A修改为依赖接口I,类B和类C各自实现接口I,类A通过...
2016-12-01 14:40:00 64
转载 C语言中struct位域的定义和使用
位域的定义和使用 有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几个不同的区域,并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。 这样就可以把几...
2016-11-15 12:52:00 379
转载 Java序列化与反序列化
Java序列化与反序列化是什么?为什么需要序列化与反序列化?如何实现Java序列化与反序列化?本文围绕这些问题进行了探讨。1.Java序列化与反序列化Java序列化是指把Java对象转换为字节序列的过程;而Java反序列化是指把字节序列恢复为Java对象的过程。2.为什么需要序列化与反序列化我们知道,当两个进程进行远程通信时,可以相互发送各种类型的数据,包括文本、...
2016-11-11 18:22:00 51
转载 详解C#中的反射
反射(Reflection)2008年01月02日 星期三 11:21两个现实中的例子:1、B超:大家体检的时候大概都做过B超吧,B超可以透过肚皮探测到你内脏的生理情况。这是如何做到的呢?B超是B型超声波,它可以透过肚皮通过向你体内发射B型超声波,当超声波遇到内脏壁的时候就会产生一定的“回音”反射,然后把“回音”进行处理就可以显示出内脏的情况了(我不是医...
2016-10-24 23:47:00 54
转载 java中hashcode()和equals()的详解
今天下午研究了半天hashcode()和equals()方法,终于有了一点点的明白,写下来与大家分享(zhaoxudong 2008.10.23晚21.36)。1. 首先equals()和hashcode()这两个方法都是从object类中继承过来的。equals()方法在object类中定义如下: public boolean equals(Object ob...
2016-10-22 16:42:00 60
转载 你真的理解Java的按引用传递吗?
首先我们来看下面这段代码:public class Test1 { String a = "123"; public static void change(Test1 test) { test.a="abc"; } public static void main(String[] args) { ...
2016-10-22 15:11:00 50
转载 Java Collection
在 Java2中,有一套设计优良的接口和类组成了Java集合框架Collection,使程序员操作成批的数据或对象元素极为方便。这些接口和类有很多对抽象数据类型操作的API,而这是我们常用的且在数据结构中熟知的。例如Map,Set,List等。并且Java用面向对象的设计对这些数据结构和算法进行了封装,这就极大的减化了程序员编程时的负担。程序员也可以以这个集合框架为基础,定义更高级别的数...
2016-10-22 11:39:00 69
转载 Java 理论与实践: 处理 InterruptedException
捕捉到它,然后怎么处理它?很多 Java™ 语言方法,例如Thread.sleep()和Object.wait(),都可以抛出InterruptedException。您不能忽略这个异常,因为它是一个检查异常(checked exception)。但是应该如何处理它呢?在本月的Java 理论与实践中,并发专家 Brian Goetz 将解释 Interrupt...
2016-10-21 23:05:00 74
转载 粒子群优化算法简介
好好学数学。一.问题来源 经朋友介绍,接了一份工作,就是做PSO及其优化,恰好我导师也研究这个,刚开学也有接触,那我就接了.......赚点生活费。 欢迎大家和我联系做算法类项目,QQ:1198552514二.背景介绍2.1 人工生命 人工生命:研究具有某些生命基本特征的人工系统。包括两方面的内容: 1、研究如何利用计算技术研究生物现象; 2、...
2016-10-20 16:41:00 482
转载 Java异常处理和设计
在程序设计中,进行异常处理是非常关键和重要的一部分。一个程序的异常处理框架的好坏直接影响到整个项目的代码质量以及后期维护成本和难度。试想一下,如果一个项目从头到尾没有考虑过异常处理,当程序出错从哪里寻找出错的根源?但是如果一个项目异常处理设计地过多,又会严重影响到代码质量以及程序的性能。因此,如何高效简洁地设计异常处理是一门艺术,本文下面先讲述Java异常机制最基础的知识,然...
2016-10-19 13:31:00 131
转载 C++标准库:std_map作为一个关联数组
摘要:std::map作为一个容器存在一个典型应用就是作为关联数组来作用。在诸如Java等等语言中,关联数组广泛存在。std::map是一个容器,在它的概念框架中存在两个词:键和值,std::map把一个键与一个值相对,它相当于一个字典,把一个索引和一人内容对应起来。一般情况下,std::map用一个平衡二叉树来实现的,所以它的大部分操作都可以log(n)的时间里完成。下面让我...
2016-10-13 20:48:00 326
转载 C++异常处理
引言异常,让一个函数可以在发现自己无法处理的错误时抛出一个异常,希望它的调用者可以直接或者间接处理这个问题。而传统错误处理技术,检查到一个局部无法处理的问题时:1.终止程序(例如atol,atoi,输入NULL,会产生段错误,导致程序异常退出,如果没有core文件,找问题的人一定会发疯)2.返回一个表示错误的值(很多系统函数都是这样,例如malloc,内存不足,分配失败,返回...
2016-10-13 17:09:00 69
转载 C++ 一个例子彻底搞清楚拷贝构造函数和赋值运算符重载的区别
class TestChild{public: TestChild() { x=0; y=0; printf("TestChild: Constructor be called!\n"); } ~TestChild(){} TestChild(const TestChild...
2016-10-13 16:54:00 79
转载 在c#中使用指针
如果想在c#中使用指针,首先对项目进行配置:在解决方案资源管理器中右击项目名选择属性(或在项目菜单中选择consoleApplication属性(consoleApplication为项名)),在生成选项卡中 选中“允许不安全代码”,如下图: 然后将有关指针,地址的操作放在unsafe语句块中。使用unsafe关键字是来告诉编译器下面的代码是不安全的。unsa...
2016-10-11 13:33:00 104
转载 北大OJ 1001题
题目:输入一序列的正实数和幂次(正整数)对,然后打印结果(具体的比这个精细)这道题是关于大数计算的(大数求幂),从开始建立思路,到写代码、调式到最后被AC以及最终的优化,总共用了差不多一天的时间。开始AC时使用空间500K,时间37MS,最后一次AC空间400K,时间0MS,有很大提高。这主要归功于加大了每次的数据处理量,减少了重计算次数以及降低循环代码量。还有就是在使用了二分递归,...
2016-10-11 13:23:00 118
转载 使用单指针域实现双向链表
数学基础离散数学中的异或运算a⊕b,具有以下性质:a⊕b = b⊕aa⊕a = 0a⊕0 = aa⊕(a⊕b) = (a⊕a)⊕b = b(a⊕b)⊕b = a⊕(b⊕b) = a利用异或运算的这些性质,我们可以只用一个指针域,来实现一个双向链表。单指针域双向链表的逻辑结构下图是一个具有五个节点的双向链表的逻辑结构示意图,没有头结点。...
2016-10-11 13:21:00 571
转载 C++11异常处理 noexcept
1.简介在C语言中,如果程序的运行出现异常、错误,我们想提供方案处理这些异常时,我们面临许多问题,如:(1)C语言没有提供统一(标准)的方式来处理错误;(2)无法保证错误会被正确的处理;(3)错误的传播无法控制,特别是在函数的嵌套调用时;… …当程序在运行时发生错误,使得程序的继续运行变得毫无意义时,C++中的异常机制给我们提供了一个解决方法。2.C++03 异常处理...
2016-10-10 19:44:00 144
转载 关于cmd下使用taskkill无法终止进程名包含空格的进程的解决方案
在我们使用taskkill命令终止进程时,有时会遇到无法终止含空格的进程的问题。只要在进程名外部加上双引号即可解决此问题。如图所示:附上taskkill命令的语法及相关说明:TASKKILL [/S system [/U username [/P [password]]]] { [/FI filter] [/PID processid |...
2016-10-09 21:11:00 1480
转载 C++类功能扩展预留五招
第一招虚函数通过派生类来进行功能扩展是基本的面向对象的方式,这种方式大如下:classbase{public:virtual~base(){}virtualvoidfun(){cout <<"基本功能"<< endl;}};classderive:publ...
2016-10-09 20:03:00 178
转载 fstream 中判断是否成功打开文件
from: http://blog.csdn.NET/zhtsuc/article/details/2938614关于C++ fstream的一个容易使用出错的地方关于c++ 中 文件流的两个类,ifstream 和ofstream,大家也许并不陌生。其负责c++的文件输入流 和 文件输出流。基本上所以语言都会提供类似的文件输入流 和文件输出流类。但当大...
2016-10-08 22:37:00 319
转载 关于出现 org.apache.commons.lang.exception.NestableRuntimeException的解决方法
最近做服务端和客户端之间的访问,出现了 org.apache.commons.lang.exception.NestableRuntimeException等状况。实在令人头大,翻到了一个很好的帖子说明了这个问题。原文网址如下:http://blog.csdn.net/zb0567/article/details/7893063为方便更多的人解决这个问题,现将原文贴出Jav...
2016-10-03 16:12:00 179
转载 腾讯、网易、新浪新闻网站爬虫编写记录及评论格式分析
转载请注明:吹水小镇 | reetsee.com原文链接地址:http://blog.reetsee.com/archives/2370 前言先说说看这篇博客你能知道什么:1 腾讯、网易、新浪不同新闻的地址格式以及评论内容的地址格式(返回数据为json的异步接口);2 一些比较通用的设计方法,对软件设计的菜鸟可能有帮助;之前也说了要写这篇博客,现在终于写出来了。我的毕...
2016-10-03 02:11:00 334
转载 Java总结篇系列:Java多线程(一)
多线程作为Java中很重要的一个知识点,在此还是有必要总结一下的。一.线程的生命周期及五种基本状态关于Java中线程的生命周期,首先看一下下面这张较为经典的图:上图中基本上囊括了Java中多线程各重要知识点。掌握了上图中的各知识点,Java中的多线程也就基本上掌握了。主要包括:Java线程具有五中基本状态新建状态(New):当线程对象对创建后,即进入了新建状态...
2016-10-03 02:08:00 85
转载 【Android 开发】: Android 消息处理机制之一: Handler 与 Message
最近几讲内容,我们学习了Android中关于多线程的一些知识,上一讲我们讲解了异步任务 AsyncTask 的操作,Android中还提供了其他的线程操作,如Handler Message MessageQueue Looper 等模块,这些就是Android中的消息处理机制。这部分内容是Android学习过程中的重点和难点。 现在我们就来学习一下Android的消息处理,...
2016-10-03 02:06:00 212
转载 java多态实现原理
众所周知,多态是面向对象编程语言的重要特性,它允许基类的指针或引用指向派生类的对象,而在具体访问时实现方法的动态绑定。C++ 和Java作为当前最为流行的两种面向对象编程语言,其内部对于多态的支持到底是如何实现的呢,本文对此做了全面的介绍。注意到在本文中,指针和引用会互换使用,它们仅是一个抽象概念,表示和另一个对象的连接关系,无须在意其具体的实现。Java 的实现方式Ja...
2016-10-01 21:57:00 81
转载 c/c++模板的定义和实现分开的问题及其解决方案
注意c/c++模板的定义和实现--定义一个类一般都是在头文件中进行类声明,在cpp文件中实现,但使用模板时应注意目前的C++编译器还无法分离编译,最好将实现代码和声明代码均放在头文件中。如:test.htemplate<classT>classCTest{public:T&...
2016-09-30 13:08:00 203
转载 c++ iterator(迭代器)分类及其使用
前言: 以下的内容为我阅读c++沉思录18,19,20章的笔记以及自己的想法.正文: 总所周知,c++的stl中提出了iterator的概念,这是C所没有的.在一般的使用中,iterator的行为很像c内建的指针.而在java和c#中索性就直接取消了指针,而采用类似iterator的做法来代替了指针.很多编程人员在使用iterator的时候也仅仅把他当作了指...
2016-09-26 15:56:00 99
转载 C++11的default和delete关键字
C11的新特性实在是太多了,这2个关键字关注的人倒是少了很多,其中有一个原因便是编译器支持得太慢了(VS到VS2013才支持上),不过这2个关键字那真是极为有用的,下面我们来看看。【default关键字】首先我们有一个字符串类:[cpp]view plaincopyclassCString{char*_s...
2016-09-22 18:02:00 103
转载 C++之父Bjarne Stroustrup提供的关于异常处理的建议
节选自《The C++ Programming Language》 ——C++之父Bjarne Stroustrup 1.Don’t use exceptions where more local control structures will suffice; 当局部的控制能够处理时,不要使用异常; 2.Use the "resou...
2016-09-22 15:11:00 267
转载 C++的异常处理之一:throw是个一无是处的东西
看这篇文章学习C++异常处理的基础知识。看完后,还不过瘾,为什么大家在C++代码中都不用Exception?为什么C++11会引入一些变化?为什么C++ exception handling需要unwind stack?为什么throw会被抛弃?接着看http://www.gotw.ca/publications/mill22.htm, 总结如下:throw() s...
2016-09-22 15:02:00 219
转载 原码, 反码, 补码 详解
本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希望本文对大家学习计算机基础有所帮助!一. 机器数和真值在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念.1、机器数一个数在计算机中的二进制表示形式, ...
2016-09-19 13:04:00 83
转载 C++ new失败的处理
我们都知道,使用 malloc/calloc 等分配内存的函数时,一定要检查其返回值是否为“空指针”(亦即检查分配内存的操作是否成功),这是良好的编程习惯,也是编写可靠程序所必需的。但是,如果你简单地把这一招应用到 new 上,那可就不一定正确了。我经常看到类似这样的代码: int* p = new int[SIZE]; if ( p == 0 ...
2016-09-12 18:46:00 133
转载 中华万年历 1.47版本已发布
简介中华万年历 ™ 是 Easier Coding Win32 ™ 项目下基于C#.NET开发的一款绿色软件,具有农历显示、查看黄历信息、周历、记事本等实用功能,无广告无插件。界面截图查看大图下载下载地址:(直接下载)http://files.cnblogs.com/files/LonelyEnvoy/WindowsPerpetualCalendar_ver_1_47.z...
2016-09-07 23:07:00 238
转载 C#中的泛型
泛型(generic)是C#语言2.0和通用语言运行时(CLR)的一个新特性。泛型为.NET框架引入了类型参数(type parameters)的概念。类型参数使得设计类和方法时,不必确定一个或多个具体参数,其的具体参数可延迟到客户代码中声明、实现。这意味着使用泛型的类型参数T,写一个类MyList<T>,客户代码可以这样调用:MyList<int>, MyLis...
2016-09-04 15:54:00 87
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人