自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 资源 (1)
  • 收藏
  • 关注

原创 mysql索引合并index-merge

和联合索引相比,index merge optimization因为要扫描多个索引,并将多个索引的主键进行排序,取交集,取并集等操作,所以通常会比聚合索引慢。结论:or条件能很好的触发index_merge,但是and条件不一定会触发,目前没有发现扫描规律,具体需要通过mysql源码才能确定具体逻辑。同时,如果在同一张表上创建多个索引,表的insert,update等操作需要维护的索引比较多,因此有会降低DML语句的执行效率。但是index_merge的存在确实能提高sql的执行效率,可以减少回表的次数。

2023-12-23 15:38:32 532

原创 mysql锁介绍

select ... lock in share mode 加意向IS锁以及共享S锁。update、insert、delete会自动加入排它锁X,以及意向IX锁。普通select 语句会加MDL读锁,防止DDL的MDL写锁产生冲突。select... for update 加意向IX锁以及排它锁X。

2023-12-06 14:18:02 76

原创 synchronized jvm实现思考

个人理解这里多一个entryList,可能是用于减少频繁的cas操作。假设存在很多锁竞争时,进入entryList中的线程,在获取锁的线程中释放锁选取unpark线程时可以直接从List中取线程即可。底层实现时,为什么使用了cxq队列和entryList双向链表?这里为什么不跟AQS中使用一个队列就行了,加了一个entryList的目的是为了什么?

2023-11-14 23:14:27 400

原创 idea mybatis-generator生成xml的sql关键字问题

同事通过Idea插件生成的xml。但是对字段映射的时候,插件没有对表中与Mysql重名的关键字进行引号处理,导致后续查询报错:可以看到直接报错了,这边不建议说手动修改这个sql column的语句,因为下次生成的时候一样会产生同样的问题,我们可以直接选择更换插件,或者数据库字段的设计的避免关键字...

2022-05-12 09:30:12 713

原创 java内部类

1.内部类的种类:静态内部类成员内部类局部内部类2.1静态内部类静态内部类其实差不多在一个类文件里创建另一个类,内部类对象不能访问外部类的成员变量,要创建该内部类还需要 new 外部类.内部类()的形式。静态内部类作用:一般我们是builder模式或者一些数据接收的嵌套对象时会采用这种写法,或者我们代码中需要拆出来一个类有特别的功能但是又想对外影藏这些细节进行一个封装2.2成员内部类成员内部类其实是作为一个外部类的成员变量的形式,内部不能声明static的变量

2022-04-13 21:48:26 319

原创 java cas原理解析

本文内容是假定读者已经有一些多线程的工作经验以及一些计算机系统原理知识的前提下进行介绍的,所以可能并不是说的很通俗易懂,也仅是个人作为一个知识的总结分享。相信大家在开发过程中对java的cas操作并不陌生,cas作为一种乐观锁的实现方式,我们在java.util.concurrent包下可以看到很多类都使用了cas的方式解决多线程并发问题:可以看到这些api的底层都是调用了Unsafe的方法, 我们在跟进去就是native方法了:基本上好多同学就被劝退了。也确实,只要JVM保证这

2022-03-12 14:48:25 671

原创 linux内核io调度算法

1. io调度算法简单介绍noop(elevator) 电梯调度所有进程的io请求都进入FIFO队列,完全按照队列的顺序进行io的读取,不会对io的请求进行合并等操作。算法缺点也很明显,会导致靠后的io请求饥饿,以及对每个io请求都会进行磁盘的定位产生大量的寻道时间CFQ (complete fair queue) 完全公平队列针对同步请求时,所有进程都会有自身的io请求队列,CFQ会给每个进程分配一个io请求的时间片来处理当前进程的io请求同时CFQ会结合当前进程的io优先级进行选择。

2022-01-25 11:36:29 2542

原创 ConcurrentHashMap源码深入解读

