上下文

线程和进程的区别

本秂侑毒 提交于 2019-12-01 18:48:26
进程和线程的主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。 但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。 线程和进程 用一句话概括的总论: 进程和线程都是一个时间段的描述,是CPU工作时间段的描述。 https://www.zhihu.com/question/25532384 背景: CPU+RAM+各种资源(比如显卡,光驱,键盘,GPS, 等等外设)构成我们的电脑,但是电脑的运行,实际就是CPU和相关寄存器以及RAM之间的事情。 一个最基础的事实: CPU太快,太快,太快了,寄存器仅仅能够追的上他的脚步,RAM和别的挂在各总线上的设备完全是望其项背。那当多个任务要执行的时候怎么办呢?轮流着来?或者谁优先级高谁来?不管怎么样的策略,一句话就是在CPU看来就是轮流着来。 一个必须知道的事实 :执行一段程序代码,实现一个功能的过程介绍 ,当得到CPU的时候,相关的资源必须也已经就位,就是显卡啊,GPS啊什么的必须就位,然后CPU开始执行

Java 8 新特性:Lambda 表达式

≯℡__Kan透↙ 提交于 2019-12-01 16:10:22
Lambda 表达式 文 | 莫若吻 ( 注:此文乃个人查找资料然后学习总结的,若有不对的地方,请大家指出,非常感谢!另外,知识都有串联,如果某一处看不懂,就先接着往下看,之后再回头看不明白的地方就会恍然大悟了。 ) 一. 为什么 Java 需要 Lambda 表达式? 如果忽视注解(Annotations)、泛型(Generics)等特性,自 Java 语言诞生时起,它的变化并不大。Java 一直都致力维护其对象至上的特征,在使用过JavaScript 之类的函数式语言之后,Java 如何强调其面向对象的本质,以及源码层的数据类型如何严格变得更加清晰可感。其实,函数对Java 而言并不重要,在 Java 的世界里,函数无法独立存在。 然而,在函数式编程语言中,函数是一等公民,它们可以独立存在,你可以将其赋值给一个变量,或将他们当做参数传给其他函数。JavaScript 是最典型的函数式编程语言。函数式语言提供了一种强大的功能——闭包,相比于传统的编程方法有很多优势,闭包是一个可调用的对象,它记录了一些信息,这些信息来自于创建它的作用域。Java 现在提供的最接近闭包的概念便是 Lambda 表达式,虽然闭包与 Lambda 表达式之间存在显著差别,但至少 Lambda 表达式是闭包很好的替代者。 Lambda 表达式为 Java 添加了缺失的函数式编程特点

HTML5标签的标准属性

半世苍凉 提交于 2019-12-01 12:24:04
属性 描述 accesskey   规定激活元素的快捷键。 class   规定元素的一个或多个类名(引用样式表中的类) contenteditable   规定元素内容是否可编辑。 contextmenu   规定元素的上下文菜单。上下文菜单在用户点击元素时显示。 data-*   用于存储页面或应用程序的私有定制数据。 dir   规定元素中内容的文本方向。 draggable   规定元素是否可拖动。 dropzone   规定在拖动被拖动数据时是否进行复制、移动或链接。 hidden   规定元素仍未或不再相关。 id   规定元素的唯一 id。 lang   规定元素内容的语言。 spellcheck   规定是否对元素进行拼写和语法检查。 style   规定元素的行内 CSS 样式。 tabindex   规定元素的 tab 键次序。 title   规定有关元素的额外信息。 translate   规定是否应该翻译元素内容。 来源: https://www.cnblogs.com/surfingcat/p/11685381.html

01-视图及路由

