当前位置: 首页 > news >正文

Sonar下启动发生错误,elasticsearch启动错误

 Download | SonarQube | Sonar (sonarsource.com)

1.首先我的sonar版本为 10.4.1 ,java版本为17

2.sonar启动需要数据库,我先安装了mysql, 但是目前sonar从7.9开始不支持mysql,且java版本要最少11,推荐使用java17

3.安装postsql,创建sonar数据库

4.启动sonar发生错误

5.检查日志

首先检查sonar.log

再检查es.log

6.加大文件描述符数量和虚拟内存大小

临时修改文件描述符: ulimit -n 65535

永久修改文件描述符: cat >> /etc/security/limits.conf << EOF

                                   * soft nofile 65535

                                   * hard nofile 65535

                                   EOF

临时修改虚拟内存大小 sysctl -w vm.max_map_count=262144

永久修改虚拟内存大小 cat >> /etc/sysctl.conf << EOF

                                        vm.max_map_count=262144

                                        EOF

                                        sysctl -p

7. 再次查看日志

lsof /opt/sonar/data/es8/node.lock 查看是否被其他进程占用

ls -ld /opt/sonar/data/es8   检查是否有足够的权限

rm -rf /opt/sonar/data/es8/node.lock 删除该文件可能会解决问题

8.再次检查日志,发现没有任何错误,可能是版本问题(我安装的是最新版的sonar)

