自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

代码学习之路的博客

一个怀揣梦想的菜鸟码农

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

转载 SVN文件上感叹号、加号、问号等图标的原因

黄色感叹号(有冲突):–这是有冲突了,冲突就是说你对某个文件进行了修改,别人也对这个文件进行了修改,别人抢在你提交之前先提交了,这时你再提交就会被提示发生冲突,而不允许你提交,防止你的提交覆盖了别人的修改。要解决冲突,如果你确认你的修改是无效的,则用TSVN还原你的修改就行了;如果认为你的修改是正确的,别人的提交是无效的,那么用TSVN先标记为“解决冲突”,然后就可以提交了;如果你认为你的修改和别人的修改都有一部分是有效的,那么你就把别人的修改手动合并到你的修改中,然后使用TSVN标注为“解决冲突”,然后

2020-09-02 10:44:29 1726

转载 红黑树的插入

红黑树的概念及性质利用图示法介绍红黑树的插入是怎么实现的一、红黑树的基本性质(1)、红黑树是在每个结点上增加一个存储位来保存节点颜色的一种二叉搜索树,保存颜色的存储位可以是黑色也可以是红色。(2)、红黑树是接近平衡的。因为通过对任何一条从根到叶子的路径上各个节点着色方式的限制,红黑树确保没有一条路径会比其他路径长出两倍。(3)、每个节点包含五个域(如下图):如果一个结点没有left...

2019-10-13 23:25:13 260

原创 RabbitMQ六种工作模式

六种模式选择简单队列模式:最简单的工作队列,其中一个消息生产者,一个消息消费者,一个队列。也称为点对点模式工作模式:一个消息生产者,一个交换器,一个消息队列,多个消费者。同样也称为点对点模式发布/订阅模式:无选择接收消息,一个消息生产者,一个交换器,多个消息队列,多个消费者。称为发布/订阅模式路由模式:在发布/订阅模式的基础上,有选择的接收消息,也就是通过 routing 路由进行匹配条件...

2019-10-13 22:48:37 1161

转载 常用的并发集合

并发List Vector和CopyOnWriteArrayList是两个线程安全的List,Vector读写操作都用了同步,相对来说更适用于写多读少的场合,CopyOnWriteArrayList在写的时候会复制一个副本,对副本写,写完用副本替换原值,读的时候不需要同步,适用于写少读多的场合。并发Set CopyOnWriteArraySet基于CopyOnWriteArrayL...

2019-10-10 14:23:25 207

转载 JVM调优(转)

https://www.jianshu.com/p/bc5410a6e69a

2019-10-10 14:19:10 96

转载 关于java线程锁synchronized修饰普通方法与静态方法的区别

