自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

轩1024的博客

人只有此生此世是不够的,还需要有一个诗意的世界。

  • 博客(81)
  • 资源 (2)
  • 问答 (1)
  • 收藏
  • 关注

原创 Java数组遍历方法归纳

在Java中,数组遍历可以使用多种方法。

2023-05-12 10:11:57 2753

原创 ES Script用法 ChatGTP 回答

ES Script

2023-05-12 09:48:53 140

原创 Postgresql自增主键和插入主键冲突

postgresql 自增主键 冲突

2023-01-11 11:47:11 1916

原创 采坑websocket总结(二)

socket.io

2022-08-12 17:41:52 766

原创 Java线程池的任务消息队列

并发编程 队列

2022-07-27 11:52:22 2203

原创 Java 线程池设置多大合适

线程池学习纪要

2022-07-25 17:24:56 2039

原创 采坑websocket总结

websocket的采坑之旅

2022-07-19 19:07:17 617

原创 Java 关于网段的一些操作和校验

判断指定IP地址是否在目标网段

2022-05-10 14:00:11 1134 3

原创 mongodb查询遇到的问题

mongodb查询性能优化

2022-05-07 14:42:24 606

原创 java输入IP地址判断地址类型

java实现校验ip地址类型

2022-05-06 17:44:30 905

原创 Java生成CSV文件时间格式不对问题

Java生成CSV文件时间格式不对问题

2021-12-31 17:46:30 2363 2

原创 GridFsTemplate store文件