1.针对resize的讲解,上源码:/**private final void addCount(long x, int check) { CounterCell[] cs; long b, s; if ((cs = counterCells) != null || !U.compareAndSetLong(this, BASECOUNT, b = baseCount, s = b + x)) { CounterCell c; long v; in

2021-09-28 21:40:41 118

原创 redis主从同步的坑

1.主从同步数据不一致的问题? 这个问题产生的原因有很多,假设从库开启了只读设置,slave-read-only = yes。主从数据不一致的原因主要是因为主从复制时异步的, 第一种是因为网络抖动等原因导致的主从同步延时,导致请求到达从库时从库还没有接受到主库的命令。 第二种是主从同步的命令到达从库时,从库正在进行阻塞操作比如bigkey的遍历,导致从库没有及时执行命令,而当此时主库又有该key的更新时,从库此时数据不一致的情况会更加的严重。解决方案...

2021-04-08 21:59:15 490

原创 String、StringBuilder、StringBuffer区别及联系

关于三者的区别以及产生的原因首先介绍下String为Immutable类,任意字符串的拼接都会产生新的String对象,所以在进行很多字符串拼接的场景下会产生很多无用对象影响应用程序的性能,因而派生出了StringBuilder以及StringBuffer类型。其实就是为了解决字符串拼接时产生过多的无用对象,无论是StringBuilder或StringBuffer进行append()方法拼接时都会返回当前的this对象,而他们两者的区别就在于StringBuffer是线程安全的而StringBui

2021-02-25 00:37:37 309

原创 Mybatis复杂集合对象的嵌套查询以及一些动态查询

1.动态查询条件。select count(*)from sp_account<where> <if test="createUserId != null"> and create_user_id = #{createUserId,jdbcType=INTEGER} </if> <if test="createTime != null"> and create_time = #{createTi

2020-12-10 19:19:57 995 1

原创 mysql的orderby是如何工作的

1.建表语句CREATE TABLE `t` ( `id` int(11) NOT NULL, `city` varchar(16) NOT NULL, `name` varchar(16) NOT NULL, `age` int(11) NOT NULL, `addr` varchar(128) DEFAULT NULL, PRIMARY KEY (`id`), KEY `city` (`city`) ) ENGINE=InnoDB;2.假设里面插入很多数据,现在需要查询select city

2020-09-28 00:34:52 117

原创 Integer什么时候会触发自动拆装箱

1.基础面试题里碰到过这样的操作:运行结果确是:第一个规则就是Integer value = xx,赋值操作,是调用Integer.valueOf进行装箱操作,变成Integer对象的所以第一个false很容易理解,因为Integer的cahe是在-128~127之间的。第二个false是因为a4 = a1 + a2时,涉及Integer对象间的基本加减乘除操作时是需要拆装成基本类型计算后,然后再装箱的,所以这里比较两个不同的integer对象,所以这里还是false第三个为tr

2020-09-23 09:50:37 733

原创 swagger2生成Markdown文件

maven导包<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version></dependency><!-- swagger-ui --><dependency> <gro.

2020-08-27 18:04:02 965

原创 RocketMQ在centos7上的高可用部署

1.镜像地址下载mqwget https://mirrors.tuna.tsinghua.edu.cn/apache/rocketmq/4.7.1/rocketmq-all-4.7.1-bin-release.zip2.解压zip包unzip xxxx.zip3.需要开放端口号。nameserver是固定的9876。但是broker是可以调整的,特别是一台虚拟机如果部署多个broker的话。就需要自定义Port。我这里目前是采用两台虚拟机,然后每台起两个broker都是对另外虚拟机的sla.

2020-08-24 10:18:37 155

原创 nginx常用命令

1.我们在安装的时候,可以指定将二进制文件编译到我们指定的目录不指定的话。这个就是默认路径。指定命令(只在第一次安装时使用) ./configure --prefix=/xxxxx xxx是目录接着执行make make install完成安装步骤即可2 ./nginx -s stop 停止nginx 启动nginx ./nginx 修改配置文件重新加载 ./nginx -s reload3.nginx ...

2020-08-01 09:47:52 104

原创 关于protected访问范围

1.同包中当前类、其他类都能访问2.不同包类,子类继承了父类的当前类中,可以访问父类的protected变量3.但是子类包的其他类不能通过子类或者父类访问到父类的protected变量。这里其实就可以推出一个结论就是,父类protected修饰的变量在不同包中约等于private,因为它还是可以被子类所在的当前类访问得到。...

2020-08-01 09:46:07 4092

原创 vmware虚拟机踩坑记

家里原先设置的网关192.168.194.1然后配置的NAT模式连接的虚拟机。虚拟机的网关设置的是192.168.194.2然后一直使用都没有问题。一次断电,把路由器的弄坏了。重新装了个。然后本机的网关改变了。设置成了192.168.1.1这时候。启动虚拟机发现xshell连接不上,然后ping不通。觉得有问题了。然后查看本机Ipconfig设置。发现VMnet8这个虚拟网关当时是空的。然后没注意。不理解啥玩意。现在也没理解。跑去虚拟机重新设置NAT模式的网关。设置成本机的.1发现能主机能Pin

2020-07-27 22:33:48 560

原创 centos7定时开启运行脚本cronb的使用

1.查看系统是否开启了crontab如果是disable的那么就开启systemctl enable crond.service关闭的话systemctl disable crond.service2.查看状态systemctl status crond.service3.启动定时systemctl start crond.service4.重启systemctl restart crond.service5.重载systemctl rel..

2020-07-24 17:58:41 680

原创 centos7使用Lua脚本注意

1.直接在terminal界面使用Lua脚本文件,如果redis设置有password。需要附带密码认证执行脚本redis-cli -h localhost -a test --eval test.lua如果redis没有设置密码,则直接执行脚本即可redis-cli --eval test.lua...

2020-07-24 09:39:31 360

原创 vmware安装cenos后的设置

1.终端terminal快捷键设置2.虚拟机网络设置子网设置成当前子网地址网关地址最后以为一定要是2设置成当前子网的3.centos7内部设置修改文件vim/etc/sysconfig/network-scripts/ifcfg-ens33还要修改dns文件vim /etc/resolv.conf最后重启网络service network restart...

2020-07-15 16:51:07 92

原创 mysql索引的最左前缀原则

1.我们先创建表create table test( a int , b int, c int, d int, key index_abc(a,b,c) )engine=InnoDB default charset=utf8;2.插入一些数据DROP PROCEDURE IF EXISTS proc_initData;DELIMITER $CREATE PROCEDURE proc_initData()BEGINDECLARE i INT DEFAULT 1;WHILE i<=1

2020-07-02 18:58:17 288

原创 zookeeper授权模式

1.digest授权模式。需要一个加密的密码。我们可以在linux上直接执行该命令获取echo -n super:admin | openssl dgst -binary -sha1 | openssl base64 创建一个用户名为super,密码为admin会生成一个字符串

2020-06-24 15:07:58 1480

原创 cenos7安装快速安装Nginx

1.确认系统有安装GCC。如果没有的话。执行 yum -y gcc install2.pcre是一个perl库,包括perl兼容的正则表达式库,nginx的http模块使用pcre来解析正则表达式,安装pcre库yum install -y pcre pcre-devel3.zlib库提供多种压缩和解压缩方式,nginx使用zlib将http的内容进行gzip压缩yum install -y zlib zlib-devel4.安装opensslyum install -...

2020-06-15 21:12:54 106

原创 zookeeper单机搭建虚拟分布式环境

1.将安装包解压出来(可以通过wget或者本地下载上传到服务器都可以)tar -zxvf apche-zookeeper-3.5.8-bin.tar.gz 解压到当前目录或者tar -zxvf apche-zookeeper-3.5.8-bin.tar.gz -C xxxx指定目录2.解压完。我们需要修改配置文件。进入conf目录下,将原先zoo_simple.cfg的名字改为zoo.cfg即可mv zoo_simple.cfg zoo.cfg3.修改配置文件内容...

2020-06-14 12:08:15 153

原创 mysql安装

wget https://mirror.tuna.tsinghua.edu.cn/mysql/downloads/MySQL-5.7/mysql-5.7.28-1.el7.x86_64.rpm-bundle.tarrpm -qa | grep mysql 如果没有文件执行下一句rpm -qa | grep mariadb 强制卸载mariadb可以看到一个文件mariadb-libs-5.5.65-1.el7.x86_64执行rpm -e --nodeps mariadb-libs-...

2020-06-13 19:55:00 182

原创 安装jmeter压测软件导致java系统环境变量被删除的问题

问题:安装完这个软件后,系统java环境莫名被没有了。导致ide依赖的jdk丢失,然后一堆maven项目因为jdk不存在全部图标下带橙色的,然后main方法都无法运行。解决办法:将java环境变量重新添加进去,然后ide重新设置JDK。设置好JDK然后对不能运行的Maven项目。打开POM文件。点开ADD AS maven。执行一下Maven clean。就可以恢复了。...

2020-06-11 21:34:51 193

原创 查看项目maven引入的依赖

1.鼠标移动到最左下角位置。2.点击maven就会在右侧显示所有项目的依赖了

2020-06-08 13:34:20 827

原创 ide引入Lombok还是有红线提示报错问题

1.需要eclipse安装lombok插件。安装完重启ide.2.然后Ide设置打开annotation

2020-05-31 21:48:51 952

原创 ide支持热部署设置

1.第一步ctrl+alt+s打开设置,compiler的ADBC都勾选2.ctrl+shift+alt+/ 打开Registry3.勾选两个选项,点击close就OK了

2020-05-31 21:47:04 131

原创 springboot整合时使用jackson调用微服务返回对象报错

当时写pojo的时候就觉得这里是不时要加个空构造,然后抱着试试的心态没加。结果调用其他服务返回对象接收的时候jackson就提示转换错误了。记一次坑!

2020-05-27 21:56:29 210

原创 关于Lock、synchronized、volatile原理及区别

1.volatile大多数人都知道volatile一个是保证多线程并发时的内存的可见性,还有一个就是禁止指令重排序,那么什么是内存的可见性呢?JMM模型规范了所有的变量(这里指分配对象之类的共享变量),必须通过主内存与线程工作内存通信。但是这里会存在一个问题,如果多线程并发的情况下,有两个线程同时对a进行加一操作了,在没有正确同步的情况下,那么有可能就会出现a=2情况,产生这种情况是因为JMM规范线程读取变量的时候都必须经过主内存,然后存储到本地的副本中,如果线程1读取a=1到自己的线程副本中,

2020-05-26 14:40:52 653

原创 启动idea报错问题

因为前一天研究JVM参数配置问题,使用了一些跟JDK相关版本的参数:-Xloggc:D:\\logs\\app1-gc-%t.log-XX:+UseGCLogFileRotation-XX:NumberOfGCLogFiles=5-XX:GCLogFileSize=20M -XX:+PrintGCDetails-XX:+PrintGCDateStamps -XX:+PrintGCCause想让GC的信息打印到特定的文件里面供自己分析,但是第二天重新开电脑打开idea提示报错了解决办法

2020-05-24 12:01:56 1250

原创 关于thread.join()的一次错误理解

public static void main(String[] args) throws InterruptedException { Thread prevThread = Thread.currentThread(); for(int i = 0;i<10;i++){ Thread t = new Thread(new ThreadJoin(prevThread,i)); t.start(); prevThread = t; .

2020-05-14 20:05:07 872 1

原创 mysql安装连接时的问题汇总

.为了简单方便使用了ubantu系统apt-get 方式安装的Mysql。1.Mysql的用户管理 创建用户使用 然后查看数据的用户:其中user字段表示用户名,host表示可连接的ip,localhost指定只能本地连接,若要支持所有远程连接,需要先设置mysql的配置文件的bind的默认属性值从127.0.0.1 改为 0.0.0.0这里要注意,如果要创建的用户支持远程所有的ip都连接,就在CREATE USER 'dog'@'localhost' IDENT...

2020-05-13 20:42:23 156

原创 JVM工具使用小技巧

1.查看JVM进程使用jps命令 jps [options] [hostid]其中options常用选项有:-l 打印主类全名,如果是Jar包的,输出jar包路径-v 打印jvm的启动参数-m 打印主类main函数接受的参数-q 只显示虚拟机进程ID2.jstat JVM Statistics Monitoring Tool,显示local...

2020-04-25 17:04:05 101

原创 linux常用命令Help选项的一些符号解释

[] 表示是可选的;<> 表示是可变化的;x|y|z 表示只能选择一个;-abc 表示三个参数(或任何二个)的混合使用在方括号内的表达式(“[“和“]”之间的字符)是可选的(写命令时要去掉括号)。在尖括号内的表达式(“<”和“>”之间的字符)是必须替换的表达式(而且要去掉括号)。省略号“…”表示该选项可以单个或多个...

2020-04-25 15:17:37 1223

转载 spring初次使用运到的定义Url但却报500错误

Circular view path [mydemo]: would dispatch back to the current handler URL [/mydemo] again. Check your ViewResolver setup!简单创建一个springboot工程pom.xml<?xml version="1.0" encoding="UTF-8"?>...

2020-04-22 20:46:41 410

原创 hook注册热键实现隐藏窗口等

学了几天的易语言,发现一个基本的辅助操作,就是按键呼出,然后自己就像这是怎么实现的。中途找了N多资料,这里我真的很想吐槽一下,当然仅仅代表个人看法,各种资料都是些封装的模块,也没有合适的反编译易语言模块来看高手写的代码让我这菜鸟来学习,但是吧,总觉得不开源出来很多东西会越来越封闭,掌握在少数人手里和大家一起开发维护,我这里不评价好坏,纯属个人很厌烦这种行为吧。so.....咋办,那就自己直接撸代码...

2019-08-01 19:29:39 659

原创 记一次易语言的坑

在学习易语言调用windowsApi进行调试的时候发现,什么代码不写的情况下,子程序都无法弹出基本的信息框。当时很是郁闷无法理解问题的原因,第一时间怀疑是不是编辑器的Bug。因为自己使用的是win10 AMD的CPU,会不会有些不兼容。但是后来看着自己子程序上有申明参数但是没用。然后,把子程序下的变量撤掉。马上就能运行了。其实发现。如果要使用局部变量应该插入局部变量的,而不应该直接在子程序下添加参...

2019-07-28 00:00:34 272

热键注册源码.rar

各种听说hook技术,哎,思路来了,我hook住热键消息,交给自己管理,那就不需要自己去监视了,系统给我回调函数,卧槽。果断发现这个API相当的nice,然后一顿操作,发现嘿嘿,成了。但是又觉得这样不能提供给别人用啊。太硬了。当然这中间又发现个问题,就是易语言不像java一样可以通过反射技术调用某个类的方法,不得不逼自己明明hook住了,还要在弄一个钩子链来执行其他用户注册进来的函数,so,low逼的我做的很Low逼,弄了两个钩子才完成这个隐藏并且别人可以使用,并且用来执行用户想执行的函数。贴源码。

2019-08-01

空空如也

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

TA关注的人

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