编程技术

大型网站架构演变和知识体系–

fromhttp://www.blogjava.net/BlueDavy/archive/2008/09/03/226749.html之前也有一些介绍大型网站架构演变的文章,例如LiveJournal的、ebay的,都是非常值得参考的,不过感觉他们讲的更多的是每次演变的结果,而没有很详细的讲为什么需要做这样的演变,再加上近来感觉有不少同学都很难明白为什么一个网站需要那么复杂的技术,于是有了写这篇文章的想法,在这篇文章中将阐述一个普通的网站发展成大型网站过程

系统 2019-08-12 09:30:37 2548

编程技术

使用开源Grid平台-GridGain实现网格计算

网格计算一般分为两种:数据网格和计算网格,简单的说数据网格就是把数据分布式存储,计算网格就是将任务分解为子认为并行计算。一个计算网格平台的作用就是将任

系统 2019-08-12 09:30:37 2548

Java

Java 程序中的多线程

由于在语言级提供了线程支持,在Java语言中使用多线程要远比在C或C++中来得简单。本文通过简单的程序示例展现了在Java程序中线程编程的简单性。在学习完本文后,用户应该能够编写简单、多线程的程序。

编程技术

存储管理的基本原理

内存管理主要包括内存分配和回收、地址变换、内存扩充、内存共享和保护等功能。下面主要介绍连续分配存储管理、覆盖与交换技术以及页式与段式存储管理等基本概念和原理。1.连续分配存储管理方式连续分配是指为一个用户程序分配连续的内存空间。连续分配有单一连续存储管理和分区式储管理两种方式。(1)单一连续存储管理在这种管理方式中,内存被分为两个区域:系统区和用户区。应用程序装入到用户区,可使用用户区全部空间。其特点是,最简单,适用于单用户、单任务的操作系统。CP/M和D

系统 2019-08-12 09:29:46 2548

编程技术

JVM内存模型以及垃圾收集策略解析

一JVM内存模型1.1Java栈Java栈是与每一个线程关联的,JVM在创建每一个线程的时候,会分配一定的栈空间给线程。它主要用来存储线程执行过程中的局部变量,方法的返回值,以及方法调用上下文。栈空间随着线程的终止而释放。StackOverflowError:如果在线程执行的过程中,栈空间不够用,那么JVM就会抛出此异常,这种情况一般是死递归造成的。1.2堆Java中堆是由所有的线程共享的一块内存区域,堆用来保存各种JAVA对象,比如数组,线程对象等。1.

系统 2019-08-12 09:29:31 2548

Android

【Android Developers Training】 29. 从Activi

注:本文翻译自Google官方的AndroidDevelopersTraining文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好。原文链接:http://developer.android.com/training/basics/intents/result.html启动另一个activity不一定是单向的。你也可以启动另一个Activity后,接收它返回的结果。为了接收结果,调用startActivityForResult()(而不

系统 2019-08-12 01:55:17 2548

Android

【Android Developers Training】 67. 响应触摸

注:本文翻译自Google官方的AndroidDevelopersTraining文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好。原文链接:http://developer.android.com/training/graphics/opengl/touch.html让对象根据预设的程序运动,如让一个三角形旋转可以有效地让人引起注意,但是如果你希望可以让OpenGLES与用户交互呢?让你的OpenGLES应用可以与触摸交互的关键点在于

系统 2019-08-12 01:55:05 2548

Android

【Android Developers Training】 71. 显示翻牌

注:本文翻译自Google官方的AndroidDevelopersTraining文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好。原文链接:http://developer.android.com/training/animation/cardflip.html这一节课将向您展示如何用自定义的fragment动画来实现翻牌动画(CardFlip)。翻牌动画是在视图切换的时候以翻牌形式为过渡动画的效果,其如下所示:CardFlip动画如

系统 2019-08-12 01:55:03 2548

编程技术