2024.04.11 10:21:09 INFO  es[][o.e.n.Node] JVM home [/usr/lib/jvm/jdk-17-oracle-x64], using bundled JDK [false]
2024.04.11 10:21:09 INFO  es[][o.e.n.Node] JVM arguments [-Des.networkaddress.cache.ttl=60, -Des.networkaddress.cache.negative.ttl=10, -Djava.security.manager=allow, -XX:+AlwaysPreTouch, -Xss1m, -Djava.awt.headless=true, -Dfile.encoding=UTF-8, -Djna.nosys=true, -XX:-OmitStackTraceInFastThrow, -Dio.netty.noUnsafe=true, -Dio.netty.noKeySetOptimization=true, -Dio.netty.recycler.maxCapacityPerThread=0, -Dlog4j.shutdownHookEnabled=false, -Dlog4j2.disable.jmx=true, -Dlog4j2.formatMsgNoLookups=true, -Djava.locale.providers=SPI,COMPAT, --add-opens=java.base/java.io=org.elasticsearch.preallocate, -XX:+UseG1GC, -Djava.io.tmpdir=/opt/sonar/temp, -XX:ErrorFile=/opt/sonar/logs/es_hs_err_pid%p.log, -Xlog:disable, -Des.networkaddress.cache.ttl=60, -Des.networkaddress.cache.negative.ttl=10, -XX:+AlwaysPreTouch, -Xss1m, -Djava.awt.headless=true, -Dfile.encoding=UTF-8, -Djna.nosys=true, -Djna.tmpdir=/opt/sonar/temp, -XX:-OmitStackTraceInFastThrow, -Dio.netty.noUnsafe=true, -Dio.netty.noKeySetOptimization=true, -Dio.netty.recycler.maxCapacityPerThread=0, -Dio.netty.allocator.numDirectArenas=0, -Dlog4j.shutdownHookEnabled=false, -Dlog4j2.disable.jmx=true, -Dlog4j2.formatMsgNoLookups=true, -Djava.locale.providers=COMPAT, -Dcom.redhat.fips=false, -Des.enforce.bootstrap.checks=true, -Xmx512m, -Xms512m, -XX:MaxDirectMemorySize=256m, -XX:+HeapDumpOnOutOfMemoryError, -XX:G1HeapRegionSize=4m, -XX:InitiatingHeapOccupancyPercent=30, -XX:G1ReservePercent=15, -Des.distribution.type=tar, --module-path=/opt/sonar/elasticsearch/lib, --add-modules=jdk.net, --add-modules=ALL-MODULE-PATH, -Djdk.module.main=org.elasticsearch.server]
2024.04.11 10:21:11 INFO  es[][o.e.p.PluginsService] loaded module [x-pack-core]
2024.04.11 10:21:11 INFO  es[][o.e.p.PluginsService] loaded module [old-lucene-versions]
2024.04.11 10:21:11 INFO  es[][o.e.p.PluginsService] loaded module [parent-join]
2024.04.11 10:21:11 INFO  es[][o.e.p.PluginsService] loaded module [lang-painless]
2024.04.11 10:21:11 INFO  es[][o.e.p.PluginsService] loaded module [rest-root]
2024.04.11 10:21:11 INFO  es[][o.e.p.PluginsService] loaded module [x-pack-redact]
2024.04.11 10:21:11 INFO  es[][o.e.p.PluginsService] loaded module [reindex]
2024.04.11 10:21:11 INFO  es[][o.e.p.PluginsService] loaded module [analysis-common]
2024.04.11 10:21:11 INFO  es[][o.e.p.PluginsService] loaded module [x-pack-security]
2024.04.11 10:21:11 INFO  es[][o.e.p.PluginsService] loaded module [transport-netty4]
2024.04.11 10:21:11 INFO  es[][o.e.p.PluginsService] loaded module [apm]
2024.04.11 10:21:11 INFO  es[][o.e.p.PluginsService] loaded module [aggregations]
2024.04.11 10:21:16 INFO  es[][o.e.e.NodeEnvironment] using [1] data paths, mounts [[/ (/dev/mapper/centos-root)]], net usable_space [12.7gb], net total_space [16.9gb], types [xfs]
2024.04.11 10:21:16 INFO  es[][o.e.e.NodeEnvironment] heap size [512mb], compressed ordinary object pointers [true]
2024.04.11 10:21:16 INFO  es[][o.e.n.Node] node name [sonarqube], node ID [0VhLHUqqTP2MePAyZ55RvQ], cluster name [sonarqube], roles [data_cold, data, remote_cluster_client, master, data_warm, data_content, transform, data_hot, ml, data_frozen, ingest]
2024.04.11 10:21:18 INFO  es[][o.e.x.s.Security] Security is disabled
2024.04.11 10:21:19 INFO  es[][o.e.t.n.NettyAllocator] creating NettyAllocator with the following configs: [name=unpooled, suggested_max_allocation_size=1mb, factors={es.unsafe.use_unpooled_allocator=null, g1gc_enabled=true, g1gc_region_size=4mb, heap_size=512mb}]
2024.04.11 10:21:19 INFO  es[][o.e.i.r.RecoverySettings] using rate limit [40mb] with [default=40mb, read=0b, write=0b, max=0b]
2024.04.11 10:21:19 INFO  es[][o.e.d.DiscoveryModule] using discovery type [single-node] and seed hosts providers [settings]
2024.04.11 10:21:20 INFO  es[][o.e.n.Node] initialized
2024.04.11 10:21:20 INFO  es[][o.e.n.Node] starting ...
2024.04.11 10:21:22 INFO  es[][o.e.t.TransportService] publish_address {127.0.0.1:34806}, bound_addresses {127.0.0.1:34806}
2024.04.11 10:21:22 INFO  es[][o.e.b.BootstrapChecks] explicitly enforcing bootstrap checks
2024.04.11 10:21:22 INFO  es[][o.e.c.c.ClusterBootstrapService] this node is locked into cluster UUID [7GnAZLRhS5qMVgXaYkkG6g] and will not attempt further cluster bootstrapping
2024.04.11 10:21:23 INFO  es[][o.e.c.s.MasterService] elected-as-master ([1] nodes joined in term 2)[_FINISH_ELECTION_, {sonarqube}{0VhLHUqqTP2MePAyZ55RvQ}{7twHHZMPRIKjHxwRYG01Yg}{sonarqube}{127.0.0.1}{127.0.0.1:34806}{cdfhilmrstw}{8.11.0}{7000099-8500003} completing election], term: 2, version: 6, delta: master node changed {previous [], current [{sonarqube}{0VhLHUqqTP2MePAyZ55RvQ}{7twHHZMPRIKjHxwRYG01Yg}{sonarqube}{127.0.0.1}{127.0.0.1:34806}{cdfhilmrstw}{8.11.0}{7000099-8500003}]}
2024.04.11 10:21:23 INFO  es[][o.e.c.s.ClusterApplierService] master node changed {previous [], current [{sonarqube}{0VhLHUqqTP2MePAyZ55RvQ}{7twHHZMPRIKjHxwRYG01Yg}{sonarqube}{127.0.0.1}{127.0.0.1:34806}{cdfhilmrstw}{8.11.0}{7000099-8500003}]}, term: 2, version: 6, reason: Publication{term=2, version=6}
2024.04.11 10:21:23 INFO  es[][o.e.c.f.AbstractFileWatchingService] starting file watcher ...
2024.04.11 10:21:23 INFO  es[][o.e.c.c.NodeJoinExecutor] node-join: [{sonarqube}{0VhLHUqqTP2MePAyZ55RvQ}{7twHHZMPRIKjHxwRYG01Yg}{sonarqube}{127.0.0.1}{127.0.0.1:34806}{cdfhilmrstw}{8.11.0}{7000099-8500003}] with reason [completing election]
2024.04.11 10:21:23 INFO  es[][o.e.c.f.AbstractFileWatchingService] file settings service up and running [tid=30]
2024.04.11 10:21:23 INFO  es[][o.e.h.AbstractHttpServerTransport] publish_address {127.0.0.1:9001}, bound_addresses {127.0.0.1:9001}
2024.04.11 10:21:23 INFO  es[][o.e.n.Node] started {sonarqube}{0VhLHUqqTP2MePAyZ55RvQ}{7twHHZMPRIKjHxwRYG01Yg}{sonarqube}{127.0.0.1}{127.0.0.1:34806}{cdfhilmrstw}{8.11.0}{7000099-8500003}{xpack.installed=true, rack_id=sonarqube}
2024.04.11 10:21:23 INFO  es[][o.e.l.ClusterStateLicenseService] license [70360a8b-3b41-40b1-8b48-a9818b38d002] mode [basic] - valid
2024.04.11 10:21:23 INFO  es[][o.e.g.GatewayService] recovered [0] indices into cluster_state
2024.04.11 10:21:23 INFO  es[][o.e.h.n.s.HealthNodeTaskExecutor] Node [{sonarqube}{0VhLHUqqTP2MePAyZ55RvQ}] is selected as the current health node.
2024.04.11 10:21:29 INFO  es[][o.e.n.Node] stopping ...
2024.04.11 10:21:29 INFO  es[][o.e.c.f.AbstractFileWatchingService] shutting down watcher thread
2024.04.11 10:21:29 INFO  es[][o.e.c.f.AbstractFileWatchingService] watcher service stopped
2024.04.11 10:21:29 INFO  es[][o.e.n.Node] stopped
2024.04.11 10:21:29 INFO  es[][o.e.n.Node] closing ...
2024.04.11 10:21:29 INFO  es[][o.e.n.Node] closed

