Linux基础 一、初识linux 1. linux系统组成 * linux系统内核 * 内核提供系统最核心功能,如调度cpu、调度内存、调度文件系统、调度网络通讯、调度IO等 * 系统级应用程序 * 可以理解为出厂自带程序,如文件管理器、任务管理器、图片查看、音乐播放等 linux系统发行版:ubantu、centos、debian 二、linux基础命令 1. 目录结构 树形结构,linux没有盘符概念,所有文件都在根目录/下。 windows中层级关系用 \ 表示;linux中层次关系用 / 表示,开头的 / 表示根目录 2. 命令入门 command [-option] [parameter] * command 命令本身 * -option 控制命令的行为细节 * parameter 命令参数,多用于命令的指向目标 3. 目录切换 cd
MyBatis MyBatis 1. 什么是MyBatis * MyBatis是一款优秀的持久层框架,用于简化JDBC开发 * http://www.mybatis.cn/ 1.1 持久层 * 负责将数据保存到数据库的一层代码 * JavaEE三层架构:表现层、业务层、持久层 1.2 框架 * 框架就是一个半成品软件,是一套可重用的、通用的、软件基础代码模型 * 在框架基础之上构架软件编写更加高效、规范、通用、可扩展 1.3 JDBC缺点 1. 硬编码 * 注册驱动,获取连接 * SQL语句 2. 操作繁琐 * 手动设置参数 * 手动封装结果集 1.4 MyBatis简化 2. MyBatis快速入门 查询user表中所有数据 1. 创建user表,添加数据 2.
JVM——Java虚拟机 1. 内存结构 1.1 程序计数器 定义:Program Counter Register程序计数器(寄存器) 作用:记住下一条JVM指令的执行地址 特点:线程私有;不会内存溢出。 1.2 虚拟机栈 Java Virtual Machines Stacks(Java虚拟机栈) * 栈-每个线程运行需要的内存空间,每个栈由多个栈帧(Frame)组成 * 栈帧-每个方法运行时需要的内存 * 每个线程只能有一个活动栈帧,对应当前正在执行的那个方法 问题辨析: 1. 垃圾回收是否涉及栈内存?不需要,方法调用结束就会弹出栈 2. 栈内存分配越大越好吗?-Xss size设置栈内存。物理内存一定,栈内存越大,线程数越少。 3. 方法内的局部变量是否线程安全?局部变量安全,引用的对象未必。 1.2.1 栈内存溢出StackOverFlow
Java并发编程 并发编程 线程与进程 进程和线程的概念 进程 * 程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至CPU,数据加载至内存。进程就算用来加载指令、管理内存、管理IO的 * 当一个程序被运行,从磁盘加载这个程序的代码至内存,这时就开启了一个进程。 * 进程就可以视为程序的一个实例。大部分程序可以同时运行多个实例进程。 线程 * 一个进程之内可以分为多个线程 * 一个线程就是一个指令流,将指令流的一条条指令以一定顺序交给CPU执行 * Java中,线程作为最小调度单位,进程作为资源分配的最小单位。在windows中进程是不活动的,只是作为线程的容器。 并发和并行的概念 并行(parallel)是同一时间动手做(doing)多件事情的能力。 并发(concurrent)是同一时间应对(dealing with)多见事情的能力。 线程基本应用 应用之异步调用 从方法调用的角度来讲,如果 * 需要等待结果返回,才能继续运行就是同步 * 不需要等待结果返回,就能继续运行就算异步 应用之提高效率
RabbitMQ 消息中间件 RabbitMQ RabbitMQ Tutorials MQ基础 1.MQ基本概念 MQ 全程 Message Queue(消息队列),是在消息传输过程中保存消息的容器。多用于分布式系统之间进行通信。 优势: * 应用解耦 * 异步提速 * 削峰填谷 劣势: * 系统可用性降低 * 系统复制度提高 * 一致性问题 1.1小结 使用MQ需要满足什么条件: 1. 生产者不需要从消费者处获得反馈。引入消息队列之前的直接调用,其接口的返回值应该为空,这才让明明下层的动作还没做,上层却当动作做完了继续往后走,即所谓异步成为了可能。 2. 容许短暂的不一致性。 3. 收益超过加入MQ、管理MQ成本。 常见MQ产品:RabbitMQ、RocketMQ、kafka AMQP,即Advanced Message Queueing Protocol(高级消息队列协议)是应用层协议的开放标准,为面向消息的中间件设计。 AMQP
Technology 排序算法 目录 冒泡排序 选择排序 插入排序 希尔排序 快速排序 归并排序 计数排序 基数排序 冒泡排序 初步实现 两次完整遍历数组 1. 依次比较数组中相邻两个元素大小,若a[i]>a[i+1]则交换两个元素,两两都比较一遍称为冒泡,结果是让最大的元素排至最后。 2. 重复以上步骤,直到整个数组有序。 减少比较次数 两次循环,一个遍历length次,另一个遍历length - i次。 减少冒泡次数 一次遍历后未发生交换时说明数组有序。 进一步优化 最后一次交换的索引可以作为下一轮冒泡的比较次数。若为零,表示整个数组有序。 public static void main(String[] args){ int n = a.length - 1; for(
Technology MySQL 学习笔记 DDL 数据定义语言 用来定义数据库对象(数据库、表、字段) 数据库操作 # 查询所有数据库 SHOW DATABASES; # 查询当前数据库 SELECT DATABASE(); #创建 CREATE DATABASE [IF NOT EXISTS] 数据库名 [DEFAULT CHARSET 字符集] [COLLATE 排序规则]; # 删除 DROP DATABASE [IF EXISTS] 数据库名; # 使用 USE 数据库名; 表操作 # 查询 # 查询当前数据库所有表 SHOW TABLES; # 查询表结构 DESC 表名; # 查询指定表的建表语句 SHOW CREATE TABLE 表名; # 创建 CREATE TABLE
News Coming soon This is Geek & Tech, a brand new site by KUN TANG that's just getting started. Things will be up and running here shortly, but you can subscribe in the meantime if you'd like to stay up to date and receive emails when new content is published!