dobbo 集成seata框架

seata server:

#AT 模式
#seata 管理面板 http://192.168.xx:7091
seata:
  enabled: true
  application-id: oa-server
  tx-service-group: oa-server-group
  enable-auto-data-source-proxy: true
  client:
    support:
      spring:
        datasource-autoproxy: true
  registry:
    type: zk
    zk:
      server-addr: 192.168.xx:2181
      connect-timeout: 50000
      session-timeout: 60000
      username: ""
      password: ""
  service:
    grouplist:
      default: 192.168.xx:8091
    vgroup-mapping:
      oa-server-group: default

client:

#AT 模式
#seata 管理面板 http://192.168.xx:7091
seata:
  enabled: true
  application-id: oa-client-9999
  tx-service-group: oa-client-9999-group
  enable-auto-data-source-proxy: true
  client:
    support:
      spring:
        datasource-autoproxy: true
  registry:
    type: zk
    zk:
      server-addr: 192.168.xx:2181
      connect-timeout: 50000
      session-timeout: 60000
      username: ""
      password: ""
  service:
    grouplist:
      default: 192.168.xx:8091
    vgroup-mapping:
      oa-client-9999-group: default

seata代码要写在
servver端
注解用
@GlobalTransactional

特色功能:

两台Linux服务器之间怎么传输文件

scp

【优点】简单方便,安全可靠;支持限速参数

【缺点】不支持排除目录

【用法】

scp就是secure copy,是用来进行远程文件拷贝的。数据传输使用 ssh,并且和ssh 使用相同的认证方式,提供相同的安全保证 。

命令格式:

scp [参数] <源地址(用户名@IP地址或主机名)>:<文件路径> <目的地址(用户名 @IP 地址或主机名)>:<文件路径>

举例:

scp /home/work/source.txt work@192.168.0.10:/home/work/ #把本地的source.txt文件拷贝到192.168.0.10机器上的/home/work目录下

scp work@192.168.0.10:/home/work/source.txt /home/work/ #把192.168.0.10机器上的source.txt文件拷贝到本地的/home/work目录下

scp work@192.168.0.10:/home/work/source.txt work@192.168.0.11:/home/work/ #把192.168.0.10机器上的source.txt文件拷贝到192.168.0.11机器的/home/work目录下

scp -r /home/work/sourcedir work@192.168.0.10:/home/work/ #拷贝文件夹,加-r参数

scp -r /home/work/sourcedir work@www.myhost.com:/home/work/ #使用主机名

scp -r -v /home/work/sourcedir work@www.myhost.com:/home/work/ #显示详情,加-v参数

freemark #macro嵌套

<#--
* 单文档标签
-->
<#macro document id="owner" custom="false" size="" condition="" clearHTML="false" cleanType="all"  autoLink="false" target="_blank" startPos="0" dateFormat="yyyy-MM-dd" field="title" maxLength="0" truncatedFlag="...">
    <@cms_content categoryId="${id}" islist="false" size="${size}" startPos="${startPos}">
        <#list DataList as document>
            <#if custom="true">
                <#global document = document />
                <#nested>
            <#else>
                <#if (field="createTime" || field="updateTime" || field="publishDate" || field="offlineDate" || field="topDate")>
                    <#assign data = date_format(document["${field}"],"${dateFormat}") />
                    <#local htmlContent = data>
                <#else>
                    <#local htmlContent = document["${field}"]>
                </#if>
                <#if clearHTML="true">
                  <#local htmlContent = dealArticleBody(htmlContent,"${cleanType}")>
                </#if>
                <#if autoLink="true" >
                    <a href="${contentUrl(document.id, 'pc')}" target="${target}">
                        <#if (maxLength?number gt 0 && htmlContent?length gt maxLength?number)>
                            ${htmlContent?substring(0,maxLength?number)}${truncatedFlag}
                        <#else>
                            ${htmlContent}
                        </#if>
                    </a>
                <#else>
                    <#if (maxLength?number gt 0 && htmlContent?length gt maxLength?number)>
                        ${htmlContent?substring(0,maxLength?number)}${truncatedFlag}
                    <#else>
                        ${htmlContent}
                    </#if>
                </#if>
            </#if>
        </#list>
    </@cms_content>
    <@documentStatVisit/>
