当前位置: 首页 > news >正文 常用网站建设技术有哪些企业年报信息公示流程 news 2025/10/31 11:43:01 常用网站建设技术有哪些,企业年报信息公示流程,深圳门户网站建设公司,58网络门店管理系统目录Mysqlgroup by和 distinct哪个性能好java觉得Optional类怎么样isEmpty和isBlank的用法区别使用大对象时需要注意什么内存溢出和内存泄漏的区别及详解SpringResource和Autowired的起源既生“Resource”#xff0c;何生“Autowired”使用Autowired时为什么Idea会曝出黄色警告… 目录Mysqlgroup by和 distinct哪个性能好java觉得Optional类怎么样isEmpty和isBlank的用法区别使用大对象时需要注意什么内存溢出和内存泄漏的区别及详解SpringResource和Autowired的起源既生“Resource”何生“Autowired”使用Autowired时为什么Idea会曝出黄色警告使用Resource时为什么Idea不会曝出黄色警告Autowired和Resource使用场景Mysql group by和 distinct哪个性能好 先说结论 在语义相同有索引的情况下 group by和distinct都能使用索引效率相同。因为group by和distinct近乎等价distinct可以被看做是特殊的group by。在语义相同无索引的情况下 distinct效率高于group by。原因是distinct 和 group by都会进行分组操作但group by在Mysql8.0之前会进行隐式排序导致触发filesortsql执行效率低下。而从Mysql8.0开始Mysql就删除了隐式排序所以此时在语义相同无索引的情况下group by和distinct的执行效率也是近乎等价的。 二者均可用时建议使用group by 相比于distinct来说group by的语义明确。且由于distinct关键字会对所有字段生效在进行复合业务处理时group by的使用灵活性更高group by能根据分组情况对数据进行更为复杂的处理例如通过having对数据进行过滤或通过聚合函数对数据进行运算。 再说过程 distinct的使用 单列去重时DISTINCT 关键词用于返回唯一不同的值。放在查询语句中的第一个字段前使用且作用于主句所有列。如果列具有NULL值并且对该列使用DISTINCT子句MySQL将保留一个NULL值并删除其它的NULL值因为DISTINCT子句将所有NULL值视为相同的值。 多列去重时distinct多列的去重则是根据指定的去重的列信息来进行即只有所有指定的列信息都相同才会被认为是重复的信息。 group by的使用 对于基础去重来说group by的使用和distinct类似 两者的语法区别在于group by可以进行单列去重group by的原理是先对结果进行分组排序然后返回每组中的第一条数据。且是根据group by的后接字段进行去重的。 distinct和group by原理 在大多数例子中DISTINCT可以被看作是特殊的GROUP BY它们的实现都基于分组操作且都可以通过松散索引扫描、紧凑索引扫描来实现 DISTINCT和GROUP BY都是可以使用索引进行扫描搜索的所以在一般情况下对于相同语义的DISTINCT和GROUP BY语句我们可以对其使用相同的索引优化手段来进行优化。 但对于GROUP BY来说在MYSQL8.0之前GROUP Y默认会依据字段进行隐式排序。filesort就是排序这个单词出现在explain中时一定要谨慎这是一个非常耗费性能的操作。 隐形排序 对于隐式排序我们可以参考Mysql官方的解释GROUP BY 默认隐式排序指在 GROUP BY 列没有 ASC 或 DESC 指示符的情况下也会进行排序。然而GROUP BY进行显式或隐式排序已经过时deprecated了要生成给定的排序顺序请提供 ORDER BY 子句。 所以在Mysql8.0之前,Group by会默认根据作用字段Group by的后接字段对结果进行排序。在能利用索引的情况下Group by不需要额外进行排序操作但当无法利用索引排序时Mysql优化器就不得不选择通过使用临时表然后再排序的方式来实现GROUP BY了。 且当结果集的大小超出系统设置临时表大小时Mysql会将临时表数据copy到磁盘上面再进行操作语句的执行效率会变得极低。这也是Mysql选择将此操作隐式排序弃用的原因。 基于上述原因Mysql在8.0时对此进行了优化更新从前Mysql5.7版本之前Group by会根据确定的条件进行隐式排序。在mysql 8.0中已经移除了这个功能所以不再需要通过添加order by null 来禁止隐式排序了但是查询结果可能与以前的 MySQL 版本不同。要生成给定顺序的结果请按通过ORDER BY指定需要进行排序的字段。 java 觉得Optional类怎么样 if(user!null){Address address user.getAddress();if(address!null){String province address.getProvince();} }java认为以上写法是比较丑陋的为了避免上述丑陋的写法让丑陋的设计变得优雅。JAVA8提供了Optional类来优化这种写法。 Optional可以理解为一个集合里面只有你的对象类似于ThreadLocal()并且它的用法也有些类似其实就是先set值然后再取值或者做一些判断和转化。 好像代码的本质无非就是 set、get、transf、judge Optional(T value),empty(),of(T value),ofNullable(T value) 作用类似于setorElse(T other)orElseGet(Supplier other)和orElseThrow(Supplier exceptionSupplier) 作用类似于judgemap(Function mapper)和flatMap(Function mapper)作用类似于transfisPresent()和ifPresent(Consumer consumer) : 类似于get // 应用场景1 public String getCity(User user) throws Exception{if(user!null){if(user.getAddress()!null){Address address user.getAddress();if(address.getCity()!null){return address.getCity();}}}throw new Excpetion(取值错误);}public String getCity(User user) throws Exception{return Optional.ofNullable(user).map(u- u.getAddress()).map(a-a.getCity()).orElseThrow(()-new Exception(取指错误)); }// 应用场景2 if(user!null){dosomething(user); }Optional.ofNullable(user).ifPresent(u-{dosomething(u); });// 应用场景3 public User getUser(User user) throws Exception{if(user!null){String name user.getName();if(zhangsan.equals(name)){return user;}}else{user new User();user.setName(zhangsan);return user;} }public User getUser(User user) {return Optional.ofNullable(user).filter(u-zhangsan.equals(u.getName())).orElseGet(()- {User user1 new User();user1.setName(zhangsan);return user1;}); }评价Optional大体属于链式编程虽然代码优雅了。但是逻辑性没那么明显可读性有所降低大家项目中看情况酌情使用。 isEmpty和isBlank的用法区别 StringUtils.isEmpty() 是否为空。可以看到 空格是会绕过这种空判断因为是一个空格并不是严格的空值会导致 isEmpty( )false StringUtils.isEmpty(null) true StringUtils.isEmpty() true StringUtils.isEmpty( ) false StringUtils.isEmpty(“bob”) false StringUtils.isEmpty( bob ) falseStringUtils.isBlank() 是否为真空值(空格或者空值) StringUtils.isBlank(null) true StringUtils.isBlank() true StringUtils.isBlank( ) true StringUtils.isBlank(“bob”) false StringUtils.isBlank( bob ) false评价统一使用isBlank 使用大对象时需要注意什么 一个根据客户号查询客户有多少订单的内部使用接口接口的返回是 List订单看起来没啥毛病对不对 一般来说一个个人客户就几十上百多一点的上千顶天了的上万个订单一次性拿出来也不是不可以。 但是有一个客户不知道咋回事特别钟爱我们的平台也是我们平台的老客户了一个人居然有接近 10w 的订单。 然后这么多订单对象搞到到项目里面本来响应就有点慢上游再发起几次重试直接触发 Full gc降低了服务响应时间。 所以经过这个事件我们定了一个规矩用 List、Map 来作为返回对象的时候必须要考虑一下极端情况下会返回多少数据回去。即使是内部使用也最好是进行分页查询。 list、map、json、等等可能很大的对象使用时一定要限制size。 内存溢出和内存泄漏的区别及详解 内存溢出Out Of Memory 是程序在申请内存时没有足够的内存空间供其使用。比如你需要10M的空间内存空间只剩8M这就会出现内存溢出。 以栈举例栈满时在做进栈必定产生空间溢出叫上溢栈空时在做退栈也产生空间溢出称为下溢。就是分配的内存不足以放下数据项序列,称为内存溢出。 内存泄漏 (Memory Leak) 是程序在申请内存后无法释放已申请的内存空间一次内存泄露危害可以忽略但内存泄露堆积后果很严重。memory leak最终会导致out of memory。 这块内存不释放就不能再用了就叫这块内存泄漏了。 内存泄漏分类 常发性内存泄漏。发生内存泄漏的代码会被多次执行到每次被执行的时候都会导致一块内存泄漏。偶发性内存泄漏。发生内存泄漏的代码只有在某些特定环境或操作过程下才会发生。常发性和偶发性是相对的。对于特定的环境偶发性的也许就变成了常发性的。所以测试环境和测试方法对检测内存泄漏至关重要。一次性内存泄漏。发生内存泄漏的代码只会被执行一次或者由于算法上的缺陷导致总会有一块仅且一块内存发生泄漏。比如在类的构造函数中分配内存在析构函数中却没有释放该内存所以内存泄漏只会发生一次。隐式内存泄漏。程序在运行过程中不停的分配内存但是直到结束的时候才释放内存。严格的说这里并没有发生内存泄漏因为最终程序释放了所有申请的内存。但是对于一个服务器程序需要运行几天几周甚至几个月不及时释放内存也可能导致最终耗尽系统的所有内存。所以我们称这类内存泄漏为隐式内存泄漏。 从用户使用程序的角度来看内存泄漏本身不会产生什么危害作为一般的用户根本感觉不到内存泄漏的存在。 真正有危害的是内存泄漏的堆积这会最终消耗尽系统所有的内存。从这个角度来说一次性内存泄漏并没有什么危害因为它不会堆积而隐式内存泄漏危害性则非常大因为较常发性和偶发性内存泄漏它更难被检测到。 内存溢出的原因及解决方案 修改JVM启动参数直接增加内存。 检查错误日志查看“OutOfMemory”错误前是否有其它异常或错误。 对代码进行走查和分析找出可能发生内存溢出的位置。 使用内存查看工具动态查看内存使用情况。 出现内存溢出和内存泄露重点排查几点 检查对数据库查询中是否有一次获得全部数据的查询。一般来说如果一次取十万条以上记录到内存就可能引起内存溢出。这个问题比较隐蔽在上线前数据库中数据较少不容易出问题上线后数据库中数据多了一次查询就有可能引起内存溢出。因此对于数据库查询尽量采用分页的方式查询查多少字段用多少字段。检查代码中是否有死循环或递归调用。检查是否有大循环重复产生新对象实体。检查List、MAP等集合对象是否有使用完后未清除的问题。List、MAP等集合对象会始终存有对对象的引用使得这些对象不能被GC回收。使用list.clear()或者map.clear() Spring Resource和Autowired的起源 提到Spring依赖注入大家最先想到应该是Resource和Autowired但是大家有没有想过Resource又支持名字又支持类型还要Autowired干嘛 是的没错他们两个其实还是有核心区别的了解一个东西绝不能只看其作用一定要关注其产生的背景从背景了解一件事才能知其然且知其所以然 Resource 于 2006年5月11日随着JSR 250 发布 官方解释是 Resource 注释标记了应用程序需要的资源。该注解可以应用于应用程序组件类或组件类的字段或方法。当注解应用于字段或方法时容器将在组件初始化时将所请求资源的实例注入到应用程序组件中。如果注释应用于组件类则注释声明应用程序将在运行时查找的资源。 可以看到Resource 其实类似一个定义讲述了要实现的功能。其他的任何组件或框架都可以自由实现该功能。 JSR是Java Specification Requests的缩写意思是Java 规范提案。是指向JCP(Java Community Process)提出新增一个标准化技术规范的正式请求。任何人都可以提交JSR以向Java平台增添新的API和服务。JSR已成为Java界的一个重要标准。 Autowired 于 2007年11月19日随着Spring2.5发布官方解释是 将构造函数、字段、设置方法或配置方法标记为由 Spring 的依赖注入工具自动装配。 可以看到Autowired 是 Spring按照Resource注解的功能自己实现的一个注解它们的功能非常相似。那么为什么spring已经支持了Resource又要自己搞个Autowired呢 对此Spring2.5的官方文档有一段相关的解释大概的意思是说Spring2.5 支持注解自动装配啦 现已经支持JSR-250 Resource 基于每个方法或每个字段的命名资源的自动装配但是只有Resource是不行的我们还推出了“粒度”更大的Autowired来覆盖更多场景了。 核心点Resource是java的原生注解Autowired是spring的自定义注解 既生“Resource”何生“Autowired” 由背景可知粒度就是Resource和Autowired的和核心区别了 Autowired类型注入Resource名字注入优先找不到名字找类型 论功能的“粒度”Resource已经包含Autowired了啊“粒度”更大啊。 此时很凌乱那么“粒度”到底指的是什么在混迹众多论坛后其中stackoverflow的一段话引起了我的注意 大概的意思是Spring虽然实现了两个功能类似的但是存在概念上的差异或含义上的差异 Resource 这按名称给我一个确定已知的资源。Autowired 尝试按类型连接合适的其他组件。 但是Resource当按名称解析失败时会启动。在这种情况下它会按类型解析引起概念上的混乱因为开发者没有意识到概念上的差异而是倾向于使用Resource基于类型的自动装配。 原来Spring官方说的“粒度”是指“资源范围”Resource找寻的是确定的已知的资源相当于给你一个坐标你直接去找。Autowired是在一片区域里面尝试搜索合适的资源。 所以上面的问题答案已经基本明确了。 Spring为什么会支持两个功能相似的注解呢 它们的概念不同Resource更倾向于找已知资源而Autowired倾向于尝试按类型搜索资源。 方便其他框架迁移Resource是一种规范只要符合JSR-250规范的其他框架Spring就可以兼容。 既然Resource更倾向于找已知资源为什么也有按类型注入的功能 个人猜测可能是为了兼容从Spring切换到其他框架开发者就算只使用Resource也是保持Spring强大的依赖注入功能。 使用Autowired时为什么Idea会曝出黄色警告 使用Autowired在属性上的时候Idea会曝出黄色的警告并且推荐我们使用构造方法注入而Resource就不会这是为什么呢警告如下 其实Spring文档中已经给出了答案主要有这几点 声明不了常量的属性 基于属性的依赖注入不适用于声明为 final 的字段因为此字段必须在类实例化时去实例化。声明不可变依赖项的唯一方法是使用基于构造函数的依赖项注入。容易忽视类的单一原则 一个类应该只负责软件应用程序功能的单个部分并且它的所有服务都应该与该职责紧密结合。如果使用属性的依赖注入在你的类中很容易有很多依赖一切看起来都很正常。但是如果改用基于构造函数的依赖注入随着更多的依赖被添加到你的类中构造函数会变得越来越大代码开始就开始出现“异味”发出明确的信号表明有问题。具有超过十个参数的构造函数清楚地表明该类有太多的依赖让你不得不注意该类的单一问题了。因此属性注入虽然不直接打破单一原则但它却可以帮你忽视单一原则。循环依赖问题 A类通过构造函数注入需要B类的实例B类通过构造函数注入需要A类的实例。如果你为类 A 和 B 配置 bean 以相互注入使用构造方法就能很快发现。依赖注入强依赖Spring容器 如果您想在容器之外使用这的类例如用于单元测试不得不使用 Spring 容器来实例化它因为没有其他可能的方法除了反射来设置自动装配的字段。 使用Resource时为什么Idea不会曝出黄色警告 在官方文档中我没有找到答案查了一些资料说是Autowired 是 Spring 提供的一旦切换到别的 IoC 框架就无法支持注入了. 而Resource 是 JSR-250 提供的它是 Java 标准我们使用的 IoC 容器应该和它兼容所以即使换了容器它也能正常工作。 Autowired和Resource使用场景 记住一句话就行Resource倾向于确定性的单一资源Autowired为类型去匹配符合此类型所有资源。 如集合注入Resource也是可以的但是建议使用Autowired。idea左侧的小绿标可以看出来不建议使用Resource注入集合资源本质上集合注入不是单一也是不确定性的。 Resource装配顺序 如果同时指定了name和type则从Spring上下文中找到唯一匹配的bean进行装配找不到则抛出异常。 如果指定了name则从上下文中查找名称id匹配的bean进行装配找不到则抛出异常。 如果指定了type则从上下文中找到类似匹配的唯一bean进行装配找不到或是找到多个都会抛出异常。 如果既没有指定name又没有指定type则自动按照byName方式进行装配如果没有匹配则回退为一个原始类型进行匹配如果匹配则自动装配。 Resource的作用相当于Autowired只不过Autowired按照byType自动注入。 文章转载自: http://www.morning.bbgn.cn.gov.cn.bbgn.cn http://www.morning.trpq.cn.gov.cn.trpq.cn http://www.morning.ljxps.cn.gov.cn.ljxps.cn http://www.morning.hxcrd.cn.gov.cn.hxcrd.cn http://www.morning.baohum.com.gov.cn.baohum.com http://www.morning.pqcbx.cn.gov.cn.pqcbx.cn http://www.morning.qyllw.cn.gov.cn.qyllw.cn http://www.morning.qsxxl.cn.gov.cn.qsxxl.cn http://www.morning.inheatherskitchen.com.gov.cn.inheatherskitchen.com http://www.morning.pqrhb.cn.gov.cn.pqrhb.cn http://www.morning.kbdrq.cn.gov.cn.kbdrq.cn http://www.morning.hmbtb.cn.gov.cn.hmbtb.cn http://www.morning.mqldj.cn.gov.cn.mqldj.cn http://www.morning.duqianw.com.gov.cn.duqianw.com http://www.morning.jbgzy.cn.gov.cn.jbgzy.cn http://www.morning.wbfg.cn.gov.cn.wbfg.cn http://www.morning.slzkq.cn.gov.cn.slzkq.cn http://www.morning.xbhpm.cn.gov.cn.xbhpm.cn http://www.morning.jtqxs.cn.gov.cn.jtqxs.cn http://www.morning.rfwqt.cn.gov.cn.rfwqt.cn http://www.morning.kxqpm.cn.gov.cn.kxqpm.cn http://www.morning.wtsr.cn.gov.cn.wtsr.cn http://www.morning.plqsc.cn.gov.cn.plqsc.cn http://www.morning.nwqyq.cn.gov.cn.nwqyq.cn http://www.morning.sbwr.cn.gov.cn.sbwr.cn http://www.morning.yhwmg.cn.gov.cn.yhwmg.cn http://www.morning.drcnf.cn.gov.cn.drcnf.cn http://www.morning.ntlxg.cn.gov.cn.ntlxg.cn http://www.morning.rsjf.cn.gov.cn.rsjf.cn http://www.morning.wrfk.cn.gov.cn.wrfk.cn http://www.morning.fqmbt.cn.gov.cn.fqmbt.cn http://www.morning.hjsrl.cn.gov.cn.hjsrl.cn http://www.morning.sh-wj.com.cn.gov.cn.sh-wj.com.cn http://www.morning.cljmx.cn.gov.cn.cljmx.cn http://www.morning.rbrd.cn.gov.cn.rbrd.cn http://www.morning.zwzwn.cn.gov.cn.zwzwn.cn http://www.morning.jwxmn.cn.gov.cn.jwxmn.cn http://www.morning.pnmgr.cn.gov.cn.pnmgr.cn http://www.morning.lzzqz.cn.gov.cn.lzzqz.cn http://www.morning.hclplus.com.gov.cn.hclplus.com http://www.morning.xnqjs.cn.gov.cn.xnqjs.cn http://www.morning.ywzqk.cn.gov.cn.ywzqk.cn http://www.morning.pfnlc.cn.gov.cn.pfnlc.cn http://www.morning.sacxbs.cn.gov.cn.sacxbs.cn http://www.morning.pflpb.cn.gov.cn.pflpb.cn http://www.morning.yhrfg.cn.gov.cn.yhrfg.cn http://www.morning.hdnd.cn.gov.cn.hdnd.cn http://www.morning.mmsf.cn.gov.cn.mmsf.cn http://www.morning.przc.cn.gov.cn.przc.cn http://www.morning.hfrbt.cn.gov.cn.hfrbt.cn http://www.morning.rdbj.cn.gov.cn.rdbj.cn http://www.morning.nzfqw.cn.gov.cn.nzfqw.cn http://www.morning.nsmyj.cn.gov.cn.nsmyj.cn http://www.morning.thbkc.cn.gov.cn.thbkc.cn http://www.morning.qngcq.cn.gov.cn.qngcq.cn http://www.morning.ppbrq.cn.gov.cn.ppbrq.cn http://www.morning.krnzm.cn.gov.cn.krnzm.cn http://www.morning.bnfjh.cn.gov.cn.bnfjh.cn http://www.morning.ggnrt.cn.gov.cn.ggnrt.cn http://www.morning.blqmn.cn.gov.cn.blqmn.cn http://www.morning.mtmph.cn.gov.cn.mtmph.cn http://www.morning.rrgqq.cn.gov.cn.rrgqq.cn http://www.morning.jgmdr.cn.gov.cn.jgmdr.cn http://www.morning.srndk.cn.gov.cn.srndk.cn http://www.morning.pjwfs.cn.gov.cn.pjwfs.cn http://www.morning.drcnn.cn.gov.cn.drcnn.cn http://www.morning.bnfjh.cn.gov.cn.bnfjh.cn http://www.morning.nfcxq.cn.gov.cn.nfcxq.cn http://www.morning.nlkhr.cn.gov.cn.nlkhr.cn http://www.morning.xfmzk.cn.gov.cn.xfmzk.cn http://www.morning.xgjhy.cn.gov.cn.xgjhy.cn http://www.morning.lfqtp.cn.gov.cn.lfqtp.cn http://www.morning.mjpgl.cn.gov.cn.mjpgl.cn http://www.morning.ckbmz.cn.gov.cn.ckbmz.cn http://www.morning.rzcmn.cn.gov.cn.rzcmn.cn http://www.morning.cplym.cn.gov.cn.cplym.cn http://www.morning.zpxwg.cn.gov.cn.zpxwg.cn http://www.morning.sqmbb.cn.gov.cn.sqmbb.cn http://www.morning.gczqt.cn.gov.cn.gczqt.cn http://www.morning.qkrgk.cn.gov.cn.qkrgk.cn 查看全文 http://www.tj-hxxt.cn/news/265086.html 相关文章: 国家企业信息公示系统全国seo怎么做自己的网站 药材公司网站建设模板科技网站设计公司 北京企业展示网站建设品牌广告公司网站建设 专做polo衫的网站淄博网站设计策划方案维护 网站的服务器网站建设需要会什么软件 做系统的图标下载网站wordpress md文件 东戴河网站建设php网站建设视频 免费入驻的外贸网站北京建设执业注册中心网站 青岛cms模板建站如何让百度搜到我的网站 南山电商网站建设wordpress如何链接 保健品网站模板首都博物馆 网站建设 360网站seo怎么做20个著名wordpress公司 影响网站排名的因素百度引擎搜索引擎入口 制作网站联系方式网页设计实训总结和体会 衡水做网站哪家好网页设计尺寸一般是多少 营销网站建设网站设计科技服务网站建设方案 在58同城做网站有生意吗合肥百姓网网站建设 苏州市建设中心网站京东的网站建设规划 中文网站建设模板下载怎么卸载安装的wordpress 百度app制作网站仿煎蛋 wordpress 永春县住房和城乡规划建设局网站为一个村做网站 义乌营销型网站建设wordpress商店会员管理 媒体网站推广法劳力士手表网站 凡科建站怎么导出网页wordpress 批量导入用户名 做物流的可以在那些网站找客户端wordpress手机版怎么用 oppo官方网站商业广告创意设计 制作网站的手机软件摄影手机网站模板 怎么接网站建设的单子知舟网站建设 烟台 网站设计响应式网页设计的理念 网站推广软文选天天软文一次性手机号短信验证码平台