archlinux install

archlinux install download iso https://mirrors.tuna.tsinghua.edu.cn/archlinux/iso/ curl -O https://mirrors.tuna.tsinghua.edu.cn/archlinux/iso/2025.10.01/archlinux-2025.10.01-x86_64.iso Ventoy, usb-stick yay -S ventoy-bin copy to ventoy usb partition 用 ventoy U 盘引导系统 启动 sshd 设置 root 密码 进入 root@archiso 之后先设置 root 密码 passwd 连无线网 # 20250501, archlinux 的 iso 里默认已经安装 wpa_supplicant # start systemd-networkd and systemd-resolved service systemctl start systemd-networkd systemctl start systemd-resolved.service # wifi network 有默认配置 /etc/systemd/network/wifi.network # 设置 wifi 密码, 注意后面的 wlp3s0 替换成无线网卡的名字, 用 `ip a` 看一下 # psk 里写明文的密码 cat /etc/wpa_supplicant/wpa_supplicant-wlp3s0.conf network={ ssid="w1100n" psk="wifi_password_0" } sudo systemctl start wpa_supplicant@wlp3s0 systemctl start sshd 在 virtual box 里安装得设置一下端口映射 ...

2015-06-25 · 4 min · 655 words · -

windows netsh 端口转发

windows netsh 端口转发 http://aofengblog.blog.163.com/blog/static/631702120148573851740/ 在windows上用netsh动态配置端口转发 下载LOFTER客户端 使用多个虚拟机,将开发环境和工作沟通环境分开 (即时通,办公系统都只能在windows下使用…) ,将开发环境的服务提供给外部访问时,需要在主机上通过代理配置数据转发。 VirtualBox提供了端口转发的功能,可以将主机中的端口转发至指定IP的虚拟机中的端口,支持TCP协议和UDP协议。但有一个缺点: 需要重启虚拟主机才生效。 其实在Windows中,如果想做端口转发,可以使用Windows自身携带的服务:netsh,使用netsh interface portproxy指令,新增和修改配置信息后,即时生效,并且重启系统后配置信息仍然存在,非常方便。适用于WindowsXP、Windows7,其他的版本还没有试过,支持IPv4和IPv6,但是只支持TCP协议。 新增端口转发 命令 netsh interface portproxy add v4tov4 - 添加通过 IPv4 的 IPv4 和代理连接到的侦听项目。 netsh interface portproxy add v4tov6 - 添加通过 IPv6 的 IPv4 和代理连接到的侦听项目。 netsh interface portproxy add v6tov4 - 添加通过 IPv4 的 IPv6 和代理连接到的侦听项目。 netsh interface portproxy add v6tov6 - 添加通过 IPv6 的 IPv6 和代理连接到的侦听项目。 命令语法 以netsh interface portproxy add v4tov4为例,其语法格式如下: netsh interface portproxy add v4tov4 [listenport=]| ...

2015-06-13 · 2 min · 399 words · -

TypeScript