利用GetInvalidFileNameChars()得到有效的文

有时候需要利用从数据库中检索出来的字符串来生成一个文件名,如果这个字符串包容了不允许的字符(\、?、<、>等),还需要把这些字符逐个替换掉。最近刚刚一个很实用的函数,就是Path.GetInvalidFileNameChars(),有了它,可以很方便的生成一个有效的文件名称,代码如下:publicstaticstringGetValidName(stringfileName){foreach(charcinSystem.IO.Path.GetInvalid

系统 2019-08-12 01:32:18 2548

Python

python日期相关操作实例小结

本文实例讲述了python日期相关操作。分享给大家供大家参考,具体如下:用Python做项目时,经常会遇到与日期转换相关,日期计算相关的功能,动不动就要去查python手册,感觉麻烦,因此把自己常用的一些东西,总结了一下,总体说来到目前为止遇到如下一些需求:1.用python把datetime转成字符串2.用python把字符串转成datetime3.用python把字符串转成时间戳形式4.用python把时间戳转成字符串形式5.用python把把date

系统 2019-09-27 17:57:14 2547

Python

Python-蟒蛇绘制实例

#PythonDraw.pyimportturtleastt.penup();t.bk(250);t.pendown();t.pensize(25);t.pencolor('purple');t.seth(-40);foriinrange(5):t.circle(40,80);t.circle(-40,80);t.circle(40,80/2);t.fd(20);t.circle(20,180);t.fd(20);t.done();运行结果:知识点:库引用

系统 2019-09-27 17:55:39 2547

Python

.net 调用 Python脚本中的代码

使用工具:IronPython工具介绍:是一种在.NET及Mono上的Python实现,是一个开源的项目,基于微软的DLR引擎。(个人理解就是在.net上面运行Python代码)使用方法:先新建一个控制台应用程序=>使用Nuget添加IronPython包=>在Main()函数中编写如下代码:ScriptEngineengine=Python.CreateEngine();ScriptScopescope=engine.CreateScope();stri

系统 2019-09-27 17:54:42 2547

Python

Python之Tuple遍历

小白之前博文已经写了Dtaframe、set等的遍历,这篇博文来总结下遍历Tuple,Tuple一旦创建后,元素不可变,遍历和List其实是一样的,下面来看下吧~首先,创建一个tuple:#createatupletuple=('111','222','333')接下来,用几种方式来遍历Tuple:对于方法1、2、3、4都和list中一样,关于每一种的讲解,可参考小白之前的博文https://blog.csdn.net/Jarry_cm/article/d

系统 2019-09-27 17:54:15 2547

Python

DBSCAN算法python实现(附完整数据集和代码)

目录:一、算法思路二、算法实现三、算法实现过程中遇到的问题四、算法运行结果一、算法思路DBSCAN算法的核心是“延伸”。先找到一个未访问的点p,若该点是核心点,则创建一个新的簇C,将其邻域中的点放入该簇,并遍历其邻域中的点,若其邻域中有点q为核心点,则将q的邻域内的点也划入簇C,直到C不再扩展。直到最后所有的点都标记为已访问。点p通过密度可达来扩大自己的“地盘”,实际上就是簇在“延伸”。图示网站:https://www.naftaliharris.com/

系统 2019-09-27 17:51:24 2547

Python

Python函数的几种参数形式

在Python中定义函数,可以用必选参数(位置参数),默认参数,可变参数,关键字参数和命名关键字参数,这5种参数都可以组合使用。但参数定义的顺序必须是:必选参数(位置参数)默认参数可变参数命名关键字参数关键字参数例如:定义:deff1(x,y=0,*args,z,**kw):print(x,y,args,z,kw)调用:f1(1,2,3,4,5,z=6,p=7,q=8)输出:12(3,4,5)6,{'p':7,'q':8}定义:deff2(x,y=0,*,

系统 2019-09-27 17:50:10 2547