こ雲淡風輕ζ 提交于 2019-12-01 12:19:20
1、Flask简介   Web应用程序的本质,Web(World Wide Web)诞生最初的目的,是为了利用互联网交流工作文档。 Web框架   Web框架就是协助开发者快速开发Web应用程序的一套功能代码。开发者只需要按照框架约定要求,在指定位置写上自己的业务逻辑代码。(就是要么重新造轮子,要么用轮子造轮子) 为什么要用Web框架?   Web网站发展至今,特别是服务端,涉及到的知识、内容非常广泛。这对程序员的要求也会越来越高。如果采用成熟,稳健的框架,那么一些基础的工作,比如,安全性,数据流控制等都可以用框架来处理,那么程序开发人员可以把精力放在具体任务的逻辑上面。使用框架的优点(1、稳定性和可拓展性强2、可以降低开发难度,提高开发效率)。   python中常用的Web框架有flask,django,tornado Flask   Flask诞生于2010年,是Armin ronacher(人名)用 Python 语言基于 Werkzeug 工具箱编写的轻量级Web开发框架。   Flask 本身相当于一个内核,其他几乎所有的功能都要用到扩展(邮件扩展Flask-Mail,用户认证Flask-Login,数据库Flask-SQLAlchemy),都需要用第三方的扩展来实现。比如可以用 Flask 扩展加入ORM、窗体验证工具,文件上传、身份验证等。Flask

浮点上下文中的整数除法

