一、线程的概念 一个进程里面至少有一个控制线程,进程的概念只是一种抽象的概念,真正在CPU上面调度的是进程里面的线程,就好比真正在地铁这个进程里面工作的实际上是地铁里面的线程,北京地铁里面至少要有一个线程,线程是真正干活的,线程用的是进程里面包含的一堆资源,线程仅仅是一个调度单位,不包含资源。什么时...
概述策略模式定义了算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变换独立于使用算法的客户。涉及到的设计原则找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起。针对接口编程,而不是针对实现编程。多用组合,少用继承。UMLContext:上下文角色,负责封装,屏...
关于Java的深拷贝和浅拷贝,简单来说就是创建一个和已知对象一模一样的对象。可能日常编码过程中用的不多,但是这是一个面试经常会问的问题,而且了解深拷贝和浅拷贝的原理,对于Java中的所谓值传递或者引用传递将会有更深的理解。1、创建对象的5种方式①、通过 new 关键字这是最常用的一种方式,通过 ne...
数据(data)数据是数据库中存储的基本对象。数据 : 描述事物的符号记录称为数据。描述事物的符号可以是数字,文字,图形,图像,音频,视频等,数据有多种表现形式,它们都可以经过数据后存入计算机。数据库DataBase(DB)数据库,顾名思义,存放数据的仓库。只不过这个仓库是在计算机存储设备上,而且数...
排序算法1、冒泡排序学习排序算法时,通常都先学冒泡算法,因为它在所有排序算法中最简单。然而,从运行时间的角度来看,冒泡排序是最差的一个。冒泡排序比较任何两个相邻的项,如果第一个比第二个大,则交换它们。元素项向上移动至正确的顺序,就好像气泡升至表面一样,冒泡排序因此得名。function sort(a...
python采用"引用计数"和"垃圾回收"两种机制来管理内存。引用计数通过记录对象被引用的次数来管理对象。对对象的引用都会使得引用计数加1,移除对对象的引用,引用计数则会减1,当引用计数减为0时,对象所占的内存就会被释放掉。引用计数可以高效的管理对象的分配和释放,但是有一个缺点,就是无法释放引用循环...
这两年因为一些爆炸式的AI应用,导致又把公众的视野转向这个方向发展,自图灵提出“图灵测试”之后,AI已经爆发了两次热潮,相应的也跌入了两次低谷,目前看应该是进入了第三次的热潮,但是之后是迎来“奇点”,还是第三次低谷,尚不可知。强人工智能(也就是通用人工智能),或者说机器的自我意识,自然是一个终极目标...
一、什么是跨域跨域问题来自于浏览器同源策略的限制,包括DOM同源限制和Ajax同源限制,本文探讨的是Ajax跨域。Ajax跨域指的是一个页面的Ajax只能请求和当前页面同源的数据,如果发现请求到的数据不符合要求,浏览器就会阻止返回的数据。所谓同源,指的是协议、域名、端口号都必须完全相同(同一IP的不...
一、前言面向切面编程(AOP)是一种编程思想,与OOP并不矛盾,只是它们的关注点相同。面向对象的目的在于抽象和管理,而面向切面的目的在于解耦和复用。举两个大家都接触过的AOP的例子:1)java中mybatis的@Transactional注解,大家知道被这个注解注释的函数立即就能获得DB的事务能力...
不管什么程序语言,内存生命周期基本是一致的:首先,分配需要的内存;然后,使用分配到的内存;最后,释放其内存。而对于第三个步骤,何时释放内存及释放哪些变量的内存,则需要使用垃圾回收机制。本文将详细介绍javascript中的内存管理和垃圾回收分配内存为了不让程序员费心分配内存,JavaScript 在...