在Java中,一个字符串可以使用下面这两种方式进行创建:
String x = "abc";
String y = new String("abc");
这两种创建字符串的方式有什么不同呢?
双引号 VS 构造函数
这个问题可以用下面这两个简单的代码实例来回答。
例子1:
String a = "abcd";
String b = "abcd";
System.out.println(a == b); // True
System.out.println(a.equals(b)); // True
a==b是true,因为a和b都引用同一块内存地址。
当相同字符内容的字符串多次创建时,编译器只为其分配一块内存,
继续阅读 »
this是Javascript语言的一个关键字。
它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用。比如,
javascript
function test(){
this.x = 1;
}
随着函数使用场合的不同,this的值会发生变化。但是有一个总的原则,那就是this指的是,调用函数的那个对象。
more
下面分四种情况,详细讨论this的用法。
情况一:纯粹的函数调用
这是函数的最通常用法,属于全局性调用,因此this就代表全局对象Global。
请看下面这段代码,它的运行结果是1。
javascript
function test(){
this.x = 1;
alert(this.x)
继续阅读 »
一个程序在运行过程中,函数调用时会向栈压入: 原来寄存器ebp的值, 参数, 以及调用函数的下一个指令地址
在调用一个函数时, 编译器就计算好函数需要的空间, 然后esp = ebp-需要的空间, 通过ebp+偏移量来访问. 在函数里调用另外一个函数时, 原来fun的ebp值压栈
继续阅读 »
最近项目接近尾声,基本都是在fix bug,今天说说一个bug,是由于strncat函数使用不当导致命令行输出有乱字符。虽说只是一个很简单的小问题,但是不弄明白就是大问题。
1 strncat声明
```c
char *strncat(char *dest, const char *src, size_t n)
继续阅读 »
延迟绑定
Python闭包函数所引用的外部自由变量是延迟绑定的。
In [2]: def multipliers():
...: return [lambda x: i * x for i in range(4)]
In [3]: print [m(2) for m in multipliers()]
[6, 6, 6, 6]
如以上代码: i是闭包函数引用的外部作用域的自由变量, 只有在内部函数被调用的时候才会搜索变量i的值, 由于循环已结束, i指向最终值3, 所以各函数调用都得到了相同的结果。
解决方法:
1) 生成闭包函数的时候立即绑定(使用函数形参的默认值):
In [5]: def multip
继续阅读 »
最近在 Qinling 项目中实现对 function 运行时做资源限制,主要是 cpu、内存和磁盘,后续还会考虑 package 大小、文件句柄、系统调用等资源限制。限制资源使用的原因很简单,因为底层是容器实现,function 都是跑在容器里,如果不做资源限制,任由用户自己在 function 里分配资源,那么不同用户的函数势必会相互影响,更严重的情况是恶意用户会利用一些手段突破容器的限制,威胁 hypervisor,进而威胁整个云环境。
继续阅读 »
模板函数应该将声明与定义放在一起
看如下例题:
```
//tem.h
#ifndef _TEM_H
#define _TEM_H
template T add(T a, T b);
//{
//return a+b;
//}
#endif
//tem.cpp
include "tem.h"
template T add(T a, T b)
{
return a + b;
}
template int add(int, int);//实例化定义,必须放在模板定义的后面
//main.cpp
include
include "tem.h"
using namespace std;
int main()
{
继续阅读 »
本文是「Java 8 函数式编程」第二章的读书笔记。
Lambda引入的变化
Lambda表达式,是一种紧凑的、传递行为的方式,从编程思想上来讲,就是代码即数据。
过去的Java中,存在大量的匿名内部类的使用,会新建一个匿名内部类传入调用的方法中。这种传统的方式,会造成冗余的、不易阅读的代码。
继续阅读 »
目录
Table of Contents
{:toc}
文/Robin
本站推广
币安是全球领先的数字货币交易平台,提供比特币、以太坊、BNB 以及 USDT 交易。
币安注册: https://accounts.binancezh.pro/cn/register/?ref=11190872
邀请码: 11190872
一 引子
在 MySQL 中,可以有如下几种途径实现唯一值:
自增序列
UUID() 函数
程序自定义
UUID 基于 16 进制,由 32 位小写的 16 进制数字组成,如下:
aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
比如 123e4567-e89b-12d3-a
继续阅读 »
从一开始箭头就是 JavaScript 的一部分,在第一个 JavaScript 中就建议将内联的脚本代码包裹在 HTML 的注释中,这可以防止那些不支持 JavaScript 的浏览器错误滴将你的代码显示为明文。你也许写过下面这样的代码:
html
<!--
document.bgColor = "brown"; // red
// -->
古老的浏览器将看到两个不被支持的标签和一段注释,只有支持 JavaScript 的新浏览器才会将其解析为 JavaScript 代码。
为了支持这个古怪的特性,浏览器的 JavaScript 引擎把 作为一个单行注释的开始,这不是开玩笑的,这一直都是这门语言的一部分,并
继续阅读 »