自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

纪先生笔记

系列的方式分享Java相关技术

  • 博客(55)
  • 收藏
  • 关注

原创 MySQL进阶系列:你需要了解的几种MySQL日志

MySQL中有多种日志来保证实现其各种功能,我们最常见或者常听说的是Binlog(二进制日志),Redo Log(重做日志),Undo Log(回滚日志)。其实还有Relay Log(中继日志) ,General Query Log(一般查询日志),Slow Query Log(慢查询日志),Error Log(错误日志),DDL Log(DDL 日志)等。二进...

2022-02-21 16:50:00 578

原创 MySQL进阶系列:一条sql是怎么执行的

本文是在存储引擎是InnoDB的前提下mysql中的针对表的操作可以分为增删改查四种操作,也就是常说的crud大法,根据类型分为DML(增删改)和DQL(查);今天就说下插入和查询的语句时如何在mysql中执行的。不管是DML还是DQL都是要经过连接器,缓存,分析器,优化器,执行器调用存储引擎的API。在前四个阶段都是一样的流程,具体的可以参考 mysql基础架构篇,文章中有详细简介各个...

2022-02-11 12:28:00 405

原创 MySQL进阶系列:多版本并发控制- MVCC

mysql是目前互联网中用的最广泛的关系型数据库,InnoDB是mysql默认的存储引擎也是使用最多的存储引擎,能够满足大多数的业务需求,其中高并发的优点就是通过mvcc实现的。这篇文章就来介绍下mvcc是如何支持并发的。多版本并发控制MVCC 全称Multi-Version Concurrency Control,MVCC是一种通过增加版本冗余数据来实现并发控制的方法,一般在数据库管理系...

2022-01-17 10:04:00 624

原创 虚拟机系列:JVM 有哪些垃圾回收算法

垃圾即是无用的东西,不仅无用的了,而且占用地方,不丢留着干嘛。jvm也想把自己的垃圾给丢掉,毕竟jvm的内存空间还是很贵的。

2022-01-10 15:07:00 154

原创 虚拟机系列:JVM 运行时堆内存如何分代

对于大多数应用来说,Java堆(Java Heap)是Java虚拟机所管理的内在中最大的一块。Java堆是被所有线程共享的一块内在区域,在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例都在这里分配内存。虚拟机规范中的描述是:所有类的实例与数组对象都要在堆中分配。但是随着JIT编译器的发展与逃逸分析技术的逐渐成熟,栈上分配,标量替换优化技术导致一些变化,所有对象并不都分...

2022-01-05 10:03:00 75

原创 MySQL进阶系列:事务及事务隔离级别

事务就是现实中抽象出来一种逻辑操作,要么都执行,要么都不执行,不能存在部分执行的情况

2021-12-26 17:06:00 239

原创 1. JVM运行时堆内存如何分代

对于大多数应用来说,Java堆(Java Heap)是Java虚拟机所管理的内在中最大的一块。Java堆是被所有线程共享的一块内在区域,在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例都在这里分配内存

2021-12-22 20:36:05 828

原创 巧用双索引避免es出现索引不存在的问题

企业级门户APP,有移动端组织架构,员工可以在app端查询公司用户信息,支持员工在通讯录中多字段搜索(姓名/工号/手机号/邮箱/......),模糊搜索。我们这边是使用elasticsearch来存储员工信息,以便于实现这种搜索功能。正常把员工信息导入到es中,搜索也不会有问题。但是我们的产品是个企业级产品,专门服务于不同的企业客户的,解决客户各式各样的需求。比如,正常...

2021-12-19 11:03:00 1209

原创 公司短信接口被攻击了,怎么防止

有了QQ,微信之后短信的作用对个人好像没有什么特别的用处,平时朋友间的沟通都是通过微信(也有QQ),渐渐淡化了短信的用处。但是作为开发我们还是会接触短信平台的。短信现在的用处:网站和app的安全验证(注册,登陆,修改密码等)广告推送骚扰生日祝福(来自理财,保险,银行)女朋友生气拉黑微信/电话之后的道歉途径还有自信卖A货的(不知道你有没有收到过).......目前阿里云,百度云...

2021-11-30 10:54:00 328

原创 MySQL进阶系列:join连接的原理-3种算法

“我们经常在多表查询的时候使用join 去连接多个表,其实join的效率比不好还是应该尽量避免使用的,其本质就是各个表之间循环匹配的,MySQL中只支持一种join算法Nested-Loop Join(循环嵌套连接),但是其有多种变种的算法提高join的执行效率。”1. Simple Nested-Loop Join(SNL,简单嵌套循环连接)Simple Nested-Loop join...

2021-11-22 17:09:00 788

