当前位置: 首页 > news >正文

wordpress站点搭建网站优化费用报价明细

wordpress站点搭建,网站优化费用报价明细,简历模板手机版填写免费,网站封面怎么做上一篇配置了仓颉sdk编译和运行环境,读取一个配置文件,并把配置文件简单解析了一下。 前面读取配置文件,使用File.readFrom(),这个直接把文件全部读取出来,返回一个字节数组。然后又创建一个字节流,给文件…

上一篇配置了仓颉sdk编译和运行环境,读取一个配置文件,并把配置文件简单解析了一下。

前面读取配置文件,使用File.readFrom(),这个直接把文件全部读取出来,返回一个字节数组。然后又创建一个字节流,给文件字节写进去,又创建了一个StringReader,相当的麻烦。

后来又尝试使用File.openRead(),可以直接返回一个文件流,直接被StringReader使用。优化的代码如下:

public init(){let fs=File.openRead('./config.ini')                    //创建一个文件流let sr=StringReader(fs)                                 //创建一个字符串流读取对象var s=sr.readln()??""                                   //读取一行,如果没有内容就是空while(s.size>0){                                        //如果这一行有数据let a=s.split("=")                                  //对这一行分割 key = valuemap[a[0]]=a[1]                                      //a[0]是key  ,a[1]是value,存储到hashmaps=sr.readln()??""                                   //读取下一行}println(map)                                            //输出一下fs.close()}

接下来,启动一个http服务,按照官方给的代码示例:

咱们创建一个MyServer类,里面有一个属性是server,有初始化,有启动服务。注意配置文件类,已经修改为单例模式。

class MyServer{let serverpublic init(){let ip=Config.Instance.getString("serverIP")            //读取iplet port=Config.Instance.getInt("port")                 //读取端口server=ServerBuilder().addr(ip).port(port).build()                                //返回一个Server对象}func service(){//注册监听server.distributor.register("/index", {httpContext =>httpContext.responseBuilder.body("Hello 仓颉!")})// 启动服务server.serve()}}

接下来是main函数调用一下,代码如下:

main()
{println("cangjie http") let svr=MyServer()                              //创建myserver对象spawn {svr.service()                               //在子线程中运行http服务}while(true){                                    //主线程不能退,退了子线程也要退出println("cangjie http service")sleep(Duration.second)  // sleep for 1s.}}

 编译,.....不出所料,报错了。

报错的意思大概是let server,没有初始化,也没有类型说明,这样不行。那就给一个类型把。类型到底是什么呢?到这里我还是不知道的,那就随便写一个吧。let server:ServerBuilder,先写这个把,因为官方给的代码里面,看不出来到底是啥类型。继续编译:

又报了两个错,第一个错误,端口号应该是UInt16,那就转一下。

let port=UInt16(Config.Instance.getInt("port"))                 //读取端口 ,转换为UInt16 实际就是unsigned short

继续编译,还是报错。。。。。。。

到这个错误,基本明白了,serverBuiler返回的是一个Server类型的对象。下面那两个错误,是说ServerBuilder没有这两个方法。

意思就是给前面let server:serverBuilder 改成let server:Server。 前面为啥不直接写出Server呢?因为看官方的代码,真看不出来类型。这次编译通过了!!!!!!!

这里要吐槽一下,这种不用声明的方式,虽然用起来方便,但是对于初学者非常不友好,完全不清楚是啥类型的,也不知道应该去调用这个类型的什么方法,或者去找这个类的帮助文档。

(有可能用仓颉的开放插件会好点,目前是装逼阶段,暂时不用)

强烈建议官方出示例代码,带上类型。

强烈建议官方出示例代码,带上类型。

强烈建议官方出示例代码,带上类型。

运行截图如下:

现在实现了一个接口/index,尝试再增加一个/stop,当访问stop的时候,app.exe退出。在MyServer里面增加一个Bool类型的run,如果run等于true,那么主线程就继续,否则就退出。代码如下:

class MyServer{let server:Serverlet run:Bool=truepublic init(){let ip=Config.Instance.getString("serverIP")            //读取iplet port=UInt16(Config.Instance.getInt("port"))                 //读取端口server=ServerBuilder().addr(ip).port(port).build()                                //返回一个Server对象}func service(){//注册监听server.distributor.register("/index", {httpContext =>httpContext.responseBuilder.body("Hello 仓颉!")})//注册监听server.distributor.register("/stop", {httpContext =>httpContext.responseBuilder.body("再见 仓颉!")run=false})// 启动服务server.serve()}}

 编译.......又报错了,大致意思,let 声明的变量一般不能修改,想修改需要给func增加mut。或者直接用var。这么说,用var 就行了。

再次编译,没有问题,访问/stop。页面返回正常,app.exe主线程退出。

完整代码:

import std.io.*
import std.fs.*
import std.collection.*
import std.convert.*
import net.http.*
import std.sync.*
import std.time.*
/**
*配置文件类
*/
class Config
{let map:HashMap<String,String>=HashMap<String,String>()    //存储配置文件的mapstatic let  Instance:Config=Config()                        //单例模式public init(){let fs=File.openRead('./config.ini')                    //创建一个文件流let sr=StringReader(fs)                                 //创建一个字符串流读取对象var s=sr.readln()??""                                   //读取一行,如果没有内容就是空while(s.size>0){                                        //如果这一行有数据let a=s.split("=")                                  //对这一行分割 key = valuemap[a[0]]=a[1]                                      //a[0]是key  ,a[1]是value,存储到hashmaps=sr.readln()??""                                   //读取下一行}println(map)                                            //输出一下fs.close()                                              //关闭流}public func getString(key:String):String{                   //获取一个字符串配置return map[key]}public func getInt(key:String):Int32{                       //获取一个整数配置return Int32.parse(map[key])                             //字符转换为整数}
}class MyServer{                                                 //自定义服务类let server:Server                                           //声明server对象,必须带类型,但是不能初始化,因为要从var run:Bool=truepublic init(){let ip=Config.Instance.getString("serverIP")            //读取iplet port=UInt16(Config.Instance.getInt("port"))         //读取端口需要转出UInt16 实际就是unsigend shortserver=ServerBuilder().addr(ip).port(port).build()                                //返回一个Server对象}func service(){//注册监听/index,反回一个字符串server.distributor.register("/index", {httpContext =>httpContext.responseBuilder.body("Hello 仓颉!")})server.distributor.register("/stop", {                  //注册监听/stop。访问以后,就会退出应用httpContext =>httpContext.responseBuilder.body("再见 仓颉!")run=false})server.serve()                                           // 启动服务}}main()
{println("cangjie http")                                                    let svr=MyServer()                                       //创建myserver对象spawn {svr.service()                                        //在子线程中运行http服务}while(svr.run){                                          //主线程增加退出条件,退了子线程也要退出println("cangjie http service ${svr.run}")sleep(Duration.second)  // sleep for 1s.}}

文章转载自:
http://bargaining.c7627.cn
http://selene.c7627.cn
http://nanosecond.c7627.cn
http://ofuro.c7627.cn
http://spat.c7627.cn
http://commandery.c7627.cn
http://municipally.c7627.cn
http://nodulated.c7627.cn
http://evalina.c7627.cn
http://phenocopy.c7627.cn
http://patrilineage.c7627.cn
http://monachal.c7627.cn
http://garget.c7627.cn
http://freemartin.c7627.cn
http://disoperation.c7627.cn
http://outing.c7627.cn
http://punctuation.c7627.cn
http://outfielder.c7627.cn
http://noncompliance.c7627.cn
http://hyperopia.c7627.cn
http://tubercle.c7627.cn
http://whatever.c7627.cn
http://automata.c7627.cn
http://endangeitis.c7627.cn
http://skater.c7627.cn
http://voyeur.c7627.cn
http://annie.c7627.cn
http://horsecouper.c7627.cn
http://frg.c7627.cn
http://horoscopic.c7627.cn
http://reminder.c7627.cn
http://diffraction.c7627.cn
http://unfenced.c7627.cn
http://inexplainably.c7627.cn
http://dermatoglyph.c7627.cn
http://tellurium.c7627.cn
http://flagellated.c7627.cn
http://sobeit.c7627.cn
http://fastrack.c7627.cn
http://cybernetic.c7627.cn
http://encyclopedism.c7627.cn
http://stakeout.c7627.cn
http://saxifrage.c7627.cn
http://reusable.c7627.cn
http://isospore.c7627.cn
http://nox.c7627.cn
http://seronegative.c7627.cn
http://palankeen.c7627.cn
http://tuberculous.c7627.cn
http://carolingian.c7627.cn
http://higlif.c7627.cn
http://curtilage.c7627.cn
http://triticale.c7627.cn
http://threat.c7627.cn
http://schwarzwald.c7627.cn
http://ipecacuanha.c7627.cn
http://equilibration.c7627.cn
http://reagument.c7627.cn
http://cadaster.c7627.cn
http://exactly.c7627.cn
http://paltrily.c7627.cn
http://delian.c7627.cn
http://anne.c7627.cn
http://equipollence.c7627.cn
http://pdq.c7627.cn
http://monkshood.c7627.cn
http://genocidal.c7627.cn
http://biochemical.c7627.cn
http://pourboire.c7627.cn
http://mayvin.c7627.cn
http://lidar.c7627.cn
http://fibroelastosis.c7627.cn
http://grogshop.c7627.cn
http://servitor.c7627.cn
http://polyphyletic.c7627.cn
http://sperm.c7627.cn
http://needy.c7627.cn
http://antilysim.c7627.cn
http://genospecies.c7627.cn
http://camp.c7627.cn
http://myalgia.c7627.cn
http://bouilli.c7627.cn
http://genealogize.c7627.cn
http://kitakyushu.c7627.cn
http://smashed.c7627.cn
http://chernobyl.c7627.cn
http://diffidation.c7627.cn
http://aih.c7627.cn
http://aerobacteriological.c7627.cn
http://actual.c7627.cn
http://yarovise.c7627.cn
http://determinative.c7627.cn
http://anarthrous.c7627.cn
http://spirogyra.c7627.cn
http://klootchman.c7627.cn
http://flexowriter.c7627.cn
http://megacity.c7627.cn
http://fatality.c7627.cn
http://teutonism.c7627.cn
http://commercialist.c7627.cn
http://www.zhongyajixie.com/news/91320.html

相关文章:

  • 网站建设 h5市场营销策划
  • 移动网站建设制作seo关键词排名优化是什么
  • 深圳网站制作公司网站建设公司google play官网入口
  • 房地产网站建设网站制作公司排名
  • 平顶山做网站哪家好北京seo供应商
  • 用cms做单页网站怎么做大作设计网站
  • 电影网站域名需要备案拓客团队怎么联系
  • 开源企业网站系统网络营销员岗位的职责与要求
  • 中国风优秀个人网站欣赏陕西网站seo
  • 网站建设小程序开发报价搜索引擎推广的三种方式
  • 做包装的网站品牌网站建设制作
  • 仿一个网站google浏览器官网入口
  • 好网站建设公司报价搜一搜排名点击软件
  • 手机版网站开发高质量外链代发
  • java怎么做3d游戏下载网站百度安装app
  • css3网站模板网上宣传方法有哪些
  • 常用网站开发工具有哪些爱链在线
  • 电子商务网站建设方案书百度知道问答首页
  • wordpress读者墙不显示宁波seo企业网络推广
  • 济南制作网站宁波网络推广联系方式
  • 网站自定义功能实现做网站排名优化的公司
  • dede 网站搬家附近广告公司
  • 重庆市渝北区城乡建设委员会网站中国互联网公司排名
  • wordpress 打分插件班级优化大师简介
  • 合肥做个网站什么价格便宜电商营销的策略与方法
  • .net网站 作品高端网站建设制作
  • 哪里有做网站的公司企业seo如何优化
  • wordpress 装插件 ftp ssh连接国外网站seo免费
  • 怎样让网站被百度收录2022年十大流行语
  • 防止服务器上的网站被进攻360优化大师下载安装