首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么我在公司里访问不了家里的电脑?

其中你在电脑上执行ifconfig命令,发现家里的电脑IP是192.168.30.5。你要访问的公网IP地址是30.30.30.30。...那这么说只有用到端口的网络协议才能被NAT识别出来并转发? 但这怎么解释ping命令?ping基于ICMP协议,而ICMP协议报文里并不带端口信息。我依然可以正常的ping通公网机器并收到回包。...举个现实中的场景就是,你在你家里的电脑上启动了一个HTTP服务,地址是192.168.30.5:5000,此时你在公司办公室里想通过手机去访问一下,却发现访问不了。...像上面提到的服务器x,你也不需要自己去搭,已经有很多现成的方案,花钱就完事了,比如花某壳。 内网穿透 到这里,我们就可以回答文章标题的问题。 为什么我在公司里访问不了家里的电脑?...• 由于NAT的存在,公网IP是无法访问内网服务的,但通过内网穿透技术,就可以让公网IP访问内网服务。一波操作下来,就可以在公司的网络里访问家里的电脑。

2.1K10

ES6中的Symbol有什么卵用

在ES6中新增了一中类型,这个类型叫做Symbol,最大的特点号称独一无二,下面我们来说一下这东西怎么用,最后再说一下他用在哪。 首先要注意的一点是,Symbol函数前不能使用new命令,否则会报错。...通过这个例子应该就可以明白Symbol在属性名上的应用是什么效果了。 Symbol值作为属性名时,该属性还是公开属性,不是私有属性。...这个有点类似于java中的protected属性(protected和private的区别:在类的外部都是不可以访问的,在类内的子类可以继承protected不可以继承private)。...但是这里的Symbol在类外部也是可以访问的,只是不会出现在for...in、for...of循环中,也不会被Object.keys()、Object.getOwnPropertyNames()返回。...如果你要用 Symbol 来表示私有字段,那你需要表明哪些属性不能被公开访问,如若有人试图违背这一规则,理应承担相应的后果。

