开发工具分享
  • 首页
  • 计算科学
  • 文化旅游
  • 项目和网站
    • OSSEZ 计算技术
    • USRealEstate 社区
    • 地区文化
    • CWIKI.US
    • BUG.OSSEZ.COM
    • RSS.OSSEZ.COM
CWIKIUS.CN
一个有独立思考和温度的清新站
Computer Science

Java 8 开始新增的 Optional 类 - Optional 对象中的异常

使用 orElseThrow() 处理异常 在 orElse() 和 orElseGet() 方法之外,JDK 还添加了一个 orElseThrow() 方法,JDK 使用这个方法来处理对象为空的情况。 如果 Optional 的对象为 null 的话,orElse() 和 orElseGet() 是返回一个默认值,我们可以使用 orElseThrow() 来抛出一个异常。 考察下面的代码,在 Optional 为空的时候,异常是如何抛出的。 @Test(expected = IllegalArgumentException.class) public void whenOrElseThrowWorks_thenCorrect() { String nullName = null; String name = Optional.ofNullable(nullName).orElseThrow( IllegalArgumentException::new); } 这个异常处理方法是从 Java 8 开始提供的,可以通过在构造来传入异常。 Java 10 以后,还推出了一个更加简单的没有参数的 orElseThrow() 版本的方法。 这样的话,如果 Optional 对象为空的话,我们可以抛出一个 NoSuchElementException 异常: @Test(expected = NoSuchElementException.class) public void whenNoArgOrElseThrowWorks_thenCorrect() { String nullName = null; String name = Optional.ofNullable(nullName).orElseThrow(); } https://www.ossez.com/t/java-8-optional-optional/13968

2022年08月03日 0Comments 458Browse 0Like Read more
Computer Science

Java 8 开始新增的 Optional 类 - Optional 中的方法

