04 2019 档案

摘要:1、 tail 命令 tail 命令可用于查看文件的内容,有一个常用的参数 -f 常用于查阅正在改变的日志文件。 tail -f filename 会把 filename 文件里的最尾部的内容显示在屏幕上(默认10行,相当于增加参数 -n 10),并且不断刷新,只要 filename 更新就可以看到 阅读全文
posted @ 2019-04-30 18:23 myseries 阅读(5151) 评论(0) 推荐(1) 编辑
摘要:提到JAVA加锁,我们通常会想到synchronized关键字或者是Java Concurrent Util(后面简称JCU)包下面的Lock,今天就来扒一扒Lock是如何实现的,比如我们可以先提出一些问题:当我们通过实例化一个ReentrantLock并且调用它的lock或unlock的时候,这其 阅读全文
posted @ 2019-04-30 10:17 myseries 阅读(835) 评论(0) 推荐(0) 编辑
摘要:1、利用任务管理器或者 jps 命令找到我的程序的进程ID 在cmd控制台下输入jps命令,即可列出当前电脑运行的java程序的所有进程,我的程序的进程ID为26028 2、利用 jstack 命令列出进程的所有信息 使用命令jstack 26028 > 26028.txt列出进程ID为26028的 阅读全文
posted @ 2019-04-29 17:14 myseries 阅读(5913) 评论(0) 推荐(1) 编辑
摘要:Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略。从JDK1.5开始Java并发包里提供了两个使用CopyOnWrite机制实现 阅读全文
posted @ 2019-04-29 16:40 myseries 阅读(256) 评论(0) 推荐(0) 编辑
摘要:一、前言 分布式系统中我们会对一些数据量大的业务进行分拆,如:用户表,订单表。因为数据量巨大一张表无法承接,就会对其进行分库分表。 但一旦涉及到分库分表,就会引申出分布式系统中唯一主键ID的生成问题,永不迁移数据和避免热点的文章中要求需要唯一ID的特性: 整个系统ID唯一 ID是数字类型,而且是趋势 阅读全文
posted @ 2019-04-29 11:27 myseries 阅读(1424) 评论(0) 推荐(0) 编辑
摘要:工程结构: 1、在test库创建表student(MySql数据库) 2、创建实体类Student.java package com.gdut.testMybatis.vo; public class Student { private int id; private String name; pu 阅读全文
posted @ 2019-04-28 19:41 myseries 阅读(525) 评论(0) 推荐(0) 编辑
摘要:分布式锁一般有三种实现方式:1. 数据库乐观锁;2. 基于Redis的分布式锁;3. 基于ZooKeeper的分布式锁。本篇博客将介绍第二种方式,基于Redis实现分布式锁。虽然网上已经有各种介绍Redis分布式锁实现的博客,然而他们的实现却有着各种各样的问题,为了避免误人子弟,本篇将介绍如何正确地 阅读全文
posted @ 2019-04-28 17:25 myseries 阅读(3375) 评论(0) 推荐(0) 编辑
摘要:什么是分布式锁? 控制分布式架构中多个模块访问的优先级 要介绍分布式锁,首先要提到与分布式锁相对应的是线程锁、进程锁。 线程锁:主要用来给方法、代码块加锁。当某个方法或代码使用锁,在同一时刻仅有一个线程执行该方法或该代码段。线程锁只在同一JVM中有效果,因为线程锁的实现在根本上是依靠线程之间共享内存 阅读全文
posted @ 2019-04-28 15:50 myseries 阅读(4346) 评论(1) 推荐(0) 编辑
摘要:一:java.util.concurrent.locks包下常用的类与接口(lock是jdk 1.5后新增的) (1)Lock和ReadWriteLock是两大锁的根接口,Lock代表实现类是ReentrantLock(可重入锁),ReadWriteLock(读写锁)的代表实现类是Reentrant 阅读全文
posted @ 2019-04-28 15:05 myseries 阅读(52376) 评论(0) 推荐(16) 编辑
摘要:1:在线安装ByteCode插件 打开Eclipse Go to"Help -> Install new Software... -> Work with:"中选择Bytecode Outline安装 ByteCode http://andrei.gmxhome.de/eclipse ByteCod 阅读全文
posted @ 2019-04-26 17:45 myseries 阅读(2307) 评论(0) 推荐(0) 编辑
摘要:一. 基本用法LinkedHashMap是HashMap的子类,但是内部还有一个双向链表维护键值对的顺序,每个键值对既位于哈希表中,也位于双向链表中。LinkedHashMap支持两种顺序插入顺序 、 访问顺序 1:插入顺序:先添加的在前面,后添加的在后面。修改操作不影响顺序 2:访问顺序:所谓访问 阅读全文
posted @ 2019-04-26 15:23 myseries 阅读(4344) 评论(1) 推荐(1) 编辑
摘要:围绕下面四个点展开叙述: 一:什么是CAS机制? 二:Java当中CAS的底层实现 三:CAS的ABA问题和解决方法 四:java8对CAS的优化 一:什么是CAS机制? 我们先看一段代码: 启动两个线程,每个线程中让静态变量count循环累加100次。 public class Test4 { p 阅读全文
posted @ 2019-04-26 12:42 myseries 阅读(888) 评论(0) 推荐(0) 编辑
摘要:重量级锁?自旋锁?自适应自旋锁?轻量级锁?偏向锁?悲观锁?乐观锁?执行一个方法咋这么辛苦,到处都是锁。 今天这篇文章,给大家普及下这些锁究竟是啥,他们的由来,他们之间有啥关系,有啥区别。 重量级锁 如果你学过多线程,那么你肯定知道锁这个东西,至于为什么需要锁,我就不给你普及了,就当做你是已经懂的了。 阅读全文
posted @ 2019-04-26 10:56 myseries 阅读(1198) 评论(0) 推荐(2) 编辑
摘要:stop-the-world 在学习Java GC 之前,我们需要记住一个单词:stop-the-world 。它会在任何一种GC算法中发生。stop-the-world 意味着JVM因为需要执行GC而停止了应用程序的执行。当stop-the-world 发生时,除GC所需的线程外,所有的线程都进入 阅读全文
posted @ 2019-04-25 17:57 myseries 阅读(639) 评论(0) 推荐(0) 编辑
摘要:摘要: 本文阐述了RPC框架与远程调用的产生背景,介绍了RPC的基本概念和使用背景,之后手动实现了简易的RPC框架并佐以实例进行演示,以便让各位看官对RPC有一个感性、清晰和完整的认识,最后讨论了RPC框架几个较为重要问题。总之,RPC框架的精髓在于动态代理和反射,通过它们使得远程调用“本地化”,对 阅读全文
posted @ 2019-04-25 16:49 myseries 阅读(691) 评论(0) 推荐(0) 编辑
摘要:一:socket通信基本原理。 首先socket 通信是基于TCP/IP 网络层上的一种传送方式,我们通常把TCP和UDP称为传输层。 如上图,在七个层级关系中,我们将的socket属于传输层,其中UDP是一种面向无连接的传输层协议。UDP不关心对端是否真正收到了传送过去的数据。如果需要检查对端是否 阅读全文
posted @ 2019-04-25 16:09 myseries 阅读(2314) 评论(0) 推荐(0) 编辑
摘要:阅读目录 1 基础知识回顾 2 I/O模式 3 事件驱动编程模型 4 select/poll/epoll的区别 网络编程里常听到阻塞IO、非阻塞IO、同步IO、异步IO等概念,总听别人装13不如自己下来钻研一下。不过,搞清楚这些概念之前,还得先回顾一些基础的概念。 1 基础知识回顾 注意:咱们下面说 阅读全文
posted @ 2019-04-24 16:11 myseries 阅读(954) 评论(0) 推荐(2) 编辑
摘要:一、代理设计模式 代理设计模式是Java常用的设计模式之一。 特点: 01.委托类和代理类有共同的接口或者父类; 02.代理类负责为委托类处理消息,并将消息转发给委托类; 03.委托类和代理类对象通常存在关联关系,一个代理类对象与一个委托类对象关联; 04.代理类本身不是真正的实现者,而是通过调用委 阅读全文
posted @ 2019-04-24 14:32 myseries 阅读(964) 评论(0) 推荐(0) 编辑
摘要:背景 有的时候你想debug调试Java的源代码,就想试图在Java源代码中设置断点,在Eclipse中常常会出现Unable to insert breakpoint Absent Line Number Information错误。导致这个错误的原因是Eclipse默认使用了JRE环境,而事实上 阅读全文
posted @ 2019-04-23 19:54 myseries 阅读(1508) 评论(1) 推荐(0) 编辑
摘要:一、反射的概述JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。要想解剖一个类,必须先要获取到该类的字节码文件对象。而解剖使用的就是Class 阅读全文
posted @ 2019-04-23 18:18 myseries 阅读(576) 评论(0) 推荐(1) 编辑
摘要:对象的输入输出流 : 主要的作用是用于写入对象信息与读取对象信息。 对象信息一旦写到文件上那么对象的信息就可以做到持久化了 对象的输出流: ObjectOutputStream 对象的输入流: ObjectInputStream 使用: 对象的输出流将指定的对象写入到文件的过程,就是将对象序列化的过 阅读全文
posted @ 2019-04-23 16:07 myseries 阅读(4173) 评论(0) 推荐(0) 编辑
摘要:关于如何阅读的书籍并不多,比较有名的是《如何阅读一本书》,于是拿过来啃了一遍,书中教会了我一项重要技能 —— 同主题阅读,后面会详细介绍。我利用这项技能,又阅读了另外六本书籍,总结出自己的一套阅读技巧。 读完这七本书后,做了一个思维导图,供大家参考一下 关于阅读 综合对这上面七本书的研究,我得出了关 阅读全文
posted @ 2019-04-22 20:38 myseries 阅读(547) 评论(0) 推荐(0) 编辑
摘要:从最基础的Hello World开始。 spring的Hello World就三行代码: 这个hello world非常简单,通过xml文件,创建一个容器context,然后从容器中获取一个bean。 运行完这段代码后,问自己两个问题: 容器创建时做了什么? getBean()时又做了什么? 虽然这 阅读全文
posted @ 2019-04-22 20:28 myseries 阅读(592) 评论(0) 推荐(2) 编辑
摘要:数据库事务的隔离级别有4种,由低到高分别为Read uncommitted 、Read committed 、Repeatable read 、Serializable 。而且,在事务的并发操作中可能会出现脏读,不可重复读,幻读。下面通过事例一一阐述它们的概念与联系。 脏读、不可重复读、幻象读概念说 阅读全文
posted @ 2019-04-22 10:57 myseries 阅读(60903) 评论(4) 推荐(26) 编辑
摘要:where 和having的区别 "Where"是一个约束声明,使用Where来约束来之数据库的数据,Where是在结果返回之前起作用的,且Where中不能使用聚合函数。 "Having"是一个过滤声明,是在查询返回结果集以后对查询结果进行的过滤操作,在Having中可以使用聚合函数。 having 阅读全文
posted @ 2019-04-19 16:01 myseries 阅读(468) 评论(0) 推荐(0) 编辑
摘要:EXPLAIN简介 EXPLAIN 命令是查看查询优化器如何决定执行查询的主要方法,使用EXPLAIN,只需要在查询中的SELECT关键字之前增加EXPLAIN这个词即可,MYSQL会在查询上设置一个标记,当执行查询时,这个标记会使其返回关于在执行计划中每一步的信息,而不是执行它,它会返回一行或多行 阅读全文
posted @ 2019-04-19 15:34 myseries 阅读(8046) 评论(0) 推荐(4) 编辑
摘要:本文我们来谈谈项目中常用的MySQL优化方法,共19条,具体如下: 一、EXPLAIN 做MySQL优化,我们要善用EXPLAIN查看SQL执行计划。 下面来个简单的示例,标注(1、2、3、4、5)我们要重点关注的数据: type列,连接类型。一个好的SQL语句至少要达到range级别。杜绝出现al 阅读全文
posted @ 2019-04-19 12:25 myseries 阅读(1598) 评论(0) 推荐(1) 编辑
摘要:先抛出几个问题 索引知识回顾 对于 MySQL 数据库而言,数据是存储在文件里的,而为了能够快速定位到某张表里的某条记录进行查询和修改,我们需要将这些数据以一定的数据结构进行存储,这个数据结构就是我们说的索引。回忆一下我们大学里学过的算法与数据结构,能够支持快速查找的数据结构有:顺序数组、哈希、搜索 阅读全文
posted @ 2019-04-19 11:17 myseries 阅读(1043) 评论(0) 推荐(0) 编辑
摘要:前提知识: Java内存模型(JMM)是一个概念模型,底层是计算机的寄存器、缓存内存、主内存和CPU等。 多处理器环境下,共享数据的交互硬件设备之间的关系: JMM: 从以上两张图中,谈一谈以下几个概念: 1.缓存一致性协议(MESI): 由于每个处理器都含有私有的高速缓存,在对缓存中数据进行更新后 阅读全文
posted @ 2019-04-18 16:08 myseries 阅读(410) 评论(0) 推荐(0) 编辑
摘要:建立索引的原则: 定义主键的数据列一定要建立索引。 定义有外键的数据列一定要建立索引。 对于经常查询的数据列最好建立索引。 对于需要在指定范围内的快速或频繁查询的数据列; 经常用在WHERE子句中的数据列。 经常出现在关键字order by、group by、distinct后面的字段,建立索引。如 阅读全文
posted @ 2019-04-18 15:18 myseries 阅读(6829) 评论(0) 推荐(0) 编辑
摘要:前言 MySQL中有以下日志文件,分别是: 1:重做日志(redo log) 2:回滚日志(undo log) 3:二进制日志(binlog) 4:错误日志(errorlog) 5:慢查询日志(slow query log) 6:一般查询日志(general log) 7:中继日志(relay lo 阅读全文
posted @ 2019-04-18 11:22 myseries 阅读(43142) 评论(1) 推荐(10) 编辑
摘要:一 MySQL 基础架构分析 1.1 MySQL 基本架构概览 下图是 MySQL 的一个简要架构图,从下图你可以很清晰的看到用户的 SQL 语句在 MySQL 内部是如何执行的。 先简单介绍一下下图涉及的一些组件的基本作用帮助大家理解这幅图,在 1.2 节中会详细介绍到这些组件的作用。 •连接器: 阅读全文
posted @ 2019-04-18 09:35 myseries 阅读(3856) 评论(0) 推荐(2) 编辑
摘要:UNION 操作符用于合并两个或多个 SELECT 语句的结果集。 请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。 SQL UNION 语法 注释:默认地,UNION 操作符选取不同的值。如果允许重 阅读全文
posted @ 2019-04-17 18:50 myseries 阅读(228) 评论(0) 推荐(0) 编辑
摘要:在表中,可能会包含重复值。这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。 关键词 DISTINCT 用于返回唯一不同的值(注意:distinct是作用于多列的)。 表A: 表B: 1.作用于单列 执行后结果如下: 2.作用于多列 执行后结果如下: 实际上是根据name和id 阅读全文
posted @ 2019-04-17 18:16 myseries 阅读(456) 评论(0) 推荐(0) 编辑
摘要:GROUP BY 语句 GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组。 SQL GROUP BY 语法 SQL GROUP BY 实例 我们拥有下面这个 "Orders" 表: O_IdOrderDateOrderPriceCustomer 1 2008/12/29 10 阅读全文
posted @ 2019-04-17 17:48 myseries 阅读(285) 评论(0) 推荐(0) 编辑
摘要:出处:https://mp.weixin.qq.com/s/uYPnZ0MsQIT2_t3lk8ju1g 问题 小E最近在设计一款斗地主小游戏,为了保证发到玩家手中的牌具有随机性,小E必须对现实世界中的洗牌过程进行模拟。看似简单的一个问题,却难住了小E。 于是,小E向老师请教。 思路 点评:上面即为 阅读全文
posted @ 2019-04-17 10:41 myseries 阅读(10539) 评论(1) 推荐(8) 编辑
摘要:一条 SQL 语句执行的很慢,那是每次执行都很慢呢?还是大多数情况下是正常的,偶尔出现很慢呢?所以我觉得,我们还得分以下两种情况来讨论。 1、大多数情况是正常的,只是偶尔会出现很慢的情况。 2、在数据量不变的情况下,这条SQL语句一直以来都执行的很慢。 针对这两种情况,我们来分析下可能是哪些原因导致 阅读全文
posted @ 2019-04-16 18:52 myseries 阅读(8515) 评论(0) 推荐(3) 编辑
摘要:转:https://blog.csdn.net/m0_38039437/article/details/75264012 一、HttpServlet简介 1、HttpServlet是GenericServlet的子类,又是在GenericServlet的基础上做了增强。 2、HttpServlet方 阅读全文
posted @ 2019-04-12 11:52 myseries 阅读(7768) 评论(1) 推荐(2) 编辑
摘要:1:非空判断 错误例子: 这段代码极有可能在实际运行的时候跑出NullPointerException。无论是user本身为空,还是user.getUserName()为空,都会抛出异常。 所以,在调用一个参数时要确保他是非空的。 上面的代码可以改为: 2:用StringBuffer代替String 阅读全文
posted @ 2019-04-12 09:57 myseries 阅读(13835) 评论(1) 推荐(3) 编辑
摘要:出处:https://www.hollischuang.com/archives/2275 关于这个问题,在StackOverflow上也引发过广泛的讨论,看来很多程序员对于这个问题的理解都不尽相同,甚至很多人理解的是错误的。还有的人可能知道Java中的参数传递是值传递,但是说不出来为什么。 在开始 阅读全文
posted @ 2019-04-11 17:45 myseries 阅读(282) 评论(0) 推荐(0) 编辑
摘要:我们可能经常会用到 Thread.Sleep 函数来使线程挂起一段时间。那么你有没有正确的理解这个函数的用法呢? 思考下面这两个问题: 1、假设现在是 2008-4-7 12:00:00.000,如果我调用一下 Thread.Sleep(1000) ,在 2008-4-7 12:00:01.000 阅读全文
posted @ 2019-04-11 16:57 myseries 阅读(2253) 评论(0) 推荐(0) 编辑
摘要:出处:http://www.importnew.com/26850.html 正常情况下,每个子线程完成各自的任务就可以结束了。不过有的时候,我们希望多个线程协同工作来完成某个任务,这时就涉及到了线程间通信了。 本文涉及到的知识点:thread.join(), object.wait(), obje 阅读全文
posted @ 2019-04-11 16:52 myseries 阅读(358) 评论(0) 推荐(0) 编辑
摘要:出处:https://blog.csdn.net/iteye_2474/article/details/82512318 问题:一个类中同步方法被调用时,它的其他方法是否可以同时被调用? 正确的回答应该:是该类中其他同步方法不能被同时调用,但非同步方法可以被调用。下面给出例子。 结果console: 阅读全文
posted @ 2019-04-08 21:39 myseries 阅读(917) 评论(0) 推荐(0) 编辑
摘要:出处:https://www.jianshu.com/p/86a1fd2d7406 写在前面,好像不同的教材对b树,b-树的定义不一样。我就不纠结这个到底是叫b-树还是b-树了。 如图所示,区别有以下两点: B+树中只有叶子节点会带有指向记录的指针,而B树则所有节点都带有,在内部节点出现的索引项不会 阅读全文
posted @ 2019-04-06 20:05 myseries 阅读(19654) 评论(2) 推荐(9) 编辑
摘要:以下索引知识以mysql索引来阐述 一:MySQL中索引的语法 (1)创建索引 注意: 1、索引需要占用磁盘空间,因此在创建索引时要考虑到磁盘空间是否足够 2、创建索引时需要对表加锁,因此实际操作中需要在业务空闲期间进行 (2)索引相关sql 二:索引的优缺点 优势:可以快速检索,减少I/O次数,加 阅读全文
posted @ 2019-04-06 19:49 myseries 阅读(4890) 评论(0) 推荐(2) 编辑