TypeScript TypeScript是一种由微软开发的自由和开源的编程语言。它是JavaScript的一个超集,兼容JavaScript,可以载入JS代码然后运行。 它与JavaScript相比进步的地方包括: 加入注释,让编译器理解所支持的对象和函数,编译器会移除注释,不会增加开销。 而JavaScript只是一个脚本语言,并非设计用于开发大型 Web 应用,JavaScript 没有提供类和模块的概念,而TypeScript扩展实现了这些特性。 它扩展了 JavaScript 的语法,因此现有的JavaScript代码可与其代码一起工作无需任何修改,它通过类型注解提供编译时的静态类型检查。TypeScript可处理已有的JavaScript代码,并只对其中的TypeScript代码进行编译。 TypeScript 最大的特点就是类型化,因此才叫做TypeScript。比起弱类型的JavaScript,类型化的TypeScript显得更加容易维护。 要在应用中使用 TypeScript 必须先编译,编译的结果是生成 js 文件,你可通过 TypeScript 编译器 tsc 命令来完成这个过程。如要编译test.ts(TypeScript文件的扩展名为.ts),可用如下命令: tsc test.ts 编译完成后就会在当前目录生成名为test.js的文件。 注: 不要将TypeScript看作是一门新的语言,它只是为了提升JavaScript代码质量的一个工具,最终TypeScript仍然要编译成JavaScript。 yarn global add typescript greeter.ts function greeter(person) { return “Hello, " + person; } let user = “Jane User”; document.body.textContent = greeter(user); ```bash tsc greeter.ts <!DOCTYPE html> <html> <head><title>title0</title></head> <body> <script src="greeter.js"></script> </body> </html> let num: number = 100.001; let str: string = num.toFixed(2); ...

2015-06-13 · 1 min · 91 words · -

临界区, 竞态条件

临界区, 竞态条件 临界区是程序中使用临界资源的一段程序 在同步的程序设计中,临界区 (Critical section) 指的是一个访问共享资源 (例如: 共享设备或是共享存储器) 的程序片段,而这些共享资源又无法同时被多个线程访问的特性。 当有线程进入临界区段时,其他线程或是行程必须等待 (例如: bounded waiting 等待法) ,有一些同步的机制必须在临界区段的进入点与离开点实现,以确保这些共享资源是被异或的使用,例如: semaphore。 只能被单一线程访问的设备,例如: 打印机。 临界区 Critical section 保证在某一时刻只有一个线程能访问数据的简便方法,在任意时刻只允许一个线程对资源进行访问。如果有多个线程试图同时访问临界区,那么在有一个线程进入后,其他所有试图访问临界区的线程将被挂起,并一直持续到进入临界区的线程离开。临界区在被释放后,其他线程可以继续抢占,并以此达到用原子方式操作共享资源的目的. 临界区指的是一个访问共用资源 (例如: 共用设备或是共用存储器) 的程序片段,而这些共用资源又无法同时被多个线程访问的特性。当有线程进入临界区段时, 其他线程或是进程必须等待 (例如: bounded waiting 等待法) ,有一些同步的机制必须在临界区段的进入点与离开点实现,以确保这些共用资源是被互斥获得使用, 竞态条件与临界区 在同一程序中运行多个线程本身不会导致问题,问题在于多个线程访问了相同的资源。如,同一内存区 (变量,数组,或对象) 、系统 (数据库,web services 等) 或文件。实际上,这些问题只有在一或多个线程向这些资源做了写操作时才有可能发生,只要资源没有发生变化,多个线程读取相同的资源就是安全的。 多线程同时执行下面的代码可能会出错: public class Counter { protected long count = 0; public void add(long value){ this.count = this.count + value; } } 想象下线程 A 和 B 同时执行同一个 Counter 对象的 add()方法,我们无法知道操作系统何时会在两个线程之间切换。JVM 并不是将这段代码视为单条指令来执行的,而是按照下面的顺序: 从内存获取 this.count 的值放到寄存器 ...

2015-06-11 · 1 min · 134 words · -

html input

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

2015-06-10 · 1 min · 26 words · -

javascript 序列化与反序列化

javascript 序列化与反序列化 http://blog.csdn.net/zhangquanok/article/details/13002771 var objP = {}; objP.id = 1; objP.name = 2; objP.sex = 32; JSON.stringify(objP)//序列化 JSON.parse(e); //JSON.parse(e)反序列化

2015-06-10 · 1 min · 19 words · -

配置文件 HOCON

‘配置文件 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: { ...

2015-06-10 · 1 min · 113 words · -

系统架构图

系统架构图 系统架构图怎么画?系统架构图首先是人,人是构成系统架构图的核心,也就是系统架构师。IBM工程师的说明是: 架构师的主要责任是提供开发人员和项目经理之间的共用沟通媒体。他们负责让业务规则及需求与工程实践及限制相适应,以确保成功。 中文Wiki上的说明是: 系统架构师负责设计系统整体架构,从需求到设计的每个细节都要考虑到,把握整个项目,使设计的项目尽量效率高,开发容易,维护方便,升级简单。这两个部分加起来组成了系统架构师的定义。本文主要介绍系统架构图怎么画? 系统架构图怎么画?要画好系统架构图,首先明白系统架构图都有哪些,你要画的系统架构图属于?这是系统架构师工作内容与职责之基础。 http://chasefull.blog.51cto.com/6570525/1134536 http://blog.itpub.net/6517/viewspace-609654

2015-06-09 · 1 min · 8 words · -

移动平均线交叉交易策略

移动平均线交叉交易策略 移动平均线交叉外汇交易策略 — 是一种简单的交易系统,基于两个标准指标的交叉 —一条快的EMA (指数移动平均线) 和一条慢的EMA。您也可以免费使用我们的可调整移动平均线交易智能交易在MetaTrader平台上自动进行交易。特点非常简单的跟随策略。使用简单的指标。设置止损容易。移动平均线具有延迟性 —延迟可能达到10天。市场清淡时无效。策略设置可用于任何货币对和时间框架。往图表上添加一条指数移动平均线,时段设置为9,适用收盘价,设置为红色 (可选) — 这是一条快的移动平均线 (FMA) 。往图表上再添加一条指数移动平均线,时段设置为14,适用收盘价,设置为蓝色 (可选) — 这是一条慢的移动平均线 (SMA) 。进场条件 当FMA自下方与SMAj交叉时,进场做多。 当FMA自上方与SMA交叉时,进场做空。离场条件 多头止损应设置在发生交叉前上一个蜡烛台的低位处。空头止损设置在交叉前上一个蜡烛台的高位处。 止盈应根据止损进行设置,不应低于止损。建议设置为止损的1.5倍或2倍。 如果在触及止损或止盈之前,发生再次交叉,关闭当前头寸。 http://www.earnforex.com/cn/%E5%A4%96%E6%B1%87%E7%AD%96%E7%95%A5/%E7%A7%BB%E5%8A%A8%E5%B9%B3%E5%9D%87%E7%BA%BF%E4%BA%A4%E5%8F%89%E7%AD%96%E7%95%A5 http://www.voidcn.com/blog/zccz14/article/p-6305201.html https://www.zhihu.com/question/23245754

2015-06-08 · 1 min · 26 words · -

外汇EA

外汇EA http://foreign.ymq123.com/showtopic-38641.aspx 什么是外汇EA 中文全名叫智能交易系统,是通过电脑模拟人为操作来完成交易。交易员通过将交易思路进行编程,从而使电脑按照交易员的交易思路进 行无心态干扰的交易过程。 为什么要使用EA?EA使用的好处在哪里? EA最大的优势就是它的执行力,EA是机器,所以不会有情绪,不会因为亏损了懊恼或则盈利了骄傲而失去控制,不少都有这样的经历吧: 一次冲动或对市场的不服就失去几个月甚至几年的所有利润,但是EA不会。 EA还可以代替交易员进行操作,从而解放了交易员的交易时间,减少交易员的疲劳程度,杜绝了交易员某些人为的心态问题,从而能稳定的替代交易员完成交易。 EA是神话吗?有好的EA吗?有的,现在在市场上流通了大量的EA,但是有人说99%的都是垃圾EA;我认为是错误的,99%的EA都曾经工作过一段时间,至少在短期内它是可以盈利的,认为EA垃圾的原因很多;有可能是你根本就不懂得如何使用它,还有可能是你使用的过期版本,还有可能EA本来就是为短期市场特性而设计的。因为EA是人写的,你找那些**版EA没有技术人员的支持,又不懂得使用,以为一挂上去就自动赚钱,当然垃圾了,天下没有一劳永逸的事情,再完美的EA如果失去人的监控也会出错的。所以为什么绝大部分EA市面上测试一段时间就会消失?; i& ?6 A2 u; R0 h5 B3 G/ q ~ NEA不是圣杯,不是ATM机,不要梦想那一点点钱翻几倍几十倍,资本市场永远是钱多好赚钱,以小博大是不现实的,交易商提供高杠杆不是让你以小博大的,不过为了提供你的资金利用率而已。 EA的优势就在于一种盈利的交易策略它能执行下去,不会因为恐惧和贪婪而犯错。 在这里,我就把我多年的心血给大家晒晒单,我的这款EA叫: money_up。外汇智能交易软件Money_Up,于2009年开始研究,历经3年时间2011年4月份正式完成。如果有朋友感兴趣的话就加我球球吧: 壹⑥九叁六伍⑥伍壹六 。我在淘宝网上有售。Money_Up外汇智能交易软件用于欧元五分钟时间图表,浓缩三套做单策略 剥皮策略: 以某种长期均线作为趋势线,以震荡指标作为进出信号,盈利20点,止损300点,动态指标监控移动止损。不过测试发现十年只有1次止损,大部分都是由信号进出。 突破策略,简单点说就是构筑一个ATR通道,当价格突破通道的时候开仓,500点止盈,初始35点止损,此系统优秀之处在于有一个动态的跟踪系统可以适应趋势的变化。 l 反转策略,以一个布林带作为主要指标,上下边界附近做区间操作,160点止盈,70点止损,有跟踪止损。值得注意的是,这系统仅仅在GMT22-0点的时段开仓。 Money_Up是一款以安全性,稳定性为设计理念,以盈利最大化为设计目标的外汇智能EA软件。通过5年(2006 - 2010)复盘测试,从1000元做到1155万元,测试数据有些夸张,但证明稳定获利是真实成功的,而且绩效非常可观,本公司敢保证的是复盘测试和挂机测试出来的结果是一样的,至于未来能不能赢钱,这个谁也说不清楚,本公司敢保证的是复盘测试和挂机测试出来的结果是一样的,至于未来能不能赢钱,这个谁也说不清楚。本EA使用于欧美5分钟图表,MT4平台,对点差没有限制,资金量500美元即可运行。 那么为什么好的EA不能随便公开? [第一,毕竟是作者劳动成果,它结合了交易员太多的交易精,保护版权是对作者的尊重; 第二,公开了会产生交易者效应,因为这个市场是零和游戏,一旦公开了策略,大家都不会盈利。就像海龟法则,多么简单的策略: 超过20天最高点买,跌过10天最低点卖。您觉得它神秘吗?但是它确确实实在80年代给海龟们带来了巨大财富。然而,当它的策略公开后,便不那么有效了,虽然还是盈利的,不过效果是大打折扣,这就是交易者效应。 不过通常来说,你的EA再好,也好不会影响到整个市场,不太容易有海龟法则那样的威力了。而且现在交易系统越来越多,交易方法也花样百出,科技日新月异;和80年代已经不可同日而语。所以现在是交易系统和交易系统斗。如果您没有一套能盈利的交易系统 (无论您是自动还是非自动) ,那么您就是输在起跑线上了。

2015-06-04 · 1 min · 41 words · -

移动平均线 均线 Moving Average MA

‘移动平均线 均线 Moving Average MA’ SMA,简单移动平均线 EMA,指数平滑移动平均线 SMMA,平滑移动平均线,它的目的是为了让线条更加平滑些。 LWMA,线性加权移动平均线,因为MA是一种滞后指标,为了改善这种现象,为了提高一点滞后性就有了LWMA指标,给最近的价格更高的权重。 移动平均线的不足之一在于它们滞后于市场,因此并不一定能作为趋势转变的标志。为解决这一问题,使用5或10天的较短周期移动平均线将比40或200天的移动平均线更能反映出近期价格动向。 或者,移动平均线也可以通过组合两种不同时间跨度的平均线加以使用。无论使用5和20天的移动平均线,还是40和200天的移动平均线,买入信号通常在较短期平均线向上穿过较长期平均线时被查觉。与此相反,卖出信号会在较短期平均线向下穿过较长周期平均线时被提示。 有三种在数学上不同的移动平均线: 简单算术移动平均线;线型加权移动平均线;以及平方系数加权平均线。其中,最后一种是首选方法,因为它赋予最近的数据更多权重,并且在金融工具的整个周期中考虑数据。 移动平均线,Moving Average,简称MA,原本的意思是移动平均,由于我们将其制作成线形,所以一般称之为移动平均线,简称均线。它是将某一段时间的收盘价之和除以该周期。 比如日线MA5指5天内的收盘价除以5 。 移动平均线是由著名的美国投资专家Joseph E.Granville (葛兰碧,又译为格兰威尔) 于20世纪中期提出来的。均线理论是当今应用最普遍的技术指标之一,它帮助交易者确认现有趋势、判断将出现的趋势、发现过度延生即将反转的趋势。移动平均线,Moving Average,简称MA,原本的意思是移动平均,由于我们将其制作成线形,所以一般称之为移动平均线,简称均线。它是将某一段时间的收盘价之和除以该周期。 比如日线MA5指5天内的收盘价除以5 。 移动平均线是由著名的美国投资专家Joseph E.Granville (葛兰碧,又译为格兰威尔) 于20世纪中期提出来的。均线理论是当今应用最普遍的技术指标之一,它帮助交易者确认现有趋势、判断将出现的趋势、发现过度延生即将反转的趋势。 【转载】移动平均线SMA/EMA/SMMA/LWMA (2009-07-09 23:28:41) 转载▼ 标签: 杂谈 分类: 黄金投资技术分析学习 http://ta.mql4.com/cn/indicators/trends/moving_average 移动平均线指标显示某一个时间段平均工具性价格的数值。当我们计算移动平均线的时候,其实我们是在平均这段时间内工具性价格的数值。由于价格的变化,移动平均线指标要么增加要么减少。 有四种不同类型的移动平均线: 简单 (也被成为算术) 移动平均线, 指数移动平均线, 通畅移动平均线, 线形权数移动平均线。我们可以为任何一套顺序排列的数据来进行移动平均线的计算,包括开市和闭市价格,最高和最低价格,交易量和任何其他的指标。同时有两条移动平均线被使用的情况比较普遍。 只有在一种情况下,不同种类的移动平均线会产生相当大的分离,就是当权数系数不同的情况下 (该系数是被安排到最近的一个数据里的) ,我们在讨论简单移动平均线的时候,我们研究的时间段的所有价格都在数值上相等。移动平均线的数值更趋向于最近的价格。 解释价格平均移动最普遍的方法是就是将其动量与价格运动相比较。当工具性价格上升到其移动平均线之上时,购买信号出现了;当价格下落到移动平均线下面时,我们所得到的是一个卖出信号。 这种基于移动平均线的贸易体系,并不是设计用来提供给我们一个通道的: 市场处于低潮期的时候让我们进入,在进入高峰期的时候让我们出来。根据下列市场趋势的变化,它可以使得我们作出相应的行动:一旦价格探底,我们就开始买进;一旦价格攀升,我们就开始卖出。 移动平均线也可被运用于各种指标。那就是移动平均指标的解释和价格移动平均线解释相似的地方。如果指标上升到移动平均线上面的时候,那就意味着上升的指标运动还将继续。指标若是低于移动平均线,那就表明指标有可能继续下滑。 这是图表上移动平均线: 简单移动平均线 (SMA): Simple Moving Average 指数移动平均线 (EMA): Exponential MA 通畅移动平均线 (SMMA): Smoothed MA 线性权数移动平均线 (LWMA): Linear Weighted MA 加权移动平均线 (Weighted Moving Average,WMA) : 指计算平均值时将个别数据乘以不同数值。在技术分析中,n日WMA的最近期一个数值乘以n、次近的乘以n-1,如此类推,一直到0。 ...

2015-06-04 · 1 min · 156 words · -

HTML id、name、class

HTML id、name、class http://blog.csdn.net/ithomer/article/details/8080912 HTML中id、name、class 区别 分类: Script2012-10-17 13:53 27969人阅读 评论(7) 收藏 举报 classhtmlcssinput服务器applet HTML 中 id与name 区别 一个name可以同时对应多个控件,比如checkbox和radio 而id必须是全文档中唯一的 id的用途 id是HTML元素的Identity,主要是在客户端脚本里用。 label与form控件的关联,如 My Input for属性指定与label关联的元素的id,不可用name替代 脚本中获得对象: IE支持在脚本中直接以id (而不是name) 引用该id标识的对象。 例如上面的input,要在脚本中获得输入的内容,可以直接以 MyInput.value来获得。如果用DOM的话,则用document.getElementById(“MyInput”).value; 如果要用name的话,通常先得到包含控件的form,例如document.forms[0],然后从form再引用name,注意这样得到的是经过计算后将发送给服务器的值 name的用途 主要是用于获取提交表单的某表单域信息, 作为可与服务器交互数据的HTML元素的服务器端的标示,比如input、select、textarea、框架元素(iframe、frame、 window的名字,用于在其他frame或window指定target )和button等,这些元素都与表单(框架元素作用于form的target)提交有关,浏览器会根据name来设定发送到服务器的request, 在表单的接收页面只接收有name的元素, 所以赋ID的元素通过表单是接收不到值的。 我们可以在服务器端根据其Name通过Request.Params取得元素提交的值。在form里面,如果不指定name,就不会发送到服务器端。 HTML元素Input type=‘radio’分组,我们知道radio button控件在同一个分组类,check操作是mutex的,同一时间只能选中一个radio,这个分组就是根据相同的name属性来实现的。 建立页面中的锚点,我们知道link是获得一个页面超级链接,如果不用href属性,而改用name,如: ,我们就获得了一个页面锚点,如Experience (XP),详见 示例 作为对象的Identity,如Applet、Object、Embed等元素。比如在Applet对象实例中,我们将使用其name来引用该对象。 在IMG元素和MAP元素之间关联的时候,如果要定义IMG的热点区域,需要使用其属性usemap,使usemap="#name"(被关联的MAP元素的Name)。 某些特定元素的属性,如attribute,meta和param。例如为Object定义参数或Meta中。 ...

2015-06-02 · 1 min · 190 words · -

possibly; probably; perhaps; maybe

possibly; probably; perhaps; maybe http://web.etiantian.com/staticpages/study/question/question_701044.htm 这几个副词都有"可能"的意思,用法如下: (1) possible"或许;也许",所指的可能性较小,为加强语气,可与can或could连用;与may连用,表示的可能性更小。例如: It may possibly be true.也许是真的。 Please call me as soon as you possibly can.请尽快给我打电话。 Could you possibly tell me the answer﹖你能告诉我这个答案吗? (2)probably"很有可能;十之八九",其语义较强,可能性较大。在否定句中,probably不能紧跟在否定词之后。例如: It will probably be fine tomorrow.明天大概会是晴天。 译: 她大概不会来这里。 正: Probably she won’t come here. 正: She probably won’t come here. 正: She won’t come here probably. 误: She won’t probably come here. (3) perhaps"或许",含有"可能这样,也可能不这样"之意,其含义和用法与maybe一样,多用于口语。maybe多用于美国英语。在这几个单词中,语义最强的是probably,其次是perhaps和maybe,最弱的是possibly。例如: Perhaps we will be late for work.或许我们上班会迟到。 ...

2015-06-02 · 1 min · 77 words · -

Runtime

Runtime http://blog.csdn.net/csh624366188/article/details/6684327 http://lavasoft.blog.51cto.com/62575/15565 Runtime.getRuntime()可以取得当前JVM的运行时环境,这也是在Java中唯一一个得到运行时环境的方法。 Runtime上其他大部分的方法都是实例方法,也就是说每次进行运行时调用时都要用到getRuntime方法。 Runtime中的exit方法是退出当前JVM的方法,估计也是唯一的一个吧,因为我看到System类中的exit实际上也是通过调用Runtime.exit()来退出JVM的,这里说明一下Java对Runtime返回值的一般规则 (后边也提到了) ,0代表正常退出,非0代表异常中止,这只是Java的规则,在各个操作系统中总会发生一些小的混淆。 Runtime.addShutdownHook()方法可以注册一个hook在JVM执行shutdown的过程中,方法的参数只要是一个初始化过但是没有执行的Thread实例就可以。 (注意,Java中的Thread都是执行过了就不值钱的哦) 说到addShutdownHook这个方法就要说一下JVM运行环境是在什么情况下shutdown或者abort的。文档上是这样写的,当最后一个非精灵进程退出或者收到了一个用户中断信号、用户登出、系统shutdown、Runtime的exit方法被调用时JVM会启动shutdown的过程,在这个过程开始后,他会并行启动所有登记的shutdown hook (注意是并行启动,这就需要线程安全和防止死锁) 。当shutdown过程启动后,只有通过调用halt方法才能中止shutdown的过程并退出JVM。 那什么时候JVM会abort退出那?首先说明一下,abort退出时JVM就是停止运行但并不一定进行shutdown。这只有JVM在遇到SIGKILL信号或者windows中止进程的信号、本地方法发生类似于访问非法地址一类的内部错误时会出现。这种情况下并不能保证shutdown hook是否被执行。 常见的应用 内存管理: Java提供了无用单元自动收集机制。通过totalMemory()和freeMemory()方法可以知道对象的堆内存有多大,还剩多少。 Java会周期性的回收垃圾对象 (未使用的对象) ,以便释放内存空间。但是如果想先于收集器的下一次指定周期来收集废弃的对象,可以通过调用gc()方法来根据需要运行无用单元收集器。一个很好的试验方法是先调用gc()方法,然后调用freeMemory()方法来查看基本的内存使用情况,接着执行代码,然后再次调用freeMemory()方法看看分配了多少内存。下面的程序演示了这个构想。 //此实例来自《java核心技术》卷一 class MemoryDemo{ public static void main(String args[]){ Runtime r = Runtime.getRuntime(); long mem1,mem2; Integer someints[] = new Integer[1000]; System.out.println(“Total memory is : " + r.totalMemory()); mem1 = r.freeMemory(); System.out.println(“Initial free is : " + mem1); r.gc(); mem1 = r.freeMemory(); System.out.println(“Free memory after garbage collection : " + mem1); ...

2015-06-01 · 2 min · 255 words · -

RDP Session Disconnected

RDP Session Disconnected To resolve Right click on “My Computer” and select “Properties”. Click on “Remote settings”. Click on the “Remote” tab. Under “Remote Desktop” select the radio button next to “Allow connections from computers running any version of Remote Desktop (less secure)”. Click “OK” to Save. Also check to make sure you don’t have any sort of VNC Server installed (like TightVNC, Ultra VNC, RealVNC, etc). If you do then you should uninstall it to ensure that RDP connections work properly.

2015-06-01 · 1 min · 82 words · -

nj4x java config

nj4x java config nj4x requires jdk 1.7 !!! download jfx-2.3.8.7z from http://www.nj4x.com/downloads unpack clear the config file folder under C:\Users\user0\jfx_term terminal server找不到配置文件时会提示指定mt4.exe open nj4x_home/bin/run_terminal_server.exe ( if errordownload and install vcredist_x86.ext ) select/config mt4_home path run java code —– end —– copy nj4x-2.3.8/examples/experts/ into mt4 foolder C:\Program Files\MetaTrader 4\MQL4\Experts If you are using Windows XP, you have to rename mt45if_xp.dll to mt45if.dll open mt4 terminal.exe click menu view>strategy tester select jfx.ex4 for export advisor, open export properties ...

2015-05-31 · 1 min · 77 words · -

archlinux 64位上运行32位程序

archlinux 64位上运行32位程序 http://blog.csdn.net/cnsword/article/details/7447670 archlinux纯64位版是没有办法直接运行32位程序的。因为缺少最主要的glibc的32位版本的支持。 要想使archlinux64支持32位程序,只需要将32位的源添加进来就可以。 /etc/pacman.conf中增加 print? [multilib] Include = /etc/pacman.d/mirrorlist 如果是chakra需要将repo的名称修改为lib32和lib32-test print? [lib32] Include = /etc/pacman.d/mirrorlist 这样 这样通过pacman安装lib32-glibc库就能提供基本的32位支持了,如果需要32位桌面环境库,安装lib32-gtk或者lib-kde就可以了。看出规律来了吧,这些库的前缀都是lib32-。下一步就可以自由的使用了。

2015-05-29 · 1 min · 19 words · -

poi获取Excel合并单元格的值

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); ...

2015-05-28 · 1 min · 209 words · -

MySQL 字典表

MySQL 字典表 select column_key,COLUMN_NAME,column_type,is_nullable,column_comment from INFORMATION_SCHEMA.Columns where table_name=" and table_schema=" 显示数据库列表 MySQL>show databases; -- 说明: 其中字典库是: information_schema,其中常用字典表: INFORMATION_SCHEMA.SCHEMATA -数据库中所有数据库信息 INFORMATION_SCHEMA.TABLES -存放数据库中所有数据库表信息 INFORMATION_SCHEMA.COLUMNS -所有数据库表的列信息 INFORMATION_SCHEMA.STATISTICS -存放索引信息 INFORMATION_SCHEMA.USER_PRIVILEGES - INFORMATION_SCHEMA.SCHEMA_PRIVILEGES INFORMATION_SCHEMA.TABLE_PRIVILEGES INFORMATION_SCHEMA.COLUMN_PRIVILEGES INFORMATION_SCHEMA.CHARACTER_SETS INFORMATION_SCHEMA.COLLATIONS INFORMATION_SCHEMA.COLLATION_CHARACTER_SET_APPLICABILITY INFORMATION_SCHEMA.TABLE_CONSTRAINTS INFORMATION_SCHEMA.KEY_COLUMN_USAGE -存放数据库里所有具有约束的键信息 INFORMATION_SCHEMA.ROUTINES INFORMATION_SCHEMA.VIEWS -存放所有视图信息 INFORMATION_SCHEMA.TRIGGERS -触发器信息 2、显示当前连接的数据库 MySQL>select database(); 3、显示库中的数据表: MySQL>use MySQL;(指定MySQL库) MySQL>show tables; 4、显示数据表的结构: MySQL>describe yourtablename; 说明: describe 可以简写成desc 5、建库: MySQL>create database yourdbname; 6、建表: MySQL>create table yourtablename (columnname colunmtype, …); ...

2015-05-25 · 2 min · 246 words · -

Java LockSupport, park unpark

“Java LockSupport, park unpark” LockSupport.park 调用后,线程状态是 WAITING LockSupport.park() 和 unpark(),与object.wait()和notify()的区别? 面向的主体不一样。LockSuport主要是针对Thread进行阻塞处理,可以指定阻塞队列的目标对象,每次可以指定具体的线程唤醒。Object.wait()是以对象为纬度,阻塞当前的线程和唤醒单个(随机)或者所有线程。 实现机制不同。虽然LockSuport可以指定monitor的object对象,但和object.wait(),两者的阻塞队列并不交叉。object.notifyAll()不能唤醒LockSupport的阻塞Thread. 阻塞和唤醒是对于线程来说的,LockSupport的park/unpark更符合这个语义,以"线程"作为方法的参数, 语义更清晰,使用起来也更方便。而wait/notify的实现使得"线程"的阻塞/唤醒对线程本身来说是被动的,要准确的控制哪个线程、什么时候阻塞/唤醒很困难, 要不随机唤醒一个线程 (notify) 要不唤醒所有的 (notifyAll) 。 LockSupport.park() (以下简称 park() ) 可能是 java.util.concurrent 包最重要的函数了,因为很多 java.util.concurrent 中的功能类都是利用 park() 来实现它们各自的阻塞。在 park() 之前 Java 也有过类似功能的函数——suspend(),相应的唤醒函数是 resume()。不过 suspend() 有个严重的问题是父线程有可能在调用 suspend() 之前子线程已经调用了 resume(),那么这个 resume() 并不会解除在它之后的 suspend(),因此父线程就会陷入永久的等待中。相比于 suspend(),park() 可以在以下几种情况解除线程的等待状态: 在 park() 前曾经调用过该线程的 unpark() 进而获得了一次"继续执行的权利",此时调用 park() 会立即返回,并且消耗掉相应的"继续执行的权利"。 在 park() 进入等待状态之后,有其他线程以该线程为目标调用 unpark()。 在 park() 进入等待状态之后,有其他线程以该线程为目标调用 interrupt()。 在 park() 进入等待状态之后,有可能会没有理由地解除等待状态。 (这也是为什么推荐在循环体中调用 park(),并在返回之后再次检查条件是否满足。) 其中第一条就可以保证 park() 不会遇到和 suspend() 同样的问题。 最简单的使用 park() 是这样的 ...

2015-05-25 · 5 min · 1023 words · -