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

Busybox 在 Docker 中的部署和启动

可以使用 docker pull 指令下载 busybox:latest 镜像: PS C:\Users\yhu> docker pull busybox:latest latest: Pulling from library/busybox ec562eabd705: Pull complete Digest: sha256:5eef5ed34e1e1ff0a4ae850395cbf665c4de6b4b83a32a0bc7bcb998e24e7bbb Status: Downloaded newer image for busybox:latest docker.io/library/busybox:latest What's Next? View a summary of image vulnerabilities and recommendations → docker scout quickview busybox:latest PS C:\Users\yhu> 下载后,可以看到 busybox 镜像只有 4.26 MB: PS C:\Users\yhu> docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE repo-docker.isharkfly.com/docker-hub/visatrack latest a329341dbaeb 3 days ago 522MB repo-docker.isharkfly.com/docker-hub/visatrack <none> f5f9d8b3b410 3 days ago 522MB alpine/git latest 80ed206c002b 7 days ago 50.4MB data-mq-service 0.0.1-SNAPSHOT 7eb277a365d6 3 weeks ago 475MB docsify-docs 0.0.1 32062033284a 6 weeks ago 1.13GB <none> <none> 0ebfbefe1d52 6 weeks ago 1.13GB alpine latest 05455a08881e 3 months ago 7.38MB zchub-crawler latest b20aa408fe8f 7 months ago 1.6GB mq-service 0.0.1-SNAPSHOT 308dd50eb67a 7 months ago 441MB reso-web-api-reference-server-odata-manager-app latest 27cdaae03879 8 months ago 441MB reso-builder latest cabba9a35a22 8 months ago 1.47GB busybox latest 65ad0d468eb1 11 months ago 4.26MB tutor-service 0.0.1-SNAPSHOT 20d2f52a1fc4 13 months ago 521MB sharkfly-wechat-service 0.0.1-SNAPSHOT 0d3e7843994e 13 months ago 465MB eclipse-temurin 17-jdk-alpine 9a0a4e74d117 13 months ago 358MB rabbitmq 3.11-management 04a3a28a368b 13 months ago 255MB framework-spring-docker 0.0.1-SNAPSHOT 42e51829e8c7 15 months ago 379MB adoptopenjdk/openjdk11-openj9 alpine b533cd6150ba 15 months ago 379MB mysql/mysql-server latest 1d9c2219ff69 16 months ago 496MB docker101tutorial latest e60bd4e10534 17 months ago 47MB alpine/git <none> 22d84a66cda4 17 months ago 43.6MB PS C:\Users\yhu>     如果只说是大小来说,Alpine 也大不了多少,但 Alpine 提供了更多的功能。 这也就是为什么 Docker 官方切换到 Alpine 的原因。   https://www.isharkfly.com/t/busybox-docker/15732

2024年05月13日 0Comments 523Browse 0Like Read more
Computer Science

Docker 的 Busybox 操作系统镜像

