基础进阶
文章平均质量分 93
a
靈熙雲
你啊,只要有一口气儿在,你都要折腾。生命不息,折腾不止。不是有那么句话吗?
展开
-
几行事务代码,让我赔了16万
前几天在某平台看到一个技术问题,很有意思啊。涉及到的两个技术点,大家平时开发使用的也比较多,但是属于一个小细节,深挖下去,还是有点意思的。转载 2022-02-22 16:31:53 · 211 阅读 · 0 评论 -
别再说不会解决 “跨域“ 问题啦
什么是“跨源”JSONPCORSPostMessageWebsocketNginx 反向代理Node 中间件代理document.domain总结什么是“跨源”其实我们平常说的跨域是一种狭义的请求场景,简单来说就是“跨“过浏览器的同源策略去请求资“源”,所以我们叫它“跨源”也没啥问题。那么“跨源”,源是什么? 浏览器的同源策略什么是同源?const url = 'https://www.google.com:3000' 比如上面的这个 URL,协议是:https,域名是 www.goog转载 2022-01-10 12:52:23 · 235 阅读 · 0 评论 -
什么是进制?
进制也就是进位计数制,是人为定义的带进位的计数方法。对于任何一种进制如:X进制,就表示每一位上的数运算时都是逢X进一位。十进制是逢十进一,十六进制是逢十六进一,二进制就是逢二进一,以此类推,x进制就是逢x进位。原创 2021-10-27 17:45:56 · 1466 阅读 · 1 评论 -
Java中那18把“金刚“锁
乐观锁和悲观锁悲观锁悲观锁对应于生活中悲观的人,悲观的人总是想着事情往坏的方向发展。举个生活中的例子,假设厕所只有一个坑位了,悲观锁上厕所会第一时间把门反锁上,这样其他人上厕所只能在门外等候,这种状态就是「阻塞」了。回到代码世界中,一个共享数据加了悲观锁,那线程每次想操作这个数据前都会假设其他线程也可能会操作这个数据,所以每次操作前都会上锁,这样其他线程想操作这个数据拿不到锁只能阻塞了。在Java语言中synchronized和ReentrantLock等就是典型的悲观锁,还有一些使用了s转载 2021-09-16 15:24:43 · 237 阅读 · 0 评论 -
Java 提高代码效率小技巧
前言代码优化 ,一个很重要的课题。可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用,但是,吃的小虾米一多之后,鲸鱼就被喂饱了。代码优化也是一样,如果项目着眼于尽快无BUG上线,那么此时可以抓大放小,代码的细节可以不精打细磨;但是如果有足够的时间开发、维护代码,这时候就必须考虑每个可以优化的细节了,一个一个细小的优化点累积起来,对于代码的运行效率绝对是有提升的。代码优化的目标是:减小代转载 2021-09-15 15:37:41 · 226 阅读 · 0 评论 -
枚举,你了解它吗?
枚举是 JDK 1.5 新增的数据类型,使用枚举我们可以很好的描述一些特定的业务场景,比如一年中的春、夏、秋、冬,还有每周的周一到周天,还有各种颜色,以及可以用它来描述一些状态信息,比如错误码等。转载 2021-04-30 15:55:26 · 293 阅读 · 1 评论 -
java集合框架综述
目录一、集合框架图二、总体分析三、Collection接口1.List接口2.Set接口四、Map接口五、Iterator 与 ListIterator详解1.Iterator2.ListIterator六、异同点1.ArrayList和LinkedList2.HashTable与HashMap3.HashMap、Hashtable、LinkedHashMap和TreeMap比较4.HashSet、LinkedHashSet、TreeSet比较5、转载 2021-04-29 15:45:00 · 151 阅读 · 0 评论 -
Java 泛型 T,E,K,V,?,傻傻分不清?
目录前言泛型带来的好处泛型中通配符常用的 T,E,K,V,??无界通配符上界通配符 < ? extends E>下界通配符 < ? super E>?和 T 的区别Class和Class区别前言Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许开发者在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。泛型带来的好处在没...转载 2021-04-27 17:17:11 · 313 阅读 · 0 评论 -
String 长度有限制吗?是多少?
前言话说 Java 中 String 是有长度限制的,听到这里很多人不禁要问,String 还有长度限制?是的有,而且在 JVM 编译中还有规范,而且有的家人们在面试的时候也遇到了。本人就遇到过面试的时候问这个的,而且在之前开发的中也真实地遇到过这个 String 长度限制的场景(将某固定文件转码成 Base64 的形式用字符串存储,在运行时需要的时候在转回来,当时文件比较大),那这个规范限制到底是怎么样的,咱们话不多说先䁖䁖去。String首先要知道 String 的长度限制我们就需要知道转载 2021-04-26 14:58:56 · 866 阅读 · 0 评论 -
5 个常见的 String 面试题
目录1.判定定义为String类型的st1和st2是否相等,为什么2. 下面这句话在内存中创建了几个对象3、判定以下定义为String类型的st1和st2是否相等4. 判定以下定义为String类型的st1和st2是否相等5、判断以下st2和st3是否相等总结:这篇来看看关于 Java String 类的 5 道面试题,这五道题,我自己在面试过程中亲身经历过几道题目,...转载 2020-04-12 22:03:30 · 267 阅读 · 0 评论 -
面试:创建多少个线程合适?
目录为什么要使用多线程?并发编程适用于什么场景?CPU 密集型程序I/O密集型程序创建多少个线程合适?CPU 密集型程序创建多少个线程合适?I/O密集型程序创建多少个线程合适?面试小问小问一小问二增加 CPU 核数一定能解决问题吗?总结为什么要使用多线程?防止并发编程出错最好的办法就是不写并发程序既然多线程编程容易出错,为什么它还...转载 2020-04-10 10:04:23 · 253 阅读 · 0 评论 -
Insert into ... select语句把生产服务器炸了
目录前言事故发生的经过事故还原模拟迁移出现的原因解决方案最终的sql总结前言Insert into select请慎用。这天xxx接到一个需求,需要将表A的数据迁移到表B中去做一个备份。本想通过程序先查询查出来然后批量插入。但xxx觉得这样有点慢,需要耗费大量的网络I/O,决定采取别的方法进行实现。通过在Baidu的海洋里遨游,他发现了可以使用insert ...转载 2020-04-09 18:00:55 · 270 阅读 · 0 评论 -
自定义注解的简单使用
目录Java中的注解元注解@Retention@Target:@Documented :@Inherited(不常用)使用 元注解 来自定义注解 和 处理自定义注解Java中的注解Java中1.5中开始引入注解,我们最熟悉的应该是:@Override, 它的定义如下:/***Indicatesthatamethoddeclarationi...转载 2020-04-09 12:28:26 · 343 阅读 · 0 评论 -
为什么代码规范要求SQL语句不要过多的join?
送分题面试官:有操作过Linux吗?我:有的呀面试官:我想查看内存的使用情况该用什么命令我:free 或者 top面试官:那你说一下用free命令都可以看到啥信息我:那,如下图所示 可以看到内存以及缓存的使用情况total 总内存 used 已用内存 free 空闲内存 buff/cache 已使用的缓存 avaiable 可用内存面试官:那你知道怎...转载 2020-04-08 17:36:16 · 299 阅读 · 0 评论 -
SQL 中 JOIN 的各种用法
目录一、概要二、JOIN分类三、JOIN分类详解INNERJOIN:LEFTOUTERJOIN:LEFTOUTERJOIN-WHERENULL:RIGHTOUTERJOIN:RIGHTOUTERJOIN–WHERENULL:FULLOUTERJOIN:FULLOUTERJOIN–WHERENULL:CROSS...转载 2020-04-09 10:02:13 · 391 阅读 · 0 评论 -
一张900w的数据表,17s执行的SQL优化到300ms
目录前言证实注意:有一张财务流水表,未分库分表,目前的数据量为9555695,分页查询使用到了limit,优化之前的查询耗时16 s 938 ms (execution: 16 s 831 ms, fetching: 107 ms),按照下文的方式调整SQL后,耗时347 ms (execution: 163 ms, fetching: 184 ms);操作:查询条件放到子查...转载 2020-03-25 11:35:47 · 228 阅读 · 0 评论 -
常用分库分表方案汇总
目录一、数据库瓶颈1、IO瓶颈2、CPU瓶颈二、分库分表1、水平分库2、水平分表3、垂直分库(推荐)4、垂直分表(不推荐)三、分库分表工具四、分库分表步骤五、分库分表问题1、非partition key的查询问题前端上除了partition key,只有一个非partition key作为条件查询前端上除了partition key,不止一个...转载 2020-03-22 19:30:17 · 244 阅读 · 0 评论 -
什么是NIO?NIO的原理是什么机制?
NIO和IO到底有什么区别?有什么关系?首先说一下核心区别:NIO是以块的方式处理数据,但是IO是以最基础的字节流的形式去写入和读出的。所以在效率上的话,肯定是NIO效率比IO效率会高出很多。 NIO不在是和IO一样用OutputStream和InputStream 输入流的形式来进行处理数据的,但是又是基于这种流的形式,而是采用了通道和缓冲区的形式来进行处理数据的。 还有一点就是NI...转载 2020-03-09 11:18:56 · 453 阅读 · 0 评论 -
消灭 Java 代码的“坏味道”
目录让代码性能更高需要 Map 的主键和取值时,应该迭代 entrySet()应该使用Collection.isEmpty()检测空不要把集合对象传给自己集合初始化尽量指定大小字符串拼接使用 StringBuilderList 的随机访问频繁调用 Collection.contains 方法请使用 Set让代码更优雅长整型常量后添加大写 L不要使用魔法...转载 2020-02-27 19:57:48 · 236 阅读 · 0 评论 -
Serializable:明明就一个空接口!为什么还要实现它?
目录01、先来点理论02、再来点实战03、再来点注意事项04、再来点干货05、再来点甜点06、再来点总结对于 Java 的序列化,我一直停留在最浅显的认知上——把那个要序列化的类实现Serializbale接口就可以了。我不愿意做更深入的研究,因为会用就行了嘛。但随着时间的推移,见到Serializbale的次数越来越多,我便对它产生了浓厚的兴趣。是时候花点...转载 2020-02-27 15:35:51 · 183 阅读 · 0 评论 -
Java8新特性--Stream函数式编程
目录一、Stream是什么二、Stream语法讲解1、前提准备2、创建一个Stream方式一:通过一个集合创建Stream方式二:通过一个数组创建Stream方式三:通过Stream.of方式四:创建一个无限流3、使用Stream操作数据操作1:筛选和切片操作2:映射操作3:排序4、终止Stream操作1:匹配和查找操作2:归约操作3...转载 2020-02-27 11:48:21 · 581 阅读 · 0 评论 -
BigDecimal类
前言 我们都知道浮点型变量在进行计算的时候会出现丢失精度的问题。如下一段代码:输出: 可以看到在Java中进行浮点数运算的时候,会出现丢失精度的问题。那么我们如果在进行商品价格计算的时候,就会出现问题。很有可能造成我们手中有0.06元,却无法购买一个0.05元和一个0.01元的商品。 因为如上所示,他们两个的总和为0.060000...转载 2020-02-21 22:06:47 · 180 阅读 · 0 评论 -
原子操作类AtomicInteger详解
目录为什么需要AtomicInteger原子操作类?要是换成volatile修饰count变量呢?用了AtomicInteger类后会变成什么样子呢?非阻塞同步为什么需要AtomicInteger原子操作类? 对于Java中的运算操作,例如自增或自减,若没有进行额外的同步操作,在多线程环境下就是线程不安全的。num++解析为num=num+1,明显,这个操作不具...原创 2020-02-20 15:02:03 · 775 阅读 · 0 评论 -
了解 volatile
很早就接触了volatile,但是并没有特别深入的去研究它,只有一个朦胧的概念,就是觉得用它来解决可见性的,但可见性又是什么呢? 最近经过查阅各种资料,并结合自己的思考和实践,对volatile有了比较深刻的认识,在此总结并分享给大家。可见性如何理解可见性,还是来看个会出现死循环的例子:(注意:运行时请加上jvm参数:-server,while循环内不要有...转载 2020-02-20 14:54:51 · 163 阅读 · 0 评论 -
Java命名规范参考!
目录Java中的命名规范包命名类命名方法返回真伪值的方法用来检查的方法按需求才执行的方法异步相关方法回调方法操作对象生命周期的方法与集合操作相关的方法与数据相关的方法成对出现的动词变量&常量命名变量命名常量命名通用命名规则代码注解注解的原则注解格式包注解类注接属性注解方法注释构造方法注释...转载 2020-02-18 21:44:46 · 8833 阅读 · 0 评论 -
StringUtils--StringUtils中的判空、转换、移除、替换、反转常用方法
目录一、判空(这应该是最常用的)blank与empty以及whitesapce它们之间有何区别呢?isBlank,isNotBlank,isEmpty,isNotEmpty四个方法isAnyBlank,isNoneBlank,isAnyEmpty,isNoneEmpty四个方法二、转换(1)字符串首字母大小写转换(2)字符串整体大小写转换(3)字符串大小写互换(...原创 2019-05-01 11:14:51 · 5650 阅读 · 0 评论 -
StringUtils--StringUtils中的截取、去除空白、包含、查询索引常用方法
目录一、截取(1)根据指定位置截取字符串a)只指定了起始位置,则截取至字符串末尾:b)指定了起始位置和结束位置,则从起始位置开始截取到结束位置(但不包含结束位置):(2)根据指定的分隔符进行截取(不包含该分隔符):a)从分隔符第一次出现的位置向后截取:b)从分隔符最后一次出现的位置向后截取:c)从分隔符第一次出现的位置向前截取:d)从分隔符最后一次出现的位置向前...原创 2019-05-19 09:51:10 · 3436 阅读 · 1 评论 -
StringUtils.split()和string.split()的区别、string.split()的用法
目录场景具体例子StringUtils.split()和string.split()的区别string.split()的用法1、public string[] split(string regex);2、public String[] split(String regex,int limit);场景出于业务考虑,将多个字符串拼接起来时,使用的分隔符是;,;。如果...原创 2019-09-11 17:43:35 · 2637 阅读 · 0 评论