原创 MySQL进阶系列: 怎么创建更合适的索引

“不要当库里的数据较多的时候才能知道索引的重要性,更不要当库里的数据更多的时候才能知道合适的索引重要性。本文介绍下怎么创建高效且合适的索引”1. 当使用索引列进行查询的时候尽量不要使用表达式,把计算放到业务层而不是数据库层如下图 两个sql的结果是一样的,但是两个sql的执行计划是不一样,在type中index的效率远不如const where条件中 actor_id+4 表达式影响了执行...

2021-11-12 16:26:00 1192

原创 你需要知道的一些索引基础知识

“对于高级开发,我们经常要编写一些复杂的sql,那么防止写出低效sql,我们有必要了解一些索引的基础知识。通过这些基础知识我们可以写出更高效的sql。”01 索引的优点大大减少服务器需要扫描的数据量,也就是IO量帮助服务器避免排序和临时表(尽量避免文件排序,而是使用索引排序)将随机IO变成顺序IO02 索引的用处快速查找匹配where子句中的行如果可以在多个索引中选择,my...

2021-10-25 16:00:00 95

原创 为什么mysql使用B+树作为索引的数据结构

索引提高查询效率,就像我们看的书,想要直接翻到某一章,是不是不用一页一页的翻,只需要看下目录,根据目录找到其所在的页数即可。在计算机中我们需要一种数据结构来存储这个目录,常见数据结构有哈希表,二叉查找树,二叉平衡树(AVL),红黑树,那为什么Innodb和MyISAM选择b+树呢。哈希表哈希表就是一个数组+链表,用下标0,1,2,3..... 表示其数据所在的位置。如果想要在哈希表中存放...

2021-10-14 17:26:00 152

原创 MySQL进阶系列:一文详解explain

explain有何用处呢: 为了知道优化SQL语句的执行,需要查看SQL语句的具体执行过程,以加快SQL语句的执行效率。​ 可以使用explain+SQL语句来模拟优化器执行SQL查询语句,从而知道mysql是如何处理sql语句的。通过查看执行计划了解执行器是否按照我们想的那样处理SQL。​ 官网地址: https://dev.mysql.com/doc/refman/5....

2021-09-15 13:59:00 158

原创 MySQL进阶系列:数据库设计中的范式究竟该如何使用

“这篇文章主要为了说明规矩要遵守,但是也别这么死板,要知道因场景不同而变化。了解各自的优缺点,在不同业务中根据需求选择使用。”我们在项目上进行数据库设计的时候要求遵守三范式,为什么会约束三范式呢:为了减少数据冗余。回忆下是哪三范式:所有属性具有原子性,列不可分割。例如家庭地址(xx省xx市xx地址),家庭地址作为字段就是非原子的,可以拆分成字段省份,城市,地址。在第一范式...

2021-08-16 10:00:00 117

原创 mysql进阶系列:表设计如何更好的选择数据类型

日常工作中我们会接触到不同业务,同样也会设计不同的表,但是你有真正考虑的mysql支持的那些数据类型吗?知道如何根据不同的需求选择最合适或者正确的类型吗。存储字符串类型只知道选择varchar , 是否知道字符串还有char, text, blob 。存储数字类型只知道选择 int,float,double,是否知道还有tinyint,smallint 等。看完这篇文章相信你在以后的表设计...

2021-07-26 10:54:00 147

原创 mysql进阶系列:mysql中MyISAM和InnoDB有什么区别

mysql 版本5.7+本片文章详细列举下MyISAM和InnoDB的区别1. mysql中MyISAM和InnoDB有什么区别1. 存储结构MyISAM:每张表被存放在三个文件:frm-表格定义、MYD(MYData)-数据文件、MYI(MYIndex)-索引文件。Innodb:所有的表都保存在同一个数据文件中(也可能是多个文件,或者是独立的表空间文件),InnoDB表的大小只受限于...

2021-07-20 17:19:00 82

原创 mysql进阶系列:mysql的存储引擎有什么区别,该怎么选择

本文mysql实验版本 : 5.7.21 基础架构篇了解到执行器执行这个执行计划,通过调用存储引擎的API来操作数据。mysql提供了一系列存储引擎的API,所有的存储引擎都要符合API要求,因此可以实现这种插件式的存储引擎,可以根据不同的需求选择合适的存储引擎(就像握推杠铃一样,可以按需选择不同大小的杠铃片,嗯对的)。存储引擎是针对表的而不是库,对于同一个库不同的表可以使用不同的存储...

2021-07-12 10:46:00 108

原创 一文了解mysql基础架构