BusyBox是一个遵循GPL协议、以自由软件形式发行的应用程序。 Busybox在单一的可执行文件中提供了精简的Unix工具集,可运行于多款POSIX环境的操作系统,例如Linux(包括Android)、Hurd、FreeBSD等等。 由于BusyBox可执行文件的文件比较小,使得它非常适合使用于嵌入式系统。 作者将BusyBox称为“嵌入式Linux的瑞士军刀”。     在以前,Docker 官方为了压缩容量,保证容器的启用,其实都在使用 busybox,但后期,Docker 官方开始使用 Alpine 来替代 busybox。 获取官方镜像 可以使用 docker pull 指令下载 busybox:latest 镜像: PS C:\Users\yhu> docker pull busybox:latest latest: Pulling from library/busybox ec562eabd705: Pull complete Digest: sha256:5eef5ed34e1e1ff0a4ae850395cbf665c4de6b4b83a32a0bc7bcb998e24e7bbb Status: Downloaded newer image for busybox:latest docker.io/library/busybox:latest What's Next? View a summary of image vulnerabilities and recommendations → docker scout quickview busybox:latest PS C:\Users\yhu> 下载后,可以看到 busybox 镜像只有 4.26 MB: PS C:\Users\yhu> docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE repo-docker.isharkfly.com/docker-hub/visatrack latest a329341dbaeb 3 days ago 522MB repo-docker.isharkfly.com/docker-hub/visatrack <none> f5f9d8b3b410 3 days ago 522MB alpine/git latest 80ed206c002b 7 days ago 50.4MB data-mq-service 0.0.1-SNAPSHOT 7eb277a365d6 3 weeks ago 475MB docsify-docs 0.0.1 32062033284a 6 weeks ago 1.13GB <none> <none> 0ebfbefe1d52 6 weeks ago 1.13GB alpine latest 05455a08881e 3 months ago 7.38MB zchub-crawler latest b20aa408fe8f 7 months ago 1.6GB mq-service 0.0.1-SNAPSHOT 308dd50eb67a 7 months ago 441MB reso-web-api-reference-server-odata-manager-app latest 27cdaae03879 8 months ago 441MB reso-builder latest cabba9a35a22 8 months ago 1.47GB busybox latest 65ad0d468eb1 11 months ago 4.26MB tutor-service 0.0.1-SNAPSHOT 20d2f52a1fc4 13 months ago 521MB sharkfly-wechat-service 0.0.1-SNAPSHOT 0d3e7843994e 13 months ago 465MB eclipse-temurin 17-jdk-alpine 9a0a4e74d117 13 months ago 358MB rabbitmq 3.11-management 04a3a28a368b 13 months ago 255MB framework-spring-docker 0.0.1-SNAPSHOT 42e51829e8c7 15 months ago 379MB adoptopenjdk/openjdk11-openj9 alpine b533cd6150ba 15 months ago 379MB mysql/mysql-server latest 1d9c2219ff69 16 months ago 496MB docker101tutorial latest e60bd4e10534 17 months ago 47MB alpine/git <none> 22d84a66cda4 17 months ago 43.6MB PS C:\Users\yhu> 如果只说是大小来说,Alpine 也大不了多少,但 Alpine 提供了更多的功能。 这也就是为什么 Docker 官方切换到 Alpine 的原因。 运行 busybox 启动一个 busybox 容器,并在容器中执行 grep 命令。 从启动的速度来看,那就是几乎是光速了。 PS C:\Users\yhu> docker run -it busybox / # grep BusyBox v1.36.1 (2023-05-18 22:34:17 UTC) multi-call binary. Usage: grep [-HhnlLoqvsrRiwFE] [-m N] [-A|B|C N] { PATTERN | -e PATTERN... | -f FILE...…

2024年05月13日 0Comments 538Browse 0Like Read more
Computer Science

Docker 直接运行一个 Alpine 镜像

由于镜像很小,下载时间往往很短,读者可以直接使用 docker run 指令直接运行一个 Alpine 容器,并指定运行的 Linux 指令,例如: PS C:\Users\yhu> docker run alpine echo '123' Unable to find image 'alpine:latest' locally latest: Pulling from library/alpine 4abcf2066143: Already exists Digest: sha256:c5b1261d6d3e43071626931fc004f70149baeba2c8ec672bd4f27761f8e1ad6b Status: Downloaded newer image for alpine:latest 123     如果通过容器管理查看容器的大小,也只有 50MB。 如果再加个 JDK 那可比这个大多了,操作系统的大小还不如一个 JDK。   https://www.isharkfly.com/t/docker-alpine/15729

2024年05月12日 0Comments 233Browse 0Like Read more
Computer Science

UA 的网站这是大改版

UA 这几天在频繁推送更新,这网站这次是大改版了。 字体都全部都换成了 : "NeuePlakforUnited-Rg","Noto Sans","Arial",sans-serif   这回玩得大,还专门找做字体的公司给做了一个 NeuePlakforUnited-Rg 字体。     现在的公司都已经不再局限使用已有的字体了,都开始要用自定义字体了。   https://www.isharkfly.com/t/ua/15726

