首页 文章 精选 留言 我的

精选列表

搜索[网站开发],共10000篇文章
优秀的个人博客,低调大师

feilong-core 1.14.3 发布啦,让 Java 开发更简便的工具包

本次升级共有3处变更, 具体参见1.14.3 milestone 1.14.3 文档地址:http://feilong-core.mydoc.io/ 单元测试数 增加至2164个, 单元测试覆盖率 增加至91%,javadoc 比率83% [Feature]🆕 #788sort util 封装数组或者集合 固定的排序方法 com.feilong.core.util.SortUtil 新增sortListByFixedOrderArray(List<T>, T...)和sortListByFixedOrderList(List<T>, List<T>)方法 对 集合 list 按照指定的固定顺序fixedOrderItemList进行排序. 说明: 默认使用的是UnknownObjectBehavior.AFTER,不在指定固定顺序的元素将排在后面 示例: assertThat( sortListByFixedOrderList(toList("张飞", "关羽", "刘备"), toList("刘备", "张飞", "关羽")), // contains("刘备", "张飞", "关羽")); 重构: 对于以下代码: try{ Collections.sort( list, new FixedOrderComparator<>( StoPropertyConstants.PRPT_ITEM_HYPELAUNCH, StoPropertyConstants.PRPT_ITEM_MIADIDAS_VALUE_EN, StoPropertyConstants.PRPT_ITEM_PRESONALLZATION_CODE, StoPropertyConstants.PRPT_ITEM_PERSALES_CODE, StoPropertyConstants.PRPT_ITEM_VIP_CODE, StoPropertyConstants.PRPT_ITEM_COMINGSOON_CODE, StoPropertyConstants.PRPT_ITEM_DISCOUNT_CODE, StoPropertyConstants.PRPT_ITEM_NORMAL_CODE, StoPropertyConstants.PRPT_ITEM_NOSALE)); }catch (Exception e){ LOGGER.error("itemType sort error:{},itemType:{}", e, JsonUtil.format(itemType)); } 可以重构成: com.feilong.core.util.SortUtil.sortListByFixedOrderList( list, toList( StoPropertyConstants.PRPT_ITEM_HYPELAUNCH, StoPropertyConstants.PRPT_ITEM_MIADIDAS_VALUE_EN, StoPropertyConstants.PRPT_ITEM_PRESONALLZATION_CODE, StoPropertyConstants.PRPT_ITEM_PERSALES_CODE, StoPropertyConstants.PRPT_ITEM_VIP_CODE, StoPropertyConstants.PRPT_ITEM_COMINGSOON_CODE, StoPropertyConstants.PRPT_ITEM_DISCOUNT_CODE, StoPropertyConstants.PRPT_ITEM_NORMAL_CODE, StoPropertyConstants.PRPT_ITEM_NOSALE)); #789新建ComparatorUtil #791新建ContainsStringPredicate 使用场景,参考 <bean class="com.feilong.context.converter.IfStringToBeanConverter"> <property name="predicate"> <bean class="com.feilong.core.util.predicate.ContainsStringPredicate" p:searchCharSequence="TRADE_NOT_EXIST" /> </property> <property name="trueStringToBeanConverter"> <bean class="com.feilong.netpay.alipay.query.AlipayTradeNotExistStringToBeanConverter" /> </property> <property name="falseStringToBeanConverter"> <bean class="com.feilong.context.converter.XMLMapBuilderStringToBeanConverter"> <property name="beanClass" value="com.feilong.netpay.alipay.query.AlipaySingleQueryResultCommand" /> <property name="nameAndValueMapBuilder"> <bean class="com.feilong.context.converter.builder.XmlNodeNameAndValueMapBuilder" p:xpathExpression="/alipay/response/trade/*" /> </property> <property name="beanBuilder"> <bean class="com.feilong.context.converter.builder.AliasBeanBuilder" /> </property> </bean> </property> </bean> [Update] none [版本升级] none [Remove] none [Fix Bug]🐛 none [Javadoc] none [Junit Test] none

优秀的个人博客,低调大师

开发者移除 11 个 Ruby 库中 18 个带有后门的版本

