首页 文章 精选 留言 我的

精选列表

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

CakePHP 4.0.4 发布,PHP 快速开发框架

CakePHP 4.0.4 发布了,更新内容如下: Bugfixes Http\Response::$_contentType被删除,因为它经常出错并且与 getHeader('Content-Type') 值不同步 NumberHelper::precision()添加了 $options 参数,以便更好地包装Number::precision() 将 timestamptimezone 映射添加到 FormHelper 和 DateTimeWidget 使用 disableErrorHandlerMiddleware() 时,IntegrationTestCaseTrait 再次引发异常 仅当步长小于 1 时,DateTimeWidget 才会以毫秒为单位显示 datetime-local 值 改进 API 文档 更多内容见更新说明: https://bakery.cakephp.org/2020/02/21/cakephp_404_released.html

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

Apache Flink 1.9.2 发布,流处理框架

Apache Flink 1.9.2 发布了,Apache Flink 项目的目标是开发一个流处理系统,以统一和支持多种形式的实时和离线数据处理应用程序以及事件驱动的应用程序。 此版本带来大量 bug 修复,摘取部分如下: Bug [FLINK-10377] - 删除 TwoPhaseCommitSinkFunction.notifyCheckpointComplete 中的前提条件 [FLINK-10435] - Ctrl + C 之后客户端偶尔会挂起 [FLINK-11120] - TIMESTAMPADD 函数无法正确处理 TIME [FLINK-11835] - ZooKeeperLeaderElectionITCase.testJobExecutionOnClusterWithLeaderChange 失败 [FLINK-12342] - Yarn 资源管理器获取太多的容器 [FLINK-12399] - FilterableTableSource 在作业运行时不使用过滤器 [FLINK-13184] - 启动 TaskExecutor 会阻止 YarnResourceManager 的主线程 [FLINK-13589] - 具有整个文件输入拆分的多字节定界符上的 DelimitedInputFormat 索引错误 [FLINK-13702] - 在 Travis 上 BaseMapSerializerTest.testDuplicate 失败 …… 更新说明:https://flink.apache.org/news/2020/01/30/release-1.9.2.html

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

CakePHP 4.0.2 发布,PHP 快速开发框架

CakePHP 4.0.2 发布了,更新内容如下: Bugfixes 如果为表+列生成的别名超过了数据库平台的最大标识符长度,则在开发模式下会引发异常 FormProtectionComponent 现在可以正确检查 unlockedFields 删除了 RequestHandlerComponent 中用于解析请求正文的弃用警告 改进了 API 文档示例的格式 ORM 更有效地遍历和转换查询对象,从而提高所有 ORM 操作的性能 使用 formatResults 并更改关联实体的关联不再导致在读取记录时将记录标记为脏记录 缓存和日志现在可以正确处理数字引擎名称 DebugKit 处于活动状态时发出的错误和警告现在引用正确的文件和行 对弃用的 zendframework 软件包的依赖关系现在引用了 Laminas 项目 现在可以将 contain()与 BelongsToMany 关联上的字段列表一起使用 会话 cookie 现在以 SameSite=Lax 代替严格,以便更好地模拟会话 cookie 在过去的工作方式 当元素位于子目录中时,视图元素缓存就可以使用 当title参数为字符串时,PaginatorHelper::first() 和 last() 将应用 url 选项 更新说明:https://bakery.cakephp.org/2020/01/11/cakephp_402_released.html

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

CakePHP 3.8.8 发布,PHP 快速开发框架

CakePHP 3.8.8 发布了,更新内容如下: Bugfixes 改进 API 文档 Text::slug()现在可以保留空格 修复了潜在的会话问题 SQLServerSchema 方言现在可以正确处理外键的限制模式 现在,匹配具有整数值的路由更具说服力 将Shims添加到 TestCase 中,以使getMock() 和getMockBuilder()不会在 PHP7.4 中发出弃用 修复了 FormHelper::dateTime()如何处理空值的回归问题 生成 URL 时,带有控制器和操作占位符的路由在未定义时不再剥离这些键 可选的路由占位符对于括号占位符和冒号占位符都可以一致地工作 更新说明:https://bakery.cakephp.org/2019/12/28/cakephp_388_released.html

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

CakePHP 3.8.7 发布,PHP 快速开发框架

CakePHP 3.8.7 发布了,更新内容如下: Bugfixes 如果未定义标题字符集,则Email::getHeaderCharset() 现在将电子邮件字符集用作后备。 添加了 IntegrationTestTrait::assertRedirectEquals(),可以更轻松地声明重定向值,而无需进行其他 Router 转换。 改进了文档块和类型注释。 如果文件名包含非 ascii 值,电子邮件附件现在可以在 Content-Disposition 标头中对文件名进行编码。 Http\Client 现在在其构造函数中接受 protocolVersion 选项。此选项使你可以控制所使用的 HTTP 版本。此更改使发出 HTTP2 请求更加简单。 当 ConsoleIntegrationTestTrait 用尽对交互式问题的答复时,改进了错误消息。 Http\Client 现在可以在 GET 请求中发送请求主体。 在测试矩阵中添加了 PHP7.4。 更新说明:https://github.com/cakephp/cakephp/releases/tag/3.8.7

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