2024年05月11日 0Comments 340Browse 0Like Read more
Computer Science

知道为什么要么用 GitHub 要么自己装个博客了吗

曾经有人在知乎上问过,为什么要自己弄个博客或者用 Git 吗? 看看这个应该就知道了吧。     因为有很长一段时间都没有在 OSCHINA 上发布博客了,因为老是审核不通过。 账号也大半年也没有登录过了,今天登录下就这样了。 你说有什么问题,提前邮件通知下也行呀,辛亏也就只是在上面看看热闹。 https://www.isharkfly.com/t/github/15725

2024年05月11日 0Comments 232Browse 0Like Read more
Computer Science

SVN 合并到 Git 时有文件大于 100 M 被限制 Push

如果有文件大小大于 100M,GitHub 是会被限制推送到仓库中的,大概率情况会显示下面的错误: remote: Resolving deltas: 100% (3601/3601), done. remote: error: Trace: aea1f450da6f2ef7bfce457c715d0fbb9b0f6d428fdca80233aff34b601ff59b remote: error: See https://gh.io/lfs for more information. remote: error: File Ektron_Prod/App_Data/GeoIPOrg.dat is 139.96 MB; this exceeds GitHub's file size limit of 100.00 MB remote: error: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com. 对于上面的问题,我们需要使用 LFS 服务。 找到合并信息 运行下面的代命令,找到我们合并后仓库中的合并信息: git lfs migrate info --everything --above="100MB" 这个命令将会找到在当前仓库中有那些文件的扩展名大小超过 100MB。 我们得到了下面的输出。 migrate: Sorting commits: ..., done. migrate: Examining commits: 100% (17/17), done. *.dat 587 MB 4/13 files 31% LFS Objects 0 B 0/4517 files 0% 提交处理 从上面的输出中,我们看到了 .dat 文件有超过 100 MB。 下一步,我们需要运行命令对针对这个文件的提交进行处理。 git lfs migrate import --everything --include="*.dat" 随后,控制台输出: migrate: Sorting commits: ..., done. migrate: Rewriting commits: 100% (17/17), done. master 7f1f2a07b4dc972e6243984675bd28a3ea15b212 -> 3de8026c759fe6a22199d4df7c640e1bbd1b28e0 migrate: Updating refs: ..., done. migrate: checkout: ..., done. 使用命令进行提交 运行下面的命令,将本地代码仓库提交到远程: git push --all origin -u 当然,在这个提交之前,需要设置远程仓库的地址,这个你可以通过修改 config 文件进行修改。 再次确认所有 LFS 文件提交 在合并的过程中,可能会有些大型文件没有提交到 LSF 上面。 所以需要运行下下面的命令,再次确认所有的 LSF 文件被提交。 git lfs push origin --all https://www.isharkfly.com/t/svn-git-100-m-push/15723

2024年05月11日 0Comments 208Browse 0Like Read more
Computer Science

Jackson 中使用 Optional