fPresent() 的使用条件 ifPresent() 方法能够让我们在对对象进行下一步操作之前判断我们需要操作的对象是否为 Null,在没有 Optional 对象之前,我们通常使用下面的方法先进行判断: if(name != null) { System.out.println(name.length()); } 上面的程序逻辑是,首先判断 name 这个变量是不是为空,如果不为空的话,允许程序继续执行下一步。 这种判断方法不是很美观,代码也比较难看,更重要的是这种判断方法也是容易出错的。 有谁又能够保证我们在检查空,并且打印出变量后,这个变量不被再次使用呢,在这个变量再次使用的时候又有谁能够保证我们不会忘记空检查呢? 同时,有可能在程序的运行时导致空对象异常,NullPointerException。尤其是在程序因为输入的问题导致失败,无法启动的情况下,通常这种情况是因为程序本身没有被很好的设计和编码。 Optional 能够非常明确的处理可能为空的变量,这个是一种比较好的编码习惯。 让我们看看上面的代码在 Java 8 的环境下是如何进行实现的。 在常用的函数编程的情况下,我们在对象不进行空检查后使用函数式进行编程: @Test public void givenOptional_whenIfPresentWorks_thenCorrect() { Optional<String> opt = Optional.of("HoneyMoose"); opt.ifPresent(name -> LOG.debug("{}", name.length())); } 在上面的示例中,我们仅仅使用了 2 行代码就实现了第一种方法需要使用的 5 行代码。 第一行代码使用 Optional 对象来对我们的变量进行包装,第二行代码就对已经包装好的 Optional 对象进行相应的操作。 orElse() 方法来定义默认值 orElse() 这个方法被用来获取 Optional 实例中内部的值。 这个方法只需要 1 个参数,如果 Optional 对象中的值不为空的话,程序将会返回 Optional 对象中的值,否则将会使用 orElse 这个方法中输入参数的值来替代输出。 当然,你也可以在 orElse() 调用一个方法,至于和 orElseGet() 有什么不同,我们将会在后面进行说明。 考察下面的代码: @Test public void whenOrElseWorks_thenCorrect() { String nullName = null; String name = Optional.ofNullable(nullName).orElse("john"); assertEquals("john", name); } orElseGet() 方法来定义默认值 orElseGet() 和 orElse() 方法类似。 我们都知道,如果 Optional 为空的时候,如果使用 orElse() 方法,将会使用这个方法中输入的参数来替代返回,orElseGet() 就更近一步了。 orElseGet 提供的是一个函数式的接口,你可以在 orElseGet() 中使用函数编程,返回的结果就是这个函数进行运算后的结果。 @Test public void whenOrElseGetWorks_thenCorrect() { String nullName = null; String name = Optional.ofNullable(nullName).orElseGet(() -> "john"); assertEquals("john", name); } orElse() 和 orElseGet() 方法的对比 和很多程序员一样,如果你是开始接触 Java 8 的话,你可能对 orElse() 和 orElseGet() 2 个方法之间的执行不同有所不了解,觉得这 2 个方法在功能上都是重复的。     事实上看起来就是这样的,但是在实际上还是有一些微妙的不同的。 如果你对这些细微的不同不够了解的话,有可能会严重影响你程序的执行效率。 简单来说就是其中定义的函数是否被执行的区别,不管前面对 Optional 的判断是否为 null, orElse() 中调用的方法都会被执行,orElseGet() 却不会。 首先,让我们在测试类中定义一个 getMyDefault() 方法,这个方法不使用任何参数,只是打印并且返回一个字符串: public String getMyDefault() { System.out.println("Getting Default Value"); return "Default Value"; } 然后我们分别使用 orElse() 和 orElseGet() 来进行调用这个方法,我们来看看有什么不同。 Optional 对象为空的情况 @Test public void whenOrElseGetAndOrElseOverlap_thenCorrect() { String text = null; String defaultText = Optional.ofNullable(text).orElseGet(this::getMyDefault); assertEquals("Default Value", defaultText); defaultText = Optional.ofNullable(text).orElse(getMyDefault()); assertEquals("Default Value", defaultText); } 正如我们所看到的,因为 Optional 对象为空,我们定义的函数都被调用了。 程序的输出如下,从程序的输出可以看出来,这 2 个方法的执行是相同的。 The side effect is: Getting default value... Getting default value... Optional 对象不(NOT)为空的情况 使用上面相同的代码,但是这次不同的是,我们定义的 Optional 对象是不为空的 @Test public void whenOrElseGetAndOrElseDiffer_thenCorrect() { String text = "Text present"; LOG.debug("Using orElseGet:"); String defaultText = Optional.ofNullable(text).orElseGet(this::getMyDefault); assertEquals("Text present", defaultText); LOG.debug("Using orElse:"); defaultText = Optional.ofNullable(text).orElse(getMyDefault()); assertEquals("Text present", defaultText); } 如上面的代码所展示的,我们需要判断的 Optional 对象已经不为空了,程序的输出如下所示: Using orElseGet: Using orElse: Getting default value... 注意到 orElseGet() 方法在我们检查 Optional 对象不为空的时候,就不再调用 getMyDefault 这个方法。 然后我们再来看看 orElse() 这个方法,尽管…

2022年08月03日 0Comments 489Browse 0Like Read more
Computer Science

Java 8 开始新增的 Optional 类 - 检查 Optional 的值

检查值是否存在的 isPresent() 和 isEmpty() 方法 当我们使用 Optional 对象的时候,我们可以使用 isPresent() 方法来检查返回的 Optional 对象中是否有值。 Optional 对象可以是你自己创建的,或者是从其他方法中返回的。 @Test public void givenOptional_whenIsPresentWorks_thenCorrect() { Optional<String> opt = Optional.of("HoneyMoose"); assertTrue(opt.isPresent()); opt = Optional.ofNullable(null); assertFalse(opt.isPresent()); } 如果 Optional 对象中的值不为 null 的话,这个方法将会返回 True。 同样的,如果使用 Java 11 的话,你可以使用与 isPresent 相反的方法 isEmpty。 如果你的对象中的值为 null 的话,isEmpty 将会返回 True。 @Test public void givenAnEmptyOptional_thenIsEmptyBehavesAsExpected_JDK11() { Optional<String> opt = Optional.of("Baeldung"); assertFalse(opt.isEmpty()); opt = Optional.ofNullable(null); assertTrue(opt.isEmpty()); } 如果你查看 API 的话,你会看到 JDK 的源代码只是用了简单的判断是否等于 null。   这 2 个方法的使用正好是相反的。   https://www.ossez.com/t/java-8-optional-optional/13966