Apache Flink 1.9.1 发布,流处理框架

Apache Flink 1.9.1 发布了,Apache Flink 项目的目标是开发一个流处理系统,以统一和支持多种形式的实时和离线数据处理应用程序以及事件驱动的应用程序。 此版本带来大量 bug 修复,摘取部分如下: Bug [FLINK-11630] - 本身终止时,TaskExecutor 不等待任务终止 [FLINK-13490] - 修复读取 JDBC 时一列值是否为空,以下值全部为空 [FLINK-13941] - 通过不清除 S3 中的小零件文件来防止数据丢失 [FLINK-12501] - AvroTypeSerializer 不适用于 avrohugger 生成的类型 [FLINK-13386] - 修复新的默认 Web UI 中的一些问题 [FLINK-13526] - 切换到不存在的目录或数据库会使 sql-client 崩溃 [FLINK-13568] - DDL 创建表不允许 STRING 数据类型 [FLINK-13805] - TaskManager 丢失时出现错误的Error Message [FLINK-14145] - CompletedCheckpointStore#getLatestCheckpoint(true) 返回错误的检查点 [FLINK-13059] - Cassandra 连接器在异常时泄漏信号量并在关闭时挂起 [FLINK-13534] - 无法查询带有小数列的 Hive 表 …… 更新说明:https://flink.apache.org/news/2019/10/18/release-1.9.1.html

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

go-netty 高性能网络框架