如果能够清楚知道的架构图以及各个组件之间的关联,会有助于深入理解mysql,如下是其的架构图图中可以看出mysql分为service层和存储引擎层:service层包含了mysql大多数核心功能,除了图中标注的连接器,查询缓存,分析器,优化器,执行器,还有所有的内置函数(日期,时间,数学和加密函数),所有跨存储引擎的功能都在这一层实现:存储过程、触发器、视图等。存储引擎层负责mysql中...

2021-07-05 19:19:00 83

原创 性能监控-skywalking的了解和使用

简单操作就可以使用,方便监控服务运行情况一. 概述基于Skywalking,提供分布式服务链路追踪,服务依赖拓扑绘制,慢端点、慢SQL等面板展示能力,以及服务告警能力,同时自带显示面板,可以提供前后端调用链整合能力。支持多种语言:如 Java, C# , Node.js , Go , PHP 以及 Nginx LUA。SkyWalking 为 服务(service), 服务实例(servi...

2021-06-02 15:18:00 1268

原创 位运算-与,或,非

一,二进制和十进制转换方法十进制转二进制(图片来源 —— wikihow.com)二进制转10进制(图片来源 —— wikihow.com)二,基本概念1. 机器数一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1。比如,十进制中的数 6,计算机字长为8位,转换成二进制...

2021-06-01 17:37:00 572

原创 位运算 : 巧妙使用异或(^)

位运算主要针对的是二进制,包括 异或(^), 与(&),或(|),非(~)1. 下面说下异或的规则和应用场景规则:两个位相同为0,不同为1例1: 6 ^ 72. 异或运算的性质任意一个变量和0异或结果都是其本身 (0^N=N)任意一个变量和其自身异或结果都是0(N^N=0)异或运算满足交换律和结合律3. 巧妙使用的例子例2: 巧妙利用异或,不用额外变量交...

2021-05-30 14:49:00 251

原创 pt-query-digest 慢查询分析

pt-query-digest一,安装分析MySQL开启慢查询日志(开启周期几天或者几周,根据项目而定)慢查询周期结束之后安装 pt-query-digest(百度)直接分析慢查询日志:pt-query-digest slow.log > slow_report.log二,分析慢查询日志(共20天)1. 总日志# 85.8s user time, 990ms sy...

2021-05-24 10:38:00 198

原创 pt-online-schema-change 大数据表结构修改

使用场景: 在线修改大数据量表结构(ALTER tables without locking them)文档参考:https://www.percona.com/doc/percona-toolkit/LATEST/pt-online-schema-change.html好处:降低主从延时的风险可以限速、限资源,避免操作时MySQL负载过高建议:在业务低峰期做,将影响降到最低直接...

2021-05-24 10:34:00 180

原创 elastic-job 的简单使用

说明:这个是使用2.1.5版本  elastic-job是当当开源的的的定时任务,使用也是很简单的,可以解决数据量的大的时候可以分片执行,多应用节点部署时候不会重复执行。  是通过zookeeper作为控制中心,进行任务分配。使用手册:http://elasticjob.io/docs/elastic-job-lite/02-guide/config-manual/分片原理:https:...

2018-07-06 15:34:00 118

原创 JAVA使用Ldap操作AD域

项目上遇到的需要在集成 操作域用户的信息的功能,第一次接触ad域,因为不了解而且网上其他介绍不明确,比较费时,这里记录下。

2018-07-03 11:11:00 171

原创 nginx之location(root/alias)

location配置1. 语法规则(按优先级)= 表示精确匹配,优先级最高^~ 表示uri以某个常规字符串开头,用于匹配url路径(而且不对url做编码处理,例如请求/static/20%/aa,可以被规则^~ /static/ /aa 匹配到(注意是空格))~ 表示区分大小写的正则匹配~* 表示不区分大小写的正则匹配!~ ...

2017-01-22 15:01:00 53

原创 Linux 下cronolog分割catalina.out文件

开发项目的时候查看日志,发现catalina.out已经有1个多G,日积月累的慢慢变大,幸亏及时发现还没有导致错误,tomcat默认日志之一输出在catalina.out文件中的,不会分割,不便于使用。首先使用log4j没有解决,现在改用cronolog每天生成一个catalina.yyyy-mm-dd.out类型的日志文件,所以tail -f 跟踪日志的时候只能跟踪当前日期的日...

2016-12-22 10:45:00 57

原创 Windows服务器nginx+tomcat服务负载均衡

一.安装两个tomcat服务自启动1. 解压两个tomcat,名称为分别1,22. 配置环境变量3. 修改文件server.xml中的三个端口号,使得两个tomcat不冲突 (1)<Server port="8005" shutdown="SHUTDOWN"> (2)<Connector port="8080" protocol="HTTP/1.1" ...

2016-12-01 15:46:00 54

原创 IntelliJ IDEA jrebel 实现热部署

