
java编程
文章平均质量分 65
sdzrx
bug(⁄ ⁄•⁄ω⁄•⁄ ⁄)
展开
-
Spring框架--spring的jdbcTemlate
一、Spring对不同的持久化支持Spring为各种支持的持久化技术,都提供了简单操作的模板和回调ORM持久化技术模板类JDBCorg.springframework.jdbc.core.JdbcTemplateHibernate5.0org.springframework.orm.hibernate5.HibernateTemplate––IBat...原创 2019-08-17 19:13:44 · 342 阅读 · 0 评论 -
JVM内存模型
1.JVM生命周期1.JVM实例的诞生当启动一个Java程序时,一个jvm实例就产生了,任何一个拥有 public static void main (String[] args) 函数的class都可以作为JVM实例运行的起点2.JVM实例的运行mian()作为该程序的初始线程的起点,任何其他线程均由该线程启动。JVM内部有两种线程:守护线程和非守护线程。main()属于非守护线程,守护...原创 2019-07-26 16:10:49 · 122 阅读 · 0 评论 -
垃圾回收
GC(Garbag Collection)基本原理将内存中不在被使用的对象回收,GC中用于回收的方法称为收集器,由于GC消耗一些资源和时间,Java在对象的生命周期特征分析后,按新生代,旧生代的方式对对象进行收集,尽可能缩短GC对应用造成暂停。对新生代的对象收集称为 Minor GC对旧生代的对象收集称为 Full GC程序中主动调用System.gc()强制执行为Full GCJV...原创 2019-07-26 15:40:05 · 89 阅读 · 0 评论 -
Mybatis框架--全局配置文件中的标签讲解
全局配置文件中的标签在Myabatis框架中的全局配置文件mybatis-config.xml是十分重要的,里面也有许多标签来配置和部署来实现不同的功能,今天我们就来分享一下,全局配置文件中的几个重要的标签1.properties 标签mybatis使用 properties 来引入mybatis使用properties配置文件,里面有两个信息resouce:引入类路景观url:引入磁盘...原创 2019-08-03 16:39:53 · 520 阅读 · 0 评论 -
Mybatis框架--基本介绍
Mybatis介绍Mybatis是一个持久层框架,ORM框架,是Apache下的顶级项目,支持定制化SQL、存储过程以及高级映射。Mybatis避免了JDBC编程编程过程所有的JDBC的代码和手动设置参数以及获取结果集。主要让开发人员机制精力放在SQL上,通过mybatis提供的映射方式获取数据对象关系映射(Object Relational Mapping,简称ORM,或O/RM,或O/R...原创 2019-08-03 15:59:42 · 513 阅读 · 0 评论 -
Netty框架
1.Netty的简介Netty是一个高性能,异步事件驱动的NIO框架,他提供了对TCP、UDP和文件传输的支持。使用更高效的 socket 底层,对epoll空轮询引起的cpu占用飙升在内部进行了处理,避免直接使用NIO陷阱,简化了NIO处理的方式。采用多种decoder/encoder支持,对TCP粘包/分包进行自动化处理。可接受处理线程池,提高连接效率,对重连,心跳检测的简单支持。可配置I...原创 2019-07-25 18:01:13 · 174 阅读 · 0 评论 -
NIO的介绍
NIO是什么?是同步非阻塞,服务器实现模式为一个请求一个线程,即客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有IO请求时才启动一个线程进行处理。连接数目多且连接比较短(轻操作)的架构,比如聊天服务器。JDK1.4引入的一种新型IO。对BIO的一种改进,基于Reactor模型。一个Socket连接其实只有在一小部分情况下才会发生数据 传输IO操作,大部分...原创 2019-07-25 16:46:29 · 229 阅读 · 0 评论 -
BIO与AIO
BIO与AIO的区别BIO:同步阻塞IO买服务器实现模型为一个连击一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,当然可以通过线程池机制改善,适用于连接数目比较小且固定的架构。传统的同步阻塞模型BIO是通过Socket和ServerSocket实现的,ServerSocket监听端口,Socket进行连接。这种情况不适合处理...原创 2019-07-25 16:21:32 · 140 阅读 · 0 评论 -
五种IO模型
在Linux操作系统中,对于一次读取IO的请求操作,数据并不会直接拷贝到用户程序的用户空间缓冲区。它首先会被拷贝到操作系统的内核空间,然后才会从操作系统内核缓冲区拷贝到用户缓冲区。的IO操作分为两步:1.等待数据到达内核缓冲区2.将内核空间数据拷贝到用户空间网络IO 的本质是Socket的读取,Socket在Linux中被当成流。所以网络IO也是对流的读取。下面以read()为例:...原创 2019-07-25 15:55:56 · 110 阅读 · 0 评论 -
网络编程的学习(二)——TCP和UDP
1.TCP协议简介TCP是TCP/IP协议栈中的传输层的协议,TCP协议又叫传输控制协议(Transport Control Protocal),是面向连接的,可靠的字节流服务。它的可靠性体现在:1,滑动窗口机制;2,3次握手建立连接;3,一定的拥塞避免算法;4,流量控制;5,以及一定的超时重传机制。本文不介绍实现原理。首先我们要学习TCP协议,首先当然要了解TCP报文的报文格式,下面就是TC...原创 2019-03-10 16:49:29 · 178 阅读 · 0 评论 -
网络编程的学习(一)
1.网络的概念计算机网络通过通信介质、通过设备和网络以及网络传输协议将分散在不同地点的端口连接,实现资源共享和数据传输的系统。通信设备:信号塔、路由器、交换机传输介质:光纤、电缆、光波、双绞线传输协议:TCP/IP**网络编程:**编写程序代码将联网的两个或者多个设备(计算机)直接进行连接的过程OSI:(Open System Interconnection)网络开发互联协议2. 计...原创 2019-03-10 14:32:47 · 299 阅读 · 0 评论 -
线程池的基础理解
线程池1.理解什么是线程池线程池从字面意思来看,是指管理一组同构工作线程的资源池。现代机器CPU基本都是多核系统,利用多线程可以明显提高系统的效率,但是如果不控制线程的使用,会给系统带来严重的后果,因此,JDK提供了线程池供我们使用。线程池是与工作队列(Work Queue)密切相关的,其中在工作队列中保存了所有等待执行的任务。工作者线程(Worker Thread)的任务很简单:从工作队列获...原创 2019-02-12 11:59:31 · 169 阅读 · 0 评论 -
JDBC编程
啦原创 2019-08-03 11:04:20 · 357 阅读 · 0 评论 -
连接池(c3p0)
一、连接池的介绍连接池是创建和管理一个连接的缓冲池的技术,这些连接准备好被任何需要它们的线程使用。这项技术能明显提高对数据库操作的性能。连接池的好处:(1)对于大多数应用程序,当它们正在处理事务时,仅需要能够访问JDBC连接的 1 个线程。当不处理事务时,这个连接就会闲置(造成资源的浪费)。相反,连接池允许闲置的连接被其它需要的线程使用。(2)当一个线程需要用 JDBC 对一个 数据库操作...原创 2019-08-03 11:26:51 · 239 阅读 · 0 评论 -
Mybatis框架--映射文件操作
一、增删改查接下来我们通过映射文件的操作来实现mybatis对数据库的增删改操作1.EmployeeMapper.xml文件:<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/...原创 2019-08-05 11:48:48 · 201 阅读 · 0 评论 -
Spring框架--AOP注解形式
同样的spring的AOP也有注解形式,而且要比xml配置形式简单的多,具体内容与xml配置方式差不多,下面我们就简单实现一下AOP的注解形式。1.xml配置文件:<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" x...原创 2019-08-17 15:58:27 · 136 阅读 · 0 评论 -
Spring框架--AOP(xml配置形式实现)
一、AOP的简介AOP的全称是 Aspect-Oriented Programming,即面向切面编程(也称面向方面编程)。它是面向对象编程(OOP)的一种补充,目前已成为一种比较成熟的编程方式。在传统的业务处理代码中,通常会进行事务处理、日志记录等操作。虽然OOP可以通过组合或者继承的方式来达到代码的重用,但如果要实现某个功能(如日志记录),同样的代码仍然会分散到各个方法中。这样如果想要关闭...原创 2019-08-17 15:42:28 · 176 阅读 · 0 评论 -
Spring框架--基于IOC的案例
今天我们实现一个小小的IOC的案例,通过spring框架对service层和dao层对象进行管理,c3p0连接池和数据库相连接,通过service对象调用方法实现对数据库的增删改查。1.首先创建一个数据库,在eesy库下创建一张表account,如图:2.引入依赖:<?xml version="1.0" encoding="UTF-8"?><project xmlns=...原创 2019-08-17 14:43:17 · 208 阅读 · 0 评论 -
Spring框架--IOC(注解形式)
一、注解形式的概述:spring的注解形式相对于xml配置方式在编码的过程中要简单很多,他不用再去繁琐的将要spring管理的类去注册到配置文件中,还有一些配置信息也不用写在xml配置文件中,可以写在一个类里面。下面我们就将对一些基本的注解进行讲解,并且以上一个xml配置方式的案例来实现 springIOC的注解形式,最后再对一些新的注解进行介绍二、基本注解的介绍:首先我们需要了解一些基本的...原创 2019-08-17 14:08:10 · 202 阅读 · 0 评论 -
内部类
可以将一个类的定义放在另一个类的定义内部,这就是内部类。内部类是一种非常有用的特性,因为他允许你把一些逻辑相关的类组织在一起,并控制位于内部的类的可视性。然而必须要了解,内部类统一组合是完全不同的概念,这一点很重要。在最初,内部类看起来就像是一种隐藏机制:将类至于其他类的内部。但是,你将会了解到,内部类远不止如此,他了解外围类,并能与之通信;而且你用内部类写出的代码更优雅而清晰,尽管并不总是这样...原创 2019-08-25 17:33:59 · 219 阅读 · 1 评论 -
Spring框架--IOC(配置形式)
一、创建bean的三种方式:1.使用默认构造函数创建:在spring的配置文件中适用bean标签,配以id和class属性之后,且没有其他属性和标签时采用的就是默认构造函数创建bean对象,此时如果此类中没有默认构造函数,则对象无法创建(1)xml配置文件:<bean id="accountService" class="first.com.service.impl.AccountS...原创 2019-08-15 14:48:34 · 129 阅读 · 0 评论 -
Spring框架--简单介绍
简介Spring是分层的Java SE/EE应用full-stack轻量级开源框架,以IOC(Inverse Of Control:控制反转)和AOP(Aspect Oriented Programming:面向切面编程)为内核,提供了展现层Spring MVC和持久层 SpringJDBC以及业务层事务管理众多的企业级应用技术,还能整合开源世界众多著名的第三方框架和类库,逐渐成为使用最多的Ja...原创 2019-08-15 13:58:44 · 181 阅读 · 0 评论 -
Mybatis框架--缓存机制
标题原创 2019-08-08 15:37:40 · 139 阅读 · 0 评论 -
Mybatis框架--动态代理源码分析
标题原创 2019-08-10 14:51:08 · 164 阅读 · 0 评论 -
Mybatis框架--动态SQL
什么是动态SQL?MyBatis 的强大特性之一便是它的动态 SQL,它极大的简化了我们拼接SQL的操作。动态 SQL 元素和使用 JSTL 或其他类似基于 XML 的文本处理器相似。MyBatis 采用功能强大的基于 OGNL 的表达式来消除其他元素。ifchoose(when,otherwise):分支选择 带了break的swtich-casetrim(where,...原创 2019-08-05 14:36:17 · 194 阅读 · 0 评论 -
Mybatis框架--封装Map和List返回结果
select记录封装Map1.编写映射文件:<select id="getEmpByMap" resultType="Bean.Employee"> select * from tbl_employee where id=#{id} and last_name=#{lastName}</select>2.dao层接口方法:public inter...原创 2019-08-05 13:31:26 · 772 阅读 · 0 评论 -
ThreadPoolExecutor
ThreadPoolExecutor源码的学习(基于JDK 1.7)1.继承关系ThreadPoolExecutor就是我们经常说的大名鼎鼎的线程池,Executors工厂创建的线程池都是该类的实例,通过调节参数的大小创建适用于各个场景的线程池。通过源码我们了解到ThreadPoolExecutor继承了AbstractExecutorService,该抽象类为线程池提供了默认实现。2....原创 2019-02-17 16:58:21 · 1434 阅读 · 2 评论 -
实现简单的麻将游戏
实现简单的麻将游戏描述:实现功能点实现麻将的准备牌、洗牌、发牌、看牌知识点集合知识项目思路思路介绍Icon麻将的功能需求分析具体规则:组装136张麻将条、筒、万加到一起的数目是108张东、西、南、北风、红中、白皮、发财是28张,总共136张将136张牌顺序打乱 4.将136张牌顺序打乱四个玩家参与游戏,四人交替摸牌,每次4张,3次,之后庄家摸2张,两张之间个索引相...原创 2018-12-13 13:24:51 · 3009 阅读 · 0 评论 -
猜拳游戏项目
猜拳游戏项目项目功能点:1猜拳游戏,每一把游戏进行三局,可以玩多把,每一局赢者积一分,输者不扣分,平局不计分,三局决胜负。2两人进行猜拳游戏。可以随机选取要比赛的对手。考察知识点:Java类和对象设计思路:1有两方,甲方:玩家(Player) 乙方:电脑(Computer)模拟 进行猜拳游戏2 猜拳开始:赢者积一分,平局不计分,输者不扣分。每次三局决胜负3 每一把游戏决定最终的胜...原创 2018-12-13 13:19:15 · 2582 阅读 · 0 评论 -
HashTable的学习
HashTable的学习一.继承关系,初始默认值,底层数据结构,基本属性,扩容机制底层数据结构: 数组+链表数组的初始大小=11扩容机制:(count &gt;= threshold) 存储entry实体个数大于阈值threshold = (int)Math.min(newCapacity(初始容量值) * loadFactor, MAX_ARRAY_SIZE + 1) //数...原创 2018-11-01 11:21:08 · 241 阅读 · 0 评论 -
HashMap的学习以及源码分析
HashmapHashMap继承AbstractMap类,实现了Map接口(由下图可见),在java集合中,它是一个基本的存储数据的结构。他的底层是由 数组+链表 构成,通过特定的哈希函数从 键(key)来定位值。HashMap的结构形式大概如图所示:构造哈希函数1.直接寻址法f(key) = keyf(key) = a*key+y2.除留余数法f(x) = x%mhas...原创 2018-11-01 10:57:33 · 175 阅读 · 0 评论 -
算法之八大排序
算法之八大排序冒泡排序1.排序思想从无序序列头部开始,进行两两比较,根据大小交换位置,直到最后将最大的数据元素交换带无序队列队尾, 下一次继续这个过程。2.时间复杂度最好情况: O(n) 给出的数据有序 最坏情况: O(n^2) 无序3.空间复杂度O(1)4.稳定性稳定5.用画图的方式结合文字进行总结6.代码实现与分析public s...原创 2018-10-25 15:05:08 · 254 阅读 · 0 评论 -
LinkedList与ArrayList的异同
LinkedList是一个底层为链表的类,LinkedList继承AbstractSequentialList,与ArrayList一样实现AbstractList接口。LinkedList类具有 size(数据个数),node:prio (前驱),node:next(后继)三个特殊的属性。 与ArrayList一样,LinkedList有add,remove,g...原创 2018-10-20 22:39:58 · 171 阅读 · 0 评论 -
ArrayList底层实现以及Iterator
在java集合中,Collection基接口实现List(数组),Set(集合),Queue(队列)三个接口,而List又实现了AbstractList接口,ArrayList类就继承了AbstractList接口。 ArrayList底层就是一个数组,默认数组大小是10,查询效率高,1.5倍扩容,基于数组索引来定位数据,我们在使用的时候可以用两种方法来创建Arr...原创 2018-10-17 23:23:48 · 294 阅读 · 0 评论 -
Start java 学习java之前的准备
冒泡排序:冒泡排序的时间复杂度package com.tulun.src1; //冒泡排序的优化,看你统计10000/100000个元素的排序时间是否提高public class ArrayTest3 { public static void main(String[]args){ int[] array = new int[1...原创 2018-06-09 14:22:51 · 125 阅读 · 0 评论 -
Start java 学习java之前的准备
数组一维数组的三种初始化方式:1.int[] array=new int[]{1,2,3,4};2.int[] array1=new int[4];3.int[] array2={1,2,3,4};二维数组的三种初始化方式:1.int[][] array3=new int[3][4];2.int[][] array4=new int[][]{{1,2,3},{1,2,3...原创 2018-06-09 14:19:46 · 103 阅读 · 0 评论 -
Start java 学习java之前的准备
数组(一维数组 ,二维数组)一维数组和二维数组的拷贝四种方法1.for循环遍历 拷贝方法:package com.tulun.src1; //第一种拷贝方式的一维数组和二维数组 for循环遍历import java.util.Arrays;public class HomeWork4 { public static void main(...原创 2018-06-09 13:59:53 · 165 阅读 · 0 评论 -
Start java 学习java之前的准备
大二了,现在也该是时候为自己而奋斗的时候了 学习java也有一段时间了,虽然这不是我学的第一个编程语言,但显然我对java的兴趣更大。当初决定要学习java时,也下了不少功夫。当然现在也是学习的阶段,我想把当初学习的一些知识和经验总结一下,分享出来,一是对自己学习的一种加深回顾总结,而是希望大家能给我一些建议。 java在初期对于面向对象的理解上确实很难,对于...原创 2018-05-29 13:03:50 · 276 阅读 · 0 评论 -
Start java 学习java之前的准备
首先,配置环境变量。jdk从java官网下载(http://oracle.com/technetwork/java/javase/downloads/jdk7-downloads-2133151.html)打开,环境变量,配置其中的1.JAVA_HOME,更换路径,(路径为装java路径下的jdk路径);2.CLASSPATH3.path。然后就安装成功。20180525 ...原创 2018-05-29 13:22:58 · 187 阅读 · 0 评论 -
类和对象
类类“class”是Java语言的核心,Java的一切类型都是类,所有语句都必须位于类内,Java类库包含大量解决问题(字段),和行为(方法)。对象是基于类的具体实体,有时称为类的实例。类和对象类与对象的关系类似于车型设计和具体的车。车型设计(类)描述了该车型所具备的属性和功能,但车型的设计并不是具体的车,不能发动和驾驶。相应型号的车(对象),则是根据车型设计制造出的车(类的实例),他们都...原创 2018-11-14 12:50:10 · 198 阅读 · 0 评论