月度归档: 2024 年 7 月

  •  Windows注册服务的几种方式 

    方式一:使用Windows自带的sc命令

    1、使用管理员权限打开cmd窗口
    2、注册服务命令:
    sc create 服务名 binpath= 程序所在路径 type= own start= auto displayname= 服务显示名称

    sc create redis binpath= d:\tools\redis--x64-5.0.14\redis-server.exe type= own start= auto displayname= redis
    

    3、服务启动和关闭

    启动服务:net start redis 或 sc start redis
    停止服务:net stop redis 或 sc stop redis
    删除服务:sc delete redis
    查询服务详细:sc query redis
    

    如果在services.msc启动服务报错:错误1053:服务没有及时响应启动或控制请求
    则说明通过sc注册服务存在问题,可删除服务,通过其它方式注册;

    说明:如果要注册的exe不符合服务的规范,此方式启动有可能会失败。

    方式二:使用WinSW注册(推荐)

    WinSW下载地址:
    https://github.com/winsw/winsw/releases

    https://github.com/winsw/winsw/releases/download/v3.0.0-alpha.11/WinSW-x64.exe

    网盘下载地址:https://www.123pan.com/s/3zhuVv-IPM13.html

    注意:32位和64位不同系统需选择其对应的exe文件。

    1、将WinSW.exe拷贝至目标文件夹;
    2、配置myapp.xml文件,指定执行命令等参数;

    myapp.xml配置示例如下:

    <service>
      <id>jenkins</id>
      <name>Jenkins</name>
      <description>This service runs Jenkins continuous integration system.</description>
      <env name="JENKINS_HOME" value="%BASE%"/>
      <executable>java</executable>
      <arguments>-Xrs -Xmx256m -jar "%BASE%\jenkins.war" --httpPort=8080</arguments>
      <log mode="roll"></log>
    </service>
    

    说明:
    (1)%BASE% 变量默认指向winsw.exe所在目录;
    (2)winsw和myapp.xml名称可按照实际服务命名。

    具体使用详见官方文档:https://github.com/winsw/winsw

    下载地址:https://www.123pan.com/s/3zhuVv-Hv113.html

    3、服务注册/启动/关闭相关命令:

    注册服务:winsw install myapp.xml
    启动服务:winsw start myapp.xml
    查看服务状态:winsw status myapp.xml
    

    方式三:使用instsrv+srvany注册(不推荐)

  • elasticsearch 安装IK分词插件

    docker run --name elasticsearch -p 9200:9200 \
     -p 9300:9300 \
     -e "discovery.type=single-node" \
     -e ES_JAVA_OPTS="-Xms64m -Xmx128m" \
      -v /home/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
     -v /home/elasticsearch/data:/usr/share/elasticsearch/data \
     -v /home/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
     -d elasticsearch:7.7.0
    --name elasticsearch:将容器命名为 elasticsearch
    -p 9200:9200:将容器的9200端口映射到宿主机9200端口
    -p 9300:9300:将容器的9300端口映射到宿主机9300端口,目的是集群互相通信
    -e "discovery.type=single-node":单例模式
    -e ES_JAVA_OPTS="-Xms64m -Xmx128m":配置内存大小
    -v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:将配置文件挂载到宿主机
    -v /mydata/elasticsearch/data:/usr/share/elasticsearch/data:将数据文件夹挂载到宿主机
    -v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins:将插件目录挂载到宿主机(需重启)
    -d elasticsearch:7.7.0:后台运行容器,并返回容器ID

    2.2、安装ik分词器

    进入已经启动成功的elasticsearch容器。

    docker exec -it elasticsearch /bin/bash
    
    ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.7.0/elasticsearch-analysis-ik-7.7.0.zip
  • docker容器打包成镜像

    要将一个Docker容器打包成一个镜像,你需要使用docker commit命令。这个命令会基于容器的当前状态创建一个新的镜像。

    以下是使用docker commit命令的基本步骤:

    1. 确定要打包的容器ID或名称。可以使用docker ps命令查看正在运行的容器。
    2. 使用docker commit命令创建镜像,指定镜像的名称和标签。

    例如,如果你有一个名为my_container的容器,想要将它打包为名为my_image的镜像,并且标签为v1.0,你可以运行以下命令:

    bashdocker commit my_container my_image:v1.0

    完成这个命令后,my_container容器的当前状态就会被保存为一个名为my_image,标签为v1.0的新镜像。

    注意,这种方式创建的镜像只包含了容器运行时的状态,不包含构建时的历史和上下文信息。如果你想要创建一个可重复构建的Docker镜像,你应该使用Dockerfile来构建

    1. 登录阿里云Docker Registry

    $ docker login --username=tb55571********@aliyun.com registry.cn-beijing.aliyuncs.com

    用于登录的用户名为阿里云账号全名,密码为开通服务时设置的密码。

    您可以在访问凭证页面修改凭证密码。

    2. 从Registry中拉取镜像

    $ docker pull registry.cn-beijing.aliyuncs.com/houlijiang/es-ik:[镜像版本号]

    3. 将镜像推送到Registry

    $ docker login --username=tb55571********@aliyun.com registry.cn-beijing.aliyuncs.com
    $ docker tag [ImageId] registry.cn-beijing.aliyuncs.com/houlijiang/es-ik:[镜像版本号]
    $ docker push registry.cn-beijing.aliyuncs.com/houlijiang/es-ik:[镜像版本号]

    请根据实际镜像信息替换示例中的[ImageId]和[镜像版本号]参数。

    4. 选择合适的镜像仓库地址

    从ECS推送镜像时,可以选择使用镜像仓库内网地址。推送速度将得到提升并且将不会损耗您的公网流量。

    如果您使用的机器位于VPC网络,请使用 registry-vpc.cn-beijing.aliyuncs.com 作为Registry的域名登录。

    5. 示例

    使用”docker tag”命令重命名镜像,并将它通过专有网络地址推送至Registry。

    $ docker images
    REPOSITORY                                                         TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
    registry.aliyuncs.com/acs/agent                                    0.7-dfb6816         37bb9c63c8b2        7 days ago          37.89 MB
    $ docker tag 37bb9c63c8b2 registry-vpc.cn-beijing.aliyuncs.com/acs/agent:0.7-dfb6816

    使用 “docker push” 命令将该镜像推送至远程。

    $ docker push registry-vpc.cn-beijing.aliyuncs.com/acs/agent:0.7-dfb6816
  • MySQL数字的取整、四舍五入、保留n位小数

    数学函数是MySQL中常用的一类函数。其主要用于处理数字,包括整型和浮点数等等。

    MySQL常用的四舍五入函数:

    函数 说明
    FLOOR(X) 返回不大于X的最大整数。
    CEIL(X)、CEILING(X) 返回不小于X的最小整数。
    TRUNCATE(X,D) 返回数值X保留到小数点后D位的值,截断时不进行四舍五入。
    ROUND(X) 返回离X最近的整数,截断时要进行四舍五入。
    ROUND(X,D) 保留X小数点后D位的值,截断时要进行四舍五入。
    FORMAT(X,D) 将数字X格式化,将X保留到小数点后D位,截断时要进行四舍五入。

    1、FLOOR(X)函数

    返回不大于X的最大整数。

    SELECTFLOOR(1.3); -- 输出结果:1SELECTFLOOR(1.8); -- 输出结果:1

    2、CEIL(X)、CEILING(X)函数

    返回不小于X的最小整数。

    SELECTCEIL(1.3);    -- 输出结果:2SELECTCEILING(1.8); -- 输出结果:2

    3、TRUNCATE(X,D)函数

    返回数值X保留到小数点后D位的值,截断时不进行四舍五入。

    SELECT TRUNCATE(1.2328,3); -- 输出结果:1.232 

    4、ROUND(X)函数

    返回离X最近的整数,截断时要进行四舍五入。

    SELECT ROUND(1.3);  -- 输出结果:1SELECT ROUND(1.8);  -- 输出结果:2

    5、ROUND(X,D)函数

    保留X小数点后D位的值,截断时要进行四舍五入。

    SELECT ROUND(1.2323,3);  -- 输出结果:1.232SELECT ROUND(1.2328,3);  -- 输出结果:1.233

    6、FORMAT(X,D)函数

    将数字X格式化,将X保留到小数点后D位,截断时要进行四舍五入。

    SELECT FORMAT(1.2323,3);  -- 输出结果:1.232SELECT FORMAT(1.2328,3);  -- 输出结果:1.233