前提是能够访问登陆Facebook,有Facebook的账号(我注册了一个)点击:https://my.jrebel.com用Facebook登陆 之后按要求填写信息然后获取激活码打开 idea 设置界面,搜索插件 jrebel,点击安装然后输入激活码就OK了看到是有效的配置tomcat,把On frame deactivation 从"Do nothing"改成"Updat...

2016-11-22 20:28:00 50

原创 windows下tomcat切割日志按照日期输出

windows下tomcat默认不会把应用的日志信息输出在日志文件中的,只会在控制台打印。解决方法:1,下载工具cronolog-1.6.1-win32.zip,并解压。2,把cronolog.exe放在tomcat的bin目录下3,修改tomcat的startup.bat文件 把start换成runcall "%EXECUTABLE%" start %CMD_LINE_A...

2016-11-16 13:56:00 169

原创 windows下nginx以服务自启动

1,下载最新版的 Windows Service Wrapper 程序,例如:"winsw-1.9-bin.exe"也可以修改它的名字,例如:myapp.exe2,将重命名后的 myapp.exe 复制到 nginx 的安装目录(我这里是 "D:\NeatbeansSofts\Redis-x64-3.2.100")3,在同一个nginx目录下创建一个Windows Service Wr...

2016-11-09 19:56:00 46

原创 windows下redis 开机自启动

1,在redis的目录下执行(执行后就作为windows服务了)redis-server --service-install redis.windows.conf2,安装好后需要手动启动redisredis-server --service-start3,停止服务redis-server --service-start4,卸载redis服务redis-server -...

2016-11-09 19:32:00 629

原创 linux 安装mysql后修改密码出现问题

新安装的mysql 执行命令时候出现错误:一 错误信息:ERROR 1045 (28000): Access denied for user 'mysql'@'localhost' (using password: NO)原因:mysql 用户没有操作/var/run目录的权限,所以pid文件无法创建,导致登陆时无法建立 进程信息文件,登陆进程就无法开启解决方法:1,执行命令/e...

2016-11-08 17:37:00 51

原创 Linux下mysql安装

一,先查询是否已安装mysql 1. 执行命令:执行命令: rpm -qa | grep -i mysql 2. 依次删除查询出来的包: rpm -e mysql-server-5.0.77-4.el5_6.6(包名) --allmatches --nodeps 3. 删除老版本的mysql开发头文件和库rm -fr /usr/lib/mysqlrm -fr /...

2016-11-08 16:54:00 40

原创 Linux RedHat无法安装软件问题(No package gcc available. Nothing to do)

在一个新的Linux服务器上安装nginx的时候,命令都不能解析,缺少gcc编辑器,安装gcc的命令也出错。[root@localhost ~]# yum -y install gccLoaded plugins: katello, product-id, security, subscription-managerUpdating certificate-based repositor...

2016-10-17 16:22:00 421

原创 windows同时安装两个jdk

两个项目需求不同,需要不同的jdk(1.7,1.8),所以每次切换项目的时候就会重新卸载原有的,在安装新的,比较麻烦。就查资料看可以同时安装多个jdk,但是每次只能配置一个环境变量。安装的时候还是遇到了问题。 先是安装的1.8,之后有安装了1.7,在环境变量中也配成1.7JAVA_HOME : D:\NeatbeansSofts\java\jdk1.7.0_45cl...

2016-09-27 14:07:00 267

原创 linux 下使用crontab 定时打包日志并删除已被打包的日志

crontab是和用户相关的,每个用户有自己对应的crontab。cron是Linux下的定时执行工具,以下是重启/关闭等等的命令#/sbin/service crond start //启动服务#/sbin/service crond stop //关闭服务#/sbin/service crond restart //重启服务#/sbin/service cron...

2016-08-02 20:08:00 89

原创 json字符串转JSONObject,输出JSONObject问题

json架包:json-lib-2.4-jdk15.jar json字符串(存在null值)转JSONObject后return JSONObject对象的时候会报错例如:String str= "{\"prop1\":\"val1\", \"prop2\":123, \"prop3\":null}";错误:net.sf.json.JSONException: null ob...

2016-07-29 10:59:00 120

原创 nginx 默认会把header里的参数去掉下划线

做token验证的时候遇到问题:在本地可以获取前端header传的参数,但是部署到服务器获取的就是null(服务器地址用nginx做了代理)原因: nginx代理默认会把header的参数的 "_" 下划线去掉 所以部署后就获取不到。解决: 1, 在header里不要用 "_" 下划线,可以用驼峰命名或者其他的符号代替。 2, 在nginx里的 n...

2016-07-23 21:16:00 491

空空如也

空空如也

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

TA关注的人

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