首页 文章 精选 留言 我的

精选列表

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

Java多用户商城系统B2B2C源码 -Spring Cloud

Spring Cloud是一系列框架的有序集合。利用Spring Boot的开发模式简化了分布式系统基础设施的开发,如服务发现、注册、配置中心、消息总线、负载均衡、断路器、数据监控等(这里只简单的列了一部分),都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud将目前比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装,屏蔽掉了复杂的配置和实现原理,最终整合出一套简单易懂、易部署和易维护的分布式系统架构平台。 Spring Cloud组成 Spring Cloud的子项目,大致可分成两类: 一类是对现有成熟框架Spring Boot的封装和抽象,也是数量最多的项目; 第二类是开发了一部分分布式系统的基础设施的实现,如Spring Cloud Stream就是kafka, ActiveMQ这样的角色。开发人员进行微服务的实践,第一类子项目就已经足够使用,如: Spring Cloud Netflix 是对Netflix开发的一套分布式服务框架的封装,包括服务的发现和注册,负载均衡、断路器、REST客户端、请求路由等。 Spring Cloud Config 将配置信息中央化保存, 配置Spring Cloud Bus可以实现动态修改配置文件。 Spring Cloud Bus 分布式消息队列,是对Kafka, MQ的封装。 Spring Cloud Security 对Spring Security的封装,并能配合Netflix使用。 Spring Cloud Zookeeper 对Zookeeper的封装,使之能配置其它Spring Cloud的子项目使用。 Spring Cloud Eureka Spring Cloud Eureka 是 Spring Cloud Netflix 微服务套件中的一部分,它基于Netflix Eureka 做了二次分装,主要负责完成微服务架构中的服务治理功能。 Spring Cloud未来 Spring Cloud为未来互联网企业提供分布式基础设施解决方案。同时,随着近几年微服务架构和Docker容器概念的火爆,也会让Spring Cloud在未来越来越“云”化的软件开发风格中立有一席之地,尤其是在目前五花八门的分布式解决方案中提供了标准化的、全站式的技术方案,有效推进服务端软件系统技术水平提升。有spring cloud b2b2c电子商务需求的朋友可以加企鹅求求:一零三八七七四六二六

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

3年Java开发都知道的Redis数据结构和通用命令

