八个基础排序
sort排序
std::sort( )函数是库函数提供的排序函数,必须包括头文件#include <algorithm>,它使用的排序方法是类似于快排的方法,时间复杂度为n*log2(n)
Sort函数有三个参数:(第三个参数可不写)
……std::sort( )函数是库函数提供的排序函数,必须包括头文件#include <algorithm>,它使用的排序方法是类似于快排的方法,时间复杂度为n*log2(n)
Sort函数有三个参数:(第三个参数可不写)
……有整数字符串,"13579", 和 "246810". 请写一个函数把这两个字符串转化为整数
步骤:
//atoi.cc
#include <stdio.h>
int my_atoi(char *str)
{
bool bmin = false;
int result = 0;
//先判断正负
if ((*str > '9' || *str < '0') && (*str == '+' || *str == '-'))
{
if (*str == '-') bmin = true;
str++;
}
while (*str != '\0')
{
if (*str > '9' || *str < '0') break;
//printf("befter str: %s\n", str);
result = result * 10 + (*str++ - '0');
//printf("after str: %s\n", str);
}
if (*str != '\0') return 0;
return bmin ? -result : result;
}
int main()
{
char a[] = "13579";
char b[] = "246810";
printf("a: %d\n", my_atoi(a));
printf("b: %d\n", my_atoi(b));
}
编译&运行
……云风的coroutine是通过ucontext来控制程序运行时上下文的,我们来根据该库提供的几个接口,和一个demo来解释协程的运行原理。如果不了解ucontext的,建议先了解ucontxt
下载代码 & 编译
……最近在研究协程的实现原理,看了云风的coroutine和腾讯的开源库libco后,原来要实现一个协程库也没那么难。我先来讲讲云风的coroutine库。他使用的是 uncontext来保存程序运行上下文,进而实现协程库,这个库很值深入了解一番,吃透了这个库,协程的原理也就了解了。
golang有三种方式实现定时器:
通过 time.NewTicker(d)的方式实现定时器
d := time.Duration(time.Second * 2)
t1 := time.NewTicker(d)
defer t1.Stop()
go func() {
for {
<- t1.C
fmt.Println("NewTicker...")
}
}()
通过 time.NewTimer(d)的方式实现定时器
……编写lua程序求解百鸡百钱问题。公鸡5元一只,母鸡3元一只,小鸡一元3只,问100元钱买100只鸡,可买公鸡、母鸡、小鸡各多少只?
-----------------------------------------------------------------------------
--公鸡5元一只,母鸡3元一只,小鸡一元3只,问100元钱买100只鸡,可买公鸡、母鸡、小鸡各多少只?
-----------------------------------------------------------------------------
local maxprice = 100 --总价
local maxnum = 100 --总数量
local malePrice = 5 --公鸡价格
local femalePrice = 3 --母鸡价格
local smallPrice = 1/3 --小鸡价格
for malenum = 0, 20 do --公鸡的最大数量=100/4
for femalenum = 0, 34 do --母鸡的数量最大值=100/3
for smallnum = 0, 300 do --小鸡的数量最大值=100*3
local tolsum = malenum * malePrice + femalenum * femalePrice + smallnum * smallPrice
local num = malenum + femalenum + smallnum
if tolsum == 100 and num == 100 then
print(string.format("小鸡:%d只,母鸡:%d只,公鸡:%d只\n",smallnum, femalenum, malenum))
end
end
end
end
输出
……最近要在http接口上加一个token认证,但是接口很多,有没有一个省时省力的办法来解决。token的使用流程是:
net/http库写的。为了实现目的,还需要添加的功能是:JWT身份认证可以解决第一个问题,mux.Router的Use方法函数可以作为一个中间件, 拦截请求。func (r *Router) Use(mwf ...MiddlewareFunc) {
for _, fn := range mwf {
r.middlewares = append(r.middlewares, fn)
}
}
下载地址:
……最近在学习 云风的skynet库,想自定义一个模块,目标是使用lua调用C/C++所编写的库。
当我们需要在Lua里面调用c/c++函数时,所有的函数都必须满足以下函数签名:
typedef int (*lua_CFunction) (lua_State *L);
换句话说,所有的函数必须接收一个lua_State作为参数,同时返回一个整数值。因为这个函数使用Lua栈作为参数,所以它可以从栈里面读取任意数量和任意类型的参数。而这个函数的返回值则表示函数返回时有多少返回值被压入Lua栈。(因为Lua的函数是可以返回多个值的)。
……我使用AT&T的规范,在linux上完成 C和汇编的互相调用,并使用gcc编译成可执行文件。
目标:汇编函数提供输出。类似C语言的函数
void hello_world(char* value)
{
printf(value);
}
提供给C语言调用:
int main()
{
hello_world("hello world!\n");
}
vscode插件GNU Assembler Language Support提供一个hello.c
……