9.下载sonar低版本 sonar-9.9.4   Download | SonarQube | Sonar (sonarsource.com)

重新安装配置,发现sonar启动成功

10.总结

在sonar中环境和版本配置比较重要

#在sonar现在的版本中已经不支持mysql了,推荐使用postsql

推荐sonar 9.9.4 java 17 postsql 15 

在安装过程中还有许多问题: 

1. postsql的模式 建议删掉默认是public

#----- PostgreSQL 11 or greater
# By default the schema named "public" is used. It can be overridden with the parameter "currentSchema".
sonar.jdbc.url=jdbc:postgresql://localhost/sonar

2.sonar和es的启动要用 sonar或者其他用户启动,因为安全问题elasticsearch 不让用root用户直接运行

su sonar /opt/sonar/bin/linux-x86-64/sonar.sh start

3. sonar文件夹和文件下的内容必须要所属属于启动的的用于

chmod -R sonar:sonar /opt/sonar

4.可能端口被占用

5.内存不足

6.jdk不兼容

7.当重新启动后,发现sonar中的es还是启动不了

解决办法 删除/opt/sonar/tmp/* 下的所有内容,删除临时文件,重新启动

相关文章:

Sonar下启动发生错误,elasticsearch启动错误

Download | SonarQube | Sonar (sonarsource.com) 1.首先我的sonar版本为 10.4.1 &#xff0c;java版本为17 2.sonar启动需要数据库,我先安装了mysql, 但是目前sonar从7.9开始不支持mysql&#xff0c;且java版本要最少11,推荐使用java17 3.安装postsql,创建sonar数据库 4.启…...

Git常用命令以及异常信息汇总

常用命令&#xff1a; 查看本地分支&#xff1a; git branch 创建一个新仓库 git clone 仓库地址xxxxx cd 目标目录 git switch -c main touch README.md git add README.md git commit -m "add README" git push -u origin main 推送现有文件夹 cd 目标目录 git in…...

解释Python中的RESTful API设计和实现

解释Python中的RESTful API设计和实现 RESTful API&#xff0c;即符合REST&#xff08;Representational State Transfer&#xff0c;表述性状态转移&#xff09;架构风格的Web服务接口&#xff0c;已成为现代Web应用程序通信的标准。Python作为一种灵活且强大的编程语言&…...

一、Nginx部署

Nginx部署 一、Docker部署1.复制Nginx配置文件2.启动Nginx容器 一、Docker部署 1.复制Nginx配置文件 # 1.拉取镜像 docker pull nginx # 2.启动nginx容器 docker run --restartalways --namenginx -p 80:80 -d nginx # 3.宿主机创建挂载目录 mkdir /root/docker/nginx -p # 4…...

C语言基础---指针的基本语法

概述 内存地址 在计算机内存中&#xff0c;每个存储单元都有一个唯一的地址(内存编号)。通俗理解&#xff0c;内存就是房间&#xff0c;地址就是门牌号 指针和指针变量 指针&#xff08;Pointer&#xff09;是一种特殊的变量类型&#xff0c;它用于存储内存地址。指针的实…...

记录--病理切片图像处理

简介 数字病理切片&#xff0c;也称为全幻灯片成像&#xff08;Whole Slide Imaging&#xff0c;WSI&#xff09;或数字切片扫描&#xff0c;是将传统的玻片病理切片通过高分辨率扫描仪转换为数字图像的技术。这种技术对病理学领域具有革命性的意义&#xff0c;因为它允许病理…...

Android使用shape属性绘制边框内渐变色

目录 先上效果图实现方法shape属性介绍代码结果 先上效果图 这是使用AndroidStudio绘制的带有渐变色的边框背景色 实现方法 项目中由于UI设计需求&#xff0c;需要给按钮、控件设置带有背景色效果的。以下是UI效果图。 这里我们使用shape属性来绘制背景效果。 shape属性介…...

分类算法(数据挖掘)

目录 1. 逻辑回归&#xff08;Logistic Regression&#xff09; 2. 支持向量机&#xff08;Support Vector Machine, SVM&#xff09; 3. 决策树&#xff08;Decision Tree&#xff09; 4. 随机森林&#xff08;Random Forest&#xff09; 5. K近邻&#xff08;K-Nearest …...

scaling laws for neural language models

关于scaling law 的正确认识 - 知乎最近scaling law 成了最大的热词。一般的理解就是&#xff0c;想干大模型&#xff0c;清洗干净数据&#xff0c;然后把数据tokens量堆上来&#xff0c;然后搭建一个海量H100的集群&#xff0c;干就完了。训练模型不需要啥技巧&#xff0c;模型…...

水经微图IOS版5.2.0发布

随时随地&#xff0c;微图一下&#xff01; 水经微图&#xff08;简称“微图”&#xff09;IOS新版已上线。 在该版本中主要新增图层树节点排序功能、常规&#xff08;矩形、圆、椭圆、扇形&#xff09;绘制功能、地形夸张等主要功能。 当前版本 当前版本号为&#xff1a;5…...

聚观早报 | 哪吒L上市定档;iPhone 16最新高清渲染图

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 4月10日消息 哪吒L上市定档 iPhone 16最新渲染图 华为太空表与问界M9联动 蔚来万里长城加电风景线正式贯通 Red…...

【C++】手搓 list 容器

送给大家一句话&#xff1a; 若结局非你所愿&#xff0c;就在尘埃落定前奋力一搏。—— 《夏目友人帐》 手搓 list 容器 1 前言1.1 底层结构1.2 使用场景1.3 功能简介 2 框架搭建2.1 节点类2.2 list 类2.3 迭代器类 3 功能实现3.1 begin() 与 end()3.2 插入操作3.3 删除操作3…...

LinkedList用法详解(Java)

LinkedList LinkedList 是 Java 中的一个常用类&#xff0c;它实现了 List 接口&#xff0c;采用双向链表数据结构。 1. 创建 LinkedList 对象 import java.util.LinkedList;LinkedList<String> linkedList new LinkedList<>();2. 添加元素 linkedList.add(&q…...

34. 在排序数组中查找元素的第一个和最后一个位置

Problem: 34. 在排序数组中查找元素的第一个和最后一个位置 文章目录 思路解题方法复杂度Code 思路 二分查找&#xff0c; 口诀&#xff1a;左右右&#xff0c;求左段区间的右端点&#xff0c;动r 解题方法 两次二分查找 复杂度 时间复杂度: O ( l o g n ) O(logn) O(logn) 二…...

音乐文件逆向破解

背景 网易云等在线音乐文件的加密源码都按照一定的规则加密&#xff0c;通过对音乐文件的源码分析转化&#xff0c;有望实现对加密文件的解密 实现内容 实现对加密音乐文件的解密 实现对无版权的音乐文件的转化 实现环境 010editor 010 Editor是一个专业的文本编辑器和十六…...

xhci 数据结构

xhci 数据结构 xhci 数据结构主要在手册上有详细的定义&#xff0c;本文根据手册进行归纳总结&#xff1a; 重点关注的包括&#xff1a; device contexttrb ringtrb device context设备上下文 设备上下文数据结构由xHC管理&#xff0c;用于向系统软件报告设备配置和状态信息。…...

Go——Goroutine介绍

一. 并发介绍 进程和线程 进程是程序在操作系统中一次执行过程&#xff0c;系统进程资源分配和调度的一个独立单位。线程是进程执行的实体&#xff0c;是CPU调度和分派的基本单位&#xff0c;它是比进程更小的能独立运行的基本单位。一个进程可以创建和撤销多个线程&#xff0c…...

Centos7,部署etcd集群,基于二进制包,https安全通讯

由于etcd集群https通讯&#xff0c;所以需要自建CA数字证书&#xff0c;学习使用https部署etcd集群前&#xff0c;可以先完成一下&#xff0c;基于http通信的etcd集群&#xff1a; 关于CA原理以及工作可以阅读&#xff0c;以下两篇文章&#xff1a; CA工作原理 对称加密与非对…...

设置MariaDB,创建新库,新用户并授权其可以从任何主机登录

OS:CENTOS 7 1、从系统进入MariaDB # mysql -u root -p 这里的root是指MariaDB的管理员用户&#xff0c;和系统的root不搭边&#xff0c;只是同名而已。 2、看下有哪些库、用户 MariaDB [(none)]> show databases; MariaDB [(none)]>select user,host from mysql.us…...

每日一VUE——组件的生命周期

文章目录 VUE组件的生命周期生命周期钩子函数实例创建Teleport VUE组件的生命周期 组件生命周期 组件从创建到挂载、更新、到销毁的一系列过程被称为组件的生命周期。 生命周期函数 在组件的各个生命周期节点执行的函数&#xff0c;为生命周期钩子函数。 生命周期钩子函数…...

Redis中的BigKey

Redis中的BigKey 文章目录 Redis中的BigKey什么是BigKey&#xff1f;BigKey的危害找到Bigkey删除BigKey优化BigKeyBigKey对持久化的影响对AOF日志的影响对AOF重写和RDB的影响 什么是BigKey&#xff1f; 大 key 并不是指 key 的值很大&#xff0c;而是 key 对应的 value 很大。…...

MySQL中的存储过程详解(上篇)

使用语言 MySQL 使用工具 Navicat Premium 16 代码能力快速提升小方法&#xff0c;看完代码自己敲一遍&#xff0c;十分有用 拖动表名到查询文件中就可以直接把名字拉进来中括号&#xff0c;就代表可写可不写 目录 1.认识存储过程 1.1 存储过程的作用 1.2 存储过程简介…...

面试官:说一说CyclicBarrier的妙用!我:这个没用过...

写在开头 面试官&#xff1a;同学&#xff0c;AQS的原理知道吗&#xff1f; 我&#xff1a;学过一点&#xff0c;抽象队列同步器&#xff0c;Java中很多同步工具都是基于它的… 面试官&#xff1a;好的&#xff0c;那其中CyclicBarrier学过吗&#xff1f;讲一讲它的妙用吧 我&…...

MySQL高可用搭建方案MHA

MHA架构介绍 MHA是Master High Availability的缩写&#xff0c;它是目前MySQL高可用方面的一个相对成熟的解决方案&#xff0c;其核心是使用perl语言编写的一组脚本&#xff0c;是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件。在MySQL故障切换过程中&am…...

【vue】用vite创建vue项目

前置要求 要有Node.js 1. 用vite创建vue项目 在cmd中&#xff0c;进入一个文件夹 在文件资源管理器上面的文件目录中&#xff0c;输入cmd&#xff0c;回车在cmd中通过cd命令进入对应文件夹 创建项目 npm create vitelatest # 创建项目创建项目过程中的一些选项 Ok to pro…...

内网渗透-内网环境下的横向移动总结

内网环境下的横向移动总结 文章目录 内网环境下的横向移动总结前言横向移动威胁 威胁密码安全 威胁主机安全 威胁信息安全横向移动威胁的特点 利用psexec 利用psexec.exe工具msf中的psexec 利用windows服务 sc命令 1.与靶机建立ipc连接2.拷贝exe到主机系统上3.在靶机上创建一个…...

Linux命令学习—linux 的常用命令

1.1、改变目录 cd 目录的表达方法&#xff1a; /根目录 .当前目录 .. 上一级目录 ~家目录 #cd / 进入到系统根目录 #cd . 进入当前目录 #cd .. 进入当前目录的父目录&#xff0c;返回上层目录 #cd /tmp 进入指定目录/tmp #cd ~ 进入当前用户的家目录 #cd …...

【Git教程】(十)版本库之间的依赖 —— 项目与子模块之间的依赖、与子树之间的依赖 ~

Git教程 版本库之间的依赖 1️⃣ 与子模块之间的依赖2️⃣ 与子树之间的依赖&#x1f33e; 总结 在 Git 中&#xff0c;版本库是发行单位&#xff0c;代表的是一个版本&#xff0c;而分支或标签则只能被创建在版本库这个整体中。如果一个项目中包含了若干个子项目&#xff0c;…...

最新版IntelliJ IDEA 2024.1安装和配置教程 详细图文解说版安装教程

IntelliJ IDEA 2024.1 最新版如何快速入门体验?IntelliJ IDEA 2024.1 安装和配置教程 图文解说版 文章目录 IntelliJ IDEA 2024.1 最新版如何快速入门体验?IntelliJ IDEA 2024.1 安装和配置教程 图文解说版前言 第一步&#xff1a; IntelliJ IDEA 2024.1安装教程第 0 步&…...

JVM常用参数一

jvm启动参数 JVM&#xff08;Java虚拟机&#xff09;的启动参数是在启动JVM时可以设置的一些命令行参数。这些参数用于指定JVM的运行环境、内存分配、垃圾回收器以及其他选项。以下是一些常见的JVM启动参数&#xff1a; -Xms&#xff1a;设置JVM的初始堆大小。 -Xmx&#xff1…...

宿州企业网站建设/seo岗位职责

前者使用property的点操作符&#xff0c;也就相当于调用了abc对应的set method&#xff0c;和这句是一样的&#xff1a;[self setAbc:nil];而后者没有通过property&#xff0c;直接访问了成员变量&#xff0c;调用了它的release方法。对于set method来说&#xff0c;用synthesi…...

wordpress显示缩略图 摘要/360站长工具seo

作为讲述口袋妖怪的Round 16&#xff0c;这里&#xff0c;我会采用“夹叙夹议&#xff0c;夹议夹叙”的模式进行编排。也就是在议论一些口袋妖怪中的小游戏的核心算法的同时&#xff0c;叙述一下我对口袋妖怪的理解以及我与这一系列的经历。以上&#xff0c;就是我们的那位少年…...

福州移动网站建设/江北seo

一&#xff1a;认识POIApache POI是一个开源的利用Java读写Excel、WORD等微软OLE2组件文档的项目。最新的3.5版本有很多改进&#xff0c;加入了对采用OOXML格式的Office 2007支持&#xff0c;如xlsx、docx、pptx文档。POI主页&#xff1a;poi.apache.org/二&#xff1a;POI3.5相…...

怎么做点播网站/上海app定制开发公司

市场上的工作流程引擎定义现在已经是图形化了&#xff0c;各种流程定义的&#xff0c;标准&#xff3c;概念都不相同。对同一个事物起的名字也是千奇百怪&#xff0c;有的为了程序的方便开发增加了许多个性化的元素。有的起一些雷人的名词&#xff0c;不管出于如何考虑但应该遵…...

嘉兴做网站哪家好/今日头条郑州头条新闻

前言iOS中&#xff0c;当我们需要解析xml或html时&#xff0c;我们可以使用libxml2来进行解析。但由于libxml2的api设计比较繁琐&#xff0c;使用起来并不方便。Hpple则是基于libxml2的oc库&#xff0c;使我们可以用其方便地进行xml或html的解析。使用方法我们先来看看&#xf…...

微网站开发平台 开源/网站建设公司哪家好?

如何删除一行 sed -i /search some thing/d nginx.conf...