- 博客(62)
- 资源 (1)
- 收藏
- 关注
原创 Mac系统 安装MySQL压缩版
MySQL在mac系统上安装有两个版本,一个是安装版(.dmg),一个是压缩版(.zip)。 安装版的安装步骤将在下一篇文章进行描述,这里只介绍压缩版的安装步骤1.下载到官方网站上下载就可以了 https://downloads.mysql.com/archives/community/- 操作系统:Windows/MacOS- 版本号:/5.7.24下载下来的是一个mysql-5.7.24-macos10.14-x86_64.tar.gz的压缩包2.安装第一步: 将mysql-5.
2021-09-16 14:40:04 1225 3
原创 gitbook安装使用看完这一篇就够了
Gitbook使用教程GitBook安装GitBook是一个能将使用 Markdown 语法,快速制作成各种格式电子书的工具。它是一个基于 Node.js 的命令行工具,可以用来制作精美的电子书。首先我们得下载Nodejs并安装注意: 截止到目前的 Gitbook V3.2.3版本,需要使用NodeJs的v10+版本,否则会产生各种报错。这里建议下载v10.23.1版本,官网最新版本我试了也是不行的。先安装Nodejsnodejs历史版本下载连接 https://nodejs.org/zh-
2021-09-09 11:37:17 12278
原创 Redis安装和使用,看完这篇文章就够了
Redis概述redis是以【键-值】形式存储数据的非型数据库,相较于关系型数据库性能更高。可以用于缓存、消息中间件等。Redis 与其他 key - value 缓存产品有以下三个特点:Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。Redis支持数据的备份,即master-slave模式的数据备份。Windows安装Redi
2020-06-12 15:05:32 333 1
原创 10分钟学会NIO技术
NIO的概述NIO是New I/O的简称,与旧式基于流的I/O相对,从名字上来看,它表示新的一套I/O标准。它是从JDK1.4中被纳入到JDK中的。与旧式的IO流相比,NIO是基于Block的,它以块为单位来处理数据,最为重要的两个组件是缓冲区Buffer和通道Channel。缓冲区是一块连续的内存块,是NIO读写数据的载体;通道表示缓冲数据的源头和目的地,它用于向缓冲区读取或者写入数据,是访问缓冲区的接口。Buffer的基本原理Buffer中最重要的3个参数:位置(position)、容量(ca
2020-06-10 17:07:53 650
原创 Java线程状态和线程池
线程的状态线程池的基本概念线程是稀缺资源,如果被无限制的创建和销毁,不仅会消耗系统资源,还会降低系统性能能。合理的使用线程池可以更好的利用CPU的空闲时间,对线程进行统一分配,具体有以下几个好处。1.降低资源消耗2.提高响应速度3.提高线程的可管理性线程池是从JDK1.5之后引入的,线程池中有若干个线程对象,当有任务需要执行时就从池子中拿一个线程过来执行任务,执行完任务之后线程不会被销毁,而是归还到池子给其他要执行的任务复用。这样就避免了频繁的创建线程和销毁线程浪费系统资源,同时也提高了系
2020-06-08 16:04:02 230
原创 最常用的Linux操作命令
Linux目录结构Linux操作系统中没有盘符的划分,所有文件都是存储在根目录上。/root: 该目录为系统管理员,也称作超级权限者的用户主目录。/home: 用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。/etc: 这个目录用来存放所有的系统管理所需要的配置文件和子目录。/usr: 这是一个非常重要的目录,存放系统用户共享资源目录操作列出文件及目录ls //列出当前文件和目录ls -a //列出文件和目录(包含隐藏文件)l
2020-06-06 14:41:56 302 2
原创 Linux用户和文件的权限管理
权限管理资源类型普通文件(-)目录(d)符号链接(l)字符设备文件(c)块设备文件(s)套接字(s)命名管道(p)普通文件: 包括文本文件、数据文件、可执行的二进制程序文件等。目录文件: Linux系统把目录看成是一种特殊的文件,利用它构成文件系统的树型结构。修改权限chmod 变更文件或目录的权限。格式: chmod [参数] <文件>参数: -R 以递归方式更改所有的文件及子目录常用: chmod 755 install.log c
2020-06-06 14:37:00 350
原创 手把手教你MyBatis注解开发
MyBatis注解式单表查询准备测试用的数据库和表-- 创建用户表CREATE TABLE USER( uid INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(20), PASSWORD VARCHAR(20));-- 添加数据INSERT INTO USER(username,PASSWORD) VALUES('zhangsan','123');INSERT INTO USER(username,PASSWORD) VALUES('l
2020-06-06 11:04:32 246
原创 轻松搞定MyBatis多表查询
MyBatis多表查询一对一查询身份证和人员就是一对一的关系,一个人有一张身份证,一张身份证也只属于一个人。准备测试用的数据库和表-- 创建数据库CREATE DATABASE mybatistest3;-- 使用数据库USE mybatistest3;-- 身份证表CREATE TABLE idcard( id INT PRIMARY KEY AUTO_INCREMENT, icode VARCHAR(18));-- 人员表CREATE TABLE person( pid
2020-06-06 11:01:01 199
原创 教你配置MyBatis核心配置文件
MyBatis核心配置文件typeHandlers标签由于Java的数据类型和数据库中的数据类型不太一样,所以有些特定情况下需要类型转换器,用于把Java的数据类型转换为数据库兼容的数据类型,或者把数据库兼容的数据类型转换为Java的数据类型。准备测试数据-- 创建数据库表CREATE TABLE student( id INT PRIMARY KEY AUTO_INCREMENT, uname VARCHAR(20), uage INT, birthday BIGINT);定义St
2020-06-06 10:58:04 482
原创 手动拼接SQL太麻烦,看看MyBatis动态SQL
动态SQL开发人员通常根据需求手动拼接SQL语句,这是一个极其麻烦的事情,而且很容易出错。MyBatis提供了动态组装的功能,允许在SQL语句中加入 <if>、<where>、<when>、<foreach>用于逻辑控制的元素,达到SQL语句根据需要动态变化的效果。我们重新创建一个UserMapperDanmic接口和UserMapperDanmic.xml文件,专门讲解动态SQL语句UserMapperDanmic接口public interfa
2020-06-06 10:54:53 691
原创 MyBatis映射文件深入
MyBatis映射文件深入在实际开发中执行查询SQL语句,经常需要多个参数。那么parameterType属性值的数据类型是什么呢?可以使用是用Map集合的键值对来传递多个参数; 也可以使用JavaBean对象封装多个参数使用Map传递多个参数先写一个在UserMapper接口中添加下面的抽象方法/*查询姓张的男性用户信息*/public List<User> selectAllUserByCondition(Map<String,Object> map);在UserM
2020-06-06 10:53:03 227
原创 MyBatis配置记不住,看这里快速上手
准备工作在学习Mybatis之前,先需要做一些准备工作,以方便后面测试。 使用Maven依赖相关jar包 配置Log4j日志文件 准备好用于测试的数据库 创建实体类MyBatis相关Jar包<dependencies> <!--mybatis--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybati
2020-06-06 10:39:56 358
原创 不理解依赖倒置和控制反转,看完这篇文章就够了
依赖倒置假设我们设计一辆汽车:先设计轮子,然后根据轮子大小设计底盘,接着根据底盘设计车身,最后根据车身设计好整个汽车。这里就出现了一个“依赖”关系:汽车依赖车身,车身依赖底盘,底盘依赖轮子。这样的设计看起来没问题,但是可维护性却很低。假设设计完工之后,上司却突然说根据市场需求的变动,要我们把车子的轮子设计都改大一码。这下我们就蛋疼了:因为我们是根据轮子的尺寸设计的底盘,轮子的尺寸一改,底盘的设计就得修改。同样因为我们是根据底盘设计的车身,那么车身也得改,同理汽车设计也得改——整个设计几乎都得改!我们
2020-06-04 23:34:30 1006 2
原创 一篇文章讲清楚Java动态代理
Java动态代理概述首先我们解释一下代理是什么意思,大家的微信里有很多做微商的朋友。很多微商的销售模式就是代理模式。比如店主小二在微信朋友圈卖衣服,小王看到了小二发的朋友圈就找小二买衣服,而小二只是一个代理商,它的衣服是从小一那里拿的。在这个过程中小二就是小一的代理,代理对卖衣服这个行为进行的增强,把原来10块钱一件的衣服卖到了20块,并且购买成功还赠送小礼品。Java动态代理指的是在程序运行时,为已有对象生成代理对象,对原有对象的方法进行功能增强。目标接口和实现类JDK动态代理要求目标类(被代
2020-06-04 11:42:39 316
原创 数据库图形化界面工具SQLyog
SQLyog图形化界面工具SQLyog 是一个快速而简洁的图形化管理MYSQL数据库的工具,它能够在任何地点有效地管理你的数据库,由业界著名的Webyog公司出品。SQLyog下载下载SQLyog可以到官网https://www.webyog.com进行下载,在学习阶段可以下载14天试用版本,网上也有很多破解的版本,构建文明社会还是支持正版比较好。填写用户资料SQLyog安装这里我使用的是12.0.9-0.x64的版本。双击即可安装。安装的时候如果需要注册信息,可以填写下面的姓名和序列号,不
2020-06-04 11:32:59 1915
原创 JDBC连接池Durid连接池、c3p0连接池
JDBC连接池概述数据库连接池是一个用来存放数据库连接的容器。当系统初始化好后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对象,用户访问完之后,会将连接对象归还给容器。Java给开发者提供了数据库连接池的标准接口DataSource在javax.sql包下。有很多公司对数据库连接池接口规范进行实现。这里我们介绍两种1. C3P0:数据库连接池技术2. Druid:数据库连接池实现技术,由阿里巴巴提供的。准备数据库数据先准备一些数据,在account表中添加2
2020-06-04 11:22:47 313
原创 轻松搞定JDBC操作MySQL数据库
JDBC是什么?JDBC是Java DataBase Connectivity的简称,代表数据库连接。其实是由Java官方(Sun公司)提供的一套操作数据库的接口规范。由各个数据库厂商实现JDBC这套接口,提供数据库驱动包jar文件。这样我们不需要知道各个数据库的实现原理,只需要通过JDBC这套接口提供的API就可以去操作各种数据库,真正执行的是驱动jar包中的实现类。JDBC使用步骤这里我们以MySQL数据库为例,演示JDBC的使用步骤。先准备好要操作的数据库和表-- 创建数据库db4CRE
2020-06-04 11:14:18 304
原创 MySQL数据库用户管理和授权
数据库用户管理和授权SQL分类复习SQL分类具体操作DDL操作数据库和表DML增删改表中数据DQL查询表中数据DCL管理用户,授权DBA:数据库管理员,专门对数据库进行管理和授权的的相关操作。用户管理mysql数据库中有一个user表,用来存储用户的信息。查询用户-- 1. 切换到mysql数据库USE myql;-- 2. 查询user表SELECT * FROM USER;* 通配符: % 表示可以在任意主机使用用户登录数据库
2020-06-04 11:02:40 436
原创 MySQL事物管理、事物的隔离级别
事务事务概述事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行。例如:张三给李四转账500元钱,需要让三账户的余额-500,李四的账户余额+500,转账是一个连续的过程,要么同时成功,要么同时失败。不能出现张三转出了500块,而李四没收到的情况,这将是很严重的问题。事务的基本使用先准备一张accunt表,添加两个账户信息,如下-- 创建一个账户表CREATE TABLE account ( id INT PRIMARY KEY AUTO_INCREMEN
2020-06-04 10:52:29 159
原创 看完这篇文章MySQL多表查询不用愁
多表查询多表查询就是结合几张表的数据进行查询,先准备几张表和一些数据。-- 创建部门表create table dept( id int primary key auto_increment, name varchar(20));-- 添加部门数据insert into dept (name) values ('开发部'),('市场部'),('财务部');-- 创建员工表create table emp ( id int primary key auto_increment, n
2020-06-04 10:35:33 361 1
原创 MySQL数据库备份与还原你会了吗
数据库备份和还原数据库备份不需要登录mysql,直接输入下面的命令mysqldump -u用户名 -p密码 数据库名称 > 保存的路径数据库还原按照步骤执行下面的命令1. 登录数据库mysql -u用户名 -p密码;2. 创建数据库create database 数据库名称;3. 使用数据库use 数据库名称;4. 执行文件。source 文件路径source sql文件路径...
2020-06-04 10:17:09 195
原创 数据库设计多表关系、范式
数据库的设计在实际项目开发的时候可能设计到多张表,表与表之间存在一定关系,如何设计表之间的关系让系统更加优化,需要考虑到多表之间关系。1. 一对一(了解) * 如:人和身份证 * 分析:一个人只有一个身份证,一个身份证只能对应一个人2. 一对多(多对一) * 如:部门和员工 * 分析:一个部门有多个员工,一个员工只能对应一个部门3. 多对多 * 如:学生和课程 * 分析:一个学生可以选择很多门课程,一个课程也可以被很多学生选择一对多关系一个部门可以有多个员工,一个员工只能对应一个部
2020-06-04 09:59:26 1321
原创 MySQL约束看完这篇文章就够了
约束约束用来对表中的数据进行限定,保证数据的正确性,完整性和有效性。这里我们学习4中约束,【主键约束】【非空约束】【唯一约束】【外键约束】非空约束:not null唯一约束:unique主键约束:primary key外键约束:foreign key非空约束非空约束指某一列的值不能为NULL-- 创建stu表,添加name属性的非空约束CREATE TABLE stu( id INT, NAME VARCHAR(20) NOT NULL -- name非空约束);-- 删除n
2020-06-04 09:53:52 220
原创 SQL语句之排序、聚合、分组、分页查询
DQL高级查询在查询之前,我们也先准备好一些数据-- 创建db2数据库CREATE DATABASE db2;-- 使用db2数据库USE db2;-- 数据student数据表CREATE TABLE student ( id INT, -- 编号 NAME VARCHAR(20), -- 姓名 age INT, -- 年龄 sex VARCHAR(5), -- 性别 address VARCHAR(100), -- 地址 math INT, -- 数学 english INT
2020-06-04 09:39:29 902
原创 SQL语句之增、删、改、查、基本查询
SQL语句基础SQL概述什么是SQLStructured Query Language:结构化查询语言其实就是定义了操作所有关系型数据库的规则。每一种数据库操作的方式存在不一样的地方,称为“方言”。SQL通用语法1. SQL 语句可以单行或多行书写,以分号结尾。2. 可使用空格和缩进来增强语句的可读性。3. MySQL 数据库的 SQL 语句不区分大小写,关键字建议使用大写。4. 3 种注释 * 单行注释: -- 注释内容 或 # 注释内容(mysql 特有) * 多行注释:
2020-06-03 18:10:29 2241 1
原创 Windows系统安装MySQL和配置
MySQL安装与配置MySQL下载进入MySQL的官网,看不懂英文不要紧,我们看图选择对应的版本号、操作系统下载即可。这里我们选择5.5.40版本,其他本部也可以下载好了是这样的MySQL 安装双击进入安装向导,如图所示点击next下一步勾选协议,点击next下一步选择custom用户自定义安装点击Browse 修改安装路径可以修改,我使用默认路径。next进入下一步点击instll安装MySQL Server勾选复选框进入配置向导,点击finish完成安装MySQL
2020-06-03 18:06:35 204
原创 JavaSE常见的异常总结
JavaSE常见的异常总结在写代码的时候不可能不出现问题,遇到问题能够第一时间解决问题是每一个开发人员必备的技能。解决这些问题,就需要靠我们平时的积累。你遇到的问题多了,并且善于总结,以后遇到同样的问题就不在话下了。ArrayIndexOutofBoundsException数组索引越界异常 数组索引超过索引最大值或最小值,就会出现这个异常。 int[] arr={1,2,3,4,5}; for(int i=1;i<=arr.lengthi++){ System.out.pri
2020-06-03 17:44:59 268
原创 收藏这些正则表达式就够了
很多不太懂正则的朋友,在遇到需要用正则校验数据时,往往是在网上去找很久,结果找来的还是不很符合要求。所以我最近把开发中常用的一些正则表达式整理了一下,在这里分享一下。给自己留个底,也给朋友们做个参考。一、校验数字的表达式 1 数字:^[0-9]*$ 2 n位的数字:^\d{n}$ 3 至少n位的数字:^\d{n,}$ 4 m-n位的数字:^\d{m,n}$ 5 零和非零开头的数字:^(0|[1-9][0-9]*)$ 6 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9
2020-06-03 17:43:54 98
原创 IDEA常用快捷键大全都在这里了
自动代码Ctrl+Alt+O 优化导入的类和包 Alt+Insert 生成代码(如get,set方法,构造函数等) 或者右键(Generate) fori/sout/psvm + Tab Ctrl+Alt+T 生成try catch 或者 Alt+enter CTRL+ALT+T 把选中的代码放在 TRY{} IF{} ELSE{} 里 Ctrl + O 重写方法 Ctrl + I 实现方法 Ctr+shift+U 大小写转化 ALT+回车 导入包,自动修正 AL
2020-06-03 17:38:07 247
原创 通俗易懂讲Java注解
注解概述注解刚开始学确实不太好理解,我尝试着用一些例子帮助大家理解,继续往下看,静下心来慢慢体会。看到注解这个词,很容易让我们联想到注释,但是它和注释有很大的不同,注释是解释说明程序的文字,是给人看的;但是注解是由代码组成的,有其特殊的语法(如类、接口等,注解也可以看做是一种特殊的数据类型)我们可以把每一个注解看做是一个【标签】,并且每一个标签有不同的含义,如果把这个标签贴在某个的物体上,那么就认为这个物体具备这个标签的含义。注解就是用代码写的一种特殊的【标签】,它可以给类、成员变量、方法、接口
2020-06-03 17:31:52 224
原创 跟我学Java 反射的基本用法
Java的反射机制,首先得从Java字节码入手,为了方便理解给大家举个例子,如图我们可以把Java的反射机制看做是一个照妖镜,它可以让类的字节码(Class文件)现出原形,也就是获取到字节码的各个组成部分。在Java的世界里万物皆对象,类的字节码和类的各个组成部分都是对象,而每一个对象都有与之对应的类,关系如下类的组成部分类名字节码Class表示成员变量Field表示构造方法Constructor表示成员方法Method表示获取字节码要去做反射的操
2020-06-03 17:26:39 226
原创 Stream流使用的详细介绍
Stream流式编程Java 8引入了全新的Stream API。这里的Stream和I/O流不同。它提供一种对 Java 集合运算和表达的流式编程方式,大大提高Java程序员的生产力,让程序员写出高效率、干净、简洁的代码。少废话,咱们先来体验一把//打印输出集合中,姓张并且者长度为3的元素public class StreamDemo1 { public static void main(String[] args) { ArrayList<String> li
2020-06-03 17:22:31 868
原创 jdk8的新特性之lambda表达式
在学习Lambda表达式之前,我们先得到了解一个知识点叫做 函数式接口函数式接口只有一个抽象方法的接口,叫函数式接口,它是Lamdba表达式的使用前提。在学习多线程的时候Runnable接口就是一个函数式接口,如下public interface Runnable{ public void run();}在学习Collections工具类的的[sort](chapter5\5.2 Collections.html#方法演示 )方法时,我们讲到Comparator接口用于可以用于排序。pu
2020-06-03 16:22:25 275
原创 网络编程UDP和TCP通信
网络编程顾名思义就是编写能够进行网络数据交互的应用程序。网络编程三要素在学习网络编程之前我们必须了解一些有关网络的一些关键词。【ip地址】 ip地址用来标识网络中的一台主机,在同一个局域网中ip地址不能重复。 分为ipv4和ipv6 - IpV4: 4个字节 4*8=32位 如:192.168.1.11 - IpV6: 16个字节 16*8=128位 如:fe80::2ca8:cc7e:bef0:a1cf%1
2020-06-03 16:20:14 208
原创 Thread和Runnable实现线程
多线程概述每个正在系统上运行的程序都是一个进程。每个进程包含一到多个线程,它负责在单个程序里执行多任务,这样的程序就叫做多线程程序。通常由操作系统]负责多个线程的调度和执行。进程和线程当我们打开一个程序的时候,这个程序就处于运行状态。正在运行的程序其实就是 进程 快捷键 ctrl+shift+esc 打开任务管理器可以看到正在运行的进程。也可以在这里结束进程。当我使用迅雷下来的时候,可以同时下载几个软件。其实就是开了几条 线程。一个进程可以包含多个线程。迅雷就是一个多线程程序线程的随机性在一
2020-06-03 15:58:12 525
原创 等待和唤醒实现Java线程间通信
Java的线程间通信,其实就是利用等待和唤醒机制达到多个线程之间协调工作的目的。1. 等待和唤醒Object类中有两个方法,wait()和notify()。这两个方法时在多线程中被锁对象调用的。因为所对象可以是任意对象,为了让任意对象都能调用这两个方法,所以把这两个方法设计到了Object方法中void wait() 让当先正在执行的线程进入无限等待状态void notify() 唤醒正在等待的线程很经典的一个例子,就是生产者和消费者的案例。假设包子铺生产一个包子,吃货就要吃一个包子
2020-06-03 15:51:40 146
原创 Java 对象序列化流
在学习对象序列化流之前,我们先解释一下什么序列化和反序列化序列化:把对象当做字节写入文件反序列化:把文件中的对象读取出来简单说对象序列化流就是用来写对象和读对象的。Java提供了ObjectOuputStream用来写对象;ObjectInputStream用来读对象。ObjectOutputStream是OutputStream的子类,写对象时需要依赖于FileOutputStream;ObjectInputStream是InputStream的子类,写对象时需要依赖于FileInputSt
2020-06-03 15:38:27 182
原创 Java标准的输入输出流
5.标准输入输出流标准的输入输出流简单了解一下就可以了,实际开发时一般用不着。标准的输入流System.in表示标准的输入流,用来从读取从键盘录入的数据,本质上就是一个InputStream看下面代码演示,从键盘录入数据。public class SystemInDemo{ public static void main(String[] args){ //System.in的数据源是控制台键盘录入的数据 InputStream in=System.in;
2020-06-03 15:37:19 1258
原创 Java基础综合练习题
猜数字小游戏随机产生一个[1,100]范围内的数据,采用键盘录入的方式猜这个数字是多少。如果键盘录入的数字比随机数大,输出猜大了如果键盘录入的数字比随机数小,输出猜小了如果键盘录入的数字比随机相同,输出猜中了如果猜大了或者猜小了可以重复猜,如果猜中了就游戏结束。//随机产生一个[1,100]范围内的数据Random r=new Random();int num=r.nextInt(100)+1; //采用键盘录入你猜的整数Scanner sc=new Scanner(System.in
2020-06-03 15:32:54 3397
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人