【GO】go语言入门实战 —— 命令行在线词典
文章目录
- 程序介绍
- 抓包
- 代码生成
- 生成request body
- 解析respond body
- 完整代码
字节青训营基础班学习记录。
程序介绍
在运行程序的时候以命令行的形式输入要查询的单词,然后程序返回单词的音标、释义等信息。
示例如下:
抓包
我们选择与网站https://fanyi.caiyunapp.com/
建立连接。
首先我们打开网站,Windows
下直接按f12
进入开发者工具,
然后输入一个单词并点击翻译按钮,在网络tag
部分找到请求方法为POST
的dict
:
这里有部分请求表头,是我们后续需要在代码中添加设置的。
然后去负载tag
可以看到这次请求的source
也就是要翻译的单词,
也能看到要翻译的类型,这里是en2zh
,也就是英文到中文:
这个请求是JSON
类型的,我们后续存储会用结构体去存储这个数据,所以传请求信息的时候要先对结构体进行序列化。
预览tag
就是这次请求返回的信息:
返回信息也是JSON
,为了方便打印我们后续也会将返回得到的JSON
反序列化存放到对应的结构体变量中。
代码生成
我们要实现一个在线词典,所以我们运行程序后需要程序发送对应的请求。
上面也看了,部分代码会特别复杂,
所以这里用到一个代码生成工具Convert curl to Go (curlconverter.com)帮我们完成部分代码工作。
鼠标指向刚刚的请求tag
-> 右键点击 -> 选择复制 -> 选择复制为cURL(cmd)
:
然后将我们复制后的信息粘贴到网站的curl command
下面的代码框内得到生成的go
语言代码:
此时可能会出现这样的报错信息:
这是因为我们复制的command
的每一行是以^
结尾的,我们需要手动改成\
,这样就没问题了:
然后把代码复制到我们的代码编辑器中就OK了。
下面添加了部分注释帮助理解代码:
package mainimport ("fmt""io""log""net/http""strings"
)func main() {//创建http客户端client := &http.Client{}//data是请求参数,也就是翻译类型和要翻译的单词//由于创建请求信息的时候请求参数是io.Reader流类型//所以需要用strings.NewReader()将JSON转化为io.Reader类型var data = strings.NewReader(`{"trans_type":"en2zh","source":"good"}`)//创建请求信息,需要传入请求方法,请求地址,请求参数req, err := http.NewRequest("POST", "https://api.interpreter.caiyunai.com/v1/dict", data)if err != nil {log.Fatal(err)}//添加请求头,根据需要添加req.Header.Set("authority", "api.interpreter.caiyunai.com")req.Header.Set("accept", "application/json, text/plain, */*")req.Header.Set("accept-language", "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6")req.Header.Set("app-name", "xy")req.Header.Set("content-type", "application/json;charset=UTF-8")req.Header.Set("device-id", "dde0d0432ca66c7fe6175b7bf940b7f2")req.Header.Set("origin", "https://fanyi.caiyunapp.com")req.Header.Set("os-type", "web")req.Header.Set("os-version", "")req.Header.Set("referer", "https://fanyi.caiyunapp.com/")req.Header.Set("sec-ch-ua", `\"Not/A)Brand\";v=\"99\", \"Microsoft Edge\";v=\"115\", \"Chromium\";v=\"115\"`)req.Header.Set("sec-ch-ua-mobile", "?0")req.Header.Set("sec-ch-ua-platform", `\"Windows\"`)req.Header.Set("sec-fetch-dest", "empty")req.Header.Set("sec-fetch-mode", "cors")req.Header.Set("sec-fetch-site", "cross-site")req.Header.Set("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36 Edg/115.0.1901.183")req.Header.Set("x-authorization", "token:qgemv4jr1y38jyq6vhvi")//发送请求resp, err := client.Do(req)if err != nil {log.Fatal(err)}//成功拿到请求后关闭请求,如果不关闭请求可能会造成资源泄漏//defer关键字会在函数结束时调用resp.Body.Close()方法defer resp.Body.Close()//读取请求返回的数据//这里使用ioutil.ReadAll()方法读取,返回的是[]byte类型的数据bodyText, err := io.ReadAll(resp.Body)if err != nil {log.Fatal(err)}//打印返回的信息fmt.Printf("%s\n", bodyText)
}
生成request body
上面的代码已经能够成功发送请求并接收序列化的返回信息。
但是现在有一个缺点,请求信息是一个写死的JSON
转成的流,
而我们需要从命令行自己输入单词,而单词又是请求信息的一部分,
所以我们需要定义一个能存放请求信息的结构体,结构体核心字段为trans_type
和source
:
我们是要从命令行中获取要翻译的单词,
所以可以从命令行参数中读取单词并用其初始化我们要创建的请求信息结构体变量,
trans_type
字段是我们要翻译的类型,需要初始化为en2zh
。
这样就可以用结构体来表示我们的请求信息。
但是发送请求时请求信息需要转为io.Reader
类型,
所以我们还需要先将结构体序列化,
然后使用func bytes.NewReader(b []byte) *bytes.Reader
将序列化后的JSON转成io.Reader
类型,
之后就可以创建请求。
// DictRequest 请求参数
// 因为需要序列化,所以结构体每个字段的首字母都要大写
type DictRequest struct {TransType string `json:"trans_type"`Source string `json:"source"`UserID string `json:"user_id"`
}//读取命令行参数,也就是我们要翻译的单词
word := os.Args[1]
//用我们读到的单词初始化请求信息结构体
request := DictRequest{TransType: "en2zh", Source: word} //将结构体序列化为json字符串
buf, err := json.Marshal(request)
if err != nil {log.Fatal(err)
}//将json字符串转换为io.Reader类型,因为NewRequest()方法需要传入io.Reader类型的参数
var data = bytes.NewReader(buf)
req, err := http.NewRequest("POST", "https://api.interpreter.caiyunai.com/v1/dict", data)
if err != nil {log.Fatal(err)
}
解析respond body
此时我们的程序已经可以翻译单个从命令行输入的单词,
并接收全部的返回信息:
请求返回的信息是JSON
序列,
而我们需要把这些信息反序列到一个结构体中,
然后打印出结构体中我们想要的部分信息。
所以我们还需要定义一个结构体用以接收返回信息反序列化的结果。
而返回信息中有太多字段了,一一去定义这些字段不仅低效并且容易出错,
所以这里使用到了另一款工具:JSON转Golang Struct - 在线工具 - OKTools。
首先还是打开开发者工具,找到POST
请求,点击预览:
然后单击鼠标右键选择复制值。
随后进入上面那个网站,将复制的内容 粘贴在左边一栏,然后点击转换嵌套:
这样就得到了对应的接收返回信息的结构体类型。
现在就可以把这段代码改个结构体的名添加到我们的代码中:
type DictResponse struct {Rc int `json:"rc"`Wiki struct {} `json:"wiki"`Dictionary struct {Prons struct {EnUs string `json:"en-us"`En string `json:"en"`} `json:"prons"`Explanations []string `json:"explanations"`Synonym []string `json:"synonym"`Antonym []string `json:"antonym"`WqxExample [][]string `json:"wqx_example"`Entry string `json:"entry"`Type string `json:"type"`Related []interface{} `json:"related"`Source string `json:"source"`} `json:"dictionary"`
}
此前代码生成部分接收的返回数据是以[]byte
类型在bodyTest
中存储的,
此时我们就可以将其反序列化为结构体对象,
然后选择性地打印我们所需要的字段:
//将返回的数据反序列化解析到结构体中
var dictResponse DictResponse
err = json.Unmarshal(bodyText, &dictResponse)
if err != nil {log.Fatal(err)
}//只需要打印我们需要的字段
//这里打印的是单词的音标和汉语翻译
fmt.Println(word, "UK:", dictResponse.Dictionary.Prons.En, "US:", dictResponse.Dictionary.Prons.EnUs)
for _, item := range dictResponse.Dictionary.Explanations {fmt.Println(item)
}
完整代码
此时将上面的代码整合一下就得到了完整的代码,
这里我们对代码进行了部分封装,
从main
函数中读取待翻译的单词,
然后将发送请求到接受返回信息并打印这一部分封装成query
函数,
将待翻译的单词作为参数,
如果有多个待翻译的单词可以在main
函数中一个个读取并调用query
函数 :
package mainimport ("bytes""encoding/json""fmt""io/ioutil""log""net/http""os"
)// DictRequest 请求参数
type DictRequest struct {TransType string `json:"trans_type"`Source string `json:"source"`UserID string `json:"user_id"`
}// DictResponse 返回参数
type DictResponse struct {Rc int `json:"rc"`Wiki struct {} `json:"wiki"`Dictionary struct {Prons struct {EnUs string `json:"en-us"`En string `json:"en"`} `json:"prons"`Explanations []string `json:"explanations"`Synonym []string `json:"synonym"`Antonym []string `json:"antonym"`WqxExample [][]string `json:"wqx_example"`Entry string `json:"entry"`Type string `json:"type"`Related []interface{} `json:"related"`Source string `json:"source"`} `json:"dictionary"`
}func query(word string) {//创建http客户端client := &http.Client{}//创建请求//POST请求,需要传入请求方法,请求地址,请求参数//这里的地址是我自己搭建的一个测试接口,大家可以自行搭建或者使用其他接口//data是请求参数,需要使用strings.NewReader()方法转换为io.Reader类型request := DictRequest{TransType: "en2zh", Source: word}//将结构体序列化为json字符串buf, err := json.Marshal(request)if err != nil {log.Fatal(err)}//将json字符串转换为io.Reader类型,因为NewRequest()方法需要传入io.Reader类型的参数var data = bytes.NewReader(buf)req, err := http.NewRequest("POST", "https://api.interpreter.caiyunai.com/v1/dict", data)if err != nil {log.Fatal(err)}//添加请求头,根据需要添加req.Header.Set("Connection", "keep-alive")req.Header.Set("DNT", "1")req.Header.Set("os-version", "")req.Header.Set("sec-ch-ua-mobile", "?0")req.Header.Set("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36")req.Header.Set("app-name", "xy")req.Header.Set("Content-Type", "application/json;charset=UTF-8")req.Header.Set("Accept", "application/json, text/plain, */*")req.Header.Set("device-id", "")req.Header.Set("os-type", "web")req.Header.Set("X-Authorization", "token:qgemv4jr1y38jyq6vhvi")req.Header.Set("Origin", "https://fanyi.caiyunapp.com")req.Header.Set("Sec-Fetch-Site", "cross-site")req.Header.Set("Sec-Fetch-Mode", "cors")req.Header.Set("Sec-Fetch-Dest", "empty")req.Header.Set("Referer", "https://fanyi.caiyunapp.com/")req.Header.Set("Accept-Language", "zh-CN,zh;q=0.9")req.Header.Set("Cookie", "_ym_uid=16456948721020430059; _ym_d=1645694872")//发送请求resp, err := client.Do(req)if err != nil {log.Fatal(err)}//成功拿到请求后关闭请求//这里需要注意,如果不关闭请求,会造成内存泄漏//defer关键字会在函数结束时调用resp.Body.Close()方法defer resp.Body.Close()//读取请求返回的数据//这里使用ioutil.ReadAll()方法读取,返回的是[]byte类型的数据bodyText, err := ioutil.ReadAll(resp.Body)if err != nil {log.Fatal(err)}//有可能会请求失败,这里判断一下状态码if resp.StatusCode != 200 {log.Fatal("bad StatusCode: ", resp.StatusCode, " body: ", string(bodyText))}//将返回的数据反序列化解析到结构体中var dictResponse DictResponseerr = json.Unmarshal(bodyText, &dictResponse)if err != nil {log.Fatal(err)}//只需要打印我们需要的字段fmt.Println(word, "UK:", dictResponse.Dictionary.Prons.En, "US:", dictResponse.Dictionary.Prons.EnUs)for _, item := range dictResponse.Dictionary.Explanations {fmt.Println(item)}
}func main() {// 当命令行没有信息传入时就没必要继续执行下去if os.Args == nil || len(os.Args) < 2 {fmt.Fprintf(os.Stderr, "usage: simpleDict WORDexample: simpleDict hello")os.Exit(1)}for _, word := range os.Args[1:] {query(word)fmt.Println() //每打印完一个单词的信息用空行隔开}
}
至此就完成了一个 简单的命令行在线词典。
相关文章:
![](https://img-blog.csdnimg.cn/img_convert/d318df459563c2cd857df753a7b66dbd.png)
【GO】go语言入门实战 —— 命令行在线词典
文章目录 程序介绍抓包代码生成生成request body解析respond body完整代码 字节青训营基础班学习记录。 程序介绍 在运行程序的时候以命令行的形式输入要查询的单词,然后程序返回单词的音标、释义等信息。 示例如下: 抓包 我们选择与网站https://fany…...
![](https://img-blog.csdnimg.cn/f70d5f42f2bc44108c83617f65e60810.png)
模电模电基础知识学习笔记汇总
来源:一周搞(不)定数电模电全集,电子基础知识 11小时 一:模电学习笔记 模电主要讲述:对模拟信号进行产生、放大和处理的模拟集成电路重点知识:常用电子元器件:电阻、电容、电感、保…...
招商银行秋招攻略和考试内容详解
招商银行秋招简介 招商银行是一家股份制商业银行,银行的服务理念已经深入人心,在社会竞争愈来愈烈的今天,招商银行的招牌无疑是个香饽饽,很多人也慕名而至,纷纷向招商银行投出了简历。那么秋招银行的秋招开始时间是多…...
![](https://www.ngui.cc/images/no-images.jpg)
【Linux】四、开发工具
一、vim 编辑器(只能写代码) 1、只关注如何写代码,不会关注代码的正确性; 2、一般写代码在Windows环境下写,而vim是Linux下相对来说功能最强的编辑器; 二、vim的操作 vim ---打开vim shift键 加 ࿱…...
![](https://img-blog.csdnimg.cn/081d798d6494410d91ed4b01370bba48.png)
前后端分离实现博客系统
文章目录 博客系统前言1. 前端1.1 登陆页面1.2 博客列表页面1.3 博客详情页面1.4 博客编辑页面 2. 后端2.1 项目部署2.1.1 创建maven项目2.1.2 引入依赖2.1.3 创建目录结构2.1.4 部署程序 2.2 逻辑设计2.2.1 数据库设计2.2.2 实体类设计2.2.3 Dao层设计2.2.3.1 BlogDao 2.2.4 D…...
![](https://www.ngui.cc/images/no-images.jpg)
面试题-TS(六):TypeScript 中的泛型是什么?
面试题-TS(6):TypeScript 中的泛型是什么? 在TypeScript中,泛型(Generics)是一种强大的特性,它允许我们在编写可重用的代码时增加灵活性。泛型使得我们可以编写不特定数据类型的代码,从而提高代…...
![](https://img-blog.csdnimg.cn/da71bd55015f4fc9935e7c8add5b6f84.png)
QT DAY4
1.思维导图 2.手动完成服务器的实现,并具体程序要注释清楚 头文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTcpServer> #include <QTcpSocket> #include <QMessageBox> #include <QList> #include <QD…...
![](https://img-blog.csdnimg.cn/img_convert/cf8e1f9e3ca2e172dfbcc171b3b80d74.png)
最新Ai创作源码ChatGPT商用运营源码/支持GPT4.0+支持ai绘画+支持Mind思维导图生成
本系统使用Nestjs和Vue3框架技术,持续集成AI能力到本系统! 支持GPT3模型、GPT4模型Midjourney专业绘画(全自定义调参)、Midjourney以图生图、Dall-E2绘画Mind思维导图生成应用工作台(Prompt)AI绘画广场自定…...
![](https://www.ngui.cc/images/no-images.jpg)
一个go的支持多语言的error自动生成插件
大家好,我是peachesTao,今天给大家推荐一个go的支持多语言的error自动生成的插件,插件主页可以访问下方链接。 在一个多语言国际化的项目中,后端接口返回给前端的错误描述也需要国际化,我们来看一下后端给前端返回多语…...
![](https://img-blog.csdnimg.cn/079f0a6a7a604a308c564f41e454e34f.png)
wireshark抓包新手使用教程(超详细)
一、简介 Wireshark是一款非常流行的网络封包分析软件,可以截取各种网络数据包,并显示数据包详细信息。 为了安全考虑,wireshark只能查看封包,而不能修改封包的内容,或者发送封包。 wireshark能获取HTTP,也…...
![](https://img-blog.csdnimg.cn/eadf92906d584f7eb483c25b1e0db5aa.jpeg)
平均列顺序对列排斥能的影响
( A, B )---3*30*2---( 1, 0 )( 0, 1 ) 让网络的输入只有3个节点,AB训练集各由5张二值化的图片组成,让A有6个1,B有4个1,并且让这10个1的位置没有重合。比较迭代次数的顺序。 其中有9组数据 差值结构 A-B 迭代次数 构造平均列 …...
![](https://www.ngui.cc/images/no-images.jpg)
微信小程序-处理ios无法播放语音的问题
背景 框架:tarovue3 问题:今天搞小程序语音播放功能,开放工具播放正常,但是到ios手机上调试时无法播放,在网上找到个好办法 解决方案 核心代码 Taro.setInnerAudioOption({obeyMuteSwitch: false // 解决有一些IOS无…...
![](https://img-blog.csdnimg.cn/61632a02f5484c33bc6a12e221026f1f.png)
区块链 2.0笔记
区块链 2.0 以太坊概述 相对于比特币的几点改进 缩短出块时间至10多秒ghost共识机制mining puzzle BTC:计算密集型ETH:memory-hard(限制ASIC) proof of work->proof of stake对智能合约的支持 BTC:decentralized currencyETH:decentral…...
![](https://img-blog.csdnimg.cn/6e29286affb94acfb6308b1583f4da53.webp)
深入理解Vue响应式系统:数据绑定探索
🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…...
![](https://img-blog.csdnimg.cn/8e61b0b48dc148efb079035031dfed2c.jpg)
web流程自动化详解
今天给大家带来Selenium的相关解释操作 一、Selenium Selenium是一个用于自动化Web浏览器操作的开源工具和框架。它提供了一组API(应用程序接口),可以让开发人员使用多种编程语言(如Java、Python、C#等)编写测试脚本&…...
![](https://img-blog.csdnimg.cn/65e9ee3ba68d40449907a2e44308595f.png)
什么是框架?为什么要学框架?
一、什么是框架 框架是整个或部分应用的可重用设计,是可定制化的应用骨架。它可以帮开发人员简化开发过程,提高开发效率。 项目里有一部分代码:和业务无关,而又不得不写的代码>框架 项目里剩下的部分代码:实现业务…...
![](https://www.ngui.cc/images/no-images.jpg)
什么是 Sass?
Sass 介绍 什么是 Sass? 官方标语 世界上最成熟、最稳定、最强大的专业级 CSS 扩展语言。怎么理解这句话呢?我们平时写的 CSS 代码可以理解为静态样式语言,而 Scss 就是动态样式语言,何为动态?就是让你写 CSS 跟写 …...
![](https://img-blog.csdnimg.cn/fc5b35303fa04150b483aa7b7e6e9c9a.png#pic_center)
Kotlin~Memento备忘录模式
概念 备忘录模式是一种行为型设计模式,用于捕获和存储对象的内部状态,并在需要时将对象恢复到之前的状态。 备忘录模式允许在不暴露对象内部实现细节的情况下,对对象进行状态的保存和恢复。 角色介绍 Originator:原发器&#x…...
![](https://img-blog.csdnimg.cn/a19cf3bfa88e487bb085c66de6931203.png)
单链表的多语言表达:C++、Java、Python、Go、Rust
单链表 是一种链式数据结构,由一个头节点和一些指向下一个节点的指针组成。每个节点包含一个数据元素和指向下一个节点的指针。头节点没有数据,只用于表示链表的开始位置。 单链表的主要操作包括: 添加元素:在链表的头部添加新…...
![](https://www.ngui.cc/images/no-images.jpg)
微信小程序 background-image直接设置本地图片路径,编辑器正常显示,真机运行不显示解决方法
项目场景 微信小程序,设置background-image直接设置本地图片路径。 问题描述 编辑器正常显示,真机运行不显示 原因分析 background-image只能用网络url或者base64图片编码。 解决方案 1、将本地图片转为网络url后设置到background-image上 例如&…...
![](https://img-blog.csdnimg.cn/e7e5326423f4464b949165be43d5d940.png)
SQLite Studio 连接 SQLite数据库
1、在SQLite中创建数据库和表 1.1、按WINR,打开控制台,然后把指引到我们的SQLite的安装路径,输入D:,切换到D盘,cd 地址,切换到具体文件夹,输入“sqlite3”,启动服务 1.2、创建数据库…...
![](https://img-blog.csdnimg.cn/img_convert/082528a76b632fb017b38ab9aade2443.png)
【业务功能篇58】Springboot + Spring Security 权限管理 【中篇】
4.2.3 认证 4.2.3.1 什么是认证(Authentication) 通俗地讲就是验证当前用户的身份,证明“你是你自己”(比如:你每天上下班打卡,都需要通过指纹打卡,当你的指纹和系统里录入的指纹相匹配时&…...
![](https://img-blog.csdnimg.cn/c6046c1b93ff4e02b73c56511b451271.png)
Docker挂载目录失败问题解决
天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…...
![](https://www.ngui.cc/images/no-images.jpg)
css中隐藏页面中某一个元素有什么方法?
我们可以使用css的z-index属性,将元素的-index去给它设置一个负值,使它隐藏在其他元素的后面。使用css样式进行隐藏我们可以使用display这个属性。(1)使用display:none完全进行隐藏元素,并且不占据空间也不会影响页面布…...
![](https://www.ngui.cc/images/no-images.jpg)
Unity 多语言问题C#篇
DateTime.ToString()不同语言环境问题 问题描述:PlayerPrefs.SetString("timeKey", DateTime.Now.ToString());切换系统语言后DateTime.Parse(PlayerPrefs.GetString("timeKey"));报错FormatException: String was not recognized as a valid D…...
![](https://img-blog.csdnimg.cn/935070c2f0a54663baab64cff75b5495.png)
深度学习和神经网络
人工神经网络分为两个阶段: 1 :接收来自其他n个神经元传递过来的信号,这些输入信号通过与相应的权重进行 加权求和传递给下个阶段。(预激活阶段) 2:把预激活的加权结果传递给激活函数 sum :加权 f:激活…...
![](https://www.ngui.cc/images/no-images.jpg)
在CSDN学Golang云原生(Kubernetes Volume)
一,Volume 与 configMap Kubernetes 中的 Volume 和 ConfigMap 都是 Kubernetes 中常用的资源对象。它们可以为容器提供持久化存储和配置文件等。 Volume 可以将容器内部的文件系统挂载到宿主机上,也可以将多个容器间共享一个 Volume,并且 …...
![](https://www.ngui.cc/images/no-images.jpg)
第十五章 友元 异常和其他
RTTI RTTI是什么 RTTI是运行阶段类型识别,通过运行时类型识别,程序能够使用基类的指针或者引用来检查这些指针或者引用所指向的对象的实际派生类型。 RTTI的三个元素 dynamic_cast运算符 dynamic_cast概念: dynamic_cast运算符能够将基…...
![](https://img-blog.csdnimg.cn/31c6128b2f15480b9da46fa7e60bb3e2.png)
制作DBC文件
DBC文件是CAN通讯的密码本,Matlab的SimuLink中常用DBC作为CAN通讯的解析桥梁 制作DBC文件,内容是转速、位置&…...
![](https://img-blog.csdnimg.cn/f8174c4af80b4c5394c93421f7231a96.png)
【1.1】Java微服务:初识微服务
✅作者简介:大家好,我是 Meteors., 向往着更加简洁高效的代码写法与编程方式,持续分享Java技术内容。 🍎个人主页:Meteors.的博客 💞当前专栏: 微服务 ✨特色专栏: 知识分享 &#x…...
![](/images/no-images.jpg)
wordpress 锚点的设计/seo是什么平台
简介 C 标准库的 float.h 头文件包含了一组与浮点值相关的依赖于平台的常量。这些常量是由 ANSI C 提出的,这让程序更具有可移植性。在讲解这些常量之前,最好先弄清楚浮点数是由下面四个元素组成的: 组件组件描述S符号 ( /- )b指数表示的基…...
![](/images/no-images.jpg)
急求一张 网站正在建设中的图片/个人怎么在百度上做推广
最近在调试单片机程序,总是遇到一些开始认为不可思议的事情,后来解决了问题后发现,都是因为自己书写程序不严谨,其主要原因是没有注意c语言的数据类型的数据范围。 对有符号、无符号数据的使用存在误区,对类型转换理解…...
![](https://img-blog.csdnimg.cn/img_convert/de6082224261e6dc163eb77bb730a527.gif)
安贞街道网站建设/个人免费网站创建入口
写Java代码的时候,经常会涉及到重复性的操作,这个时候就会想要是有这样一个插件就好了,如果是大家都会遇到的场景,IDE或许已经提供了,再不然也有可能有人编写了相关的插件。要是这个操作是你们的编码环境特有的&#x…...
![](/images/no-images.jpg)
加盟营销型网站建设/网络营销成功案例介绍
我们经常使用CentOS做服务器系统,但是由于国内网络问题,通过yum下载软件的速度经常不理想,这时候,我们就需要修改yum源为国内源。 方法一:通过替换yum配置文件 备份yum源配置文件 mv /etc/yum.repos.d/CentOS-Base.r…...
![](http://s3.51cto.com/wyfs02/M01/47/0A/wKioL1P1vGDAPn7YAAMtnmI0M8I803.jpg)
临沂企业建站效果好/小程序拉新推广平台
应用环境: 操作系统: RedHat EL55 Oracle: Oracle 10gR2 Oracle DB_FILE_MULTIBLOCK_READ_COUNT是Oracle比较重要的一个全局性参数,可以影响系统级别及sessioin级别。主要是用于设置最小化表扫描时Oracle一次按顺序能够读取的数…...
![](/images/no-images.jpg)
购物手机网站建设/怎样建网站?
当我们谈及软件开发的生产力时,其实有相当多的因素在影响着。举凡程序人本身的素质、所使用的程序语言、应用程序框架(Application Framework)的选择、是否具备好的开发工具(例如IDE、程序代码产生器)、对开发环境的熟…...