自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 收藏
  • 关注

原创 interface

确保类型实现接口(依赖编译器)type Jedi interface { HasForce() bool}type Knight struct {}var _ Jedi = (*Knight)(nil)orvar _ Jedi = new(Knight)func main() {}func (Knight) HasForce() bool { return f...

2019-09-19 21:31:12 116

原创 关于多返回值

a, err := test()if err != nil { println(a)}a, err := test()//错误 因为a和err变量都已经在上面声名b, err := test()//正确,但是不会重新创建err,因为上面已经有了//“_”不能作为返回值//例1var err errorerr = errors.New("")//1if true {...

2019-09-19 21:29:26 158

原创 golang不安全指针

结构体的成员变量在内存存储上是一段连续的内存结构体的初始地址就是第一个成员变量的内存地址 基于结构体的成员地址去计算偏移量。就能够得出其他成员变量的内存地址unsafe.Pointer是一个指针类型值不能被取消引用? 如果unsafe.Pointer变量仍然有效,则由unsafe.Pointer变量表示的地址处的数据不会被GC回收 实质是int类型 不可以参与指针运算ui...

2019-09-19 09:05:51 365

原创 swoole学习笔记

swoole是php的一个扩展,主打高性能的网络编程扩展,由于扩展使用c语言编写,性能上会比php实现的框架快很多。而且因为swoole的内部实现给php提供了比apache+php更多的灵活性。接触swoole也已经有1年有余,在公司项目也使用了swoole为app提供功能服务。春节期间在家为了能更好的使用swoole,深入的了解内部实现,于是特别去阅读了swoole主要的核心源码。为了阅读c代...

2018-03-05 23:03:48 454

原创 guetzli图片压缩php扩展

前言:在github的发现一个谷歌开源的jpeg格式图片的压缩工具,它可以在主观质量无损的条件下, 将jpeg图片减少20%~30%的码率,于是当时测试了一下压缩效果,图片质量95压缩率大概在20%~30%。我们司平台是漫画阅读app,整个app除了图片还是图片,特别是首页,用了大量的高清无码的图片,于是我想将guetzli用于首页漫画封面图片的压缩,但是guetzli并没有提供php的接口,所以

2017-12-08 16:11:16 1370

原创 编译安装lmap环境

sudo apt-get install openssh-server(安装ssh服务后xshell才能进行连接)echo $?(这条命令可以检查配置是否有错误,返回0)libc++ 为LLVM 项目重新编写,包含C++ 11 标准库。Libstdc++ 是标准的C++ 库。 g++ 编译器正确运行需要它。zlib 是提供資料壓縮之用的函式庫GLib是GTK+和GNOM

2017-12-08 09:33:49 593

原创 单例模式

class SingletonMode{ //1.静态属性,用于存储new的对象 //2.因为是静态属性,所以在整个php生命周期会永久存在 private static $obj; //1.私有构造函数 //2.当前类只能在内部实例化,而无法在外部实例化 private function __construct() {} //getObj用于外部获取实例化的对象 //只能通过

2016-10-22 11:51:53 146

原创 const关键字

有关于const int *pId、int const *pId、int *const pId;const int *pId  //可以修改指针变量pId的值,但是不能修改指针变量pId指向地址的值示例代码:int id1 = 20;int id2 = 60;const int *pId = &id1;//*pId = 100;   //报错pId = &id2

2016-10-21 11:03:40 164

原创 基础知识

C语言的编译分为四个阶段:    .c文件->.i文件(预编译) 宏就是发生在预处理阶段单纯的字符串替换(宏不考虑C的语法)   linux下可以在编译命令后面加上 "-E"  意思是只执行预编译    .i文件->.s文件(编译)    .s文件->.o文件(汇编)    .o文件->可执行文件(连接)变量的声明和定义1、建立空间存储的声明称为定义,不需要

2016-10-21 11:02:07 147

原创 指针与数组

指针与数组1、C语言在表达式中把一个类型为T的数组的左值当作是指向该数组第一个元素的指针。2、一个数组就是一个地址,一个指针就是一个地址的地址。3、对数组的引用如a[i]在编译时总是被编译器改写成*(a+i)。4、把传递给函数的数组参数转换为指针是出于效率的考虑。指针与数组并不相同     1、 数组和指针在编译器处理时是不同的,在运行时的表示形

2016-10-21 10:55:44 228

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除