context

Spring Boot集成SpringFox Swagger的Pageable参数问题

五迷三道 提交于 2020-01-07 15:29:14
Spring Boot项目中常使用springfox-swagger来生成REST API文档,使用springfox-swagger-ui进行API测试。 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.8.0</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.8.0</version> </dependency> REST API方法的参数含有org.springframework.data.domain.Pageable时,如未进行其它配置,Swagger根据接口Pageable的get/is方法生成了pageNumber、pageSize、offset、paged、unpaged、sort.sorted、sort.unsorted等参数,但实际上这些参数是无效的。 @ApiOperation(value = "Find airlines") @GetMapping(value = "/airlines") public

JavaScript之bind模拟实现

家住魔仙堡 提交于 2020-01-07 14:16:06
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> JavaScript之bind模拟实现 一句话介绍bind: bind() 方法会创建一个新函数,当这个新函数被调用时,bind()的第一个参数将作为他运行时的this,之后的一序列参数将会在传递的实参前传入作为他的参数 由此可以看出两个特点: 返回一个函数 可以传入参数 返回函数的模拟实现 第一个特点,我们举个例子(返回一个函数) var obj = { value : 1 } function foo(name,age){ console.log(name) console.log(age) console.log(this.value) } var foo1 = foo.bind(obj,'hy') foo1(18)// hy 18 1 模拟实现第一步 Function.prototype.bind2 = function(context){ var that = this return function(){ return that.apply(context) } } 之所以 returnthat.apply(context) ,是考虑到绑定函数可能有返回值。 var obj = { value : 1 } function foo(){ return this.value } var foo1 =

在实体框架中最快的插入方式

ε祈祈猫儿з 提交于 2020-01-07 11:48:03
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 我正在寻找插入实体框架的最快方法。 我之所以这样问,是因为您有一个活动的TransactionScope且插入量很大(超过4000个)。 它可能会持续10分钟以上(事务默认超时),这将导致事务不完整。 #1楼 这种组合足以提高速度。 context.Configuration.AutoDetectChangesEnabled = false; context.Configuration.ValidateOnSaveEnabled = false; #2楼 我同意亚当·拉基斯(Adam Rackis)的观点。 SqlBulkCopy 是将批量记录从一个数据源传输到另一个数据源的最快方法。 我用它来复制2万条记录,花费了不到3秒的时间。 看下面的例子。 public static void InsertIntoMembers(DataTable dataTable) { using (var connection = new SqlConnection(@"data source=;persist security info=True;user id=;password=;initial catalog=;MultipleActiveResultSets=True;App=EntityFramework")) {

Servlet 工作原理解析

情到浓时终转凉″ 提交于 2020-01-07 04:08:04
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 从 Servlet 容器说起 要介绍 Servlet 必须要先把 Servlet 容器说清楚,Servlet 与 Servlet 容器的关系有点像枪和子弹的关系,枪是为子弹而生,而子弹又让枪有了杀伤力。虽然它们是彼此依存的,但是又相互独立发展,这一切都是为了适应工业化生产的结果。从技术角度来说是为了解耦,通过标准化接口来相互协作。既然接口是连接 Servlet 与 Servlet 容器的关键,那我们就从它们的接口说起。 前面说了 Servlet 容器作为一个独立发展的标准化产品,目前它的种类很多,但是它们都有自己的市场定位,很难说谁优谁劣,各有特点。例如现在比较流行的 Jetty,在定制化和移动领域有不错的发展,我们这里还是以大家最为熟悉 Tomcat 为例来介绍 Servlet 容器如何管理 Servlet。Tomcat 本身也很复杂,我们只从 Servlet 与 Servlet 容器的接口部分开始介绍,关于 Tomcat 的详细介绍可以参考我的另外一篇文章《 Tomcat 系统架构与模式设计分析》。 Tomcat 的容器等级中,Context 容器是直接管理 Servlet 在容器中的包装类 Wrapper,所以 Context 容器如何运行将直接影响 Servlet 的工作方式。 图 1 . Tomcat

