Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux

Linux编程之自定义消息队列

Linux编程之自定义消息队列

我这里要讲的并不是IPC中的消息队列,我要讲的是在进程内部实现自定义的消息队列,让各个线程的消息来推动整个进程的运动。进程间的消息队列用于进程与进程之间的通信,而我将要实现的进程内的消息队列是用于有序妥当处理来自于各个线程请求,避免一窝蜂的请求而导致消息的异常丢失。想想socket编程里的listen函数吧,里面要设置一个队列长度的参数,其实来自网络的请求已经排成一个请求队列了,只是这个队列是系统帮我们做好了,我们看不到而已。如果系统不帮我们做这个等待队列...
开发高性能Java应用程序基础

开发高性能Java应用程序基础

虽然Java的垃圾回收和当前高配置的服务器可以让程序员大部分时间忘掉OutOfMemoryError的存在,但是访问量增大后频繁的GC会额外消耗CPU (使用top查看结果为us值高),系统响应速度下降,积压的请求又会占用更多内存从而恶性循环,严重时可能导致系统不断Full GC造成应用停顿。优化内存的使用可从以下几方面着手:一、节流1 使用单例模式单例模式是开发者最早接触并使用的设计模式之一,尽管写代码的时候可能还不知道用了设计模式。简单来说就是构造函数...
理解函数式编程

理解函数式编程

相信大家平时或多或少听过不少关于“函数式编程” (FP)相关的词语,有些Geek经常吹捧函数式的优点或者特性比如:纯函数无副作用、不变的数据、高阶函数、流计算模式、尾递归、柯里化等等,再加上目前的函数式理论越来越多的应用于工程中,OCaml,clojure, scala等FP语言日渐火爆。本编文章,笔者准备带领大家深入理解函数式编程的相关理论概念。定义首先引用维基百科对函数式编程的解释:在计算机科学里,函数式编程是一种编程范式,它将...
Node.js和PHP运行机制对比

Node.js和PHP运行机制对比

为什么要用node.js它又有什么优势呢?一个新的技术被大家喜爱那么它就必然有它的优势,那么下面我们就来简单把它和php做一个对比1 . Node.js 他用的是JavaScript引擎,那么注定它是单线程 ,使用异步方法开辟多个任务,无需像php等待上个任务线程使用结束之后给下个使用, PHP也是单线程但是它借用Apache服务器提供多线程服务2 . 高并发,大数据量怎么处理:php : 优化sql ,用组件,用缓存,为了让线程尽快结束,进行下一次任务...
Git代码管理工具

Git代码管理工具

Git代码管理工具 Git 是分布式的源代码管理工具,这点区别于svn -让源代码可以被追溯,主要是记录了每次的更新了什么,如果新版本不想用,那么则可以退回之前的版本 -Git 是Linux之父当年为了维护管理Linux的源代码写的一个工具 -在没有网络的情况下也可以提交代码(提交到本地),进行记录,有网络时再提交到服务器Git安装 下载相应的版本并安装,记住你选择的安装目录 安装完成之后,打开dos窗口,输入 git --version 检...
Gulp自动化构建工具

Gulp自动化构建工具

gulp自动化构建工具,实时监控、代码合并、压缩...本文假设你之前没有用过任何任务脚本(task runner)和命令行工具,一步步教你上手Gulp。不要怕,它其实很简单,我会分为五步向你介绍gulp并帮助你完成一些惊人的事情。那就直接开始吧。第一步:安装Node首先,最基本也最重要的是,我们需要搭建node环境。访问http://nodejs.org,然后点击大大的绿色的install按钮,下载完成后直接运行程序,就一切准备就绪。npm会随着安装包一起...
Java定时器Timer简述

Java定时器Timer简述

概述主要用于Java线程里指定时间或周期运行任务。Timer是线程安全的,但不提供实时性(real-time)保证。构造函数Timer()默认构造函数。Timer(boolean)指定关联线程是否作为daemon线程。Timer(String)指定关联线程的名称。Timer(String, boolean)同时指定关联线程的名称和是否作为daemon。schdule方法schedule(TimerTask task, long delay)以当前时间为基准...
理解Javascript的状态容器Redux

理解Javascript的状态容器Redux

Redux要解决什么问题?随着 JavaScript 单页应用开发日趋复杂,JavaScript 需要管理比任何时候都要多的 state (状态)。 这些 state 可能包括服务器响应、缓存数据、本地生成尚未持久化到服务器的数据,也包括 UI 状态,如激活的路由,被选中的标签,是否显示加载动效或者分页器等等。管理不断变化的 state 非常困难。如果一个 model 的变化会引起另一个 model 变化,那么当 view 变化时,就可能引起对应 mode...
JVM工作原理

JVM工作原理

一、JVM生命周期Java虚拟机的生命周期 一个运行中的Java虚拟机有着一个清晰的任务:执行Java程序。程序开始执行时他才运行,程序结束时他就停止。你在同一台机器上运行三个程序,就会有三个运行中的Java虚拟机。 Java虚拟机总是开始于一个main()方法,这个方法必须是公有、返回void、直接受一个字符串数组。在程序执行时,你必须给Java虚拟机指明这个包换main()方法的类名。 Main()方法是程序的起点,他被执行的线程初始化为程序的初始线程...
C语言递归回溯法迷宫求解

C语言递归回溯法迷宫求解

本例将随机产生一个10*10的迷宫输出后,在下面输出此迷宫的解法。解法为从坐标(1,1)处进入,从(8,8,)出去,优先线路为先右后下再上最后为左。不少人求解此题时运用的栈的相关知识,本例寻找线路的过程不运用进栈出栈,而是用回溯法“抹去”判断不行的线路。话不多说,上代码。#include <stdio.h>#include <stdlib.h>#include <time.h>//包括根据当前时间...
C++ 头文件系列(array)

C++ 头文件系列(array)

注意,该头文件仅在C++11中标准才开始出现。简介与语言内置的数组一样, array类模版支持几乎所有内置数组包含的特性:顺序的(sequence)内存连续的(contiguous storage)固定大小的(fixed-size)那既然与内置数组一样,为什么还要定义这样一个模版呢?C++委员会是想造轮子吗(-_-)?当然不是!为什么需要array?array模版类实际上是内置数组的聚合,外加一层封装。正是由于这层接口,才使得数组能与STL接轨,真正成为一...
C++类型引用浅析

C++类型引用浅析

引言从最早被Bjarne Stroustrup 发明,作为C语言的扩展,到广为人知C++98标准,再到最新的C++11、C++14和C++17标准,C++一直在不断地进步、演化。面向对象、泛型编程、模板、range based for、lamnda表达式,一个又一个强大的功能概念被不断地提出并最终采纳到标准当中。C++正在向着更加现代化的方向前进。然而,也许是因为C++包容的太多的缘故,它总有一些偏僻而生涩的角落,暗藏着陷阱,时常让用户迷惑。类型引用就是这...
Java枚举增强,提供更强的类型支持

Java枚举增强,提供更强的类型支持

在最新的JEP上显示,Java枚举将增强泛型支持,并能将方法添加到单个项目上去。这两个功能可以通过一次更改进行交付,原因是它们捆绑在了一起。更改仅仅会影响到Java编译器,因此不需要运行时更改。虽然没有目标版本,但可能会在Java 10中呈现更改。一开始这个更改没有得到很大的肯定,比如杰出的Java Champions Joshua Bloch就其实用性提出了质疑。然而,通过进一步的讨论和新用例的介绍帮助它逐步获得了支持。以防你没有看到我对@BrianGo...
<< 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 >>