首页 文章 精选 留言 我的

精选列表

搜索[安全加速 SCDN],共10000篇文章
优秀的个人博客,低调大师

DBA大牛告诉你,如何让MySQL语句执行加速

一打开科技类论坛,最常看到的文章主题就是MySQL性能优化了,为什么要优化呢?因为:数据库出现瓶颈,系统的吞吐量出现访问速度慢随着应用程序的运行,数据库的中的数据会越来越多,处理时间变长数据读写速度缓慢就是咱们说的“性能问题”,程序员一遇到它总是焦头烂额!今天我对MySQL优化总结了一些心得,希望在大家之后的工作中能有所有帮助!like 前导符优化like模糊查询形如'%AAA%'和'%AAA'将不会使用索引,但是业务上不可避免可能又需要使用到这种形式。通常的方法有两种:方案一:使用覆盖索引,即查询出的列只是用索引就可以获取,而无须查询表记录,这样也走了索引;方案二:使用locate函数或者position函数代替like查询,如table.field like '%AAA%'可以改为locate('AAA', table.field) > 0或POSITION('AAA' IN table.field)>0 in 和 exist 如果查询的两个表大小相当,那么用in和exists差别不大。如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in:例如:表A(小表),表B(大表) 示例一: 示例二: not in 和 not exist 如果查询语句使用了not in 那么内外表都进行全表扫描,没有用到索引;而not exist 的子查询依然能用到表上的索引。所以无论哪个表大,用not exists都比not in要快! 子查询优化 1)MySQL 5.6 之前的版本对子查询处理:不会将查询的结果集计算出来用作与其他表做join,outer表每扫描一条数据,子查询都会被重新执行一遍。2)MySQL 5.6 对子查询的处理 :将子查询的结果集 cache 到临时表里,临时表索引主要用来移除重复记录,并且随后也可能用于做join查询,这种技术在 5.6 中叫做物化的子查询,物化子查询可以看到select_type字段为subquery,而在 5.5 里为DEPENDENT SUBQUERY。3)子查询一般都可以改成表的关联查询,子查询会有临时表的创建、销毁,效率低下。 straight_join mysql hint:mysql 优化器在处理多表的关联的时候,很有可能会选择错误的驱动表进行关联,导致了关联次数的增加,从而使得sql语句执行变得非常的缓慢。这个时候需要有经验的DBA进行判断,选择正确的驱动表,这个时候 straightjoin 就起了作用了,下面我们来看一看使用straight_join进行优化的案例。尝试采用user表做驱动表,使用straight_join强制连接顺序: 高效分页 1)传统分页 select * from table limit 10000,10 2)limit原理Limit 10000,10偏移量越大则越慢 3)推荐分页 复杂关联SQL的优化 1、首先查询返回的结果集,通常查询返回的结果集很少,是有优化的空间的。2、通过查看执行计划,查看优化器选择的驱动表,从执行计划的rows可以大致反应出问题的所在。3、搞清各表的关联关系,查看关联字段是否有合适的索引。4、使用straight_join关键词来强制调整驱动表的选择,对优化的想法进行验证。5、如果条件允许,对复杂的SQL进行拆分。尽可能越简单越好。 force index 有时优化器可能由于统计信息不准确等原因,没有选择最优的执行计划,可以人为改变mysql的执行计划,例如: count的优化 按照效率排序的话,count(字段)),所以我建议你,尽量使用count()。 总结 MySQL 性能优化 最主要是理解 innodb 的索引原理及结构及 SQL 的执行计划,在不断累积经验的基础上熟能生巧。 喜欢文章记得点个赞,感谢支持!

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

腾讯开源 Lua 开发插件 sluaunreal,加速游戏业务开发