Redis的数据结构 Redis支持多种不同的数据结构,包括5种基础数据结构和几种比较复杂的数据,这些数据结构可以满足不同的应用场景。 五种基础数据结构String:字符串,是构建其他数据结构的基础Hash:哈希列表List:列表Set:集合,在哈希列表的基础上实现Sort Set:有序集合复杂的数据结构Bitmaps:位图,在string的基础上进行位操作,可以实现节省空间的数据结构。Hyperloglog:用于估计一个 set 中元素数量的概率性的数据结构。Geo:geospatial,地理空间索引半径查询。BloomFilter:布隆过滤器。不同数据结构的相同之处从上面的介绍,我们看到支持的数据结构的不同,但其实,Redis的每一种数据结构都由一个key和value组成,可以抽象为: 而所有数据结构的key的值都是任意合法的字符串,不同的数据结构的区别就在于value存储的值的不同而不同。比如,最简简单的String数据结构,其value为String,所以String可以表示为: 而Hash数据结构,其value为一个哈希列表,所以Hash可以表示为: 这里就列出String和Hash来讲解说明,关于更多数据结构的内部结构及详细操作,我们在之后的文章在再谈谈吧。欢迎大家关注我的公种浩【程序员追风】,文章都会在里面更新,整理的资料也会放在里面。 Redis的通用命令 Redis官网将Redis的命令按照功能划分为15个主题分组,其中,Kyes主题的命令对所有的数据结构都通用,因此,有必要在了解其他数据结构命令前好好学习一下。keyskeys命令的作用是列出Redis所有的key,该命令的时间复杂度为O(N),N随着Redis中key的数量增加而增加,因此Redis有大量的key,keys命令会执行很长时间,而由于Redis是单线程,某个命令耗费过长时间,则会导致后面的的所有请求无法得到响应,因此,千万不要在生产服务器上使用keys命令。 # key命令,时间复杂度为O(n) keys pattern #pattern可为一个包含匹配模式的字符串,可以包含*,+,?,[a-z]等模式。 示例 > mset hello_test1 one hello_test2 two helloa a hellob b > keys hello* 1) "hello_test1" 2) "hello_test2" 3) "helloa" 4) "hellob" > keys heelo? 1) "helloa" 2) "hellob" > keys hello[a-z] 1) "helloa" 2) "hellob" existsexists命令用于判断一个或多个key是否存在,判断多个key时,key之间用空格分隔,exists的返回值为整数,表示当前判断有多少个key是存在的。 # exists命令,时间复杂度O(1) exists key [key ...] 示例 > set test1 t1 > exists test1 test2 (integer) 1 #只有一个key存在 > exists test3 test3 (integer) 0 #key都不存在 deldel命令用于删除一个或多个key,多个key之间用空格分隔,其返回值为整数,表示成功删除了多少个存在的key,因此,如果只删除一个key,则可以从返回值中判断是否成功,如果删除多个key,则只能得到删除成功的数量。 # del命令,时间复杂度O(n) del key [key ...] 示例 > set test t > del test (integer) 1 > mset test1 2 test2 1 > del test1 test2 test3 (integer) 2 # 返回2,表示成功删除两个 #再次删除,返回0,因为删除成功个数为0 > del test1 test2 test3 (integer) 0 expire,pexpireexpire设置key在多少秒之后过期,pexpire设置key在多少毫秒之后过期,成功返回1,失败返回0。 # expire命令,时间复杂度为O(1) expire key seconds # pexpire命令,时间复杂度为O(1) pexpire key milliseconds 示例 > mset test test_value test1 test1_value > expire test 10 #设置10秒后过期 (integer) 1 > pexpire test1_value 10000 #设置10000毫秒(10s)后过期 (integer) 1 > expire ttt 100 (integer) 0 # 不存在的key,设置失败,返回0 ttl,pttlttl和pttl命令用于获取key的过期时间,其返回值为整型,代表的意义分为几种情况:当key不存在或过期时间,返回-2。当key存在且永久有效时,返回-1。当key有设置过期时间时,返回为剩下的秒数(pttl为毫秒数) # ttl命令,时间复杂度O(1) ttl key # pttl命令,时间复杂度O(1) pttl key 示例(ttl的演示,pttl类似) > set test test > expire test 100 > ttl test (integer) 98#返回剩下的秒数 > set test1 #永久有效 > ttl test1 (integer) -1 > ttl test2 (integer) -2#不存在或过期 #100秒后 > ttl test # test已过期 (integer) -2 expireat,pexpireat设置key在某个时间戳过期,expreat参数时间戳用秒表示,而pexpireat则用毫秒表示,与expire和pexpire功能类似,返回1表示成功,0表示失败。 #expireat命令,时间复杂度为O(1) expireat key timestamp #pexpireat命令,时间复杂度为O(1) pexpireat key milliseconds-timestamp 示例 > set test test > expireat test 1560873600 # 2019-06-19 00:00:00 (integer) 1 > set test1 test1 > pexpireat test1 156087360000 # 2019-06-19 00:00:00的毫秒表示 (integer) 1 persist移除key的过期时间,将key设置为永久有效,当key设置了过期时间,使用persist命令移除后返回1,如果key不存在或本身就是永久有效的,则返回0。 # persist命令,时间复杂度O(1) persist key 示例 > set test test > ttl test (integer) -1 # 表示永久有效 > persist test (integer) 0 # 对永久有效或不存在的key使用persist命令,返回 > expire test 10 (integer) 1 > persist test (integer) 1 type判断key是什么类型的数据结构,返回值为string,list,set,hash,zset,分别表示我们前面介绍的Redis的5种基础数据结构。geo,hyperloglog,bitmaps等复杂的数据结构,都是在这五种基础数据结构上实现,比如geo是zset类型,hyperloglog和bitmaps都为string。 # type命令,时间复杂度O(1) type key 示例 > set test test > type test string > hset htest test test > type htest hash 小结 上面介绍的是Redis中最常用的通用命令,虽然简单,但还是非常有必要掌握其用法和使用方面要注意的事项,其实,对于普通开发人员来说,很多时候,也只是使用这些基础通用的命令来操作Redis而已。 最后 欢迎大家一起交流,喜欢文章记得点个赞哟,感谢支持!

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

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

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

突破Java面试(23-8) - Redis哨兵主备切换的数据丢失问题

Github 1 数据丢失的两个场景 主备切换的过程,可能会导致数据丢失 1.1 异步复制 由于 master => slave的复制是异步的,所以可能有部分数据还没复制到slave,master就宕机,于是这些数据就丢失了 1.2 脑裂导致 脑裂,也就是说,某个master所在节点突然脱离正常的网络,无法和其他slave机器连接,但实际上master还运行着 此时哨兵可能就会认为master宕机了,然后开启选举,将其他slave切换成了master 这个时候,集群里就会有两个master,也就是所谓的脑裂 此时虽然某个slave被切换成了master,但是可能client还没来得及切换到新的master,还继续写向旧master的数据可能也丢失了 因此旧master再次恢复时,会被作为一个slave挂到新的master上去,自己的数据会被清空

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

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等操作系统。

用户登录
用户注册