在这个多核时代,如何充分利用每个 CPU 内核是一个绕不开的话题,从需要为成千上万的用户同时提供服务的服务端应用程序,到需要同时打开十几个页面,每个页面都有几十上百个链接的 web 浏览器应用程序,从保持着几 t 甚或几 p 的数据的数据库系统,到手机上的一个有良好用户响应能力的 app,为了充分利用每个 CPU 内核,都会想到是否可以使用多线程技术.这里所说的"充分利用"包含了两个层面的意思,一个是使用到所有的内核,再一个是内核不空闲,不让某个内核长时间处于空闲状态.在 C++98 …
前言 在这个多核时代,如何充分利用每个 CPU 内核是一个绕不开的话题,从需要为成千上万的用户同时提供服务的服务端应用程序,到需要同时打开十几个页面,每个页面都有几十上百个链接的 web 浏览器应用程序,从保持着几 t 甚或几 p 的数据的数据库系统,到手机上的一个有良好用户响应能力的 app,为了充分利用每个 CPU 内核,都会想到是否可以使用多线程技术.这里所说的“充分利用”包含了两个层面的意思,一个是使用到所有的内核,再一个是内核不空闲,不让某个内核长时间处于空闲状态.在 C++98 的时…
同一接口不同的数据源: 协同进程: fdopen以文件描述符为参数: fopen和popen: 为了实现popen,必须在子进程中调用sh,因为只有shell本身即/bin/sh可以运行任意shell命令: popen的实现: 访问数据: 系统调用socket创建一个socket:   htons(16位).htonl(32位).ntohs.ntohl这些函数用于网络字节序与主机字节序转换.名字由来:host to network long. connect: 使用SIGCHLD来阻止僵尸问题:…
1. 创建/获取一个共享内存 #include <sys/mman.h> #include <sys/stat.h> /* For mode constants */ #include <fcntl.h> /* For O_* constants */ int shm_open(const char *name, int oflag, mode_t mode); 参数: name:  共享内存名字; oflag: 与open函数类型, 可以是O_RDONLY, O_WR…
package com.hanqi.yzljs; public class yzljs { public static void main(String[] args) {     final double PI = 3.1415926;     double r =3.0;     double c =2*PI*r;     double s = PI*r*r;     System.out.println("圆的周长="+c+"    圆的面积="+s); }…
类的功能 Task (任务基类) 该类主要实现一个任务类 virtual int doWork() = 0; TaskQueue (任务队列) 该类主要针对任务的存储.删除.撤回等状态做管理 ThreadPool (线程池) 整个线程池的核心业务处理类 代码 Task.h //任务的基类 #pragma once #include <time.h> #include <atomic> //任务的基类 class Task { public: //构造.析构函数 Task():_id…
环境: pc1: 10.10.72.1 (network: 10.10.72.0/22) pc2: 地址1: 10.10.136.1 (nework: 10.10.136.0/22) 地址2: 11.11.136.1 (network: 11.11.136.0/22) router1: 11.11.136.80 (network: 11.11.136.0/22) device1: 192.168.0.191 (network: 192.168.0.0/24) pc1 能访问 pc2,但不能访问r…
高性能Linux服务器 第10章    基于Linux服务器的性能分析与优化 作为一名Linux系统管理员,最主要的工作是优化系统配置,使应用在系统上以最优的状态运行.但硬件问题.软件问题.网络环境等的复杂性和多变性,使得对系统的优化变得异常复杂,如何定位性能问题出在哪个方面,是性能优化的一大难题.本章从系统人手,重点讲述由于系统软.硬件配置不当造成的性能问题,并且给出了检测系统故障和优化性能的一般方法和流程. 10.1  系统性能分析的目的 10.1.1  找到系统性能的瓶颈系统的性能是指操作…
Linux就这个范儿 第11章  独霸网络的蜘蛛神功  第11章 应用层 (Application):网络服务与最终用户的一个接口.协议有:HTTP FTP TFTP SMTP SNMP DNS表示层(Presentation Layer):数据的表示.安全.压缩.(在五层模型里面已经合并到了应用层)格式有,JPEG.ASCll.DECOIC.加密格式等会话层(Session Layer):建立.管理.终止会话.(在五层模型里面已经合并到了应用层)对应主机进程,指本地主机与远程主机正在进行的会话…
Q.1: Linux 操作系统的核心是什么? Shell Kernel Command Script Terminal 答: 内核(Kernel)是Linux 操作系统的核心.Shell是一个命令行解释器,命令(Command)是针对计算机的指令,脚本(Script)是存储在文件中的命令的集合,终端(Termial)是命令行接口. Q.2: Linus Torvalds 都创建过什么东东? Fedora Slackware Debian Gentoo Linux 答: Linux Torvald…
一.软件源维护 1. 基本操作 (1)查看源列表 sudo vim /etc/apt/sources.list deb:二进制软件安装包 deb-src:源码包 (2)备份软件源列表 sudo cp /etc/apt/source.list /etc/apt/backup_source.list (3)更新源 sudo apt-get update (4)升级源 sudo apt-get upgrade (5)通过关键字查找安装包 sudo apt-cache search [软件名] (6)安…
本篇是Linux小白最佳实践第6篇,目的就是让白菜们了解Linux网络是如何配置的.Linux系统在服务器市场占有很大的份额,尤其在互连网时代,要使用计算机就离不开网络. 想每天能听到小妞的语音播报,想学更多学校里和书本上学不大的IT技术或技能,欢迎关注微信公众号:xiniubook2008.或加微博:我的图书我做主,参加活动,免费获书. 11.3  Linux网络配置 Linux系统在服务器占用较大份额,使用计算首先要了解网络配置,本节主要介绍Linux系统的网络配置. 11.3.1  Lin…
你有没有惊讶地看到有人在Unix/ Linux中工作得非常快,噼里啪啦的敲键盘,快速的启动命令,飞快地执行命令? 在本文中,我共享了一些在Linux中快速.高效工作所遵循的Unix/ Linux命令实践. 我们所有的服务都在Linux服务器上运行,因此在Linux终端中高效.快速地工作对我们非常重要,这就是我在Linux中学习到的这些生产力技巧. 如果您的服务器也驻留在Linux机器上,并且您的一天两天的工作涉及大量的搜索和围绕UNIX命令进行的操作,那么这些技巧将为您节省大量的时间. 使用"!…
背景 之前写图像算法的程序都是在window10下使用VS编写,VS这个IDE结合“ImageWatch.vsix“插件,用于调试opencv相关的图像算法程序十分方便.后因项目需要,需将相关程序移植到Linux系统,才开始研究如何使用VS编写Linux上的Opencv程序. 一.Ubuntu安装相关库 0/先把ubuntu镜像源换成清华的 这样安装下载的速度会快些. 1/下载opencv cmake安装包 新建opencv文件夹,去opencv官网下载源文件,https://opencv.or…
作 者:道哥,10+年嵌入式开发老兵,专注于:C/C++.嵌入式.Linux. 关注下方公众号,回复[书籍],获取 Linux.嵌入式领域经典书籍:回复[PDF],获取所有原创文章( PDF 格式). 目录 目录 驱动程序 示例代码全貌 Makefile 文件 编译.测试 应用程序 示例代码全貌 编译.测试 别人的经验,我们的阶梯! 大家好,我是道哥,今天我为大伙儿解说的技术知识点是:[中断程序如何发送信号给应用层]. 最近分享的几篇文章都比较基础,关于字符类设备的驱动程序,以及中断处理程序.…
最近部署测试环境时,将测试环境ORACLE数据库从10.2.0.1升级到了10.2.0.4,顺便整理记录一下升级过程. 实验环境: 操作系统:Oracle Linux Server release 5.7 数据库:Oracle 10.2.0.1 下载解压补丁包 1: [oracle@DB-Server tmp]$ unzip p6810189_10204_Linux-x86-64.zip 2:  3: [oracle@DB-Server Disk1]$ ls 4: 10204_buglist.h…
一.Linux基础实践 1.1 1. 掌握软件源的维护方法,配置系统使用软件源镜像.掌握通过软件源来查找,安装,卸载,更新软件的方法. 这部分内容在许多学长学姐的报告里都有很详细的讲解,我在此就不赘述了. 1.2 1. 掌握Linux权限管理的概念.掌握与权限管理相关的9bit的含义与设置方法. Linux权限管理:Linux是一个多用户多任务操作系统,即可以在系统上建立多个用户,而多个用户可以在同一时间内登录同一个系统执行各自不同的任务.为保证互不影响,Linux进行文件权限划分与管理,每个用…
Linux及安全——Linux基础实践 一.实践一:掌握软件源的维护方法,配置系统使用教育网内的软件源镜像.掌握通过软件源来查找,安装,卸载,更新软件的方法. 1.软件源的维护方法 Ubuntu的软件源列表存放在/etc/apt/sourcers.list,为了安全起见,我们在对源文件进行操作之前,先将软件源备份. 打开终端,输入命令 sudo cp /etc/apt/sources.list/ etc/apt/backup_sources.list 即把软件源备份的文件backup_sourc…
原文标题:Ten C++11 Features Every C++ Developer Should Use 原文作者:Marius Bancila 原文地址:codeproject 备注:非直译,带个人感情色彩,有疑惑参看原文. This article discusses a series of features new to C++11 that all developers should learn and use. There are lots of new additions to…
dbproxy 是我业余采用C++11编写的跨平台代理服务器(并使用lua和自己的网络库),以扩展系统负载,同时使用多个后端数据库,后端数据库支持redis和ssdb. 需要由用户自己编写lua脚本控制sharding.测试效率比codis略高,且占用更少的CPU和内存. 下面是github上的readme,我直接拷贝下来: 介绍 dbproxy是一个采用C++11编写的代理服务器,支持redis和 ssdb数据库. 其主要用于扩容和提高系统负载.使用lua控制sharding,把不同的key-…
这里,我们不会为真实的硬件设备编写内核驱动程序.为了方便描述为Android系统编写内核驱动程序的过程,我们使用一个虚拟的硬件设备,这个设备只有一个4字节的寄存器,它可读可写.想起我们第一次学习程序语言时,都喜欢用“Hello, World”作为例子,这里,我们就把这个虚拟的设备命名为“hello”,而这个内核驱动程序也命名为hello驱动程序.其实,Android内核驱动程序和一般Linux内核驱动程序的编写方法是一样的,都是以Linux模块的形式实现的,具体可参考前面Android学习启动篇…
一.Linux device driver 的概念 系统调用是操作系统内核和应用程序之间的接口,设备驱动程序是操作系统内核和机器硬件之间的接口.设备驱动程序为应用程序屏蔽了硬件的细节,这样在应用程序看来,硬件设备只是一个设备文件,应用程序可以象操作普通文件一样对硬件设备进行操作.设备驱动程序是内核的一部分,它完成以下的功能: 1. 对设备初始化和释放. 2. 把数据从内核传送到硬件和从硬件读取数据. 3. 读取应用程序传送给设备文件的数据和回送应用程序请求的数据. 4. 检测和处理设备出现的错误…
一.引言         学习Redis也有一段时间了,感触还是颇多的,但是自己很清楚,路还很长,还要继续.上一篇文章简要的介绍了如何在Linux环境下安装Lua,并介绍了在Linux环境下如何编写Lua脚本和运行.由于我们这个系列是以Redis为主,所以也介绍了Redis和Lua如何进行整合.运行.        在Lua脚本中有一个很重要的数据类型,那就是table类型,大家可以把Lua的table类型暂时理解为数组,只是Lua的table类型的下标可以是数字,可以是字符,除了(nil)类型…
Linux基础实践 1.1 应用安装 要求:掌握软件源的维护方法,配置系统使用软件源镜像.掌握通过软件源来查找,安装,卸载,更新软件的方法 备份原地址列表文件:sudo cp /etc/apt/sources.list /etc/apt/sources.list.old 修改列表文件:sudo gedit /etc/apt/sources.list 源: deb http://mirrors.163.com/ubuntu/ trusty main multiverse restricted un…
Linux课题实践一 20135318 刘浩晨 1.1应用安装 (1)掌握软件源的维护方法,配置系统使用软件源镜像  删除过期或者重复的软件包:进入”系统设置“-”软件和更新”-”ubuntu软件“-“下载自…“-”其他站点“-”选择下载服务器“(一般使用163.sohu等)然后进行认证,然后关闭,选择”重新载入“然后自动下载即可 手动配置软件源镜像:首先备份源地址列表文件:sudo cp /etc/apt/sources.list /etc/apt/sources.list.old,然后进行修…
error: Gitlab "bundler: command not found: unicorn_rails"soluton: cd /home/git/gitlab git checkout -b tmp vi Gemfile and Gemfile.lock , change like: http://stackoverflow.com/questions/22825497/installing-gitlab-missing-modernizer --> Step1: I…
我用的Linux自带的是Python3.5版本,运行pip3 install PyQt5, 下载的是PyQt5.11,运行PyQt5程序会报错: ImportError: /usr/local/lib/python3.5/dist-packages/PyQt5/QtCore.so: undefined symbol: PySlice_AdjustIndices 解决方法: 删除PyQt5.11 pip3 uninstall PyQt5 重新安装PyQt5.10版本,就没有错误了 pip3 ins…
Linux学习笔记(11)linux网络管理与配置之一——配置路由与默认网关,双网卡绑定(5-6) 大纲目录 0.常用linux基础网络命令 1.配置主机名 2.配置网卡信息与IP地址 3.配置DNS客户端 4.配置名称解析顺序 5.配置路由与默认网关 6.双网卡绑定 5.配置路由与默认网关 5.1 临时: [1]临时网关配置:route add/del default gw 10.10.10.1 [2]临时路由配置: (1)通过网卡设备出去:route add/del -net 10.10.1…
Linux课程---11.Linux中软件安装和调试 一.总结 一句话总结: 启动过程:1.安装软件,2.修改配置文件,3.启动服务 查看过程:4.查看进程,5.查看端口 关闭过程:6.关闭软件,7.关闭进程 软件安装和调试: 1.安装软件 rpm -ivh httpd-2* 2.修改配置文件 vi /etc/httpd/conf/httpd.conf Listen 88888 3.启动服务 service httpd restart 4.查看进程 pstree | grep httpd 5.查…