golang启动一个简单的http服务

2019-5-31 张宇童

package main
 
import (
    "fmt"
    "log"
    "net/http"
)
 
// w表示response对象,返回给客户端的内容都在对象里处理
// r表示客户端请求对象,包含了请求头,请求参数等等
func index(w http.ResponseWriter, r *http.Request) {
    // 往w里写入内容,就会在浏览器里输出
    fmt.Fprintf(w, "Hello golang http!")
}
 
func main() {
    // 设置路由,如果访问/,则调用index方法
    http.HandleFunc("/", index)
 
    // 启动web服务,监听9090端口
    err := http.ListenAndServe(":9090", nil)
    if err != nil {
        log.Fatal("ListenAndServe: ", err)
    }
}

评论(0) 浏览(420)

go语言发送Get请求

2019-5-30 张宇童 关注网络

// 第一行代码不解释了
pakcage main

// 引入所需的包
import(
    "fmt"
    "net/http"
    "net/http/httputil"
)

// 入口函数
func main () {
    // 创建一个HTTP请求
    request,err := http.NewRequest(http.MethodGet,"http://www.baidu.com",nil);
    if err != nil {
        panic(err);
    }   
    // 可以写入一些头部信息
    request.Header.Add();
    // 加入头部信息
    resp,err := http.DefaultClient.Do(request);
    if err != nil {
        panic(err);
    }
    // 发送请求
    s,err := http.DumpResponse(resp,true);
    if err != nil {
        panic(err);
    }
    // 打印输入结果
    fmt.Println(string(s));
}

评论(0) 浏览(457)

go语言的字符串缓存

2019-5-30 张宇童 关注网络

最近在学习go语言。看到了一些不错的案列;
package main

import(
    "fmt"
    "bytes"
)

func main () {
    var a string = "一个字符串";
    var b string = "两个字符串";
    // 申明一个字节缓冲
    var stringBuilder bytes.Buffer;
    // 将字符串放入缓冲区
    stringBuilder.WriteString(a);
    stringBuilder.WriteString(b);
    // 将缓冲区字符串取出
    fmt.Println(stirngBuilder.string());
}

评论(0) 浏览(538)

PHPExcel 样式调整手册

2019-5-30 张宇童 关注网络

