Fork me on GitHub
ldx's Blog


  • 首页

  • 归档

  • 分类

  • 标签

  • top

  • 关于

  • 搜索

高性能mysql知识点

置顶 | 发表于 2018-10-25 | 分类于 数据库相关 |
| 字数统计: 7,434 | 阅读时长 ≈ 27

tim-van-der-kuip-1398896-unsplash

高性能mysql

事务相关

事务的含义

事务就是一组原子性的SQL查询。事务必须满足ACID特性。

  1. 原子性 atomicity
    事务全部提交成功,或者全部回滚 一个事务不能执行一部分
  2. 一致性 consistency
    数据库从一个状态转换到另一个状态,不会存在中间状态 在事务执行期间系统崩溃了,事务能回滚,数据不会丢失
  3. 隔离性 isolation
    一个事务所做的操作在没有提交之前对其他的事务都是不可见的。隔离性有4个等级。
  4. 持久性
    事务一旦提交,会永久保存在磁盘中,即使系统崩溃,修改的数据也不会丢失。
    阅读全文 »

Thread知识点

置顶 | 发表于 2018-10-24 | 分类于 java同步包 |
| 字数统计: 1,501 | 阅读时长 ≈ 6

java线程介绍

线程的状态

  1. New
    创建后未启动的线程
  2. Runnable
    包括Running 和 Ready 运行和就绪
  3. Waiting
    不会被分配CPU时间,等待被其他线程显式唤醒 以下会被无限期等待
    Object.wait() 没有设置Timeout
    没有设置Timeout的thread.join()
    LockSupport.park()方法 和这个lock.await()方法 比较类似
    阅读全文 »

socket原理

置顶 | 发表于 2018-10-21 | 分类于 socket编程 |
| 字数统计: 3,420 | 阅读时长 ≈ 13

socket编程介绍

简介

进程间通信的方法有管道,命名管道,信号,消息队列,共享内存,信号量,这些方法要求通信的两个线程位于同一个主机。对于非同一个主机可以使用TCP/IP协议搞定。
套接字是网络通信的基础。当一个程序创建了一个socket并与端口号绑定时候,意味着向TCP/IP协议申明了对端口的占有。比如端口为8080。所有目标为8080端口的TCP/IP协议包都会被该程序收到。Accept函数,就是抽象的TCP连接建立过程,accept函数返回的是新socket是指代本次连接。一个链接包括两个部分,一个是源IP和源端口,另一部分是目标IP和目标端口。所以accept可以产生多个socket。
Socket类似于是对TCP/IP协议协议的抽象,对外提供了编程的接口、使用这个接口可以方便的使用tcp/IP的功能。所有socket是对TCP/IP协议栈的抽象,而不是简单的映射关系。

阅读全文 »

LINUX的IO模型

置顶 | 发表于 2018-10-21 | 分类于 socket编程 |
| 字数统计: 2,187 | 阅读时长 ≈ 8

LINUX的5种IO模型

简介

同步阻塞,同步非阻塞,异步阻塞,异步非阻塞这些不同的IO模型是如何定义的。在看了几篇博客后我总结了下,把自己说服通了。
服务端的应用程序要响应客户端的请求时,要有IO请求。在网络IO中,首先,内核会先收集完整的TCP或者UDP数据包,再将数据从内核复制到用户的内存中。这里的IO模型是针对于服务器端的,因为客户端一般都是阻塞的。

阅读全文 »

AQS原理

置顶 | 发表于 2018-08-25 | 分类于 java同步包 |
| 字数统计: 6,648 | 阅读时长 ≈ 28

AQS的原理解析

简介

java中实现线程同步有synchronized和ReentrantLock方法,当然还有其他的方法。synchronized是使用monitorenter和monitorexit指令来同步代码块。而ReentrantLock是底层依赖AQS(AbstractQueuedSynchronizer)组件来实现的,即非阻塞同步队列。AQS相比于monitor可以实现多种同步方式,比如独占锁,共享锁,条件队列,公平锁等模式。在并发效率上,synchronized有自旋锁,偏向锁,轻量级锁,重量级锁的优化后,效率和ReentrantLock是差不多的。但是在同步的模式上只能是独占锁。

阅读全文 »

Happens-Before

置顶 | 发表于 2018-08-25 | 分类于 JVM虚拟机原理 |
| 字数统计: 3,812 | 阅读时长 ≈ 15

happens-before简介

在看JVM的内存模型时对内存可见性一直有个问题,线程A锁住,更新了对象内容A,释放锁,线程B锁住,为什么能获得对象A的最新值。还有双重检查生成单例时为什么需要把instance设置成violatile。问题的本质是线程同步的原子性,可见性,有序性的实现原理。

阅读全文 »

现代操作系统知识点

置顶 | 发表于 2018-10-21 | 分类于 现代操作系统 |
| 字数统计: 5,351 | 阅读时长 ≈ 18

现代操作系统知识点

现代操作系统有一些知识点需要归纳一下。先记录一部分,后续再慢慢补充。

阅读全文 »

netty基础

置顶 | 发表于 2018-10-21 | 分类于 socket编程 |
| 字数统计: 739 | 阅读时长 ≈ 3

netty基础

handler(处理器)

netty中的SimpleChannelInboundHandler继承了ChannelInboundHandler接口,这个接口提供了很多处理事件的接口方法,可以覆盖这些方法来实现自己的逻辑。

阅读全文 »

ConcurrentHashMap

置顶 | 发表于 2018-09-10 | 分类于 java并发编程 |
| 字数统计: 7,907 | 阅读时长 ≈ 37

#HashMap和ConcurrentHashMap的原理,非常重要哦!!!
最近在看JAVA并发编程实践,ConcurrentMap是Concurrent包中一个非常重要的同步容器,在工作中也会使用到它。对于这样的容器,想要最为一个合格的后端攻城狮,必须经常的将它的源码翻出来看看,不然搬砖就搬的太失败了。本文想记录下自己对HashMap和ConcurrentHashMap的分析。
在1.7版本和1.8版本中java的源码发生了巨大的变化,好多之前用ReenTrantLock的貌似都改成了使用CAS或者violatile来实现。只能说HB法则太好用了。。。。

阅读全文 »

深入理解JVM原理 第2章 java运行时数据区

置顶 | 发表于 2018-08-12 | 分类于 JVM虚拟机原理 |
| 字数统计: 2,762 | 阅读时长 ≈ 10

Java内存区域与内存溢出异常

运行时数据区域

java虚拟机在运行程序时会把管理的内存分为几个不同的数据区域,这些区域的作用不同并且创建和销毁的时间不同。java虚拟机将管理的内存分为以下几个数据区域。

阅读全文 »
12
lindexiang

lindexiang

this is personal blog

18 日志
8 分类
44 标签
RSS
GitHub E-Mail
神奇的链接
  • 😆 网易云音乐 😆
  • Coldplay Official Website
  • 获取 Elon Musk 的新闻
  • 尼古拉·特斯拉:发明了现代世界的人
  • 关于此博客
© 2019 lindexiang
0%