- 博客(355)
- 资源 (8)
- 收藏
- 关注
原创 一文搞懂Mybatis原理
文章目录一.快速入门二.查询流程分析2.1首先通过ClassLoader读取配置文件生成输入流2.2建造者模式加载配置创建SQLSessionFactory2.2.1SQLSessionFactoryBuilder.builder2.2.2生成的parser.parse()去解析xml配置文件 , 解析出mybatis的核心之一Configuration2.2.4解析完成后SQLSessionFa...
2020-03-15 01:11:27 577
原创 MAC missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun 的解决方案
问题重现mbp升级到了最新的系统但是git却无法拉代码,报错信息如下xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun虽然看上去是git出了问题,但看报错估计很多其他的工具都会引发这个报错,谷歌一查,果然非常多类似问题!记录一下解决办法:xcode-
2021-03-08 00:50:18 5931 1
原创 Mac构建Spring源码调试环境
文章目录一.依赖工具二.代码拉取三.预编译 spring-omx项目四.运行示例五.报错5.1 报 InstrumentationSavingAgent 不存在的错误5.2 报DefaultNamingPolicy 不存在的错误5.3 FAILURE: Build failed with an exception5.4 No such property: values for class: org.gradle.api.internal.tasks.DefaultTaskDependency一.依赖工具
2020-09-10 09:22:34 1046
原创 设计模式之状态模式
一.什么是状态模式?状态模式:当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了这个类.二.什么时候使用状态模式?状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况,把状态的判断逻辑转移到表示不同状态的一系列了,可以把复杂的判断逻辑简单化"三.UML图UML图与策略模式相似,但侧重点不同,状态模式是内在状态的变化,外部client无需关心,而策略是同等可替换的一个个算法,client需要知道自己使用的方法Context上下文维护State的实例,这个实例定义
2020-09-06 23:43:19 407
原创 设计模式之观察者模式
文章目录一.概念二.优缺点三.例子(以jdk给出的为例)一.概念观察者模式定义了对象之间的一对多依赖,让多个观察者对象同时监听一个主体对象,当主体对象发生变化时,它的所有观察者,都会接收到通知并更新,属于行为型模式.观察者模式又叫发布订阅模式以JDK的Observer Observable为例Spring中的ContextLoaderListener使用的观察者二.优缺点优点:1)...
2020-05-04 17:56:31 355
原创 设计模式之适配器模式
文章目录一.什么是适配器模式?二.那么适配器模式只要解决那些问题呢?三.例子练习一.什么是适配器模式?适配器模式(Adapter):将一个类的接口转换成客户希望的另外一个接口,Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作.二.那么适配器模式只要解决那些问题呢?简单地说,需要的东西就在眼前,但是却不能直接使用,短时间又无法改造,就可以考虑适配器模式通常在软件...
2020-04-28 21:41:47 325
原创 (四)Rocketmq消息发送
文章目录一.消息发送二.消息结构三.生产者启动流程四.消息发送基本流程4.1消息长度验证4.2查找主题路由信息4.3选择消息队列4.4消息发送五.批量发送Rocketmq发送消息有三种实现方式:可靠同步发送,可靠异步发送,单向(oneway)发送一.消息发送支持3种消息发送 sync同步 async异步 oneway单向同步:发送者向MQ执行发送消息api,同步等待,知道消息服务器返回发送...
2020-04-06 18:17:14 796
原创 (三)Rocketmq的路由中心NameServer
文章目录一.NameServer架构设计二.NameServer启动流程step1:首先来解析配置文件,需要填充NameServerConfig NettyServerConfig属性值step2:根据启动属性创建NamesrvController实例,并初始化该实例,NameServerController实例为NameServer核心控制器step3:注册JVM钩子函数并启动服务器,便于监听B...
2020-04-05 12:57:26 766
原创 (二)Rocketmq目录结构及设计目标
文章目录一.目录结构二.设计理念与目标2.1设计理念2.2设计目标一.目录结构1)broker:broker模块2)client:消息客户端,包含消息生产者,消费者相关类3)common:公共包4)dev:开发者信息(非源代码)5)distribution:部署实例文件夹(非源代码)6)example:rocketmq示例文件7)filter:消息过滤相关基础类8)filter...
2020-04-03 22:59:37 963
原创 (一)调试RocketMq源码
文章目录一.启动NameServer1.1namesrv模块找到NamesrvStartup.java1.2修改配置文件目录1.3启动NamesrvStartup.java二.配置Broker2.1配置BrokerStartup.java2.2启动BrokerStartup.java三.启动producer和consumer一.启动NameServer1.1namesrv模块找到Namesrv...
2020-04-03 00:53:55 548
原创 Mac配置Hsdis输出java汇编代码
文章目录一.下载hsdis-amd64.dylib文件二.配置hsdis三.jvm配置四.执行验证成果一.下载hsdis-amd64.dylib文件链接: https://pan.baidu.com/s/1QHhnJpHNDal56QLbDZIYAQ 提取码: 2xa9二.配置hsdis放入jre/lib下JavaVirtualMachines ▸ jdk1.8.0_201.jdk...
2020-04-01 11:44:52 532
原创 innodb存储引擎
文章目录1.innodb存储引擎概述2.innodb体系架构2.1后台线程2.2内存1.缓冲池2.LRU list 和 Flush list 和Free list3.重做日志缓冲4.额外的内存池2.4Checkpoint技术2.5Master Thread工作方式2.5.1innodb 的master thread2.6innodb关键特性2.6.1插入缓冲 insert buffer1.inse...
2020-03-18 23:22:36 6570
原创 高性能mysql六.查询性能优化
文章目录6.1为什么查询速度会慢?6.2慢查询基础:优化数据访问6.2.1是否向数据库请求了不需要的数据6.2.2.mysql是否在扫描额外的记录6.3重构查询的方式6.3.1一个复杂查询还是多个简单查询6.3.2切分查询6.3.3分解关联查询6.4查询执行的基础6.4.1mysql客户端和服务端通信协议6.7优化特定类型的查询6.7.1优化count()查询6.7.4 group by 和dis...
2020-03-18 02:01:36 416
原创 高性能mysql四.Schema和数据类型优化
文章目录4.1选择优化的数据类型4.1.1整数类型4.1.2实数类型4.1.3字符串类型4.1.4日期和时间类型4.1.5位数据类型4.2Mysql schema设计中的陷阱4.3范式和反范式4.3.1范式优点缺点4.3.2反范式的有点和缺点4.4加快Alter table操作的速度4.4.1只修改.frm文件4.4.2快速创建mylsam索引前言:良好的逻辑设计和物理设计是高性能的基石,该篇主...
2020-03-18 01:58:18 337
原创 高性能mysql一.mysql系统结构和概念
文章目录1.1Mysql逻辑架构1.1.1连接管理和安全性1.1.2优化与执行1.2并发控制1.2.1读写锁1.2.2锁粒度1.3事务1.3.1隔离级别1.3.2死锁1.3.3事务日志1.3.4mysql中的事务1.4多版本并发控制1.5mysql存储引擎1.5.1Innodb存储引擎1.5.2mylsam存储引擎1.5.6转换表的引擎前言:mysql架构设计将查询处理和其他系统任务和数据的存储...
2020-03-18 01:54:18 357
原创 Mac 安装ant
文章目录一.官网下载ant二.解压到指定路径三.编辑配置四.执行命令ant -version一.官网下载anthttps://ant.apache.org/bindownload.cgi二.解压到指定路径三.编辑配置vi .bash_profile然后在文件中追加以下内容export ANT_HOME=/Library/Java/apache-ant-1.10.7export ...
2020-03-07 23:31:28 963
原创 MacBook雷电3接口失灵不可用
今天安安静静的敲着代码,挪动了下电脑 突然连接的显示器熄灭,电源充电标记消失,试了试其他接口可以用.此时的你立刻断定接口坏了你就输了尝试以下操作还不迟, 关闭电脑等待15s左右 , 插上电源 按住 shift +option+command +电源键 开机神奇事情发生了 接口又可以用了...
2020-02-17 18:44:52 11237
原创 聊一聊fastjson
文章目录一.新手引导1.什么是fastjson?2.fastjson的优点2.1 速度快2.2 使用广泛2.3 测试完备2.4 使用简单2.5 功能完备三.源码分析3.1JSON.toJSONString3.1.1调用JSON.toJSONString(Object object)3.1.2初始化SerializeConfig3.1.3initSerializers()3.1.4执行重载方法toJ...
2020-02-02 18:51:11 3037
转载 JVM逃逸分析
我们都知道Java中的对象默认都是分配到堆上,在调用栈中,只保存了对象的指针。当对象不再使用后,需要依靠GC来遍历引用树并回收内存。如果堆中对象数量太多,回收对象还有整理内存,都会会带来时间上的消耗,GC表示压力很大,然后影响性能。所以,在我们日常开发中,内存,时间都是相当的宝贵,该如何优化堆栈开销,是一个比较重要的问题。 在这里,我以逃逸分析角度聊聊JVM优化的那些事儿。&...
2020-02-01 18:48:09 420
原创 SpringBoot统一接口返回
前言:前后分离时,我们要定义好统一的接口返回格式eg:{“code”:0 ,“message”:“成功”,“data”:null}返回格式与业务不相关且重复构建结果会产生大里冗余代码, 那么该怎么去抽离出来?可以考虑将包含某些标记的方法或者类的结果进行重写,我们可以使用ResponseBodyAdvice来实现,当然也可作为加密解密的一种实现方式思路1.定义标识,可以定义一个注解作为标...
2020-01-29 20:06:52 2952
原创 Permissions 0755 for '/Users/*/item2/xxxx.pem' are too open.
Permissions 0755 for '/Users/*/item2/xxxx.pem' are too open.It is required that your private key files are NOT accessible by others.This private key will be ignored.Permissions 0755 for '/Users/xx...
2019-12-24 09:13:11 1823
转载 mysql redo ,undo ,binlog
MySQL中有六种日志文件,分别是:重做日志(redo log)、回滚日志(undo log)、二进制日志(binlog)、错误日志(errorlog)、慢查询日志(slow query log)、一般查询日志(general log),中继日志(relay log)。其中重做日志和回滚日志与事务操作息息...
2019-11-12 23:44:11 1454
原创 单利模式安全问题
常见的内部类 , 双重检测的内部类虽然保证了线程安全 , 但可通过反射 , clone 序列化等手段操作 ,创建新的对象以静态内部类为例public class Singleton4 implements Serializable,Cloneable { private Singleton4() {} private static class SingletonInstance...
2019-11-12 23:29:15 237
原创 文章废弃不可用
破解补丁下载地址 https://download.csdn.net/download/drdongshiye/10645613
2019-11-02 11:28:30 43040 79
原创 过滤器Filter实现页面跳转
当我们想对不合法或不存或不符合要求的请求进行跳转时,可已选择Filter来实现,下面是简单的例子只需要在doFilter中实现内部逻辑即可//业务逻辑HttpServletRequest request = (HttpServletRequest)servletRequest;HttpServletResponse response = (HttpServletResponse)servl...
2019-09-16 22:41:24 8407
原创 分库分表
文章目录一.什么叫分库分表?1.1概念二.为什么要分库分表?三.切分类型3.1垂直(纵向)拆分垂直切分的优点:垂直切分的缺点:3.2水平(横向)切分水平切分的优点:水平切分的缺点:3.3水平切分的规则3.3.1按照时间区间或ID区间来切分优点缺点:3.3.2数值取模优点:缺点:四.拆分引来的问题4.1事务一致性问题4.4.1分布式事务4.4.2最终一致性4.2跨节点关联查询 join 问题4.2....
2019-09-15 17:13:09 1055
原创 java存储表情
一.前言当我们mysql数据库需要存储表情时,如果不做任何配置则会出现以下错误Caused by: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x80' for column 'content' at row 1 at com.mysql.jdbc.SQLError.createSQLException(SQLEr...
2019-09-01 14:48:31 848
原创 基于guava实现本地缓存
package com.daojia.service.djwechat.utils;import com.google.common.cache.Cache;import com.google.common.cache.CacheBuilder;import java.util.Map;import java.util.concurrent.ConcurrentHashMap;imp...
2019-09-01 14:41:33 2240
原创 java跨域
Access to XMLHttpRequest at '接口' from origin'xx.xx.cn' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.index-29339a0.js:890 文章目录一.跨域怎么产...
2019-09-01 14:37:40 432
原创 Error while creating archive:Unable to find javadoc command: The environment variable JAVA_HOME
使用Maven 进行install时出现以下错误[ERROR] Failed to execute goal org.apache.maven.plugins:maven-javadoc-plugin:2.1:jar (attach-javadocs) on project nurse-client: Error while creating archive:Unable to find jav...
2019-08-21 11:05:10 2137
原创 字符串拼接的坑null与nullnull
很多人习惯,习惯将基本类型或基本类型的包装器类通过以下形式进行隐性转换,例如,int f = 1; String ff = f+"";但是当要印象转换是个对象,那么结果会是怎么样呢? String a = null; String b = null; String c = a +""; String d = a+b; ...
2019-08-15 21:59:06 10340 1
原创 java编译与反编译命令
javac xxx.java 编译反编译javap -p xxx.class用法摘要:-help 帮助-l 输出行和变量的表-public 只输出public方法和域-protected 只输出public和protected类和成员-package 只输出包,public和protected类和成员,这是默认的-p -private 输出所有类和成员-s 输出内部类型签名-...
2019-08-07 14:49:37 378
原创 Java图片文件头校验
JPEG- 文件头标识 (2 bytes): 0xff, 0xd8 (SOI) (JPEG 文件标识)- 文件结束标识 (2bytes): 0xff, 0xd9 (EOI)TGA- 未压缩的前5字节 00 00 02 00 00- RLE压缩的前5字节 00 00 10 00 00PNG- 文件头标识 (8 bytes) 89 50 4E 47 0D 0A 1A 0A(GI...
2019-07-29 21:52:43 2135
原创 ES快速入门
目录什么是ESES安装快速了解 1.什么是ESElasticsearch是一个基于Apache Lucene(TM)的开源搜索引擎。无论在开源还是专有领域,Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。但是,Lucene只是一个库。想要使用它,你必须使用Java来作为开发语言并将其直接集成到你的应用中,更糟糕的是,Lucene非常复杂,你需要深入了解检索...
2019-07-24 08:10:11 5461
转载 详解Socket编程---TCP_NODELAY选项
Nagle算法描述Socket编程中,TCP_NODELAY选项是用来控制是否开启Nagle算法,该算法是为了提高较慢的广域网传输效率,减小小分组的报文个数,完整描述:该算法要求一个TCP连接上最多只能有一个未被确认的小分组,在该小分组的确认到来之前,不能发送其他小分组。这里的小分组指的是报文长度小于MSS(Max Segment Size...
2019-07-24 07:43:35 6398
转载 XSS跨域脚本攻击
XSS(cross-site scripting跨域脚本攻击)攻击是最常见的Web攻击,其重点是“跨域”和“客户端执行”。有人将XSS攻击分为三种,分别是:1. Reflected XSS(基于反射的XSS攻击)2. Stored XSS(基于存储的XSS攻击)3. DOM-based or local XSS(基于DOM或本地的XSS攻击)Refle...
2019-07-24 07:30:31 2580
转载 CSRF跨站请求伪造
CSRF漏洞详细说明通常情况下,有三种方法被广泛用来防御CSRF攻击:验证token,验证HTTP请求的Referer,还有验证XMLHttpRequests里的自定义header。鉴于种种原因,这三种方法都不是那么完美,各有利弊。 二 CSRF的分类在跨站请求伪造(CSRF)攻击里面,攻击者通过用户的浏览器来注入额外的网络请求,来破坏一个网站会话的完整性。而浏览器的安全...
2019-07-24 07:28:28 299
原创 [数据结构]什么是链表?
链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的–百度百科大致分为单链表和双向链表1.单链表:每个节点包含两部分,一部分存放数据变量的data,另一部分是指向下一节点的next指针2.双向链表:除了包含单链表的部分,还增加的pre前一个节点的指针链表的优点在于,不需要连续的存储单元,修改链表的复杂度为O(1) (在不考虑查找时)但是...
2019-07-14 22:52:52 12729
原创 [数据结构]什么是数组?
数组:有限个相同类型的变量所组成的一个集合,数组中的每个变量可以成为一个元素,数组在内存中是顺序存储的,需要开辟连续的内存空间.数组的特点:查找快,修改慢, 查找的时间复杂度O(1),而修改是O(n) ,其中当不关心数组的顺序时,删除操作可以用末尾的元素覆盖所要删除位置的元素,然后再删除末尾元素此时复杂度为O(1)手敲一个简单的数组/** * @author : 董硕 * @time: ...
2019-07-14 18:52:46 2544
原创 什么是并发编程?
前言并发编程的目的是为了提高程序的执行速度.但是并不意味着启动更多的线程会达到更好的并发效果,并发编程还会引起死锁 , 上下文频繁切换 , 线程不安全等问题.该问题主要介绍几种并发引来的问题及解决方案一.上下文切换1.1什么是上下文切换?无论是单核还是多核cpu都是支持多线程执行代码的,cpu通过给每一个线程分配时间片,只有拿到时间片的线程才可以执行,通常时间片很短只有几十ms,让我们感觉是...
2019-07-14 11:26:04 3964
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人