IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    love 0
    edony
    发表于
    2023-11-11 05:53:19

    go 字符串的单引号、双引号、反引号的区别

    用 go 开发 Telegram bot 转发消息的功能时,碰到了 HTML 字符串解析的问题,这个问题总结下来是这样的:转发给 Telegram API 的消息通过 HTML parse mode 解析之后转发到 Channel,其中需要在作者和内容之间插入& ...继续阅读 (137)


    love 0
    Derobukal
    发表于
    2023-11-11 04:55:35

    ANTLR4从入门到实践

    ANTLR(ANother Tool for Language Recognition)是一个强大的解析器生成器,用于读取、处理、执行或翻译结构化文本或二进制文档。它被广泛用于构建语言、工具和框架。ANTLR根据语法定义生成解析器,解析器可以构建和遍历解析树。安装以Linux系统为例,我们首先安装Java17~ java -versionjava version "17.0.6" 2023-01-17 LTSJava(TM) SE Runtime Environment (build 17.0.6+9-LTS-190)Java HotSpot(TM) 64-Bit Server VM (build 17.0.6+9-LTS-190, mixed mode, sharing)随后我们下载antlr4的完整依赖包wget https://www.antlr.org/download/antlr-4.13.0-complete.jar并把依赖包添加到Java的CLASSPATH中,将以下命令添加到~/.zshrc文件中export CLASSPATH="/home/raymond/Desktop/antlr4/antlr-4.13.0-complete.jar:$CLASSPATH"之后我们就可以使用antlr4的Tool和TestRig了~ java org.antlr.v4.Tool ...继续阅读 (227)


    love 0
    Derobukal
    发表于
    2023-11-11 04:55:35

    ShardingSphere-JDBC介绍

    ShardingSphere-JDBC是一款可以将JDBC操作进行封装,然后实现数据分片、分布式事务、读写分离、高可用、数据加密和数据脱敏等功能的模块。它的原理是实现JDBC的接口,随后将收到的JDBC操作进行改写和处理,再将操作命中到真正的数据库之上。因为它实现了JDBC接口,因此现有的Java项目都可以100%兼容使用,只需要依赖ShardingSphere-JDBC并提供相关的配置即可。JDBC数据分片的简单使用我们看一个简单的JDBC数据分片的例子,首先我们需要添加相关的maven依赖12345678910org.apache.shardingsphereshardingsphere-jdbc-core5.3.2com.mysqlmysql-connector-j8.0.33如上添加了shardingsphere-jdbc和mysql的依赖,shardingsphere-jdbc是项目的核心依赖,而mysql则是jdbc操作需要用到的依赖。添加了maven依赖之后我们可以先创建相关的数据库和表,创建数据库和表的sql如下123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 ...继续阅读 (204)


    love 0
    Derobukal
    发表于
    2023-11-11 04:55:35

    Maven详细介绍

    maven是一个声明式的Java程序构建工具,最开始人们使用make命令搭配makefile脚本实现构建过程,tomcat的作者认为make命令不跨平台且脚本编写复杂,因此发明了Ant(Another Neat Tool)。Ant解决了make命令不跨平台且脚本编写困难的问题,不过Ant依然是过程式的,每一个使用Ant的用户仍然需要编写自己所需要的一系列脚本。maven通过定义了一系列的标准,让用户基本不再需要自己编写脚本,只需要按照maven暴露出的简单标准接口实现构建操作。这样既可以降低用户使用的复杂度,也能够定义一套统一的标准,当用户接手一个全新的项目时,可以根据已知的标准快速上手。安装maven的安装很简单,只需要下载压缩包解压到磁盘上,并将MAVEN根目录/bin添加到PATH中方便使用mvn命令。自maven 3.5之后已经不再需要设置JAVA_HOME和M2_HOME环境变量了,同时建议使用手动安装的maven替换idea中的bundle maven。1234567$mvn -vApache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00)Maven home: D:\apache-maven-3.3.9-bin\apache-maven-3.3.9Jav ...继续阅读 (220)


    love 0
    Derobukal
    发表于
    2023-11-11 04:55:35

    HTTPS是如何保证数据安全的

    与Windows大量使用二进制文件和数据传输不同,HTTP(Hypertext Transfer Protocol,超文本传输协议)与Linux/Unix一样都是是基于文本的,这也导致其在传输过程中十分容易被解析和篡改,于是HTTPS(Hypertext transfer protocol secure)应运而生。HTTP协议一般跑在TCP协议之上,而HTTPS协议就是在原来的TCP和HTTP之间增加一层加密的操作,加密解密由Clinet端和Server端完成,由此保证了HTTP协议的内容不被中间人获取和篡改。可见HTTPS的核心就是这一段加密和解密,它是通过SSL(Secure Sockets Layer)安全套接层和TLS(Transport Layer Security)传输层安全协议实现的。SSL与TLS网景公司在1994推出HTTPS协议,由SSL协议进行加密,这就是SSL的起源。SSL有1.0、2.0、3.0标准,后来IETF将SSL标准化并称其为TLS,因此SSL与TLS其实是一个东西。SSL和TLS的一些版本如下协议发布时间状态SSL 1.0未公布未公布SSL 2.01995年已于2011年弃用SSL 3.01996年已于2015年弃用TLS 1.01999年已于2021年弃用TLS 1.12006年已于2021年弃用TLS 1.22008年-TLS 1. ...继续阅读 (213)


    love 0
    Derobukal
    发表于
    2023-11-11 04:55:35

    最大堆的原理与实现

    基本原理最大堆是一个二叉树,要求这个二叉树的父节点大于它的子节点,同时这个二叉树是一个完全二叉树,也就是说这个二叉树除了最底层之外的其它节点都应该被填满,最底层应该从左到右被填满。显然,最大堆的顶部节点的值是整个二叉树中最大的。我们使用数组来构建一个最大堆,使用数组构建一个二叉树最大堆存在如下性质。假设二叉树某节点在数组中的下标索引为index,则它的父节点在数组中的下标索引为parent = (index - 1) // 2,它的左子节点的下标索引为child_left = index * 2 + 1,右子节点的下标索引为child_right = index * 2 + 2。如果计算出来parent小于0或者child大于了数组最大值,就说明没有父节点或者子节点。代码实现接下来我们创建最大堆类,存储一些堆的基本信息以及工具方法1234567classHeap(object):def__init__(self) ->None:self._data = []def_size(self) ->int:returnlen(self._data)def_swap(self, i:int, j:int) ->None:self._data[i], self._data[j] = self._data[j], self._data[i]Heap类包含了三个方法,一个初始化方法创建了一个数组, ...继续阅读 (216)


    love 0
    Derobukal
    发表于
    2023-11-11 04:55:35

    简单了解一下动态规划

    动态规划是一种求最优解的方式,个人了解也不是很深,胡乱写写,算是一点点自己的理解,有不对的地方欢迎批评。动态规划是一种在多个状态间进行转移时,由上一个最优状态推导出下一个最优状态的方式,而上一个最优状态又是由上上个最优状态推导得到的,如此不断向前推进,最后我们只需要知道初始最优状态即可。通过初始最优状态和状态间转移的逻辑和方式,我们就能获得全局最优状态。(是不是感觉有点像数学归纳法?)举一个斐波拉契数列的例子,最简单的解法自然是使用递归实现123456deffab(n):ifn ==0:return0ifn ==1:return1returnfab(n -1) + fab(n -2)简单分析就可以发现,以上例子中,很多的数字被重复计算了。例如在计算fab(5)时fab(3)已经被计算了,但是在计算fab(4)时fab(3)又被计算了一遍。因此,我们可以用一个table保存已经计算好的数据,避免重复计算123456789101112table = {}deffab(n):ifnintable:returntable[n]ifn ==0:result =0elifn ==1:result =1else:result = fab(n -1) + fab(n -2)table[n] = resultreturnresult更改了策略之后,我们发现计算速度快了很多,这其实 ...继续阅读 (227)


    love 0
    Derobukal
    发表于
    2023-11-11 04:55:35

    常见排序算法的原理和实现

    冒泡排序冒泡排序的原理很简单,就是每次都把当前无序序列中最大(或者最小)的元素移动到序列的开头(或者结尾),之后再对除该元素之外的剩余序列做同样的操作。当所有的元素都冒泡完毕之后,整个序列就会变得有序。冒泡排序的过程正如它的名字一般,每次都把序列中最大的元素移动到末尾(假设我们选择了这种规则),这种操作就好像水中的泡泡不断地从水中浮到水面一般。冒泡排序的实现如下,简单观察就可以知道它的时间复杂度为O(n2)123456defbubble_sort(arr):length =len(arr)foriinrange(length -1):forjinrange(length -1- i):ifarr[j] > arr[j +1]:arr[j], arr[j +1] = arr[j +1], arr[j]选择排序原理上类似于冒泡排序,区别在于冒泡排序比较的是相邻元素的大小,选择排序则会与一个固定的数值进行大小比较,省去了一些没有必要的比较过程。同样是获取一个无序序列的最小值并放到开头,冒泡排序是逐个比较并交换值,而选择排序会以第一个元素作为基准值进行比较,获取到最小值后只需要把最小值和开头元素进行交换即可。选择排序实现如下,复杂度为O(n2)12345678defselect_sort(arr):length =len(arr)foriinrange(length):min_num_in ...继续阅读 (218)


    love 0
    Derobukal
    发表于
    2023-11-11 04:55:35

    使用Celery实现Python分布式任务处理

    Celery是一个任务队列,它可以实现跨进程和机器的分布式任务处理。任务队列的输入端会输入各种任务(task),这些任务会在输出端由worker进行处理,这些任务会由客户端通过发送消息的方式交给broker,随后broker把任务分发给worker。安装组件本文使用到的组件版本组件版本Python2.7.16Celery4.4.7Redis6.2.4redis-py3.2.1首先我们需要安装celery和Redis的依赖包pip install celery==4.4.7pip install redis==3.2.1Celery支持多种类型的broker,在这里我们主要使用Redis作为Celery的broker,关于Redis的安装和使用可以参考我之前的文章Redis failover。构建应用我们首先创建如下的目录结构(本文的示例代码都放在了GitHub上面).├── run.py└── search ├── __init__.py ├── config.py └── tasks.py创建celery应用search/config.py包含了一些celery的配置文件,具体配置如下12345678# 设置任务模块include = ['search.tasks']# 对指定的任务使用一个特定的队列进行路由,该任务在发送时会被发送到该指定队 ...继续阅读 (200)


    love 0
    Derobukal
    发表于
    2023-11-11 04:55:35

    Redis服务的安装和使用

    我在文章Redis failover中介绍过如何安装Redis并且通过sentinel(哨兵)实现Redis的高可用。随着Redis的不断更新,现在的Redis(我使用的版本是6.2.6)已经支持了集群功能,本文记录了如何搭建一个Redis集群并使用。我们使用如下的6台机器来构建一个Redis集群172.19.65.196172.19.72.108172.19.72.112172.19.72.203172.19.65.228172.19.65.136下载源码并编译首先在172.19.65.196上下载Redis源代码并进行编译,这里我下载的版本是6.2.6useradd -m redissu - rediswget https://download.redis.io/redis-stable.tar.gztar -zxvf redis-stable.tar.gzcd redis-stablemake编译生成的可执行文件在src目录下文件名功能redis-serverRedis服务的启动程序redis-cliRedis命令操作工具redis-sentinelRedis哨兵,在Redis failover介绍过redis-benchmarkRedis性能测试工具redis-check-rdb检查快照文件状态redis-check-aof检查aof文件状态这里我们只需要用到编译生成的re ...继续阅读 (195)


    love 0
    Derobukal
    发表于
    2023-11-11 04:55:35

    ZooKeeper的简单介绍

    用了很久的ZooKeeper了,稍微做个总结。ZooKeeper(以下简称ZK)是一个分布式组件,基于类似Paxos的ZAB一致性算法来实现。ZK保存的数据结构类似于一般的文件系统,只不过在ZK中文件夹也可以拥有数据,整体文件结构为一棵树型。安装ZooKeeper去官网下载压缩包,随后使用rsync同步到三台机器上,我使用如下三台机器172.19.65.196172.19.72.108172.19.72.112解压压缩包,使用cp conf/zoo_sample.cfg conf/zoo.cfg得到配置文件,在三台机器的conf/zoo.cfg中添加如下配置dataDir=/home/zookeeper/apache-zookeeper-3.8.0-bin/dataserver.1=172.19.65.196:2888:3888server.2=172.19.72.108:2888:3888server.3=172.19.72.112:2888:3888然后在三台机器的dataDir目录下创建myid文件vi /home/zookeeper/apache-zookeeper-3.8.0-bin/data/myid三台机器的myid文件中对应修改的内容如下机器内容172.19.65.1961172.19.72.1082172.19.72.1123启动ZK集群修改完毕之后使用命令依次启 ...继续阅读 (202)


    love 0
    Derobukal
    发表于
    2023-11-11 04:55:35

    设计模式学习笔记

    创建模式模式名称工厂模式单例模式结构模式模式名称模式描述适配器模式将不兼容的组件,通过添加一个适配器兼容起来桥接模式将多种属性组合起来进行配置,而不是死板的放在一个类中去定义*组合模式树状的结构,一层一层的向下去推进装饰模式父类引用指向子类对象,一个接口对应着多个不同的实现外观模式对复杂的对象进行一层封装,只暴露出少量的自己所需要的功能享元模式通过工厂方法创建对象,这些对象内部不可变并且被所有的引用所共享,以实现对内存的节省代理模式实现对某种操作的封装,以实现一种对目标对象的代理行为模式模式名称模式描述责任链模式任务被交给职责链,每一个接受者都依次处理这个任务命令模式把操作封装起来作为一个命令,GUI上面的模块只需要调用这个命令即可以实现命令操作迭代器模式一个模块一个模块的向后递归遍历(链表)中介者模式在多个组件之间创建中介者,通过中介者这些组件才能相互联系备忘录模式对象内部有一个不可以被修改的备忘录,调用快照方法可以获取到这个备忘录的原始状态数据观察者模式发布者在发布消息时,订阅者能够收到发布者所发布的订阅者所订阅的消息状态模式将所有的状态都抽象到一个类中,通过调用这个类的方法的方式来修改其状态策略模式创建不同的策略,在对象中设置它所需要的策略,最终执行的时候会执行它所设置的策略逻辑模板方法模式对所有类都会用到的一些同样的方法,把这些方法创建在模板中,所有的类使用模板类中所创建的 ...继续阅读 (209)


    love 0
    Derobukal
    发表于
    2023-11-11 04:55:35

    在树莓派上面搭建Samba服务

    在树莓派3b安装系统中我们已经讲了如何在树莓派上面安装操作系统并且如何通过SSH连接到树莓派,在这篇文章中我们将介绍一下如何通过树莓派搭建一个Samba文件共享服务。首先我们先在树莓派上安装Samba服务sudo apt-get updatesudo apt-get install samba之后我们在用户pi的home目录中创建一个用于共享的文件夹,并修改其权限为777mkdir Sharechmod 777 Share随后我们修改Samba的配置文件sudo vi /etc/samba/smb.conf在配置文件的底部添加如下配置[pi] path = /home/pi/Share public = yes writable = yes create mask = 0777 force create mode = 0777 directory mask = 0777 force directory mode = 0777 read only = no browseable = yes guest ok = yes guest only = yes配置文件修改并保存了之后,我们重启Samba服务sudo service smbd restart这样一个符合我们需要的Samba服务就启动起了。我们使用同一局域网下的一台Windows主机,打开它的文件资源管理器 ...继续阅读 (196)


    love 0
    Derobukal
    发表于
    2023-11-11 04:55:35

    【译】用纸板和弹珠制作的4位计算器

    本文翻译自:https://lapinozz.github.io/learning/2016/11/19/calculator-with-caordboard-and-marblesLOGIC这是什么?LOGIC是一个全部由纸板、弹珠和胶水制作而成的全功能4位计算器,它可以对从0到15的数字进行加法计算,最大的可计算数字为30,我和我的妹妹为了一向科学活动而一起从零开始制作了这个设备。在这之前,我们还没见过任何用乐高或木头之类东西制作的这类计算器,所以这次我们制作的是一个以前从未有过的全新的模型。为什么要制作?主要是因为好玩!我一直想要制作一个加法器,但是我一直都没想好要如何制作它,我之前有想过用水或者只用纸板来制作。正好我的妹妹有一个科学活动,活动需要提交一个科学项目,我就帮助她选择了一个科学项目。我无意中看到了一个视频:用多米诺骨牌制成的计算器,因此我就想我也许可以用弹珠来制作一个计算器?从这个项目可以学到什么?通过这个项目,我的妹妹已经学会了二进制计数、二进制加法、二进制十进制的互相转换、逻辑门、基本的逻辑电路等等的知识。我也学到了使用身边常见的材料来制作一个逻辑电路是多么的简单,在我的项目中我使用的都是身边最常见的东西。它看起来是什么样子的?哇,那你怎么使用它呢?将数字用二进制的方式放在输入端,有弹珠的就是1,没有弹珠的就是0。右边的位是最低有效位,在每次计算前我们需要把计 ...继续阅读 (186)


    love 0
    Derobukal
    发表于
    2023-11-11 04:55:35

    购房贷款中等额本金与等额本息的计算方式

    在我们买房子的时候,如果手上的现金不够,可以选择通过向银行借钱的方式来得到缺少部分的购房现金。一般来说,我们以房子本身作为抵押来向银行借钱,借到钱之后我们就可以用手上的钱向开发商购买房屋,之后只需要按月向银行还钱即可。如果我们单方面对银行进行债务违约,则银行有权利收回借贷抵押物即该套房屋。当然天下没有免费的午餐,在我们向银行借钱的时候,是需要向银行支付利息的。以中国人民银行2020年12月21日的5年期以上全国银行间同业拆借中心LPR公布价为例,该值为4.65%,其决定了2021年一整年的房贷利率。当然,商业银行在真正进行贷款发放时可能会对利率进行一定的上浮或打折。基准利率与LPRLRP是央行在最近几年刚刚推出的一个新的利率计算方式,在以前,购房的利率主要参考的是央行基准利率,基准利率的当前值为4.9%。如果你之前的利率是锚定在基准利率上的,根据中国人民银行公告〔2019〕第30号中规定的商业性个人住房贷款的加点数值应等于原合同最近的执行利率水平与2019年12月发布的相应期限LPR的差值,那么将购房贷款利率的锚从基准利率改为LPR的计算方式如下(已知2019年12月发布的LPR的值为4.8%)实际购房的房贷利率 - 4.8% + 当前LPR利率例如你在2015年买房,但是当前的利率是有折扣,我们假设是9折,则贷款的真实利率为4.9% x 0.9 = 4.41%,即最终的贷款利率是 ...继续阅读 (170)


    love 0
    Derobukal
    发表于
    2023-11-11 04:55:35

    Elasticsearch新增节点引发CircuitBreakingException错误

    那是一个平静的上午,我因为业务需要决定给我们的Elasticsearch(以下简称ES)集群添加几个节点,当前集群ES的版本为7.5.2,而待添加的节点都是从之前的1.5.2版本的ES集群中移出来的。当前的7.5.2集群已经有了6个数据节点,我这次的工作就是准备再添加5个新的数据节点上去。因为这5个节点都是之前1.5.2版本的ES集群的数据节点,并且在之前的集群中稳定的运行了好几年也没有出现过任何问题,所以我对它们的配置都是很放心的,这种大意的态度就为接下来的悲剧埋下了伏笔。因为这些节点在之前的集群中都没什么问题,所以我就一次性把这5个节点全部添加到了ES7集群中成为了数据节点。出现错误节点添加之后,ES集群开始进行分片的重新平衡,整个集群开始进行分片的搬迁和复制操作,我们的工作似乎很快就要完成了。很快,这种平静就被手机短信的铃声所打破了,短信提示业务突然开始出现了大量的读写失败错误!同时企业微信的告警群也开始大量告警,告警信息显示的都是CircuitBreakingException类型的异常,具体的报错信息我摘录部分如下[parent] Data too large, data for [] would be [15634611356/14.5gb], which is larger than the limit of [15300820992/14.2gb], real us ...继续阅读 (164)


    love 0
    Derobukal
    发表于
    2023-11-11 04:55:35

    在使用elasticsearch-py时不对master节点进行读写

    最近我们搭建了一个新的Elasticsearch(以下简称ES)集群,集群中有3个master节点和6个data节点,集群使用到的ES版本为7.5.2。其中master节点JVM的堆内存设置为2GB,data节点JVM的堆内存设置为30GB,master和data节点都只用作单一的节点角色(即节点不会同时是master和data两种角色)。因为master不存储数据,所以我们给master三台负载的配置都比较低。master配置不够导致读写出错我们在操作ES集群的时候使用了elasticsearch-py这个ES的Python操作库,问题在于这个库在操作ES的时候会先根据ES的/_nodes/_all/http接口获取集群所有节点的HTTP接口地址,之后利用这些接口地址对ES进行读写。当然elasticsearch-py会在这些接口地址间做负载均衡以及错误重试等等操作,但是/_nodes/_all/http接口会同时返回master、data以及一些其它角色节点的HTTP接口地址,这就导致elasticsearch-py在后面操作集群的过程中既会读写data节点,也会读写master节点。因为我们master节点的配置很低,所以一旦在master节点上面进行读写操作,那么master节点的压力尤其是内存的压力就会比较大,经常就会出现circuit_breaking_exceptio ...继续阅读 (164)


    love 0
    Derobukal
    发表于
    2023-11-11 04:55:35

    G1垃圾收集器

    与C、C++等手动管理内存的编程语言不同,Java程序在运行时会自动对内存中不再使用的对象进行检测,并回收这部分对象所占用的内存空间。在JDK中,JVM将堆(heap)内存分为了不同的区域块,每种区域会使用不同的垃圾收集器,每种垃圾收集器又会使用各自的垃圾收集算法。因此JVM的垃圾收集设计大致架构如下,从上至下越来越偏向于细节,本文使用自底向上的方式进行介绍堆内存堆内存分为多个区域每个区域使用了不同的垃圾收集器每种垃圾收集器使用了一个或多个垃圾收集算法垃圾收集算法检测垃圾的方式一般有引用计数法和可达性分析两种,因为引用计数法无法检测到循环引用的垃圾对象,所以现在JVM中进行垃圾检测都是使用的可达性分析方法。在检测到了垃圾对象之后,JVM就需要对这些垃圾对象进行垃圾回收(英语:Garbage Collection,缩写为GC),JVM中使用到的GC算法主要由如下三种标记-清除算法(Mark-Sweep)该算法分为标记和清除两个步骤,第一步标记是将所有活动的对象做上标记,第二部清除是将所有没有标记的对象进行回收。标记-压缩算法(Mark-Compact)标记压缩算法和标记清除算法基本上一致,只是标记清除算法过程只能单纯的把对象内存空间给释放出来,时间长了会造成内存碎片的问题。标记压缩算法在标记清除算法的基础上会对存活的对象进行移动,之后把这些对象向某一端进行移动来保证有完整的内存空闲空 ...继续阅读 (156)


    love 0
    Derobukal
    发表于
    2023-11-11 04:55:35

    一次Elasticsearch慢查询问题的排查

    最近对Elasticsearch(以下简称ES)进行了升级,升级之后把部分数据从之前的ES-1.5集群同步到了现在的ES-7.5集群,之后在新集群中进行数据查询的时候发现会有偶发性的查询非常慢的情况。新集群的大部分查询耗时都在10ms以内,但是偶尔却会出现800ms左右的超高查询耗时,本文记录了该问题的排查过程。GC的原因?首先我们怀疑是ES的GC导致了偶发性的慢查询,我们知道JVM的GC会导致Stop The World现象,在GC时节点无法处理任何逻辑导致查询行为被阻塞最终导致超长的查询耗时,而GC这种行为本身也是会偶发的,所以和我们观察到的偶尔出现查询耗时非常高的现象非常吻合。我们观察ES运行的GC日志,并未看到有延迟特别高的GC行为,而且也没有看到任何Old GC的动作,因此这些慢查询应该并不是因为JVM的GC行为导致的。顺便介绍一下,我们使用的是ES-7.5.2自带的bundled JDK,它的版本为13.0.1~ java -versionopenjdk version "13.0.1" 2019-10-15OpenJDK Runtime Environment AdoptOpenJDK (build 13.0.1+9)OpenJDK 64-Bit Server VM AdoptOpenJDK (build 13.0.1+9, mixed mode, sharing)在 ...继续阅读 (149)


    love 0
    Derobukal
    发表于
    2023-11-11 04:55:35

    Elasticsearch不同版本的压力测试与结果对比

    公司目前所使用的Elasticsearch(以下简称ES)版本是在2015年的时候选择的,当时选择了ES的最新版本1.5.2。随着ES官方的快速发展,ES也已经推出了很多新的版本,这些新版本往往伴随着一些新特性的发布以及性能的提升,为了使用到这些新特性,我们决定将ES的版本升级到7.5.2。ES版本升级会遇到API不兼容的问题,我们的解决办法是在业务和ES之间增加一层_搜索平台_来做接口兼容。此外我们在版本升级之前还需要了解一下ES-7.5.2相对于ES-1.5.2有多少性能提升,所以我们需要针对这两个版本做一下性能测试并对结果进行对比。我们使用如下的四台负载来做性能测试添加滚动条表格内的文字不折叠换行序号节点IPCPU型号CPU核数内存硬盘操作系统1172.19.66.58Intel(R) Xeon(R) CPU E5645 @2.40GHz23079520kB14GGNU/Linux 3.10.0-957.21.3.el7.x86_642172.19.66.70Intel(R) Xeon(R) CPU E5645 @2.40GHz23079524kB14GGNU/Linux 3.10.0-957.21.3.el7.x86_643172.19.66.77Intel(R) Xeon(R) CPU E5645 @2.40GHz23079524kB14GGNU&#x ...继续阅读 (162)


    love 0
    询盘云-贾定强
    发表于
    2023-11-11 01:36:29

    出口业务受疫情影响无法收汇,已取得出口信用保险赔款,还能申报办理出口退税吗?

    问:我公司是一家出口企业,2022年11月有一笔出口业务受疫情影响无法收汇,但已取得出口信用保险赔款,请问,这种情况能否申报办理出口退税?在国际贸易中,出口退税是对出口企业的一项重要支持政策,用以增强企业的国际竞争力。然而,实际运营中,企业可能因为多种原因导致出口货款难以收回,例如,全球疫情的爆发给很多出口企业带来了巨大的冲击。在这种情况下,出口信用保险成为企业规避贸易风险的重要手段。本文将详细解析在无法收汇但取得出口信用保险赔款情况下,出口企业如何申报办理出口退税。首先,出口退税是指出口企业在生产、加工过程中所缴纳的国内增值税和消费税,在货物出口后,由国家退还的税款。这一政策对于维护出口企业的价格竞争优势至关重要。出口退税的前提是企业能够提供正常的出口收汇凭证,但在实际操作中,受全球经济形势、国际政治环境、自然灾害以及疫情等多种因素影响,出口款项的收回存在很大的不确定性。2022年,新冠疫情的再次爆发导致了全球供应链的混乱,许多出口企业面临了货物已出但款项难收的困境。这一现象严重影响了企业的现金流,增加了企业的运营风险。为此,很多出口企业选择了出口信用保险,以降低无法收汇的风险。出口信用保险通常保障企业在遭遇买方违约、政治风险等无法收回出口款项时,能够得到一定比例的赔偿。在疫情影响下无法收汇的情况中,一旦企业取得了出口信用保险的赔偿金,根据《中华人民共和国增值税暂行条例》及其实施 ...继续阅读 (157)


    love 0
    询盘云-贾定强
    发表于
    2023-11-11 01:34:59

    2023年谷歌主要算法更新及其对外贸SEO工作的影响

    在2023年,谷歌发布了多个重要的算法更新,每个都对搜索引擎优化(SEO)产生了深远的影响。以下是这些更新的综述及其对外贸SEO的具体影响。谷歌2023年重大更新的时间线:2023 年 11 月广泛核心更新2023 年 10 月广泛核心更新2023 年 10 月垃圾邮件更新2023 年 9 月有用内容更新2023 年 8 月广泛核心更新2023 年 4 月 Review 更新2023 年 3 月广泛核心更新2023 年 2 月产品 Review 更新谷歌2023算法更新核心点:广泛核心更新3月、8月、10月、11月: 这些更新着重于提高搜索结果的相关性和质量。它们要求网站专注于创造高质量、相关性强的内容,避免过度优化技术 。垃圾邮件更新(10月)针对性: 针对薄弱、复制、误导和过度推广的内容。这要求网站持续监控和改进其内容质量,确保内容真实性和可靠性 。有用内容更新(9月)内容为王: 强调以人为本的内容创作,对机器生成内容的态度有所软化。对于SEO策略来说,这意味着更多地关注用户体验和提供实际价值的内容 。Review更新(4月、2月)经验重点: 更新专注于体现真实使用经验的评测内容,如视觉证据和定量测量。对于涉及产品评测的网站来说,这意味着需要提供更深入、更有说服力的评测内容 。对外贸SEO的影响这些更新共同强调了内容的质量、用户体验和诚实的SEO实践的重要性。对于SEO专家而言 ...继续阅读 (178)


    love 0
    Jiajun的技术笔记
    发表于
    2023-11-11 00:00:00

    macOS/Linux 编译 InputLeap

    《macOS/Linux 编译 InputLeap》上一篇说到,我安装了 synergy-core,但是是下载别人编译好的二进制。我就想着,反正我也能编译,干脆改改源码,把Synergy里烦人的激活提示框干掉得了?但是又想到,Barrier本来就是改好了的,只是不维护了,InputLeap 又是 Barrier 的继任,那我就直接自己编译 InputLeap 试试看了... ...继续阅读 (135)


    love 0
    豌豆花下猫
    发表于
    2023-11-11 00:00:00

    Python 潮流周刊#26:requests3 的现状

    你好,我是猫哥。这里每周分享优质的 Python、AI 及通用技术内容,大部分为英文。本周刊开源,欢迎投稿。另有电报频道作为副刊,补充发布更加丰富的资讯。🐱品牌赞助本周刊由“Python猫”出品,这是一个以 Python 技术科普和分享为主的科技自媒体,欢迎关注同名公众号。品牌合作请私信联系。🦄文章&教程1、Kenneth Reitz:迟来的道歉,以及 requests 3 的进展2019 年时 requests 3 的筹款闹出了不小的风波,后来似乎没什么消息。现在作者发了一篇道歉文,看来项目是要重启了!文中列举了目前已经完成的一些事情,包括给所有公开接口加上了类型提示、重构所有命名空间和调整成兼容异步编程等。(附:筹款风波之《Why I’m not collaborating with Kenneth Reitz》)2、grequests:异步的 HTTP 请求grequests构建在gevent库之上,可以并发多个请求,有效利用异步编程的强大功能。这篇基础教程介绍了它的基本使用方法,以及一个提升性能的建议。3、开发一个 Python 编译器和解释器这是一系列博文,目前已更新 6 篇,目标是探索和研究实现 Python 等编程语言所需的概念和算法,将会涉及分词器、解析器、编译器和解释器。4、使用 Python+ChatGPT 开发一个书籍摘要 AI一篇教程,用 Python、La ...继续阅读 (167)


    love 0
    bigwhite
    发表于
    2023-11-10 22:05:01

    Go,14周年[译]

    本文永久链接– https://tonybai.com/2023/11/11/go-opensource-14-years国内的双十一购物狂欢已没有了当年的那种热闹与喧嚣,但大洋彼岸的Go团队却始终保持稳中有增的开发和语言演进节奏。今晨Go核心团队的Russ Cox代表Go语言项目团队在Go官博上发表了《Fourteen Years of Go》的博文,纪念Go语言开源14周年,并对2023年以来Go语言的演进进行了归纳总结,并对Go在其第15个年头将要做的改进给予了很高的期望。这里对博文做简单翻译,供大家参考。今天,我们欢庆Go语言开源发布十四周年!Go在过去一年中取得了巨大的进步,发布了两个功能特性丰富的版本,并达成了其他一些重要的里程碑。我们在2月发布了Go 1.20,在8月发布了Go 1.21,在这两个版本中,我们更多地关注实现改进而不是新语言特性。我们在Go 1.20版本中发布了Profile-guided optimization(PGO)功能的预览版,并在Go 1.21中正式发布了该功能,它允许Go编译器读取程序的Profile,然后花更多时间对程序中运行最频繁的部分进行优化。在Go 1.21中,启用PGO后,工作负载的CPU使用率通常可以提高2%到7%。关于PGO的介绍请参阅“Go 1.21中的Profile-guided optimization”,对 ...继续阅读 (200)


    love 0
    David Gao
    发表于
    2023-11-10 16:00:00

    Rust内存优化及构建配置

    虽然过早优化并不是一个好事情,但是对内存使用的优化,如果在早期开发时就能注意到还是要进行的。因此找到一片关于如何对Rust的代码进行内存优化的文章,同时该博文还介绍一些构建配置优化,原文保存转发More… ...继续阅读 (149)


    love 0
    caimouse
    发表于
    2023-11-10 12:24:29

    C#开发的OpenRA游戏之世界存在的属性CombatDebugOverlay(3)

    比如一个士兵要向这些建筑物开火,怎么样知道他在这个射程范围之内,就是计算他的中心点与这些点的长度是否在武器的射程范围之内,如果在这个范围之内,才能进行射击,不在范围就不能射击。这个类继承接口IRenderAnnotations,这个接口主要用来实现RenderAnnotations(Actor self, WorldRenderer wr)函数,这个函数用来显示炮口、命中区域的标注。这里保存了调可视化的全局变量,因为它是附在world对象,这是一个全局变量,所有地方都可以访问。 ...继续阅读 (159)


    love 0
    youdao
    发表于
    2023-11-10 11:09:20

    网易有道上线“易魔声” 开源语音合成引擎 用户可免费下载使用

    刚刚,我们上线了「易魔声」开源语音合成(TTS)引擎!「易魔声」,是一款有道自研TTS引擎,目前支持中英文双语,包含2000多种不同的音色,更有特色的情感合成功能,支持合成包含快乐、兴奋、悲伤、愤怒等广泛情感的语音。「易魔声」中文 网易有道 17秒(我们用「易魔声」将以上这段话进行了技术合成,点击试听 )用户可免费在开源社区GitHub进行下载使用地址:https://github.com/netease-youdao/EmotiVoice通过我们提供的web界面、及批量生成结果的脚本接口,轻松实现音色的情感合成与应用。(GitHub开源界面,点击红色字可跳转)在你过往的回忆里,是不是也有一些特别的声音,比如:偶像的声音激励人心、妈妈的声音让我们一秒回忆起小时候……声音,作为语言维度的一种,总是蕴含着人类充沛的情感表达。而富有情感的合成语音,是能够为应用和内容增色的AI功能。现在通过「易魔声」,简单通过在文本中加入情感的描述提示,开发者或者内容创作者就可以自由合成符合自己需求的带有情感的语音,比传统TTS更加自然逼真!「易魔声」,是有道AI团队今年开发的一个项目。随着基于GAN等现代AI技术的语音能力越来越成熟,实现一个质量较高的TTS系统的门槛越来越低。但即使如此,中英双语的高质量、现代TTS模块还是不容易找到,要在自己的应用与内容中加入高逼真度且高度可控 ...继续阅读 (111)


    love 0
    Bboysoul\'s Blog
    发表于
    2023-11-10 10:34:00

    我关注的项目这周更新了什么-20231110

    简介每周五更新,所有的更新也会发送到我的频道https://t.me/bboyapp规则pre release的不记录只记录重要的更新上一版本版本的bugfix不记录,比如某一个项目最新版本是7.0.0 上一个版本6.0.0发布了一个bugfix 6.0.1 那么不会记录比如lens发布了一个新版本,那么openlens也会发布一个新版本,此时只会记录lens发布的信息,不会记录openlens发布的信息 ...继续阅读 (71)


    love 0
    询盘云-贾定强
    发表于
    2023-11-10 09:54:21

    手把手教你如何创建和发布自己专属的GPTs?

    今天来教大家如何创建自己专属的GPTs。OpenAI前两天的开发者大会重磅发布了GPTs,让每一个普通用户都可以创建自己的GPT,并且可以将自己创建的GPT上传到GPT Store来赚钱。今天带大家来看一下如何操作。首先,打开ChatGPT界面,可以发现,新的界面下多了Explors菜单。如果你的GPT4还没有出现此菜单,说明还需要等几天,新功能上线,会逐渐同步给所有用户。点击Explors按钮,点击Create a GPT,就可以开始创建你自己的GPT了。GPT的创建不需要你懂任何代码,直接跟它对话就可以了。比如,我输入“帮我创建一个帮助外贸企业解决日常问题的GPT”。它就开始给我执行创建动作了,并建议我一个名字”Trade Helper”。我觉得还行,回复 Yes,就创建好了。然后我们点击Configure按钮,可以看到你自己GPT的配置界面。1. Name 是GPT的名字。2. Description 是对于你自己GPT的简单描述。3. Instructions 是一个更详细的介绍。4. Conversation starters 是用户打开你的GPT界面时的四个提示问题,用户点击即可提问,不需要手动输入。5. Knowledge是最重要的部分,也就是你自己的知识库,一般是只有你自己企业或个人才知道的一些内容。我们都知道,即使最新的GPT-4 Turb ...继续阅读 (158)

上一页 477/4404 下一页
沪ICP备19023445号-2号
友情链接