编程语言
CamelGem
这个作者很懒,什么都没留下…
展开
-
用golang解析json
文章目录编码解码带interface{}的通用JSON解码任意数据引用类型编码器和解码器JSON (JavaScript Object Notation) 是一种简洁的数据交换格式。从语法上讲,其类似于 JavaScript 的对象和列表。最常用于 Web 后端和浏览器中运行的 JavaScript 程序之间的通信,但也用于许多其他地方。编码要编码 JSON 数据,我们可以使用 Marshal 函数.func Marshal(v interface{}) ([]byte, error)给定Go数原创 2020-10-03 23:08:45 · 395 阅读 · 0 评论 -
Go中的反射模型
文章目录类型和接口接口的表示形式从接口反射出对象从反射对象到接口值修改反射对象的值对结构体类型的值进行发射总结反射是指程序检查自身结构的能力,尤其是通过类型;它是一种元编程,也是产生混乱的重要根源。类型和接口反射建立在类型系统之上,所以让我们从go语言的类型开始。Go是静态类型语言,每个变量都有一个静态的类型,即在编译时类型已知且固定:比如int, float32,*MyType,[]byte等等。如果我们声明:type MyInt intvar i intvar j MyInt那么i的类原创 2020-10-03 19:37:02 · 264 阅读 · 0 评论 -
Golang中的常量
golang中的常量文章目录golang中的常量字符常量短声明变量和类型推导布尔值浮点数复数整数数字在Go中,我们通常使用const关键字来定义一个常量,它为标量值引入了名称,例如2或者3.14或者helloworld.这样的值在Go中被称为常量。常量也可以通过根据常量构建的表达式来创建,例如2+3或者2*3或者“go"+"lang"等。有些语言支持常量,而有些语言不支持常量,有些语言虽然支持常量,但是定义常量的方式不同,意义也不同。但是在Go中,常数只是一个简单而不变的值。字符常量数字常量有很多原创 2020-10-03 18:21:02 · 2985 阅读 · 0 评论 -
Golang编程示例part2
文章目录定时器打点器线程池速率限制原子计数器互斥锁状态协程排序使用函数自定义排序panicdefer组合函数字符串函数字符串格式化正则表达式JSON解析XML解析时间戳时间格式化随机数数字解析url解析SHA1散列读文件写文件过滤行文件路径文件目录临时文件和目录命令行参数命令行标志命令行子命令环境变量HTTP客户端HTTP服务端生成进程执行进程信号退出定时器package mainimport ( "fmt" "time")func main() { //创建一个定时器对象,原创 2020-09-29 19:14:28 · 319 阅读 · 0 评论 -
Golang编程示例part1
文章目录数据类型单引号双引号和反引号变量for循环if/elseswitch/case数组切片关联数组range函数多返回值函数变参函数闭包递归指针结构体方法接口错误处理协程通道通道同步单向通道通道关闭通道遍历通道缓冲通道选择器数据类型package main目录 数据类型单引号双引号和反引号变量for循环if/elseswitch/case数组切片关联数组range函数多返回值函数变参函数闭包递归指针结构体方法接口错误处理 协程通道通道同步单向通道通道关闭通道遍历通道缓冲通道选择器import "原创 2020-09-29 12:46:32 · 668 阅读 · 0 评论 -
golang中make和new的使用
Go中make和new的使用make用于内建类型(map、slice 和channel)的内存分配。new用于各种类型的内存分配 内建函数new本质上说跟其它语言中的同名函数功能一样:new(T)分配了零值填充的T类型的内存空间,并且返回其地址,即一个*T类型的值。用Go的术语说,它返回了一个指针,指向新分配的类型T的零值。有一点非常重要:new返回指针内建函数make(T, args)与new(T)有着不同的功能,make只能创建slice、map和channel,并且返回一个有初始值(非零)的T类型原创 2020-09-08 19:34:45 · 440 阅读 · 0 评论 -
JavaScript中的嵌套try...catch示例
JavaScript中嵌套的try…catch// 第一种情况try { try { throw new Error('oops'); //=> 抛出一个error对象,对象的message为'error' } finally { console.log('finally'); //=> 无论是否抛出异常都会执行 }}catch (ex) { //=> 捕获到内部try语句抛出的异常对象 console.e原创 2020-08-08 00:06:39 · 1592 阅读 · 0 评论 -
JavaScript中的try..catch示例
try … catch示例function foo(num) { // 检查传入的参数是否为数值 if (typeof num !== "Number") { throw { type: "Value error", info: "The value is not right, it should be a number!" }; } else { return num; }}原创 2020-08-07 23:43:25 · 252 阅读 · 0 评论 -
JavaScript中的布尔值
JavaScript中的True与false值falseundefinednull0NaN空字符串("")除了上述值以外,其他的任何值都为真,包括true和"true".当传递给条件语句所有其他的值,包括所有对象会被计算为真 。请不要混淆原始的布尔值true和false 与 Boolean对象的真和假。例如:var b = new Boolean(false);if (b) //结果视为真if (b == true) // 结果视为假...原创 2020-08-07 21:37:21 · 530 阅读 · 0 评论 -
golang中指针接收者和值接收者的区别
一般来说,我们通常会在实施接口的时候,选择用值接收者,其实指定指针接收者也是允许的。但是当实施接口的时候使用指针接收者与使用值接收者是由细微差别的。通过以下的示例来了解一下:package mainimport "fmt"type Describer interface { Describe()}type Person struct { name string age int}func (p Person) Describe() { //implem原创 2020-07-11 10:46:48 · 743 阅读 · 0 评论 -
golang中的类型断言和类型切换
类型断言作用:用于提取一个接口底层值。语法:i.(T), 用来获取混合类型是T的接口的底层值,让我们来看一下例子:package mainimport ( "fmt")func assert(i interface{}) { s := i.(int) //get the underlying int value from i fmt.Println(s)}func main() { var s interface{} = 56 asse原创 2020-07-11 09:43:31 · 466 阅读 · 0 评论 -
Golang中的变量类型
第4部分:类型这是Golang教程系列中的第4个教程。请阅读Golang教程第3部分:本系列的变量,以了解变量。以下是可使用的基本类型布尔数值类型int8,int16,int32,int64,intuint8,uint16,uint32,uint64,uintfloat32,float64complex64,complex128字节rune字符串布尔布尔类型表示布尔值,可以为true或false。package mainimport "fmt"func main()翻译 2020-07-05 11:14:47 · 433 阅读 · 0 评论 -
Golang中的变量声明
第3部分:变量这是Golang教程系列中的第三篇教程,它涉及Golang中的变量。您可以阅读Golang教程第2部分:Hello World,以了解有关配置Go和运行hello world程序的信息。什么是变量?变量是为存储位置指定的名称,用于存储特定类型的值。Go中有多种语法来声明变量。让我们一一看一下。声明一个变量var name type是声明单个变量的语法。package mainimport "fmt"func main() { var age int // va翻译 2020-07-05 10:58:30 · 1355 阅读 · 0 评论 -
Perl正则表达式详解
Perl中的正则表达式使用示例m//修饰符LVALUE =~ m/PATTERN/;LVALUE =~ /PATTERN/;修饰符含义/i匹配时忽略大小写/g全局匹配,默认情况下,正则表达式"abc"匹配"abcdabc"字符串的时候,将之匹配左边的abc,使用g将匹配两个"abc"/c在开启g的情况下,如果匹配失败,将不重置搜索位置/m多行匹配模式/s让.可以匹配换行符"\n",也就是说该修饰符让.真的可以匹配任意字符/x允许正则表达原创 2020-07-03 11:33:51 · 3445 阅读 · 0 评论 -
乐观锁与悲观锁
何谓悲观锁与乐观锁乐观锁对应于生活中乐观的人总是想着事情往好的方向发展,悲观锁对应于生活中悲观的人总是想着事情往坏的方向发展。这两种人各有优缺点,不能不以场景而定说一种人好于另外一种人。悲观锁总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁(共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给其它线程)。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。Jav转载 2020-06-27 21:48:33 · 116 阅读 · 0 评论 -
Perl中Data::Dumper模块用法
Data::Dumper的用法use Data::Dumper;my ($foo, $bar) = ([1, 2, 3], [3, 4, 5]);print Dumper($foo, $bar); # 正常输出引用数据结构print Data::Dumper->Dump([ $foo, $bar ], [ qw(foo *ary) ]);# configuration variables{ local $Data::Dumper::Purity = 1; eval D原创 2020-06-16 22:03:14 · 3985 阅读 · 2 评论 -
Perl中的方法查找顺序
Perl中方法查找的顺序在一个类型为classname的调用者上调用一个名为methname的方法时,Perl会尝试6种不同的方法来找到要调用的子例程:首先,Perl在调用者自己的包中查找一个名为classname::methname的子例程。如果失败,则继续进入第二步查找。接下来,Perl检查从基类继承的方法,在@classname::ISA中所列出的所有的parent包中查找parent::methname子例程。这里会从左向右采用深度优先方式递归查找。递归可以确保租父类,曾祖父类,曾曾祖父类等原创 2020-06-10 22:28:39 · 293 阅读 · 0 评论 -
Perl中包的概念
包的切换当前包既是一个编译时概念也是一个运行时概念。大多数变量名的查找都发生在编译时,不过对符号引用解引用时,以及在eval下编译新代码时,会发生运行时查找。未用my声明的所有变量都与一个包关联,甚至类似$_和%SIG等看上去无所不在的变量也是如此。其他变量都使用当前包,除非加了限定:$name = "Amelia";$Animal::name = "Camel";package声明会改变作用域其余部分(块,文件或eval,要看哪一个最先出现)的默认包,或者直到出现同级的另一个包声明,它会覆盖之原创 2020-06-10 22:11:43 · 313 阅读 · 0 评论 -
Perl中的符号表的使用与说明
Perl中的符号表概念通常来说,我们写一段代码需要为它提供一个命名空间,这样变量和函数才不会与其他人的变量或者函数产生冲突,反之亦然。包是独立于文件的。一个文件通常可以包含多个包,或者一个包可以跨多个文件。通俗来讲包就是perl的模块,通常以.pm结尾,并且在定义一个包时,文件名与包名相同。也有极个别情况,文件名与包名不相同,通常发生在一个文件中定义了多个包,所以它有好几个包名,因此文件名与包名不相同。典型的例子就是VMware官方的PerlSDK开发模块。通常在使用模块化编程时,我们需要学习如原创 2020-06-09 23:47:33 · 877 阅读 · 1 评论 -
python中模块和包的导入以及使用方式
模块如果从Python解释器退出并再次输入,则所做的定义(函数和变量)将丢失。因此,如果要编写更长的程序,最好使用文本编辑器为解释器准备输入,然后使用该文件作为输入运行它。这称为创建脚本。随着程序时间的延长,你可能需要将其拆分为多个文件,以便于维护。你可能还想使用在多个程序中编写的便捷功能,而无需将其定义复制到每个程序中。为此,Python提供了一种将定义放入文件中并在脚本或解释器的交互式实例中使用它们的方法。这样的文件称为模块;可以将模块中的定义导入其他模块或主模块中。模块是包含Python定义和语原创 2020-05-30 13:25:52 · 1492 阅读 · 0 评论 -
python中的数据结构及其常见用法
数据结构list(列表)# list.append(x)squares = [1, 2, 3, 4 ,5, 6]squares.append(10)print(squares) # [1, 2, 3, 4, 5, 6, 10]# list.extend(iterable)iterable = [x * 2 for x in squares]squares.extend(iterable)print(squares) # [1, 2, 3, 4, 5, 6, 10, 2, 4, 6,原创 2020-05-29 22:19:57 · 456 阅读 · 1 评论 -
python中nonlocal和global的作用与用法
# global和nonlocal"""一个函数在执行时会产生一个新的符号表,用于保存函数的本地变量。更准确的说,在函数调用时,函数会优先查找本地符号表中的变量,因为所有赋值的变量都被存储在本地符号表中。如果本地符号表没有找到该变量,则继续查找包围函数的作用域中的本地符号表,要是依然没有找到则继续查找全局符号表, 要是依然没找到,则查找内建表。因此对全局变量和在包围函数的作用域中的变量时无法在函数中被直接赋值的,如果要赋值,必须用global或nonlocal声明"""x = 11 # 全原创 2020-05-26 08:23:35 · 678 阅读 · 0 评论 -
ruby中定义一个方法时,各种参数的定义方式
# 位置参数def add_values(a, b) a + bend# 默认位置参数def add_values2(a = 1, b = 2, c) a + b + cenddef add_values3(a = 1, b = a) # 参数值总是从左到右被计算的 a + benddef add_values4(a = b, b = 1) # 除非定义了一个名字为b的方法,否则在默认参数执行时会报错 a + bendp add_values4 # ra.原创 2020-05-25 22:50:43 · 726 阅读 · 0 评论 -
Perl中如何重载一个操作符
overload(重载)描述:Perl的重载简而言之就是平时如果我们需要用一些常规操作符去操作对象的话,会得到与正常结果不同的结果。例如将一个对象与一个数字相加:# 重载前package MyClass;use feature qw(say);sub new { shift; bless \(my $var = shift) => __PACKAGE__;}sub add { my ($first, $second) = @_; $$first +原创 2020-05-23 16:04:09 · 602 阅读 · 0 评论 -
Perl中given语句的用法
give … when … 语句在perl 5.10和更高的版本中提供了if结构的一个替代结构,即given函数,从语言学的角度来说,这就相当于是提供了一个主题工具。它的做法是将$_设置为当前主题。然后可以使用when语句检查这个主题的各个不同值或模式。使用Perl的v5.10及以后的版本时,就会启用这个特性:use v5.12; # 至少v5.12 加载默认特性# 如果要特别请求"switch"特性,则需要:use feature qw(switch);以上两种声明都会向Perl语言增加原创 2020-05-18 23:18:12 · 1165 阅读 · 0 评论 -
Perl中智能匹配操作符(smartmatch operator)用法
Smart Match Operatordescription最早在Perl5.10.1(5.10.0版本的行为有所不同)中提供,它的参数之间进行“智能匹配”。尽管不是所有的when子句都调用smartmatch运算符,但通常在perlsyn中描述的when构造中隐式使用它。在所有Perl运算符中唯一的,smartmatch运算符可以递归。smartmatch运算符是实验性的,其行为可能会发生变化。它的独特之处还在于,所有其他Perl运算符都在其操作数上施加了上下文(通常是字符串或数字上下文),将翻译 2020-05-18 12:25:02 · 1943 阅读 · 0 评论 -
POSIX模块中的几种宏和常量的说明
POSIX模块中的几种宏和常量的说明ConstantsWNOHANG在子进程更改状态之前,不要挂起调用进程,而是立即返回。WUNTRACED捕获已停止的子进程。MacrosWIFEXITED(${^CHILD_ERROR_NATIVE})如果子进程正常退出,则返回true (通过exit() 或者程序一直执行到main末尾 )WEXITSTATUSWEXITSTATUS(${^CHILD_ERROR_NATIVE}) 返回子进程的正常退出状态 (只有在 WIFEXIT原创 2020-05-09 12:48:55 · 371 阅读 · 0 评论 -
Perl中fork函数的使用示例 PART 2
Fork Part 2翻译自Perl.com(Fork Yeah!)##### Perl.com在本文的第一部分中,我描述了如何使用Perl的fork函数编写并发程序。下面是其他几种方法。WNOHANG通常,waitpid是阻塞调用,当子进程退出时返回:#!/usr/bin/perlmy $pid = fork;if ($pid == 0) { sleep 1; exit;}waitpid $pid, 0; # 在子进程退出前,父进程会一直等待在此示例中,waitpid翻译 2020-05-09 10:56:28 · 370 阅读 · 0 评论 -
Perl中fork函数的使用示例 PART 1
Fork Part 1翻译自Perl.com(Fork Yeah!)Perl.com最近在工作中,我不得不加快处理文件的Perl脚本。 Perl可以使用fork函数产生多个进程,但是除非正确管理子进程,否则事情可能会出错。我在脚本中添加了fork,并能够将脚本的吞吐率提高近10倍,但是我花了一些努力才能将其正确设置。在本文中,我将向您展示如何安全使用fork并避免一些常见错误。N.B. Windows用户:由于fork系统调用在Windows上不可用,因此这些示例可能无法按所述方式运行,因为该行为是翻译 2020-05-09 10:07:28 · 894 阅读 · 1 评论 -
Perl中Parallel::ForkManager模块的使用(翻译自官方文档)
Parallel::ForkManagerNAMEParallel::ForkManager - 一个简单的并行进程衍生(fork)管理器.VERSIONversion 2.02SYNOPSISuse Parallel::ForkManager;my $MAX_PROCESSES = 10; # 指定需要fork出的子进程数量my $pm = Parallel::ForkManager->new($MAX_PROCESSES); #实例化一个DATA_LOOP:foreach翻译 2020-05-08 21:41:25 · 2252 阅读 · 0 评论 -
Ruby中方法的使用以及方法的参数传递
关于ruby中方法的一些知识拓展一个方法的返回值通常是方法中最后一个表达式的值,但是如果最后一个表达式的值不存在,则方法返回的值为nil。如果一个方法最后一个表达式产生多个值,返回的值需要用逗号分隔开,最后方法会以数组的形式返回多个值。为了是代码更加清晰,可以将返回的值显示的放入数组中然后返回。见下面示例:def name puts "Hello World!"endp na...原创 2020-04-27 20:09:33 · 2651 阅读 · 0 评论 -
shell中变量以及环境变量的常见用法
变量变量类型有两种类型的变量:局部变量和环境变量。局部变量仅在创建它的shell中有效,环境变量则对所有创建它的shell所派生出来的子进程都有效。某些变量由用户来创建,而另一些则是shell的特殊变量。命名规则变量名必须以字母或下划线开始,其余部分则可以由字符,数字(0-9)或下划线字符构成。而其他字符均可作为变量名的结束标志。名字是大写敏感的。当给一个变量赋值时,不要在等号两边留下空格...原创 2020-04-23 12:47:04 · 1132 阅读 · 0 评论 -
Ruby中的类和模块和变量使用说明
对象, 变量, 常量和类在ruby中表现数据的基本单位称为对象。常见对象与其所属的类对象类数值Numeric字符串String散列Hash正则表达式Regex文件File符号Symbol数组Array此外还有range和execption对象等变量分为以下几种:全局变量: 以$来表示实例变量: 以@开头来表...原创 2020-04-18 23:26:01 · 1009 阅读 · 0 评论