隐身守侯 提交于 2019-12-01 10:23:42
非常基础,编码过程中,容易被忽略的错误,两个整数相除,结果必定是整数, 如果用float、double等数据类型接收,语法上不构成错误,但是会丢失精度。 /** * @author css * @date 2019/9/30 9:39 */ public class Test { public static void test(double d){ System.out.println(d); } public static void main(String[] args) { int a = 1; int b = 2; test(a/2); float c = a/b; System.out.println(c); //此时c的值丢失精度 } } //Idea警告:浮点上下文中的整数除法 integer division in floating-point context 浮点上下文中的整数除法 来源: https://www.cnblogs.com/chenss15060100790/p/11681455.html

spring3 mvc的深入研究

前提是你 提交于 2019-12-01 09:08:54
转载博文 目录 一、前言: 二、核心类与接口: 三、核心流程图 四、DispatcherServlet说明 五、双亲上下文的说明 六、springMVC-mvc.xml 配置文件片段讲解 七、如何访问到静态的文件,如jpg,js,css? 八、请求如何映射到具体的Action中的方法? 九、Spring中的拦截器: 十、如何使用拦截器? 十一、如何实现全局的异常处理? 十二、如何把全局异常记录到日志中? 十三、如何给spring3 MVC中的Action做JUnit单元测试? 十四、转发与重定向 十五、处理ajax请求 十六、关于写几个配置文件的说明 十七、如何取得Spring管理的bean 十八、多视图控制器 十九、 <mvc:annotation-driven /> 到底做了什么工作 二十、 本文中springMVC.xml配置文件是核心,这里给一个下载地址 一、前言: 大家好,Spring3 MVC是非常优秀的MVC框架,由其是在3.0版本发布后,现在有越来越多的团队选择了Spring3 MVC了。Spring3 MVC结构简单,应了那句话简单就是美,而且他强大不失灵活,性能也很优秀。 官方的下载网址是: http://www.springsource.org/download (本文使用是的Spring 3.0.5版本) Struts2也是比较优秀的MVC构架

进程上下文与中断上下文

对着背影说爱祢 提交于 2019-12-01 06:39:45
进程上下文与中断上下文 https://www.cnblogs.com/alantu2018/p/8461094.html 有进程上下文切换 也有 模式切换 不通的切换的损耗是不一样的 上下文切换时 堆栈信息 寄存器信息 用户信息都得切换 其实代价还是很高的. 1、前言   最近在学习linux内核方面的知识,经常会看到用户空间与内核空间及进程上下文与中断上下文。看着很熟悉,半天又说不出到底是怎么回事,有什么区别。看书过程经常被感觉欺骗,似懂非懂的感觉,很是不爽,今天好好结合书和网上的资料总结一下,加深理解。 2、用户空间与内核空间      我们知道现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方)。操心系统的核心是内核,独立于普通的应用程序,可以访问受保护的内存空间,也有访问底层硬件设备的所有权限。为了保证用户进程不能直接操作内核,保证内核的安全,操心系统将虚拟空间划分为两部分,一部分为内核空间,一部分为用户空间。针对linux操作系统而言,将最高的1G字节(从虚拟地址0xC0000000到0xFFFFFFFF),供内核使用,称为内核空间,而将较低的3G字节(从虚拟地址0x00000000到0xBFFFFFFF),供各个进程使用,称为用户空间。每个进程可以通过系统调用进入内核,因此,Linux内核由系统内的所有进程共享

后端开发实践系列——领域驱动设计(DDD)编码实践

夙愿已清 提交于 2019-12-01 06:37:31
Martin Fowler在《 企业应用架构模式 》一书中写道: I found this(business logic) a curious term because there are few things that are less logical than business logic. 初略翻译过来可以理解为:业务逻辑是很没有逻辑的逻辑。 的确,很多时候软件的业务逻辑是无法通过推理而得到的,有时甚至是被臆想出来的。这样的结果使得原本已经很复杂的业务变得更加复杂而难以理解。而在具体编码实现时,除了应付业务上的复杂性,技术上的复杂性也不能忽略,比如我们要讲究技术上的分层,要遵循软件开发的基本原则,又比如要考虑到性能和安全等等。 在很多项目中,技术复杂度与业务复杂度相互交错纠缠不清,这种火上浇油的做法成为不少软件项目无法继续往下演进的原因。然而,在合理的设计下,技术和业务是可以分离开来或者至少它们之间的耦合度是可以降低的。在不同的软件建模方法中, 领域驱动设计 (Domain Driven Design,DDD)尝试通过其自有的原则与套路来解决软件的复杂性问题,它将研发者的目光首先聚焦在业务本身上,使技术架构和代码实现成为软件建模过程中的“副产品”。 DDD总览 DDD分为战略设计和战术设计。在战略设计中,我们讲求的是子域和 限界上下文(Bounded Context,BC)

浅谈flask源码之请求过程

纵然是瞬间 提交于 2019-12-01 02:55:32
更新时间:2018年07月26日 09:51:36 作者:Dear、 我要评论 这篇文章主要介绍了浅谈flask源码之请求过程,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 Flask Flask是什么? Flask是一个使用 Python 编写的轻量级 Web 应用框架, 让我们可以使用Python语言快速搭建Web服务, Flask也被称为 "microframework" ,因为它使用简单的核心, 用 extension 增加其他功能 为什么选择Flask? 我们先来看看python现在比较流行的web框架 Flask Django Tornado Sanic Flask: 轻, 组件间松耦合, 自由、灵活,可扩展性强,第三方库的选择面广的同时也增加了组件间兼容问题 Django: Django相当于一个全家桶, 几乎包括了所有web开发用到的模块(session管理、CSRF防伪造请求、Form表单处理、ORM数据库对象化、模板语言), 但是相对应的会造成一个紧耦合的情况, 对第三方插件不太友好 Tornado: 底层通过eventloop来实现异步处理请求, 处理效率高, 学习难度大, 处理稍有不慎很容易阻塞主进程导致不能正常提供服务, 新版本也支持asyncio Sanic: 一个类Flask框架, 但是底层使用uvloop进行异步处理,

操作系统知识点总结(3)

六月ゝ 毕业季﹏ 提交于 2019-12-01 02:15:54
5. 进程与线程的区别和联系? 进程 是具有一定独立功能的程序关于某个数据集合上的一次运行活动, 进程 是系统进行资源分配和调度的一个独立单位。 线程 是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。 进程和线程的关系 (1)一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。线程是操作系统可识别的最小执行和调度单位。 (2)资源分配给进程,同一进程的所有线程共享该进程的所有资源。 同一进程中的多个线程共享代码段(代码和常量),数据段(全局变量和静态变量),扩展段(堆存储)。但是每个线程拥有自己的栈段,栈段又叫运行时段,用来存放所有局部变量和临时变量。 (3)处理机分给线程,即真正在处理机上运行的是线程。 (4)线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步。 进程与线程的区别? (1)进程有自己的独立地址空间,线程没有 (2)进程是资源分配的最小单位,线程是CPU调度的最小单位 (3)进程和线程通信方式不同(线程之间的通信比较方便。同一进程下的线程共享数据(比如全局变量,静态变量),通过这些数据来通信不仅快捷而且方便,当然如何处理好这些访问的同步与互斥正是编写多线程程序的难点。而进程之间的通信只能通过进程通信的方式进行。) (4)进程上下文切换开销大,线程开销小 (5