![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
jclih
阳光,玻璃房,躺椅,macbook pro
展开
-
jdbc为什么使用java.sql包中的接口而不使用com.mysql.jdbc包中的类?
jdbc为什么使用java.sql包中的接口而不使用com.mysql.jdbc包中的类?原创 2017-12-28 21:31:26 · 3445 阅读 · 0 评论 -
B-Tree的查找、插入和删除(java实现)
一、java Beanpackage com.hgldp.web.pojo;import java.util.LinkedList;/** * @author hgl * @data 2018年11月3日 * @description b-tree 结点 */public class BSTNode { /* * 关键字数量 */ private int keyn...原创 2018-11-04 22:06:08 · 848 阅读 · 1 评论 -
spring boot 集成springmvc和mybatis
一、项目结构(maven项目)二、pom文件<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven....原创 2018-11-07 18:06:16 · 355 阅读 · 0 评论 -
mybatis 查询返回结果封装成map而不是
一、背景最近项目中有个导出excel缓慢,数据量也不是很大,每次限制5000条,sql查询很快,问题出现在把数据库中的原因代号转化为字符串的过程。原代码是把查询出来的结果进行for循环,然后一个个的根据reasonId去查数据库,再把结果set到bean中,导致非常缓慢。二、优化策略优化的策略是一次把结果查询出来,然后存储到map中,以reasonId作为key,reasonBean作为va...原创 2018-11-05 14:49:24 · 4411 阅读 · 0 评论 -
银行家算法(java实现)--避免进程死锁
public class Banker {/* * 资源的种类 */private final int RESOUCE_NUM = 3;/* * 进程的数量 */private final int PROCESS_NUM = 3;/* * 可获取每种资源的数量的数组 */private int[] available = new int[RESOUCE_NUM];/...转载 2018-12-09 13:46:56 · 1436 阅读 · 0 评论 -
java 匿名内部类对象持有外部类对象的引用
转载自:https://www.jianshu.com/p/9335c15c43cf/** * @author hgl * @data 2019年1月10日 * @description 接口 */public interface TestInterface { public void innerMethod();}/** * @author hgl * @data 20...转载 2019-01-10 14:59:20 · 4267 阅读 · 0 评论 -
应用通信协议与序列化协议(区别)
通信协议与序列化协议一、通信协议:如http协议,dubbo协议、websocket协议等二、序列化协议:protobuf协议、json协议、xml等原创 2019-04-21 19:57:00 · 1290 阅读 · 0 评论 -
java Finalizer陷阱
java Finalizer陷阱java中使用可达性分析来确定对象是否需要回收,即使是不可达的对象,也不是“非死不可”的,这时候他们暂时处于“缓刑”阶段,要真正宣告一个对象死亡,至少要经历两次标记过程:如果对象在进行可达性分析后发现没有与GC Roots相连接的引用链,那它将会被第一次标记并且进行一次筛选,筛选的条件是此对象是否有必要执行finalize()方法。当对象没有覆盖finalize(...转载 2019-04-19 10:52:15 · 268 阅读 · 0 评论 -
grpc--demo(参考官网说明看demo)
1.grade配置文件(官网上有gradle及maven的配置说明)plugins { id 'java' id 'com.google.protobuf' version '0.8.8'}group 'com.hgl.dp.io.grpc'version '1.0-SNAPSHOT'sourceCompatibility = 1.8targetCompatibil...原创 2019-04-24 16:21:08 · 1253 阅读 · 0 评论 -
Java 8-Lambdas(Notes)
(摘自https://www.oracle.com/technetwork/articles/java/architect-lambdas-part1-2080972.html)1.Type inference.One of the features that some other languages have been touting is the idea of type inferenc...转载 2019-05-06 15:27:30 · 191 阅读 · 0 评论 -
测试ExecutorService的关闭和终止方法
1.shutdown()public static void main(String[] args) throws InterruptedException { ExecutorService executorService = Executors.newFixedThreadPool(1); Runnable[] runnables = new Runnabl...原创 2019-05-09 16:20:37 · 2860 阅读 · 2 评论 -
HashMap源码窥探(jdk 7)
一、在实际开发中,使用hashMap的场景较多,也需要了解底层的实现,能更好的使用它,个人理解,如有不妥,望指正。二、HashMap的数据结构 HashMap的数据结构是一个数组,数组中存储的是entry,而entry是一个单向的链表结构,entry中的元素包括(key,value,hsah,entry),entry代表的是下一个entry。为什么会采用这种结构?个人理解是HashMap...转载 2018-08-26 17:30:53 · 158 阅读 · 0 评论 -
快速排序(Java)
一、概念 快速排序(Quick Sort)是对起泡排序的一种改进。它的基本思想是,通过一趟排序将待排序的记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。 二、图解 三、Java代码package com.hgldp.web;import java.util.Arrays;p...原创 2018-07-07 17:38:07 · 411 阅读 · 0 评论 -
获取jdk的历史版本
1 首先登陆Oracle官网https://www.oracle.com/cn/index.html? 2 在本页最下面找到这个模块 3 点击“下载面向开发人员的java”,出现页面后,再点击“Downloads”标签 4 在本页面找到这个模块,这个模块的意思是“Java存档“,点击右边的“download” 5 出现如下的页面 6 然后找到需要的版本,这里以ja...原创 2018-05-16 20:23:20 · 816 阅读 · 0 评论 -
获取文件的MD5值
转载自:http://blog.csdn.net/xiao__gui/article/details/8148203对文件进行MD5也可以像字符串MD5一样的,首先要把文件转成字节数组,后面和字符串MD5完全一样。但是如果是一个特别大的文件,一下子把一个文件的数组全部读到内存中,那么估计内存也吃不消。对于大文件,可以使用DigestInputStream。转载 2018-01-22 21:34:11 · 588 阅读 · 0 评论 -
策略模式
1 模式的设计原则 * 封装变化 * 多用组合,少用继承 * 针对接口编程,不针对实现编程2 策略模式代码示例/** * @author hgl * @data 2018年4月18日 * @description 鸭子的父类(抽象类) */public abstract class Duck { /* * 为行为接口类型声明两个引用变量,所有鸭子子类...原创 2018-04-18 22:47:54 · 121 阅读 · 0 评论 -
struts2(2.3.15.3 版本)action实现ModelDriven封装实体失败案例
1 实体类public class User { private String username; private String password; public String getUsername() { return username; } public void setUsername(String username) ...原创 2018-05-01 23:44:36 · 260 阅读 · 0 评论 -
单件模式(单例模式)
1 单件模式:确保一个类只有一个实例,并提供一个全局访问点。2 经典的单件模式实现public class Singleton { private static Singleton uniqueInstance; private Singleton(){ } public static Singleton getInstance(){ ...原创 2018-05-12 18:56:57 · 914 阅读 · 0 评论 -
简单工厂-工厂方法-抽象工厂模式
新增一个OO设计原则: 要依赖抽象,不要依赖具体类 1 简单工厂针对接口编程,可以隔离掉以后系统可能发生的一大堆改变。为什么呢?如果代码是针对接口而写,那么通过多态,它可以与任何新类实现该接口。但是,当代码使用大量的具体类时,等于是自找麻烦,因为一旦加入新的具体类,就必须改变代码。也就是说,你的代码并非“对修改关闭”。想用新的具体类型来扩展代码,必须重新打开它。所以,当遇到这样的问题时,...原创 2018-05-06 14:48:57 · 214 阅读 · 0 评论 -
命令模式(一)
1 需求 设计一个家电自动化遥控器的API * 这个遥控器一共有7个可编程的插槽(每个都可以指定到一个不同的家电装置),每个插槽都有对应的开关按钮。这个遥控器还具备一个整体的撤销按钮。 * 有一组Java类,这些类是由多家厂商开发出来的,用来控制家电自动化装置,如电灯泡,风扇,热水器和音响等。 * 创建一组控制遥控器遥控的API,让每个插槽都能够控制一个或一组装置。注意:能够控制目前...原创 2018-05-20 15:09:11 · 533 阅读 · 0 评论 -
命令模式(二)
10 为遥控器加上撤销功能/** * @author hgl * @data 2018年5月20日 * @description 电灯 (示例三) */public class NewLight { private String message; public NewLight(String message) { super(); ...原创 2018-05-20 17:38:11 · 126 阅读 · 0 评论 -
命令模式(三)
11 让遥控器具备“Party模式” 遥控器按下一个按钮,就可以打开电灯,打开CD等等,同时具备一键撤销功能。厂商类:/** * @author hgl * @data 2018年5月20日 * @description 音响 (示例四) */public class Stereo { private String message; public Stereo...原创 2018-05-20 21:01:15 · 195 阅读 · 0 评论 -
java_利用虚引用关闭相关的资源
转载自: https://blog.csdn.net/tugangkai/article/details/79593495gc回收对象时关闭相关的流一、代码1、FileOperationpublic class FileOperation { private FileOutputStream outputStream; private FileInputStream inp...转载 2019-05-24 14:25:41 · 339 阅读 · 0 评论