最近研究线程方面问题,关于这个synchronized锁修饰的问题,先是修饰普通方法,然后通过两个线程,各自执行自己对象的锁,发现方法执行互不影响,代码如下:  private static int num=0;  private synchronized void printNum(String tag){    try {    if(tag.equals("a")){      n...

2019-09-25 14:34:12 178

原创 CMS收集器和G1收集器的区别

CMS收集器和G1收集器的区别区别一: 使用范围不一样CMS收集器是老年代的收集器,可以配合新生代的Serial和ParNew收集器一起使用G1收集器收集范围是老年代和新生代。不需要结合其他收集器使用区别二: Stop-to-World的时间CMS收集器以最小的停顿时间为目标的收集器。G1收集器可预测垃圾回收的停顿时间(建立可预测的停顿时间模型)区别三: 垃圾碎片CMS收集器是使用...

2019-09-25 14:00:11 537

转载 工厂模式(JAVA实例)

https://www.jianshu.com/p/70991f60dbbe

2019-09-18 18:50:26 1464

转载 冒泡排序性能优化详解

https://blog.csdn.net/qq_35392549/article/details/82020583

2019-09-18 17:52:06 125

转载 OOM

堆OOM直接内存OOM过多线程导致的OOM永久(Pern)溢出GC效率低下引起的OOMString常量池因其的OOMhttps://www.cnblogs.com/htkj/p/10932489.html

2019-09-18 16:15:05 420

转载 Java中String,StringBuilder和StringBuffer的区别

这三个类的主要区别在两个方面:运算速度(运算性能或执行效率)和线程安全性1、运算速度比较(通常情况下):StringBuilder > StringBuffer > StringString是final类不能被继承且为字符串常量,而StringBuilder和StringBuffer均为字符串变量。String对象一旦创建便不可更改,而后两者是可更改的。Java中对String对...

2019-09-18 15:29:26 321

转载 HTTP与TCP的区别和联系

首先,纠正一下我以前一直误解的概念,我一直以为Http和Tcp是两种不同的,但是地位对等的协议,虽然知道TCP是传输层,而http是应用层今天学习了下,知道了 http是要基于TCP连接基础上的,简单的说,TCP就是单纯建立连接,不涉及任何我们需要请求的实际数据,简单的传输。http是用来收发数据,即实际应用上来的。第一:从传输层,先说下TCP连接,我们要和服务端连接TCP连接,需要通过三次连接...

2019-09-18 14:53:27 171

转载 上亿条数据的数据库做优化 查询结果都是千万级别的 怎么优化

第一优化你的sql和索引;第二加缓存,memcached,redis;第三以上都做了后,还是慢,就做主从复制或主主复制,读写分离,可以在应用层做,效率高,也可以用三方工具,第三方工具推荐360的atlas,其它的要么效率不高,要么没人维护;第四如果以上都做了还是慢,不要想着去做切分,mysql自带分区表,先试试这个,对你的应用是透明的,无需更改代码,但是sql语句是需要针对分区表做优化的,s...

2019-09-18 10:38:44 2465

转载 电商中怎么防止超卖问题

首先我们要知道超卖的原因是什么:超卖的原因主要是用户下的订单的数目和我们要促销的商品的数目不一致导致的,每次总是订单的数比我们的促销商品的数目要多。究其深层原因,是因为数据库底层的写操作和读操作可以同时进行,虽然写操作默认带有隐式锁(即对同一数据不能同时进行写操作)但是读操作默认是不带锁的,所以当用户1去修改库存的时候,用户2依然可以都到库存为1,所以出现了超卖现象。解决方案有以下几种:第一种...

2019-09-16 14:41:56 3834

转载 如何从100万个数中找出最大的前100个数

方法一先取出前100个数,维护一个100个数的最小堆,遍历一遍剩余的元素,在此过程中维护堆就可以了。具体步骤如下:step1:取前m个元素(例如m=100),建立一个小顶堆。保持一个小顶堆得性质的步骤,运行时间为O(lgm);建立一个小顶堆运行时间为m*O(lgm)=O(m lgm);step2:顺序读取后续元素,直到结束。每次读取一个元素,如果该元素比堆顶元素小,直接丢弃,如果大于堆顶元...

2019-09-16 14:22:14 1378

转载 SQL中的左连接与右连接,内连接有什么不同

https://www.cnblogs.com/jianshuai520/p/11055519.html

2019-09-16 11:43:18 289

转载 有一个表数据量每天存入数据3百万左右,现在千万级,要筛选表里一些数据,怎么查才能速度快一点

这个问题够写一篇分析报告了。首先每天三百万数据,这张表再大,最后都会撑不住,横向分表是自然的事。估计最先想到的是按时间来分吧。查询速度的问题可使用的技术方案有很多,但先要做的是对业务查询的分析。找出瓶颈,才能有的放矢。试列举几种:i 缓存,已查过的放内存,没查过的才查ii 索引,合理利用索引,甚至构造自己的索引表ii 并行,可以多线程/多进程甚至分布式iV 分离读写,使用数据仓库,专...

2019-09-16 11:07:06 3038

转载 为什么Mysql用B+树做索引而不用B-树或红黑树

B+树和B树区别B+树只有叶节点存放数据,其余节点用来索引,而B-树是每个索引节点都会有Data域。所以从Mysql(Inoodb)的角度来看,B+树是用来充当索引的,一般来说索引非常大,尤其是关系性数据库这种数据量大的索引能达到亿级别,所以为了减少内存的占用,索引也会被存储在磁盘上。那么Mysql如何衡量查询效率呢?– 磁盘IO次数。 B-树/B+树 的特点就是每层节点数目非常多,层数很少,...

2019-09-16 10:18:34 900

转载 MyISAM InnoDB索引实现

MyISAM索引实现MyISAM引擎使用B+Tree作为索引结构,叶节点的data域存放的是数据记录的地址。如图:这里设表一共有三列,假设我们以Col1为主键,则上图是一个MyISAM表的主索引(Primary key)示意。可以看出MyISAM的索引文件仅仅保存数据记录的地址。在MyISAM中,主索引和辅助索引(Secondary key)在结构上没有任何区别,只是主索引要求key是唯一的...

2019-09-16 09:55:16 130

转载 mysql中innodb和myisam对比及索引原理区别

InnoDB和MyISAM是很多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,5.7之后就不一样了1、事务和外键InnoDB具有事务,支持4个事务隔离级别,回滚,崩溃修复能力和多版本并发的事务安全,包括ACID。如果应用中需要执行大量的INSERT或UPDATE操作,则应该使用InnoDB,这样可以提高多用户并发操作的性能MyISAM管理非事务表。它提供高速存储和检索,以及全...

2019-09-16 09:51:20 79

转载 Spring IOC底层实现原理

IOC原理将对象创建交给Spring去管理。实现IOC的两种方式IOC配置文件的方式IOC注解的方式IOC底层实现原理底层实现使用的技术1.1 xml配置文件1.2 dom4j解析xml1.3 工厂模式1.4 反射...

2019-09-16 09:37:11 668

原创 打家劫舍三

/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { pu...

2019-09-12 11:16:35 408

转载 为什么要使用Java反射机制?

静态编译:在编译时确定类型,绑定对象即通过。动态编译:运行时确定类型,绑定对象。动态编译最大限度地发挥了Java的灵活性,体现了多态的应用,可以减低类之间的耦合性。Java反射是Java被视为动态(或准动态)语言的一个关键性质。这个机制允许程序在运行时透过Reflection APIs取得任何一个已知名称的class的内部信息,包括其modifiers(诸如public、static等)、su...

2019-09-12 10:23:02 903

原创 BIO,NIO,AIO整理(全称,介绍,区别)

2019-09-11 10:06:42 312

转载 http与https区别、对称加密与非对称加密

一、Http和Https的区别Http协议运行在TCP之上,明文传输,客户端与服务器端都无法验证对方的身份;Https是身披SSL(Secure Socket Layer)外壳的Http,运行于SSL上,SSL运行于TCP之上,是添加了加密和认证机制的HTTP。二者之间存在如下不同:端口不同:Http与Http使用不同的连接方式,用的端口也不一样,前者是80,后者是443;资源消耗:和...

2019-09-10 21:17:07 526

转载 深入理解HTTP1.0和HTTP1.1的区别

长连接(PersistentConnection)HTTP 1.1支持长连接(PersistentConnection)HTTP 1.0规定浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个客户也不记录过去的请求。HTTP 1.1则支持持久连接Persistent Connection, 并且默认使用pe...

2019-09-10 21:08:21 226

原创 mysql和redis的区别

1.mysql和redis的数据库类型mysql是关系型数据库,主要用于存放持久化数据,将数据存储在硬盘中,读取速度较慢。redis是NOSQL,即非关系型数据库,也是缓存数据库,即将数据存储在缓存中,缓存的读取速度快,能够大大的提高运行效率,但是保存时间有限2.mysql的运行机制mysql作为持久化存储的关系型数据库,相对薄弱的地方在于每次请求访问数据库时,都存在着I/O操作,如果反复...

2019-09-10 20:47:25 128

转载 锁优化

锁的优化策略编码过程中可采取的锁优化的思路有以下几种:1、减少锁持有时间例如:对一个方法加锁,不如对方法中需要同步的几行代码加锁;2、减小锁粒度例如:ConcurrentHashMap采取对segment加锁而不是整个map加锁,后来又对node加锁,提高并发性;3、锁分离根据同步操作的性质,把锁划分为的读锁和写锁,读锁之间不互斥,提高了并发性。4、锁粗化这看起来与思路1有冲...

2019-09-10 20:24:37 115

转载 git命令

1.fetch和merge和pull的区别pull相当于git fetch 和 git merge,即更新远程仓库的代码到本地仓库,然后将内容合并到当前分支。git fetch:相当于是从远程获取最新版本到本地,不会自动mergegit merge : 将内容合并到当前分支git pull:相当于是从远程获取最新版本并merge到本地2.tagtag指向一次commit的id,通常...

2019-09-10 19:48:20 74

原创 sleep和wait的区别

sleep和wait的区别还有:1。这两个方法来自不同的类分别是Thread和Object2。最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。3。wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用4。sleep必须捕获异常,而wait,notify和notifyAll不需要捕...

2019-09-10 19:38:36 182

转载 线程池重要参数 线程池执行顺序

2019-09-10 19:31:36 2003

转载 线程通信 3种方式

一、传统线程通信synchronized + wait + notifyObject类的wait()、notify() 、notifyAll()三个方法必须由同步监视器对象来调用,分两种情况:a)同步方法,该类默认实例(this)就是同步监视器,可以在同步方法中可以直接调用b)同步代码块,同步监视器是synchronized后括号里的对象,所以必须使用此对象调用这三个方法二、使用Condi...

2019-09-10 15:31:39 377

转载 进程间的八种通信方式----共享内存是最快的 IPC 方式

1.无名管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。2.高级管道(popen):将另一个程序当做一个新的进程在当前程序进程中启动,则它算是当前程序的子进程,这种方式我们成为高级管道方式。3.有名管道 (named pipe) : 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。4....

2019-09-10 15:27:23 783 1

转载 生产者-消费者模式的三种实现方式

背景生产者生产数据到缓冲区中,消费者从缓冲区中取数据。如果缓冲区已经满了,则生产者线程阻塞;如果缓冲区为空,那么消费者线程阻塞。方式一:synchronized、wait和notifypackage producerConsumer;//wait 和 notifypublic class ProducerConsumerWithWaitNofity { public sta...

2019-09-10 15:20:02 646

原创 Redis事务

2019-09-09 20:56:43 103

原创 数据库面试题

https://www.cnblogs.com/television/p/9288248.htmlhttps://blog.csdn.net/qq_34475529/article/details/82998957https://www.jianshu.com/p/c2e816fe188e

2019-09-02 22:41:54 99

原创 Spring基础知识

问题:什么是控制反转(IOC),什么是依赖注入(DI)?IOC:就是对象之间的依赖关系由Spring容器来创建,对象之间的关系本来是由我们开发者自己创建和维护的,在我们使用Spring框架后,对象之间的关系由容器来创建和维护,将开发者做的事让容器做,这就是控制反转。BeanFactory接口是Spring Ioc容器的核心接口。DI:我们在使用Spring容器的时候,容器通过调用set方法或者...

2019-09-02 21:44:45 72

转载 内存泄露和内存溢出的区别 (概念区别 产生原因区别 及解决办法) 个人整理

内存泄露和内存溢出的区别概念区别内存溢出 : out of memory 指程序在申请内存时,没有足够的内存空间供其使用,出现out fo memory 比如申请一个integer 但给它存了long才能存下的数那就是内存溢出内存泄露 : memory leak 指程序在申请内存后,无法释放已经申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后的结果很严重,无论多少内存,迟早会被占光...

2019-09-02 16:23:13 213

原创 JDK1.8 IO 包中的两种设计模式

JDK1.8 IO 包中的两种设计模式:装饰模式:在由InputStream、OutputStream、Reader和Writer代表的等级结构内部,有一些流处理器可以对另一些流处理器起到装饰作用,形成新的、具有改善了的功能的流处理器。好处是可以在运行时动态的给对象添加一些额外的职责,与继承相比,具有更好的灵活性。适配器模式:在由InputStream、OutputStream、Reader...

2019-09-02 16:17:18 258

原创 Java中异常处理时为什么可以只要try-finally,而可以不要catch

更为严格的说法其实是:try只适合处理运行时异常,try+catch适合处理运行时异常+普通异常。也就是说,如果你只用try去处理普通异常却不加以catch处理,编译是通不过的,因为编译器硬性规定,普通异常如果选择捕获,则必须用catch显示声明以便进一步处理。而运行时异常在编译时没有如此规定,所以catch可以省略,你加上catch编译器也觉得无可厚非。理论上,编译器看任何代码都不顺眼,都...

2019-09-02 16:09:47 7976 1

空空如也

空空如也

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

TA关注的人

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