在使用原型模式时,我们需要首先创建一个原型对象,再通过复制这个原型对象来创建更多同类型的对象。原型模式的定义如下:

原型模式的工作原理很简单:将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝自己来实现创建过程。由于在软件系统中我们经常会遇到需要创建多个相同或者相似对象的情况,因此原型模式在真实开发中的使用频率还是非常高的。原型模式是一种“另类”的创建型模式,创建克隆对象的工厂就是原型类自身,工厂方法由克隆方法来实现。

需要注意的是通过克隆方法所创建的对象是全新的对象,它们在内存中拥有新的地址,通常对克隆所产生的对象进行修改对原型对象不会造成任何影响,每一个克隆对象都是相互独立的。通过不同的方式修改可以得到一系列相似但不完全相同的对象。

浅复制与深复制概念

浅复制

被复制对象所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。换言之,浅复制仅仅复制所考虑的对象,而不复制它所引用的对象。

深复制

被复制对象所有变量都含有与原来的对象相同的值,除去那些引用其他对象的变量。那些引用其他对象的变量将指向被复制过的新对象,而不再是原有的那些被引用的对象。换言之,深复制把要复制的对象所引用的对象复制了一遍。

题目

数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组 {1, 2, 3, 2, 2, 2, 5, 4, 2} 。由于数字 2 在数组中出现了5次, 超过数组长度的一半,因此输出2

题目

输入n个数,找出其中最小的k个数。例如输入 4、5、1、6、2、7、3、8 这8个数字,则最小的4个数字是 1、2、3、4
镜像问题:找出最大的k个数问题,思路相同。
最简单的思路是把输入的n个整数从小到大排序,排序之后位于最前面的k个数就是最小的k个数。这种思路的时间复杂度是O(nlogn)。

单例模式算是设计模式中最容易理解,也是最容易手写代码的模式了吧。但是其中的坑却不少,所以也常作为面试题来考。本文主要对几种单例写法的整理,并分析其优缺点。很多都是一些老生常谈的问题,但如果你不知道如何创建一个线程安全的单例,不知道什么是双检锁,那这篇文章可能会帮助到你。

不久之前,我面试了一些求职Java高级开发工程师的应聘者。我常常会面试他们说,“你能给我介绍一些Java中得弱引用吗?”,如果面试者这样说,“嗯,是不是垃圾回收有关的?”,我就会基本满意了,我并不期待回答是一篇诘究本末的论文描述。

公众号文章一直被运营商各种挟持插广告,今年逐步都切换成HTTPS,前两周再重新梳理了一些HTTPS细节,趁有空整理成文章做个分享。

Alice与Bob的通信

我们以Alice与Bob一次通信来贯穿全文,一开始他们都是用明文的形式在网络传输通信内容。

题目

请实现一个函数,把字符串中的每个空格替换成”%20”。
样例
给定 “We are happy” 返回 “We%20are%20happy.”

题目

Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321

题目

计算在一个 32 位的整数的二进制表示中有多少个1
样例
给定 32 (10 0000),返回 1
给定 5(101),返回 2
给定 1023(11 1111 1111),返回 10

先来看一下什么是Session。

用户使用网站的服务,基本上需要浏览器与Web服务器的多次交互。HTTP协议本身是无状态的,需要基于HTTP协议支持会话状态(Session State)的机制。而这样的机制应该可以使Web服务器从多次单独的HTTP请求中看到“会话”,也就是知道请求是来自哪个会话的。

题目

Implement atoi to convert a string to an integer.
相当于实现一个C++的atoi()函数。

一般来说,能够原子性地获取需要的多个锁,或者注意 调整对多个锁的获取顺序 ,就会比较好地避免死锁。

下面举一个例子:假设有2个锁A和B,两个线程T1和T2

这篇文章是我的Hexo博客的第一个文章,也是一个开始。

Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

Quick Start

Create a new post

1
$ hexo new "My New Post"

More info: Writing