首页 文章 精选 留言 我的

精选列表

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

Ballcat v0.4.0 发布,Java 快速开发脚手架

BallCat 0.4.0 已经发布,此版本更新详情如下: Warning mybatis-plus 升级,其对应一些 count 方法,返回值修改为了 Long 类型,项目中有使用的地方需要对应修改 默认登录时返回的 token 属性有所变更,原 roles 修改为 roleCodes,前端注意对应升级 websocket 默认使用 local 进行分发,这将导致集群状态下的数据推送异常,如需集群部署,请修改对应配置 websocket 相关接口 MessageSender 移除,该接口并入 MessageDistributor ,注意修改对应依赖引入类型 Added feat:ballcat-auth 授权服务器定制增强: 允许用户自定义 AccessTokenConverter,修改自省端点 /check_token 的返回值 允许用户定制授权处理器或者新增授权处理器,用户可以通过覆盖 TokenGrantBuilder 实现 允许用户添加自己的 AuthenticationProvider 方便处理自定义的 grant_type 添加 OAuth2ClientConfigurer 抽象接口,方便用户替换 ClientDetailsService 的配置方式 和 ballcat-system 模块解耦,方便复用 ballcat-auth 快速搭建一个授权服务器,例如 C 端用户 和 后台用户分离登陆系统,各搭建一套基于 OAuth2 的登录。 根据 OAuth2 规范,调整 check_token 端点响应,在 token 不正确时响应 200,响应体为 { active: false },而不是返回 400 feat:数据权限对于 jsqlparse 4.2 后,连表使用尾缀多个 OnExpression 方式的 SQL 解析支持 feat:角色添加 scopeResource 属性,以便支持自定义数据权限设置一些信息 feat:默认的 jackson 时间序列化添加了 Instant 类型支持,防止在使用时出现异常 InvalidDefinitionException: Java 8 date/time type java.time.Instant not supported by default Changed refactor:资源服务器对于客户端凭证生产的token 解析支持,对应的 userdetails 为 ClientPrincipal refactor:授权服务器自省端点的 scope 属性响应调整,根据 OAuth2 自省端点协议,scope 应返回字符串,用空格间隔 refactor:数据权限调整 问题修复: fix 数据权限在表名使用 `` 转义字符时失效的问题 性能优化:对于无需数据权限控制的 sql 在解析一次后进行记录,后续不再进行解析处理 结构调整:防止误用以及避免歧义,DataScopeHolder 修改为 DataScopeSqlProcessor 的私有内部类 refactor:SelectData 试图对象中的 value 修改为 Object 类型,selected 和 disabled 修改为 Boolean 类型 refactor:系统用户相关的 service 和 mapper 层,修改使用 Collection 接收参数,方便使用 refactor:TokenAttributeNameConstants 常量类拆分 refactor:UserInfoDTO 属性调整,新增了 menus 用于存储用户拥有的菜单对象集合,修改 roles 属性用于存储用户拥有的角色对象集合,原 roles 属性修改为 roleCodes 存储角色标识集合 refactor:为避免歧义,登录和自省端点返回信息中的属性名称 roles 修改为 roleCodes bug:修复使用 ballcat-spring-boot-starter-web 时,若没有引入 security 依赖则启动异常的问题 refactor: system 相关事件优化调整 用户组织变动时发布 UserOrganizationChangeEvent 事件 用户新建的事件由 UserChangeEvent 修改为 UserCreatedEvent system 的 event 类从 biz 迁移到 model 模块中 refactor:ballcat-common-websocket 移除 MessageSender 接口,将其并入消息分发器 MessageDistributor refactor:ballcat-spring-boot-starter-websocket 与 redis 解耦,将默认注册的消息分发器由 redis 改为 local,基于内存分发。可通过 ballcat.websocket.message-distributor 属性修改为 redis 或者 custom,值为 custom 表示,用户自己定制 MessageDistributor(如修改为使用 mq,可用性更高) ballcat: websocket: # 默认为 local 仅支持单节点使用,redis 基于 PUB/SUB 消息订阅支持了集群下的消息推送问题 message-distributor: redis # local | redis | custom refactor:ballcat-spring-boot-starter-redis 调整 AddMessageEventListenerToContainer 的注册方式,防止用户配置包扫描导致的加载顺序异常 refactor:有用户绑定组织时,不允许删除组织 Dependency Bump spring-boot from 2.4.8 to 2.5.5 Bump lombok from 1.18.16 to 1.18.20 Bump mybatis-plus 3.4.4 to 3.4.3.4 Bump mybatis 3.5.6 to 3.5.7 Bump jsqlparser 4.0 to 4.2 Bump flatten-maven-plugin from 1.2.5 to 1.2.7 Bump spring-javaformat from 0.0.27 to 0.0.28 Bump hutool from 5.7.3 to 5.7.12 Bump spring-boot-admin from 2.4.2 to 2.5.1 Bump dynamic-datasource-spring-boot-starter from 3.3.2 to 3.4.1

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