26320
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    ES6之symbol

    一个公共库暴露出了一些方法和属性,但是在我们调用的时候我们并不知道它其中有什么方法或者属性,这样当我们在这个库上进行定义了相同的属性的时候,这个库就会被暴露的属性就有可能会被重写。...Symbol引入 所以为了保证变量的唯一性,ES6在原本的6中基础数据类型(Undefined、Null、Boolean、String、Number、Object)下中引入了Symbol类型,它是独一无二的...生成的这个Symbol值会在全局环境中登记,如果下次还传输这个相同的key值的时候,就会在全局环境中搜索是否有已经存在了这个key值的Symbol值,如果有就会返回。...如果要写很多的代码,这会使得开发者的体验不佳,访问私有属性不像 Java 或 TypeScript 那样方便。...如果你要用 Symbol 来表示私有字段,那你需要表明哪些属性不能被公开访问,如若有人试图违背这一规则,理应承担相应的后果。 创建枚举类型 枚举允许你定义具有语义名称和唯一值的常量。

    54340

    一文了解 ES6 中独一无二的 Symbol 类型

    在对象中,Symbol 可以作为属性名,用来定义对象的非字符串类型的属性。由于每个 Symbol 都是唯一的,因此可以确保属性名的唯一性,避免属性名冲突的问题。...而必须使用方括号 ([]) 来访问。 Symbol 的主要作用是确保属性名的唯一性,避免属性名冲突的问题,以及在某些情况下可以自定义对象的行为。...除了以上示例,Symbol 还可以与其他 JavaScript 特性如迭代器、生成器、反射等一起使用,提供更强大的编程能力。 三....即使多个 Symbol 值使用相同的描述符,它们依然是不同的属性名。 2. 防止属性被意外访问: 使用 Symbol 作为属性名,可以隐藏属性,使其不容易被意外访问到。...为了充分利用 Symbol,需要在实际应用中权衡其优缺点,根据需求进行合理使用。 我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

    63711

    我可以在不source脚本的情况下将变量从Bash脚本导出到环境中吗

    /usr/bin/env bash export VAR="HELLO, VAR" 当我执行脚本并尝试访问 $VAR 时,我没有得到任何值!...echo $VAR 有没有一种方法可以通过只执行 export.bash 而不 source 它获取 $VAR? 答: 不可以。 但是有几种可能的解决办法。...在调用 shell 的上下文中执行脚本: $ cat set-vars1.sh export FOO=BAR $ . set-vars1.sh $ echo $FOO BAR 另一种方法是在脚本中打印设置环境变量的命令.../set-vars2.sh)" $ echo "$FOO" BAR 在终端上执行 help export 可以查看 Bash 内置命令 export 的帮助文档: # help export export...help eval 相关阅读: 用和不用export定义变量的区别 在shell编程中$(cmd) 和 `cmd` 之间有什么区别 ----

    18020

    【Android Gradle 插件】Gradle 扩展属性 ② ( 定义在根目录 build.gradle 中的扩展属性 | 使用 rootProject.扩展属性名访问 | 扩展属性示例 )

    文章目录 一、定义在根目录 build.gradle 中的扩展属性 二、扩展属性示例 Android Plugin DSL Reference 参考文档 : Android Studio 构建配置官方文档...build.gradle 中的扩展属性 ---- org.gradle.api.Project 配置 ( build.gradle 根配置 ) 文档 : https://docs.gradle.org...Module 模块下的 build.gradle 都可以获取到该扩展属性值 ; 在 Module 下的 build.gradle 中可以使用 rootProject.扩展属性名 来访问定义在根目录中...build.gradle 中定义的扩展属性值 ; 二、扩展属性示例 ---- 在根目录下的 build.gradle 中定义扩展属性 : // 定义扩展属性 , 其中的变量对所有子项目可见 ext {...} 在 build.gradle 中定义 变量 , 然后自定义 task 任务 , 输出该变量 , 代码如下 : // 定义局部变量 def hello = 'Hello World!'

    3K20

    ES6系列_10之Symbol在对象中的作用

    在ES5中 对象属性名都是字符串,这容易造成属性名的冲突,比如,你使用了一个他人提供的对象,但又想为这个对象添加新的方法(mixin 模式),新方法的名字就有可能与现有方法产生冲突,于是 ES6 引入了...1.声明Symbol Symbol函数可以接受一个字符串作为参数,表示对 Symbol 实例的描述,主要是为了在控制台显示,或者转为字符串时,比较容易区分。...2.Symbol在对象中的应用 Symbol作为属性名: let mySymbol = Symbol(); // 第一种写法 let a = {}; a[mySymbol] = 'Hello!'...赋值-括号形式: a[mySymbol]='web'; 3.Symbol对象元素的保护作用 在对象中有很多值,但是循环输出时,并不希望全部输出,那我们就可以使用Symbol进行保护。...} 现在我不想别人知道我的年龄,这时候我就可以使用Symbol来进行循环保护。

    45320

    【译】ES10功能完全指南 - 还学的动吗?

    但是除了 Object.fromEntries大多数功能已经在 Chrome中实现,所以你为什么不尽早开始探索它呢?当所有浏览器开始支持它时,你已经获得了领先优势,这只是时间问题。...ES10在新语言功能方面没有ES6那么重要,但它确实添加了一些有趣的东西(其中一些在目前版本的浏览器中还不起作用:02/20/2019) ?...ES6中最受欢迎的功能莫过于箭头函数了,那么 ES10中呢? BigInt - 任意精度整数 BigInt是第7种原始类型。 BigInt是一个任意精度的整数。这意味着变量现在可以代表2^53个数字。...那么为什么要用全新的 matchAll方法呢?在我们更详细地回答这个问题之前,让我们来看看 capture group。如果不出意外,你可能会学到新的有关正则表达式的东西。...正则表达式捕获组 在正则表达式中捕获组只是在 ()括号中提取匹配。你可以从 /regex/.exec(string)和 string.match捕获组。 通常捕获组是在匹配规则中被创建的。

    1.4K20

    为什么Java中类的成员变量不能被重写?成员变量在Java中能够被重写么?不会重写成员变量,而是隐藏成员变量访问隐藏域的方法

    这篇文章讨论了Java面向对象概念中一个基本的概念--Field Hiding(成员变量隐藏) 成员变量在Java中能够被重写么?...Paste_Image.png 按照我们已有的多态的概念,第二个应该是输出sub才对,但却输出了super。这是为什么呢?...意思就是: 在一个类中,子类中的成员变量如果和父类中的成员变量同名,那么即使他们类型不一样,只要名字一样。父类中的成员变量都会被隐藏。在子类中,父类的成员变量不能被简单的用引用来访问。...其实,简单来说,就是子类不会去重写覆盖父类的成员变量,所以成员变量的访问不能像方法一样使用多态去访问。...访问隐藏域的方法 就是使用父类的引用类型,那么就可以访问到隐藏域,就像我们例子中的代码 就是使用类型转换System.out.println(((Super)c1).s); 翻译自http://www.programcreek.com

    3.5K40

    Symbol

    Symbol函数可以接受一个字符串作为参数,表示对 Symbol 实例的描述,主要是为了在控制台显示,或者转为字符串时,比较容易区分。...上面代码中,因为点运算符后面总是字符串,所以不会读取mySymbol作为标识名所指代的那个值,导致a的属性名实际上是一个字符串,而不是一个 Symbol 值。...还有一点需要注意,Symbol 值作为属性名时,该属性还是公开属性,不是私有属性。 # 实例:消除魔术字符串 魔术字符串指的是,在代码之中多次出现、与代码形成强耦合的某一个具体的字符串或者数值。...Symbol.for()的这个全局登记特性,可以用在不同的 iframe 或 service worker 中取到同一个值。...iframe 窗口生成的 Symbol 值,可以在主页面得到。

    1.1K10

    从零开始学 Web 之 ES6(四)ES6基础语法二

    4、在初始化Promise实例对象的时候,Promise的状态为pending;在调用resolve回调函数的时候,Promise的状态为fullfilled,表示成功状态;在调用reject回调函数的时候...Promise的状态为rejected的情况; 6、上面说到,在异步操作成功或者失败的时候,会调用resolve和reject函数,在这两个回调函数中可以传入参数,这个参数可以直接带入到then中两个匿名函数的参数中使用...比如获取到ajax的数据,可以将获取的数作为参数传入resolve的参数中,然后会自动将这个参数传入then的第一个匿名函数中,reject也一样。 用图示的方法表示: ?...Symbol函数可以接受一个字符串作为参数,表示对 Symbol 实例的描述,主要是为了在控制台显示,或者转为字符串时,比较容易区分。...它是一种接口,为各种不同的数据结构提供统一的访问机制。任何数据结构只要部署 Iterator 接口,就可以完成遍历操作(即依次处理该数据结构的所有成员)。

    43510

    攀爬TS之路(一) 原始数据类型、任意值类型

    实际上,也算是必备知识了,印象最深的就是Element-Plus的示例代码都是TS了。 简介 TypeScript是JavaScript的超集(添加了类型系统),适用于任何规模的项目。...TypeScript也可以编译为JavaScript: npm install -g typescript全局安装TypeScript的命令行工具 tsc hello.ts编译TypeScript为JavaScript...同样的代码在JS中运行阶段报错,在TS中编译阶段报错。...图片 允许在任意值上访问任何属性(有错误也是运行时才会报错) let myNumber: any = 1 console.log(myNumber.a) // undefined console.log...另外,除了上面声明时指定类型的情况,如果变量在声明时,没有指定它的类型,也没有被赋值,那么就会被识别成任意值类型。

    76230

    【面试说】聊聊JavaScript中的数据类型

    没错,我也是这么回答的,只是这通常是第一个问题,由这个问题可以引出很多很多的问题,比如 Null 和 Undefined 有什么区别?前端的判空有哪些需要注意的?...这意味着你不需要提前声明变量的类型,在程序运行的过程中,类型会被自动确定,也就是说你可以使用同一个变量保存不同类型的值 var foo = 42; // foo is a Number now foo...这个议案在JS中引入新的原生类型:decimal(后缀m),声明这个数字是十进制运算。...在 JavaScript 中最大的值为 2^53。 `BigInt`[4] 任意精度数字类型,已经进入stage3规范。BigInt 可以表示任意大的整数。...}); // 以上写法都得到同样结果 a[mySymbol] // "Hello!" Vue 中的 provide 和 inject。

    55420

    ES6入门之Symbol

    它是一个类似字符串的数据类型 Symbol函数可以接受一个参数,表示对Symbol实例的描述,方便在控制台显示,在转为字符串的时候方便区分,如下: let s1 = Symbol('foo'); let...但是这样很不方便,所以在ES2019中提供 实例属性 description 直接返回 Symbol的描述。...另外,Symbol值作为属性名时,该属性还是公开属性,不是私有属性。 4. 实例:消除魔术字符串 魔术字符串是指,在代码之中出现多次、与代码形成强耦合的某一个具体的字符串或数值。...它的作用在于,实例对象在运行过程中,需要再次调用自身的构造函数时,会调用该属性指定的构造函数。它的主要用途是,有些类库是在基类的基础上修改的。...也就是说,这个属性可以用来定制[object Object]或[object Array]中object后面的那个字符串。 8.11.

    34730

    分享11个高级前端开发工程师都应该掌握的Web API

    应用中,可能需要上传或下载二进制文件,使用Blob API可以方便地处理这些数据。...使用场景:在Web应用中,可能需要将字符串转换为二进制数据,或者将二进制数据转换为字符串。这些转换可以使用 TextEncoder 和 TextDecoder 方便地完成。...(myObject.publicProperty); // "This is a public property" 使用场景:在某些情况下,可能需要定义对象的私有属性或方法,使用Symbol可以轻松实现...; }; 使用场景:在Web应用程序中,可能需要处理大量计算密集型任务或执行长时间运行的操作。使用 Web Workers 可以提高性能或避免阻塞用户界面。...应用中,可能需要实现音频播放、音效处理等功能,而这些功能可以通过使用AudioContext来轻松实现。

    22610
    领券