一、带颜色输出 erlang终端支持带颜色输出,例如lager日志库就可以。其实就是在输出前设置一下输出属性,正常的字体是:”\e[0;38m” 下面自己弄了一些宏:
-define(CONSOLE_COLOR_RED, "\e[0;31m"). -define(CONSOLE_COLOR_RED_BOLD, "\e[1;31m"). -define(CONSOLE_COLOR_YELLOW1, "\e[0;32m"). -define(CONSOLE_COLOR_YELLOW2, "\e[0;33m"). -define(CONSOLE_COLOR_BLUE, "\e[0;34m"). -define(CONSOLE_COLOR_PURPLE, "\e[0;35m"). -define(CONSOLE_COLOR_GREEN, "\e[0;36m"). -define(CONSOLE_COLOR_GRAY, "\e[0;37m"). -define(CONSOLE_COLOR_NORMAL, "\e[0;38m"). 用法就是打印的字符串前后加上要设置的属性例如 io:format(“~s~s~s~n”, [“\e[0;31m”, debug, “\e[0;38m”]). 就是在输出debug之前设置字体为红色,然后输出结束后设置字体为正常白色。
二、中文输出 中文输出乱码在rebar3插件里用rebar_info输出以及在ct里用io:format(user, ….)输出会遇到,带中文的字符串要转为utf8,代码形如:
NewFormat = io_lib:format(Format, Args), io:format("~s", [unicode:characters_to_binary(NewFormat, utf8)]).
CMOS和TTL集成门电路在实际使用时经常遇到这样一个问题,即输入端有多余的,如何正确处理这些多余的输入端才能使电路正常而稳定的工作?
一、CMOS门电路 CMOS 门电路一般是由MOS管构成,由于MOS管的栅极和其它各极间有绝缘层相隔,在直流状态下,栅极无电流,所以静态时栅极不取电流,输入电平与外接电阻无关。由于MOS管在电路中是一压控元件,基于这一特点,输入端信号易受外界干扰,所以在使用CMOS门电路时输入端特别注意不能悬空。在使用时应采用以下方法:
1、与门和与非门电路:由于与门电路的逻辑功能是输入信号只要有低电平,输出信号就为低电平,只有全部为高电平时,输出端才为高电平。而与非门电路的逻辑功能是输入信号只要有低电平,输出信号就是高电平,只有当输入信号全部为高电平时,输出信号才是低电平。所以某输入端输入电平为高电平时,对电路的逻辑功能并无影响,即其它使用的输入端与输出端之间仍具有与或者与非逻辑功能。这样对于CMOS与门、与非门电路的多余输入端就应采用高电平,即可通过限流电阻(500Ω)接电源。
2、或门、或非门电路:或门电路的逻辑功能是输入信号只要有高电平输出信号就为高电平,只有输入信号全部为低电平时,输出信号才为低电平。而或非门电路的逻辑功能是输入信号只要有高电平,输出信号就是低电平,只有当输入信号全部是低电平时输出信号才是高电平。这样当或门或者或非门电路某输入端的输入信号为低电平时并不影响门电路的逻辑功能。所以或门和或非门电路多余输入端的处理方法应是将多余输入端接低电平,即通过限流电阻(500Ω)接地。
二、TTL门电路
TTL门电路一般由晶体三极管电路构成。根据TTL电路的输入伏安特性可知,当输入电压小于阐值电压UTH,即输入低电平时输入电流比较大,一般在几百微安左右。当输入电压大于阈值电压UTH时,输入高电平时输入电流比较小,一般在几十微安左右。由于输入电流的存在,如果TT L门电路输入端串接有电阻,则会影响输入电压。其输入阻抗特性为:当输入电阻较低时,输入电压很小,随外接电阻的增加,输入电平增大,当输入电阻大于IKΩ时,输入电平就变为阈值电压UTH即为高电平,这样即使输入端不接高电平,输入电压也为高电平,影响了低电平的输入。所以对于TTL电路多余输入端的处理,应采用以下方法:
1、TTL与门和与非门电路:对于TTL与门电路,只要电路输入端有低电平输入,输出就是低电平。只有输入端全为高电平时,输出才为高电平。对于TTL与非门而言,只要电路输入端有低电平输入,输出就为高电平,只有输入端全部为高电平时,输出才为低电平。根据其逻辑功能,当某输入端外接高电平时对其逻辑功能无影响,根据这一特点应采用以下四种方法:(1)将多余输入端接高电平,即通过限流电阻与电源相连接;(2)根据TTL门电路的输入特性可知,当外接电阻为大电阻时,其输入电压为高电平,这样可以把多余的输入端悬空,此时输入端相当于外接高电平;(3)通过大电阻(大于1kΩ)到地,这也相当于输入端外接高电平;(4)当TTL门电路的工作速度不高,信号源驱动能力较强,多余输入端也可与使用的输入端并联使用。
2、TTL或门、或非门:对于下TTL或门电路,逻辑功能是只要输入端有高电平输出端就为高电平,只有输入端全部为低电平时,输出端才为低电平,TTL或非门电路,逻辑功能是只要输入端有高电平,输出端就为低电平,只有输入端全部为低电平时,输出才为高电平,根据上述逻辑功能,TTL或门、或非门电路多余输入端的处理应采用以下方法:(1)接低电平;(2)接地;(3)由TTL输入端的输入伏安特性可知,当输入端接小于IKΩ的电阻时输入端的电压很小,相当于接低电平,所以可以通过接小于IKΩ(500Ω)的电阻到地。
三、三态门之高阻态的理解 1、高阻态这是一个数字电路里常见的述语,指的是电路的一种输出状态,既不是高电平也不是低电平,如果高阻态再输入下一级电路的话,对下级电路无任何影响,和没接一样,如果用万用表测的话有可能是高电平也有可能是低电平,其电压值可以浮动在高低电平之间的任意数值上,随它后面所接的电路而定。
2、高阻态的实质:电路分析时高阻态可做开路理解。你可以把它看作输出(输入)电阻非常大,极限可以认为悬空(也就是说理论上高阻态不是悬空),它是对地或对电源电阻极大的状态。而实际应用上与引脚的悬空几乎是一样的。当门电路的输出上拉管导通而下拉管截止时,输出为高电平;反之就是低电平;如上拉管和下拉管都截止时,输出端就相当于浮空(没有电流流动),其电平随外部电平高低而定,即该门电路放弃对输出端电路的控制。
3、悬空(浮空,floating):就是逻辑器件的输入引脚即不接高电平,也不接低电平。由于TTL逻辑器件的内部结构,当它输入引脚悬空时,相当于该引脚接了高电平。一般实际运用时,引脚不建议悬空,易受干扰。对于TTL或非门接地处理,对于TTL与非门可以悬空或接高电平。至于COMS不能悬空,那是因为COMS的栅极和衬底是被二氧化硅隔开,它比较脆弱,只能承受几百伏的电压,而静电能达到上千伏,COMS悬空时电压为VDD/2。
4、由于TTL集成电路的低电平驱动能力比高电平驱动能力大得多,所以常用低电平有效OC门输出的七段译码器来驱动
VMware Workstation Pro 12.5.5 WINDOWS版官方下载地址,可以直接用迅雷或QQ旋风下载
https://download3.vmware.com/software/wkst/file/VMware-workstation-full-12.5.5-5234757.exe
VMware Workstation Pro 12.5.4 WINDOWS版官方下载地址,可以直接用迅雷或QQ旋风下载
https://download3.vmware.com/software/wkst/file/VMware-workstation-full-12.5.4-5192485.exe VMware Workstation 10.0.7 WINDOWS版官方下载地址,可以直接用迅雷或QQ旋风下载
(注:10.0.7是支持32位和64位系统的版本,后续版本只支持在64位系统下运行)
https://download3.vmware.com/software/wkst/file/VMware-workstation-full-10.0.7-2844087.exe
转载于:https://blog.51cto.com/morehd/1907489
原文地址:代码解读 作者:交易之外 代码解读 在MT4安装后,默认会给用户提供几个例子程序,这些程序对于新学习EA开发过程中有很大的帮助,下面我们就来对MACD Sample这个例子EA来做个解读,来看看别人是如何开发一个EA的。 首先是注释,在MQL语言中所有//的这一行就是注释行,系统本身不会去执行它,它只是用来解释当前代码的含义的,我们在代码中加入这些注释为了是让我们能够清楚的阅读代码的含义,在程序中加入详细的注释是一个很好的编程习惯,我们鼓励大家多加入注释。很多人觉得注释这东西因为没用在写代码中觉得很麻烦而忽略它,但是即使是自己编写的程序如果不加注释过几天就会忘记意思,还要再一行一行地看这些代码,所以注释是非常重要的。 下面这些就是定义变量,我们发现前面加上了extern关键字,如果在定义变量的前面有这个词说明这个变量将会被作为EA运行的参数,举个例子,比如我要编写一个EA,在使用过程中我想改变它的止盈和止损值,如果我程序都是事先编好的止盈止损,那么以后要改动它必须要改代码,这样不仅麻烦也不灵活,如果我把这些信息作为EA运行参数,那么在EA运行中就可以随时调整它了。 extern double TakeProfit = 50; extern double Lots = 0.1; extern double TrailingStop = 30; extern double MACDOpenLevel=3; extern double MACDCloseLevel=2; extern double MATrendPeriod=26; 上面定义了6个变量并且都是当作参数,这里设定变量名称的时候尽量使用用户可以理解的词汇,在EA的参数设置里这些变量名就是参数的名字。值得注意的是EA里变量名称是可以用中文的。 int start() start()函数是EA运行的核心,MQL语言规定了几个默认函数,其中EA第一次运行时会调用init()函数,在这个函数里我们可以放入一些需要初始化的信息,start()函数中放我们EA的核心代码,每次一个TICK(换句话说就是新报价)来到后,系统会自动调用start()函数。deinit()函数是当EA关闭的时候调用的,这里放一些我们程序停止后需要“善后”的代码。start()函数是必须要有的,其它两个函数如果不需要可以不用写。 if(Bars<100) { Print("bars less than 100"); return(0); } 上面代码的意思是如果当前图表中的k线少于100根将会在日志信息里输出提示信息并且结束start()函数的执行。return的意思是返回,如果在程序中判断出有错误,下面的代码无法继续执行了,我们调用return()函数让他退出start()函数的执行。 if(TakeProfit<10) { Print("TakeProfit less than 10"); return(0); // check TakeProfit } 上面的代码意思是如果参数里的TakeProfit变量小于10也提示一条信息并结束执行,TakeProfit从字面的意思中我们可以知道是止盈的意思,有些平台会限制下单时的止盈点数不得小于某个点,如果小于某值会在下单时报错,为了避免这种错误我们会限制参数中止盈的设定。 其实这里可以调用MarketInfo()函数得到我们当前平台中允许的止盈止损最小值从而根据平台的不同自动计算出最小的止盈点数,详细情况请参阅文档MarketInfo()函数的描述。 MacdCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0); MacdPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1); SignalCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0); SignalPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1); MaCurrent=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,0); MaPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,1); 以上语句是调用了MQL的一些内置指标函数,在MQL语言中,对于常用的指标如均线,MACD,KD等MQL已经提供给我们现成的函数,我们只要调用他即可得到指标的值(相见文档技术指标部分:http://docs.mql4.com/cn/indicators)。 就上面的代码,MacdCurrent的值是参数为12,26,9的MACD主线当前K线的值,MacdPrevious则是MacdCurrent前一根K线的值,SignalCurrent和SignalPrevious则是相同参数信号线的当前值和前一根值。 后两个是调用均线指标函数,这里的均线周期参数则是使用了EA的参数变量MATrendPeriod,这样写是个好习惯,把调用指标的参数放到EA参数里,这样可以随时在运行中调整这些参数方便我们改变策略。MaCurrent和MaPrevious是得到26均线的当前K线值和前一根的值。 total=OrdersTotal(); if(total<</font>1) 上面的代码就是判断我们当前是否有单子在做,他调用了OrdersTotal()函数,它可以计算当前账户中一共还没有平仓的单子和挂单的个数,如果它小于1说明当前没有任何单子,这种判断方法只是一种简单的判断法,如果这个EA在运行过程中人为也去下单则EA永远不会下单了,如果要更加精确的计算这个EA所下的单子数量还需要利用其他方法,这些技巧我们会在以后的文章中介绍。 if(AccountFreeMargin()<(1000*Lots)) { Print("
若一个请求中包含多个值,如:(test.action?tid=1&tid=2&tid=3),参数都是同一个,只是指定多个值,这样请求时后台会发生解析错误,应先使用 tradititonal 格式化:
$.ajax({ type:"post", url:"test.action", data:{ tid:[1,2,3] }, traditional:true }); 转载于:https://www.cnblogs.com/qq350760546/p/6548426.html
centos7网络问题实在不敢恭维,说说当年遇到的一个问题:复制的Centos7虚拟机网络重启失败。 问题虽小,好好解决。
1、 网络重启报错 [root@localhost ~]#service network restart Restarting network (via systemctl): Job for network.service failed. See 'systemctl status network.service' and 'journalctl -xn' for details. 2、在centos6时候,遇到虚拟机网络问题,可以通过修改70-persistent-net.rules这个文件解决。但在centos7中没有这个文件。 3、查看网卡的mac地址 [root@localhost ~]# ip addr 3: eth1: link/ether 52:54:00:d6:fc:15 brd ff:ff:ff:ff:ff:ff
4、修改网卡的配置文件ifcfg-eth1, 添加HWADDR HWADDR="52:54:00:d6:fc:15" 1)HWADDR必须使用双引号括起来,否则不行。最好关闭NetworkManager服务。 2)如果还不行,需要“先关闭虚拟机再启动虚拟机”,不要直接“重启”。
5、验证
今天升级了2.3版本,发现点击run之后应用无法自动启动,并有这样的报错:
Error while executing: am startservice com.example.codingmaster.testcc/com.android.tools.fd.runtime.InstantRunService Starting service: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.example.codingmaster.testcc/com.android.tools.fd.runtime.InstantRunService } Error: Not found; no service started. 我的手机是一加3,AndroidN
搜索了一波,结论是现在需要在手机中提供自应用自启动的权限,在设置中允许应用自启动后点击run就可以跑起来了。
PLUS XMP Tags PLUS (Picture Licensing Universal System) License Data Format 1.2.1 XMP tags. Note that all controlled-vocabulary tags in this table (ie. tags with a fixed set of values) have raw values which begin with "http://ns.useplus.org/ldf/vocab/", but to reduce clutter this prefix has been removed from the values shown below. See http://ns.useplus.org/ for the complete specification.
These tags belong to the ExifTool XMP-plus family 1 group.
Tag NameWritableValues / NotesAdultContentWarningstring'CW-AWR' = Adult Content Warning Required 'CW-NRQ' = Not Required 'CW-UNK' = UnknownCopyrightOwnerstruct+--> CopyrightOwner StructCopyrightOwnerID string_+(CopyrightOwnerCopyrightOwnerID)CopyrightOwnerName string_+(CopyrightOwnerCopyrightOwnerName)CopyrightOwnerImageIDstring CopyrightRegistrationNumberstring CopyrightStatusstring'CS-PRO' = Protected 'CS-PUB' = Public Domain 'CS-UNK' = UnknownCreditLineRequiredstring'CR-CAI' = Credit Adjacent To Image 'CR-CCA' = Credit in Credits Area 'CR-COI' = Credit on Image 'CR-NRQ' = Not RequiredCustom1lang-alt+ Custom10lang-alt+ Custom2lang-alt+ Custom3lang-alt+ Custom4lang-alt+ Custom5lang-alt+ Custom6lang-alt+ Custom7lang-alt+ Custom8lang-alt+ Custom9lang-alt+ EndUserstruct+--> EndUser StructEndUserID string_+(EndUserEndUserID)EndUserName string_+(EndUserEndUserName)FileNameAsDeliveredstring FirstPublicationDatedate ImageAlterationConstraintsstring+ 'AL-CLR' = No Colorization 'AL-CRP' = No Cropping 'AL-DCL' = No De-Colorization 'AL-FLP' = No Flipping 'AL-MRG' = No Merging 'AL-RET' = No Retouching ImageCreatorstruct+--> ImageCreator StructImageCreatorID string_+(ImageCreatorImageCreatorID)ImageCreatorName string_+(ImageCreatorImageCreatorName)ImageCreatorImageIDstring ImageDuplicationConstraintsstring'DP-LIC' = Duplication Only as Necessary Under License 'DP-NDC' = No Duplication Constraints 'DP-NOD' = No DuplicationImageFileConstraintsstring+'IF-MFN' = Maintain File Name 'IF-MFT' = Maintain File Type 'IF-MID' = Maintain ID in File Name 'IF-MMD' = Maintain MetadataImageFileFormatAsDeliveredstring'FF-BMP' = Windows Bitmap (BMP) 'FF-DNG' = Digital Negative (DNG) 'FF-EPS' = Encapsulated PostScript (EPS) 'FF-GIF' = Graphics Interchange Format (GIF) 'FF-JPG' = JPEG Interchange Formats (JPG, JIF, JFIF) 'FF-OTR' = Other 'FF-PIC' = Macintosh Picture (PICT) 'FF-PNG' = Portable Network Graphics (PNG) 'FF-PSD' = Photoshop Document (PSD) 'FF-RAW' = Proprietary RAW Image Format 'FF-TIF' = Tagged Image File Format (TIFF) 'FF-WMP' = Windows Media Photo (HD Photo)ImageFileSizeAsDeliveredstring'SZ-G50' = Greater than 50 MB 'SZ-U01' = Up to 1 MB 'SZ-U10' = Up to 10 MB 'SZ-U30' = Up to 30 MB 'SZ-U50' = Up to 50 MBImageSupplierstruct+--> ImageSupplier StructImageSupplierImageIDstring ImageSupplierID string_+(ImageSupplierImageSupplierID)ImageSupplierName string_+(ImageSupplierImageSupplierName)ImageTypestring'TY-ILL' = Illustrated Image 'TY-MCI' = Multimedia or Composited Image 'TY-OTR' = Other 'TY-PHO' = Photographic Image 'TY-VID' = VideoLicenseestruct+--> Licensee StructLicenseeImageIDstring LicenseeImageNoteslang-alt LicenseeID string_+(LicenseeLicenseeID)LicenseeName string_+(LicenseeLicenseeName)LicenseEndDatedate LicenseeProjectReferencestring+ LicenseeTransactionIDstring+ LicenseIDstring LicenseStartDatedate LicenseTransactionDatedate Licensorstruct+--> Licensor StructLicensorImageIDstring LicensorCity string_+(LicensorLicensorCity)LicensorCountry string_+(LicensorLicensorCountry)LicensorEmail string_+(LicensorLicensorEmail)LicensorExtendedAddress string_+(LicensorLicensorExtendedAddress)LicensorID string_+(LicensorLicensorID)LicensorName string_+(LicensorLicensorName)LicensorPostalCode string_+(LicensorLicensorPostalCode)LicensorRegion string_+(LicensorLicensorRegion)LicensorStreetAddress string_+(LicensorLicensorStreetAddress)LicensorTelephone1 string_+(LicensorLicensorTelephone1)LicensorTelephone2 string_+(LicensorLicensorTelephone2)LicensorTelephoneType1 string_+(LicensorLicensorTelephoneType1) 'cell' = Cell 'fax' = FAX 'home' = Home 'pager' = Pager 'work' = WorkLicensorTelephoneType2 string_+(LicensorLicensorTelephoneType2) 'cell' = Cell 'fax' = FAX 'home' = Home 'pager' = Pager 'work' = WorkLicensorURL string_+(LicensorLicensorURL)LicensorNoteslang-alt LicensorTransactionIDstring+ MediaConstraintslang-alt MediaSummaryCodestring--> PLUS MediaMatrix ValuesMinorModelAgeDisclosurestring 'AG-A15' = Age 15 'AG-A16' = Age 16 'AG-A17' = Age 17 'AG-A18' = Age 18 'AG-A19' = Age 19 'AG-A20' = Age 20 'AG-A21' = Age 21 'AG-A22' = Age 22 'AG-A23' = Age 23 'AG-A24' = Age 24 'AG-A25' = Age 25 or Over 'AG-U14' = Age 14 or Under 'AG-UNK' = Age Unknown ModelReleaseIDstring+ ModelReleaseStatusstring'MR-LMR' = Limited or Incomplete Model Releases 'MR-NAP' = Not Applicable 'MR-NON' = None 'MR-UMR' = Unlimited Model ReleasesOtherConditionslang-alt OtherConstraintslang-alt OtherImageInfolang-alt OtherLicenseDocumentsstring+ OtherLicenseInfolang-alt OtherLicenseRequirementslang-alt ProductOrServiceConstraintslang-alt PropertyReleaseIDstring+ PropertyReleaseStatusstring'PR-LPR' = Limited or Incomplete Property Releases 'PR-NAP' = Not Applicable 'PR-NON' = None 'PR-UPR' = Unlimited Property ReleasesRegionConstraintslang-alt Reusestring'RE-NAP' = Not Applicable 'RE-REU' = Repeat UseTermsAndConditionsTextlang-alt TermsAndConditionsURLstring PLUSVersionstring(called Version by the spec) PLUS MediaMatrix Values The lookup below is used to add human-readable descriptions to Media Matrix ID's in PLUS Media Summary Codes.
问题描述:
tomcat安装之后,正常启动,但是ps 查看进程却没有发现启动,尝试关闭,弹出来错误信息。
找不到或无法加载主类 org.apache.catalina.startup.Bootstrap
原因:tomcat/bin下面缺少一个 bootstrap.jar 的文件
解决方法:官网重新下载安装即可。你如果出现问题的包也是官网下载的,那么就尝试换个镜像重新下载,因为我这个问题,也是官网下载的包出现的问题。
# wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-7/v7.0.75/bin/apache-tomcat-7.0.75.tar.gz
# tar zxvf apache-tomcat-7.0.75.tar.gz 解压后,查看/bin目录下有没有 bootstrap.jar ,如果有便可以解决上述问题。
21世纪有关计算机领域的十二个重大难题 时间 2016-11-27 18:20:16 我爱计算机 原文 http://www.52cs.org/?p=1375 主题 安全技术 设计 作者:高庆狮,中科院院士
声明:本文发表在 《科学》 2005年04期
自从1946年第一台电子数字计算机诞生以来,每隔3~7年,计算机的速度、性能和可靠性可提高十倍,价格和体积可下降十倍,整体性能以百亿倍的速度飞速发展。原先需要花几万年才能完成计算的数据,现在只需??小时,原本不可能实现的梦想变成了现实。计算机的应用使原先极其昂贵的计算成本变为可忽略不计的成本,令原先没有经济效益的应用项目具有巨大的经济效益,从而导致了新的产业革命和社会各领域的变革。计算机领域神速发展的基础
支撑计算机领域半个世纪辉煌的基础是器件、部件、理论、系统结构、软件技术和应用等方面的数十项根源性创新。根源性创新是指在根源部位推动新兴产业诞生或者影响产业发展的科学技术创新,例如,阴极射像管、锗半导体一硅半导体一集成电路、磁心存储器、磁盘光盘、布尔代数、指令可以被当作数据来加工等。如果没有“指令可以被当作数据来加工”这项根源性创新,高级语言及其编泽系统不可能诞生,软件不可能飞速发展,依赖于软件接口的互联网也不可能存在,计算机半个世纪的辉煌就不可能呈现。
很遗憾,数十项重大根源性创新没有一项是由中国人发明的,只有一项“磁心存储器”是由美籍华人王安发明的。然而随着中国经济的不断发展,这将成为永远的过去,中国人必将在创造未来计算机领域的辉煌中占有重要位置。
当今计算机领域繁荣的现状与特点
虽然微软公司在当今计算机软件领域独占鳌头,但是其辉煌成就的基础不是比尔盖茨创造的,而是帕洛阿尔托研究中心的四大根源性创新:图形用户界面(CU0、面向客体的编程技术(OOP)、激光打印机和以太网。图形用户界面不仅使DOS操作系统被Windows所代替,而且还导致可视化编程技术的出现,最终微软公司获得了由图形用户界面带来的数千亿美元的经济效益。
随着计算机的飞速发展,它的应用范围也迅猛扩大,从军用到民用,从大工程、大企业到中小型企业、个人等。计算机与通讯根源性创新发展的结合,造就了当代互联网的繁荣,形成了网络时代。计算机网络领域的发展是整个现实世界到网络空间的全面映射。映射的一致性产生了标准和协议,它们成为网络时代的时髦名词。当今计算机领域具有应用第一、服务第一的特点。如今,计算机应用的发展已远远超过计算机系统本身的发展,成本随之大幅下降,应用费用从原先取决于设备费用、人工费用忽略不计变成为取决于人工费用、设备费用忽略不计。随着设备费用的下降,计算机应用产业飞速发展,计算机领域的发展方向由软硬件系统第一转变成应用第一。网络的本质是服务,由最初的通讯服务、信息服务发展到综合教育服务、娱乐服务、购物服务、计算服务、金融服务、旅游服务、社会服务等,并要求一体化服务。
十二个具有重大社会效益和经济效益的难题
21世纪,计算机领域面临很多难题,其中至少有十二个是重要的,每一个都蕴含超过百亿美元的产值。
网络安全
网络安全有狭义和广义之分,狭义的网络安全指通讯过程中信息的完整性、保密性;计算机系统及其安装的应用系统不被网络上的骇客直接攻击、盗窃和破坏,不被非法入侵活体(如病毒)盗窃和破坏;系统被破坏后,具有迅速恢复的能力。广义的网络安全还包括防止网络犯罪和维护网络可靠性。网络犯罪即社会的犯罪活动在网络上的映射,例如,利用互联网进行特务、邪教、诈骗、黄黑活动等犯罪活动。维护网络可靠性的目的在于确保网络系统不中断正确地运作,使网络具备抗天灾人祸的能力。
当前,解决网络安全的方法主要依靠法律、管理、鉴别认证技术、加密技术和隔离技术等。法律的威力取决于严惩的力度,而且对众多的小公司往往难于有效。任何大型软件系统都难免有漏洞,操作系统也不例外。管理包括人事管理、网络管理和计算机系统管理。鉴别认证技术和加密技术是相对的,新的鉴别认证技术和加密技术发明后,经过一段时间,就可能出现新的冒充技术和破译技术。因此,网络安全的研究是长期的。另外,目前的安全技术产品基本为软件技术产品或软件固化,或者建立在通用机上的软件系统,如果病毒等非法人侵活体难于鉴别出来,杀病毒软件也难于制止新病毒对计算机系统的破坏和盗窃。因此,采取计算机系统结构和软件“软硬结合”来防病毒破坏和盗窃是值得关注的方法。虽然采用隔离技术是有效的,但对网络行为也需要加以适当和合理限制,彻底取消网络功能,是行不通的。大面积完全隔离的网络,也难以不被暗中快速入侵。
海量信息检索
网络上至少有四类海量信息资源,即付费开发的海量信息资源,无政府主义的互联网海量资源,巨大信息流的监控,巨量未整理的资料。1980年代初期面临的最大困惑是,在网络上常常查询不到需要的信息,相反却得到一大堆不需要的无用信息,20年之后的今天依然如此。如何解决呢?关键是利用语义进行内容检索,不仅要统一人类混乱的术语和概念,还要实现计算机对自然语言知识层次的理解,这需要与目标库大小无关的高速搜索算法和类似于主体的网络机器人。
自然语言理解就是对语义的理解。语义有三种不同的层次:语言层次、知识层次和语用层次。例如,“把这杯水倒人那缸浓硫酸里。”这句话包含“这”,“杯”,“水”,“那”,“缸”,“浓硫酸”,“把倒人里”等七个语义单元,其中,N表示名词。如果一个机器人只有语言层次的理解,它能根据“这”找到一个标有“水”的“杯”,再根据“那”找到一个标有“浓硫酸”的“缸”,然后执行把“杯”中的“水”倒人标有“浓硫酸”的“缸”里。如果它具有知识层次的理解,就不会立即执行把“杯”中的“水”倒人标有“浓硫酸”的“缸”里,而是警告主人“危险”,因为它具有的知识层次的理解能考虑到把水倒人浓硫酸里会发生爆炸。知识层次的语义本身又可以分许多层次。例如对小孩和对植物学家而言,“苹果”的知识层次的语义差别极大,在小孩看来,它是一种可口的水果,对植物学家而言,其语义的描述可成为厚厚一本书。语用层次的理解更为复杂,例如“今天是星期天”具有多种语用层次的理解:仅仅是回答今天星期几,或许是妻子劝告丈夫该休息休息,或许是小孩提醒父母该实现星期天带他到动物园玩的许诺等等。
上亿台闲置计算机的利用
全世界数亿台计算机多数时间里被闲置或利用率不高,如果它们全被利用起来,不仅是一笔巨大的财富,而且具有每秒数亿亿次的神奇计算能力,但实现计算机的全球利用难度很大,最关键的问题是双向安全,即如何确保主系统不受客户的安全干扰,同时又确保客户的计算不受主人的安全干扰。
另外,不要把上亿台闲置计算机能力的利用与计算网络及网络计算混淆起来。计算网络早在1980年代初期就已提出,其目的是让更多地区更多的人共享计算资源。当今,人们可以用更方便的方式共享网络上的计算资源,如用手机进行上网计算。网络计算即一个计算题目在网络上的分布计算。
互联网本质是一个服务系统。 一体化服务的特点是使用户不需要考虑或者提供任何与服务需求无关的繁琐信息(例如,服务来源、地址、服务单位、如何服务等),就可以轻松自由地得到高质量网络服务。
一体化服务将进一步发展成包括各种资源和服务在内的一体化服务,并构成下一代互联服务网。一体化服务的关键是服务一体化和资源一体化。服务一体化的目的是提高服务质量,资源一体化则是服务一体化的必要条件,同时也是提高资源利用率的有效途径,其核心是信息资源的一体化。资源包括客户端的资源和服务端的资源,涵盖各种信息、软件和设备装置。
下一代互联服务网的关键技术是Cddn Crid在词典中不仅有“网栅”“网格”的含义,还有“电”“气”“铁路”服务网和网络”的含义。语义一体化服务网是一体化进一步发展中的一个新的生长点,它是在一体化服务中引入服务所需的不同层次的语义内容,以便有利于实现信息资源一体化及服务一体化,是实现服务一体化及信息资源一体化不可或缺的部分n
自然语言自动翻译
自然语言自动翻译的巨大经济效益和社会效益的前提要求是实用,即没有语无伦次、没有正错混杂、合乎目标语言的习惯。历史上,实用的翻译方法有整句和句型模式翻译,近代有翻译记忆,它们的缺点是语言覆盖范围和语言知识库的比例太小。基于实例的方法能有效提高上述比例,但仍为近似方法,存在语无伦次、正错混杂和夹杂不合乎目标语言习惯的成分。历史上的主流方法,至今仍然不能解决实用问题。目前比较热门的机器翻译方法是基于统计的方法,它可以迅速从很低水平快速提高到较高水平,但总有一部分不正确;它可以作为很好的工具,但难以独立使用。
自然语言自动翻译半个世纪以来没能实用的关键原因是自然语言缺乏精确描述,现有的机器翻译方法难以达到实用。由于翻译是在任何复杂的点集之间的变换,其在几何基坐标的精确描述基础上是十分简单和容易的。基于这个几何提示,建立自然语言基坐标,在语义单元(点)组成的语义语言(点集)的机器翻泽方法可能是解决问题的有效途径。
软件设计
软件的本质是设计。从本质上说,软件设计最核心的五个基本难题是可靠性、再用、时空群体工作、尽量自动和自然化,其中以可靠性为首。通常,软件维护费用远远超过开发费用,一个大型软件即使工作了许多年,仍然会有一大堆错误。在某些使用中,软件不可靠将导致灾难性的后果。软件可靠性的核心是软件的正确性,包括已经存在的软件系统错误的发现及排除、新软件系统的正确设计。软件可靠性还包括硬件故障时无负作用的恢复能力,硬件偶尔故障或操作错误时的安全、快速、自动或半自动恢复能力等。
库函数、类库和构件是常见的再用技术。如果一个待设计的大型软件,其功能与已经存在的软件大体相同,只有5%不同,且不同之处处于分散状态,那么新软件的设计工作量只是原先的5%、10%、40%,还是更多?能不能控制在15%以内成了再用的关键。
如果许多软件设计人员共同设计一个大型软件系统,其中部分人员是流动的,即分布在不同的时间段和空间,那如何有效地组织大的群体来设计大型软件系统?特别是在保持软件人员自由创造力的前提下有效地组织群体工作。“软件工:程”正在努力解决这个问题,但往往以牺牲软件设计人员的创造性为代价。
软件研究工作一开始就以尽量自动为目标,但实际上并没有完全做到,它在不断提高过程中。
自从引入图形用户界面后,非计算机专业的用户可不需要计算机专业知识,仅依靠自身的专业知识来使用计‘算机。这是自然化的第一步,现已实现。但是能否让不懂计算机或者懂得不多的各种专业人员设计自己的专业软件?这在当前似乎是天方夜谭,但并非不可能、18年前,物理学家李政道的两名物理专业的博士生设计出研究需要的巨型机,这台巨型机的开发是白然化的典范,这两位博士生并没有改行。
下一代程序语言
软件设计效率的发展十分迅速,无论是编程语言、技术、方法、工具、界面与环境,还是包括使用界面在内的软件本身质量,都有重要的发展。这几方面的发展相互关联,每一个都面临下一步问题。例如,面向客体的编程技术和可视化是否会发展成下一代程序语言?从模块化符号化编程技术、高级语言、结构程序化编程技术、面向客体的编程技术发展到面向客体的编程技术加可视化,每个飞跃都集成了解决五个基本难题的成果,极大地提高了编程效率。面向客体的编程技术的下一步将是通过编程语言来集成软件设计中五个基本难题的成果。
下一代操作系统
有人认为DOS是一维操作系统,Windows是二维操作系统,接下来应该出现三维系统,况且CAD技术、虚拟现实都需要三维技术支持,但这种猜想太过简单和幼稚。人们宁愿牺牲兼容性而采用图形用户界面的Windows,是因为它与DOS相比,在方便人们使用、思考和编程方面有本质的飞跃。下一代操作系统也是集成软件设计中五个基本难题的成果。
人类智能及其模拟和应用
智能是能自动学习知识,而且能自动有效地利用学习到的知识去解决问题的通用能力。学习分为许多类,鸟学习飞翔、人学习骑自行车都进行了识别学习和训练学习,许多动物都具备这两种学习能力。知识学习仅仅是人类及少数动物才具有的能力,人工智能的最初目标就是让计算机模仿人类智能,协助人类进行部分创造性劳动的“认知”目标。但是50年来,没有任何人造系统具有智能。严肃的人工智能学家早就已经把人工智能的目标改为:专门研究那些人类比机器做得好的领域的问题。例如,人类下棋比机器下得好,那么机器下棋就是人工智能要研究的领域。如果一个不再修改程序的下棋系统,一开始输给大师,下过几盘棋后,有输有赢,接着再下几盘,赢的比例越来越高,可以认为这个下棋系统具有智能味道,因为智能是通用能力,而下棋能力不是通用能力。
1970年代以来,有些人喜欢用“智能”表示灵巧。智能缝纫机是计算机芯片控制的灵巧缝纫机,没有智能。西方有一些学者,喜欢混淆概念,极力模糊智能的原意,这是不恰当的。
人类登月的愿望已经超过五千年,但是实现登月只有五十年。牛顿创立牛顿四大定理(1666年的万有引力和1687年力的三大定理),给登月建立了理论基础。光有理论基础,仍然不可能实现登月。直到约300年之后,控制技术和燃烧技术成熟以后,人类登月的愿望才得以实现。要实现计算机协助人类进行某些创造性劳动,首先要解决其理论基础,并考虑其技术前提。
计算科学
计算科学与理论科学、实验科学具有同等的重要性,三者并称为三大科学。当今的计算,不仅仅是一门科学,也是一个大产业。20世纪后期,计算流体力学、计算化学、计算物理学发展已经十分成熟。1970年代初期,钱学森院士提出的计算流体力学的计算要求是浮点64位以上的一万亿字存储容量,每秒一万亿次计算速度。当今的生物信息学,计算量远远超过以往的各种计算科学,且这仅仅是一个开始,因为至今还不清楚生物信息是如何具体控制细胞的发育。计算速度需求的宝座,现在似乎要让位给生物信息学了。
集成电路的下一代
1970年代就开始议论集成电路的极限,以及预测光逻辑集成器件将代替集成电路。30多年过去了,集成电路的极限还未到达,光逻辑集成器件热了十多年后现已消失得无影无踪。集成电路之后一定会出现新事物,但是现在肯定它是什么,似乎早了一些。
光纤的后继者
随着通讯能力的迅速发展,人们大多看好光纤之后是无线,至少小区接人采用无线方式。然而,未来似乎存在通讯能力过剩的问题,它可能会促使具有更大通讯能力的新应用出现。
根源性创新人员的生长土壤
人才资源与能源资源的区别在于能源资源在使用中消耗、减值;人才资源在使用中成长、增值。根源性创新人员的生长土壤由生活环境、目标环境、人员环境、实践环境、分工环境、自由创造环境、学风环境等多种环境构成。生活环境指研究人员必要的物质和生活条件。目标环境指参与前沿、重大的研究项目。人员环境是指拥有的一大批跨学科人才的研究队伍和所营造的高水平学术交流氛围。信息环境是指能提供丰富及时的国际化信息的渠道。实践环境则是包括资金、人员及物质条件的重要支撑环境。此外,分工环境也是一种重要的支撑环境。良好的“研究?开发?市场”分工环境相当于成果放大器,在这种环境下,任何重大创新成果能迅速增益,实现巨大的经济效益和社会效益。而糟糕的分工环境相当于成果衰减器,创新成果的增益效果常常等于零。自由创造环境是根源性创新的“必然基础”,即根源性创新往往源于偶然,而不是根据某些人的计划而产生。根源性创新人员以社会重大需求为动力,经过长期观察、思考,研究和探索而产生创新成果?这些是不可能事先计划的。虽然创新人员观察到的目标未必在计划或者规划中,但聪明的规划人员常常会把创新人员捕获的重大新目标灵活及时地补充纳入其规划,并且给予及时和充分的支持。学风环境则要求根源性创新人员进行独立思考,追求、服从真理,不人云亦云。
ActivityManager public List<ActivityManager.AppTask> getAppTasks () Added in API level 21 Get the list of tasks associated with the calling application.
Returns The list of tasks associated with the application making this call. ================================================================ ActivityManager.AppTask(Added in API level 21) public void finishAndRemoveTask () Added in API level 21 Finishes all activities in this task and removes it from the recent tasks list.
所以下面的方法,可以销毁当前应用所有Activity并且将此任务从最近任务列表中移除。 List<AppTask> appTasks = mActivityManager.getAppTasks(); for (AppTask at : appTasks) { at.
混合app开发
混合app开发介绍 application(应用)用前端的知识(html,css,js)开发出来手机App的方式就叫做混合App开发 App开发的三种类型 WebApp:跑在手机浏览器中运行的web应用(微信公众号,微信小程序)NativeApp:用android和Object-C等原生语言开发的应用HybridApp:就是在Html5网站外面加了一个原生的容器,兼具2者的优势 App开发三种方式原理对比图 三种App开发优缺点对比图 企业如何选择用那种方式开发产品那? 企业要根据自身的特点进行app开发方式的选择,不要为了混合而混合混合app开发方式不是银弹,混合app更适合为初创型公司快速占领市场,还有业务型的app更适合用混合app的开发方式是未来的主流趋势。 原生混合html页面html页面加原生容器的壳子 App开发的一些常见平台 混合App的 Ionic Ionic官网 http://ionicframework.com/Ionic中文网 http://www.ionic.wang/ Html5+ 官网http://www.dcloud.io/ AppCan 官网地址:http://www.appcan.cn/ 原生App的 ReactNative RN官网https://facebook.github.io/react-native/RN中文网http://react-native.cn/ weex weex官网http://alibaba.github.io/weex/ webApp的 微信公众号 https://my.oschina.net/u/1416844/blog/796475https://my.oschina.net/u/1416844/blog/796470https://my.oschina.net/u/1416844/blog/796474 微信小程序 https://my.oschina.net/u/1416844/blog/759209 混合app环境安装 注意 所有的开发环境都安装在c盘所有目录不要出现中文 系统环境安装 java环境配置 在百度上搜索“java jdk下载”并安装配置到全局变量JAVA_HOME中http://jingyan.baidu.com/article/f96699bb8b38e0894e3c1bef.html Node环境配置 node要下载最新的LTS(长期支持版本)版本npm升级到最新版本 npm install npm@latest -g c++环境配置 最好是用vs去安装c++环境 git环境配置 在百度搜”git下载”,并安装配置到全局变量http://jingyan.baidu.com/article/9f7e7ec0b17cac6f2815548d.html Python环境配置 在百度搜”python下载”,并安装配置到全局变量http://jingyan.baidu.com/article/48206aeafdcf2a216ad6b316.html android环境配置 Android ADT(android develop tools)安装 android的环境配置有很多种方式,我们选择的是手动安装方式 Android StudioEclipse手动安装从http://www.androiddevtools.cn/下载android所需要的包
点击installer_r24.3.4-windows进行安装,其他文件只需要解压缩后,放置结构如下图即可。Android项目结构
build-toos有些特殊,文件夹必须是版本号 Android-sdk Platform-tools Tools Build-tools extras 一共有6个东西需要安装
Android环境变量配置 ANDROID_HOME:C:\Program Files\android(有tools文件夹的根目录)path:%ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools在命令窗口输入adb进行检测 混合app快速开始 下载项目并打包
接口测试其实很难界定,我之前理解接口测试虽然算不上白盒测试,但也至于黑河测试.后来跟我们一开发聊天,他说接口测试其实就是白盒的一部分. 后来又跟一阿里的大数据聊,他说接口测试属于(黑盒测试)功能测试,好吧,无所谓啥测试了.接口一般就是看输入输出,如果是单纯的接口测试,无 数据依赖的情况还是比较简单,至于数据可以批量的从配置文件或者excel 里取就行,循环调用,但切记返回结果校验的准确性,所以要数据要分组,比如 某一批数据属于正确的数据,某一批属于异常的数据,具体如何细分数据组,要看你接口的返回状态。如果是比较复杂的接口,比如之前有人提到的退款,要 有很多数据依赖,如果是我,我会这样做 ----
1. 通过接口创建数据,但有条件,如果你调用几次接口就可以创建你想要的数据了,那么这种方式无非是非常
快速的,而且动态可参数化,要多少,一个循环的事 。如果是复杂的情况,除非公司给你大量的人力物力去写脚本,否则,真没必要搞
2. 数据库读取,但有条件,
如果你的接口是经验要回归测试的,那么可以写个多个sql 随机查询出符合条件的记录,但一般我很少用JDBC,都是写个页面,直接查询,返回给前台 ,以后如如果 别人也需要其他数据,我只需要维护一个简易的平台就好了,它可以随机查询出任何我想要的数据,这样做接口比较方便 3. 数据导入到库 ---- 确保一个干净的系统,
把需要用到的数据写入到库,然后把数据已sql的形式导出,如果后期想用直接运行sql 文件,你要的数据就都有了,接口可以随便调用,但这种也有一定的问题,经常要 维护sql,解决方式就是部署另一套干净的测试环境,改应用配置到新库,一般开发都维护应用,很少改动库,我想到的就这些,大家可以根据自己的需求动态调整,但基本也就这样
小教本 ,记录之,mongodb 定时切割日志
#!/bin/sh datafile=/data/db logfile=/data/log days=30 /bin/kill -SIGUSR1 `cat $datafile/mongod.lock`
find $logfile/ -mtime +$days -delete
另外需要使用crontab 设定时间
一、实验前提
下载2.6.19或更新的Linux内核,配置该内核使其支持NTFS,并在新的内核中修改其版本为Linux NameTestKernelx.x.x,其中,Name是你的名字(汉语拼音);x.x.x是新内核的版本号,最后在你的机器上编译安装这个新内核。(参见《RedHat Enterprise Linux 4入门与提高》第20章。)
注:本机:Windows 10专业版
VM linux Ubuntu 14.04 LTS
内核:Linux Ubuntu 4.4.0-21-generic
新内核:Linux Ubuntu 4.10.1最新稳定版本
二、实验步骤与结果
1、获取root权限:sudo passwd root,再输入密码即可;
2、验证gcc的可用:在你自己的工作目录下,编译链接运行Hello World程序;
3、在http://www.kernel.org上下载指定的内核,或者查找更新的稳定版内核并下载之;
4、准备相关工具(在执行下面的make步骤时,会发现系统有确实库文件,以下为本人安装时缺少的文件):
1)缺乏curse.h文件:用apt-get install libncurses5-dev安装
2)缺乏openssl/opensslv.h文件:用apt-get install libssl-dev安装 5、把源代码解压缩至/usr/src中,最终形成/usr/src/linux x.x.x/目录(x.x.x是新内核的版本号);
(提示:这里的注意点是路径的选择,一般要放在/usr/src/linux x.x.x/目录下面,以满足Makefile对路径设置的初始要求)
6、进入源代码的根目录(/usr/src/linux x.x.x),找到合适的内核配置方法,一般情况下默认即可,即弹出界面后选save退出就可以了;
7、修改 /usr/src/linuxx.x.x/include/linux/version.h文件中的版本信息(此处可修改版本号);
1)在终端输入 gedit /etc/default/grub,编辑grub,注释掉GRUB_HIDDEN_TIMEOUT=0,然后update-grub;
2)在终端中输入 gedir /boot/grub/grub.cfg,来编辑grub.cfg,找到menuentry ’’中输入自己需要修改后的内容;
8、编译内核。
命令顺序如下:
1)$sudo makemenuconfig
2)$sudo make
3)$sudo makemodules install 4)$sudo make install 9、重新启动新内核: reboot;
<..................................在编译内核中的其他问题请见下一篇文章...........................................>
AndroidStudio里查看hprof文件 打开AndroidStudio, 打开Android Device Monitor, 即AndroidStudio -> Tools -> Android -> Android Device Monitor, 选择要dump的进程,点击 "Dump HPROF file" 这样就得到 了hprof文件。 AndroidStudio->Open->选择hprof文件, 查看hprof文件,这样就可以得到分析图。 举个例子来看HPROF文件 以下是进程system_process得到 的hprof文件。 比随便选择一项查看,可以看到 类GlobalActions.GlobalActionsIconDialog的变量root, 它引用了, 类RelativeLayout里的变量mBackground, 它又引用了, 类BitmapDrawable里的mBitmapState变量, 它又引用了, 类BitmapDrawable.BitmapState里的mBitmap变量, 它又引用了一个Bitmap对象。 得到 这些信息,再结合自己的代码, 应该更容易看出哪里的代码造成了memory leak。
看好多同学在练习蓝桥杯的题目,准备比赛,当时自己也是参加个蓝桥杯省赛就担心不得了,总感觉惶惶不可终日。。。正好有人问,我就想说一点关于蓝桥杯的小看法,个人觉得挺有用的。
(一) 心理准备:蓝桥杯不是ACM,远远不是,没加过实验室就肯定不行的心理对比赛想来未必有好处。单单我认识的,不是实验室的都有四五个拿到国二或者国三的水平,由此可见跟实验室关系并不很大。
(二) 知己知彼:我觉得是这是参加比赛最重要的一点。参加比赛前干什么?当然是真题最好(我觉得四六级也是这样啊)毕竟组委会经过反复斟酌出的题目肯定质量要比那些什么乱七八糟的题目更准确地把握好难度。建议从官网上下最近两次的省赛题,再前两年的可以百度搜,网上也都有。其实当你都做了会发现,蓝桥杯出题就出一个套路。
(1)题目一共有十道,七道小题,三道编程题,每道题分数呈递增(基本是根据难度定的)
(2)比较理智的估计自己的水平。(我觉得干什么都不能眉毛胡子一把抓,这样的结果往往是什么都抓不住)
前七道小题里面有两道代码填空,一般是挖一个程序递归的关键代码或者递归前后变量的赋值。这种题肯定是要反复看代码,琢磨变量的含义和作用才能做对,当然不包括有的人胡乱试试出来,不过这种概率极低,不如静心想想程序来的踏实,这种代码填空一般分值稍高,但一般在第四题或者第五题,所以并不是特别难。
第四题之前的题目大多比较简单了,一般多层循环就可以了,可能有的必须用递归,有的递归或者普通循环都可以做出来。
第六第七题就技术含量高一些,一般人可能做不出来,没事,根据自己水平,不行就放弃,不一定非要抓这个分。
最后三道编程,能做出来第一道就比较理想了,一是时间问题,二是水平问题,看个人情况吧,但是第一题算是普通题,按照题目思路写就行,做出来可能性一般比较大。
(三)个人情况:当时我只做对了七道小题中的四五道,到编程题的时候就剩十五分钟了,结果大题一个没写出来。我当时想,完了,省三估计都没戏。
听说省赛蓝桥杯只做小题做出来两三道就是三等,这我不敢保证,但是我也就做对了五道小题就是省一,感觉即便不是也差不多吧。而且问题是我当时算法一点没用到(说实话用到我也未必能写出来),就是纯粹for循环加分析一点递归代码的水平,所以真的真的没有想象中那么难。
(四)说一点国赛:(这样一步到位)
还是那句话,做历年真题。
如果能进入国赛,一定要做一下前几年国赛的题目。你会发现题目类型很清晰,前两道都比较简单,第三道一般可以暴力,讲技巧的话用递归代码会少。第四道一般是迷宫类型的题目,而且属于简单迷宫,可以自己下去练一下往年蓝桥杯国赛迷宫的题目,练一两道基本就会怎么写了,真的没有想象中难。最后两道是比较难的编程题,我其实水平很渣,所以我就直接放弃,只做前四道,保证正确率就好。 结果是我对了两道小题,迷宫应该也对了吧,或者半对,时间也安排挺好,结果也比较理想了。需要注意的是,前两道是简单题,但是会有一些坑点,对于水平一般的同学,一定要小心,后面第四道程序题,虽然中间会有bug,一定要坚持调下去,别着急。
(五)总结:说来说去还是一句话,做真题,一定要做,官网上什么算法提高啊,基础训练啊,不用太在意,当然做做也肯定只有好处,但论优先级的话还是真题。官网的题目有些比较难。如果你在做真题的时候不会写,或者不确定自己对不对,到百度搜蓝桥杯+题目名称,很多人写题解,可以帮到你。最重要的是,一定根据自己的水平抓住能抓住的地方,放弃该放弃的题目,量力而行,不要眼高手低。
末:这是我个人的看法,具体怎么做自己斟酌。希望大家取得自己满意的成绩,我希望对你是有所帮助的。
[root@Redhat abc]# wget http://mirrors.163.com/.help/CentOS6-Base-163.repo --2017-03-01 17:00:26-- http://mirrors.163.com/.help/CentOS6-Base-163.repo 正在解析主机 mirrors.163.com... 失败:未知的名称或服务。 wget: 无法解析主机地址 “mirrors.163.com” wget:无法解析主机地址。
解决办法:
登入root
进入/etc/resolv.conf
vim /etc/resolv.conf
修改内容为下(将DNS地址改为google域名服务器)nameserver 8.8.8.8 nameserver 8.8.4.4
扩展:
resolv.conf是DNS域名解析的配置文件,它的格式很简单,每行以一个关键字开头,后接配置参数。resolv.conf的关键字主要有四个,分别是:
nameserver #定义DNS服务器的IP地址 domain #定义本地域名 search #定义域名的搜索列表 sortlist #对返回的域名进行排序 /etc/resolv.conf的一个示例:
domain test.com search www.test.com test.com nameserver 202.96.128.86 nameserver 202.96.128.166 最主要是nameserver关键字,如果没指定nameserver就找不到DNS服务器,其它关键字是可选的。
转载于:https://blog.51cto.com/zhongcl/1902252
随着现在混合开发的火热,React Native和Weex的兴起,越来越多的人学习混合开发,下面就github上一篇React Native的资料合集。
React-Native学习指南 本指南汇集React-Native各类学习资源,给大家提供便利。指南正在不断的更新,大家有好的资源欢迎Pull Requests!
同时还有Awesome React Native系列 https://github.com/jondot/awesome-react-native
目录 教程
React Native
React.js
ES6
系列教程
开源APP
图书
组件
工具
资源网站
业界讨论
教程 React Native 构建 Facebook F8 2016 App / React Native 开发指南 http://f8-app.liaohuqiu.net/
React-Native入门指南 https://github.com/vczero/react-native-lesson
30天学习React Native教程 https://github.com/fangwei716/30-days-of-react-native
React-Native视频教程(部分免费) https://egghead.io/technologies/react
React Native 开发培训视频教程(中文|免费) https://www.gitbook.com/book/unbug/react-native-training/details
react-native 官方api文档 http://facebook.github.io/react-native/docs/getting-started.html
react-native中文文档(极客学院) http://wiki.jikexueyuan.com/project/react-native/
react-native中文文档(react native中文网,人工翻译,官网完全同步) http://react-native.cn/docs/getting-started.html
react-native第一课 http://html-js.com/article/2783
深入浅出 React Native:使用 JavaScript 构建原生应用 http://zhuanlan.zhihu.com/FrontendMagazine/19996445
React Native通信机制详解 http://blog.cnbang.net/tech/2698/
React Native布局篇 https://segmentfault.com/a/1190000002658374
一、要求 1、表结构如下: ID DepartName(部门) Sales(销售量) SalesDate(销售日期) 1 营销一部 300 2006-7-1 2 营销二部 500 2006-7-1 3 营销三部 800 2006-8-1 4 营销一部 600 2006-8-1 5 营销二部 800 2006-8-1 6 营销一部 400 2007-7-1 7 营销二部 800 2007-7-1 8 营销三部 700 2007-8-1 9 营销一部 600 2008-7-1 10 营销二部 300 2008-7-1 2、要根据要求得到以下数据 1)得到同比数据 部门 对比年月 本月销售总量 去年同期销售总量 同比 营销一部 2006-07-01 300.00 NULL 无穷大 营销二部 2006-07-01 500.00 NULL 无穷大 营销三部 2006-08-01 800.00 NULL 无穷大 营销一部 2006-08-01 600.
在正常开发中,应用总是要和服务器交互,其中不免要分析服务器返回的数据,以及测试接口,我们要借助抓跑工具类帮助。所谓抓包工具,其实就是一个代理,
正常我们访问服务器是直接访问,使用代理后,就是通过代理去访问,而代理会把请求信息和服务器的响应信息抓取下来。
下面介绍使用fiddler在Android中的使用。
首先,需要在电脑上下载并安装fiddler。
fiddler下载地址
fiddler的初步使用 安装后,打开fiddler界面,我们打开电脑上浏览器,输入www.baidu.com在fiddler中就会抓取这个过程的信息,如下图,我访问了百度,选中自己访问的网址,然后在软件右边区域的Inspectors中,上半部分为请求的信息,下面的部分为服务器响应的信息,通常我们习惯以文本的方式查看其详情,所以点击Raw,即可查看。
使用fiddler抓取手机上数据的一些配置 使用fiddler抓取手机访问服务器的信息,需要先在fiddler上配置允许远程的设备连接,所以先需要在软件的Tools选项中,选择Telerik Fiddler Options,,如下图
然后在弹出的框中,选择Connections选项,勾选其下面的Allow remote computers to connect选显框,然后点击ok即可。
然后打开Android模拟器,在设置选项里,打开WLAN,
长按wifi列表,弹出对话框,选择修改网络。
勾选显示高级选项,修改代理为手动
在代理服务器主机名中填写本地电脑的ip地址(在命令行中输入ipconfig可查看),
然后在代理服务器端口上填入fiddler监听的端口号。默认为8888(其查看方法见第三张图)
点击保存,配置以完成。
使用fiddler抓取手机访问服务器的请求响应数据 (TODO) 使用fiddler测试服务器地址(get/post请求) (TODO) 使用fiddler抓取https包 (TODO)
参考:廖雪峰老师的javascript教程
filter 它用于把Array的某些元素过滤掉,然后返回剩下的元素。
和map()类似,Array的filter()也接收一个函数。和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是true还是false决定保留还是丢弃该元素。
例如,在一个Array中,删掉偶数,只保留奇数,可以这么写
var arr = [1, 2, 4, 5, 6, 9, 10, 15]; var r = arr.filter(function (x) { return x % 2 !== 0; }); r; // [1, 5, 9, 15] 把一个Array中的空字符串删掉,可以这么写:
var arr = ['A', '', 'B', null, undefined, 'C', ' ']; var r = arr.filter(function (s) { return s && s.trim(); // 注意:IE9以下的版本没有trim()方法 }); arr; // ['A', 'B', 'C'] trim()函数去掉字符串首尾空白字符
回调函数
filter()接收的回调函数,其实可以有多个参数。通常我们仅使用第一个参数,表示Array的某个元素。回调函数还可以接收另外两个参数,表示元素的位置和数组本身:
var arr = ['A', 'B', 'C']; var r = arr.
1.建一个java工程 2.在工程上新建一个generatorConfig.xml 文件 3.在generatorConfig.xml文件写入以下代码
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"> <generatorConfiguration> <context id="testTables" targetRuntime="MyBatis3"> <commentGenerator> <!-- 是否去除自动生成的注释 true:是 : false:否 --> <property name="suppressAllComments" value="true" /> </commentGenerator> <!--数据库连接的信息:驱动类、连接地址、用户名、密码 --> <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/taotao" userId="root" password="root"> </jdbcConnection> <!-- <jdbcConnection --> <!-- driverClass="oracle.jdbc.OracleDriver"--> <!-- connectionURL="jdbc:oracle:thin:@192.168.49.140:1521:DBDATA"--> <!-- userId="ms_member"--> <!-- password="ms1_member">--> <!-- </jdbcConnection>--> <!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和 NUMERIC 类型解析为java.math.BigDecimal --> <javaTypeResolver> <property name="forceBigDecimals" value="
参考:廖雪峰老师的javascript教程 小明希望利用map()把字符串变成整数,他写的代码很简洁:
'use strict'; var arr = ['1', '2', '3']; var r; r = arr.map(parseInt); alert('[' + r[0] + ', ' + r[1] + ', ' + r[2] + ']'); 结果竟然是[1, NaN, NaN],小明百思不得其解,请帮他找到原因并修正代码。
arr.map会为调用的函数传入以下三个参数: 1、currentValue,数组中当前被传递的元素。 2、index,数组中当前被传递的元素的索引。 3、array,调用 map 方法的数组。
而parseInt可以接受两个参数: 1、string:必需。要被解析的字符串。 2、radix:可选。表示要解析的数字的基数。该值介于 2 ~ 36 之间。 如果省略该参数或其值为 0,则数字将以 10 为基础来解析。如果它以 “0x” 或 “0X” 开头,将以 16 为基数。 如果该参数小于 2 或者大于 36,则 parseInt() 将返回 NaN。
所以实际上是执行了: parseInt(‘1’,0,[‘1’,’2’,’3’]);//1 parseInt(‘2’,1,[‘1’,’2’,’3’]);//NaN parseInt(‘3’,2,[‘1’,’2’,’3’]);//NaN
所以修正的代码应为:
r = arr.
对象 对象拥有属性,
属性类型 数据属性和访问器属性
数据属性 数据属性包含数据值:Value 数据属性的特征(用来描述数据属性的行为):
[[Configurable]]: - 能否通过delete 删除属性从而重新定义属性 - 能否修改属性的特性 - 能否把属性修改为访问器属性 [[Enumerable]] -表示能否通过for-in 循环返回属性 [[Writable]] -能否修改属性的值 [[Value]] -包含这个属性的数据值,是属性的读写位置 默认undefined
修改特征: 需要使用Object.defineProperty()方法: —-(ES5) Object.defineProperty(obj,”name”,{描述符对象})
var person = {}; Object.defineProperty(person, "name", { writable: false,//特征 不能修改属性的值 value: "Nicholas"//特征 本是读写位置 但因writable:false 所以只读 /*描述符对象*/ }); alert(person.name); //"Nicholas" person.name = "Greg"; alert(person.name); //"Nicholas" /*高程代码 DataPropertiesExample01.htm 【p140】*/ var person = {}; Object.defineProperty(person, "name", { configurable: false, //- 不能通过delete 删除属性从而重新定义属性 (1) //- ***不能修改属性的特性 *** (2) //- 不能把属性修改为访问器属性 (3) value: "
大家好,这是我的第一篇博客,写的不好请多见谅。
博主现在大二,川大软件工程本科在读,技术的内容就不献丑了,来谈谈我大一到大二的学习轨迹。
从知道要进入软件工程的一刻起,就在做准备 软件工程是我的第一志愿,然后是计算机,讲道理这个学科在我的学校不是一门特别牛叉的专业,跟隔壁电子科大差距还是有的,但是我的分数貌似电子科大没希望 :) 但是川大是所综合高校,我个人比较看重全面发展,所以最终报了川大软院。报了之后不用等就知道肯定稳(但是后来我才知道那一年提档线仅仅比我的分数低了几分,吓我一身冷汗)。
由于我本来就对编程很感兴趣,暑假我就开始自学C语言,从最基本的变量和结构语句开始学起,看的是我姐姐的大一C语言教材,清华出版社的 对 就是这本,挺不好找的 但是暑假我还要做我们班的毕业视频,大一开学之前我只看到了数组,还没有看到最难的指针的知识。 当年的七夕我闲着没事干,想用C写一个程序画一颗心,当时也不会啥,就会基础的for语句,就强行画出来,最后慢慢调也还是调出来了,还是挺开心的。 嗯 就是长这样
大一除了能够拿程序算算数学题,还真干不了什么 我以为在暑假自学了C语言的我,在大一面对C语言程序设计的时候,能够游刃有余,但是我错了。
当时教我们的老师很坑爹,拿十分钟讲完语法,然后当即就要求我们写一些程序,比如杨辉三角,万年历,等等,当时我们还身处IDE各种奇奇怪怪的报错中不可自拔中,别说写出来程序,还能活着出教室都很开心了。助教各种忙不过来,老师也不停地给同学们答疑。每一节C语言课下课之后我都是因为想问题想到耳朵根发红,像极了高三埋头刷完理综的时候的样子。当然还有课后作业,当时光写一个猜数字游戏作业就可以折腾我一个星期。
当时有一个学长跟我说:“你们现在觉得用C写一个程序很难,觉得无从下手,那是因为你们只学了C语言的语法,根本不懂算法”。我觉得也挺有道理,这就好比你学习英语,学了26个字母就想造句一样,当你学习了字母,再学习单词,然后再学习语法,然后你就会觉得造句是信手拈来的事。
在课余时间我也做了不少练习 做程序员没有一定的代码量是不行的,辅导员在开学的时候还跟我们说一个程序员四年应该有多少多少万行代码才算合格,确实是有道理的。 但是这样的程序只是用来解决奇奇怪怪的数学问题的,跟我想象中的应用程序还差的很远。
做项目,从入门到找不到门 做编程最终还是要做项目的,没人会找一个程序员专门来写#include
就在C语言期末考的时候,老师突然告诉我们这次的考试是三个项目随机抽一个,商品管理系统,学生管理系统,航班管理系统,我抽到了商品管理系统,我懵了,以前老师都是让我们一次写一个函数,这下一上来就是一个项目,完全不知道该怎么组织,框架不知道怎么看,那次考试可想而知,完全GG。(不是我上课不认真,我前三次小测都95+,据说整个年级二百多号人没一个能写出来,后来下一届就取消了这种题型)
大一下学期学习JAVA,显然使用面向对象的语言来做项目才是最适合的,如果C的基础打的牢,那么Java就主要学习对象的概念以及其衍生的继承、多态还有设计模式就可以了,从C这种面向过程的语言过渡到Java这种面向对象的语言,一开始是有点难度的。 我当时的解决方法是多看网上的博客,一般博客会将一个或多个知识点单独写成+文章,而且会融入作者自身的理解和体会,相比课本或课件的内容会更加容易理解,而且我推荐一定要看多几篇,不要看了一篇博客觉得了解的差不多了就可以,看多几篇既是加深印象,也是取其精华去其糟粕的过程。 Java的学习,学校推荐的是Thinking in Java英文原版的,我嫌英文看的太麻烦,所以没有用学校的教材,自己去旧书店买了一本,但是我觉得我看的那本也不是很好,所以在这里不推荐了,我舍友他自己也另外看了马士兵的视频教程,他说觉得不错。 Java学的差不多后,老师开始让我们做课程设计,做一个图书馆管理系统,我们小组决定做移动端的,因为老师不讲Android开发,所以我们自学,Android的学习资源有很多,我当时是看慕课网的Android攻城狮的第一门课 入门的,基础掌握之后,由于我们的时间不多,剩下的我是用到的时候再去学的,比如AutoCompleteTextView,启动页等等,在这期间也学会了看Eclipse的log日志信息,因为每次报错都不一样,也不想每次都去问助教,所以不得不自己去学。另外墙裂告诫大家安卓开发一定要掌握用Log调试以及会看日志信息,这真的非常重要!使用System.out.print()是很低端的技术,下意识用Log.d(String TAG,String Msg)才是王道啊。 当时我们做出来的第一个安卓项目,长这样
做完第一个安卓项目之后,感觉对安卓项目算是入门了,从前感觉安卓应用好复杂,自己亲自做了以后才知道其实也不难入手。
当掌握了面向对象编程之后,能做的事情渐渐多了起来,大一下学期学校安排了小学期课程,所谓小学期,就是请企业的教师过来,把十几个人安排在一个教室,分组做项目,整整十几天就专心做项目,做完就回家。但是当时说的是用C语言做,但是一听要界面就懵了,这C哪怕是一个确认窗口都要一百多行代码,所以后来大家都做了C++的。。。。。(当然,很多人都是网上找代码)。其实小学期锻炼的不是大家的编程能力,是体验和熟悉软件工程模式的,像我们的老师当时给我们的是Scrum敏捷开发,每天的十分钟早会,scrum master、QA和Tester的角色分工,相当典型,这还是我在大二软工导论中才知道的。
从被迫做项目到自己想做项目 到了大二之后接触了数据结构,软工导论,我更加认真去学,上早课瞌睡来了就喝茶,数据结构的每个课程设计都做的相当仔细,当然课下也花了许多时间在上面。数据结构我们主要学的三大数据结构:线性表、树和图,以及一些排序算法,索引什么的,我感觉课上主要学理论,课下的课设拿来长知识以及经验。 课程设计和小学期、考试都属于被迫做的项目,因为是课程要求去做的,但是到了大二,随着经验的丰富,渐渐地有人来找我做项目,或者找我做比赛,我自己也根据兴趣自己做了个项目。
我们有大创项目,为期一年,我们组了个队,做了一年,也还算好,虽然预期的目标没有实现出来,因为说是有一年时间,但是因为各种各样的原因最后一个月了才开始各种赶工。。。说出来都是泪。 参加过一个比赛,拿了国家二等奖,还有一笔不小的奖金。讲真,做比赛是最能增长经验的,但也是最辛苦的,持续的时间久,压力也大,但是回报丰厚,不仅包括物质荣誉的,也包括大量的经验。 寒假回来后自己琢磨着做一个小安卓游戏,然后就不假思索的开始干了,边学边做,学会了许多内存优化、游戏引擎、线程这种课上根本就没讲过的东西,大学所说的自学大概就是像这样通过自己探索去学会教材和老师没有告诉你的东西吧。
这就是我寒假做的安卓小游戏,只是优化做的不太好,在一些手机会报OOM
附上GitHub:GhostLWB的GitHub
最后我想说,学软件真是一件要求兴趣的事情,特别是大学生,一周拿60个小时打代码的人我见过,天天翘课打游戏的人我也见过,忙于社团和爱好而收到学业预警的人我也见过,成为大牛或者小白,都在你的一念之间。另外,很感谢我的学霸舍友,没有你们上进的学习氛围我也不可能这么拼,这么多学霸同时安排到一个寝室,如果这真是系统随机分配宿舍的话,那我只能说我真的运气爆表了吧 233
Android系统之System Server大纲 System Server content
Android系统之System Server大纲 前言System server概要System server启动的入口System server启动的过程总结 前言 System Server是android 基本服务的提供者,是android系统运行的最基本需求,所有server运行在一个叫system_process的进程中,system_process进程是android java虚拟机跑的第一个进程,从Zygote 创建而来,是andorid系统最重要的java虚拟机。可以说,整个android系统的业务都是围绕system server而展开,所以,当system_process死掉了,手机必须重启。
System server概要 System server主要包含以下服务:
1、 EntropyService, 熵服务,用于产生随机数;2、 PowerManagerService, 电源管理服务;3、 ActivityMangerService Activity,管理服务;4、 TelephonyRegistry, 电话服务,电话底层通知服务;5、 PackageManagerService, 程序包管理服务;6、 AccountManagerService, 联系人账户管理服务;7、 ContentService, 内容提供器服务,提供跨进程数据交换;8、 LightService, 光感应传感器服务;9、 BatteryService,电池服务;10、 VibrateService,震动器服务;11、 AlarmManagerService,闹钟服务;12、 WindowManagerService,窗口管理服务;13、 BluetoothService,蓝牙服务;14、 InputMethodManagerService,输入法服务;15、 AccessibilityManagerService, 辅助器管理程序服务;16、 DevicePolicyManagerService,提供系统级别的设置及属性;17、 StatusBarManagerService,状态栏管理服务;18、 ClipboardService,粘贴板服务;19、 NetworkManagerService,网络管理服务;20、 TextServicesManagerService,用户管理服务;21、 NetworkStatsService,手机网络状态服务;22、 NetworkPolicyManagerService,low-level网络策略服务;23、 WifiP2pService,Wifi点对点服务;24、 WifiService,Wifi服务;25、 ConnectivityService,网络连接状态服务;26、 MountService,磁盘加载服务;27、 NotificationManagerService,通知管理服务;28、 DeviceStorageMonitorService,存储设备容量监听服务;29、 LocationManagerService,位置管理服务;30、 CountryDetectorService,检查用户当前所在国家服务;31、 SearchManagerService,搜索管理服务;32、 DropBoxManagerService,系统日志文件管理服务;33、 WallpaperManagerService,壁纸管理服务;34、 AudioService,AudioFlinger上层封装音频管理服务;35、 UsbService,USB Host 和 device管理服务;36、 UiModeManagerService,UI模式管理服务;37、 BackupManagerService,备份服务;38、 AppWidgetService,应用桌面部件服务;39、 RecognitionManagerService,身份识别服务;40、 DiskStatsService,磁盘统计服务;41、 SamplingProfilerService,性能统计服务;42、 NetworkTimeUpdateService,网络时间更新服务;43、 InputManagerService,输入管理服务;44、 FingerprintService,指纹服务;45、 DreamManagerService, dreams服务;46、 HdmiControlService, HDMI控制服务;47、 SsvService,SIM卡状态和转换服务; 以上所列系统服务不代表最新Android系统的所有系统服务。
Saver Tensorflow中,用 tensorflow.train.Saver来保存、恢复变量。
保存变量 tf.train.Saver.save(sess, save_path, global_step=None, latest_filename=None, meta_graph_suffix='meta', write_meta_graph=True, write_state=True) #————————————————————例子———————————————————————— import tensorflow as tf # 创建两个变量 v1= tf.Variable(tf.random_normal([784, 200], stddev=0.35), name="v1") v2= tf.Variable(tf.zeros([200]), name="v2") # 添加用于初始化变量的节点 init_op = tf.global_variables_initializer() # Create a saver. saver = tf.train.Saver(tf.global_variables()) # 运行,保存变量 sess = tf.Session() saver.save(sess,'my-model') Saver可以使用提供的计数器自动为checkpoint文件编号。这使得在训练模型时在不同的步骤保留多个检查点。在save()方法中传递可选的global_step参数,可以对checkpoint文件进行编号
saver.save(sess, 'my-model', global_step=0) ==> filename: 'my-model-0' ... saver.save(sess, 'my-model', global_step=1000) ==> filename: 'my-model-1000' #——————————————————例子———————————————————————— import tensorflow as tf # 创建两个变量 v1= tf.Variable(tf.random_normal([784, 200], stddev=0.35), name="
1、简介 最近在使用vim,忽然发现vim也能使用鼠标,本章主要说明如何使用鼠标功能。 2、打开鼠标功能 :set mouse=a 3、关闭鼠标功能 :set mouse-=a 4、鼠标模式 ‘mouse’的参数说明 // n 普通模式 // v 可视模式 // i 插入模式 // c 命令行模式 // h 在帮助文件里,以上所有模式 // a 以上所有模式 // r 跳过|lit-enter|提示 // A 在可是模式下自动选择 'mouse' 的缺省值为空,即不使用鼠标。通常你会用: :set mouse=a来开始使用鼠标 (这等价于设置 'mouse' 为 "nvich")。如果你只想在若干模式下或者在 某两个任务上使用鼠标,你需要专注于那些模式对应的字母。例如: :set mouse=nv会使得鼠标在普通模式和可视模式下工作。 :set mouse=h会使得鼠标只有在帮助文件里工作 (这样,可以用 "g<LeftMouse>" 来进行标签跳转)。 鼠标能否在可视模式或者选择模式下开始选择,决定于 "selectmode" 选项包不包括 "mouse"。 5、解决鼠标模式右键不能粘贴问题 用鼠标和可视模式复制/粘贴 ('mouse' 选项必须设置,见上): 1. 在文本的第一个字符上按鼠标左键,移动鼠标到文本的最后一个字母,然后释放左 键。这会启动可视模式并高亮选择区域。 2. 按 "y" 抽出可视文本到无名寄存器里。 3. 在要插入的位置上按鼠标左键。 4. 按鼠标中键(滚轮)。
备忘一下:
windows上用phpstudy比较简便,但是其默认的php所有版本都是32位的,有坑,比如int最大值。
所以从php官网 点击打开链接http://windows.php.net/download#php-7.0-nts-VC14-x64 , 下载一个64位的php7丢到phpstudy的php目录下面去(和其他版本一起的那个目录);
丢进去之后,把名字改短一点,停掉并重启phpstudy,会自动加载刚丢进去的php版本,切换过来即可。
我用的是nginx+php,其他类型如APACHE, IIS 等 未尝试
注意:PHP官网指出来了,只有7以上才支持64位,以前的都是32位的
x86_64 Builds The x64 builds of PHP 5 for Windows are experimental, and do not provide 64-bit integer or large file support. PHP 7 provides full 64-bit support. The x64 builds of PHP 7 support native 64-bit integers, LFS, 64-bit memory_limit and much more.
shell命令 grep不以某字符开头,例如不以d开头
ls /data/|grep '^[^d]'
不能写成 ls /data/|grep '^[^d]*'
ssh远程执行命令返回结果、ssh远程执行多个命令
k=`ssh unicomlabs@10.161.21.3 ls -lh /home/unicomlabs/cq_bak5/done/tmp*|wc -l`
ssh unicomlabs@10.161.21.3 'ls -lh /home/unicomlabs/cq_bak5/done/; ifconfig'
ssh unicomlabs@10.161.21.3 'ls -lh /home/unicomlabs/cq_bak5/done; ifconfig' >> /home/unicomlabs/yangyu/jjj.txt;
ssh unicomlabs@10.161.21.3 'ls -lh /home/unicomlabs/cq_bak5/done>/dev/null; ifconfig' >> /home/unicomlabs/yangyu/jjj.txt; for i in {2..25} do ip=10.161.21.$i echo $ip ssh unicomlabs@$ip "/home/unicomlabs/wojianshescan_output_logs_orgin_eachdayfileprocess.sh>/dev/null;sleep 10;cat /home/unicomlabs/ip1.txt;cat /home/unicomlabs/ip2.txt;cat /home/unicomlabs/ip3.txt;cat /home/unicomlabs/ip4.txt;cat /home/unicomlabs/ip5.txt; df -h /home/unicomlabs/*_ast/config/config.ini|grep /|awk -F ' ' '{print \$5}';">> /home/unicomlabs/ip0.txt; tt=`cat /home/unicomlabs/ip0.
一、创建文件夹
1、调用Windows API函数 CreateDirectory()
头文件<windows.h>
代码如下:
#include<windows.h> //头文件 #include<iostream> using namespace std; int main() { string dirName = "D:\\test"; bool flag = CreateDirectory(dirName.c_str(), NULL); return 0; } 如果创建成功,将返回布尔型true。
CreateDirectory()函数参数如果提示"Error: "const char"类型的实参与"LPCWSTR"类型的形参不兼容",解决方法:
项目菜单——项目属性(最后一个)——配置属性——常规——项目默认值——字符集,将使用Unicode字符集改为未设置即可。
2、调用C运行库函数int mkdir()和int _mkdir()
头文件<direct.h>
代码如下:
#include<direct.h> //头文件 #include<iostream> using namespace std; int main() { string dirName = "D:\\test"; _mkdir(dirName.c_str()); return 0; } _mkdir()创建成功返回0,失败返回-1。 3、调用system命令md
使用下面的语句即可:
system("md D:\\test"); 成功返回0,否则返回非零。 二、删除文件夹
1、调用Windows API函数 RemoveDirectory()
头文件<windows.h>
代码:
#include<windows.h> //头文件 #include<iostream> using namespace std; int main() { string dirName = "
http://www.cnblogs.com/not-code/archive/2013/12/25/3490972.html 如果测试phpinfo 中没有MySQL类,请把MySQL下的lib目录下的libmysql.dll拷贝一份到系统system32下即可
最近遇到这个问题,一个activity中有一个imageview的旋转动画,当activity刚打开时,前几秒这个旋转的动画没有转动的过程,过了0.几秒以后直接卡到某个未知接着转.到处搜索都是说activity出现时的过渡动画的问题,感觉人类语言不足以精简的表达这种事情ORZ.
Google后找到了这个文章 和 这个文章,大致就是说:
It’s important to note that the start() method called on the AnimationDrawable cannot be called during the onCreate() method of your Activity, because the AnimationDrawable is not yet fully attached to the window.
大致就是说将startAnimation放到onWindowFocusChanged中就好了,然后试了试因为视觉差还是感觉卡顿,于是直接将动画delay了,确实有效.
语言集成查询 (LINQ) 是一组技术的名称,这些技术建立在将查询功能直接集成到 C# 语言(以及 Visual Basic 和可能的任何其他 .NET 语言)的基础上。 借助于 LINQ,查询现在已是高级语言构造,就如同类、方法、事件等等。 对于编写查询的开发人员来说,LINQ 最明显的“语言集成”部分是查询表达式。 查询表达式是使用 C# 3.0 中引入的声明性查询语法编写的。 通过使用查询语法,您甚至可以使用最少的代码对数据源执行复杂的筛选、排序和分组操作。 您使用相同的基本查询表达式模式来查询和转换 SQL 数据库、ADO.NET 数据集、XML 文档和流以及 .NET 集合中的数据。 下面的示例演示了完整的查询操作。 完整操作包括创建数据源、定义查询表达式,以及在 foreach 语句中执行查询。
class LINQQueryExpressions { static void Main() { // Specify the data source. int[] scores = new int[] { 97, 92, 81, 60 }; // Define the query expression. IEnumerable<int> scoreQuery = from score in scores where score > 80 select score; // Execute the query.
Educational Codeforces Round 17 C. Two strings 题意,给两个长度小于十万的字符串A、B,B删除连续的字符串后成为A的子串(不需要连续),求这最长子串,可能为空也可能为A本身。 思路:枚举B的子串其实只要枚举删除的位置就好了,因为B删除的部分是连续的字符串而且只能删一次。可以把字符串B看成三部分。
| 左边部分 || 删除部分 || 右边部分 | 左边部分、右边部分可能为空。 其实就是前后缀,先求出B各个前缀需要A前缀的长度,再求出B各个后缀需要A后缀的长度,
比如说字符串A是 abacaba,字符串B是 abcdcba ,B的前缀依次是a、ab、abc、abcd….,后缀依次是a、ba、cba、dcba、cdcba….,前缀a需要字符串A的前缀长度为1(a),前缀ab需要字符串A的前缀长度为2(ab),前缀abc需要字符串A的前缀长度为4(abac)….
后缀同理,那么,只需要满足从b前、后缀数组里面选出两个位置相加要求长度小于等于字符串A长度,这两个位置就能确定删除部分了。用len来表示B删除连续字符串后剩下的长度。
先贴一下我test 36 TLE的代码,原因是轮询太慢,2000ms,
#include <iostream> #include <cstdio> #include <cstring> using namespace std; typedef long long int ll; const int maxn = 100007; char a[maxn],b[maxn]; int lena,lenb; int needApreLen[maxn],needAsufLen[maxn]; int main() { // freopen("in.txt","r",stdin); scanf("%s",a); scanf("%s",b); lena = strlen(a); lenb = strlen(b); for(int i=0;i<maxn;++i)needApreLen[i] = lena + 5; for(int i=0;i<maxn;++i)needAsufLen[i] = lena + 5; int pos = 0; for(int i = 0; i < lenb;++i) { while(pos<lena && a[pos] !
算法训练 2的次幂表示 问题描述 任何一个正整数都可以用2进制表示,例如:137的2进制表示为10001001。 将这种2进制表示写成2的次幂的和的形式,令次幂高的排在前面,可得到如下表达式:137=2^7+2^3+2^0 现在约定幂次用括号来表示,即a^b表示为a(b) 此时,137可表示为:2(7)+2(3)+2(0) //在这里可以看出,是要求次幂,然后输出答案 进一步:7=2^2+2+2^0 (2^1用2表示) 3=2+2^0 所以最后137可表示为:2(2(2)+2+2(0))+2(2+2(0))+2(0) 又如:1315=2^10+2^8+2^5+2+1 所以1315最后可表示为: 2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0) 输入格式 正整数(1<=n<=20000) 输出格式 符合约定的n的0,2表示(在表示中不能有空格) 样例输入 137 样例输出 2(2(2)+2+2(0))+2(2+2(0))+2(0) 样例输入 1315 样例输出 2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0) 代码展示: import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scan =new Scanner (System.in); while(scan.hasNext()) { int n=scan.nextInt(); calute(n); System.out.println(); } } private static void calute(int n) //递归看系数,eg:137-》2^7+2^3+2^0,其实下面判断的为,7,3,0,然后继续,7拆分(2,1,0),3拆分(1,0) { String sum=Integer.toBinaryString(n);//十进制转二进制 int a[]=new int[sum.length()]; int k=0; for(int i=0;i<sum.length();i++) { if(sum.
transpose()的操作对象是矩阵。
我们用一个例子来说明这个函数: [[[0 1] [2 3]]
[[4 5] [6 7]]]
这是一个shape为(2,2,2)的矩阵,现在对它进行transpose操作。 首先我们对矩阵的维度进行编号,上述矩阵有三个维度,则编号分别为0,1,2,而transpose函数的参数输入就是基于这个编号的,如果我们调用transpose(0,1,2),那么矩阵将不发生变化,如果我们不输入参数,直接调用transpose(),其效果就是将矩阵进行转置,起作用等价与transpose(2,1,0)。
在举个例子,对上面那个矩阵调用transpose(0,2,1) 下面为结果 [[[0 2] [1 3]]
[[4 6] [5 7]]] 其实就是矩阵中每个元素按照一样的规则进行位置变换。
net.params[‘conv1_1’][0].data.transpose(0,2,3,1) 想要理解这种维数比较多的变换,得先找到变换过后的最底层,在这里就是输入维度,那么最基础的元素就是每一个过滤器在不同的输入维度上的权值。
按旧例,先说些别的。最近帮助公司做了一个投票活动,刚开始没在意写了写逻辑,不过局势瞬息万变,一下子说有几百万的并发(活动的参与者有三个一线歌星,明星)。听到这个顿时哭晕,熬了几天夜,布了tomcat,mysql,redis,nginx,分离登陆与支付代码。。。总之就是各种负载均衡。这对于我这个考生来说是超纲了。没办法,熬了一个礼拜。终于熬到活动结束,还好系统比较稳定,活动顺利举办,通过我们的投票系统,也筹集了几十万的善款。心理一直想说一句。能不能不要这样玩啊。 回到主题。活动中需要将redis从一个内存8G的服务器迁移到一个内存64G的服务器上。迁移的工具就是redis-dump 和redis-load。下面是安装过程 一:安装redis-dump 1、yum install ruby rubygems ruby-devel //安装rubygems 以及相关包 2、 gem sources -a https://ruby.taobao.org/ //加入淘宝镜像源 3、 gem install redis-dump -V
二:redis-dump 导出数据 redis-dump –u 127.0.0.1:6379 > test.json (导出redis 默认数据库的数据,默认数据库为0) 如果指定15数据库的数据: redis-dump –u 127.0.0.1:6379 –d 15 >test.json
三:redis-load 还原数据 将test.json 文件上传到新的redis服务器上,进入到test.json目录,执行命令 < test.json redis-load; 或者 cat test.json | redis-load 如果导出时指定了数据库 cat test.json | redis-load –d 15
github 地址 https://github.com/delano/redis-dump/blob/master/bin/redis-dump
在C#中,是没有tinyint类型的;而SQL中是有tinyint类型的。项目中有时候使用到deleteFlag,在SQL数据库端定义的类型是tinyint类型,而在C#中,使用edmx进行数据库映射,需要进行类型转换,将tinyint类型转换为C#中的byte类型。
C#中: 类型范围大小.NET Framework 类型byte0 到 255无符号 8 位整数System.Byte 详见MSDN:https://msdn.microsoft.com/zh-cn/library/5bdb6693.aspx SQL中:
tinyint 从 0 到 255 的整型数据。存储大小为 1 字节。
类型映射转换:http://blog.csdn.net/tangzhongxin/article/details/4647335
2019独角兽企业重金招聘Python工程师标准>>> 海量端口扫描工具masscan
masscan号称是互联网上最快的端口扫描工具,可以6分钟扫描整个互联网,每秒可以发送一百万个数据包。为了提高处理速度,masscan定制了TCP/IP栈,从而不影响本地其他TCP/IP的数据传输。masscan提供较为丰富的选项。例如,用户可以指定扫描的端口、路由器地址、发包速率和最大速率等。同时,它还支持多种文件格式用于保存扫描结果。
转载于:https://my.oschina.net/u/1585857/blog/827619
http://www.manew.com/thread-99473-1-1.html
简述: 上篇博文我们简单介绍了mongoose,并熟悉了mongoose的使用流程以及相关的一些概念性的东西,那么这篇博文我们接着介绍使用Mongoose进行增删修查的操作。
案例采用的MongoDB文档结构: 下面的所有操作都将依赖上一篇博客的项目,并且新增一条age字段;Doc如下: 保存数据: Model提供了一个create方法来对数据进行保存,语法结构为:Model.create(文档数据, callback)),实例如下: userMode.create({ name: userInfo.name, password: userInfo.password, age: userInfo.age }, function (error, doc) { if (error) { console.error(error); } else { console.error(doc); } 我们打开控制台看一下日志信息: { __v: 0, name: 'tiny', password: '123456', age: 21, _id: 587d79e1a51c535f09b8cc40 } 接下来我们再通过RoboMongo看一下是否已经真的写入到了数据库: OK,这条数据已经被写入到数据库中。接下来再来看一下Mongoose的删除操作。
删除操作: 为了后续的其他操作现在再向MongoDB中插入了三条数据,如下: OK,现在我们进行删除操作:obj.remove(查询条件,callback); 示例代码如下: //删除用户名为“tiny”的文档记录 var conditions = {name: 'tiny'}; userMode.remove(conditions, function (error) { if (error) { console.error(error); } else { console.error("用户删除成功") } }); //查询用户名为“tiny”的文档记录是否还存在 userMode.findOne({name: "
#解决 javax.net.ssl.SSLException: java.lang.RuntimeException: Could not generate DH keypair
#####在本人工作的过程中,遇到了形形色色的问题。当时琢磨了好久才琢磨出这样的总结,贴出来供大家参考参考。以下观点仅代表本人在工作过程中的观点,望大家能够共同讨论,查漏补缺。
Link:https://www.jianshu.com/p/63b096f9f395
当时我处理这个问题的时候,在网上查阅了很多的资料,大致的解决方法都是三种:
1、升级你使用的Java版本到 java 8
2、调整https使用的dhparam 指定1024位
3、修改服务器使用1024位dhparam
对于这三种解决方法来说,我都尝试过。
首先第一种方法的话,因为Java8版本是颠覆性的,一旦换了之后代码就会发生不同程度的报错问题。因此个人不推荐。
其次就是第二种方法以及第三种方法,操作起来比较复杂,网上也有挺多的解释,所以我也不在这里详说了。不说的原因一是复杂,而是其解决的方法对于我而言没有起到作用,就算改了还是会报出原来的异常。
因此,在进行反复的查阅资料,去了各种网站看了相关的解决方法之后,我终于将这个问题解决的。现在就将我解决的方法大致总结一下:
解决这个异常的重点就在于下载两个jar包:
###bcprov-ext-jdk15on-1.52
###bcprov-jdk15on-1.52
传送门1:http://download.csdn.net/detail/a2279860a/9754944
传送门2:http://download.csdn.net/download/a2279860a/10106133
这是CSDN的下载,需要1积分进行下载。大家也可以留个邮箱在这篇帖子的评论区,我看到之后可以发送到你们的邮箱。
(补充说明:最近翻出这篇帖子才发现原本的资源竟然已经被系统自动提到了15分的资源分,我的天…找了很久也没有找到降低资源分的方法,找客服也不回复…无奈只能重新上传一个了,就是 传送门2 那个地址,由于只能最低设置2分资源分,所以各位大哥就将就下吧,如果以后出现了下载分有提升上去了,麻烦好心人知会我一声…我好重新上传啊啊啊啊。以上两个地址都可以下载。土豪请随意…)
然后下载完毕之后就需要将这两个jar包放到
###$JAVA_HOME/jre/lib/ext
放在指定的目录下之后,接下来就需要对一个文件进行编辑
这个文件的位置在
###$JAVA_HOME/jre/lib/security/
对这个路径下的java.security文件进行修改
找到security.provider.9,然后在这句话下面加上:
security.provider.10=org.bouncycastle.jce.provider.BouncyCastleProvider 加上了之后,重启应用就可以运行了。
当然,网上还有另外一种说法就是在security.provider.2下面加上那句语句,但是对我而言不起作用,如果在security.provider.9下面加上该语句不起作用的话,大家也可以尝试一下在security.provider.2下面添加上该语句
环境 Windows7 x64Visual Studio 2013 参考自 http://jingyan.baidu.com/article/d5c4b52bca5005da560dc5d6.html
现在visual studio 都默认支持OpenGL,所以我们不需要再去官网下载OpenGL,但GLU是我们在学习过程中很有必要使用的.
下载GLUT http://www.opengl.org/resources/libraries/glut/glutdlls37beta.zip
安装 解压后将得到的glut.lib和glut32.lib这两个静态函数库复制到文件目录的lib文件夹下 X:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\lib 将glut.dll,glut32.dll这两个动态库文件放到操作系统目录下面的C:\Windows\system32文件夹内(32位系统)或C:\Windows\SysWOW64(64位系统)。 为了兼容性考虑,最好在这两个目录下都复制相应的文件。
将解压得到的头文件glut.h复制到目录如下目录下:
X:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\GL 提示:如果在incluce目录下没有GL文件夹,则需要手动创建
创建一个空白的Win32控制台应用程序 在代码最前面添加包含目录
#include <GL/glut.h> 然后就可以编辑自己的OpenGL程序了
例如:复制如下代码到刚配置好的VS中
#include <GL/glut.h> #include <stdlib.h> #include <math.h> #include <stdio.h> static int year = 0,spin=0, day = 0; static GLint fogMode; const int n = 100; const GLfloat R = 1.0f; const GLfloat Pi = 3.
实现效果:
如,点击“市”下方的下拉菜单,有“成都、北京、杭州、上海”四个选项,选择杭州以后,在“区”下方单元格的就会相应的出现杭州的区。
操作说明:
1.首先选中表格中的基础数据,按键盘上的【Ctrl+G】,就会弹出下面的定位窗口。 2.然后点击下方的【定位条件】,选择【常量】点击确定。这样操作之后,我们就只选中了我们有数据的单元格。 3.接着直接点击上方菜单栏中的【 公式 】--> 【 根据所选内容创建 】,对其名称进行定义,选择【 首行 】。 在菜单栏的【公式】 --> 【名称管理器】里可以看到我们定义的首行,以及其在下方对应的有关的区所在的单元格位置。 4. 一级下菜单引用的是第一行的数据, 我们对一级下拉菜单进行定义。选中第一行的数据,点击菜单栏中的【 定义名称 】,在输入区域名称这里输入名称,例如“首行”,然后点击确定。可以看到在名称管理器里多了一个名称“首行”。 5.选中需要设置一级下拉菜单的单元格,选择菜单栏中的【 数据 】,点击【 数据验证 】(或叫数据有效性)。 在设置选项卡下的验证条件选中【 序列 】(或叫 列表 ),然后在来源这里输入之前定义的首行名称。 6.在二级下拉菜单中点击【 数据验证 】(或者是数据有效性),在允许这里点击【 序列 】(或者是列表)。 在源这里输入“=indirect()”,为了引用“一级菜单”这个单元格中的数据,将鼠标移至括号中点击该一级菜单的单元格。 点击确定后,这里会提示一个错误提醒,可无需理会,直接点击“是”。 7.多个单元格需要进行下拉菜单设置,如果我们直接向下拉的话,就会发现后面的二级下拉菜单引用的数据其实还是来自于第一个单元格。因为这里我们设置的是对单元格进行绝对引用,这里我们需要进行修改。 点击“数据验证”(“数据有效性”),将源下方indirect函数后面的第二个美元符号“$”删除即可。
今天在公司没什么很急的事情,想起这几天一直在用Parcel这个类来做一些工作。
关于Parcel的使用 在分析Parcel之前,首先按照分析流程,介绍下关于Parcel的相关常规使用。
首先是关于Parcel的获取:
Parcel parcle = Parcel.Obtain(); 额,这感觉似曾相识啊,我们这里大胆猜测Parcel的初始化也是由其对象池进行初始化的。在得到了Parcel对象之后,下一步的工作。嗯,我想起来,应该介绍下Parcel的作用吧:
其实看到这篇文章的各位,应该也不需要这种科普吧,哈哈。我从源码注释中截取如下:
*Container for a message (data and object references) that can * be sent through an IBinder. A Parcel can contain both flattened data * that will be unflattened on the other side of the IPC (using the various * methods here for writing specific types, or the general
从这段注释中可以看出,Parcel是一个容器,他可以包含数据或者是对象引用,并且能够用于Binder的传输。同时支持序列化以及跨进程之后进行反序列化,同时其提供了很多方法帮助开发者完成这些功能。ok,对这里差不多明朗了,Parcel主要就是用来进行IPC通信的。当然不仅仅是Binder这一种跨进程通信。
接下来回到这题,既然Parcel是一个容器,那么肯定需要向其中传入数据才行啊,没错,所以在初始化Parcel之后,需要进行如下操作:
parcel.writeInt(int val); 向Parcel中传入一个Int型的数据,接下来还有:
parcel.writeString(String val); 向Parcel中传入一个String型的数据。
这里只以这两种最为常见的数据类型的写入作为例子,实际上Parcel所支持的数据类型可多了去了,具体可以如下图所示:
在完成了数据的写入之后,就需要进行数据的序列化:
parcel.marshall(); 在经过上一步的处理之后,返回了一个byte数组,主要的IPC相关的操作主要就是围绕此byte数组进行的。同时,由于parcel的读写都是一个指针操作的,这一步涉及到native的操作,所以,在将数据写入之后,需要将指针手动指向到最初的位置,即如下的操作:
extends
子类继承父类:
1、被private修饰的变量和方法不能被继承;
2. 被final修饰的变量和方法不能被继承;
3. 构造方法不能被继承;
其他的都可以继承,但子类用不用就是另一回事了;
子类继承抽象类:
1、如果子类是非抽象类,则必须实现抽象类中的所有“抽象方法”;
2、如果子类是抽象类,则可以不实现抽象类中的所有方法;
抽象类中可以有成员变量;
抽象类可以包含“抽象方法”和“非抽象方法”;
---------------------------------------------------------------------------------------
implements
1、如果子类是非抽象类,则必须实现接口的所有方法;
2、如果子类是抽象类,则可以不实现接口的所有方法,而由子类实现;
接口中没有成员变量;
接口的所有方法均为抽象方法;
主要步骤:
1.下载从开源网站下载获取dll文件log4net.dll;
http://logging.apache.org/log4net/download_log4net.cgi 2.建立c# winform项目,名称为logTest;
3.添加配置文件log.config;
<?xml version="1.0" encoding="utf-8"?> <!--?xml version="1.0" encoding="utf-8"?--> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/> </configSections> <!--站点日志配置部分--> <log4net> <root> <!--控制级别,由低到高: ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF--> <!--比如定义级别为INFO,则INFO级别向下的级别,比如DEBUG日志将不会被记录--> <!--如果没有定义LEVEL的值,则缺省为DEBUG--> <level value="ALL"/> <appender-ref ref="RollingFileAppender"/> </root> <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> <!--日志文件名开头--> <file value="C:\Users\Administrator\Desktop\TestLog4net.txt"/> <!--不加utf-8编码格式,中文字符将显示成乱码--> <param name="Encoding" value="utf-8" /> <!--多线程时采用最小锁定--> <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/> <!--日期的格式,每天换一个文件记录,如不设置则永远只记录一天的日志,需设置--> <datePattern value="(yyyyMMdd)"/> <!--是否追加到文件,默认为true,通常无需设置--> <appendToFile value="true"/> <!--变换的形式为日期,这种情况下每天只有一个日志--> <!--此时MaxSizeRollBackups和maximumFileSize的节点设置没有意义--> <!--<rollingStyle value="Date"/>--> <!--变换的形式为日志大小--> <!--这种情况下MaxSizeRollBackups和maximumFileSize的节点设置才有意义--> <RollingStyle value="Size"/> <!--每天记录的日志文件个数,与maximumFileSize配合使用--> <MaxSizeRollBackups value="10"/> <!--每个日志文件的最大大小--> <!--可用的单位:KB|MB|GB--> <!--不要使用小数,否则会一直写入当前日志--> <maximumFileSize value="2MB"/> <!--日志格式--> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="
Example:
Given nums = [2, 7, 11, 15], target = 9, Because nums[0] + nums[1] = 2 + 7 = 9, return [0, 1]. 一个数组,一个数字,如果这个数字为数组中任意两个元素之和,那么给出这两个元素的位置索引。
public class Solution {
public int[] twoSum(int[] nums, int target) {
//定义一个空数组,为储存返回值备用
int[] result =new int[2];
//开始遍历数组
for (int i=0;i<nums.length;i++){
int one = target - nums[i];
//每次比较只需向后即可
for (int m = i + 1; m < nums.length; m++){
if (nums[m] == one){
result[0] = i;