CakePHP 4.3.0-RC4 已发布,PHP 快速开发框架

CakePHP 是一个运用了诸如 ActiveRecord、Association Data Mapping、Front Controller 和 MVC(model–view–controller) 等著名设计模式的开源 Web 框架。CakePHP 用 PHP 编写,以 Ruby on Rails 的概念为模型,并在 MIT 许可下进行分发 CakePHP 4.3 是 4.0 的 API 兼容升级版, 4.3.0-RC4 是 CakePHP 4.3 的第 4 个候选版本,现已发布了。 RC4的主要更新: 在 QueryExpression 中加入新的 CASE 表达式构造器 QueryExpression::addCase() 已被弃用 关联 subquery 策略的载入记录:如果查询中不包括 ORDER BY ,就不再包含 LIMIT 子句 CakePHP 对 league/container 的依赖会跟^4.x冲突,这可能导致实现 ServiceProvider 时出现类型错误 新的fixture 系统对 API 接口和性能都进行了优化,这些改动可能不兼容上个版本的应用。 把 'lenses' 的单数形式修正为 'lens' 更新公告:https://github.com/cakephp/cakephp/releases/tag/4.3.0-RC4

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

Laravel v8.64.0 已发布,简洁的 PHP 开发框架

Laravel v8.64.0 已发布,主要更新如下: 添加 加入 reduceMany 到集合中(#39078) 加入Illuminate/Support/Stringable::stripTags()(#39098) 加入Illuminate/Console/OutputStyle::getOutput()(#39099) 加入lang_path辅助函数(#39099) 加入@aware blade 指令(#39100) 加入新事件JobRetrying(#39097) 在客户端响应中加入 throwIf 方法(#39148) 加入了 hasAny() 到集合中(#39155) 修复 修复了PHP 8.1 上没有前缀名的分组路由 修复了在 InteractsWithInput 中查找 token 令牌的代码(#39150) 变更 重构Illuminate/Log/LogManager::prepareHandler()(#39093) 渲染完成后刷新组件状态(04fc7c2) 忽略转储中的表空间(#39126) 通过刷新 SchemaState 进程来排除超时现象(#39139) 详情请查看更新公告

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

TDSQL MySQL索引分类,90%的开发都不知道

TDSQL MySQL的索引分类问题一直让人头疼,几乎所有的资料都会给你列一个长长的清单,给你介绍什么主键索引、单值索引,覆盖索引,自适应哈希索引,全文索引,聚簇索引,非聚簇索引等……给人的感觉就是云里雾里,好像MySQL索引的实现方式有很多种,但是都没有一个清晰的分类。所以本人尝试总结了一下如何给MySQL的索引类型分类,便于大家记忆,由于MySQL中支持多种存储引擎,在不同的存储引擎中实现略微有所差距,下文中如果没有特殊声明,默认指的都是InnoDB存储引擎。 索引从不同维度划分可以有很多种名称,但是需要明确一个问题——索引的本质是一种数据结构,其他索引的划分则是针对实际应用而言。 一、根据底层数据结构划分 索引是提高查询效率的数据结构,而能够提高查询效率的数据结构有很多,如二叉搜索树,红黑树,跳表,哈希表(散列表)等,而MySQL中用到了B+Tree和散列表(Hash表)作为索引的底层数据结构(其实也用到了跳表实现全文索引,但这不是重要考点,所以可以忽略)。 hash索引 MySQL并没有显式支持Hash索引,而是作为内部的一种优化。具体在Innodb存储引擎里,会监控对表上二级索引的查找,如果发现某二级索引被频繁访问,二级索引成为热数据,就为之建立hash索引。因此,在MySQL的Innodb里,对于热点的数据会自动生成Hash索引。这种hash索引,根据其使用的场景特点,也叫自适应Hash索引。 B+树索引 这个是MySQL索引的基本实现方式。除了全文索引、hash索引,Innodb、MyISAM的索引都是通过B+树实现的。 二、根据索引字段个数划分 为了能应对不同的数据检索需求,索引既可以仅包含一个字段,也可以同时包含多个字段。单个字段组成的索引可以称为单值索引,否则称之为复合索引,也称为组合索引或多值索引。 这个很好理解,假如我们有一张表,有三个属性,分别是 id,age 和 name 。假如在id上建立索引,那这就是单值索引;如果在 name 和 age 上建立索引,那这就是复合索引。 复合索引的索引的数据顺序跟字段的顺序相关,包含多个值的索引中,如果当前面字段的值重复时,将会按照其后面的值进行排序。 使用覆盖索引的前提是字段长度比较短,对于值长度较长的字段则不适合使用覆盖索引,原因有很多,比如索引一般存储在内存中,如果占用空间较大,则可能会从磁盘中加载,影响性能。 三、根据是否是在主键上建立的索引进行划分 主键索引 MySQL中是根据主键来组织数据的,所以每张表都必须有主键索引,主键索引只能有一个,不能为null同时必须保证唯一性。建表时如果没有指定主键索引,则会自动生成一个隐藏的字段作为主键索引。 辅助索引 如果不是主键索引,则就可以称之为非主键索引,又可以称之为辅助索引或者二级索引。主键索引的叶子节点存储了完整的数据行,而非主键索引的叶子节点存储的则是主键索引值,通过非主键索引查询数据时,会先查找到主键索引,然后再到主键索引上去查找对应的数据。 在这里假设我们有张表user,具有三列:ID,age,name,create_time,id是主键,(age,create_time,,name)建立辅助索引。执行如下sql语句: select name from user where age>2 order by create_time desc。 正常的话,查询分两步: 1.按照辅助索引,查找到记录的主键, 2.按照主键主键索引里查找记录,返回name。 但实际上,我们可以看到,辅助索引节点是按照age,create_time,name建立的,索引信息里完全包含我们所要的信息,如果能从辅助索引里返回name信息,则第二步是完全没有必要的,可以极大提升查询速度。 按照这种思想Innodb里针对使用辅助索引的查询场景做了优化,叫覆盖索引(在这里小声吐槽一下,不知道业界起这种名词干嘛,太容易引起歧义了,叫个索引覆盖查询不是更好吗)。 四、根据数据与索引的存储关联性划分 根据数据与索引的存储关联性,可以分为聚簇索引和非聚簇索引(也叫聚集索引和非聚集索引)。聚簇索引也叫簇类索引,是一种对磁盘上实际数据重新组织以按指定的一个或多个列的值排序。整个简洁的说法,这俩的区别就是索引的存储顺序和数据的存储顺序是否是关系的,有关就是聚簇索引,无关就是非聚簇索引。具体实现方式根据索引的数据结构不同会有所不同。下面以B+树实现的索引为例,举例来说明聚簇索引和非聚簇索引。 聚簇索引 Innodb的主键索引,非叶子节点存储的是索引指针,叶子节点存储的是既有索引也有数据,是典型的聚簇索引(这里可以发现,索引和数据的存储顺序是强相关的。因此是典型的聚簇索引),如图: 非聚簇索引 MyISAM中索引和数据文件分开存储,B+Tree的叶子节点存储的是数据存放的地址,而不是具体的数据,是典型的非聚簇索引;换言之,数据可以在磁盘上随便找地方存,索引也可以在磁盘上随便找地方存,只要叶子节点记录对了数据存放地址就行。因此,索引存储顺序和数据存储关系毫无关联,是典型的非聚簇索引,另外Inndob里的辅助索引也是非聚簇索引。 五、其他分类 唯一索引 顾名思义,不允许具有索引值相同的行,从而禁止重复的索引或键值。系统在创建该索引时检查是否有重复的键值,并在每次使用 INSERT 或 UPDATE 语句添加数据时进行检查, 如果有重复的值,则会操作失败,抛出异常。 需要注意的是,主键索引一定是唯一索引,而唯一索引不一定是主键索引。唯一索引可以理解为仅仅是将索引设置一个唯一性的属性。 全文索引 在MySQL 5.6版本以前,只有MyISAM存储引擎支持全文引擎。在5.6版本中,InnoDB加入了对全文索引的支持,但是不支持中文全文索引.在5.7.6版本,MySQL内置了ngram全文解析器,用来支持亚洲语种的分词。主要用来利用关键词查询文本,不是MySQL的主要面向场景,使用较少,这里就不展开讨论了。 六、总结 最后总结一张脑图方便记忆: 本文由博客群发一文多发等运营工具平台 OpenWrite 发布

资源下载

更多资源
腾讯云软件源

腾讯云软件源

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

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部分的功能。

用户登录
用户注册