2022年08月03日 0Comments 457Browse 0Like Read more
Computer Science

Java 8 开始新增的 Optional 类 - 创建 Optional 对象

创建一个 Optional 对象 有下面的一些方法可以被用来创建 Optional 对象。     empty 静态方法 如果你想创建一个空的 Optional 的对象,我们简单的使用 Optional 类提供的 empty() 静态方法: @Test public void whenCreatesEmptyOptional_thenCorrect() { Optional<String> empty = Optional.empty(); assertFalse(empty.isPresent()); } 需要注意的是,我们使用 isPresent() 方法来检查 Optional 对象中值的情况。 如果我们创建的 Optional 对象有值的话,isPresent() 方法将会返回 True,否则 isPresent() 这个方法将会返回 False。 我们将会在本页面的后续部分继续讨论有关 isPresent() 方法的使用。 of 静态方法 下面的方法将会创建一个 Optional 对象,在创建这个对象的时候,我们使用了另外的一个静态方法 of() 来进行创建: @Test public void givenNonNull_whenCreatesNonNullable_thenCorrect() { String name = "HoneyMoose"; Optional<String> opt = Optional.of(name); assertTrue(opt.isPresent()); } 需要注意的是,如果你使用 of 静态方法创建一个 Optional 对象的时候,你还是有机会面临空对象(NullPointerException)异常。 考察下面的代码,如果运行的话,你还是会命令到空对象异常,如果你初始化 Optional 为空的话。 @Test(expected = NullPointerException.class) public void givenNull_whenThrowsErrorOnCreate_thenCorrect() { String name = null; Optional.of(name); } ofNullable 静态方法 有时候,我们希望在我们的代码中使用 Null 值。 这个时候,你可以使用静态方法 ofNullable() ,这个静态方法将会告诉 Optional 对象是可能为 Null 的。 @Test public void givenNonNull_whenCreatesNullable_thenCorrect() { String name = "HoneyMoose"; Optional<String> opt = Optional.ofNullable(name); assertTrue(opt.isPresent()); } 通过上面的操作,我们可以在 Optional 使用 null,这样的话,如果你对 Optional 进行初始化的时候,不会因为null 的使用而导致异常。 @Test public void givenNull_whenCreatesNullable_thenCorrect() { String name = null; Optional<String> opt = Optional.ofNullable(name); assertFalse(opt.isPresent()); } https://www.ossez.com/t/java-8-optional-optional/13965

2022年08月03日 0Comments 494Browse 0Like Read more
Computer Science

Java 8 开始新增的 Optional 类