</#macro>
<#--
* 文章浏览量统计
-->
<#macro documentStatVisit>
    <script type="text/javascript">
    (function () {
        var q = [];
        q.push('sid=${Site.id}');
        q.push('cid=${Category.id}');
        q.push('id=${Document.id}');
        var s = document.createElement("script");
        s.src = '${ApiPrefix}api/stat/visit?' + q.join('&');
        (document.getElementsByTagName("head")[0] || document.getElementsByTagName("body")[0]).appendChild(s);
    })();
    </script>
    <!--<@cms_document_stat_visit></@cms_document_stat_visit>-->
</#macro>

使用 <@documentStatVisit/>

 freemarker.template.Configuration cfg = new freemarker.template.Configuration(
                freemarker.template.Configuration.VERSION_2_3_31);
        cfg.setDefaultEncoding(properties.getDefaultEncoding());
        // 模板加载路径
        MultiTemplateLoader multiTemplateLoader = new MultiTemplateLoader(
                fileTemplateLoaders.stream().toArray(FileTemplateLoader[]::new));
        cfg.setTemplateLoader(multiTemplateLoader);
        cfg.setTemplateExceptionHandler(TemplateExceptionHandler.HTML_DEBUG_HANDLER);

        cfg.addAutoImport("jw","/jtag.html");

wordpress固定链接更改后,已经收录的文章怎么处理那?

我用的apache代理服务器
可以使用正则在
如果你想设置Apache重写规则,使得只有当URL中存在多于一个破折号(-)时才进行重定向,你可以通过调整正则表达式来实现。在这种情况下,你需要一个正则表达式,它匹配包含至少两个破折号的URL。

以下是相应的.htaccess配置:
apache

RewriteEngine On

# 如果请求的文件或目录不存在,并且URL包含至少两个破折号,则进行重定向
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?([a-zA-Z0-9-]+-[a-zA-Z0-9-]+-[a-zA-Z0-9-]+)(/?)$ /blog/$1 [R=301,L]

这个配置的工作方式如下:

RewriteEngine On 启用Apache重写引擎。
RewriteCond %{REQUEST_FILENAME} !-f 和 RewriteCond %{REQUEST_FILENAME} !-d 这两个条件确保只有当请求的文件或目录实际不存在时,规则才会生效。
RewriteRule 匹配包含至少两个破折号的URL。正则表达式 ([a-zA-Z0-9-]+-[a-zA-Z0-9-]+-[a-zA-Z0-9-]+) 确保URL中至少有两个破折号。

这意味着,只有当URL中至少包含两个破折号且对应的资源不存在(通常会返回404错误)时,重定向才会发生。

请确保在实施这些更改之前备份你的.htaccess文件,并在更改后测试网站以确保一切按预期工作。调整这类规则可能会对你的网站访问和SEO产生影响,因此请仔细测试以确保没有意外的副作用。

pip 安装requirements.txt超时

如果你在运行pip install -r requirements.txt时遇到安装超时问题,这通常是因为下载所需的Python包或依赖项花费了很长时间,或者可能是由于网络连接问题引起的。以下是一些可能的解决方法:

1.尝试多次:有时,pip安装可能因为网络不稳定或服务器负载高而失败。你可以尝试多次运行相同的命令,以查看是否能够成功安装一部分依赖项。
2.更换镜像源:使用国内或其他可靠的软件源可能会提高下载速度并减少安装超时问题。你可以通过使用 -i 参数指定镜像源,如下所示:

pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

3.增加超时设置:你可以通过--default-timeout选项来增加pip的超时设置,以延长下载和安装的超时时间。例如:

pip install -r requirements.txt --default-timeout=100

这将将超时时间设置为100秒。