system

单核cpu多线程有必要吗?

こ雲淡風輕ζ 提交于 2020-04-07 01:32:08
问题分析 现代计算机一般都是多核cpu,多线程的可以大大提高效率,但是可能会有疑问,那单核CPU使用多线程是不是没有必要了,假定一种情况, web应用服务器,单核CPU、单线程 ,用户发过来请求,单个线程处理,CPU等待这个线程的处理结果返回,查询数据库,CPU等待查询结果...,只有一个线程的话,每次线程在处理的过程中CPU都有大量的空闲等待时间,那这样来说并行和串行似乎并没有体现并行的优势,因为任务的总量在那里,实际情况肯定不是这样的,即便是单核CPU,一个进程中往往也是有多个线程存在的,每个线程各司其职,CPU来调度各线程。 这里需要区分CPU处理指令和IO读取的不同,CPU的执行速度要远大于IO的过程,因此在大多数情况下多一些复杂的CPU计算都比增加一次IO要快,这一块深入理解要学习计算机原理相关的知识。 现实生活中也是有很多类似的例子,比如厨师做一道菜,买菜和买配料需要去不同的两个商店,如果这个过程只依靠他一个人来做,那耗费的总时间就是买菜再去买调料的总时间,如果有一个帮厨,那么就可以兵分两路,再来汇总结果,时间基本可以减半,厨师和帮厨就是不同的线程。 编程是高度抽象生活的一门艺术。 场景模拟 模拟单线程和多线程的效率差距,这里使用连接数据库,和读取磁盘文件来模拟IO操作,期望结果: 单线程总耗时:数据库连接耗时 + 磁盘文件读取耗时 多线程总耗时

扩展与解耦:Option模式与依赖注入结合

