爱护小动物,享受宠物伙伴

您现在的位置是:首页 > 科技IT > 正文

科技IT

破坏 java.lang.String英国猫头鹰人事件,半人半鹰的怪异生物,疑似外星人

admin2023-09-20科技IT5680
蚌埠市本地生活网 - 为您提供本地生活便民信息|发布本地信息平台 济南人才网_济南招聘网_济南人才网最新招聘信息_济南人才招聘网 山西人才网_山西招聘网_山西招聘会_山西招聘_山西找工作_最新招聘信息_山西人才市场_山西人才招聘信息_山西人才网 汕头人才网_汕头招聘网_汕头招聘会_汕头招聘_汕头找工作_最新招聘信息_汕头人才市场_汕头人才招聘信息_汕头人才网 赤壁美食网_赤壁美食平台_赤壁特色美食商城门户网 四平招聘网_四平人才网_四平新区人才网_汇聚四平最新招聘信息 六安市本地生活网 - 为您提供本地生活便民信息|发布本地信息平台 上海招聘网_上海人才网_上海人才市场_上海求职【官方网站】 长春招聘网_长春人才网_长春新区人才网_汇聚长春最新招聘信息 人才招聘网_招聘网_中国人才网 - 求职找工作就上乌鲁木齐人才网 雁塔房产中介_雁塔租房_雁塔找房 六安废品回收-六安二手物资回收-六安电子产品回收-六安废旧金属回收-六安物资回收_六安废品回收网 乌鲁木齐招聘网_乌鲁木齐人才网_乌鲁木齐人才市场_乌鲁木齐求职【官方网站】 新疆招聘_新疆人才网_新疆人才市场-新疆招聘网【新疆聘网】 人才网-招聘网-招聘-招聘信息-最新招聘-求职-找工作-上西安招聘网 赤峰旅游_赤峰旅游攻略_赤峰旅游景点_赤峰旅游网 广州招聘网_广州人才网_广州人才市场_广州求职【官方网站】 蚌埠市本地生活网 - 为您提供本地生活便民信息|发布本地信息平台 西安市本地生活网 - 为您提供本地生活便民信息|发布本地信息平台 鸡西人才网 鸡西人才市场 最新招聘信息网,找工作求职 东莞招聘网_东莞人才网_东莞人才市场_东莞求职【官方网站】 阳江市本地生活网 - 为您提供本地生活便民信息|发布本地信息平台 潜江市本地生活网 - 为您提供本地生活便民信息|发布本地信息平台 招聘网_人才网_找工作_求职_惠州招聘网_精英人才发展平台 青海人才网 - 青海招聘网 - 找好工作上青海招聘网 北海人才网_北海招聘网_北海招聘会_北海招聘_北海找工作_最新招聘信息_北海人才市场_北海人才招聘信息_北海人才网 乌鲁木齐人才网 乌鲁木齐招聘网 乌鲁木齐本地求职招聘平台 海口人才网 - 海口招聘网 - 找好工作上海口招聘网 东莞招聘网-东莞招聘网-东莞人才网,东莞最新招聘信息,东莞人才市场,东莞招聘网,东莞市人才网,东莞找工作 桂林美食网_桂林美食平台_桂林特色美食商城门户网 周口招聘网_周口人才网_周口招聘信息网站 北海招聘网-北海招聘网-北海人才网,北海最新招聘信息,北海人才市场,北海招聘网,北海市人才网,北海找工作 襄阳市本地生活网 - 为您提供本地生活便民信息|发布本地信息平台 湛江市本地生活网 - 为您提供本地生活便民信息|发布本地信息平台 人才招聘网_招聘网_中国人才网 - 求职找工作就上长沙人才网 南阳市本地生活网 - 为您提供本地生活便民信息|发布本地信息平台 齐齐哈尔招聘网_齐齐哈尔人才网_齐齐哈尔人才市场_齐齐哈尔求职【官方网站】 沈阳人才网招聘信息 淮安人才网 - 淮安招聘网 - 找好工作上淮安招聘网 青海招聘网_青海人才网_青海人才市场_青海求职【官方网站】 三亚人才网_三亚招聘网_三亚人才网最新招聘信息_三亚人才招聘网 本溪迎客松货源-造型油松批发-盆景松价格-本溪景观松基地 苏州看房网_苏州房产中介_苏州找房 三亚人才网_三亚招聘网_三亚招聘会_三亚招聘_三亚找工作_最新招聘信息_三亚人才市场_三亚人才招聘信息_三亚人才网 招聘网_人才网_找工作_求职_海口招聘网_精英人才发展平台 盐城家政 杭州招聘网_杭州人才网_杭州人才市场_杭州求职【官方网站】 沈阳旅游_沈阳旅游攻略_沈阳旅游景点_沈阳旅游网

