undertow

10 分钟搞明白 MySQL 是如何利用索引的!

左心房为你撑大大i 提交于 2021-01-08 09:33:26
一、前言 在MySQL中进行SQL优化的时候,经常会在一些情况下,对MySQL能否利用索引有一些迷惑。 譬如: MySQL 在遇到范围查询条件的时候就停止匹配了,那么到底是哪些范围条件? MySQL 在LIKE进行模糊匹配的时候又是如何利用索引的呢? MySQL 到底在怎么样的情况下能够利用索引进行排序? 今天,我将会用一个模型,把这些问题都一一解答,让你对MySQL索引的使用不再畏惧 二、知识补充 key_len EXPLAIN执行计划中有一列 key_len 用于表示本次查询中,所选择的索引长度有多少字节,通常我们可借此判断联合索引有多少列被选择了。 在这里 key_len 大小的计算规则是: 一般地,key_len 等于索引列类型字节长度,例如int类型为4 bytes,bigint为8 bytes; 如果是字符串类型,还需要同时考虑字符集因素,例如:CHAR(30) UTF8则key_len至少是90 bytes; 若该列类型定义时允许NULL,其key_len还需要再加 1 bytes; 若该列类型为变长类型,例如 VARCHAR(TEXT\BLOB不允许整列创建索引,如果创建部分索引也被视为动态列类型),其key_len还需要再加 2 bytes; 三、哪些条件能用到索引 首先非常感谢登博,给了我一个很好的启发,我通过_他的文章_,然后结合自己的理解,制作出了这幅图

JeecgBoot使用感受

£可爱£侵袭症+ 提交于 2021-01-07 00:54:24
JeecgBoot使用心得 ​ JeecgBoot 是一款基于代码生成器的低代码开发平台。采用前后端分离架构:SpringBoot2.x,Ant Design&Vue,Mybatis-plus,Shiro,JWT。强大的代码生成器让前后端代码一键生成,无需写任何代码! JeecgBoot引领新的开发模式(Online Coding模式-> 代码生成器模式-> 手工MERGE智能开发), 帮助解决Java项目70%的重复工作,让开发更多关注业务逻辑。既能快速提高开发效率,帮助公司节省成本,同时又不失灵活性! ​ JeecgBoot在提高UI能力的同时,降低了前后分离的开发成本,JeecgBoot还独创在线开发模式(No代码概念),一系列在线智能开发:在线配置表单、在线配置报表、在线图表设计、在线设计流程等等 1、技术架构 后端技术: SpringBoot + Mybatis-plus + Shiro_1.4.0 + Jwt_3.7.0 + Swagger-ui + Redis 前端技术: Ant-design-vue + Vue + Webpack 其他技术: Druid(数据库连接池)、Logback(日志工具) 、poi(Excel工具)、 Quartz(定时任务)、lombok(简化代码) 项目构建: Maven、docker 前端效果: 全新的swagger-ui界面——

Java 中的 "弱" 引用是什么?

≯℡__Kan透↙ 提交于 2021-01-06 09:13:17
作者:telami 来源:www.telami.cn/2017/weak-reference/ Java里一个对象obj被创建时,被放在堆里。当GC运行的时候,发现没有任何引用指向obj,那么就会回收obj对象的堆内存空间。 换句话说,一个对象被回收, 必须满足两个条件: (1)没有任何引用指向它 (2)GC被运行。 在实际开发中,我们可以通过把所有指向某个对象的referece置空来保证这个对象在下次GC运行的时候被回收,类似下面: Object c = new Car(); c=null; 但是,这样做是一件很繁琐并且违背GC自动回收原则的事。对于简单的情况, 手动置空是不需要程序员来做的, 因为在java中, 对于简单对象, 当调用它的方法执行完毕后, 指向它的引用会被从栈中弹出, 所以它就能在下一次GC执行时被回收了。 但是, 也有特殊例外. 当使用cache的时候, 由于cache的对象正是程序运行需要的, 那么只要程序正在运行, cache中的引用就不会被GC(或者说, cache中的reference拥有了和主程序一样的life cycle). 那么随着cache中的reference越来越多, GC无法回收的object也越来越多, 无法被自动回收。当这些object需要被回收时, 回收这些object的任务只有交给程序编写者了。然而这却违背了GC的本质

Java 14 Hotspot 虚拟机垃圾回收调优指南!

人走茶凉 提交于 2021-01-05 00:24:33
作者:大鹏123 www.cnblogs.com/sxpujs/p/12638114.html 优化目标与策略(Ergonomics) 垃圾收集器、堆和运行时编译器默认选择 G1(Garbage First)收集器 GC线程的最大值受限于堆大小和可用的CPU资源 初始堆空间为物理内存的1/64 最大堆空间为物理内存的1/4 分层编译器,同时使用C1和C2 可以将 Java HotSpot VM 垃圾收集器配置为优先满足两个目标之一:最大暂停时间和应用吞吐量。如果首选目标得到满足,收集器将尝试最大化其他目标。 最大暂停时间目标(Maximum Pause-Time Goal) 暂停时间是垃圾收集器停止应用程序并恢复不再使用的空间的持续时间。最大暂停时间目标的意图是限制这些暂停的最长时间。 使用命令行选项 -XX:MaxGCPauseMillis=指定最大暂停时间目标。这被解释为向垃圾回收器提示,需要的暂停时间为 nnn 毫秒或更短。垃圾收集器调整 Java 堆大小和其他与垃圾收集相关的参数,以使垃圾收集暂停时间小于 nnn 毫秒。最大暂停时间目标的缺省值随收集器的不同而变化。这些调整可能会导致垃圾收集更频繁地发生,从而降低应用程序的总吞吐量。但是,在某些情况下,暂停时间的预期目标无法实现。 吞吐量目标(Throughput Goal) 吞吐量目标是根据收集垃圾所花费的时间来度量的