☆樱花仙子☆ 提交于 2020-04-06 19:10:01
参考 ABP设计UI菜单栏的源码分析,抽出了ABP这块自定义扩展的实现。在ABP的源码里面有很多地方都用到了这种设计方式,实现了用户自定义扩展。 新建一个空的asp.net core项目,新建一个类,源码: using Microsoft.Extensions.Options; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace DesignPatternSample.Infrastructure { public class LanguageInfo { public string CultureName { get; set; } public string DisplayName { get; set; } public LanguageInfo(string cultureName, string displayName) { CultureName = cultureName; DisplayName = displayName; } } public class AbpSampleOptions { public List<LanguageInfo> Languages { get; } public

JAVA03-输入和输出

≡放荡痞女 提交于 2020-04-06 14:40:18
1、输出:System.out.*   * println()是print line的缩写,表示输出并换行;   * print()表示输出不换行;   * printf()表示格式化输出,用占位符表示格式化参数; 占位符表示 占位符   说明 %d 格式化输出整数 %x 格式化输出十六进制整数 %f 格式化输出浮点数 %e 格式化输出科学计数法表示的浮点数 %s 格式化字符串 %% 表示一个%本身 2、输入: 1 package test; 2 // import 是导入某个类的语句, 3 import java.util.Scanner; 4 5 public class test01 { //类名是test01 6 public static void main(String[] args){ 7 //创建Scanner对象,传入System.in表示标准输入流。System.out表示标准输出流。 8 Scanner scanner=new Scanner(System.in); 9 //打印提示 10 System.out.print("Input your name:"); 11 //读取一行输入并获取字符串,有了Scanner对象后,读取用户输入的字符串使用scanner.nextLine(); 读取用户输入的整数,使用scanner.nextInt();

Oracle在Linux下使用异步IO配置

北城余情 提交于 2020-04-06 08:10:09
最近在测试Oracle的时候,很想测试下使用异步IO的性能。但是异步IO是需要专门配置的,否则的话,容易遇到很著名的“ORA-01578: ORACLE data block corrupted (file # 202, block # 257)”的问题。 那么什么是异步IO呢,异步IO有什么好处? 一般说来,异步I/O是和同步I/O相比较来说的,如果是同步I/O,当一个I/O操作执行时,应用程序必须等待,直到此I/O执行完. 相反,异步I/O操作在后台运行,I/O操作和应用程序可以同时运行,提高了系统性能; 使用异步I/O会提高I/O流量,如果应用是对裸设备进行操作,这种优势更加明显, 因此象 数据库 ,文件 服务器 等应用往往会利用异步I/O,使得多个I/O操作同时执行. Oracle在默认情况是不使用异步IO的。可查看参数filesystemio_options(默认值为none),有四种选项 ■ ASYNCH: enable asynchronous I/O on file system files, which has no timing requirement for transmission. ■ DIRECTIO: enable direct I/O on file system files, which bypasses the buffer cache. ■

Drawing over screen in Java

主宰稳场 提交于 2020-04-05 12:15:23
问题 I want to create an helper application in Java.. which behaves like: whenever called through a global shortcut, it can draw some text on the screen (not onto its own application window, but on top of the screen). A similar post is here, but I want to achieve this in Java. When I search something like "java draw over screen", I can only get lots of tutorials about Java2D. I want to check: 1) is it possible to draw over other applications in Java? 2) If not possible, is there any alternatives

关于.net Core在华为云的鲲鹏服务器上部署的一些坑

会有一股神秘感。 提交于 2020-04-04 04:10:44
由于鲲鹏使用的是ARM的cpu,,非x86的,我们公司买的是Centos,,由于需要在上面部署.net core 3.0/3.1的应用,,在按照官方的文章进行部署之后,会提示 FailFast: Couldn't find a valid ICU package installed on the system. Set the configuration flag System.Globalization.Invariant to true if you want to run with no globalization support. at System.Environment.FailFast(System.String) at System.Globalization.GlobalizationMode.GetGlobalizationInvariantMode() at System.Globalization.GlobalizationMode..cctor() at System.Globalization.CultureData.CreateCultureWithInvariantData() at System.Globalization.CultureData.get_Invariant() at System.Globalization.CultureData

利用PhantomJS进行网页截屏,完美解决截取高度的问题

廉价感情. 提交于 2020-04-03 20:50:40
关于PhantomJS PhantomJS 是一个基于WebKit的服务器端 JavaScript API。它全面支持web而不需浏览器支持,其快速,原生支持各种Web标准: DOM 处理, CSS 选择器, JSON, Canvas, 和 SVG。PhantomJS可以用于页面自动化,网络监测,网页截屏,以及无界面测试等。 我们还可以用它来做爬虫哦,大家知道,网页上有些数据是通过执行js渲染出来的,这样的话爬虫去抓取数据的时候就会很麻烦,PhantomJS自带WebKit内核,我们可以利用PhantomJS解决爬虫不能执行js的问题。 这次要说的是他的截图功能 下面是官网提供的 rasterize.js 截图示例: var page = require('webpage').create(), system = require('system'), address, output, size; if (system.args.length < 3 || system.args.length > 5) { console.log('Usage: rasterize.js URL filename [paperwidth*paperheight|paperformat] [zoom]'); console.log(' paper (pdf output) examples: "5in

Kuerbernetes 1.11 二进制安装

别来无恙 提交于 2020-04-03 18:37:36
Kuerbernetes 1.11 二进制安装 标签(空格分隔): k8s 2019年06月13日 本文截选 https://k.i4t.com 更多文章请持续关注https://i4t.com 什么是Kubernetes? Kubernetes是一个完备的分布式系统支撑平台。Kubernetes具有完备的集群管理能力,包括多层次的安全防护和准入机制/多租户应用支撑能力、透明的服务注册和服务发现机制、内建智能负载均衡器、强大的故障发现和自我修复功能、服务滚动升级和在线扩容能力、可扩展的资源自动调度机制,以及多粒度的资源配额管理能力。同时kubernetes提供了完善的管理工具,这些工具覆盖了包括开发、测试部署、运维监控在内的各个环节;因此kubernetes是一个全新的基于容器技术的分布式架构解决方案,并且是一个一站式的完备的分布式系统开发和支撑平台 ###Kubernetes 基础服务简介 在这里我们只是简单的介绍一下Kubernetes基础组件,后面文章会有详细介绍! </br> </br> </br> ####Kubernetes Service 介绍 Service(服务)是分布式集群架构的核心,一个Server 对象拥有如下关键特征 (1) 拥有一个唯一指定的名字(比如mysql-server) (2) 拥有一个虚拟IP (Cluster IP、Service

C#中ref与out使用小结

陌路散爱 提交于 2020-04-03 12:01:05
使用ref前需要将变量初始化,而使用out前初始化与否都可以,ref传递的是参数的地址,out则是参数的返回值,ref传递的参数在函数退出时,赋值与否,编译器都不会报错;而out传递的参数则需要在退出函数时完成赋值操作。 示例如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace MyTest { class Program { static void Method1(out int nNum) { nNum = 10; } static void Method2(ref int nNum) { nNum = 20; } static void Main(string[] args) { int n1; int n2 = 1; Console.WriteLine("n2 = {0}", n2); Method1(out n1); Method2(ref n2); Console.WriteLine("n1 = {0}", n1); Console.WriteLine("n2 = {0}", n2); Console.ReadKey(); } } } 来源: https://www

Web.config文件例子详解

我与影子孤独终老i 提交于 2020-04-03 09:09:28
【转】 http://hi.baidu.com/jinzhu160/blog/item/24003b09eca730a52fddd4e8.html 个人整理了一下,大家可以复制到一个xml文件里,便于查看 <?xml version="1.0"?> <!--注意: 除了手动编辑此文件以外,您还可以使用 Web 管理工具来配置应用程序的设置。可以使用 Visual Studio 中的“网站”->“Asp.Net 配置”选项。 设置和注释的完整列表在 machine.config.comments 中,该文件通常位于 "Windows"Microsoft.Net"Framework"v2.x"Config 中。--> <!--Webconfig文件是一个xml文件,configuration是xml文件的根节点,由于xml文件的根节点只能有一个,所以Webconfig的所有配置都是在这个节点内进行的。--> <configuration> <!--指定配置节和命名空间声明。 clear:移除对继承的节和节组的所有引用,只允许由当前section和sectionGroup元素添加的节和节组。 remove:移除对继承的节和节组的引用。 section:定义配置节处理程序与配置元素之间的关联。 sectionGroup:定义配置节处理程序与配置节之间的关联。-->