近日,腾讯开源了其用于游戏业务的 sluaunreal,该项目是适用于 unreal4 引擎的 Lua 开发插件,可让开发者高效地使用 Lua 进行业务开发。 项目地址:https://github.com/Tencent/sluaunreal 据项目主页介绍,sluaunreal作为 unreal 引擎的插件,通过 unreal 自带蓝图接口的反射能力,结合 libclang 静态 C++ 代码分析,自动化导出蓝图接口和静态 C++ 接口,提供给 Lua 语言,使得可以通过 Lua 开发 unreal 游戏业务逻辑,方便游戏高效迭代开发、上线热更新,同时支持 Lua 到 C++ 双向、Lua 到蓝图双向调用,大大提升开发速度。 具体功能如下: 通过蓝图反射机制,自动导出 unreal4 的蓝图 api 到 Lua 接口 支持以 Lua function 作为蓝图事件的回调函数 支持普通 C++ 函数和类,通过静态代码生成或者泛型代码展开导出到 Lua 接口,同时支持与蓝图接口交互 完整支持了 unreal4 的枚举,并导出了全部枚举值到 Lua 支持 FVector 等非蓝图类,同时支持操作符重载 支持扩展方法,将某些未标记为蓝图方法的函数,手动添加到蓝图类中,例如 UUserWidget 的 GetWidgetFromName 方法。 支持从蓝图中调入 Lua,并接收 Lua 返回值,支持任意参数类型和任意参数个数。 支持蓝图 out 标记参数,支持 C++ 非 const 引用作为 out 类型参数返回。

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

如何加速和提升单元测试覆盖率

方法体尽量小,一入一出,不要使用变量传递。将private方法可以改成友好型,就可以同包下单独方法进行用例测试。 用static方法,可以使用powermock,如不行,使用spring单例模式来避免static的使用。 尽量避免使用三目运算符,多IF条件判断,可以使用枚举+工厂类来规避,减少单元测试编写难度。 尽量不要自己写util方法,使用大基金会(apache、spring)、大厂(google、facebook、twitter、阿里等等)、github星级比较高的提供的util方法,copy Util方法的同时,同时copy他提供的单元测试。 数据库单元测试使用H2本地数据库Mock来加快速度,数据库中单元测试脚本要命中索引,不要进行一些无谓的性能开销。各层之间使用MockITO进行模拟测试。 Spring Controller测试可以使用WebApplicationContext、MockMvc来进行mock。 文件数据等测试,加快速度可以一次性加入内存跑。 activemq测试可以使用本地vm://localhost:61616来进行测试。 有些测试比较重要,但又影响速度(高并发,多线程,高计算,高频访问redis,memcached等等),可以考虑自己跑完后,直接@Ignore或者拆分小方法,慢的部分Ignore,毕竟单元测试为了代码质量,而不是为了覆盖率。

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

使用Spring Boot来加速Java web项目的开发

