
java
文章平均质量分 74
hanxh7
这个作者很懒,什么都没留下…
展开
-
java高并发系列-第三篇:有关并行的两个重要定律
有关为什么要使用并行程序的问题前面已经进行了简单的探讨。总的来说,最重要的应该是处于两个目的。第一,为了获得更好的性能;第二,由于业务模型的需要,确实需要多个执行实体。在这里,我将更加关注第一种情况,也就是有关性能的问题。将串行程序改造为并发程序,一般来说可以提高程序的整体性能,但是究竟能提高多少,甚至说究竟是否真的可以提高,还是一个需要研究的问题。目前,主要有两个定律对这个问题进行解...原创 2019-11-27 15:26:24 · 174 阅读 · 0 评论 -
java高并发系列-第二篇: 并发级别
由于临界区的存在,多线程之间的并发必须受到控制。根据控制并发的策略,我们可以把并发的级别分为阻塞、无饥饿、无障碍、无锁、无等待几种。阻塞一个线程是阻塞的,那么在其他线程释放资源之前,当前线程无法继续执行。当我们使用synchronized关键字或者重入锁时,我们得到的就是阻塞的线程。synchronize关键字和重入锁都试图在执行后续代码前,得到临界区的锁,如果得不到,线程就会被挂起等...原创 2019-11-27 15:16:26 · 152 阅读 · 0 评论 -
java高并发系列-第一篇:必须知道的几个概念
同步(Synchronous)和异步(Asynchronous)同步和异步通常来形容一次方法调用,同步方法调用一旦开始,调用者必须等到方法调用返回后,才能继续后续的行为。异步方法调用更像一个消息传递,一旦开始,方法调用就会立即返回,调用者就可以继续后续的操作。而异步方法通常会在另外一个线程中“真实”地执行。整个过程,不会阻碍调用者的工作。如图:上图中显示了同步方法调用和异步方法调用...原创 2019-11-27 14:27:01 · 142 阅读 · 0 评论 -
Redis缓存、高可用、持久化(下)
一,Redis作缓存服务器 本篇博客是接着上一篇博客未分享完的技术点。 redis作为缓存服务器是众多企业中的选择之一,虽然该技术很成熟但也是存在一定的问题。就是缓存带来的缓存穿透,缓存击穿,缓存失效问题,继而引用分布式锁。1.1,缓存穿透 在如今的项目中大多采用垂直的MVC架构,由service层去调用DAO层,然后DAO层再去查询数据库。而redis作为缓存服务器就是在s...原创 2019-11-20 15:56:21 · 119 阅读 · 0 评论 -
Redis的五种数据结构原理分析(中)
本章主要内容简单介绍redisredis中的五种数据结构分析应用场景分析总结关于Redisredis是一个开源的使用C语言编写的一个kv存储系统,是一个速度非常快的非关系远程内存数据库。它支持包括String、List、Set、Zset、hash五种数据结构。除此之外,通过复制、持久化和客户端分片等特性,用户可以很方便地将redis扩展成一个能够包含数百GB数据和每秒处理上百万次...原创 2019-11-19 16:10:39 · 113 阅读 · 0 评论 -
Redis的常用命令与Java整合及高级应用篇(上)
一,redis是什么? 首先数据库分为关系型数据库和非关系型数据库,关系型数据库是采用关系模型来组织数据的数据库,简单来说就是二维表格模型,同时保证事务的一致性。 相反非关系型数据库采用key-value形式进行存储,是一种数据结构化存储方法的集合,具有分布式性质。 Redis是当前比较热门的NOSQL系统之一,它是一个开源的使用ANSI c语言编写的key-value存储系统(...原创 2019-11-15 15:32:53 · 222 阅读 · 0 评论 -
牛B的MySQL学习笔记
Windows服务-- 启动MySQL net start mysql-- 创建Windows服务 sc create mysql binPath= mysqld_bin_path(注意:等号与值之间有空格)连接与断开服务器mysql -h 地址 -P 端口 -u 用户名 -p 密码SHOW PROCESSLIST -- 显示哪些线程正在运行SHOW VAR...原创 2019-11-14 17:44:50 · 100 阅读 · 0 评论 -
Mysql系列 - 第二十七篇:mysql数据库如何确保数据不丢失?有几点值得我们借鉴
这是Mysql系列第27篇。本篇文章我们先来看一下mysql是如何确保数据不丢失的,通过本文我们可以了解mysql内部确保数据不丢失的原理,学习里面优秀的设计要点,然后我们再借鉴这些优秀的设计要点进行实践应用,加深理解。预备知识 mysql内部是使用b+树的结构将数据存储在磁盘中,b+树中节点对应mysql中的页,mysql和磁盘交互的最小单位为页,页默认情况下为16kb,表中的数据...原创 2019-11-14 15:40:56 · 943 阅读 · 0 评论 -
Mysql系列 - 第二十六篇:聊聊mysql实现分布式锁?
这是Mysql系列第26篇。本篇我们使用mysql实现一个分布式锁。分布式锁的功能 分布式锁使用者位于不同的机器中,锁获取成功之后,才可以对共享资源进行操作 锁具有重入的功能:即一个使用者可以多次获取某个锁 获取锁有超时的功能:即在指定的时间内去尝试获取锁,超过了超时时间,如果还未获取成功,则返回获取失败 能够自动容错,比如:A机器获取锁lock1之后,...原创 2019-11-14 15:39:05 · 114 阅读 · 0 评论 -
Mysql系列 - 第二十五篇:sql中where条件在数据库中提取与应用浅析
这是Mysql系列第25篇。读本篇文章之前,需要先了解一些知识: 什么是索引? mysql索引原理详解 mysql索引管理详解 如何正确的使用索引? 上面3篇文章没有读过的最好去读一下,不然后面的内容会难以理解。问题描述一条SQL,在数据库中是如何执行的呢?相信很多人都会对这个问题比较感兴趣。当然,要完整描述一条SQL在数据库中的生命周期,这是一...原创 2019-11-14 15:38:04 · 222 阅读 · 0 评论 -
Mysql系列 - 第二十四篇:如何正确的使用索引?
这是Mysql系列第24篇。学习索引,主要是写出更快的sql,当我们写sql的时候,需要明确的知道sql为什么会走索引?为什么有些sql不走索引?sql会走那些索引,为什么会这么走?我们需要了解其原理,了解内部具体过程,这样使用起来才能更顺手,才可以写出更高效的sql。本篇我们就是搞懂这些问题。读本篇文章之前,需要先了解一些知识: 什么是索引? mysql索引原理详解 ...原创 2019-11-14 15:36:08 · 230 阅读 · 0 评论 -
Mysql系列 - 第二十三篇:MySQL索引原理详解(下)
这是Mysql系列第23篇。环境:mysql5.7.25,cmd命令中进行演示。代码中被[]包含的表示可选,|符号分开的表示可选其一。关于索引的,可以先看一下前2篇文章: 什么是索引? mysql索引原理详解 本文主要介绍mysql中索引常见的管理操作。索引分类分为聚集索引和非聚集索引。聚集索引每个表有且一定会有一个聚集索引,整个表的数据存储在聚集索...原创 2019-11-14 15:33:37 · 132 阅读 · 0 评论 -
Mysql系列 - 第二十二篇:MySQL索引原理详解(上)
这是Mysql系列第22篇。背景使用mysql最多的就是查询,我们迫切的希望mysql能查询的更快一些,我们经常用到的查询有: 按照id查询唯一一条记录 按照某些个字段查询对应的记录 查找某个范围的所有记录(between and) 对查询出来的结果排序 mysql的索引的目的是使上面的各种查询能够更快。预备知识什么是索引?上一篇中有详细...原创 2019-11-14 15:32:12 · 164 阅读 · 0 评论 -
Mysql系列 - 第二十一篇:什么是索引?
这是Mysql系列第21篇。本文开始连续3篇详解mysql索引: 第1篇来说说什么是索引? 第2篇详解Mysql中索引的原理 第3篇结合索引详解关键字explain 本文为索引第一篇:我们来了解一下什么是索引?路人在搞计算机之前,是负责小区建设规划的,上级领导安排路人负责一个万人小区建设规划,并提了一个要求:可以快速通过户主姓名找到户主的房子;让路人出个好的解...原创 2019-11-13 10:42:27 · 114 阅读 · 0 评论 -
Mysql系列 - 第十九篇:游标使用
这是Mysql系列第19篇。环境:mysql5.7.25,cmd命令中进行演示。代码中被[]包含的表示可选,|符号分开的表示可选其一。需求背景当我们需要对一个select的查询结果进行遍历处理的时候,如何实现呢?此时我们需要使用游标,通过游标的方式来遍历select查询的结果集,然后对每行数据进行处理。本篇内容 游标定义 游标作用 游标使用步骤 ...原创 2019-11-13 10:32:08 · 179 阅读 · 0 评论 -
Mysql系列 - 第十八篇:流程控制语句(高手进阶)
这是Mysql系列第18篇。环境:mysql5.7.25,cmd命令中进行演示。代码中被[]包含的表示可选,|符号分开的表示可选其一。上一篇存储过程&自定义函数,对存储过程和自定义函数做了一个简单的介绍,但是如何能够写出复杂的存储过程和函数呢?这需要我们熟练掌握流程控制语句才可以,本文主要介绍mysql中流程控制语句的使用,上干货。本篇内容 if函数 c...原创 2019-11-13 09:56:41 · 119 阅读 · 0 评论 -
Mysql系列 - 第十七篇:存储过程&自定义函数详解
这是Mysql系列第17篇。环境:mysql5.7.25,cmd命令中进行演示。代码中被[]包含的表示可选,|符号分开的表示可选其一。需求背景介绍线上程序有时候出现问题导致数据错误的时候,如果比较紧急,我们可以写一个存储来快速修复这块的数据,然后再去修复程序,这种方式我们用到过不少。存储过程相对于java程序对于java开发来说,可能并不是太好维护以及阅读,所以不建议在程序中去...原创 2019-11-08 16:39:57 · 247 阅读 · 0 评论 -
Mysql系列 - 第十六篇:变量详解
这是Mysql系列第16篇。环境:mysql5.7.25,cmd命令中进行演示。代码中被[]包含的表示可选,|符号分开的表示可选其一。我们在使用mysql的过程中,变量也会经常用到,比如查询系统的配置,可以通过查看系统变量来了解,当我们需要修改系统的一些配置的时候,也可以通过修改系统变量的值来进行。我们需要做一些批处理脚本的时候,可以使用自定义变量,来做到数据的复用。所以变量这块也...原创 2019-11-08 16:14:08 · 158 阅读 · 0 评论 -
Mysql系列 - 第十五篇:详解视图
这是Mysql系列第14篇。环境:mysql5.7.25,cmd命令中进行演示。需求背景电商公司领导说:给我统计一下:当月订单总金额、订单量、男女订单占比等信息,我们啪啦啪啦写了一堆很复杂的sql,然后发给领导。这样一大片sql,发给领导,你们觉得好么?如果领导只想看其中某个数据,还需要修改你发来的sql,领导日后想新增其他的统计指标,你又会发送一大坨sql给领导,对于领导来说...原创 2019-11-08 16:02:43 · 171 阅读 · 0 评论 -
Mysql系列 - 第十四篇:详解事务
这是Mysql系列第14篇。环境:mysql5.7.25,cmd命令中进行演示。开发过程中,会经常用到数据库事务,所以本章非常重要。本篇内容 什么是事务,它有什么用? 事务的几个特性 事务常见操作指令详解 事务的隔离级别详解 脏读、不可重复读、可重复读、幻读详解 演示各种隔离级别产生的现象 关于隔离级别的选择 什么是...原创 2019-11-08 15:41:22 · 97 阅读 · 0 评论 -
Mysql系列 - 第十三篇 :细说NULL导致的神坑,让人防不胜防
这是Mysql系列第13篇。环境:mysql5.7.25,cmd命令中进行演示。当数据的值为NULL的时候,可能出现各种意想不到的效果,让人防不胜防,我们来看看NULL导致的各种神坑,如何避免?比较运算符中使用NULL认真看下面的效果mysql>select1>NULL;+--------+|1>NULL|+--------+|NU...原创 2019-11-07 15:40:12 · 126 阅读 · 0 评论 -
Mysql系列 - 第十二篇:子查询(非常重要,高手必备)
这是Mysql系列第12篇。环境:mysql5.7.25,cmd命令中进行演示。本章节非常重要。子查询出现在select语句中的select语句,称为子查询或内查询。外部的select查询语句,称为主查询或外查询。子查询分类按结果集的行列数不同分为4种 标量子查询(结果集只有一行一列) 列子查询(结果集只有一列多行) 行子查询(结果集有一行多列...原创 2019-11-07 15:25:24 · 164 阅读 · 0 评论 -
Mysql系列 - 第十一篇:深入理解连接查询与原理
这是Mysql系列第11篇。环境:mysql5.7.25,cmd命令中进行演示。当我们查询的数据来源于多张表的时候,我们需要用到连接查询,连接查询使用率非常高,希望大家都务必掌握。本文内容 笛卡尔积 内连接 外连接 左连接 右连接 表连接的原理 使用java实现连接查询,加深理解 准备数据2张表:t_tea...原创 2019-11-07 08:50:50 · 139 阅读 · 0 评论 -
Mysql系列 - 第十篇:常用的几十个函数详解
这是Mysql系列第10篇。环境:mysql5.7.25,cmd命令中进行演示。MySQL 数值型函数函数名称 作 用 abs 求绝对值 sqrt 求二次方根 mod 求余数 ceil 和 ceiling 两个函数功能相同,都是返回不小于参数的最小整数,即向上取整 floor 向下取整,返回值转化为一个BIGINT rand...原创 2019-11-07 08:37:04 · 175 阅读 · 0 评论 -
Mysql系列 - 第九篇 :分组查询详解(group by & having)
这是Mysql系列第9篇。环境:mysql5.7.25,cmd命令中进行演示。本篇内容 分组查询语法 聚合函数 单字段分组 多字段分组 分组前筛选数据 分组后筛选数据 where和having的区别 分组后排序 where & group by & having & order b...原创 2019-11-06 17:07:09 · 326 阅读 · 0 评论 -
Mysql系列 - 第八篇 :详解排序和分页(order by & limit),及存在的坑
这是Mysql系列第7篇。环境:mysql5.7.25,cmd命令中进行演示。代码中被[]包含的表示可选,|符号分开的表示可选其一。本章内容 详解排序查询 详解limit limit存在的坑 分页查询中的坑 排序查询(order by)电商中:我们想查看今天所有成交的订单,按照交易额从高到低排序,此时我们可以使用数据库中的排序功能来完成。...原创 2019-11-06 16:00:02 · 208 阅读 · 0 评论 -
Mysql系列 - 第七篇:玩转select条件查询,避免采坑
这是Mysql系列第7篇。环境:mysql5.7.25,cmd命令中进行演示。电商中:我们想查看某个用户所有的订单,或者想查看某个用户在某个时间段内所有的订单,此时我们需要对订单表数据进行筛选,按照用户、时间进行过滤,得到我们期望的结果。此时我们需要使用条件查询来对指定表进行操作,我们需要了解sql中的条件查询常见的玩法。本篇内容 条件查询语法 条件查询运算符详解(...原创 2019-11-06 15:17:07 · 211 阅读 · 0 评论 -
Mysql系列 - 第六篇:select 查询基础篇
这是Mysql系列第6篇。环境:mysql5.7.25,cmd命令中进行演示。DQL(Data QueryLanguage):数据查询语言,通俗点讲就是从数据库获取数据的,按照DQL的语法给数据库发送一条指令,数据库将按需求返回数据。DQL分多篇来说,本文属于第1篇。基本语法select查询的列from表名;注意:select语句中不区分大小写,SELECT和...原创 2019-11-06 15:01:34 · 210 阅读 · 0 评论 -
Mysql系列 - 第五篇:DML操作汇总,确定你都会?
这是Mysql系列第5篇。环境:mysql5.7.25,cmd命令中进行演示。DML(Data Manipulation Language)数据操作语言,以INSERT、UPDATE、DELETE三种指令为核心,分别代表插入、更新与删除,是必须要掌握的指令,DML和SQL中的select熟称CRUD(增删改查)。文中涉及到的语法用[]包含的内容属于可选项,下面做详细说明。插入操作...原创 2019-11-06 14:54:09 · 149 阅读 · 0 评论 -
Mysql系列 - 第四篇:DDL常见操作汇总
这是Mysql系列第4篇。环境:mysql5.7.25,cmd命令中进行演示。DDL:Data Define Language数据定义语言,主要用来对数据库、表进行一些管理操作。如:建库、删库、建表、修改表、删除表、对列的增删改等等。文中涉及到的语法用[]包含的内容属于可选项,下面做详细说明。库的管理创建库createdatabase[ifnotexists]...原创 2019-11-06 14:40:54 · 116 阅读 · 0 评论 -
Mysql系列 - 第三篇 :管理员必备技能(必须掌握)
这是mysql系列第3篇文章。环境:mysql5.7.25,cmd命令中进行演示。在玩mysql的过程中,经常遇到有很多朋友在云上面玩mysql的时候,说我创建了一个用户为什么不能登录?为什么没有权限?等等各种问题,本文看完之后,这些都不是问题了。本文主要内容 介绍Mysql权限工作原理 查看所有用户 创建用户 修改密码 给用户授权 ...原创 2019-11-06 14:31:46 · 293 阅读 · 0 评论 -
Mysql系列 - 第二篇 :详解mysql数据类型(重点)
这是mysql系列第2篇文章。环境:mysql5.7.25,cmd命令中进行演示。主要内容 介绍mysql中常用的数据类型 mysql类型和java类型对应关系 数据类型选择的一些建议 MySQL的数据类型主要包括以下五大类 整数类型:bit、bool、tinyint、smallint、mediumint、int、bigint 浮点数类型:...原创 2019-11-06 14:11:11 · 184 阅读 · 1 评论 -
Mysql系列 - 第一篇:mysql基础知识
本文主要内容 背景介绍 数据库基础知识介绍 mysql的安装 mysql常用的一些命令介绍 SQL分类 背景介绍我们每天都在访问各种网站、APP,如微信、QQ、抖音、今日头条、腾讯新闻等,这些东西上面都存在大量的信息,这些信息都需要有地方存储,存储在哪呢?数据库。所以如果我们需要开发一个网站、app,数据库我们必须掌握的技术,常用的数据库有...原创 2019-11-06 11:06:30 · 172 阅读 · 0 评论 -
log4j.properties配置详解与实例
最近使用log4j写log时候发现网上的写的都是千篇一律,写的好的嘛不全,写的全一点的嘛没有一点格式,看着累。这里把网上收集到的整理了一下,并且全部都在机器上测试成功了。这么好的文档估计没有了吧? ################################################################################ #①配置根Logger,其语法为: # ...原创 2018-03-16 10:51:06 · 132 阅读 · 0 评论 -
Log4j 详细讲解
日志是应用软件中不可缺少的部分,Apache的开源项目log4j是一个功能强大的日志组件,提供方便的日志记录。在apache网站:jakarta.apache.org/log4j 可以免费下载到Log4j最新版本的软件包。一、入门实例1.新建一个JAva工程,导入包log4j-1.2.17.ja...原创 2018-03-19 12:34:22 · 217 阅读 · 0 评论 -
互联网协议入门(一)
我们每天使用互联网,你是否想过,它是如何实现的?全世界几十亿台电脑,连接在一起,两两通信。上海的某一块网卡送出信号,洛杉矶的另一块网卡居然就收到了,两者实际上根本不知道对方的物理位置,你不觉得这是很神奇的事情吗?互联网的核心是一系列协议,总称为"互联网协议"(Internet Protocol Suite)。它们对电脑如何连接和组网,做出了详尽的规定。理解了这些协议,就理解了互联网的原理。下面就是...原创 2018-03-20 16:03:03 · 134 阅读 · 0 评论 -
互联网协议入门(二)
上一篇文章分析了互联网的总体构思,从下至上,每一层协议的设计思想。这是从设计者的角度看问题,今天我想切换到用户的角度,看看用户是如何从上至下,与这些协议互动的。七、一个小结先对前面的内容,做一个小结。我们已经知道,网络通信就是交换数据包。电脑A向电脑B发送一个数据包,后者收到了,回复一个数据包,从而实现两台电脑之间的通信。数据包的结构,基本上是下面这样:发送这个包,需要知道两个地址:* 对方的MA...原创 2018-03-20 16:08:15 · 136 阅读 · 0 评论 -
JavaWeb开发入门学习数据库连接池总结(五)
一、应用程序直接获取数据库连接的缺点 用户每次请求都需要向数据库获得链接,而数据库创建连接通常需要消耗相对较大的资源,创建时间也较长。假设网站一天10万访问量,数据库服务器就需要创建10万次连接,极大的浪费数据库的资源,并且极易造成数据库服务器内存溢出、拓机。如下图所示: 二、使用数据库连接池优化程序性能2.1、数据库连接池的基本概念 数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的...原创 2018-03-09 17:08:10 · 158 阅读 · 0 评论 -
JavaWeb开发入门学习http协议总结(四)
一、什么是HTTP协议 HTTP是hypertext transfer protocol(超文本传输协议)的简写,它是TCP/IP协议的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的过程。客户端连上web服务器后,若想获得web服务器中的某个web资源,需遵守一定的通讯格式,HTTP协议用于定义客户端与web服务器通迅的格式。二、HTTP协议的版本 HTTP协议的版本:HTT...原创 2018-03-09 15:43:59 · 131 阅读 · 0 评论 -
JavaWeb开发入门学习Tomcat总结(三)
一、打包JavaWeb应用 在Java中,使用"jar"命令来对将JavaWeb应用打包成一个War包,jar命令的用法如下:范例:将JavaWebDemoProject这个JavaWeb应用打包成war包 执行完之后,就可以得到一个文件,平时开发完JavaWeb应用后,一般都会将JavaWeb应用打包成一个war包,然后将这个war包放到Tomcat服务器的webapps目录下,当Tomca...原创 2018-03-09 11:10:51 · 149 阅读 · 0 评论