RubyGems 软件包存储库的维护者近期移除了 11 个 Ruby 库中出现的 18 个恶意版本,这些版本包含了后门机制,可以在使用 Ruby 时启动加密货币挖掘程序。 恶意代码最初发现于 4 个版本的 rest-client 库中,rest-client 是一个非常流行的 Ruby 库。这些库中的恶意代码会将受感染系统的 URL 和环境变量发送到乌克兰的远程服务器。同时代码还包含一个后门机制,允许攻击者将 cookie 文件发送回受感染对象,并允许攻击者执行恶意命令。研究者调查后发现,这种机制被用于挖矿。 除了 rest-client,还有其它 10 个 Ruby 库也中招,但它们都是通过使用另一个功能齐全的库添加恶意代码,然后以新名称在 RubyGems 上重新上传而创建的。 研究人员分别统计了这些恶意版本在被移除前被下载的次数,一共被下载了三千多次,其中 rest-client 1.6.13 被下载了一千多次: rest-client:1.6.10(下载 176 次),1.6.11(下载 2 次),1.6.12(下载 3 次)和 1.6.13 (下载 1061 次) bitcoin_vanity:4.3.3(下载 8 次) lita_coin:0.0.3(下载 210 次) coming-soon:0.2.8(下载211次) omn​​iauth_amazon:1.0.1(下载 193 次) cron_parser:0.1.4(下载 2 次),1.0.12(下载 3 次) )和 1.0.13(下载 248 次) coin_base:4.2.1(下载 206 次)和 4.2.2(下载 218 次) blockchain_wallet:0.0.6(下载 201 次)和 0.0.7(下载 222 次) awesome-bot:1.18.0(下载 232 次) doge-coin:1.0.2(下载 213 次) capistrano-colors:0.5.5(下载 175 次) 安全起见,建议在依赖关系树中删除这些库版本,或者升级/降级到安全版本,详情查看: https://www.zdnet.com/article/backdoor-code-found-in-11-ruby-librarie

优秀的个人博客,低调大师

开发者说 | 分布式事务中间件 Seata 的设计原理

导读 微服务架构体系下,我们可以按照业务模块分层设计,单独部署,减轻了服务部署压力,也解耦了业务的耦合,避免了应用逐渐变成一个庞然怪物,从而可以轻松扩展,在某些服务出现故障时也不会影响其它服务的正常运行。总之,微服务在业务的高速发展中带给我们越来越多的优势,但是微服务并不是十全十美,因此不能盲目过度滥用,它有很多不足,而且会给系统带来一定的复杂度,其中伴随而来的分布式事务问题,是微服务架构体系下必然需要处理的一个痛点,也是业界一直关注的一个领域,因此也出现了诸如 CAP 和 BASE 等理论。 在今年年初,阿里开源了一个分布式事务中间件,起初起名为 Fescar,后改名为 Seata,在它开源之初,我就知道它肯定要火,因为这是一个解决痛点的开源项目,Seata 一开始就是冲着对业务无侵入与高性能方向走,这正是我们对解决分布式事务问题迫

优秀的个人博客,低调大师

Docker 安装MySQL 主从复制 、Redis 、nginx 、安装maven,和java 配置开发环境

