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

太仓网站建设网站推广西安到北京飞机几个小时

太仓网站建设网站推广,西安到北京飞机几个小时,华为认证网络工程师,济南网站公司哪家好上一篇配置了仓颉sdk编译和运行环境#xff0c;读取一个配置文件#xff0c;并把配置文件简单解析了一下。 前面读取配置文件#xff0c;使用File.readFrom()#xff0c;这个直接把文件全部读取出来#xff0c;返回一个字节数组。然后又创建一个字节流#xff0c;给文件…上一篇配置了仓颉sdk编译和运行环境读取一个配置文件并把配置文件简单解析了一下。 前面读取配置文件使用File.readFrom()这个直接把文件全部读取出来返回一个字节数组。然后又创建一个字节流给文件字节写进去又创建了一个StringReader相当的麻烦。 后来又尝试使用File.openRead(),可以直接返回一个文件流直接被StringReader使用。优化的代码如下 public init(){let fsFile.openRead(./config.ini) //创建一个文件流let srStringReader(fs) //创建一个字符串流读取对象var ssr.readln()?? //读取一行如果没有内容就是空while(s.size0){ //如果这一行有数据let as.split() //对这一行分割 key valuemap[a[0]]a[1] //a[0]是key a[1]是value,存储到hashmapssr.readln()?? //读取下一行}println(map) //输出一下fs.close()}接下来启动一个http服务按照官方给的代码示例 咱们创建一个MyServer类里面有一个属性是server有初始化有启动服务。注意配置文件类已经修改为单例模式。 class MyServer{let serverpublic init(){let ipConfig.Instance.getString(serverIP) //读取iplet portConfig.Instance.getInt(port) //读取端口serverServerBuilder().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 svrMyServer() //创建myserver对象spawn {svr.service() //在子线程中运行http服务}while(true){ //主线程不能退退了子线程也要退出println(cangjie http service)sleep(Duration.second) // sleep for 1s.}}编译,.....不出所料报错了。 报错的意思大概是let server没有初始化也没有类型说明这样不行。那就给一个类型把。类型到底是什么呢到这里我还是不知道的那就随便写一个吧。let server:ServerBuilder先写这个把因为官方给的代码里面看不出来到底是啥类型。继续编译 又报了两个错第一个错误端口号应该是UInt16那就转一下。 let portUInt16(Config.Instance.getInt(port))                 //读取端口 转换为UInt16 实际就是unsigned short 继续编译,还是报错。。。。。。。 到这个错误基本明白了serverBuiler返回的是一个Server类型的对象。下面那两个错误是说ServerBuilder没有这两个方法。 意思就是给前面let serverserverBuilder 改成let serverServer。 前面为啥不直接写出Server呢因为看官方的代码真看不出来类型。这次编译通过了 这里要吐槽一下这种不用声明的方式虽然用起来方便但是对于初学者非常不友好完全不清楚是啥类型的也不知道应该去调用这个类型的什么方法或者去找这个类的帮助文档。 有可能用仓颉的开放插件会好点目前是装逼阶段暂时不用 强烈建议官方出示例代码带上类型。 强烈建议官方出示例代码带上类型。 强烈建议官方出示例代码带上类型。 运行截图如下 现在实现了一个接口/index尝试再增加一个/stop当访问stop的时候app.exe退出。在MyServer里面增加一个Bool类型的run如果run等于true那么主线程就继续否则就退出。代码如下 class MyServer{let server:Serverlet run:Booltruepublic init(){let ipConfig.Instance.getString(serverIP) //读取iplet portUInt16(Config.Instance.getInt(port)) //读取端口serverServerBuilder().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(再见 仓颉!)runfalse})// 启动服务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:HashMapString,StringHashMapString,String() //存储配置文件的mapstatic let Instance:ConfigConfig() //单例模式public init(){let fsFile.openRead(./config.ini) //创建一个文件流let srStringReader(fs) //创建一个字符串流读取对象var ssr.readln()?? //读取一行如果没有内容就是空while(s.size0){ //如果这一行有数据let as.split() //对这一行分割 key valuemap[a[0]]a[1] //a[0]是key a[1]是value,存储到hashmapssr.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:Booltruepublic init(){let ipConfig.Instance.getString(serverIP) //读取iplet portUInt16(Config.Instance.getInt(port)) //读取端口需要转出UInt16 实际就是unsigend shortserverServerBuilder().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(再见 仓颉!)runfalse})server.serve() // 启动服务}}main() {println(cangjie http) let svrMyServer() //创建myserver对象spawn {svr.service() //在子线程中运行http服务}while(svr.run){ //主线程增加退出条件退了子线程也要退出println(cangjie http service ${svr.run})sleep(Duration.second) // sleep for 1s.}}
http://www.hkea.cn/news/14593169/

相关文章:

  • 网站服务费wordpress 多久
  • 找网站公司企业备案做vi网站
  • 有哪些网站建设工作做网站推广的工作好吗
  • 建设网站费用分析寻乌网站建设
  • 做海外网站 服务器放哪网站的规划与建设_按时间顺序可以分为哪等五个阶段
  • 企业网站建设 会计分录照着别人网站做
  • 做网站费用多少随州有哪些网站建设的公司
  • 重庆做网站推广公司专业做ea的网站
  • 做面包有关电影网站室内设计师多少钱一个月
  • 郑州企业网站建设公司中国建设银行行号查询
  • 做自行车车队网站的名字南昌制作网站的公司
  • 专门做行测题的网站找别人做网站需要注意什么
  • 网站建设用几级域名合适wordpress 移动端接口
  • 外贸网站建设电话保洁公司网站源码
  • 0453牡丹江信息网租房学seo可以做网站吗
  • 营销型网站首页模板襄阳网站seo诊断
  • 网站内页制作嘉定网站建设网页制作
  • 网站免费申请东营网站
  • 网站建设经营特色微信群运营
  • 网站模板修改教程两个字的广告公司名字
  • 国外手机网站模板帮你做海报网站
  • word和wordpress银川网站优化
  • 现在哪些做进口商品的电商网站长沙做网站改版费用
  • 潍坊网站推广排名石家庄市规划建设局网站
  • 手机wap网站导航模板建立自我追求无我
  • 网站建设需要会什么软件有哪些内容租号网站建设
  • 这几年做啥网站致富网站后角色管理权限怎么设置?
  • ruhe用dw做网站白酒网站模板
  • 北京市工程建设交易中心网站景宁建设局网站官网
  • 汕头市企业网站建设服务机构公司简介网站怎么做