介绍 在本文中,我们会对 Optional 类进行一些说明,并且会解释下如果在使用 Optional 类的时候可能在 Jackson 中进行序列化和反序列化的过程中出现的问题。 针对上面的问题,本文会将会介绍在 Jackson 中如何处理 Optional 对象,和如果 Optional 对象可能出现潜在的 Null 的解决方案。 问题概览 首先让我们来看看如果使用 Jackson 来对 Optional 数据类型进行序列化和反序列化中出现的问题。 Maven 依赖 针对 Jackson,我们可以使用最新的版本。 当我们对本文进行更新的时候,jackson-core 的最新版本为 2.17.0。 <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.13.3</version> </dependency> 定义 Book 对象 随后让我们来定义一个 Book 对象,在 Book 对象中,我们有一个使用 Optional 的字段。 当然在这个 Book 对象中,我们还需要添加 Getter 和 Setter 方法,在文章中,我们就省略到这些方法了。 public class Book { private String title; private Optional<String> subTitle; } 在的对数据对象进行初始化的时候,我们需要注意对 Optional 对象设置值的方式,因为不同的值会影响序列化和反序列化的情况。 序列化 让我们先来实例化 Book 这个对象: Book book = new Book(); book.setTitle("Oliver Twist"); book.setSubTitle(Optional.of("The Parish Boy's Progress")); 随后,我们使用 Jackson 的 ObjectMapper 方法来对实例化后的对象进行序列化,我们使用下面的代码来进行序列化: String result = mapper.writeValueAsString(book); 从输出的字段中,我们可以看到输出的字符串内容中并没有输出具体的值,而是输出为下面的内容: {"title":"Oliver Twist","subTitle":{"present":true}} 尽管上面的输出看起来有点奇怪,但是上面的输出却是正确的情况,因为这个和 Optional 的特性是有关的。 方法 isPresent() Optional 的 public getter 方法,这就意味着在序列化的时候基于我们对象中存储的具体的值,Jackson 将会输出 True 或者 False 。 这是 Jackson 当前正确的输出方式。 但,我们可能考虑在输出的时候输出具体的值,至于怎么输出这个具体的值的方法,我们在后续的解决方案中提出。 反序列化 现在,让我们使用上面的代码来对对象数据进行反序列化,考察使用下面的代码: @Test(expected = JsonMappingException.class) public void givenFieldWithValue_whenDeserializing_thenThrowException String bookJson = "{ \"title\": \"Oliver Twist\", \"subTitle\": \"foo\" }"; Book result = mapper.readValue(bookJson, Book.class); } 当上面的代码运行的时候将会提示下面的错误信息: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `java.util.Optional` (no Creators, like default constructor, exist): no String-argument constructor/factory method to deserialize from String value ('foo') at [Source: (String)"{ "title": "Oliver Twist", "subTitle": "foo" }"; line: 1, column: 40] (through reference chain: com.ossez.jackson.optionalwithjackson.Book["subTitle"]) 上面的错误信息针对 Jackson 来说是正确的,因为 Jackson 是需要一个构造方法来把 subtitle 参数的值来对 Optional 对象进行数据初始化。 解决方案 我们希望的是 Optional 对象应该把一个空的数据设置为 null,如果不是空的数据,Optional 应该使用值来进行处理。 针对上面的要求,Jackson 已经提供了解决方案,Jackson 针对 JDK8 的新增模块设置了一系列数据类型,这里就包括了 Optional。 Maven 依赖 首先,我们需要使用针对 JDK 8 使用的依赖,这个依赖的名称为:jackson-datatype-jdk8 <dependency> <groupId>com.fasterxml.jackson.datatype</groupId> <artifactId>jackson-datatype-jdk8</artifactId> <version>2.17.0</version> </dependency> 现在,我们需要把上面的依赖注册到 ObjectMapper: ObjectMapper mapper = new ObjectMapper(); mapper.registerModule(new Jdk8Module()); 或者上面的 2 句话也可以简化成 1 句话: ObjectMapper mapper = new ObjectMapper().registerModule(new Jdk8Module()); 序列化 现在,让我们来进行测试。 让我们再次使用上面的代码来对 Book 这个对象进行序列化和反序列化,然后我们在对输出的字符串进行查看。 Book book = new Book(); book.setTitle("Oliver Twist"); book.setSubTitle(Optional.of("The Parish Boy's Progress")); String serializedBook = mapper.writeValueAsString(book); assertThat(from(serializedBook).getString("subTitle")) .isEqualTo("The Parish Boy's Progress"); 如果我们尝试序列化一个空的 Book 对象的话,那么 Optional 字段中存储的数据为 null。 book.setSubTitle(Optional.empty());…

2024年05月06日 0Comments 251Browse 0Like Read more
Computer Science

Java Jackson-jr 库使用介绍

