黄小华的个人网站
熬过无人问津的日子才有诗和远方!
深入理解操作系统原理
线程与进程的区别 进程是操作系统进行资源分配的基本单位 线程是CPU调度的基本单位。 进程有自己独立的逻辑上连续地址空间。线程基本不拥有系统资源,只有一点运行必不可少的资源(程序计数器,一组寄存器,线程栈),所有线程共享进程所拥有的资源。 线程间通信效率高,开销小,进程间通信系统开销大,效率差。线程...
2020-07-30
Lua数据结构
Lua中的table不是一种简单的数据结构,它可以作为其它数据结构的基础。如数组、记录、线性表、队列和集合等,在Lua中都可以通过table来表示。 一、数组 在lua中通过整数下标访问表中的元素即可简单的实现数组。并且数组不必事先指定大小,大小可以随需要动态的增长。 a = {} for i = ...
2020-07-21
lua学习
一、Lua简介及应用 想像你住在一栋装潢完毕的别墅里,却可以通过手中的平板任意修改房间布局、家具摆放和色彩格调,只要有足够的资源和强大的架构手段,将别墅变成巴比伦空中花园也未尝不可能。 Lua就是类似于你手中平板一样的工具。 Lua设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功...
2020-07-21
Lua语法练习
题目一、给一个表,表里有5个数,在[0-13]之间,其中0可以表示任意数,判断这个表是否连续? 思路: 连续的条件: 1、表中都是0 2、表中有4个0 3、0个数不大于3,经过排序之后除去0之外,最大值减去最小值的差小于5 注意:要排除掉除去0之外的数里面有相同的数 local list = {0...
2020-07-15
Mysql主从同步
1 master,记录数据更改操作 启用binlog日志 设置binlog日志格式 设置server_id 2slave运行2个线程 Slave_io:复制master主机binlog日志文件里的sql到本机的relay-log文件里 Slave_sql:执行本机relay_log文件里的sql语...
2020-07-07
MySql调优
SQL调优学习笔记 SQL优化的5个方面 1.服务器硬件性能(机械硬盘换固态硬盘) 2.MySql服务器优化 3.SQL语句本身优化 4.反范式设计优化(阿里规范) 5.索引优化 3 通过日志找到总时间最慢的几个查询 mysql可以查询到记录所有查询执行时间超过loog-query-time参数设定...
2020-06-30
通过volatile了解缓存一致性协议
Java语言提供了一种稍弱的同步机制,即volatile变量,用来确保将变量的更新操作通知到其他线程。当把变量声明为volatile类型后,编译器与运行时都会注意到这个变量是共享的,因此不会将该变量上的操作与其他内存操作一起重排序。volatile变量不会被缓存在寄存器或者对其他处理器不可见的地方,...
2020-06-29
浅析Synchronized关键字和Lock
一 Synchronized简介 Synchronized是java内置的关键字。代表这个方法加锁,相当于不管哪一个线程,运行到这个方法时,都要检查有没有其它线程正在用这个方法(或者该类的其他同步方法),有的话要等正在使用synchronized方法的线程运行完这个方法后再运行此线程,没有的话,锁定...
2020-06-28
Java线程池
线程池概念 线程池: 简单理解,它就是一个管理线程的池子。 优势 (1)、降低系统资源消耗,通过重用已存在的线程,降低线程创建和销毁造成的消耗; (2)、提高系统响应速度,当有任务到达时,通过复用已存在的线程,无需等待新线程的创建便能立即执行; (3)方便线程并发数的管控。因为线程若是无限制的创建,...
2020-06-28
Java类加载机制
Java程序通过编译器javac后变成.class字节流文件,类加载器就将.class加载到JVM中。 类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的...
2020-06-27