一、 执行命令,删除原有的docker sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-selinux \ docker-engine-selinux \ docker-engine 二、 安裝docker sudo yum install docker-ce 安装 sudo systemctl start docker 启动 docker --version 查看版本 1 安装maven,和java docker pull hub.c.163.com/wuxukun/maven-aliyun:3-jdk-8 ---- ### 2 安装mysql 拉取镜像,docker pull mysql:5.8 安装mysql主从复制 安装主库 docker run --name mysql-master -e MYSQL_ROOT_PASSWORD=root -p 10000:3306 -d mysql docker ps 查看mysql容器是否启动 配置 使用navicat 连接数据库,报错。Client does not support authentication protocol ; 解决方法 如下: 授权 GRANT ALL ON . TO 'root'@'%'; 刷新权限 flush privileges; 此时,还不能远程访问,因为Navicat只支持旧版本的加密,需要更改mysql的加密规则; 更改加密规则ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; 更新root用户密码ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456'; 刷新权限flush privileges; docker exec -it mysql-master /bin/bash 或 docker exec -it 627a2368c865 /bin/bash 进入mysql主库容器内部 切换到/etc/mysql 目录下, cd /etc/mysql . 修改my.cnf文件,vim my.cnf 在文件中添加如下内容 [mysqld] ## 同一局域网内注意要唯一 server-id=1001 ## 开启二进制日志功能,可以随便取(关键) log-bin=mysql-bin 如果报错,出现没有vi 命令: 依次执行以下命令 apt-get update; apt-get install vim 重启mysql服务,使用命令: docker restart 容器名称或者id (1b4671904bfa) #### 创建数据同步用户,授予用户 slave REPLICATION SLAVE权限和REPLICATION CLIENT权限,用于在主从库之间同步数据。 CREATE USER'slave'@'%'IDENTIFIED BY'123456'; GRANT REPLICATION SLAVE,REPLICATION CLIENT ON.TO'slave'@'%'; 安装从库 docker run --name mysql-slave -e MYSQL_ROOT_PASSWORD=123456 -p 10001:3306 -d mysql docker ps 查看mysql容器是否启动 配置 docker exec -it mysql-slave /bin/bash 或 docker exec -it 627a2368c865 /bin/bash 进入mysql主库容器内部 切换到/etc/mysql 目录下, cd /etc/mysql . 修改my.cnf文件,vim my.cnf 在文件中添加如下内容 [mysqld] server-id=101 ## 开启二进制日志功能 log-bin=mysql-slave-bin ## relay_log配置中继日志 relay_log=edu-mysql-relay-bin 如果报错,出现没有vi 命令: 依次执行以下命令 apt-get update; apt-get install vim 重启mysql服务,使用命令: docker restart 容器名称或者id (1b4671904bfa) ### 配置主从复制 登录主服务器,执行show master status;如下图 登录从服务器,执行 change master to master_host='172.17.0.2',master_user='slave', master_password='123456',master_log_file='mysql-bin.000001', master_log_pos=155,master_port=3306; show slave status G;用于查看主从同步状态。 start slave ; 启动主从复制。 show slave status G;用于查看主从同步状态。 查看容器的ip docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' 容器名称或id(mysql-master) 在容器中安装ping : apt-get install iputils-ping 参数解释 master_host :Master的地址,指的是容器的独立ip, master_port:Master的端口号,指的是容器的端口号 master_user:用于数据同步的用户 master_password:用于同步的用户的密码 masterlogfile:指定 Slave 从哪个日志文件开始复制数据 masterlogpos:从哪个 Position 开始读, masterconnectretry:如果连接失败,重试的时间间隔,单位是秒,默认是60秒 3 安装 redis 使用Dockfile 安装redis FROM centos MAINTAINER merry WORKDIR /home RUN yum install -y wget gcc && \ rpm --rebuilddb && \ yum -y install gcc automake autoconf libtool make && \ yum -y install net-tools && \ yum -y install tar && \ wget http://download.redis.io/redis-stable.tar.gz && \ tar -xvzf redis-stable.tar.gz && \ mv redis-stable/ redis && \ rm -f redis-stable.tar.gz && \ yum clean all && \ cd redis && \ make && make install EXPOSE 6379 ENTRYPOINT redis-server /home/redis/redis.conf CMD ["redis-server"] 构建: docker build -t redis:v1 . 启动: docker run -d -p 6378:6379 redis:v1 ### 4 安装 nginx 使用Dockfile 安装 FROM centos MAINTAINER merry #ENV 设置环境变量 ENV PATH /usr/local/nginx/sbin:$PATH ADD http://nginx.org/download/nginx-1.16.0.tar.gz . #RUN 执行以下命令 RUN yum install -y pcre-devel wget net-tools gcc zlib zlib-devel make openssl-devel RUN useradd -M -s /sbin/nologin nginx RUN tar -zxvf nginx-1.16.0.tar.gz RUN mkdir -p /usr/local/nginx RUN cd nginx-1.16.0 && ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module && make && make install ADD nginx.conf /usr/local/nginx/conf/nginx.conf #EXPOSE 映射端口 EXPOSE 80 EXPOSE 443 #ENTRYPOINT 运行以下命令 ENTRYPOINT ["nginx"] 构建: docker build --rm --tag centos_nginx:centos . 启动容器: docker run \ --name centos_nginx \ -d -p 80:80 \ -v /home/nginx/html:/usr/share/nginx/html \ -v /home/log:/var/log/nginx \ -v /home/nginx.conf:/usr/local/nginx/nginx.conf:ro \ -v /home/nginx/conf.d:/usr/local/nginx/conf.d \ nginx 欢迎关注公众号,查看更多内容

资源下载

更多资源
Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册