我想,现在企业级的Java web项目应该或多或少都会使用到Spring框架的。 回首我们以前使用Spring框架的时候,我们需要首先在(如果你使用Maven的话)pom文件中增加对相关的的依赖(使用gradle来构建的话基本也一样)然后新建Spring相关的xml文件,而且往往那些xml文件还不会少。然后继续使用tomcat或者jetty作为容器来运行这个工程。基本上每次创建一个新的项目都是这么一个流程,而我们有时候仅仅想快速的创建一个Spring web工程来测试一些东西,或者是希望能节省时间。 现在我们使用Spring Boot就可以快速的做到这些了。 我们先来看一个非常简单的使用Spring boot的例子吧: 1. 我们创建一个Maven工程,假定工程名字为spring-boot,然后我们在pom.xml文件中加入依赖: 1 2 3 4 5 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version> 1.0 . 2 .RELEASE</version> </dependency> 2. 新建一个Controller来接受处理我们的请求: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; /** * Created by wenchao.ren on 2014/4/26. */ @Controller @EnableAutoConfiguration public class SimpleController { @RequestMapping (value = "/hello" , method = RequestMethod.GET) @ResponseBody public String hello(){ return "hello world" ; } public static void main(String[] args) { SpringApplication.run(SimpleController. class , args); } } 相信大家已经看到了这个Controller有一个main方法,不要急,我们直接运行这个main方法: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | ' _| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v1. 0.2 .RELEASE) 2014 - 04 - 26 22 : 54 : 40.985 INFO 7236 --- [ main] c.r.spring.boot.SimpleController : Starting SimpleController on rollen with PID 7236 (D:\workspace\GitHub\SpringDemo\spring-boot\target\classes started by wenchao.ren in D:\workspace\GitHub\SpringDemo\spring-boot) 2014 - 04 - 26 22 : 54 : 41.008 INFO 7236 --- [ main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext @50de0926 : startup date [Sat Apr 26 22 : 54 : 41 CST 2014 ]; root of context hierarchy 2014 - 04 - 26 22 : 54 : 41.583 INFO 7236 --- [ main] .t.TomcatEmbeddedServletContainerFactory : Server initialized with port: 8080 2014 - 04 - 26 22 : 54 : 41.706 INFO 7236 --- [ main] o.apache.catalina.core.StandardService : Starting service Tomcat 2014 - 04 - 26 22 : 54 : 41.706 INFO 7236 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/ 7.0 . 52 2014 - 04 - 26 22 : 54 : 41.785 INFO 7236 --- [ost-startStop- 1 ] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 2014 - 04 - 26 22 : 54 : 41.785 INFO 7236 --- [ost-startStop- 1 ] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 779 ms 2014 - 04 - 26 22 : 54 : 42.055 INFO 7236 --- [ost-startStop- 1 ] o.s.b.c.e.ServletRegistrationBean : Mapping servlet: 'dispatcherServlet' to [/] 2014 - 04 - 26 22 : 54 : 42.057 INFO 7236 --- [ost-startStop- 1 ] o.s.b.c.embedded.FilterRegistrationBean : Mapping filter: 'hiddenHttpMethodFilter' to: [ /*] 2014-04-26 22:54:42.289 INFO 7236 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**/ favicon.ico] onto handler of type [ class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 2014 - 04 - 26 22 : 54 : 42.368 INFO 7236 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/hello],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.String com.rollenholt.spring.boot.SimpleController.hello() 2014 - 04 - 26 22 : 54 : 42.376 INFO 7236 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/webjars/**] onto handler of type [ class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 2014 - 04 - 26 22 : 54 : 42.377 INFO 7236 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**] onto handler of type [ class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 2014 - 04 - 26 22 : 54 : 42.447 INFO 7236 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : Registering beans for JMX exposure on startup 2014 - 04 - 26 22 : 54 : 42.459 INFO 7236 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 /http 2014 - 04 - 26 22 : 54 : 42.460 INFO 7236 --- [ main] c.r.spring.boot.SimpleController : Started SimpleController in 1.675 seconds (JVM running for 1.944 ) 2014 - 04 - 26 22 : 54 : 54.963 INFO 7236 --- [nio- 8080 -exec- 1 ] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring FrameworkServlet 'dispatcherServlet' 2014 - 04 - 26 22 : 54 : 54.963 INFO 7236 --- [nio- 8080 -exec- 1 ] o.s.web.servlet.DispatcherServlet : FrameworkServlet 'dispatcherServlet' : initialization started 2014 - 04 - 26 22 : 54 : 54.971 INFO 7236 --- [nio- 8080 -exec- 1 ] o.s.web.servlet.DispatcherServlet : FrameworkServlet 'dispatcherServlet' : initialization completed in 8 ms 会产生上面的输出,查看日志可以发现默认使用的是tomcat,端口绑定在8080,现在让我们来访问:http://localhost:8080/hello 就可以看到我们代码中输出的字样:hello world了。 回首这个过程,是不是相比于以前快速了许多呢 参考资料: 1. Spring Boot Reference Guide ============================================================================== 本文转自被遗忘的博客园博客,原文链接:http://www.cnblogs.com/rollenholt/p/3693055.html,如需转载请自行联系原作者

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

企业高效研发实践专场,加速研发效能体系升级

2017杭州云栖大会将再度在杭州云栖小镇起航,本届大会共有3场主论坛、22场前沿峰会、100+场分论坛、400+科技企业展,毫无疑问,这将是一场科技界的饕餮盛宴。阿里云云效将于10月14日下午13:30在大会现场开启“企业高效研发实践专场”,由来自光大银行、国泰产险、新光互联等企业客户,和阿里技术专家一起从企业实战经验出发,分享传统企业研发转型之路,及企业研发效能快速提升实践。 会议时间:10月14日13:30-17:40 会议地点:杭州云栖小镇国际会展中心E-1-3会议厅 议题简介: 主题一:传统银行测试转型实践 时间:13:30-14:00 演讲嘉宾:史新丽 光大银行测试经理 议题简介:分布式架构已成为金融业务系统建设大势所趋,迭代速度加快,原有的半自动IT支撑模式难以支撑业务的发展,云效客户光大银行代表,将分享如何使用云效产品提升企业

资源下载

更多资源
Mario

Mario

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

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文件系统,支持十年生命周期更新。

WebStorm

WebStorm

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

用户登录
用户注册