// 引用phpexcel类
            $this->load->library('PHPExcel');

            // 创建对象
            $objPHPExcel = new PHPExcel();

            // 显示错误信息
            error_reporting(E_ALL);

            // Set properties
            $objPHPExcel->getProperties()->setCreator("1245049149@qq.com")
                ->setLastModifiedBy("1245049149@qq.com")
                ->setTitle("Office 2007 XLSX Test Document")
                ->setSubject("Office 2007 XLSX Test Document")
                ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")
                ->setKeywords("office 2007 openxml php")
                ->setCategory("Test result file");

            // 字体和样式
            $objPHPExcel->getActiveSheet()->getDefaultStyle()->getFont()->setSize(12);      //字体大小
            $objPHPExcel->getActiveSheet()->getStyle('A2:D2')->getFont()->setBold(false); //第二行是否加粗
            $objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setBold(true);      //第一行是否加粗
            $objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setSize(16);         //第一行字体大小
            $objPHPExcel->getActiveSheet()->getStyle('A2')->getFont()->setSize(14);         //第二行字体大小
            $objPHPExcel->getActiveSheet()->getStyle('A6')->getFont()->setSize(14);         //第六行字体大小
            $objPHPExcel->getActiveSheet()->getStyle('A11')->getFont()->setSize(14);         //第十一行字体大小

            // 设置垂直居中
            $objPHPExcel->getActiveSheet()->getStyle('A1')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
            $objPHPExcel->getActiveSheet()->getStyle('A2:D2')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);

            // 设置水平居中
            $objPHPExcel->getActiveSheet()->getStyle('A1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
            $objPHPExcel->getActiveSheet()->getStyle('A3:G5')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
            $objPHPExcel->getActiveSheet()->getStyle('A7:G10')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
            $objPHPExcel->getActiveSheet()->getStyle('A12:B15')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);

            //设置左对齐
            $objPHPExcel->getActiveSheet()->getStyle('A2')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
            $objPHPExcel->getActiveSheet()->getStyle('A6')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
            $objPHPExcel->getActiveSheet()->getStyle('A11')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);

            // 设置行高度
            $objPHPExcel->getActiveSheet()->getDefaultRowDimension()->setRowHeight(20); //设置默认行高
            $objPHPExcel->getActiveSheet()->getRowDimension('1')->setRowHeight(30);    //第一行行高

            //设置单元格宽度
            $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(20);
            $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(20);
            $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(20);
            $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(20);
            $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(20);
            $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(20);
            $objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(20);

            // 合并
            $objPHPExcel->getActiveSheet()->mergeCells('A1:G1');
            $objPHPExcel->getActiveSheet()->mergeCells('A2:G2');
            $objPHPExcel->getActiveSheet()->mergeCells('A6:G6');
            $objPHPExcel->getActiveSheet()->mergeCells('A11:B11');

            // 设置内容
            $objPHPExcel->setActiveSheetIndex(0)
                ->setCellValue('A1', '利润核算统计')
                ->setCellValue('A2', '【用户充值】')
                ->setCellValue('A3', '费率')
                ->setCellValue('B3', '笔数    ')
                ->setCellValue('C3', '充值进账')
                ->setCellValue('D3', '手续费')
                ->setCellValue('E3', '利润')
                ->setCellValue('A4', '1.0%')
                ->setCellValue('B4', $pay_log_list['aa'])
                ->setCellValue('C4', $pay_log_list['bb'])
                ->setCellValue('D4', $pay_log_list['cc'])
                ->setCellValue('E4', $pay_log_list['dd'])
                ->setCellValue('A5', '合计')
                ->setCellValue('B5', $pay_log_list['ee'])
                ->setCellValue('C5', $pay_log_list['ff'])
                ->setCellValue('D5', $pay_log_list['gg'])
                ->setCellValue('E5', $pay_log_list['hh'])
                ->setCellValue('A6', '【用户提现】')
                ->setCellValue('A7', '类别')
                ->setCellValue('B7', '笔数')
                ->setCellValue('C7', '申请提现')
                ->setCellValue('D7', '手续费')
                ->setCellValue('E7', '快钱提现')
                ->setCellValue('F7', '手续费')
                ->setCellValue('G7', '利润')
                ->setCellValue('A8', '收取手续费')
                ->setCellValue('B8', $withdraw_list['ii'])
                ->setCellValue('C8', $withdraw_list['kk'])
                ->setCellValue('D8', $withdraw_list['ll'])
                ->setCellValue('E8', $withdraw_list['mm'])
                ->setCellValue('F8', $withdraw_list['nn'])
                ->setCellValue('G8', $withdraw_list['oo'])
                ->setCellValue('A9', '未收取手续费')
                ->setCellValue('B9', $withdraw_list['pp'])
                ->setCellValue('C9', $withdraw_list['qq'])
                ->setCellValue('D9', $withdraw_list['rr'])
                ->setCellValue('E9', $withdraw_list['ss'])
                ->setCellValue('F9', $withdraw_list['tt'])
                ->setCellValue('G9', $withdraw_list['ww'])
                ->setCellValue('A10', '合计')
                ->setCellValue('B10', $withdraw_list['uu'])
                ->setCellValue('C10', $withdraw_list['vv'])
                ->setCellValue('D10', $withdraw_list['xx'])
                ->setCellValue('E10', $withdraw_list['yy'])
                ->setCellValue('F10', $withdraw_list['zz'])
                ->setCellValue('G10', $withdraw_list['aaa'])
                ->setCellValue('A11', '【利润汇总】')
                ->setCellValue('A12', '充值手续费收')
                ->setCellValue('B12', $all_summary['bbb'])
                ->setCellValue('A13', '提现手续费支')
                ->setCellValue('B13', $all_summary['ccc'])
                ->setCellValue('A14', '快钱提现手续费支')
                ->setCellValue('B14', $all_summary['ddd'])
                ->setCellValue('A15', '利润')
                ->setCellValue('B15', $all_summary['eee']);

            // Rename sheet
            $objPHPExcel->getActiveSheet()->setTitle('利润核算表');

            // Set active sheet index to the first sheet, so Excel opens this as the first sheet
            $objPHPExcel->setActiveSheetIndex(0);

            // 设置输出
            $tableName = '利润核算表【'.$st.'--'.$et.'】';
            header('Content-Type: application/vnd.ms-excel');
            header('Content-Disposition: attachment;filename="' .$tableName. '.xls"');
            header('Cache-Control: max-age=0');

            $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
            $objWriter->save('php://output');
            exit;

评论(0) 浏览(471)

[整理]golang文件复制操作

2019-5-26 张宇童 关注网络

package main

import(
	"fmt"
	"os"
	"io"
)

