- 博客(54)
- 收藏
- 关注
原创 转投go系列-谈谈profile工具
Golang自带profile作为性能监控和分析工具,可以进行cpu、内存、死锁分析。当看到下图说明开启分析工具成功,通过help命令可以查看具体操作方法。例如list xxx 方法,可以查看我们想看的可能有问题的方法。例如top方法,可以查看占用cpu的情况。
2022-09-16 17:53:30
2034
原创 转投go系列-atoi和itoa和iota的区别
Atoi和ItoA都是strconv标准库里面的方法:Atoi(ascii to integer)字符串转化为整数// Atoi is equivalent to ParseInt(s, 10, 0), converted to type int.func Atoi(s string) (int, error) {}ItoA (integer to ascii)整数转换成字符串// Itoa is equivalent to FormatInt(int64(i), 10).func It
2022-01-29 11:56:45
809
原创 转投go系列-指针操作与运算
静态语言与动态脚本语言有意思的是,可以直接操作指针,移动指针操作变量。我们都学过C++,当时也被指针操作所困扰。go确实不能直接操作指针,但是go提供了一个unsafe包可以这么样的操作。package unsafetype ArbitraryType inttype IntegerType inttype Pointer *ArbitraryTypefunc Sizeof(x ArbitraryType) uintptrfunc Offsetof(x ArbitraryType) uin
2021-12-20 15:41:53
332
原创 转投go系列-指针类型属主和值类型属主
在Go中,我们可以为struct声明一个方法,那么定义方法的时候到底加不加星号呢?package mainimport "fmt"type B struct { bb int}func (b B) BB() int { return b.bb}func (b *B) BB2() int { return (*b).BB()}func main() { b := B{bb: 123} p := &b f1 := b.BB f2 := p.BB g1 := p.
2021-12-07 13:57:53
313
原创 转投go系列-go与缓存
BigCache :Go实现的大容量缓存,会通过Hash的方式进行分片。GCache:Cache library for golang. It supports expirable Cache, LFU, LRU and ARC.geocache:是一种适用于基于LBS的应用程序的内存缓存。它使用地理位置作为存储项目的键。go-proxy-cache :redis的反向代理onecache:支持多种存储的缓存代码库, 如InMemory,Filesystem,Memcached,Redis...
2021-12-07 10:26:33
893
原创 转投go系列-go的引用类型和值类型
值类型:int,float,bool,string,array和 struct,直接存储值,内存通常在栈中分配引用类型(指针类型): point,slice,map,chan,interface和func,存储的是地址,这个地址指向的空间里面存储值,内存通常在堆上分配,由GC回收//值类型i := 111 i -----> 111//引用类型ch:=make([]int32,0) ch ------> 内存地址0xaaaaaa -----> 值new和m..
2021-12-01 18:42:32
762
原创 转投go系列-go需要线程池吗?
GMP调度模型,不做过多赘述。那么Golang 已经实现了 M:N 的用户态携程Goroutine,还要必要在 Golang 里实现goroutine池吗?个人感觉还是必要的,因为在某些情况下还是要限制一下并发量的。同时就算goroutine的开销低,当对性能要求高,并且goroutine里面执行的操作时间极小时,频繁创建goroutine进行调用也是不可取的。接下来实现一个控制并发量的pool,但是不保存goroutine。比较适合小项目。...
2021-11-29 17:09:48
568
原创 转投go系列-go与测试
介绍一些测试库,满足你的小好奇心。GOC:拥有中文版的文档,专为 Go 语言打造的一个综合覆盖率收集系统,尤其适合复杂的测试场景,比如系统测试时的代码覆盖率收集以及精准测试。assert: 简单易用的断言库baloo:http端到端的方式,简单易用wstest :websocket的端到端测试biff:这个比较秀,兼容目前比较火的BDD测试covergates:简单易用的代码覆盖率dbcleaner :如果你对测试数据所困扰,提供了一个清库工具frisby :RESTful测试jsonas
2021-11-26 12:11:44
134
原创 转投go系列-for循环出错问题
for循环错误反例:func main() { in := []int{1, 2, 3, 4, 5} out := make([]*int, 0) for _, v := range in { //v := v 打开注释即正确 out = append(out, &v) } fmt.Println("res:", *out[0], *out[1], *out[2])}期望结果:1,2,3实际结果:5,5,5原因:range出来的v是同一个地址,最后都指向了5.
2021-11-16 20:09:43
509
原创 转投go系列-channel 堵塞问题
channel是Go语言中的一个核心类型,可以把它看成管道。编程难度肯定是有一些的,哈哈。“Go 强调不要通过共享内存来通讯,而是通过通讯来共享内存。”很多人都说上面的话,具体怎么理解呢?chan是一种引用类型,引用类型 channel可用于多个 goroutine 通讯。其内部实现了同步,确保并发安全。举个例子:package mainimport "fmt"func main() { ch := make(chan int) go func() { for i
2021-11-16 17:54:21
838
原创 转投go系列-go语言需要注意的地方-结构体字段顺序对其
最近发现公司代码很多人定义结构体的时候不注意字段对其如下:type AuditTaskTemplateDetail struct { IsTemplate bool `json:"isTemplate"` //1 byte TemplateName string `json:"templateName"` //16 byte BatchCount int32 `json:"batchCount"` //4 byte}看起来上面好
2021-11-16 10:35:30
203
原创 转投go系列-go与数据库
下面给大家介绍几个数据库相关的库go-mysql : 处理 MySQL 协议的工具类库kingshard : 高性能的 MySQL 数据库中间件Orchestrator:MySQL高可用复制管理工具(可视化的!)dbq : 数据库sql库,支持MySQL和PostgreSQL。Dotsql : 不是ORM,不是sqlbuilder,是将 sql 文件保存在一个地方并且方便的取用的工具Squirrel : 一个sql buildersqrl:性能更好的 sql buildervitess:一
2021-11-03 22:59:27
116
原创 转投go系列-Gin框架-ShouldBind验证参数问题
今天发现前人(php转go的选手)的代码通过SholdBind方法不验证参数直接通过。严重怀疑代码使用方式不正确导致。原来前人的代码是这么使用的 c.SholdBind…func (con *Controller) Add(c *gin.Context) { var addReq *AddReq if err := c.ShouldBind(&addReq); err != nil { rsp.Errno = 0 rsp.Errmsg = err.Error() c.JSON(h
2021-10-22 16:23:50
1897
2
原创 转投go系列-go的垃圾回收和逃逸分析
go的垃圾回收和逃逸分析什么是GC?GC种类和Go用的哪个?根对象GC种类Go用的哪个?什么是GC?GC就是垃圾回收 “嘎壁纸” collectiongolang不需要对内存进行手动的申请和释放操作,GC会帮我们搞定,对比C/C++优势所在。GC 对我们几乎不可见,但是程序需要进行特殊优化时,可通过调用API解决。GC种类和Go用的哪个?根对象垃圾回收都是从根开始检查的,go里面都有哪些根呢?寄存器:可以理解为一个指针,指针可能指向某个分配好的堆内存区块执行栈:goroutine 包含自己的
2021-09-29 11:45:48
180
原创 转投go系列-goWeb框架
go完全可以代替php和nodejs等语言快速搭建web应用下面介绍一些框架:Beego 高性能web框架Gin 高性能web框架go-rest 高性能rest框架Fiber 类似于 nodejs里面的express框架Echo 非常简单的web框架Golf 功能强大且没有标准库以外的依赖vox 类似于nodejs里面的koa框架utron 一种MVC框架以上框架可以一键build出可执行文件,不需要任何宿主,瞬间感觉真香。如果想了解原理,可深入各框架的代码去了解。...
2021-09-28 14:59:02
97
原创 转投go系列-前言及目录
今天有人问我从其他脚本语音转go怎么学,本人原来做过一段时间游戏,会一些脚本语言,像nodejs,c#,转go一段时间了,跟大家普及一下go应该怎么学。小白教程,高手请路过~下面是学习路径go语言基础go模块go与其他语言特别要注意的地方go框架go与数据库go与缓存go日志go与测试go实时通讯go与游戏go与任务go微服务go其他丰富模块...
2021-09-27 20:33:58
123
原创 转投go系列-go语言基础
本人学习go之路,这个是我看的第一本书,分享给大家!简介和安装:Introduction1 - Introduction and Installation2 - Hello World变量:Variables, Types and Constants3 - Variables4 - Types5 - Constants方法和包:Functions and Packages6 - Functions7 - Packages条件:Conditional Statements and Loo
2021-09-27 19:56:27
107
原创 右键添加cmd 的 administer 账户执行
shift+右键 可以启动open command window here. 但是我们的win8或者win7 ,很多时候要求的是管理员administer账户打开cmd才能生效。我们又不想从C:\Windows\System32 文件夹开始去一步步找到目标文件夹,那怎么办好呢。我决定修改注册表,新建一个注册表文件,把右键里面的选项添加进去。 于是Windows Regi
2014-08-19 14:20:13
940
原创 C#制作一个消息拦截器(intercept)3
之前为InterceptAttribute的上下文环境添加了“Intercept”属性,Intercepted
2014-07-28 14:59:22
1945
原创 C#制作一个消息拦截器(intercept)1
首先,我们先要制作一个自定义Attribute,让他可以具有上下文读取功能,所以我们这个Attribute类要同时继承Attribute和IContextAttribute。接口IContextAttribute中有两个方法需要实现1、bool IsContextOK(Context ctx, IConstructionCallMessage msg);2、void GetP
2014-07-25 17:03:19
2729
原创 wp下使用Timer 还是DispatcherTimer?
DispatcherTimer属于UI线程,Timer非UI线程,运行在后台。 DispatcherTimer里面执行等待动作或者时间过长,可能会导致UI假死。但是 Timer的 TimerCallback 委托指定希望 Timer 执行的方法。 计时器委托在构造计时器时指定,并且不能更改。所以用什么要随情况而定。下面是实现代码:public parti
2014-07-24 17:22:27
775
转载 C#获取当前程序运行路径的方法集合
//获取当前进程的完整路径,包含文件名(进程名)。string str = this.GetType().Assembly.Location;result: X:\xxx\xxx\xxx.exe (.exe文件所在的目录+.exe文件名)//获取新的 Process 组件并将其与当前活动的进程关联的主模块的完整路径,包含文件名(进程名)。string str = System.
2014-07-24 17:21:24
694
原创 cross-thread access exception异常;跨线程异常解决办法
Deployment.Current.Dispatcher.BeginInvoke(() => 要执行的函数);用来操作UI线程。
2014-07-24 17:20:51
814
原创 IIS部署错误500.19,注册asp.net
重新注册一下AspNet,具体步骤如下1 打开运行,输入cmd进入到命令提示符窗口。2 进入到C:\Windows\Microsoft.NET\Framework\v4.0.30319 目录。3 输入aspnet_regiis.exe –i 执行既可
2014-07-24 17:19:44
740
原创 Win8 如何共享网络wifi
第一步: win+x 后选择 命令提示符(管理员 ) 第二步:输入netsh wlan set hostednetwork mode=allow ssid=什么什么 key=什么什么 (id是wifi名字,key是密码 )第三步:打开 网络和共享中心 的 更改适配器设置 (在左方偏上的位置 )
2014-07-24 17:18:52
592
原创 查询第n条到第m条数据的sqlserver语句(其主键已经不再连续)
主键不连续,不能用select * from tablename where id between n and m最直接方案select top m * from tablename where id not in (select top n id from tablename order by id)order by idsq
2014-07-24 17:17:03
1216
1
原创 解决windows图标和程序真正图标不一致的问题。
有时候我们会遇到这样的问题。为什么我们的windows 上面的图片乱了? 一个jpg的图片的图标变成了某个应用的图标。本来是游戏的快捷方式却变成了记事本的图标。出现这样问题的原因在于 我们的windows系统图标缓存文件 被破坏的原因。解决办法,把该文件删除,重启,即可。‘下面是不同系统的缓存文件路径:
2014-07-24 17:15:22
5276
转载 小技巧帮你完成创意十足的网页设计
作为一名设计师,每年都会沉浸在一些新的设计趋势中兴奋不已。接下来,我们将探寻2013年的最新设计趋势,这绝对是意义非凡的事情。Web设计师必须洞悉所有相关领域的新趋势,紧跟时尚潮流。这些新趋势让设计变得妙趣横生。但是很多专家还会倡导那些并非最时髦、最震撼世界的设计。当然,响应式设计不仅去年是热点,今年依然还会被人们重视。同样,栅格化设计作为最基本的设计,也会被继续延续下去。这次,我
2014-07-24 17:15:02
736
原创 win8需要安装.Net Framework3.5时候不需要下载的办法
把鼠标移动到屏幕左下角,出现“开始”,在上面按右键,选择“命令提示符(管理员)”,再点“是”,出现一个黑窗口,假设你的 Windows 8 安装盘是 G: ,那么复制下面内容,在黑窗口中按右键,选择“粘贴”,然后按 Enter 执行,安装盘是别的盘符就把 G 改成那个盘符,等一会就安装成功了。dism.exe /online /enable-feature /featurename:Net
2014-07-24 17:09:43
678
原创 C#如何获得服务器上的物理路径
System.Web.HttpContext.Current.Server.MapPath("/")获得应用程序根目录所在的位置.Server.MapPath("./")获得所在页面的当前目录,等价于Server.MapPath("")Server.MapPath("../")获得所在页面的上级目录。Server.
2014-07-24 17:08:28
1453
转载 using的几种用法
1.using指令:using + 命名空间名字,这样可以在程序中直接用命令空间中的类型,而不必指定类型的详细命名空间,类似于Java的import,这个功能也是最常用的,几乎每个cs的程序都会用到。例如:using System; 一般都会出现在*.cs中。2.using语句:定义一个范围,在范围结束时处理对象。当在某个代码段中使用了类的实例,而希望无论因为什么原因,
2014-07-24 17:08:20
549
原创 Notepad++修改设置保存不住无法保存的问题
在用PHP的时候,用Notepad++编程,发现我的Win8.1修改其主题等等的设置时,再次进入并没有保存。其实原因是打开该程序的权限不够,修改不了Notepad++的配置文件。解决方案:以管理员的身份运行就ok了!
2014-07-24 17:04:10
6388
3
原创 PHP和.net等从XML文件中读取的\n或\r\n不能换行。
XML文件中的"\n",会被认为是一个字符串""是两个字符'\'和'n',而不是转义字符"\n",这个时候,肯定不能换行。解决方案C#:string.replace("\\n","\n");PHP:$str = str_replace("\\n","\n",$str); 即把字符串中的\\n 转换为\n如果你想换行,当然xml中的字符串可以设置一个你自己喜欢
2014-07-24 17:02:56
1907
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人