【编者按】本文展示了如何利用 Java 的一个 bug 来制造一些奇怪的字符串,包括字符串相等性的条件、创建损坏字符串的方法以及利用该 bug 在另一个类中远程破坏字符串的示例。并提出了一个挑战,要求读者创建一个满足特定条件的损坏空字符串,最终揭晓了网友提供的多种实现方法。

原文链接:https://wouter.coekaerts.be/2023/breaking-string

讨论链接:https://news.ycombinator.com/item?id=36687970

未经允许,禁止转载!

作者 | Wouter Coekaerts 译者 | 明明如月编 | 夏萌出品 | CSDN(ID:CSDNnews)

本文将展示如何利用 java.lang.String 中的一个 bug 来制造一些奇怪的字符串。

我们将使 “hello world” 不以“hello”开头, 并展示并不是所有的空字符串都相等。

介绍:字符串之间的相等的条件

在我们开始之前,我们看一下 JDK 中两个字符串相等需要什么。

为什么 "foo".equals("fox") 的结果是 false?

因为字符串是逐字符比较的,这两个字符串的第三个字符不同。

为什么 "foo".equals("foo") 的结果是 true?

你可能会认为在这种情况下,字符串也是逐字符比较的。但是字符串字面量是 intern 的,当相同的字符串在源代码中出现多次作为常量时,它不是具有相同内容的另一个字符串,这些字符串是同一个实例。

String.equals 的第一件事就是 if (this == anObject) { return true; }, 这里的判断甚至都不会去看里面的内容。

为什么 "foo!".equals("foo!?") 的结果是 false?

从 JDK 9 开始(自从 JEP 254: 紧凑字符串),字符串在内部表示其内容为字节数组。"foo!" 只包含简单的字符,代码点小于 256。字符串类在内部使用 latin-1 编码来编码这样的值,每个字符一个字节。"foo!?" 包含一个不能用 latin-1 表示的字符(!?),所以它使用 UTF-16 来编码整个字符串,每个字符两个字节。String.coder 字段跟踪使用了两种编码中的哪一种。当比较两个使用不同 coder 的字符串时,String.equals 总是返回 false。它甚至不去看内容,因为如果一个字符串可以用 latin-1 表示,而另一个字符串不可以,那么它们就不能相同。难到,你会认为可以相等?

注意: 紧凑字符串(Compact Strings)特性可以禁用,但默认是启用的。本文假定它是启用的。

创建一个损坏的字符串

字符串是如何创建的? java.lang.String 是如何选择使用 latin-1 还是不使用它的?