如果你写过一些 Java 代码的话,你应该知道 Java 中最常见的就是空指针异常错误。 这个错误的原因就是你对一个为空的对象进行操作了。 比如说,你有一个 List,但是这个 List 是空对象,如果你要向这个 List 中添加元素或者删除元素的话,你铁定会遇到空对象的异常。 Optional 类是一个可以为 NULL 的容器对象。如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象。 Optional 是个容器:它可以保存类型T的值,或者仅仅保存 NULL。Optional提供很多有用的方法,这样我们就不用显式进行空值检测。     Optional 类的引入很好的解决空指针异常。 概述 在本指南中,我们针对 Optional 来进行一些探讨。 Optional 这个类最新是从 Java 8 中引入的,其主要目的如上面我们介绍的,就是为了解决 Java 中广受诟病的空异常。 Java 从 类型级别(type-level) 给出了一个解决方案,用来替代 null。 In this tutorial, we’re going to show the Optional class that was introduced in Java 8. 如果你还想对 Java 的 Optional 了解更多的话,你可以直接访问 Oracle 提供的官方 API,访问地址为: Tired of Null Pointer Exceptions? Consider Using Java SE 8's Optional!   文章列表 因 Optional 有关的内容比较多,请通过下面的链接访问具体的小主题: Java 8 开始新增的 Optional 类 - 创建 Optional 对象 Java 8 开始新增的 Optional 类 - 检查 Optional 的值 Java 8 开始新增的 Optional 类 - Optional 中的方法 Java 8 开始新增的 Optional 类 - Optional 对象中的异常 Java 8 开始新增的 Optional 类 - Optional 对象中的返回 Java 8 开始新增的 Optional 类 - Optional 在 Java 8 中的 Chaining 特性 Java 8 开始新增的 Optional 类 - Optional 在 Java 9 中的 API Java 8 开始新增的 Optional 类 - Optional 可能存在的滥用 Java 8 开始新增的 Optional 类 - Optional 对象序列化 结论 如果你按照上面的顺序阅读完成相关文章的话,你应该对在 Java 8 中开始使用的 Optional 类有了一些基本的了解。 同时在这边文章中也对为什么要使用 Optional 对象来替代 null 检查进行了一些说明。 同时我们也对如何从 Optional 中获得值进行了一些说明,同时对如果值是 null ,我应该如何设置默认值使用的 orElse() 和 orElseGet() 方法进行了一些阐述。 最后,我们对 Optional 返回的值如何进行转换进行了描述,在对返回值进行转换的话,我们可能会使用到 map(), flatMap() 和 filter() 方法。 同时我们还对 Optional 的一些特性,方法进行了阐述和说明。 在最后,我们对为什么使用 Optional 为方法的参数是不好的选项的原因进行了说明,并且举例如何避免这个问题。 https://www.ossez.com/t/java-8-optional/13964  

2022年08月03日 0Comments 447Browse 0Like Read more
Computer Science

反向代理 413 Request Entity Too Large 问题