GO-NETTY github.com/go-netty/go-netty Introduction (介绍) go-netty is heavily inspired bynetty go-netty 大量参考了netty的设计并融合Golang本身的协程特性而开发的一款高性能网络库 Feature (特性) Extensible multi-transport protocol support, default support TCP, KCP, Websocket 可扩展多种传输协议,并且默认实现了 TCP, KCP, Websocket Extensible multi-codec support 可扩展多种解码器,默认实现了常见的编解码器 Based on responsibility chain model 基于责任链模型的流程控制 TODO (待完成) test case docs examples Examples (例子) chat_server (基于websocket的聊天室) file_server (基于http的文件浏览器) tcp_server (自义定tcp服务器) Usage (使用) 创建bootstrap, 用于提供服务或者对外建立连接 var bootstrap = netty.NewBootstrap() 配置服务连接的处理器 (同样还有一个ClientInitializer 对应客户端连接处理器配置) bootstrap.ChildInitializer(func(channel netty.Channel) { channel.Pipeline(). // 按照自定义协议解码帧(2字节的长度字段) AddLast(frame.LengthFieldCodec(binary.LittleEndian, 1024, 0, 2, 0, 0)). // 消息内容为文本格式(可自定义为 json,protobuf 等编解码器) AddLast(format.TextCodec()). // 处理消息 AddLast(LogHandler{"Server"}) }) 配置服务器(客户端)所使用的传输协议 bootstrap.Transport(tcp.New()) 开始监听端口并开始提供服务,直到收到指定信号后退出 bootstrap.Listen("tcp://0.0.0.0:6565").RunForever(os.Kill, os.Interrupt) LogHandler 处理器 type LogHandler struct { role string } func (l LogHandler) HandleActive(ctx netty.ActiveContext) { fmt.Println(l.role, "->", "active:", ctx.Channel().RemoteAddr()) // 给对端发送一条消息,将进入如下流程(视编解码配置) // Text -> TextCodec -> LengthFieldCodec -> Channel.Write // 文本 文本编码 组装协议格式(长度字段) 网络发送 ctx.Write("Hello I'm " + l.role) // 向后续的handler传递控制权 // 如果是最后一个handler或者需要中断请求可以不用调用 ctx.HandleActive() } func (l LogHandler) HandleRead(ctx netty.InboundContext, message netty.Message) { fmt.Println(l.role, "->", "handle read:", message) // 向后续的handler传递控制权 // 如果是最后一个handler或者需要中断请求可以不用调用 ctx.HandleRead(message) } func (l LogHandler) HandleInactive(ctx netty.InactiveContext, ex netty.Exception) { fmt.Println(l.role, "->", "inactive:", ctx.Channel().RemoteAddr(), ex) // 向后续的handler传递控制权 // 如果是最后一个handler或者需要中断请求可以不用调用 ctx.HandleInactive(ex) }

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

Riot 4.6.0 发布,JavaScript 的 MVP 框架

Riot 4.6.0 发布了,更新内容如下: 修复了在<template>标签中呈现文本表达式的情况下的小写问题 更新改进了核心代码、编译器和 dom 绑定 通过<slot>属性添加对 HOC(高阶组件)组件的支持,例如: Provider <hoc-component> <slot message={ message } theme={ theme }/> <script> export default { message: 'hello', theme: 'dark' } </script> </hoc-component> Consumer <app> <hoc-component> <!-- the {message} property will be provided by the <hoc-component> --> <h1>{ message }</h1> <!-- the {theme} property will be provided by the <hoc-component> --> <sidebar theme={ theme }/> </hoc-component> <!-- the {message} property is not available outside of the <hoc-component> --> <p>{ message }</p> </app> Riot 是一个简单而优雅的基于组件的 UI 库,为所有现代浏览器带来了自定义组件。其支持浏览器包括: 它的体积也很小,只有 6k:

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

PhalApi 2.8.1 发布,PHP 开源接口框架

PhalApi 2.8.1 [主要更新] 1、文件日志PhalApi\Logger\FileLogger区分隐式静默和显式异常两种模式,可通过\PhalApi\DI()->debug全局模式或初始化时指定调试模式。为调试模式时,若写入失败将500异常提示 1、文件配置PhalApi\Config\FileConfig区分隐式静默和显式异常两种模式,可通过\PhalApi\DI()->debug全局模式或初始化时指定调试模式。为调试模式时,若配置不存在将500异常提示 [辅助更新] [BUG修复] 1、URI路由匹配模式下默认接口读取不到 2、配置多个数据库时候, 调用get、update时会提示 dbs.tables should not be empty (issue 97)

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

CakePHP 3.8.3 发布,PHP 快速开发框架

CakePHP 3.8.3 发布了,这是一个维护版本,修复了以下问题: 添加了 IntegrationTestTrait::setUnlockedFields(),使测试中的 SecurityComponent 更简单 改进了 EntityInterface::setDirty() 的向前兼容注释 TestEmailTransport::send()的返回值与实际实现相匹配 修复了分页元标记中的双重转义 改进 API 文档 传递给 FunctionExpression 对象的子查询现在封装在括号中 Cake\Network\Socket现在可以连接到 unix 套接字 控制台错误代码现在约束在 1 到 244 之间 详情可查看发布公告。

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

Mockito框架里面的@Mock注解原理

@Mock注解就是其实就是用cglib的原理帮我们new了一个@Mock注解作用类的子类,什么意思呢,往下看 首先是Company,此时hh方法返回值是”字符串”, package com.one.util; import lombok.AllArgsConstructor; import lombok.Data; @Data @AllArgsConstructor public class Company { private String name; public String hh(){ return "字符串"; } } User类,mm()的返回值就是Company类的hh()返回值 package com.one.util; import lombok.AllArgsConstructor; import lombok.Data; @Data @AllArgsConstructor public class User { private Company company; private int age; public String mm(){ return company.hh(); } } 然后UserTest类如下,此时可以看到下面的Company上面放了@Mock注解,他的作用就是帮我们生产一个Company类的子类(假如是CompanyZi),然后使用多态赋值给下面的company(就像这样Company company=new CompanyZi),而且这个ComanyZi类里面的hh()方法的返回值是null,为什么这样说呢,我们看下面的结果 package com.one.util; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import static org.assertj.core.api.Assertions.catchThrowable; @RunWith(MockitoJUnitRunner.class) public class UserTest { @Mock private Company company; private User user; @Before public void setUp() { user = new User(company, 1); } @Test public void tt() { catchThrowable(() -> { String mm = user.mm(); System.out.println(mm); }); } } 此时可以看到结果是null 简单来说上面的代码可以变成下面这样 首先是Company,此时hh方法返回值是”字符串”, package com.one.util; import lombok.AllArgsConstructor; import lombok.Data; @Data @AllArgsConstructor public class Company { private String name; public String hh(){ return "字符串"; } } User类,mm()的返回值就是Company类的hh()返回值 package com.one.util; import lombok.AllArgsConstructor; import lombok.Data; @Data @AllArgsConstructor public class User { private Company company; private int age; public String mm(){ return company.hh(); } } 然后UserTest类如下,此时下面的类ComapanyZi就相当于上面的被@Mock注解的company的最终被new的对象,只不过@Mock注解帮我做了下面的CompanyZi这个类,此时可以看到下面的ComapanyZi返回的是null package com.one.util; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; import static org.assertj.core.api.Assertions.catchThrowable; @RunWith(JUnit4.class) public class UserTest { class ComapanyZi extends Company{ public ComapanyZi(String name) { super(name); } public String hh(){ return null; } } private User user; @Test public void name() { user=new User(new ComapanyZi("zi"),1); Throwable throwable = catchThrowable(() -> { System.out.println(user.mm()); }); } } 此时可以看到结果是null 我们可以验证上面的结论 就是给@Mock注解的类添加一个final,然后在运行的时候就报错了 Company类,此时可以看到Compan已经被final修改了 package com.one.util; import lombok.AllArgsConstructor; import lombok.Data; @Data @AllArgsConstructor public final class Company { private String name; public String hh(){ return "字符串"; } } User类 package com.one.util; import lombok.AllArgsConstructor; import lombok.Data; @Data @AllArgsConstructor public class User { private Company company; private int age; public String mm(){ return company.hh(); } } 然后测试如下,然后运行下面的name方法,然后结果如下所示 package com.one.util; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; @RunWith(MockitoJUnitRunner.class) public class UserTest { @Mock private Company company; private User user; @Before public void setUp(){ user = new User(company,1); } @Test public void name() { user.mm(); } } 此时可以看到报错了,说Company不能被final修改,者更好符号cglib的规则 原文链接

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

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

用户登录
用户注册