本文将带您了解关于Gitee推荐|超轻量级JSON/XML/YAML解析门面API的新内容,另外,我们还将为您提供关于c–XML与YAML对于2DRPG的JSON、dockergiteadrone实现
本文将带您了解关于Gitee 推荐 | 超轻量级 JSON/XML/YAML 解析门面 API的新内容,另外,我们还将为您提供关于c – XML与YAML对于2D RPG的JSON、docker gitea drone实现超轻量级CI CD实战详解、Git 项目推荐 | 超轻量级 Json4Bean 工具包、Gitee 推荐 | JSON 解析器及生成器 neujson的实用信息。
本文目录一览:- Gitee 推荐 | 超轻量级 JSON/XML/YAML 解析门面 API
- c – XML与YAML对于2D RPG的JSON
- docker gitea drone实现超轻量级CI CD实战详解
- Git 项目推荐 | 超轻量级 Json4Bean 工具包
- Gitee 推荐 | JSON 解析器及生成器 neujson
Gitee 推荐 | 超轻量级 JSON/XML/YAML 解析门面 API

超轻量级 JSON 正序列化 与 反序列化 的 门面框架,不依赖具体的 JSON 实现,让业务代码与 Jackson、Gson、Fastjson 等彻底 解耦,让你可以在需要的时候轻松切换项目底层实现。
c – XML与YAML对于2D RPG的JSON
我不知道是否对C 2D RPG使用XML,YAML或JSON.
这是我的想法:
>我需要一些简单的东西,不仅可以保存播放器数据,还可以保存环境数据,如对象(x,y)坐标;加载时间日期;图形配置等
>我需要一些灵活的,易于使用的东西,而且重量轻,而且功能强大可以处理上述.
哪个是最好的选择?我在JavaScript中有JSON的经验,但不是C.有没有什么好的参考解析JSON在C如果这是去的路线?
编辑
老实说,如果一个文本文件看起来像是这样的最简单和最有效的解决方案(特别是如果我可以把它写成二进制文件),那么我都是耳朵.
编辑2
随时提供其他建议.
解决方法
如果您不需要分层存储,那么平面表格文件比其他任何东西都要容易得多.所有你需要做的是读取磁盘上的行并在标签上拆分.
如果您正在查看更多的键/值对类型存储(而不是事物列表),那么INI files可以是合理的.这种格式有很大的灵活性,尽管推理这个格式在你敲诈它时可以不那么平易近人.
如果您需要层次结构,则JSON可能会更简单.有很多语言的JSON库,听起来你已经很熟悉了.
https://stackoverflow.com/questions/245973/whats-the-best-c-json-parser
sqlite可能是另一种选择. sql中有龙,但是在sqlite周围有一个很好的C包装,它可以管理.在我看来,主要的好处是ACID.
YAML规格看起来有点长,所以我可以猜到它有更多的厨房水槽.只是撇去libyaml文档,API看起来有点像过去使用的SAX接口.我没有一个后验知识,但是我没有理由开始使用它,将会保持沉默.
XML很难处理,不要选择加入.
无论选择哪一个,都可以编写尽可能少的代码来管理它.你真的想写你的引擎将先使用的类.然后担心序列化它们.如果让你的序列化影响你的班级设计,你可能会后悔.
总结
以上是小编为你收集整理的c – XML与YAML对于2D RPG的JSON全部内容。
如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。
docker gitea drone实现超轻量级CI CD实战详解
环境安装
需要如下环境
docker + docker-compose
drone + drone-runner gitea
安装docker-ce及docker-compose
卸载旧版本docker,较旧版本的Docker被称为docker或docker-engine。如果已安装这些,请卸载它们以及相关的依赖项。
sudo yum -y remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
1、安装所需的包
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
2、使用以下命令设置稳定存储库。
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
3、安装最新版本的Docker CE和containerd
sudo yum -y install docker-ce docker-ce-cli containerd.io
4、常用命令
systemctl start docker # 开启docker systemctl stop docker # 关闭docker systemctl status docker # 检查docker systemctl enable docker # 设置开机自启动
docker 镜像加速
对于使用systemctl的系统,请在/etc/docker/daemon.json中写入如下内容
{"registry-mirrors":["https://registry.docker-cn.com"]}
之后重启服务:
$ sudo systemctl daemon-reload $ sudo systemctl restart docker
安装docker-compose
1、在官方文档对比docker版本下载合适的docker-compose包
https://docs.docker.com/compose/install/
https://github.com/docker/compose/releases
2、下载安装包
sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
将1.24.1换成你要安装的版本,我安装的是1.25.1,也可以选择自己喜欢的版本
3、对二进制文件应用可执行权限
sudo chmod +x /usr/local/bin/docker-compose
4、测试安装
docker-compose --version #成功时回显示版本号。 docker-compose version 1.25.1, build a82fef07
安装gitea
创建目录 /home/docker/gitea,创建文件 docker-compose.yml 内容如下
version: "3" networks: gitea: external: false services: server: image: gitea/gitea:latest # 直接装最新版就好了,没啥好选的,随意 container_name: gitea environment: - USER_UID=1000 - USER_GID=1000 restart: always networks: - gitea volumes: - ./data:/data # /home/data可以替换成你想要的挂载目录 - /etc/timezone:/etc/timezone:ro - /etc/localtime:/etc/localtime:ro ports: - "3000:3000" # 可以替换成你想要的端口 - "8222:22" # 8222可以替换成22
docker-compose操作方式
docker-compose up -d 后台启动 Gitea docker-compose down docker-compose logs docker-compose ps 将显示 Gitea 是否正确启动
访问 Gitea
访问:http://server-ip:3000 会进入初始化安装界面,按实际情况配置即可,端口号不用变,URL换成宿主机地址或者域名
修改完后,点击“立即安装”,完成初始化
安装drone+drone-runner
创建目录 /home/docker/drone,创建文件 docker-compose.yml 内容如下
version: ''3'' services: drone-server: restart: always image: drone/drone:2 ports: - "9999:80" volumes: - ./:/var/lib/drone/ - ./data:/data/ environment: - DRONE_GITEA_SERVER=http://xxxxxxxxx:3000/ # Gitea访问地址 - DRONE_GITEA_CLIENT_ID=xxxxxxxxx # 应用ID,下一步会获取 - DRONE_GITEA_CLIENT_SECRET=xxxxxxxxx # 应用密钥,下一步会获取 - DRONE_SERVER_HOST=xxxxxxxxx:9999 - DRONE_SERVER_PROTO=http # 支持http, https - DRONE_RPC_SECRET=xxxxxxxxx # 通信密钥,下一步会获取 - DRONE_GIT_ALWAYS_AUTH=true - DRONE_GIT_USERNAME=xxxxxxxxx # git用户名 - DRONE_GIT_PASSWORD=xxxxxxxxx # git密码 - DRONE_USER_CREATE=username:xxxxxxxxx,admin:true # 管理员用户名,开启管理员账户 drone-runner-docker: restart: always image: drone/drone-runner-docker:1 ports: - "10000:3000" volumes: - /var/run/docker.sock:/var/run/docker.sock environment: - DRONE_RPC_PROTO=http # 支持http, https - DRONE_RPC_HOST=drone-server - DRONE_RPC_SECRET=xxxxxxxxx # 通信密钥,下一步会获取 - DRONE_RUNNER_NAME=drone-runner-docker - DRONE_RUNNER_CAPACITY=2
创建文件好后,先不启动,去Gitea配置获取应用ID和密钥
配置应用
进入Gitea,点击头像-设置-应用
1、创建应用
应用名称 drone
重定向 URI http://xxxxxxxxxx:9999/login 就是drone入口地址
创建好后,会获取ClientID和ClientSecret
2、生成新的令牌
令牌名称 drone
创建好后,会获取令牌
3、修改刚刚 /home/docker/drone下的 docker-compose.yml
应用ID、应用密钥 修改为刚刚获取的 ClientID和ClientSecret
通信密钥 修改为刚刚获取的 令牌
4、启动
进入 /home/docker/drone 执行 docker-compose up -d
实战
这是一个springboot的例子
在项目pom.xml同级目录下添加如下文件
Dockerfile
#指定基础镜像(一般指定程序所依赖的环境) #本例子是构建SpringBoot所以我指定的jdk环境变量 FROM openjdk:8 #添加维护者信息 MAINTAINER author:leizk MAINTAINER mail:appler1998@qq.com #将./hello-world.jar添加到容器的/opt目录中 COPY ./game.jar /opt #指定dockerfile的命令在哪个目录下执行 WORKDIR /opt #指定容器和外界交互的端口 EXPOSE 8080 #容器运行后执行的命令(该命令在WORKDIR指定的工作目录下执行) #注意:多个CMD指令只有最后一个会生效 CMD java -jar game.jar #在构建镜像时执行的命令 #我这边用它来打印java的环境变量 RUN java -version #添加该镜像的元数据 LABEL version="1.0" description="这是一个Web服务器" by="edc"
.drone.yml
kind: pipeline type: docker name: game steps: - name: build-jar # 流水线名称 image: maven:3.8.5-openjdk-8 # 定义创建容器的Docker镜像 volumes: # 将容器内目录挂载到宿主机,仓库需要开启Trusted设置 - name: maven-cache path: /root/.m2 # 将maven下载依赖的目录挂载出来,防止重复下载 - name: maven-build path: /app/build # 将应用打包好的Jar和执行脚本挂载出来 commands: # 定义在Docker容器中执行的shell命令 - mvn clean package -DskipTests=true # 应用打包命 - cp target/game.jar /app/build/game.jar - cp Dockerfile /app/build/ - cp run.sh /app/build/ - name: build-docker # 流水线名称 image: plugins/docker volumes: # 将容器内目录挂载到宿主机,仓库需要开启Trusted设置 - name: maven-build path: /app/build # 将应用打包好的Jar和执行脚本挂载出来 - name: docker path: /var/run/docker.sock # 挂载宿主机的docker settings: dockerfile: /app/build/Dockerfile commands: # 定义在Docker容器中执行的shell命令 - cd /app/build - chmod +x run.sh - sh run.sh - docker ps volumes: # 定义流水线挂载目录,用于共享数据 - name: maven-build host: path: /home/docker/drone/maven/build # 从宿主机中挂载的目录 - name: maven-cache host: path: /home/docker/drone/maven/cache - name: docker host: path: /var/run/docker.sock
run.sh
#!/bin/sh # 定义应用组名 group_name=''nnzmr'' # 定义应用名称 app_name=''game'' # 定义应用版本 app_version=''latest'' echo ''----copy jar----'' docker stop ${app_name} echo ''----stop container----'' docker rm ${app_name} echo ''----rm container----'' docker rmi ${group_name}/${app_name}:${app_version} echo ''----rm image----'' # 打包编译docker镜像 docker build -t ${group_name}/${app_name}:${app_version} . echo ''----build image----'' docker run -p 8080:8080 --name ${app_name} \ -e TZ="Asia/Shanghai" \ -v /etc/localtime:/etc/localtime \ -d ${group_name}/${app_name}:${app_version} echo ''----start container----''
这是一个vue项目的例子
.drone.yml
这里有个小bug,我想把npm install的依赖保存下来,下次用,但是好像没有成功,我再弄弄看
kind: pipeline type: docker name: search steps: - name: prepare # 流水线名称 image: node:14-alpine # 定义创建容器的Docker镜像 volumes: # 将容器内目录挂载到宿主机,仓库需要开启Trusted设置 - name: node-model path: /app/model # 将maven下载依赖的目录挂载出来,防止重复下载 - name: node-cache path: /app/cache # 将maven下载依赖的目录挂载出来,防止重复下载 - name: node-build path: /app/build # 将应用打包好的Jar和执行脚本挂载出来 commands: # 定义在Docker容器中执行的shell命令 - npm config set prefix "/app/model" npm config set cache "/app/cache" - npm config set registry https://registry.npm.taobao.org - npm config set sass_binary_site=https://npm.taobao.org/mirrors/node-sass - npm install - npm run build - cp -r dist /app/build/ - cp Dockerfile /app/build/ - cp default.conf /app/build/ - cp run.sh /app/build/ - name: build # 流水线名称 image: plugins/docker volumes: # 将容器内目录挂载到宿主机,仓库需要开启Trusted设置 - name: node-build path: /app/build # 将应用打包好的Jar和执行脚本挂载出来 - name: docker path: /var/run/docker.sock # 挂载宿主机的docker settings: dockerfile: /app/build/Dockerfile commands: # 定义在Docker容器中执行的shell命令 - cd /app/build - chmod +x run.sh - sh run.sh - docker ps volumes: # 定义流水线挂载目录,用于共享数据 - name: node-build host: path: /home/docker/drone/node/build # 从宿主机中挂载的目录 - name: node-model host: path: /home/docker/drone/node/model - name: node-cache host: path: /home/docker/drone/node/cache - name: docker host: path: /var/run/docker.sock
Dockerfile
# 设置基础镜像 FROM nginx #设置CTS时区 RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo ''Asia/Shanghai'' >/etc/timezone # 将dist文件中的内容复制到 /usr/share/nginx/html/ 这个目录下面 COPY ./dist /usr/share/nginx/html/ #用本地的 default.conf 配置来替换nginx镜像里的默认配置 COPY default.conf /etc/nginx/conf.d/default.conf EXPOSE 80 CMD ["nginx","-g","daemon off;"]
run.sh
#!/bin/sh # 定义应用组名 group_name=''nnzmr'' # 定义应用名称 app_name=''search'' # 定义应用版本 app_version=''latest'' echo ''----copy jar----'' docker stop ${app_name} echo ''----stop container----'' docker rm ${app_name} echo ''----rm container----'' docker rmi ${group_name}/${app_name}:${app_version} echo ''----rm image----'' # 打包编译docker镜像 docker build -t ${group_name}/${app_name}:${app_version} . echo ''----build image----'' docker run -p 8081:80 --name ${app_name} \ -e TZ="Asia/Shanghai" \ -v /etc/localtime:/etc/localtime \ -d ${group_name}/${app_name}:${app_version} echo ''----start container----''
default.conf
server { listen 80; server_name localhost; #charset koi8-r; access_log /var/log/nginx/host.access.log main; error_log /var/log/nginx/error.log error; location / { root /usr/share/nginx/html; index index.html index.htm; try_files $uri $uri/ /index.html; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } }
成果展示
贴几张在用的图片
构建流程根据你定义的pipline执行
可以结合portainer来管理你的容器
以上就是docker gitea drone实现超轻量级CI CD实战详解的详细内容,更多关于docker gitea drone轻量级CI CD的资料请关注其它相关文章!
- docker上快速搭建gitlab、gitlab-runer及实现CI/CD功能
- 使用Docker部署openGauss国产数据库的操作方法
- Docker Desktop常见的几种启动失败问题解决方法
Git 项目推荐 | 超轻量级 Json4Bean 工具包
超轻量级 Json4Bean 工具包 (小于 30k),源码不依赖任何第三方 jar 包,可扩展
特点:
超轻量级Json4Bean工具包(小于30k),源码不依赖任何第三方jar包
Gitee 推荐 | JSON 解析器及生成器 neujson
neujson 是一个 C++ 的 JSON 解析器及生成器。它同时支持 SAX 和 DOM 风格的 API。
今天关于Gitee 推荐 | 超轻量级 JSON/XML/YAML 解析门面 API的分享就到这里,希望大家有所收获,若想了解更多关于c – XML与YAML对于2D RPG的JSON、docker gitea drone实现超轻量级CI CD实战详解、Git 项目推荐 | 超轻量级 Json4Bean 工具包、Gitee 推荐 | JSON 解析器及生成器 neujson等相关知识,可以在本站进行查询。
本文标签: