PPT模板中的背景图片如何修改
PPT模板中的背景图片如何修改 power point 2003/2012 ,打开模板后,进入"视图"菜单下的"母版",再进入下一级"幻灯片母版",单击,就可以修改模板的母版 for English version, view > slide master.
PPT模板中的背景图片如何修改 power point 2003/2012 ,打开模板后,进入"视图"菜单下的"母版",再进入下一级"幻灯片母版",单击,就可以修改模板的母版 for English version, view > slide master.
线程 进程在各自独立的空间中运行,进程之间共享数据需要用 mmap 或者进程间通信机制 (IPC) 如何在一个进程空间中执行多个线程,有些情况需要在一个进程中同时执行多个控制流程,这时候线程就派上了用场, 线程是比进程更轻量级的调度执行单位,线程的引入可以把一个进程的资源分配和执行调度分开,各个线程既可以共享进程资源(内存地址,文件IO等),又可以独立调度 (线程是CPU调度的基本单位) 。 线程共享以下进程的资源和环境 文件描述符表 (重点) 每种信号的处理方式 (SIG_IGN、SIG_DFL或者自定义的信号处理函数) 当前工作目录 用户id和组id 线程有自己的私有数据 线程id 上下文信息, 包括各种寄存器的值, 程序计数器, 栈指针 栈空间 (临时变量存储在栈空间中) (重点) errno变量 信号屏蔽字 调度优先级 Linux上线程位于libpthread共享库中,因此在编译时要加上-lpthread选项 (-l :指明所链接的库) 进程与线程的联系与区别 线程是在进程内部运行的执行分支 线程是为了资源共享 (共享地址空间) ,进程是为了资源独占 (私有地址空间) Linux下没有真正的线程,它是利用轻量级进程来代替实现的 进程是分配资源 (资源管理) 的最小单元;而线程是调度资源 (程序执行) 的最小单元 线程与线程之间是独立的 实现线程主要有三种方式: 使用内核线程实现,使用用户线程实现和使用用户线程加轻量级进程混合实现。 java thread Thread Dump日志的线程信息 "resin-22129" daemon prio=10 tid=0x00007fbe5c34e000 nid=0x4cb1 waiting on condition [0x00007fbe4ff7c000] java.lang.Thread.State: WAITING (parking) at sun.misc.Unsafe.park(Native Method) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:315) at com.caucho.env.thread2.ResinThread2.park(ResinThread2.java:196) at com.caucho.env.thread2.ResinThread2.runTasks(ResinThread2.java:147) at com.caucho.env.thread2.ResinThread2.run(ResinThread2.java:118) "Timer-20" daemon prio=10 tid=0x00007fe3a4bfb800 nid=0x1a31 in Object.wait() [0x00007fe3a077a000] java.lang.Thread.State: TIMED_WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00000006f0620ff0> (a java.util.TaskQueue) at java.util.TimerThread.mainLoop(Timer.java:552) - locked <0x00000006f0620ff0> (a java.util.TaskQueue) at java.util.TimerThread.run(Timer.java:505) 以上依次是: ...
CPU CPU执行过的指令都遵循以下的流程: CPU首先依据指令指针取得(Fetch)将要执行的指令在代码段的地址,接下来解码(Decode)地址上的指令。解码之后,会进入真正的执行(Execute)阶段,之后会是"写回"(Write Back)阶段,将处理的最终结果写回内存或寄存器中,并更新指令指针寄存器指向下一条指令。 1982年,处理器中引入了指令缓存。 1989年,i486处理器引入了五级流水线。 1995年Intel发布Pentium Pro处理器时,加入了乱序执行核心(Out-of-order core, OOO core)。 乱序执行也并不一定100%达到顺序执行代码的效果。有些时候确实需要引入内存屏障来确保执行的先后顺序。 http://www.infoq.com/cn/articles/x86-high-performance-programming-pipeline?utm_campaign=infoq_content&utm_source=infoq&utm_medium=feed&utm_term=global 乱序执行 乱序执行 vs 顺序提交 我们知道,在cpu中为了能够让指令的执行尽可能地并行起来,从而发明了流水线技术。但是如果两条指令的前后存在依赖关系,比如数据依赖,控制依赖等,此时后一条语句就必需等到前一条指令完成后,才能开始。 cpu为了提高流水线的运行效率,会做出比如: 1)对无依赖的前后指令做适当的乱序和调度;2)对控制依赖的指令做分支预测;3)对读取内存等的耗时操作,做提前预读;等等。以上总总,都会导致指令乱序的可能。 指令在cpu核内部确实是乱序执行和调度的,但是它们对外表现却是顺序提交的。 Store Buffer https://zhuanlan.zhihu.com/p/141655129 store buffer是什么 在之前的文章介绍中,我们了解到每个CPU都会有自己私有L1 Cache。从我了解的资料来说,L1 Cache命中的情况下,访问数据一般需要2个指令周期。而且当CPU遭遇写数据cache未命中时,内存访问延迟增加很多。硬件工程师为了追求极致的性能,在CPU和L1 Cache之间又加入一级缓存,我们称之为store buffer。store buffer和L1 Cache还有点区别,store buffer只缓存CPU的写操作。store buffer访问一般只需要1个指令周期,这在一定程度上降低了内存写延迟。不管cache是否命中,CPU都是将数据写入store buffer。store buffer负责后续以FIFO次序写入L1 Cache。store buffer大小一般只有几十个字节。大小和L1 Cache相比,确实是小巫见大巫了。 Invalid Queue 超线程 超线程技术就是利用特殊的硬件指令,把一个物理芯片模拟成两个逻辑处理核心,让单个处理器都能使用线程级并行计算,进而兼容多线程操作系统和软件,减少了CPU的闲置时间,提高的CPU的运行效率。这种超线程技术(如双核四线程)由处理器硬件的决定,同时也需要操作系统的支持才能在计算机中表现出来 https://www.cnblogs.com/Survivalist/p/11527949.html ‘查CPU, 核心数’ lscpu cat /proc/cpuinfo |grep name # 总核数 = 物理CPU个数 X 每颗物理CPU的核数 # 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数 # 查看物理CPU个数 cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l # 查看每个物理CPU中core的个数(即核数) cat /proc/cpuinfo| grep "cpu cores"| uniq # 查看逻辑CPU的个数 cat /proc/cpuinfo| grep "processor"| wc -l grep 'model name' /proc/cpuinfo | wc -l Intel CPU Cascade Lake 第二代智能英特尔® 至强® 可扩展处理器,前身为 Cascade Lake,搭载英特尔® C620 系列芯片组(前身为 Purley refresh), 配有内置英特尔® 深度学习加速(英特尔® DL Boost),可针对人工智能工作负载提供高性能推断和视觉。它可整合多元化的物联网工作负载、处理海量数据集并支持接近实时的交易。现在,借助英特尔® Distribution of OpenVINO™ Toolkit 等已进行 CPU 优化的软件工具套件和框架,您可以获得更好的内置深度学习功能,加快部署速度,并降低总拥有成本 (TCO)。 ...
时间复杂度, time complexity, 大O符号 时间复杂度, time complexity 大O符号, Big O notation O(log n) 时间复杂度 O(log n) 意味着什么? 原文链接: github.com 原文地址: What does the time complexity O(log n) actually mean? 原文作者: Maaz 译文出自: 掘金翻译计划 译者: cdpath 校对者: zaraguo (zaraguo), whatbeg (Qiu Hu) 预先知道算法的复杂度是一回事,了解其后的原理是另一件事情。 不管你是计算机科班出身还是想有效解决最优化问题,如果想要用自己的知识解决实际问题,你都必须理解时间复杂度。 先从简单直观的 O(1) 和 O(n) 复杂度说起。O(1) 表示一次操作即可直接取得目标元素 (比如字典或哈希表) ,O(n) 意味着先要检查 n 个元素来搜索目标,但是 O(log n) 是什么意思呢? 你第一次听说 O(log n) 时间复杂度可能是在学二分搜索算法的时候。二分搜索一定有某种行为使其时间复杂度为 log n。我们来看看是二分搜索是如何实现的。 因为在最好情况下二分搜索的时间复杂度是 O(1),最坏情况 (平均情况) 下 O(log n),我们直接来看最坏情况下的例子。已知有 16 个元素的有序数组。 ...
缓存算法, LFU, LRU, FIFO 超时剔除 - expire 主动更新 - 开发控制生命周期 扩展: 缓存污染 - 缓存污染降低了缓存的使用率,把不常用的数据读取到缓存,同时会把常用的数据移出缓存,这样会直接降低系统的数据命中率 http://www.leexiang.com/cache-algorithm 缓存算法 原文: http://www.jtraining.com/component/content/article/35-jtraining-blog/98.html 翻译: http://www.zavakid.com/25 引言 我们都听过 cache,当你问他们是什么是缓存的时候,他们会给你一个完美的答案,可是他们不知道缓存是怎么构建的,或者没有告诉你应该采用什么标准去选择缓存框架。在这边文章,我们会去讨论缓存,缓存算法,缓存框架以及哪个缓存框架会更好。 “缓存就是存贮数据 (使用频繁的数据) 的临时地方,因为取原始数据的代价太大了,所以我可以取得快一些。” 这就是 programmer one (programmer one 是一个面试者) 在面试中的回答 (一个月前,他向公司提交了简历,想要应聘要求在缓存,缓存框架,大规模数据操作有着丰富经验的 java 开发职位) 。 programmer one 通过 hash table 实现了他自己的缓存,但是他知道的只是他的缓存和他那存储着150条记录的 hash table,这就是他认为的大规模数据 (缓存 = hashtable,只需要在 hash table 查找就好了) ,所以,让我们来看看面试的过程吧。 面试官: 你选择的缓存方案,是基于什么标准的? programmer one: 呃, (想了5分钟) 嗯,基于,基于,基于数据 (咳嗽……) 面试官: excese me ! 能不能重复一下? programmer one: 数据?! 面试官: 好的。说说几种缓存算法以及它们的作用 programmer one: (凝视着面试官,脸上露出了很奇怪的表情,没有人知道原来人类可以做出这种表情 ) ...
html input <input type="value0"> hidden 定义隐藏的输入字段。 Hidden 对象代表一个 HTML 表单中的某个隐藏输入域。 这种类型的输入元素实际上是隐藏的。这个不可见的表单元素的 value 属性保存了一个要提交给 Web 服务器的任意字符串。如果想要提交并非用户直接输入的数据的话,就是用这种类型的元素。 在 HTML 表单中 标签每出现一次,一个 Hidden 对象就会被创建。 您可通过遍历表单的 elements[] 数组来访问某个隐藏输入域,或者通过使用document.getElementById()。 http://www.w3school.com.cn/jsref/dom_obj_hidden.asp http://www.wiloon.com/?p=6529
‘配置文件 HOCON’ HOCON (Human-Optimized Config Object Notation) 是一个易于使用的配置文件格式。 是由typesafe (开发scala和play framework的公司) 主导的项目 它被用于 Sponge 以及利用 Sponge API 的独立插件以储存重要的数据,比如配置或者玩家数据。HOCON 文件通常以 .conf 作为后缀名。 组成部分 一个 key 是一个键值对字符串中的前一个值 一个 value 可以是字符串、数字、对象、数组或者布尔值并紧随 key 的后面 一个 key-value separator 把键和值分离,可以是 : 或者 = 一个 comment 以 # 或者 // 开头,通常用于提供反馈或说明 示例: yellow-thing: “Sponge” 在这一示例中,key 是 yellow-thing,value 是 Sponge,而 key-value separator 是 :。 使用 HOCON HOCON 要比 JSON (JavaScript Object Notation) 更灵活,因为书写一个合法的 HOCON 的方式要更多。下面是两个合法的 HOCON 的例子。 示例一: player: { ...
系统架构图 系统架构图怎么画?系统架构图首先是人,人是构成系统架构图的核心,也就是系统架构师。IBM工程师的说明是: 架构师的主要责任是提供开发人员和项目经理之间的共用沟通媒体。他们负责让业务规则及需求与工程实践及限制相适应,以确保成功。 中文Wiki上的说明是: 系统架构师负责设计系统整体架构,从需求到设计的每个细节都要考虑到,把握整个项目,使设计的项目尽量效率高,开发容易,维护方便,升级简单。这两个部分加起来组成了系统架构师的定义。本文主要介绍系统架构图怎么画? 系统架构图怎么画?要画好系统架构图,首先明白系统架构图都有哪些,你要画的系统架构图属于?这是系统架构师工作内容与职责之基础。 http://chasefull.blog.51cto.com/6570525/1134536 http://blog.itpub.net/6517/viewspace-609654
poi获取Excel合并单元格的值 http://zhoupuyue.iteye.com/blog/1136255 /** 获取合并单元格的值 @param sheet @param row @param column @return */ public String getMergedRegionValue(Sheet sheet ,int row , int column){ int sheetMergeCount = sheet.getNumMergedRegions(); for(int i = 0 ; i < sheetMergeCount ; i++){ CellRangeAddress ca = sheet.getMergedRegion(i); int firstColumn = ca.getFirstColumn(); int lastColumn = ca.getLastColumn(); int firstRow = ca.getFirstRow(); int lastRow = ca.getLastRow(); if(row >= firstRow && row <= lastRow){ if(column >= firstColumn && column <= lastColumn){ Row fRow = sheet.getRow(firstRow); ...
Java Object Layout(jol) http://bboniao.com/openjdk/2014-06/java-object-layoutjol.htm http://openjdk.java.net/projects/code-tools/jol/ hg clone http://hg.openjdk.java.net/code-tools/jol/ jol cd jol mvn clean install pom.xml添加依赖 org.openjdk.jol jol-core 1.0-SNAPSHOT 代码 public static void main(String[] args) { int size = 10; List list = new ArrayList(size); ...
JPA的视图查询 http://blog.csdn.net/chaijunkun/article/details/8442406 本文出处: http://blog.csdn.net/chaijunkun/article/details/8442406,转载请注明。由于本人不定期会整理相关博文,会对相应内容作出完善。因此强烈建议在原始出处查看此文。 昨天晚上遇到一个需求,每天早上要生成一份报告给各个部门的Leader。实现方式基本上确定为HTML格式的电子邮件。但是数据方面犯了难。原因在于数据库中存储的数据是跨表的,而且还要做count统计,这样得到的结果就不是原生的MySQL表,我用的又是JPA技术。我们知道,使用JPA第一步就是映射实体,每一张表就至少对应一个实体 (力求严谨,因为联合主键时一张表会对应两个对象) 。可是对于灵活的查询尤其是连接查询,并不存在一个真正的表与其对应,怎么样才能解决呢?来,我们来举个"栗子" 假设我们有两张表,一张学院表,一张学生表。学院表里存着学院ID和学院名称,学生表里存着学生的基本信息,包括学号、学院ID和学生姓名 (其它较复杂的属性我们不看了) ,正如下面的建表语句所示: sql Table structure for `depts` DROP TABLE IF EXISTS `depts`; CREATE TABLE `depts` ( `deptId` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT ‘学院ID’, `deptName` varchar(50) NOT NULL COMMENT ‘学院名称’, PRIMARY KEY (`deptId`) ) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8; Records of depts INSERT INTO `depts` VALUES (‘1’, ‘哲学院’); INSERT INTO `depts` VALUES (‘2’, ‘经济学院’); INSERT INTO `depts` VALUES (‘3’, ‘法学院’); INSERT INTO `depts` VALUES (‘4’, ‘教育学院’); ...
‘JMC & Flight Recorder’ 从Java 7 Update 40之后,任务控制和Flight Recorder就将和JDK一起提供,正如InfoQ 在介绍它发布的新闻中所描述的那样。任务控制的出发点是监控、管理和排错,而Flight Recorder则是收集和评估性能数据的设施。这两个工具在JRockit中都已经存在,现在最终被移植到了HotSpot上 任务控制 任务控制提供的功能几乎和JVisual VM完全相同。这两个工具都能够连接到本地或者远程Java进程收集JMX数据。任务控制能够通过Java发现协议 (Java Discovery Protocol) 自动地发现远程运行的JVM。为了使用该功能JVM需要通过下面的参数启动: -Dcom.sun.management.jmxremote.autodiscovery=true -Dcom.sun.management.jdp.name=JVM_Name。 和JVisual VM相似的是,任务控制也有一个插件机制,能够进行定制化。但是与VisualVM不同的是,任务控制还能够在收集的数据上创建新的视图。现在能够使用的两个实验性的插件是JOverflow堆分析器 (查找低效的集合使用) 和DTrace记录器 (关联DTrace配置文件) 。任务控制拥有一个JMX浏览器作为它核心功能的一部分,同时提供了稍微更加强大的功能。例如,线程监控能够提供每一个线程的分配信息以及与堆栈跟踪相关的信息。因为任务控制是基于Eclipse平台的,所以它不仅能够作为JDK中的独立工具使用,还能够作为Eclipse插件从 Oracle任务控制更新网站上获取。 Flight Recorder Java Flight Recorder - JFR 默认被设置为关闭状态。JDK7 通过在启动应用程序的命令中加入-XX:+UnlockCommercialFeatures –XX:+FlightRecorder 参数来开启 JFR,以及相关的一些功能。但是值得注意的是这个命令只是开启了 JFR 功能,但并没有开启记录进程各种事件。 JDK 8 可能直接 通过jcmd控制JFR。 想要在JVM之外收集调试数据、特别是性能数据的工具需要实现JVMPI/JVMTI接口。虽然大部分分析工具发展的非常良好,但是让它们能够在产品中低消耗地运行依然是非常困难的。 Flight Recorder直接在JVM中实现了它自己的基于事件的监控接口,所以能够以最小的开销提供CPU时间或者对象分配分析这样的功能。例如,这个新接口允许采取线程的样本但不需要它们在还原点上,降低了开销和测量的偏差。只有少量使用字节码检测的事件对运行的代码有影响。大部分捕获技术是新的,第三方无法使用。Flight Recorder在JVM本地记录数据,但是是记录在堆外 (off-heap) ,因此它并不会影响内存特性和垃圾收集。当它被配置成持久化数据的时候,它会周期性地倾倒 (dump) 到一个文件中。 收集的数据主要包含4种类型的事件: “瞬间 (instant) “,在事件发生时进行记录;“可请求的 (requestable) “,它们会被轮循;“持续 (duration) “,表示一个时间间隔的度量;“定时的 (timed) “,它们和"持续"一样,但是对过滤数据应用了阀值。有两个预定义的配置: “连续性 (continuous) “,它的目的是始终运行;“剖析 (profiling) “,它会收集更多的数据以便进行短期分析。但是无论如何开销始终都非常低,除非明确地声明一个事件。 除了JVM生成的事件之外,还鼓励框架和应用程序服务器提供自己的事件。目前并不支持接口,但是Weblogic和Glassfish已经提供了事件,它们基本上成为了事实上的接口。Marcus Hirt在他的博客文章"使用 (非常不支持的) Java Flight Recorder API"中介绍了如何使用API。基本的步骤是扩展合适的Event类,通过添加注解表明值,然后从事件产生的代码中调用它。自定义的事件和其他事件并没有什么不同,也能够使用、创建仪表盘并随着其他的事件一起绘制。该版本包含的其他重要功能的细节信息可以从 Marcus Hirt的另一篇博客中找到。 ...
Grunt 在Javascript的开发过程中,经常会遇到一些重复性的任务,比如合并文件、压缩代码、检查语法错误、将Sass代码转成CSS代码等等。通常,我们需要使用不同的工具,来完成不同的任务,既重复劳动又非常耗时。Grunt就是为了解决这个问题而发明的工具,可以帮助我们自动管理和运行各种任务。 简单说,Grunt是一个自动任务运行器,会按照预先设定的顺序自动运行一系列的任务。这可以简化工作流程,减轻重复性工作带来的负担。 http://yujiangshui.com/grunt-basic-tutorial/ http://javascript.ruanyifeng.com/tool/grunt.html
m2ts http://baike.baidu.com/view/1951897.htm .m2ts 是一种视频文件格式 (container) 可支持多任务的影音流。 m2ts架构于MPEG transport stream 以及著名的 BDAV MPEG-2 transport stream. 这种文件格式多支持于高清的 Blu-ray Disc 与 AVCHD。DV拍摄的视频文件在DV硬盘里的AVCHD目录内显示是MTS文件,这是一种采用MPGE-4AVC/H.264格式编码的高清视频文件,通过附带的PMB转换到电脑硬盘后变为M2TS。这种优化压缩的视频格式拍摄出来的视频质量明显优于MPEG2压缩的HD高清格式第一种 把M2TS转换成HD AVI的方案,适合打算用DV拍摄电影的朋友,经常对拍摄的高清文件进行反复对比剪辑和添加各种特效的回放和使用。 第二种 把M2TS转换成为HD MPEG2 (M2T) 的方案,适合婚庆公司的高清方案。现在很多婚庆公司打着高清的幌子,用高清的机子依旧在拍摄标清视频,欺骗顾客是所谓的高清。 第三种 直接用 Vegas 8.0、Premiere CS 4.0、eduis 5.0编辑M2TS (MTS) 的家庭普通用户,虽然编辑比较卡,但是添加几个文字等等简单操作是没有问题的。 第四种 把高清M2TS (MTS) 转换成为标清的MPEG2的方案。强烈反对这种把拍摄的高清文件转换成标清的行为,这样只是浪费了时间和电费。原始机器拍摄的MPEG2文件已经足够清晰,不必多此一举。
systemd, systemctl basic, command Systemd 是 Linux 系统中最新的初始化系统 (init),它主要的设计目标是克服 sysvinit 固有的缺点,提高系统的启动速度 –now # enable and start service0 systemctl --now enable service0 Systemd 特性 系统引导时实现服务并行启动 按需启动守护进程 自动化的服务依赖关系管理 同时采用socket式与D-Bus总线式激活服务 系统状态快照 # 查看配置文件位置 systemctl status service0 # 修改配置之后重新加载配置文件 systemctl daemon-reload 配置文件主要放在 /usr/lib/systemd/system 目录, 也可能在/etc/systemd/system 目录 /lib/systemd/system:系统默认的单元文件 /etc/systemd/system:用户安装的软件的单元文件 /usr/lib/systemd/system:用户自己定义的单元文件 systemd-analyze 查看启动耗时 systemd-analyze # 查看每个服务的启动耗时 systemd-analyze blame # 显示瀑布状的启动过程流 # 打印严重消耗时间的服务树状表,按照启动消耗的时间进行排序,时间消耗越多,越排到前面。 @之后是服务激活或者启动的时间, +号之后是服务启动消耗的时间。 个人理解 @ 是从系统引导到服务启动起来的时间,是一个相对时间消耗,+是服务启动消耗的时间,是一个绝对时间消耗。 systemd-analyze critical-chain # 显示指定服务的启动流 比如 docker.service systemd-analyze critical-chain docker.service systemd 版本/version systemctl --version # 生成一张启动详细信息矢量图, .svg可以用chrome打开 sudo systemd-analyze plot > /home/wiloon/tmp/boot3.svg timedatectl # 查看当前时区设置 $ timedatectl # 显示所有可用的时区 $ timedatectl list-timezones # 设置当前时区 $ sudo timedatectl set-timezone America/New_York $ sudo timedatectl set-time YYYY-MM-DD $ sudo timedatectl set-time HH:MM:SS ## timedatectl ntp timedatectl set-ntp true loginctl # 列出当前session loginctl list-sessions # 列出当前登录用户 loginctl list-users # 列出显示指定用户的信息 loginctl show-user wiloon ## 查看 session 类型, 是 X server 还是 wayland, x or wayland loginctl show-session <SESSION_ID> -p Type cat systemctl cat bluetooth|grep Condition mask systemctl mask service0 systemctl unmask service0 check the boot performance systemd-analyze blame systemctl list-timers --all # 查看是否启用 systemctl is-enabled service0 # to see which units have failed. systemctl --failed # 退出系统并关闭电源 systemctl poweroff systemctl reboot # CPU 停止工作 $ sudo systemctl halt # 待机 systemctl suspend systemctl hibernate # 混合休眠模式 (同时休眠到硬盘并待机) : systemctl hybrid-sleep # list all service systemctl systemctl list-unit-files | grep enabled # 查看所有单元 $ systemctl list-unit-files # 查看所有 Service 单元 $ systemctl list-unit-files --type service # 查看所有 Timer 单元 $ systemctl list-unit-files --type timer 显示所有已启动的服务 systemctl list-units --type=service systemctl is-active httpd.service (仅显示是否 Active) # check service enabled systemctl list-unit-files |grep enabled # 查看服务是否开机启动 systemctl is-enabled foo.service # 禁止 foo.service 开机启动 systemctl disable foo.service # 禁止 foo.service 开机启动, 同时停掉服务 systemctl --now disable foo.service journalctl -f systemd-analyze blame systemctl --type=service systemctl status xxx systemctl status Loaded行: 配置文件的位置,是否设为开机启动 Active行: 表示正在运行 Main PID行: 主进程ID Status行: 由应用本身 (这里是 httpd ) 提供的软件当前状态 CGroup块: 应用的所有子进程 日志块: 应用的日志 # 打印完整的控制台日志, 不加 -l 的话, 默认会截断. systemctl status service0 -l http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html ...
raspberry source list vi /etc/apt/sources.list deb https://mirrors.aliyun.com/raspbian/raspbian stretch main contrib non-free rpi http://blog.csdn.net/loveaborn/article/details/12224841 https://www.raspbian.org/RaspbianMirrors https://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/
NAS, RAID http://www.zhihu.com/question/19786074 NAS - Network Attached Storage: 是一种存储类型,说白了就是主机通过Ethernet网络访问存储数据的一种类型存储。 与之相对的是 SAN (storage area network) storage: 主机通过Fibre Channel访问存储数据的一种类型存储 通过Ethernet网络访问存储数据,采用的协议当前有NFS、SMB、iSCS NFS和SMB都是基于文件系统访问的运行在ethernet网络的协议,NFS用于Unix操作系统平台 (比如: AIX,HP-UX,各种Linux) 的访问协议;SMB协议用于windows系统平台的文件系统访问协议。 而iSCSI又称为IP-SAN, 是一种基于ethernet网络下的SCSI-3协议,它是基于块设备(block)的数据访问协议。 NAS storage 支持 NFS、SMB、iSCSI 协议 更传统的性能更高,但是成本也更高的是基于 Fibre Channel 的 SCSI-3 访问协议, 它是基于块设备 (block)的数据访问协议 SAN storage 使用基于 Fibre Channel 的 SCSI-3 访问协议 NFS是一种网络文件系统,也可以理解为网络文件传输协议。就是定义文件数据如何在网络中传输,通过怎样的协议去访问网络端的文件。 NAS指的是在网络中提供文件服务的设备。 一般的NAS都支持NFS这种协议,当然还会支持CIFS、FTP等多种网络文件传输协议。 RAID RAID, 全称是 Redundant Array of Inexpensive/Independent Disks, 也就是磁盘冗余阵列, 这里的 I 有两种说法, 一种是 Inexpensive, 廉价, 另一种是 Independent, 独立。所谓 RAID 就是将多块磁盘组合在一起, 对外抽象成一个容量大, 读写速度高, 容错性好的大型磁盘。 ...
L N 火线零线? http://wenwen.sogou.com/z/q177519752.htm L代表零线,N代表火线 火线 (英文LIVE) L 一般为红色或黄色或绿色 零线 (英文NEUTRAL) N (中性线) 一般为蓝色 地线 (英文EARTH) E 一般为黄绿色或黑色
‘java 并发 测试 JCStress’ http://openjdk.java.net/projects/code-tools/jcstress/ http://www.oschina.net/translate/concurrency-torture-testing-your-code-within-the-java-memory-model https://wiki.openjdk.java.net/display/CodeTools/jcstress
golang 数据类型 常量 const ROOT_PATH = "/" Boolean 布尔值的类型为 bool,true或false,默认false var isActive bool // 全局变量声明 var enabled, disabled = true, false // 忽略类型的声明 func test() { var available bool // 一般声明 valid := false // 简短声明 available = true // 赋值操作 } 数值类型 整数类型 整数类型有无符号和带符号两种。 Go 同时支持 int 和 uint, 这两种类型的长度相同, 但具体长度取决于不同编译器的实现。 Go 里面也有直接定义好位数的类型: rune, int8, int16, int32, int64 和 byte, uint8, uint16, uint32, uint64。 整数 int8 (-128 -> 127) int16 (-32768 -> 32767) int32 (-2,147,483,648 -> 2,147,483,647) int64 (-9,223,372,036,854,775,808 -> 9,223,372,036,854,775,807) 无符号整数 uint8 (0 -> 255) uint16 (0 -> 65,535) uint32 (0 -> 4,294,967,295) uint64 (0 -> 18,446,744,073,709,551,615) 其中rune是int32的别称 byte是uint8的别称 浮点数 浮点数的类型有float32和float64两种 (没有float类型) ,默认是float64。 (IEEE-754 标准) ...