web前端入门到实战:实现图形验证码

不问归期 提交于 2020-01-07 03:05:57
什么是图形验证码 图形验证码是验证码的一种。验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”(全自动区分计算机和人类的图灵测试的缩写,是一种区分用户是计算机还是人的公共全自动程序。可以防止:恶意破解密码、刷票、论坛灌水,有效防止某个***对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试,实际上用验证码是现在很多网站通行的方式。 既然图形验证码是为了区分机器和人之间的操作,那么我们就可以在图形上绘制一个只有人可以解答的问题。比较常见的是在图片上生成文字验证码,然后用户输入图片上的文字吻合则验证通过。 虽然这种验证方法已经渐渐的被其他更先进的方法所淘汰了(图片上的文字依然可以被程序识别读取),并且前端生成验证码的方式相较于后端安全性不高,但我们的目的只是为了装x,提升程序的安全性只是附带的效果。 登录表单 首先我们需要在在登录表单上额外添加用于输入验证码的FormItem,并且给图形验证码提供一个canvas容器。有时候生成的验证码看不明白,因此需要给验证码添加点击事件用以切换验证码: web前端开发学习Q-q-u-n: ⑦⑧④-⑦⑧③-零①②,分享学习的方法和需要注意的小细节,不停更新最新的教程和学习方法(详细的前端项目实战教学视频)

spring之使用外部属性文件(连接数据库时使用)

自古美人都是妖i 提交于 2020-01-07 01:26:14
(1)在配置文件里配置Bean时,有时需要在bean的配置里混入系统部署的细节信息(例如,文件路径,数据源配置信息等),而这些部署细节实际上是需要和Bean文件分离。 (2)spring提供了一个PropertyPlaceHolderConfigure的BeanFactory后置处理器。这个处理器允许用户将Bean配置文件的部分内容转移到属性文件中,可以在bean配置文件里使用形式为${var}的变量。PropertyPlaceHolderConfigre从属性文件里加载属性,并使用这些属性来替换变量。 (3)spring还允许在属性文件中使用${propName},以实现属性之间的相互引用。 将c3p0和mysql驱动加入到build path中。 首先确保启动了mysql服务,然后在配置文件中引入context命名空间。 db.properties user=root password=123456 jdbcUrl=jdbc:mysql:///test driverClass=com.mysql.jdbc.Driver beans-properties.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi=

设计模式 行为型---策略模式

帅比萌擦擦* 提交于 2020-01-07 01:11:00
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 一、策略模式基本介绍 策略模式(Strategy Pattern)中,定义算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户; 这算法体现了几个设计原则。第一、把变化的代码从不变的代码中分离出来;第二、针对接口编程,而不是具体类(定义策略接口);第三、多用组合/聚合,少用继承(客户通过组合方式使用策略)。 二、策略模式各组成部分 三、策略模式和状态模式的区别 状态模式 策略模式 状态模式的类图和策略模式类似,并且都是能够动态改变对象的行为。 但是状态模式是通过状态转移来改变 Context 所组合的 State 对象,而策略模式是通过 Context 本身的决策来改变组合的 Strategy 对象。 状态模式:状态模式需要在 执行某一动作 中,将自身的状态属性更改为另一状态; 策略模式:策略模式是对 一系列策略的组合 ,通过不同的策略组合聚合成为不同的Context对象; 四、策略模式的注意事项和细节 策略模式的关键是:分析项目中的变化部分和不变部分; 策略模式的核心思想是:多用组合聚合,少用继承;用行为类,而不是行为的继承,更有弹性; 体现了“对修改关闭,对扩展开放”的原则,客户端增加行为不用修改原有代码,只要添加一种策略(或者行为)即可,避免使用多重转移语句(if..

Gin 路由解析

别等时光非礼了梦想. 提交于 2020-01-06 21:39:35
路由是web框架的核心功能。通常路由实现是这样的:根据路由里的 / 把路由切分成多个字符串数组,然后按照相同的前子数组把路由构造成树的结构;寻址时,先把请求的 url 按照 / 切分,然后遍历树进行寻址。 比如:定义了两个路由 /user/get , /user/delete ,则会构造出拥有三个节点的路由树,根节点是 user ,两个子节点分别是 get delete 。 上述是一种实现路由树的方式,且比较直观,容易理解。对 url 进行切分、比较,时间复杂度是 O(2n) 。 Gin的路由实现使用了类似前缀树的数据结构,只需遍历一遍字符串即可,时间复杂度为 O(n) 。 当然,对于一次 http 请求来说,这点路由寻址优化可以忽略不计。 Engine Engine 是 Gin 框架最重要的数据结构,它是框架的入口。我们通过 Engine 对象来定义服务路由信息、组装插件、运行服务。正如 Engine 的中文意思「引擎」一样,它就是框架的核心发动机,整个 Web 服务的都是由它来驱动的。 发动机属于精密设备,构造非常复杂,不过 Engine 对象很简单,因为引擎最重要的部分 —— 底层的 HTTP 服务器使用的是 Go 语言内置的 http server,Engine 的本质只是对内置的 HTTP 服务器的包装,让它使用起来更加便捷。 Gin 的 Engine 结构体内嵌了

20200105 Spring官方文档(Core 4)

旧巷老猫 提交于 2020-01-06 14:20:11
4.Spring表达式语言(SpEL) Spring表达式语言(简称 SpEL )是一种功能强大的表达式语言,支持在运行时查询和操作对象图。语言语法与Unified EL相似,但提供了其他功能,最著名的是方法调用和基本的字符串模板功能。 Spring Expression Language的创建是为了向Spring社区提供一种受良好支持的表达式语言,该语言可用于该版本中的所有产品。它并不直接与Spring绑定,可以独立使用。 4.1。评价(Evaluation) 以下代码介绍了SpEL API来评估文字字符串表达式 Hello World。 ExpressionParser parser = new SpelExpressionParser(); Expression exp = parser.parseExpression("'Hello World'"); String message = (String) exp.getValue(); 您最可能使用的SpEL类和接口位于 org.springframework.expression 包及其子包中,例如 spel.support 。 ExpressionParser 接口负责解析表达式字符串。 在前面的示例中,表达式字符串是由周围的单引号表示的字符串文字。 Expression 接口负责评估先前定义的表达式字符串。 分别调用

Spring 2.5

左心房为你撑大大i 提交于 2020-01-06 05:58:18
Spring 2.5 中除了提供 @Component 注释外,还定义了几个拥有特殊语义的注释,它们分别是:@Repository、@Service 和 @Controller。在目前的 Spring 版本中,这 3 个注释和 @Component 是等效的,但是从注释类的命名上,很容易看出这 3 个注释分别和持久层、业务层和控制层(Web 层)相对应。虽然目前这 3 个注释和 @Component 相比没有什么新意,但 Spring 将在以后的版本中为它们添加特殊的功能。所以,如果 Web 应用程序采用了经典的三层分层结构的话,最好在持久层、业务层和控制层分别采用 @Repository、@Service 和 @Controller 对分层中的类进行注释,而用 @Component 对那些比较中立的类进行注释。 在 一个稍大的项目中,通常会有上百个组件,如果这些组件采用xml的bean定义来配置,显然会增加配置文件的体积,查找以及维护起来也不太方便。 Spring2.5为我们引入了组件自动扫描机制,他可以在类路径底下寻找标注了 @Component,@Service,@Controller,@Repository注解的类,并把这些类纳入进spring容器中管理。它的作用 和在xml文件中使用bean节点配置组件时一样的。要使用自动扫描机制,我们需要打开以下配置信息: Java代码