介绍 Jackson-jr 是一个轻量级的Java JSON 处理库。这个库被设计用来替代 Jackson 的复杂性。对比 Jackson 的复杂 API,Jackson-jr 的启动速度更快,包大小更小。 虽然Jackson databind(如ObjectMapper)是通用数据绑定的良好选择,但它的占用空间(Jar包大小)和启动开销在某些领域可能存在问题:比如移动端,特别是对于轻量使用(读或写)。这种情况下,完整的Jackson API是让人接受不了的。 由于所有这些原因,Jackson 官方决定创建一个更简单、更小的库:Jackson-jr。它仍旧构建在 Streaming API 之上,但不依赖于 databind 和annotation。因此,它的大小(jar和运行时内存使用)要小得多,它的API非常紧凑,所以适合APP等移动端。 它仅仅只依赖了 jackson-core 模块,所以体积上控制得非常的好。Jackson 单单三大核心模块大小合计1700KB左右(320 + 70 + 1370)。而Jackson-jr的体积控制在了95KB(就算加上core模块的320也不到500KB)。 针对实际开发的情况,很多时候我们只需要对 JSON 数据进行读取和写入,至于一些过于复杂和强大的属性,我们可能也用不上,因此针对一些 JSON 数据使用场景比较单一的情况,Jackson-jr 就显得更有优势了。 所以,Jackson-jr 的主要情况就是在针对 JSON 格式的读写上面,如果你只需要简单的读和些,Jackson-jr 通常是你的一个选择。 在本文中,我们对 Jackson-jr 的简单使用进行一些说明和示例。 开始使用 Jackson-jr Jackson-jr 提供的是轻量和高效的 JSON 处理模块。所以 Jackson-jr 针对 JSON 数据结构只提供了简单的数据读取和写入功能。 当然 Jackson-jr 是可以处理对象和数组的。 在开始使用 Jackson-jr 之前,我们需要把需要的包添加到 Maven 项目的 pom 文件中。 当前的可以使用的最新版本为:2.17.0 <dependency> <groupId>com.fasterxml.jackson.jr</groupId> <artifactId>jackson-jr-all</artifactId> <version>2.17.0</version> </dependency> XML 针对 Gradle 可以使用不同的表达方式,唯一需要注意一点的就是版本号。 处理 JSON 对象 尽管我们是使用 Jackson-jr 来处理 JSON 字符串,和 Jackson 一样,字符串也会被处理成为 JSON 对象:每一个 JSON 实例是不可变(immutable )的,同时也是线程安全的。 正是因为有上面的特性,我们可以在多线程程序,单例模式,Spring Bean 中安全的使用创建的 JSON 对象。 创建 JSON 对象和数组 针对创建的 JSON 对象,我们可以使用类似 LinkedHashMap 来创建对象,对于数组,我们就可以用我们常用的 ArrayList。 因为 JSON 对象使用的是 LinkedHashMap,所以我们可以利用 Map 的特性,使用  LinkedHashMap.put() 方法来 Push 数据到 Map 中。 @Test public void createJsonStringTest() throws IOException { System.out.println(JSON.std.with(JSON.Feature.PRETTY_PRINT_OUTPUT) .asString(new LinkedHashMap<String, Object>() {{ put("name", "John Doe"); put("age", 30); }})); } Java Jackson-jr Composer Jackson-jr 同时还提供了 Composer 的这个创建方法,这个创建方法更加直接。 你可以按照你的想法直接进行定义和输出,在这之前,我们通常需要定义一个对象,然后对对象进行完成数据后再输出,对于一些简单的 JSON 格式。我们可以不用定义对象了,而是直接使用。 public static String jsonComposer() throws IOException { return JSON.std.with(JSON.Feature.PRETTY_PRINT_OUTPUT) .composeString() .startObject() .startArrayField("objectArray") .startObject() .put("name", "name1") .put("age", 11) .end() .startObject() .put("name", "name2") .put("age", 12) .end() .end() .startArrayField("array") .add(1) .add(2) .add(3) .end() .startObjectField("object") .put("name", "name3") .put("age", 13) .end() .put("last", true) .end() .finish(); } Java 运行上面的程序后,程序将会输出: { "objectArray" : [ { "name" : "name1", "age" : 11 }, { "name" : "name2", "age" : 12 } ], "array" : [ 1, 2, 3 ], "object" : { "name" : "name3", "age" : 13 }, "last" : true } Plain text 序列化和反序列化 Jackson-jr 可以让我们非常容易的把 Java 对象进行序列化,同时也能够非常容易的让我们从 JSON 字符串中读取为 Java 对象。 在对对象进行读写的时候,我们也可以对读写的属性进行定义,例如对输出的文本进行格式化或者使用自定义的日期属性进行输出,然后再从 Java 对象中写入到 String 字符串。 Jackson-jr 同时也能够支持复杂的数据结构,例如对象嵌套和数组等。通过对我们对象的关联关系的定义,我们可以让 JSON 字符串在进行反序列化序列化的时候完成对象映射,对于 Java 到 String 字符串的输出,其实也是一样。 // Serialization String json = JSON.std.with(JSON.Feature.PRETTY_PRINT_OUTPUT) .asString(person); // Deserialization…

