C++ 动态数组初始化

int *pia = new int[10];//array of 10 uninitializedints此new表达式分配了一个含有 10 个int型元素的数组,并返回指向该数组第一个元素的指针,此返回值初始化了指针pia。在自由存储区中创建的数组对象是没有名字的,只能通过其地址间接地访问堆中的对象。注意:C++使用new和delete在堆(自由存储区)上分配和释放动态数组。 Read More

PHP-FPM Configuration

pmstrin设置进程管理器如何管理子进程。可用值:static,ondemand,dynamic。必须设置。static- 子进程的数量是固定的(pm.max_children)。ondemand- 进程在有需求时才产生(当请求时才启动。与 dynamic 相反,在服务启动时pm.start_servers就启动了。dynamic- 子进程的数量在下面配置的基础上动态设置:pm.max_children,pm.start_servers,pm.min_spare_servers,pm.max_spare_servers。pm.max_childreninpm设置为static时表示创建的子进程的数量,pm设置为dynamic时表示最大可创建的子进程的数量。必须设置。该选项设置可以同时提供服务的请求数限制。类似 Apache 的 mpm_prefork 中 MaxClients 的设置... Read More

三分钟掌握Go mod常用与高级操作

使用go module之后,go get 拉取依赖的方式就发生了变化下载项目依赖go get ./...拉取最新的版本(优先择取 taggo get golang.org/x/text@lates拉取 master 分支的最新 commigo get golang.org/x/text@maste拉取 tag 为 v0.3.2 的 commigo get golang.org/x/text@v0.3.拉取 hash 为 342b231 的 commit,最终会被转换为 v0.3.2go get golang.org/x/text@342b2指定版本拉取,拉取v3版本go get github.com/smartwalle/alipay/v Read More

Golang 调度器 GMP 原理与调度全分析

该文章主要详细具体的介绍 Goroutine 调度器过程及原理,可以对 Go 调度器的详细调度过程有一个清晰的理解,花 费 4 天时间作了 30 + 张图 (推荐收藏),包括如下几个章节。我们知道,一切的软件都是跑在操作系统上,真正用来干活 (计算) 的是 CPU。早期的操作系统每个程序就是一个进程,知道一个程序运行完,才能进行下一个进程,就是 “单进程时代” Read More

C 和 C++ 运算符优先级

所有的C语言运算符都被C++语言支持。C语言不支持运算符重载[1]。在不重载时,运算符&&、||、,(逗号运算符),在第一个操作数求值之后有一个顺序点。大部分C与C++运算符也可用于其它程序设计语言如C#、Java、Perl、PHP等,具有相同的优先级、结合性与语义。以下是C++编程语言中的所有运算符的优先级和结合性列表。参考[1]. C和C++运算符 - 维基百科. https://zh.wikipedia.org/wiki/C%E5%92%8CC%2B%2B%E9%81%8B%E7%AE%97%E5%AD%9 Read More

Java 内存模型

概述jvm 入门篇,想要学习jvm,必须先得了解JVM内存模型,JVM内存模型,JVM内存模型,JVM内存模型,JVM内存模型。重要的事情说多遍。内存划分java虚拟机按照运行时内存使用区域划分如图区域是否线程共享是否会内存溢出程序计数器否不会java虚拟机栈否会本地方法栈否会堆是会方法区是会 Read More

Java 垃圾回收机制

一、垃圾回收机制的意义  Java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不再需要考虑内存管理。由于有个垃圾回收机制,Java中的对象不再有“作用域”的概念,只有对象的引用才有“作用域”。垃圾回收可以有效的防止内存泄露,有效的使用空闲的内存。  ps:内存泄露是指该内存空间使用完毕之后未回收,在不涉及复杂数据结构的一般情况下,Java的内存泄露表现为一个内存对象的生命周期超出了程序需要它的时间长度,我们有时也将其称为“对象游离”。 Read More

GO 垃圾回收机制

垃圾回收(Garbage Collection,简称GC)是编程语言中提供的内存管理功能。在传统的系统级编程语言(主要指C/C++)中,程序员定义了一个变量,就是在内存中开辟了一段相应的空间来存值。由于内存是有限的,所以当程序不再需要使用某个变量的时候,就需要销毁该对象并释放其所占用的内存资源,好重新利用这段空间。在C/C++中,释放无用变量内存空间的事情需要由程序员自己来处理。就是说当程序员认为变量没用了,就手动地释放其占用的内存。但是这样显然非常繁琐,如果有所遗漏,就可能造成资源浪费甚至内存泄露。当软件系统比较复杂,变量多的时候程序员往往就忘记释放内存或者在不该释放的时候释放内存了。这对于程序开发人员是一个比较头痛的问题。为了解决这个问题,后来开发出来的几乎所有新语言(java,python,php等等)都引入了语言层面的自动内存管理 – 也就是语言的使用者只用关注内存的申请而不必关心... Read More

Using Go Module

IntroductioThis post is part 1 in a series.Part 1 — Using Go Modules(this post)Part 2 —Migrating To Go ModulesPart 3 —Publishing Go ModulesPart 4 —Go Modules: v2 and BeyonGo 1.11 and 1.12 include preliminarysupport for modules, Go’snew dependency management systemthat makes dependency version information explicit and easier to manage. This blog post is an introduction to the basic operations nee... Read More

convert json to map/struct in golang

Go offers built-in support for JSON encoding and decoding, including to and from built-in and custom data types.We’ll use these two structs to demonstrate encoding and decoding of custom types below.Only exported fields will be encoded/decoded in JSON. Fields must start with capital letters to be exported.First we’ll look at encoding basic data types to JSON strings. Here are some examples for ato... Read More

C++ memset 的使用

在竞赛时使用 memset 发现初始化的默认值无法生效,后来发现我对 memset 的参数的理解有误。void * memset ( void * ptr, int value, size_t num );将指针 ptr 所指向的内存块中前 num 个字节,用 value 替换。注意,这里面的 value 是一个字节的值。下面谈及两个场景,初始化为 0。memset(a,0,sizeof(a));初始化“最大值”,之所以加上引号,是因为并不是真正的最大值。但是能够带来最大值的效果的同时,还能带来一些好处。memset(a,0x3f,sizeof(0x3f));0x3f3f3f3f 代表的十进制数值是 1061109567 是 10^9,和 32 位的有符号整型的最大值是一个量级。而往往,数据在一般情况下都是小于 10^9 的。所以,可以达到替换最大值的效果0x3f3f3f3f + 0x3f... Read More

为什么C语言不会过时?

这是C语言系列博客的第3篇,如果对前2篇感兴趣,可以点击下面的链接:什么教材适合零基础的C语言学习者?为什么C语言很难评价任何一门编程语言,都是招人骂的。 永远是这样。就像是春寒料峭的季节, 街上穿棉袄和穿单衣的擦肩而过,双方一定是同时在心里出现了两个字:“傻逼!”这个在心理学上有个专业的名字:叫做“二逼”现象那我为啥还要做这个挨骂的事呢?作为《C语言点滴》《drop of knowledge of C++》书籍的作者,《C语言新思维,第二版》的译者。我觉得我有责任系统的介绍一下这本语言,他的特点,还有他的未来。这个问题对很多刚刚踏入程序猿这个行业的新手至关重要。因为他们有深深的担忧,万一C语言就像Fortran,perl语言那样过时了怎么办?为什么C语言不会过时?先上一个表,这个就是著名的TIOBE语言排行榜。目前它是一个最权威的一个语言流行度的排行榜,从这个排行榜上看,你会得到一个... Read More

[iOS Swift 学习笔记]面向对象篇

http://blog.ihuxu.com/ios-swift-learning-notes-summary在👆,可以查看所有关于[iOS Swift学习笔记]主题相关的文章关键点在Swift中,默认同一个项目中(同一个命名空间下),所有的类都是共享的,不需要impor构造函数作用给成员分配空间初始化成员变量调用父类的构造函数 - 给父类属性分配空间 & 设置初始值如果子类重载父类的构造函数,且子类没有重写父类的构造函数,那么此时子类不会对外部提供init方法了关键字init 构造函数override 重写orderload 重载KVC构造函数定义模型属性的时候,如果是对象,通常是可选在需要的时候创建避免写构造函数,可以简化代码如果是基本数据类型,不能设置成可选的,而且要设置初始值,否则KVC会崩溃如果需要使用 KVC 设置数值,这个属性不能是 private 的使用KVC方法之前,应... Read More