并发编程的目的是为了让程序运行的更快,但是并不是启动更多的线程就能让程序最大限度的并发执行。会面临非常多的挑战,比如上下文切换的问题、死锁的问题,以及软件硬件资源的问题等。 1.1 上下文切换 即使是单核处理器也支持多线程执行代码,CPU通过分配CPU时间片来实现这个机制。时间片是CPU分配给各个线 ...
分类:
其他好文 时间:
2019-10-22 18:04:20
阅读次数:
99
服务器在处理客户端请求时,经常面对的是客户端的任务简单,单一。如果针对每个任务,都创建一个线程执行,那么对于成千上万的客户端任务,服务器会创建数以万计的线程。这会使得操作系统频繁地进行线程的上下文切换,增加系统负载,浪费系统资源。线程池技术很好地解决了这个问题,它预先创建了若干个线程。用这些线程处理... ...
分类:
编程语言 时间:
2019-10-22 10:29:33
阅读次数:
91
javaScritp的函数(IIFE) 一、认识函数 javaScritp中的的函数 javaScript函数带默认参数 函数参数默认值存在暂时性死区,在函数参数默认值表达式中,还未初始化赋值的参数值无法作为其他参数的默认值。 javaScript函数 不定参数 Function的构造定义 通过Fu ...
分类:
编程语言 时间:
2019-10-20 19:40:06
阅读次数:
130
变量提升想必大家都比较熟悉了,那么什么是函数声明提升呢?首先我们来了解下常用的两种函数定义方式: 1. 函数声明 2. 函数表达式 下面来看下两种方式定义函数。函数声明语法定义函数 函数表达式定义函数 *那么两种方式定义函数有什么区别呢?***对于函数声明与函数表达式两种定义函数的方式,解析器会率先 ...
分类:
编程语言 时间:
2019-10-19 23:28:23
阅读次数:
180
CPU CPU 有些应用需要大量计算,会长时间、不间断地占用CPU资源,导致其他资源无法争夺到CPU而响应缓慢,从而带来系统性能问题。比如:代码递归导致的无限循环,正则表达式引起的回溯,JVM频繁的FULL GC,以及多线程编程造成的大量上下文切换等等,这些都有可能导致CPU资源繁忙。 内存 内存 ...
分类:
其他好文 时间:
2019-10-17 17:51:34
阅读次数:
91
单线程模型 - 避免了不必要的上下文切换和竞争条件(锁) Redis客户端对服务端的每次调用都经历了发送命令,执行命令,返回结果三个过程。其中执行命令阶段,由于Redis是单线程来处理命令的,所有每一条到达服务端的每一条到达服务端的命令都不会立刻执行,所有的命令都会进入一个队列中,然后逐个执行。并且 ...
分类:
其他好文 时间:
2019-10-16 13:22:34
阅读次数:
95
函数式编程在前端已经成为了一个热门的话题,近几年很多的应用程序代码库里大量使用着函数式编程思想。这里对JavaSctipt中的函数式编程做一个简单介绍。 什么是函数式编程 函数式编程是一种编程范式,主要是利用函数把运算过程封装起来,通过组合各种函数来计算结果。函数式编程意味着开发者可以在更短的时间内 ...
分类:
编程语言 时间:
2019-10-13 10:34:02
阅读次数:
68
一、什么是函数 函数(function),也可以被称之为方法(method)或者是过程(procedure)。函数本质上是功能完整的对象。 函数是一段预定好的,并可以被反复调用的代码块,其中可以包含多条可执行语句。函数还能接受输入的参数,不同的参数可以返回不同的值。 预定定义好:事先声明好,但是不被 ...
分类:
编程语言 时间:
2019-10-04 09:59:49
阅读次数:
104
首先强调一点:所有锁(包括内置锁和高级锁)都是有性能消耗的,在高并发的情况下,使用锁可能比线程本身的消耗要大,由于锁机制带来的上下文切换,资源同步等消耗,所以如果可能,在任何情况下都应该少使用锁,如果不可避免,采用非阻塞算法是一个不错的解决方案。 内部锁 Java语言通过synchronized关键 ...
分类:
其他好文 时间:
2019-09-28 20:26:15
阅读次数:
155
1、多任务竞争CPU,cpu变换任务的时候进行CPU上下文切换(context switch)。CPU执行任务有4种方式:进程、线程、或者硬件通过触发信号导致中断的调用。2、当切换任务的时候,需要记录任务当前的状态和获取下一任务的信息和地址(指针),这就是上下文的内容。因此,上下文是指某一时间点CP ...
分类:
其他好文 时间:
2019-09-26 16:07:24
阅读次数:
437