- 博客(100)
- 资源 (1)
- 收藏
- 关注

原创 java学习-记录生活
个人搭建网站:生活小工具账号/密码:112/112java基础 1.java运算符2. java多线程 2.1多线程的简单应用 2.2多线程的进阶学习 2.3多线程-lock的使用 2.4线程池和线程返回值 2.5多线程的测试用例编写3. java IO...
2018-05-11 11:19:05
401
原创 java线程池--初步了解线程池
当时觉得自己菜,写的没深度,放弃了。这次希望自己坚持下去,加油博客主页:知识积累个人网站:个人网站今天我们简单来学习一下java线程池的基本知识,了解一个简单的运行流程。线程池的流程图大概就是图中这几步。jdk版本为1.8注意看类的包路径,我一开始就看错了类,看到了tomcat里面的线程池去了,而且类名什么的还都一样,实现是不一样的。java的线程池的类都在 package java.util.concurrent 包下,注意别看错了!1 创建线程池1.1 了解.
2020-09-18 18:47:37
319
原创 java搭建个人网站,可以解析图片经纬度、改变图片格式和大小、帮你帮送匿名邮件、实现简单的长连接聊天室
个人网站地址:http://106.15.198.170/:6888 超链接实现功能:发送邮件。 解析手机图片获取定位信息。 改变图片格式和大小。 翻译。 查询邮编。 查询天气。 上传文件。 生产二维码。 查询图片、批量下载某度图片、某瓣图片。练手之余,希望得到更多的建议,了解更多的东西,不断成长。...
2019-11-12 14:36:10
388
原创 mysql简单总结存储结构+函数+视图+触发器
1 存储结构定义:存储过程就是多个sql语句的组合,并加上一定的逻辑。优点:1 第一次执行存储过程,mysql会编译该存储过程的语句,后续再执行该存储过程,无需编译,直接执行。普通的sql语句,每次运行都要先编译后执行,所以存储过程会比普通的sql执行速度较快一点。2 如果存在多个复杂的数据库操作,在代码中执行一个个sql,为了保证数据库数据库的一致性,只能通过事务来解决,如果全部...
2019-09-25 19:06:17
297
原创 Spring-boot + redis + jedisPool
简单的配置Speing-boot + redispom文件:<!--redis--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-redis</artifactId>...
2018-10-31 11:44:30
2254
原创 Speing-Boot学习 搭建一个简单的Spring-boot + mybatis
首先先来认识一下Spring-boot框架,该框架是对Spring框架的进一步集成,设计目的就是简化Spring应用的搭建和开发过程。优点如下:对第三方插件封装和整合,提供第三方接口 无需配置复杂的XML 提供安全等特性 核心功能-自动配置 内嵌式 web服务器(Tomcat、Jetty等) 提供POM,简化Maven配置接下来,搭建一个最简单的spring-boot+mybati...
2018-10-30 19:15:58
709
原创 3 spring cloud hystrix学习
Spring Cloud Hystrix定义:当线程调用服务时,因为服务的故障而出现长时间的等待的情况时,hystrix会返回一个错误响应,防止该线程长时间挂起而影响其他线程的性能。我们将之称为断路器。1 快速开始首先启动一个Eureka服务,端口为7001,服务名叫做sb-eureka然后启动两个provider服务,端口为7011和7021,服务名都叫做sb-provider,...
2018-10-22 15:58:40
153
原创 命令模式-最简单的例子
命令模式:定义:将来自客户端的请求封装起来,从而让你可以使用不同的客户端请求,该模式可以将行为请求者和行为执行者解耦,从而使两者适应变化。 命令模式的五个对象命令Command:真实命令RealCommand:行为执行者Receiver:行为请求者Invoker: 编写例子:Command:public interface Command { ...
2018-10-22 11:29:15
1682
原创 Spring-cloud学习 Eureka
本博文是连贯的博文,请从第一篇开始阅读spring-boot+spring-cloud学习Eureka介绍:Spring Cloud Eureka是Srping Cloud Netflix微服务套件中的一部分,基于Netflix Eureka做了二次封装,主要负责完成微服务架构中的服务治理功能。拥有服务注册中心、服务提供者、服务消费者三种角色。 1 快速搭建一个EureKa服务注册...
2018-10-19 20:39:53
338
原创 1 Spring-Cloud学习 看一个最简单的例子
什么是Spring-boot将一个独立的系统拆分成多个小型服务,服务之间通信基于HTTP的restful api进行通信写作。 Spring-Cloud的优缺点 优点: 服务组件化:各服务可以快速升级。 可以按业务组织团队: 去中心化处理:各个服务,尽量解耦 使用Http的RestFul请求模式 缺点:...
2018-10-19 16:55:30
255
原创 多线程的测试用例编写
1 测试的类继承TestCase2 测试的方法名必须是test开头3 使用TestRunnable创建线程类4 使用MultiThreadedTestRunner运行多线程,这个类需要导包,导包语句如下: <dependency> <groupId>net.sourceforge.groboutils</groupId> ...
2018-10-15 19:18:03
1003
原创 AtomicLong的原理
AtomicLong定义在32位操作系统中,64位的long 和 double 变量由于会被JVM当作两个分离的32位来进行操作,所以不具有原子性。而使用AtomicLong能让long的操作保持原子型所以平常用long的时候,多线程重复操作同一个long类型数据时,结果会不准确AtomicLong相当于Synchrnized的long。类结构:public class Atom...
2018-10-13 17:47:59
2247
原创 TreeSet的实现原理
TreeSet的实现原理基于TreeMap,请阅读该博文前,先学习TreeMap的实现原理。类结构public class TreeSet<E> extends AbstractSet<E> implements NavigableSet<E>, Cloneable, java.io.Serializable成员变量private tra...
2018-10-08 14:02:53
825
原创 LinkedHashSet的实现原理
LinkedHashSet,底层都是通过LinkedHashMap实现的,阅读本博文前请先了解LinkedHashMap。类结构public class LinkedHashSet<E> extends HashSet<E> implements Set<E>, Cloneable, java.io.Serializable继承了Ha...
2018-10-07 17:06:15
1249
原创 HashSet的实现原理
HashSet特点:保证集合中存储的值都是唯一不重复的,若插入重复的值,重复的值会替换掉原来的值。底层由HashMap实现。所以学习HashSet时,请先学习HashMap,学习HashMap可以看看这个链接。类结构: public class HashSet<E> extends AbstractSet<E> implements Set&l...
2018-10-07 16:38:34
4310
原创 LinkedList的实现原理
定义:底层实现为双向链表。类结构:public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, java.io.Serializable成员变量:size:已...
2018-09-19 20:08:04
215
原创 ArrayList的原理
ArrayList是我们经常使用的集合类。底层是通过数组实现的!先看一下实现原理图由图可知,ArrauyList是按顺序存储数据的。类结构public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, ...
2018-09-19 14:49:59
1043
原创 LinkedHashMap的实现原理
观看该篇文章时,请先了解HashMap的底层原理!LinkedHashM定义:哈希表和链表实现的映射接口,具有可预测的迭代顺序。这个实现不同于HashMap,因为它维护一个遍历其所有条目的双向链表。这个链表定义了迭代顺序,这通常是键插入到映射中的顺序(插入顺序)。如果键是已经插入过的,则会直接返回true。先给张大概的原理图:LinkedHashMap每一次存值时,都会往链表的...
2018-09-18 20:31:19
1046
原创 TreeMap的实现原理
TreeMap的原理(jdk1.7)TreeMap的底层实现基于二叉树的红黑树,插入的值是按一定顺序排序的。TreeMap的构造方法TreeMap有四个构造方法 1 public TreeMap() { comparator = null; } 创键空的TreeMap,采用自然排序 2 public TreeM...
2018-09-17 20:48:08
1711
原创 HashMap的源码实现
1 HashMap概述本文描述的是JDK1.7在了解HashMap之前,我们来了简单的了解一下其他数据结构。我们知道,数据结构的物理存储结构只有两种:顺序存储结构和链式存储结构(像栈,队列,树,图等是从逻辑结构去抽象的,映射到内存中。数组:采用一段连续的存储单元来存储数据。对于指定下标的查找,时间复杂度为O(1);通过给定值进行查找,需要遍历数组,逐一比对给定关键字和数组元素,时间...
2018-09-14 19:13:13
441
原创 idea运行提示Error:java:无效的源发行版:1.8
我们使用idea编译器切换jdk版本的时候,经常会出现这些错误。以下是我总结的经验首先,File -- > Ptoject Structure然后 File -- >Setting如果使用了maven,记得修改pom文件配置的jdk版本如何还不行,查看iml配置文件这下就ok了!...
2018-09-08 15:28:00
4563
1
原创 java的NIO
(该篇只是概述,详细记录请点这里)1 NIO和IO的区别 IO是面向流的,NIO是面向缓冲区的 IO是阻塞的,NIO是可以阻塞也可以不阻塞的! IO每一次IO请求都需要一个线程,而NIO可以用一个线程去管理多个IO请求。2 NIO的主要成分 NIO主要包括三个部分:缓冲区、通道、选择器。 通道注册在选择器上,选择器上用一个线程去跑...
2018-09-05 21:07:50
167
原创 NIO选择器
1 选择器基础您需要将之前创建的一个或多个可选择的通道注册到选择器对象中。 一个表示通道和选择器的键将会被返回。 选择键会记住您关心的通道。 它们也会追踪对应的通道是否已经就绪。 当您调用一个选择器对象的 select()方法时,相关的键值会被更新,用来检查所有被注册到该选择器的通道。 您可以获取一个键的集合,从而...
2018-09-05 19:56:54
991
原创 NIO通道
通道接口允许您以一种受控且可移植的方式来访问底层的 I/O服务。Channel 用于在字节缓冲区和位于通道另一侧的实体(通常是一个文件或套接字)之间有效地传输数据。1 通道基础您可以从顶层的 Channel 接口看到,对所有通道来说只有两种共同的操作:检查一个通道是否打开(IsOpen())和关闭一个打开的通道(close())。public interface Channel...
2018-09-03 21:08:56
215
原创 NIO缓冲区
缓冲区定义:缓冲区是包在一个对象内的基本数据元素数组。1.1属性所有的缓冲区都具有四个属性来提供关于其所包含的数据元素的信息容量(Capacity)缓冲区能够容纳的数据元素的最大数量。这一容量在缓冲区创建时被设定,并且永远不能被改变。上界(Limit)缓冲区的第一个不能被读或写的元素。或者说,缓冲区中现存元素的计数。位置(Position)下一个要被读或写的元素的索引。位置...
2018-09-01 17:48:04
472
1
原创 多线程例子
实现ABC交互打印:使用synchronizedpublic class RunTest { private Object a= new Object(); private Object b= new Object(); private Object c= new Object(); @Test public void get() throws I...
2018-07-24 22:23:58
142
原创 直接插入排序
定义:将一个记录插入到已经排好序的序表中,从而得到一个新的,记录数增1的有序表。我们要排序的数组是 2,3,1,5,8,9,7,4,6,升序。要增加一个元素0,当做排序时的哨兵,加了哨兵后,数组元素为 0,2,3,1,5,8,9,7,4,6。第一步:哨兵右边的第一个值与哨兵左边的所有值进行比较, 并插入其中,因为才是哨兵左边没有值,所以直接插入。 数组元素为: 2,0,3,1,5,...
2018-07-19 16:09:42
774
原创 简单选择排序
定义:通过关键字的比较。从n-i+1个记录中选出关键字最小的记录,并和第i个记录交互之。理解:每次找到最小值,才进行值交换。@Testpublic void easyChoseSort(){ int[] a = {3,5,1,2,9,8,6,7,10,4}; int middle = 0;//值交换的时候的中间值 for (int i = 0; i < a.length; i...
2018-07-19 14:46:19
234
原创 冒泡排序
冒泡排序的原理:相邻两个数据进行两两比较,然后将偏大或偏小的数据向一方移动。1:简单冒泡排序@Test public void normalBubble(){ int middle; for (int i = 0; i < a.length; i++) { for(int j = 0; j < a.length-...
2018-07-19 13:55:18
865
原创 Speng4整合ActiveMq
首先下载activeMq。下载路径:http://activemq.apache.org/download.html点进去后,选择自己想要的版本。这里要注意!activeMq版本5.0以上的要用jdk1.8,我下载的是版本4。下载后解压,到解压目录..\apache-activemq-5.14.5-bin\apache-activemq-5.14.5\bin\win64下运行activemq.ba...
2018-07-04 20:07:13
147
原创 Spring4配置MongoDB
首先要导的包:pom.xml<!-- mongodb java driver --> <dependency> <groupId>org.mongodb</groupId> <artifactId>mongo-java-driver</artifactId> ...
2018-07-03 11:17:32
1099
原创 虚拟机字节码执行引擎
1 概述 代码编译是从本地机器码转变为字节码。执行引擎是java虚拟机最核心的组成部分之一。虚拟机是一个相对于物理机的概念。物理机的执行引擎是直接建立在处理器、硬件、指令集和操作系统层面上,虚拟机的执行引擎则是由自己实现。不同虚拟机实现里面,执行引擎在执行java代码的时候可能有解释执行和编译执行两种选择。执行引擎都是一致的:过程都是输入的是字节码文件,处理过程是字节码解析的等效...
2018-06-25 15:51:04
239
原创 虚拟机类加载机制
定义:虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的java类型,这就是虚拟机的类加载机制。1 概述在java语言里面,类型的加载和连接过程都是在程序运行期间完成的,增加性能开销,但是能增加灵活性。java中天生可以动态扩展的语言特性就是依赖运行期动态加载和动态连接这个特点实现的。2 类加载的时机类加载的生命周期:加载、验证、准备...
2018-06-22 16:33:29
275
原创 虚拟机性能监控与故障处理工具
1 JDK的命令行工具JDK的命令行工具就是JDK目录中的“java.exe”和“javac.exe”这两个命令工具。1.1 jps:虚拟机进程状况工具功能和Unix的ps命令类似,可列出正在运行的虚拟机进程,并显示虚拟机执行主类(Main Class,main()函数所在的类)的名称,以及这些经常的本地虚拟机的唯一ID。对于本地虚拟机进程来说,LVMID与操作系统的进程ID是一致的。使用wind...
2018-06-13 17:54:26
211
原创 垃圾收集器与内存分配策略
垃圾收集就是我们常说的GC,GC做的事情就三种:1.那些内存需要回收? 2.什么时候回收? 3.如何回收?而在java虚拟机中,程序计数器、虚拟机栈、本地方法栈这三个内存区域是随线程而生,随线程而灭。所以这几个区域的内存回收问题不需要太多考虑。因为方法结束或线程结束时,内存自然就被回收。java堆和方法区就不会这样,所以我们要重点关注java堆和方法区的内存回收。GC收集垃圾,第一件事情,确定哪些...
2018-06-13 11:48:26
187
原创 java虚拟机--自动内存管理机制
Java虚拟机在执行java程序的时候会把它所管理的内存划分为若干个不同的数据区域。java虚拟机内存分布java虚拟机内存分布图接下来我们分别来解释各个内存区的作用。程序计数器定义:程序计数器是一块较小的内存空间,它的作用可以看做是当前线程执行的字节码的行号指示器,即由他告诉线程下一步该执行哪行的代码。对于多线程来说,各个线程之间的计数器互不影响,独立存储,我们称这类内存区域为"线程私有"内存。...
2018-06-08 14:52:13
257
原创 java学习笔记--自己看的
java基础 1.java运算符 2.java多线程 2.1 多线程的简单应用 2.2 多线程的进阶学习 2.3 多线程-lock的使用 3.java IO 3.1 最简单的IO例子 4.java初始化 4.1 java的初始化和垃圾回收 5.java集合容器 5.1 java容器的简单学...
2018-06-07 13:37:58
130
原创 工厂模式
例子来自于《Head First 设计模式》工厂模式简单分为三种:简单工厂模式、工厂模式、抽象工厂模式。简单工厂简单工厂模式,不像一个设计模式,反而像我们的一种编程习惯。举个例子。卖pizza。定义pissa:public class Pizza { public void prepare(){}; public void bake(){}; public void cut...
2018-06-06 14:44:48
217
原创 mysql 的连接查询及合并查询
mysq 的连接查询分为内连接查询及外连接查询内连接查询:inner join on:两边的数据进行笛卡尔积操作。外链接查询:left join:以左边为主。righr join:以右表为主。创建测试表:create table join2(id int auto_increment not NULL primary KEY,name varchar(30))engine...
2018-06-02 17:09:28
3437
原创 装饰模式
本例来自《大话设计模式》装饰模式定义:动态地给一个对象添加一个额外的职责,就增加功能来说,装饰模式比生成子类更灵活。描述:装饰模式是利用一个方法来对对象进行包装。这样每个装饰对象的实现就和如何使用这个例子分离开了。每个装饰对象只关心自己的功能,不需要关心如何被添加到对象链当中。装饰模式是为已有功能动态地添加更多功能的一种方式。装饰模式是为已有功能动态地添加更多功能的一种方式。例子:穿衣服,用衣服来...
2018-05-30 11:00:20
129
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人