func main () {
	var a string;
	var b string;
	fmt.Println("请输入源文件名:");
	fmt.Scanf("%s",&a);
	fmt.Println("请输入目标文件名:");
	fmt.Scanf("%s",&b);

	fp1,err := os.Open(a);
	if err != nil {
		fmt.Println("打开源文件失败");
	}

	fp2,err1 := os.Create(b);
	if err1 != nil {
		fmt.Println("创建目标文件失败");
	}

	var c = make([]byte,10);
	// var d []byte;
	for {
		n,err := fp1.Read(c);
		if err == io.EOF {
			fmt.Println("恭喜,复制完成");
			break;
		}
		fp2.Write(c[:n]);
	}
}

评论(0) 浏览(414)

[整理]golang文件操作

2019-5-26 张宇童 关注网络

package main 

import(
	"fmt"
	"os"
	"io"
)

func main () {
	fp,err := os.OpenFile("1.php",os.O_RDWR,6);
	if err != nil {
		fmt.Println(err);
	}
	var a []byte;
	var b = make([]byte,10);
	for {
		n,err := fp.Read(b); 
		if err == io.EOF{
			break;
		}
		a = append(a,b[:n]...);
	}
	fmt.Println(string(a));
}

评论(0) 浏览(437)

[整理]golang字符串处理函数

2019-5-26 张宇童 关注网络

import(
    "strings"
)

contains(str1,str2) bool; 查找字符串,是否能找到指定str2字符串;
index(str1,str2) int; 查找指定位置的字符串;
repeat(str,int) string; 重复字符串;
replace(str,old,new,int) 替换str中的old为new 替换N次,-1为全部替换;
split(str,","); 分割字符串;
join([]string,",");链接字符串
trim(str," ");去掉str两端的空格;
fields(str);去除字符串所有空格;


import(
    "strconv"
)

formatBool(bool);将布尔值转换为字符串;
formatInt(int,进制);将整数转换为字符串最高36进制
formatFloat(float,f,保留小数点位数);将浮点型转换诶字符串
Itoa(int);将整数转换为字符串;
parseInt(str,10,64);将字符串转换为整数
appendInt(slice,10,base);追加到切片

评论(0) 浏览(497)

Golang new和 make的区别

2019-5-15 张宇童

Go提供了两种分配原语,即new和make。它们所做的事情是不一样的,所应用的类型也不同。

new用来分配内存,但与其他语言中的同名函数不同,它不会初始化内存,只会讲内存置零;也就是说,new(T)会为类型为T的新项分配已置零的内存空间,并返回他的地址,也就是一个类型为*T的值。用Go的术语来说,它返回一个指针,改指针指向新分配的,类型为T的零值;

make的目的不同于new,它只用于slice,map,channel的创建,并返回类型为T(非指针)的已初始化(非零值)的值;出现这种差异的原因在于,这三种类型本质上为引用类型,它们在使用前必须初始化;

小结:
new和make都在堆上分配内存,但是它们的行为不同,适用于不同的类型。

new(T) 为每个新的类型T分配一片内存,初始化为 0 并且返回类型为*T的内存地址:这种方法 返回一个指向类型为 T,值为 0 的地址的指针,它适用于值类型如数组和结构体;它相当于 &T{}。

make(T) 返回一个类型为 T 的初始值,它只适用于3种内建的引用类型:slice、map 和 channel。

换言之,new 函数分配内存,make 函数初始化;下图给出了区别:

通过实验,可以更直观的查看两者之间的区别

1111.png 2222.png

评论(0) 浏览(728)

Go范围实例

2019-5-14 张宇童

这里使用范围来对切片中的数字求和。数组也是可以这样使用的。
数组和切片上的范围提供每个条目的索引和值。上面不需要索引,所以忽略它与空白标识符_。 有时候实际上想要索引。
范围在映射上迭代键/值对。
范围也可以遍历映射中的键。

字符串上的范围在Unicode代码点上迭代。第一个值是符文的起始字节索引,第二个是符文本身。

range.go的完整代码如下所示 

F:\worksp\golang>go run range.go sum: 9 index: 1 a -> apple
b -> banana
key: a
key: b 0 103 1 111

评论(0) 浏览(333)

Golang 学习笔记

2019-5-9 张宇童

静态 强类型 编译型语言

GO语言适用场景及GO语言的优势
Go语言是谷歌推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:
我们之所以开发Go,是因为过去10多年间软件开发的难度令人沮丧。

Go是谷歌2009发布的第二款编程语言。该奖项授予在2009年市场份额增长最多的编程语言。
谷歌资深软件工程师罗布·派克(Rob Pike)表示,“Go让我体验到了从未有过的开发效率。”派克表示,和今天的C++或C一样,Go是一种系统语言。他解释道,“使用它可以进行快速开发,同时它还是一个真正的编译语言,我们之所以现在将其开源,原因是我们认为它已经非常有用和强大。

阅读全文>>

评论(0) 浏览(365)

Powered by emlog