spring boot 中容器 Jetty、Tomcat、Undertow

放肆的年华 提交于 2021-01-04 03:35:44
spring boot 中依赖tomcat <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> web 中默认对 tomcat 依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <version>2.1.2.RELEASE</version> <scope>compile</scope> </dependency> spring boot 中 依赖 jetty 去除tomcat < dependency > < groupId > org.springframework.boot </ groupId > < artifactId > spring-boot-starter-jetty </ artifactId > < version > 2.1.4.RELEASE </ version > </ dependency > spring boot 中依赖 Undertow 去除tomcat < dependency > <

Keycloak Redirect URI is adding port zero to the url

橙三吉。 提交于 2021-01-03 04:58:23
问题 Encountered redirect_uri error in keycloak. Found same issue logged at JIRA KEYCLOAK-7237, just want to check any work around? Anyone can help? Thank you in advance. 2018-06-30 11:34:13,996 WARN [org.keycloak.events] (default task-8) type=LOGIN_ERROR, realmId=Victz, clientId=portal, userId=null, ipAddress=, error=invalid_redirect_uri, redirect_uri=https://www.example.com:0/home I am using apache http reverse proxy running on centos7, wildly 10, keycloak 3.4.3. has also tried in below

Keycloak Redirect URI is adding port zero to the url

烂漫一生 提交于 2021-01-03 04:57:57
问题 Encountered redirect_uri error in keycloak. Found same issue logged at JIRA KEYCLOAK-7237, just want to check any work around? Anyone can help? Thank you in advance. 2018-06-30 11:34:13,996 WARN [org.keycloak.events] (default task-8) type=LOGIN_ERROR, realmId=Victz, clientId=portal, userId=null, ipAddress=, error=invalid_redirect_uri, redirect_uri=https://www.example.com:0/home I am using apache http reverse proxy running on centos7, wildly 10, keycloak 3.4.3. has also tried in below

为什么 MySQL 不推荐默认值为 null ?

不羁岁月 提交于 2020-12-16 15:13:13
通常能听到的答案是 使用了NULL值的列将会使索引失效 ,但是如果实际测试过一下,你就知道 IS NULL 会使用索引.所以上述说法有漏洞。 着急的人拉到最下边看结论 Preface Null is a special constraint of columns. The columns in table will be added null constrain if you do not define the column with “not null” key words explicitly when creating the table.Many programmers like to define columns by default because of the conveniences(reducing the judgement code of nullibility) what consequently cause some uncertainty of query and poor performance of database. NULL 值是一种对列的特殊约束,我们创建一个新列时,如果没有明确的使用关键字 not null 声明该数据列, Mysql 会默认的为我们添加上 NULL 约束。 有些开发人员在创建数据表时,由于懒惰直接使用Mysql的默认推荐设置

Idea远程调试undertow

旧城冷巷雨未停 提交于 2020-12-03 14:17:55
1.修改jfinal.sh 添加远程调试配置,端口5555可自行设置 JAVA_OPTS= " -Xdebug -Xrunjdwp:transport=dt_socket,suspend=n,server=y,address=5555 " 2.Idea配置remote,填入服务器ip,与端口5555 debug启动,出现如下提示,远程调试工作就完成了 服务器输出Listening for transport dt_socket at address: 5555 开心的断点调试啦 来源: oschina 链接: https://my.oschina.net/u/4418120/blog/3576072

怎么快速插入 100 条数据,用时最短

泄露秘密 提交于 2020-11-25 09:47:32
作者:孤独键客 https://juejin.im/post/5d255ab9e51d454f73356dcd 多线程插入(单表) 问:为何对同一个表的插入多线程会比单线程快?同一时间对一个表的写操作不应该是独占的吗? 答:在数据里做插入操作的时候,整体时间的分配是这样的: 链接耗时 (30%) 发送query到服务器 (20%) 解析query (20%) 插入操作 (10% * 词条数目) 插入index (10% * Index的数目) 关闭链接 (10%) 从这里可以看出来,真正耗时的不是操作,而是链接,解析的过程。 MySQL插入数据在写阶段是独占的,但是插入一条数据仍然需要解析、计算、最后才进行写处理,比如要给每一条记录分配自增id,校验主键唯一键属性,或者其他一些逻辑处理,都是需要计算的,所以说多线程能够提高效率。 多线程插入(多表) 分区分表后使用多线程插入。 预处理SQL 普通SQL,即使用Statement接口执行SQL 预处理SQL,即使用PreparedStatement接口执行SQL 使用PreparedStatement接口允许数据库预编译SQL语句,以后只需传入参数,避免了数据库每次都编译SQL语句,因此性能更好。 String sql = "insert into testdb.tuser (name, remark, createtime,