public ObjectId store(InputStream inputStream, String originalFilename) { return gridFsTemplateFourth.store(inputStream, originalFilename); }一般只存文件,就可以这样。结果是:可以根据id查询,也可以根据文件名来查询。 public GridFSFile findScriptFile(String id...

2021-08-30 18:09:12 625

原创 代码复杂度分析——时间、空间复杂度

数据结构与算法本身解决的是快和省的问题。如何让代码运行的更快,如何更省空间有个重要的标准:复杂度分析大 O 复杂度表示法算法的执行效率,粗略的讲就是算法代码执行的时间,在我们不做精确监控统计,靠观察怎么分析代码执行的时间呢?int cal(int n) { int sum = 0;--------2 int i = 1;--------3 for (; i <= n; ++i) {--------4 sum = sum + i;--------5 }

2021-04-02 15:09:57 3036 2

原创 MySQL为什么表数据删掉一半,表文件大小不变?

RT先看一下数据库表的空间回收。这里只说InnoDB,InnoDB分两部分,表结构定义和数据。MySQL8.0之前表结构在.frm的文件中,8.0以后的版本允许放在系统表中,因为表结构定义占用空间其实很小。接下来重点看表数据。参数 innodb_file_per_table数据表可以存在共享表空间,也可以存单独的文件,由innodb_file_per_table这个参数控制,参数的值有两种:OFF:表示表数据存放在共享表空间,和数据字典放在一起 ON:表示表数据存储再.ibd后缀的文件中M.

2021-03-31 11:12:47 335

原创 MySQL的两个重要日志

DBA 同事说,MySQL 可以恢复到半个月内任意一秒的状态,惊叹的同时也好奇,到底是怎么做到的呢?一条查询SQL语句的执行过程是经过连接器(查询缓存不做考虑)——>分析器——>优化器——>执行器后到达存储引擎调用接口。那么,一条更新语句是如何执行的呢?连接器连接到数据库server,由于要更新所以查询缓存会被清空(这也是我们不用查询缓存的原因),然后到分析器分析语法词法,再到优化器,优化器决定索引的选择(这个地方很有趣,优化器会根据统计信息来选择索引,所以这个地方不一定会使用我们

2021-03-25 16:28:22 205 2

原创 谈谈Java类加载过程及对象创建过程

由一段代码带来的思考代码先看一段代码:public class Base{ private String baseName = "base"; public Base() { callName(); } public void callName() { System. out. println(baseName); } static class Sub extends Base {

2021-03-24 17:46:49 184

原创 InnoDB的change buffer

什么是change buffer?当MySQL要更新一个数据页的时候,如果这个数据页正好在内存中,就直接更新,而如果这个数据页不在内存中的话,在不影响数据一致性的前提下,InnoDB会将这些更新缓存到change buffer中,这样就能减少对磁盘的访问。当下次访问这个数据页的时候,将这个数据页加载到内存,然后执行change buffer中的操作。通过这个流程保证逻辑上的正确性。显然将更新操作缓存到change buffer可以减少磁盘IO,由于是缓存执行速度也有极大提升,而且是读入内存是要占用b..

2021-03-23 14:47:27 208

原创 ES关键字查询-特殊符号

项目中ES关键字查询遇到的坑,本来如果在创建关键字字段的时候就应该限制一些特殊符号的输入的,比如限制只能输入字母下划线和数字这种,不用允许输入特殊符号(@,$,*...),结果项目经理不让,说是限制了不好。那就只能后台对这些特殊符号进行转义。ES的javaAPI里面是有转义方法的,如下:String keyword = "title+-&&||!(){}[]^\"~*?:\\";keyword = QueryParser.escape(keyword);可以看看QueryP.

2021-03-02 18:29:49 6447 8

原创 ElasticSearch关键字查询忽略大小写

构建Mapping,keySet包含所有的字段 private XContentBuilder getMapping(Set<String> keySet) { XContentBuilder mapping = null; try { mapping = jsonBuilder() .startObject().startObject("properties"); Iterator<String> it = keySet.iterator();

2021-02-04 17:32:47 1718

原创 怎样理解消息队列

目录消息队列的作用哪些问题适合使用消息队列来解决1.异步处理2.流量控制更简单的流量控制3.服务解耦总结消息队列的作用自从有了系统之间的通信就有了消息队列的概念,由此可见,消息对队列是最古老的中间件之一。想给消息队列下个定义并不容易。顾名思义,它是用来发送消息的,当然不只是发送消息这么简单。生产一块巧克力为例研磨可可粉, 可可粉加热加入糖变成巧克力酱,倒入模具 冷却后取出就是巧克力了为了增加生产效率,以上步骤可以分工制作,研磨的研磨,加糖加热..

2020-12-18 14:41:47 212

原创 事务隔离级别总结

事务的隔离性提起事务的隔离性,首先想到的是事务的四大特性ACID。那么现在要总结的就是隔离性I,当多个事务同时进行时,会出现:为了解决这些问题,就有了事务隔离级别的概念。事务隔离级别...

2020-09-25 11:12:20 94

原创 ThreadLocal原理分析及内存泄漏解决方法

目录并发问题ThreadLocal实现原理准备引用(reference)1. 强引用(Strong Reference)2. 软引用(Soft Reference)3. 弱引用(Weak Reference)4. 虚引用ThreadLocal原理内存泄漏避免内存泄漏的方法总结并发问题回顾之前写过的关于多线程并发的博客,并发问题的原因主要有三种:CPU缓存导致的可见性问题 JVM优化导致的CPU指令执行顺序问题 线程切换导致的原子性问题...

2020-09-21 17:12:56 636

原创 ThreadLocal如何在父子线程及线程池中传递

子线程如何获取父线程的本地变量?子线程提交任务时,获取父线程ThreadLocal的值case之前遇到过多个线程都需要使用SimpleDataFormat对象来做日期格式化,当时第一时间想到的就是定义一个static的SimpleDataFormat让多线程共享。但是很显然这样做就是在写bug,因为SimpleDataFormat不是线程安全的,势必会出现并发问题。解决问题解决并发问题有很多种悲观锁:使用简单,但锁粒度比较大,对读和写一视同仁 乐观锁:写少读多 线程本地变量:提供

2020-09-21 11:20:29 1753

原创 浅谈数据库文件存储原理

数据库文件存储原理在说数据库存储原理之前,我们不妨先思考个问题。假如我们是数据库存储引擎的设计者,我们会如何在磁盘上存储数据。当然存储引擎是个很复杂的东西,但我们可以简单的思考数据的存储方式,用什么样的数据结构比价合适,合理,性能最好。我们学过很多数据结构:集合,数组,链表,hash表,树,堆,栈等等等等。它们是我们存储数据的手段。之前学习Python的时候,有本书叫做《Python学习手册》刚开始它就让我们学习实现写一个数据库。刚开始用元祖,列表这些简单的数据结构,后面用到复杂的字典类型。我们发现

2020-09-18 16:48:52 2463

原创 关于SQL子查询

什么是SQL子查询子查询就是查询的嵌套,有时候我们无法直接在数据表中得到查询结果,这时候将一个查询(这就是子查询)的结果集当做主查询的查询对象,这样就支持了比较复杂的查询,有点面向对象的意思。子查询分为关联子查询和非关联子查询 子查询有一些关键词方便对子查询的结果进行比较(存在性检测子查询EXISTS,集合比较子查询IN、SOME、 ANY 和 ALL) 子查询可以当做主查询的列关联子查询和非关联子查询的判断依据是子查询是否执行多次下面以NBA(脚本)为例,创建几张表:球员表:

2020-09-18 16:44:22 802

原创 常用的SQL函数介绍

什么是 SQL 函数?首先说什么是函数。函数就是我们用的比较多的,通用的代码封装起来。用的时候只需要通过函数名称并输入参数的方式来调用。这样可以降低代码的耦合性,减少代码的冗余,提高编程的灵活度和效率。SQL中的函数一般都是加载到数据之后,对结果数据进行操作,得到我们想要的值。内置的 SQL 函数都包括哪些?SQL有内置函数,也可以自定义函数,内置函数一般对不同的数据库具有通用性内置函数分类:算术函数 字符操作函数 日期操作函数 转换函数算术函数举几个例子:SE

2020-09-09 15:34:10 2329

原创 MySQL排序(Order By)为什么要使用索引

MySQL排序(Order By)为什么要使用索引1. WHERE条件句中使用索引以查询一条程咬金 记录为例:创建索引先创建一个二级索引不选择索引字段做条件查询key=null 执行计划中没有用到索引 rows=69 全表扫描使用索引字段作为条件查询key=name_index 使用到索引name_index rows=1对比结论在选条件语句中不加索引字段,索引会失效,包括聚簇索引。 使用的索引避免了全表扫描2. Ord...

2020-09-08 15:22:37 12491 5

原创 MySQL常用关键字使用方法(随时补充)

MySQL常用关键字下面列举一些常见的关键字使用方法,及注意事项。去重DistinctDISTINCT+列名,表示按该列去重 DISTINCT 需要放到所有列名的前面,否则会报错 DISTINCT 后面加多列,其实是对后面所有列名的组合进行去重排序Group By排序的列名:ORDER BY 后面可以有一个或多个列名,如果是多个列名进行排序,会按照后面第一个列先进行排序,当第一列的值相同的时候,再按照第二列进行排序,以此类推。 排序的顺序:ORDER BY 后面可以注明排序规则,AS

2020-09-08 11:22:18 961

原创 MySQL索引失效5种情况

MySQL索引失效5种情况:1.索引字段在查询时存在隐式的类型转换比如student表有字段phone定义为vachar类型,且定义为辅助索引,当查询语句写成:select id,name from student where phone =18628562245此时用explain 执行这条语句会发现存在Key = NULL说明没有用到phone这个索引2.对索引字段使用LIKE左模糊匹配,左右模糊匹配但是使用右模糊匹配是没有问题的3. 对索引字段进行表达式计算如age.

2020-09-01 11:48:25 809

原创 Java获取00:00:00和23:59:59时间戳工具类

项目中业务用到了获取当天00:00:00和23:59:59时间戳,网上查了下好多实现都不满意,而且都抄来抄去的,还是自己研究写一个。可能还有更好的实现方式,以后再补充。public class TimeUtil { /** * 获取当天00:00的时间戳 * * @return 时间戳 */ public static Long getStartTime() { Calendar calendar = Calendar.get.

2020-08-28 11:48:40 2847 1

原创 伤透脑筋的CPU 上下文切换

目录前言上下文切换1.什么是上下文2.CPU上下文切换进程上下文切换线程上下文切换1.同进程的线程上下文切换2.不同进程的线程上下文切换中断上下文切换前言很多像Kafka这种在磁盘上存取文件的系统来说,底层都喜欢用个0拷贝,概念都懂,其实就是避免了用户态和内核态的上下文切换。并不是真正意义上的0拷贝。上一篇写了平均负载,有个疑问,为什么出于准备运行和等待I/O的进程会增大系统负载呢?他们都还没用到CPU吧?其实负载之所以高,就是因为上下文切换导致的。..

2020-08-24 17:39:10 164

原创 理解“平均负载”

前言发现系统变慢的时候我们通常会用两个命令来查看系统资源使用情况 top或者uptime输入uptime时$ uptime02:34:03 up 2 days, 20:14, 1 user, load average: 0.63, 0.83, 0.88这一行信息是什么意思呢?02:34:03 //当前时间up 2 days, 20:14 //系统运行时间1 user //正在登录用户数load aver

2020-08-24 15:20:53 204

原创 为什么PrepareStatement性能更好更安全?

行业现实在于面试要求大而全,实际工CRUD。以前我也觉得什么数据库搭建,什么性能优化,什么缓存。都是DBA要考虑的,我们只管CRUD。什么?你们公司连DBA都没有?太落后了吧?现在发现,以前都是井底之蛙,没机会遇到性能问题,而不是没有性能问题。现在基本上出去面试,SQL优化,数据库优化,JDBC底层原理都是硬性指标了。闲话不扯,主题开始吧。我们Java用SQL操作数据库,有两种方式:直接提交用Statementstatement.executeUpdate("UPDATE Users .

2020-08-14 16:14:18 563

原创 你准备好脱离“内卷化怪圈”了吗?

今天早上利用起床洗漱的功夫听了极客时间《卖桃者说》专栏,学到一个新的词,叫做“内卷化怪圈”。当然,这不是一个新词,它源于60年代末一个叫做利福德.盖尔茨的文学家。意思大概是说“长期停留在一种简单重复,没有进步的轮回状态”。陷入怪圈导致的严重后果就是你的生产力变弱,生产力变弱导致竞争力会变差,随时会面临被淘汰的风险。有时候会有这样的错觉,忙一点好,很充实。有没有经历过这样的事。微信朋友圈看到,自己或者别人经常发,“今天加班了,又是努力的一天”,类似想法。如果仔细想想,复盘一下“加班了”,“努力”的

2020-08-03 12:48:42 388

原创 Magic Number 校验Excel文件(Java)

工作中遇到需要用poi解析导入的Excel文件的case,之前同事写的,我发现他做文件格式校验只是做了文件名后缀的解析。这样会有个问题,就是其他格式的文件是可以修改后缀的,这样就可以通过校验,做解析。虽然也有异常处理,但是我们无法定位到这是因为文件格式不对抛的异常。所以我在网上查了下,发现一个校验方法,就是通过魔数(Magic Number)。最著名的魔数就是平方根倒数算法,雷神之锤:i = 0x5f3759df - ( i >> 1 ); 我也不懂啥意思,先不管。我们平时写代码你在

2020-07-31 17:02:37 997 5

原创 Kafka集群搭建参数配置——第一弹

写在最前面最近在极客时间学习Kafka核心技术与实战,在这里写一写学到的东西,就当做是学习笔记。不想做搬运工,还是要按自己的理解来写,这样学到的才是自己的知识。在网上找Kafka集群搭建,很多文章大概都是手把手教你从安装JDK开始一步一步到测试数据,过程很详细,但是其中涉及到很多细节,比如说一些参数配置,作者都是列出一系列参数然后注明都是做什么的,很少有人讲这些参数为什么要这样配。如果你不知道为什么,那你肯定就不会去调整参数。接下来我会把我所学到的总结出来。Kafka集群搭建最重要的参数首先

2020-07-31 16:52:25 298

原创 浅谈Java反射机制(类加载器)

学习java的都应该知道java有个高级特性,反射(reflection)。如果去读Spring框架源码,你会发现它的应用真的是无处不在。因为Spring核心功能IOC(控制翻转)就是用反射来实现的,不然我们不new,你以为对象是哪里来的。有这么一个场景:在程序运行时,你首先根据某个Class对象里的构造方法或者一般方法,然后考虑要实例化这个对象来用。 另一个场景是:我们需要对某个Class对象里面的方法,变量进行自检。那么我们就使用反射机制来实现。但反射机制是如何实现的呢?我有点好奇。百度一下Ja

2020-07-28 21:31:47 397

原创 Kafka集群搭建解决方案总结

上篇总结了kafka各个版本的差异,了解了改怎样正确选择kafka版本。下面从操作系统,磁盘,带宽各方面来做一下总结。作为一个集群,当然首先是集群各个节点的机器。平时学习中,我们都是用单台机器做的伪集群。伪集群做测试学习还可以,生产上,绝对是要用真实机器的。操作系统我们知道Kafka是由Scala和Java开发的,都是JVM系的语言。而且昨晚Javaer都知道,只要他们编译成*.class字节码后就可以在任何装了虚拟机的操作系统上运行,这叫做跨平台,这叫做Compileonceandrun...

2020-07-27 17:42:55 197

原创 JVM知识脑图分享

Radis 创作者大神Antirez辞职了,他说世界那么大,我想去看看(大概就是这意思),真羡慕,撑了这么久,功成身退,没有遗憾,这是每个程序猿都有的梦想吧。大神曾经说过,把事情搞复杂的程序员不是好程序猿。事实就是如此,其实很多复杂的东西都是由最简单的东西组织而成的,所以搞懂最基础的东西,你会发现什么新技术,新特性,再炫再酷,它的本质其实都没变。当然道理大家都懂,笔者也懂,并且正在努力奋斗的路上挣扎。以前我是对JVM这种底层的东西嗤之以鼻,以为面试官都是故意为男人的。但当我们开发的项目突然出现CPU10

2020-07-24 14:16:54 178

原创 趣谈AOP-静态代理原理

概念就不写了,直接写三种代理模式的实现方式:静态代理在程序运行前,代理类。class文件就已经生成了。是比较固定的实现,相对于动态生成代理来说这就是所谓的静态代理吧。我按自己的理解说的。我们都知道,被静态代理的对象必须要实现一个接口,举个栗子。有些公司太严格,不许员工访问一些娱乐网站。怎么实现?当然是加权限,加这些娱乐网站的黑名单。就比如我在鹅厂,谁敢访问个支付宝试试。然后鹅厂就要给zhifubao加个网络连接的黑名单。我们简单看看用静态代理怎么实现。首先,我们要定义一个上网的接口,让上网的

2020-07-23 18:28:54 174

Redis分布式锁.zip

Redis分布式锁Java实现

2021-10-13

Topic config.xmind

Kafka Topic级别配置参数总结 思维导图,原创,请勿用于商业用途。业精于勤荒于嬉,形成于思毁于随。凑个字数吧!

2020-09-03

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除