2024年05月04日 0Comments 296Browse 0Like Read more
Computer Science

Jackson-jr 对比 Jackson

关于Jackson-jr 对比 Jackson 的内容,有人在做了一张下面的图。     简单点来说就 Jackson-jr 是Jackson 的轻量级应用,因为我们在很多时候都用不到 Jackson 的很多复杂功能。 对很多应用来说,我们可能只需要使用简单的 JSON 读写即可。 如我们用不到什么复杂的功能,并且使用了 Jackson-jr 能够满足你的项目使用的话,就直接使用 Jackson-jr 即可。 如发现 Jackson-jr 没有办法满足你的所有需求的时候,可以再切换到传统的 Jackson 包。   https://www.isharkfly.com/t/jackson-jr-jackson/15708

2024年05月04日 0Comments 395Browse 0Like Read more
Computer Science

Java Jackson-jr 库是干什么用的

Jackson-jr 是一个轻量级的Java JSON 处理库。这个库被设计用来替代 Jackson 的复杂性。对比 Jackson 的复杂 API,Jackson-jr 的启动速度更快,包大小更小。 虽然Jackson databind(如ObjectMapper)是通用数据绑定的良好选择,但它的占用空间(Jar包大小)和启动开销在某些领域可能存在问题:比如移动端,特别是对于轻量使用(读或写)。这种情况下,完整的Jackson API是让人接受不了的。 由于所有这些原因,Jackson 官方决定创建一个更简单、更小的库:Jackson-jr。它仍旧构建在 Streaming API 之上,但不依赖于 databind 和annotation。因此,它的大小(jar和运行时内存使用)要小得多,它的API非常紧凑,所以适合APP等移动端。 它仅仅只依赖了 jackson-core 模块,所以体积上控制得非常的好。Jackson 单单三大核心模块大小合计1700KB左右(320 + 70 + 1370)。而Jackson-jr的体积控制在了95KB(就算加上core模块的320也不到500KB)。 针对实际开发的情况,很多时候我们只需要对 JSON 数据进行读取和写入,至于一些过于复杂和强大的属性,我们可能也用不上,因此针对一些 JSON 数据使用场景比较单一的情况,Jackson-jr 就显得更有优势了。 所以,Jackson-jr 的主要情况就是在针对 JSON 格式的读写上面,如果你只需要简单的读和些,Jackson-jr 通常是你的一个选择。 性能 有关 JSON 处理数据的能力,Github 上有个项目进行了一些测试。 项目的地址为:GitHub - fabienrenaud/java-json-benchmark: Performance testing of serialization and deserialization of Java JSON libraries 根据项目测试的结果来看,Jackson 的处理能力是所有参加测试的包的性能最好的。     Jackson-jr 和 Jackson 是同一个社区的产品,因此性能上面完全不需要担心。   https://www.isharkfly.com/t/java-jackson-jr/15709

2024年05月04日 0Comments 228Browse 0Like Read more
1234
Archives
  • 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,289)
    • Confluence (663)
    • Gradle (12)
  • U.S. (347)
  • 文化旅游 (142)

COPYRIGHT © 2020 CWIKIUS. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS

湘ICP备2020018253号-1