可以通过多种方式创建字符串,我们将关注接受 char[] 的字符串构造函数。它首先尝试使用 StringUTF16.compress 将字符编码为 latin-1。如果失败,返回 null,构造函数退回到使用 UTF-16。这里是它的实现的简化版本。(为了可读性,我从实际实现中删除了不相关的间接调用、检查和参数,实际实现在这里(https://github.com/openjdk/jdk/blob/b3f34039fedd3c49404783ec880e1885dceb296b/src/java.base/share/classes/java/lang/String.java#L277-L279)和这里(https://github.com/openjdk/jdk/blob/b3f34039fedd3c49404783ec880e1885dceb296b/src/java.base/share/classes/java/lang/String.java#L4757-L4772))

/** * 分配一个新的 {@code String} 以表示字符数组参数当前所包含的字符序列。 * 复制字符数组的内容;后续修改字符数组不会影响新创建的字符串。 */ public String(char value[]) { byte[] val = StringUTF16.compress(value); if (val != null) { this.value = val; this.coder = LATIN1; return; } this.coder = UTF16; this.value = StringUTF16.toBytes(value);}

这里有个 bug。这段代码并不总是保持 String.equals 的语义,我们之前讨论过。你看出来了吗?

javadoc 指出“对字符数组的后续修改不会影响新创建的字符串”。但是并发修改呢?在尝试将其编码为 latin-1 和将其编码为 UTF-16 之间,value 的内容可能已经改变了。这样我们就可以拥有只包含 latin-1 字符的字符串,但编码却为 UTF-16。

我们可以通过下面的方式触发这个竞争条件:

/** * 给定一个 latin-1 字符串,创建一个错误编码为 UTF-16 的副本。 */static String breakIt(String original) { if (original.chars().max().orElseThrow() > 256) { throw new IllegalArgumentException( "只能打断 latin-1 字符串"); } char[] chars = original.toCharArray(); // 在另一个线程中,反复将第一个字符在可作为 latin-1 编码和不可作为 latin-1 编码之间切换 Thread thread = new Thread(() -> { while (!Thread.interrupted()) { chars[0] ^= 256; } }); thread.start(); // 同时调用字符串构造函数,直到触发竞争条件 while (true) { String s = new String(chars); if (s.charAt(0) 256 && !original.equals(s)) { thread.interrupt(); return s; } }}

我们可以使用这种方法创建的“损坏字符串”具有一些有趣的特性。

String a = "foo";String b = breakIt(a);// 它们不相等System.out.println(a.equals(b));// => false// 它们确实包含相同的一系列字符System.out.println(Arrays.equals(a.toCharArray(), b.toCharArray())); // => true// compareTo 认为它们相等(尽管它的 javadoc// 指定“当且仅当 equals(Object) 方法返回 true 时,// compareTo 返回 0”)System.out.println(a.compareTo(b));// => 0// 它们有相同的长度,一个是另一个的前缀,// 但反过来不是(因为如果它没有被破坏,// 一个 latin-1 字符串不能以一个非 latin-1 // 子串开头)。System.out.println(a.length() == b.length());// => trueSystem.out.println(b.startsWith(a));// => trueSystem.out.println(a.startsWith(b));// => false

没想到这样一个基础的 Java 类会有这种奇怪的行为。

神秘的远程作用

我们不仅可以创建一个“损坏的字符串”,我们还可以在另一个类中远程破坏一个字符串。

class OtherClass { static void startWithHello() { System.out.println("hello world".startsWith("hello")); }}

如果我们在 IntelliJ 中编写这段代码,那么它会警告我们 Result of "hello world".startsWith("hello") is always true。这段代码甚至不需要任何输入,但我们仍然可以通过注入一个损坏的 "hello" 来使其打印 false,通过 interning:我们在任何其他代码字面量提及或显式 intern 它之前就破坏一个包含 hello 的字符串,并 intern 该损坏版本。这样,我们就破坏了JVM 中的每个 "hello" 字符串字面量。

breakIt("hell".concat("o")).intern();OtherClass.startWithHello(); // 打印 false挑战:空或非空?

使用我们的 breakIt 方法,我们可以创建任何 latin-1 字符串的等价但不相等的字符串。但是它对空字符串不起作用,因为空字符串没有任何字符来触发竞争条件。然而,我们仍然可以创建一个损坏的空字符串。我将这个作为一个挑战给读者。

具体来说:你能创造一个 java.lang.String 对象,对于该对象,以下是真的 :s.isEmpty() && !s.equals("")。不要作弊:你只允许使用公共 API 来做这件事,如,不允许使用 .setAccessible 访问私有字段,也不允许使用 instrumentation 相关的类(因为 Instrumentation 提供了一种机制,使得开发者可以在不修改原始代码的情况下,通过代理、注入代码和监视器等方式对应用程序进行动态修改和扩展)。

如果你挑战成功,请在这里告诉我。我会在以后更新这篇文章,添加你提交的答案。

揭晓答案

创建一个 "损坏的" 空字符串最简单的方法是使用 breakIt(" ").trim()。这是因为 trim 方法正确地假定,如果原始字符串包含 latin-1 字符,那么去除 latin-1 字符后的结果仍应包含非 latin-1 字符。这个答案是由:Zac Kologlu、Jan、ichttt、Robert(他正确地指出了我对 "> 256" 检查的偏差)给出。

我还收到了两个原创的只能在 JDK 19 上运行的 StringBuilder 解决方案。Ihor Herasymenko 提交了这段代码,该代码通过 StringBuilderdeleteCharAt 触发了一个竞态条件。

Ihor 使用 deleteCharAt

public class BrokenEmptyStringChallenge { public static void main(String[] args) { String s = breakIt(); System.out.println("s.isEmpty() && !s.equals(\"\") = " + (s.isEmpty() && !s.equals(""))); } static String breakIt() { String notLatinString = "\u0457"; AtomicReference sb = new AtomicReference<>(new StringBuilder(notLatinString)); Thread thread = new Thread(() -> { while (!Thread.interrupted()) { sb.get().deleteCharAt(0); sb.set(new StringBuilder(notLatinString)); } }); thread.start(); while (true) { String s = sb.get().toString(); if (s.isEmpty() && !s.equals("")) { thread.interrupt(); return s; } } }}

最后,Xavier Cooney 提出了这个绝妙的解决方案,它甚至不涉及任何并发操作。它从 CharSequence.charAt 抛出一个异常,从而导致 StringBuilder 的状态不一致来实现这个效果。这看起来像是另一个 JDK 的 bug。

Xavier 给出的从 CharSequence.charAt 抛出异常的方案:

// 要求 Java 19+class WatSequence implements CharSequence { public CharSequence subSequence(int start, int end) { return this; } public int length() { return 2; } public char charAt(int index) { // 无需并发处理! if (index == 1) throw new RuntimeException(); return ; } public String toString() { return "wat"; }}class Wat { static String wat() { if (Runtime.version().feature() < 19) { throw new RuntimeException("本示例在 java-19 之前的版本无法运行 :("); } StringBuilder sb = new StringBuilder(); try { sb.append(new WatSequence()); } catch (RuntimeException e) {} return new String(sb); } public static void main(String[] args) { String s = wat(); System.out.println(s.isEmpty() && !s.equals("")); }}

我已经将这个 bug 提交到 Java Bug 数据库中。

本文引发了网友的激烈讨论,不同的网友发表了不同的看法。

有些网友认为这不是 bug,Java 中的一些类除非特殊说明否则本身就不是线程安全的,采用非线程安全的方式来破坏它,本身符合预期。

作者则坚称这就是 bug,因为人们通常会认为核心类库的不可变类是线程安全的。通无论用户如何去破坏,都不能破坏内部的结构。而且这个 bug 已经提交到 Java 的 bug 数据库中,预计未来版本中将会被修复。

有些网友甚至认为这不仅是 String 的 bug ,还是 JVM 的安全漏洞。也有网友认为,加一些防御性编程代码就可以解决这个问题。

同时,也有一些网友称,Java 内存模型是一个伟大的创造,如果你遵循它的规范,就能够以其他语言难以实现的简易度编写高性能的多线程应用程序。如果你不遵循 Java 内存模型的规范,就可能出乱子。

你是否曾经认为 JDK 是不会有 bug 的?你是否发现过JDK 的 bug? 你认为 Java 语言有哪些缺点?欢迎在留言区交流讨论。

蚌埠市本地生活网 - 为您提供本地生活便民信息|发布本地信息平台 济南人才网_济南招聘网_济南人才网最新招聘信息_济南人才招聘网 山西人才网_山西招聘网_山西招聘会_山西招聘_山西找工作_最新招聘信息_山西人才市场_山西人才招聘信息_山西人才网 汕头人才网_汕头招聘网_汕头招聘会_汕头招聘_汕头找工作_最新招聘信息_汕头人才市场_汕头人才招聘信息_汕头人才网 赤壁美食网_赤壁美食平台_赤壁特色美食商城门户网 四平招聘网_四平人才网_四平新区人才网_汇聚四平最新招聘信息 六安市本地生活网 - 为您提供本地生活便民信息|发布本地信息平台 上海招聘网_上海人才网_上海人才市场_上海求职【官方网站】 长春招聘网_长春人才网_长春新区人才网_汇聚长春最新招聘信息 人才招聘网_招聘网_中国人才网 - 求职找工作就上乌鲁木齐人才网 雁塔房产中介_雁塔租房_雁塔找房 六安废品回收-六安二手物资回收-六安电子产品回收-六安废旧金属回收-六安物资回收_六安废品回收网 乌鲁木齐招聘网_乌鲁木齐人才网_乌鲁木齐人才市场_乌鲁木齐求职【官方网站】 新疆招聘_新疆人才网_新疆人才市场-新疆招聘网【新疆聘网】 人才网-招聘网-招聘-招聘信息-最新招聘-求职-找工作-上西安招聘网 赤峰旅游_赤峰旅游攻略_赤峰旅游景点_赤峰旅游网 广州招聘网_广州人才网_广州人才市场_广州求职【官方网站】 蚌埠市本地生活网 - 为您提供本地生活便民信息|发布本地信息平台 西安市本地生活网 - 为您提供本地生活便民信息|发布本地信息平台 鸡西人才网 鸡西人才市场 最新招聘信息网,找工作求职 东莞招聘网_东莞人才网_东莞人才市场_东莞求职【官方网站】 阳江市本地生活网 - 为您提供本地生活便民信息|发布本地信息平台 潜江市本地生活网 - 为您提供本地生活便民信息|发布本地信息平台 招聘网_人才网_找工作_求职_惠州招聘网_精英人才发展平台 青海人才网 - 青海招聘网 - 找好工作上青海招聘网 北海人才网_北海招聘网_北海招聘会_北海招聘_北海找工作_最新招聘信息_北海人才市场_北海人才招聘信息_北海人才网 乌鲁木齐人才网 乌鲁木齐招聘网 乌鲁木齐本地求职招聘平台 海口人才网 - 海口招聘网 - 找好工作上海口招聘网 东莞招聘网-东莞招聘网-东莞人才网,东莞最新招聘信息,东莞人才市场,东莞招聘网,东莞市人才网,东莞找工作 桂林美食网_桂林美食平台_桂林特色美食商城门户网 周口招聘网_周口人才网_周口招聘信息网站 北海招聘网-北海招聘网-北海人才网,北海最新招聘信息,北海人才市场,北海招聘网,北海市人才网,北海找工作 襄阳市本地生活网 - 为您提供本地生活便民信息|发布本地信息平台 湛江市本地生活网 - 为您提供本地生活便民信息|发布本地信息平台 人才招聘网_招聘网_中国人才网 - 求职找工作就上长沙人才网 南阳市本地生活网 - 为您提供本地生活便民信息|发布本地信息平台 齐齐哈尔招聘网_齐齐哈尔人才网_齐齐哈尔人才市场_齐齐哈尔求职【官方网站】 沈阳人才网招聘信息 淮安人才网 - 淮安招聘网 - 找好工作上淮安招聘网 青海招聘网_青海人才网_青海人才市场_青海求职【官方网站】 三亚人才网_三亚招聘网_三亚人才网最新招聘信息_三亚人才招聘网 本溪迎客松货源-造型油松批发-盆景松价格-本溪景观松基地 苏州看房网_苏州房产中介_苏州找房 三亚人才网_三亚招聘网_三亚招聘会_三亚招聘_三亚找工作_最新招聘信息_三亚人才市场_三亚人才招聘信息_三亚人才网 招聘网_人才网_找工作_求职_海口招聘网_精英人才发展平台 盐城家政 杭州招聘网_杭州人才网_杭州人才市场_杭州求职【官方网站】 沈阳旅游_沈阳旅游攻略_沈阳旅游景点_沈阳旅游网 宜昌市企业网--搜企网,企业大全,企业黄页.广东企业,企业网,免费发布企业产品 淮北市语乐文学网_都市言情小说在线阅读网站,让您语中作乐! 黄冈市海豹文学网_无弹窗的网络小说阅读网站_海豹文学网 神农架林区海豹文学网_无弹窗的网络小说阅读网站_海豹文学网 许昌市品阅小说网 中山市品阅小说网 武汉市品阅小说网 安庆市语乐文学网_都市言情小说在线阅读网站,让您语中作乐! 三门峡市企业网--搜企网,企业大全,企业黄页.广东企业,企业网,免费发布企业产品 荆州市便民查询网 - 免费查询工具大全 - 原51240便民查询网 神农架林区企业网--搜企网,企业大全,企业黄页.广东企业,企业网,免费发布企业产品 随州市本地生活网 - 为您提供本地生活便民信息|发布本地信息平台 武陵源聚兴步进电机有限公司 通化市企业网--搜企网,企业大全,企业黄页.广东企业,企业网,免费发布企业产品 黄山市企业网--搜企网,企业大全,企业黄页.广东企业,企业网,免费发布企业产品 珠海市企业网--搜企网,企业大全,企业黄页.广东企业,企业网,免费发布企业产品 鄂州市企业网--搜企网,企业大全,企业黄页.广东企业,企业网,免费发布企业产品 七台河市企业网--搜企网,企业大全,企业黄页.广东企业,企业网,免费发布企业产品 黄山市企业网--搜企网,企业大全,企业黄页.广东企业,企业网,免费发布企业产品 新时代创业利器有限公司 中山市众仕达照明科技有限公司 汕尾市便民查询网 - 免费查询工具大全 - 原51240便民查询网 恩施土家族苗族自治州本地生活网 - 为您提供本地生活便民信息|发布本地信息平台 武汉市便民查询网 - 免费查询工具大全 - 原51240便民查询网 佛山市企业网--搜企网,企业大全,企业黄页.广东企业,企业网,免费发布企业产品 优直播官网-官网首页(中国)有限公司 手拉手同业批发中心 网络免费咨询平台-株洲阳光泌尿专科医院 通化市青岛人才网_青岛招聘网_求职找工作就上青岛人才网 漯河市青岛人才网_青岛招聘网_求职找工作就上青岛人才网 淮北市青岛人才网_青岛招聘网_求职找工作就上青岛人才网 济源市便民查询网 - 免费查询工具大全 - 原51240便民查询网 黄石市企业网--搜企网,企业大全,企业黄页.广东企业,企业网,免费发布企业产品 神农架林区便民查询网 - 免费查询工具大全 - 原51240便民查询网 仙桃市企业网--搜企网,企业大全,企业黄页.广东企业,企业网,免费发布企业产品 襄阳市企业网--搜企网,企业大全,企业黄页.广东企业,企业网,免费发布企业产品 十堰市便民查询网 - 免费查询工具大全 - 原51240便民查询网 江门市便民查询网 - 免费查询工具大全 - 原51240便民查询网 呼和浩特市企业网--搜企网,企业大全,企业黄页.广东企业,企业网,免费发布企业产品 济源市企业网--搜企网,企业大全,企业黄页.广东企业,企业网,免费发布企业产品 安庆市企业网--搜企网,企业大全,企业黄页.广东企业,企业网,免费发布企业产品 二三四五【影视大全】_2021影视大全在线观看 汕头市企业网--搜企网,企业大全,企业黄页.广东企业,企业网,免费发布企业产品 濮阳市企业网--搜企网,企业大全,企业黄页.广东企业,企业网,免费发布企业产品 清远市企业网--搜企网,企业大全,企业黄页.广东企业,企业网,免费发布企业产品 安庆市本地生活网 - 为您提供本地生活便民信息|发布本地信息平台 咸宁市本地生活网 - 为您提供本地生活便民信息|发布本地信息平台 云浮市心愿梦有限公司 - 独一无二的个性定制服务 宿迁市心语泉有限公司 - 展现指尖的时尚与魅力 绍兴市花影梦有限公司 - 共同守护地球家园 荆州市恬淡梦有限公司 - 提升魅力,尽显自信 阜阳市心弯月有限责任公司 - 开启知识的大门,追求成长 中山市花蕊影股份有限公司 - 燃创造力的火花 芜湖市梦幻夜股份公司 - 美好生活,尽在指尖 三门峡市烟雨桃有限公司 - 发现世界,开启冒险 锡林郭勒盟心弦影有限公司 - 宠物天堂,爱心守护 九江市翩跹曲股份公司 - 拥抱文字,享受阅读之乐 嘉兴市琉璃心股份有限公司 - 健康生活,幸福滋养 台州市雨夜诗有限公司 - 旅行体验,留下回忆 扬州市花海梦股份公司 - 财经投资,智慧决策 上海市悠长夜有限责任公司 - 分享快乐,留住美好 郑州市紫罗舞有限公司 - 知识的海洋,永不停歇 佳木斯市温柔风股份有限公司 - 美容秘籍,焕发魅力 衡水市恬淡缘有限责任公司 - 个性时尚,尽显风采 黑河市青山梦有限公司 - 最新数码产品,尽在触手可及 衢州市梦幻境有限公司 - 尽情享受欢乐时光 运城市青山翠有限公司 - 品味美食,尽享味蕾盛宴 东莞市花蕊影股份有限公司 - 发现世界的奇迹 宣城市雪舞风有限公司 - 关注健康,享受生活 邯郸市温润泉股份公司 - 家庭亲子时光的欢乐场所 六安市轻柔韵有限责任公司 - 创业启示,追逐梦想 荆州市温润夜股份公司 - 健康生活,追求幸福 承德市烟雨桃有限责任公司 - 教育培训,成就未来 通辽市恬淡梦有限公司 - 美容秘籍,尽显自信

发表评论

评论列表

  • 这篇文章还没有收到评论,赶紧来抢沙发吧~
蚌埠市本地生活网 - 为您提供本地生活便民信息|发布本地信息平台 济南人才网_济南招聘网_济南人才网最新招聘信息_济南人才招聘网 山西人才网_山西招聘网_山西招聘会_山西招聘_山西找工作_最新招聘信息_山西人才市场_山西人才招聘信息_山西人才网 汕头人才网_汕头招聘网_汕头招聘会_汕头招聘_汕头找工作_最新招聘信息_汕头人才市场_汕头人才招聘信息_汕头人才网 赤壁美食网_赤壁美食平台_赤壁特色美食商城门户网 四平招聘网_四平人才网_四平新区人才网_汇聚四平最新招聘信息 六安市本地生活网 - 为您提供本地生活便民信息|发布本地信息平台 上海招聘网_上海人才网_上海人才市场_上海求职【官方网站】 长春招聘网_长春人才网_长春新区人才网_汇聚长春最新招聘信息 人才招聘网_招聘网_中国人才网 - 求职找工作就上乌鲁木齐人才网 雁塔房产中介_雁塔租房_雁塔找房 六安废品回收-六安二手物资回收-六安电子产品回收-六安废旧金属回收-六安物资回收_六安废品回收网 乌鲁木齐招聘网_乌鲁木齐人才网_乌鲁木齐人才市场_乌鲁木齐求职【官方网站】 新疆招聘_新疆人才网_新疆人才市场-新疆招聘网【新疆聘网】 人才网-招聘网-招聘-招聘信息-最新招聘-求职-找工作-上西安招聘网 赤峰旅游_赤峰旅游攻略_赤峰旅游景点_赤峰旅游网 广州招聘网_广州人才网_广州人才市场_广州求职【官方网站】 蚌埠市本地生活网 - 为您提供本地生活便民信息|发布本地信息平台 西安市本地生活网 - 为您提供本地生活便民信息|发布本地信息平台 鸡西人才网 鸡西人才市场 最新招聘信息网,找工作求职 东莞招聘网_东莞人才网_东莞人才市场_东莞求职【官方网站】 阳江市本地生活网 - 为您提供本地生活便民信息|发布本地信息平台 潜江市本地生活网 - 为您提供本地生活便民信息|发布本地信息平台 招聘网_人才网_找工作_求职_惠州招聘网_精英人才发展平台 青海人才网 - 青海招聘网 - 找好工作上青海招聘网 北海人才网_北海招聘网_北海招聘会_北海招聘_北海找工作_最新招聘信息_北海人才市场_北海人才招聘信息_北海人才网 乌鲁木齐人才网 乌鲁木齐招聘网 乌鲁木齐本地求职招聘平台 海口人才网 - 海口招聘网 - 找好工作上海口招聘网 东莞招聘网-东莞招聘网-东莞人才网,东莞最新招聘信息,东莞人才市场,东莞招聘网,东莞市人才网,东莞找工作 桂林美食网_桂林美食平台_桂林特色美食商城门户网 周口招聘网_周口人才网_周口招聘信息网站 北海招聘网-北海招聘网-北海人才网,北海最新招聘信息,北海人才市场,北海招聘网,北海市人才网,北海找工作 襄阳市本地生活网 - 为您提供本地生活便民信息|发布本地信息平台 湛江市本地生活网 - 为您提供本地生活便民信息|发布本地信息平台 人才招聘网_招聘网_中国人才网 - 求职找工作就上长沙人才网 南阳市本地生活网 - 为您提供本地生活便民信息|发布本地信息平台 齐齐哈尔招聘网_齐齐哈尔人才网_齐齐哈尔人才市场_齐齐哈尔求职【官方网站】 沈阳人才网招聘信息 淮安人才网 - 淮安招聘网 - 找好工作上淮安招聘网 青海招聘网_青海人才网_青海人才市场_青海求职【官方网站】 三亚人才网_三亚招聘网_三亚人才网最新招聘信息_三亚人才招聘网 本溪迎客松货源-造型油松批发-盆景松价格-本溪景观松基地 苏州看房网_苏州房产中介_苏州找房 三亚人才网_三亚招聘网_三亚招聘会_三亚招聘_三亚找工作_最新招聘信息_三亚人才市场_三亚人才招聘信息_三亚人才网 招聘网_人才网_找工作_求职_海口招聘网_精英人才发展平台 盐城家政 杭州招聘网_杭州人才网_杭州人才市场_杭州求职【官方网站】 沈阳旅游_沈阳旅游攻略_沈阳旅游景点_沈阳旅游网 宜昌市企业网--搜企网,企业大全,企业黄页.广东企业,企业网,免费发布企业产品 淮北市语乐文学网_都市言情小说在线阅读网站,让您语中作乐! 黄冈市海豹文学网_无弹窗的网络小说阅读网站_海豹文学网 神农架林区海豹文学网_无弹窗的网络小说阅读网站_海豹文学网 许昌市品阅小说网 中山市品阅小说网 武汉市品阅小说网 安庆市语乐文学网_都市言情小说在线阅读网站,让您语中作乐! 三门峡市企业网--搜企网,企业大全,企业黄页.广东企业,企业网,免费发布企业产品 荆州市便民查询网 - 免费查询工具大全 - 原51240便民查询网 神农架林区企业网--搜企网,企业大全,企业黄页.广东企业,企业网,免费发布企业产品 随州市本地生活网 - 为您提供本地生活便民信息|发布本地信息平台 武陵源聚兴步进电机有限公司 通化市企业网--搜企网,企业大全,企业黄页.广东企业,企业网,免费发布企业产品 黄山市企业网--搜企网,企业大全,企业黄页.广东企业,企业网,免费发布企业产品 珠海市企业网--搜企网,企业大全,企业黄页.广东企业,企业网,免费发布企业产品 鄂州市企业网--搜企网,企业大全,企业黄页.广东企业,企业网,免费发布企业产品 七台河市企业网--搜企网,企业大全,企业黄页.广东企业,企业网,免费发布企业产品 黄山市企业网--搜企网,企业大全,企业黄页.广东企业,企业网,免费发布企业产品 新时代创业利器有限公司 中山市众仕达照明科技有限公司 汕尾市便民查询网 - 免费查询工具大全 - 原51240便民查询网 恩施土家族苗族自治州本地生活网 - 为您提供本地生活便民信息|发布本地信息平台 武汉市便民查询网 - 免费查询工具大全 - 原51240便民查询网 佛山市企业网--搜企网,企业大全,企业黄页.广东企业,企业网,免费发布企业产品 优直播官网-官网首页(中国)有限公司 手拉手同业批发中心 网络免费咨询平台-株洲阳光泌尿专科医院 通化市青岛人才网_青岛招聘网_求职找工作就上青岛人才网 漯河市青岛人才网_青岛招聘网_求职找工作就上青岛人才网 淮北市青岛人才网_青岛招聘网_求职找工作就上青岛人才网 济源市便民查询网 - 免费查询工具大全 - 原51240便民查询网 黄石市企业网--搜企网,企业大全,企业黄页.广东企业,企业网,免费发布企业产品 神农架林区便民查询网 - 免费查询工具大全 - 原51240便民查询网 仙桃市企业网--搜企网,企业大全,企业黄页.广东企业,企业网,免费发布企业产品 襄阳市企业网--搜企网,企业大全,企业黄页.广东企业,企业网,免费发布企业产品 十堰市便民查询网 - 免费查询工具大全 - 原51240便民查询网 江门市便民查询网 - 免费查询工具大全 - 原51240便民查询网 呼和浩特市企业网--搜企网,企业大全,企业黄页.广东企业,企业网,免费发布企业产品 济源市企业网--搜企网,企业大全,企业黄页.广东企业,企业网,免费发布企业产品 安庆市企业网--搜企网,企业大全,企业黄页.广东企业,企业网,免费发布企业产品 二三四五【影视大全】_2021影视大全在线观看 汕头市企业网--搜企网,企业大全,企业黄页.广东企业,企业网,免费发布企业产品 濮阳市企业网--搜企网,企业大全,企业黄页.广东企业,企业网,免费发布企业产品 清远市企业网--搜企网,企业大全,企业黄页.广东企业,企业网,免费发布企业产品 安庆市本地生活网 - 为您提供本地生活便民信息|发布本地信息平台 咸宁市本地生活网 - 为您提供本地生活便民信息|发布本地信息平台 云浮市心愿梦有限公司 - 独一无二的个性定制服务 宿迁市心语泉有限公司 - 展现指尖的时尚与魅力 绍兴市花影梦有限公司 - 共同守护地球家园 荆州市恬淡梦有限公司 - 提升魅力,尽显自信 阜阳市心弯月有限责任公司 - 开启知识的大门,追求成长 中山市花蕊影股份有限公司 - 燃创造力的火花 芜湖市梦幻夜股份公司 - 美好生活,尽在指尖 三门峡市烟雨桃有限公司 - 发现世界,开启冒险 锡林郭勒盟心弦影有限公司 - 宠物天堂,爱心守护 九江市翩跹曲股份公司 - 拥抱文字,享受阅读之乐 嘉兴市琉璃心股份有限公司 - 健康生活,幸福滋养 台州市雨夜诗有限公司 - 旅行体验,留下回忆 扬州市花海梦股份公司 - 财经投资,智慧决策 上海市悠长夜有限责任公司 - 分享快乐,留住美好 郑州市紫罗舞有限公司 - 知识的海洋,永不停歇 佳木斯市温柔风股份有限公司 - 美容秘籍,焕发魅力 衡水市恬淡缘有限责任公司 - 个性时尚,尽显风采 黑河市青山梦有限公司 - 最新数码产品,尽在触手可及 衢州市梦幻境有限公司 - 尽情享受欢乐时光 运城市青山翠有限公司 - 品味美食,尽享味蕾盛宴 东莞市花蕊影股份有限公司 - 发现世界的奇迹 宣城市雪舞风有限公司 - 关注健康,享受生活 邯郸市温润泉股份公司 - 家庭亲子时光的欢乐场所 六安市轻柔韵有限责任公司 - 创业启示,追逐梦想 荆州市温润夜股份公司 - 健康生活,追求幸福 承德市烟雨桃有限责任公司 - 教育培训,成就未来 通辽市恬淡梦有限公司 - 美容秘籍,尽显自信