如果在服务器上使用了反向代理。 你可能会收到下面的错误信息: 413 Request Entity Too Large errors`。 问题和解决 问题的原因就是反向代理服务器针对 HTTP 访问的时候有限制, Nginx 在 Nginx 的配置文件中,添加下面的内容 client_max_body_size 100M; 上面的配置信息显示了具体的配置位置。 在默认情况下 Nginx 配置的 client_max_body_size 大小为 1M。 很多时候是肯定不够用的。 Apache Apache 在 http.conf 配置文件中有一个 LimitRequestBody 参数。 你可以将这个参数配置为:LimitRequestBody 104857600。 虽然你成功配置了上面的参数,但是有时候上面的参数在 Apache 中可能没有办法解决你的问题。 这是因为有时候和后台代理的程序也有关系。 总结 根据最近想买的一些调整,使用 Nginx 作为反向代理,会比 Apache 更加轻量,配置更加容易。   https://www.ossez.com/t/413-request-entity-too-large/13963

2022年08月03日 0Comments 874Browse 0Like Read more
Computer Science

看这个情况这块硬盘是要交代了

如果你收到你的存储提示下面的信息。     最好的办法就是先准备一块新的硬盘吧,因为你也不知道你这块硬盘什么时候突然就交代了。   https://www.ossez.com/t/topic/13962

2022年08月03日 0Comments 642Browse 0Like Read more
文化旅游

传统村落水口山镇大皮口村 - 历史沿革

大皮口村所处的水口山镇原名叫隆庆里。柴君山之水,与境内梅溪河汇于对门山狭地,形成锁住水口之势,故名“水口山”,水口山镇由此得名。 清代中期,在梅溪河东岸建街为圩,建一座桥连梅溪河东西两岸,桥名“聚胜桥”。聚胜桥是一座风雨桥,光绪年的《零陵县志》有记:“聚胜桥:隆庆里,石砌三拱。 ”聚胜桥大约在乾隆年间建,后来这座桥几经修缮。现桥于1984年改建,把原木桥面改为钢筋混凝土,而桥墩仍是原来的石桥墩,桥梁柱仍是青石柱。 1949年后,梅溪河西又建新街,这条街成为当时零陵县西南最大的农贸集市。1950年代水口山为零陵县第十区,尔后改为水口山公社,1984年更名水口山乡,1986年经省政府批准水口山撤乡建镇。     大皮口传统村落以汉代杨震为始祖。永州知事张灿为《梅溪杨氏族谱》写的《叙》:“杨氏巨族自汉杨震迄宋龟山(宋朝理学家杨时(1053—1130),亲承二程先生道脉,为求学留下‘程门立雪’之典故),有元季肇基梅溪而居。”“ 今兹考家乘,自元季通公肇基隆庆之梅溪,是为厥生民之祖。”大皮口村以杨震和杨时为始祖,其用意是告诫子孙们追求奋斗的目标方向,做官需向杨震一样清廉,读书要向杨时一样谦逊求学,求真悟道。 村民曾建庙庵祭祀杨震。光绪《零陵县志》记:“梅溪庙在隆庆里,明时建,祀汉清白吏杨震。凡遇疾疫旱干,祈祷辄应。里有争端,来庙质曲直,人莫敢诬。 ”梅溪杨氏以汉杨震为始祖,并以神而祀,祈保佑其子民平安免灾疫,也祈后人跟杨震一样,清廉留史。现梅溪庙已毁。 大皮口村与大庆坪夫江仔村是同一个先祖,同根同源。先祖名叫杨智通,《杨氏族谱》(四知堂)载:“杨智通,字亨伯,三十郎,元季仁宗改元延祐,七年庚申岁正月(1321)正月六日戌时生,大明洪武二十二年己巳岁(1390)十月十九日辰时殁,享寿七十岁,零陵梅溪杨氏之始祖也。 杨智通兄弟四人,史道、智远、智通、智达。元元统十四年(1346),智远、智通、智达兄弟三人自江西客游湖湘,于丁亥二月初八定居长沙定冲桥西瓜坪。元至正十年(1350),智通、智达二人来永州贸易七年,智达公遂由芝城至宁远,家焉。 己亥秋,吕熊将军朝祀舜陵,智通与事,因乘便与兄弟一会,后仍回到泉陵。元至正癸卯二十三年(1363)十月,乃贸易至零陵西乡隆庆里大马井,主贺宗乡家,遂拜为父母。后置产业起家,卜筑零陵梅溪宅,因家焉。” 杨智通的长子杨世忠于明洪武三年出生,永乐九年逝世。安葬在大皮口村后鲢鱼洞旁。从这些历史资料可知,杨氏在水口山落户已有600多年的历史,根据“卜筑零陵梅溪宅”和杨氏第二代杨世忠“葬大皮口村后鲢鱼洞”的记述,大皮口村的先祖杨智通最初落户应是大皮口村这里,杨氏一族一直在大皮口村生养休息,不断发展。所以至今大皮口村全是杨姓,没有杂居其他姓。 杨氏在水口山梅溪洞经过几百年的发展,后来因人口增多,如《杨氏族谱》所写“聚四十余村,二万余丁之众”,杨氏人员只得向村外其它地方另立户发展。水口山和大庆坪以及周围许多杨姓村子,大多是从大皮口搬迁出去后发展起来的。 杨氏第六世孙杨万柏迁居水口山镇的三坛峰,而夫江仔的先祖又从三坛峰迁出。乾隆二十七年零陵西边发生大灾,杨氏的一些族人再一次从古宅地迁居其它地方。有从水口山瓦窑头迁之道县,有迁之广东,也有迁之滥泥田、豹虎山的,还有迁之零陵城边诸葛庙的。“ 智通公自世字辈分三大房,以后又分为四十八村,及今几百余村矣,皆同出智通公脉下。”在水口山镇梅溪河东岸边“杨氏宗祠”的捐款碑落款上,有许多以大皮口村为祖先发祥地的村子名,贵州、广东、广西等省的都有。 大皮口村因人丁的发展与自然灾害的原因,杨氏子弟搬至其它地方发展的有许多,但六百多年来,大皮口村作为零陵县水口山一带杨姓氏族的发祥地,一直都有杨姓氏族人居住在这里。   https://www.usreio.com/t/topic/260

2022年08月02日 0Comments 1373Browse 0Like Read more
文化旅游

传统村落水口山镇大皮口村 - 生态环境

大皮口传统村落东背靠柴君山。柴君山,在文献里又称之为“砦【石匀】山”。清光绪元年《零陵县志》宗绩辰记:“西南有山,一峰孤立,望其云气,卜阴晴,甚验。 林木畅茂,居民相戒勿伐,其山在戴花山以上,隆庆里进贤二乡之间,名砦【石匀】山。 ”隆庆里即现水口山一带,进贤乡为今零陵区何仙观乡。康熙年间的《零陵县志》之“山川”篇:“戴花山,在城西南五十里。田山玉记曰,山麓横亘百里,一峰特立群间,俯伏树木蓊郁,中间一石。 ”光绪《零陵县志》:戴花山“林麓绵亘百余里,一峰特起,群冈俯伏,远望山顶,烟树葱郁,状如簪花,因名曰戴花。山下有溪水,名茨头江,一汇于贤水,一汇于梅溪。 ”从古县志中知,大皮口村后连绵群山为戴花山脉,山形走势波浪起伏,峰峦叠嶂,沟壑纵横,瀑布高悬,谷深林密。清朝解元零陵人黄佳色有《记》:“山有七十二峰,起伏相连,一峰笏立,如蛾眉,天半者,连山观也。 ”村后连绵起伏的山脉有72峰,为都庞岭余脉。山脉西头连湘桂交界的黄花岭,东头一直到富家桥镇、梳子铺乡,明山里、鹅子界、黑山里、凤凰岭、狗婆龙上天岭、擂鼓岭等,都是这山脉的山峰,“一峰特立”的主峰柴君山,海拔1254.5米。 柴【石匀】山自古就竹木茂盛,古木参天。砦【石匀】山,不知何时被百姓更之为“柴君山”,且今已习之为常。 柴君山处零陵水口山镇东,零陵何仙观乡、双牌何家洞乡之西,雄立梅溪大皮口,俯窥广西东山境。 从大皮口村开车只能开到坝口里,然后徒步上山,过三十二湾,走三个多小时的山路到长冲坳。 有一个小井边刻“左川岩边,右柴君山”,中间有一“走”字,“走”字下还有两字,已漶漫不清,无法辨读,碑上的字为阳刻。 山间小路只能走到此处,再往上走就没有路了。山上都是人工种的杉木林和杂草树藤。柴君山是大皮口村及周围村子的主要水源地,“其水源山场上至登天界,下至坝口里”,所有山上林木是禁止砍伐的,其目的就是为了保护水源。     大皮口村西边临梅溪河。梅溪河在地图上叫石期河,向东北流到珠山镇的北门口村,与从石岩头光辉山上来的石岩头河在珠山镇北门口合流,向东北流至东安汇入湘江,它是湘江在永州段的一条重要支流。     大皮口传统村落的南边有一条沿村而流的小溪,这溪水由柴君山深谷里的山泉汇流而成。山泉从山上流至长冲坳后,大皮口村的先民在山谷狭窄处(坝口里)修了一个水坝,专门用于拦洪蓄水。 溪水向西流经村北的地方,村民又筑一个水堰,然后又修建了两条水渠,一条流入村中,一条绕村北而过。两条水渠的水在村西口分别流入门前的田洞,然后注入梅溪河。 我们到村里考察时,村中水渠里的哗哗流水,正从村民的家门口流过,村民在家门口就可以洗涤衣物等。     大皮口传统村落东靠柴君山连绵的山峰,西临梅溪河。向西远眺,远处起伏山峦成一条黛色叠幛,横亘在水口山小盆地的西北方向。 村民把村子所在的田洞叫“门前洞”和“下巴洞”,而在古籍里,这应是叫“梅溪洞”,这是一片肥沃的土地。春光明媚,田间水光粼粼,村民正在忙着春耕,蛙声与人的吆喝声此起彼伏,成为一首优美的田野交响曲。这里是零陵的重要粮仓。   https://www.usreio.com/t/topic/259

2022年08月02日 0Comments 946Browse 0Like Read more
文化旅游

传统村落水口山镇大皮口村 - 地理位置

大皮口传统村落位于零陵区水口山镇东南方向,离零陵城区55公里。大皮口村海拔219米,东经111°36′47″,北纬26°12′52″。 若沿湘桂古道步行到零陵古城,约35公里。其行走的路线是:从大皮口村出发→水口山镇→毛溪桥→楚阳(黄泥塘)→喇叭山→梳子铺→马头岗→石山脚(毛里山)→柳子街→过黄叶渡浮桥→零陵城内。 村民会选择在柳子街住一晚,第二天早上过河购物。柳子街是零陵西路进城的必经之地,西路人特别是像大庆坪、水口山一带路途较远的,到零陵城来基本上都会在柳子街住一晚,这也是柳子街过去繁华的原因。 大皮口村离水口山镇3公里,一条笔直的公路穿过门前的田洞。沿这条马路一直向东,到坝口里,大皮口村离坝口里2公里,离柴君山脚下的长冲坳7公里。 然后可以徒步从长冲坳走山间小路,则可以直接到达林场。村子东面是柴君山,柴君山上有零陵区国有水口山林场。 若开车到林场去,需先向西折返1公里再向东,经过大树脚村,才能前往水口山林场。柴君山雄居零陵、双牌两县区四乡(水口山镇、富家桥镇、大庆坪乡和双牌何家洞),翻过柴君山就是零陵区何仙观乡和双牌的何家洞乡。 大皮口村与零陵区周家大院只一山之隔,却相距40公里。村的西南方向与水口山镇大树脚村相邻。 向北到珠山镇,珠山镇有一个泉南高速公路入口,大皮口村离泉南高速16公里。   https://www.usreio.com/t/topic/258

2022年08月02日 0Comments 667Browse 0Like Read more
1…109110111112113…304
Archives
  • June 2026
  • May 2026
  • April 2026
  • March 2026
  • February 2026
  • January 2026
  • December 2025
  • November 2025
  • October 2025
  • September 2025
  • August 2025
  • July 2025
  • June 2025
  • May 2025
  • April 2025
  • March 2025
  • February 2025
  • January 2025
  • December 2024
  • November 2024
  • October 2024
  • September 2024
  • August 2024
  • July 2024
  • June 2024
  • May 2024
  • April 2024
  • March 2024
  • February 2024
  • January 2024
  • December 2023
  • November 2023
  • October 2023
  • September 2023
  • August 2023
  • July 2023
  • June 2023
  • May 2023
  • April 2023
  • December 2022
  • November 2022
  • October 2022
  • September 2022
  • August 2022
  • May 2022
  • April 2022
  • March 2022
  • February 2022
  • January 2022
  • December 2021
  • November 2021
  • October 2021
  • September 2021
  • August 2021
  • July 2021
  • June 2021
  • May 2021
  • April 2021
  • March 2021
  • February 2021
  • January 2021
  • December 2020
  • November 2020
  • October 2020
  • September 2020
  • August 2020
  • July 2020
  • June 2020
  • May 2020
  • April 2020
  • March 2020
  • February 2020
  • January 2020
  • December 2019
  • November 2019
  • October 2019
  • September 2019
  • August 2019
  • July 2019
  • June 2019
  • May 2019
  • April 2019
  • March 2019
  • February 2019
  • January 2019
  • December 2018
  • November 2018
  • October 2018
  • September 2018
  • August 2018
  • July 2018
  • June 2018
  • May 2018
  • April 2018
  • March 2018
Categories
  • Computer Science (2,367)
    • Confluence (663)
    • Gradle (12)
  • U.S. (522)
  • 文化旅游 (146)

COPYRIGHT © 2020 CWIKIUS. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS

湘ICP备2020018253号-1