
java
「已注销」
好好学习 天天向上
展开
-
Spring是如何实现单例模式的?
Spring是通过注册表实现单例的,Ioc容器维护了一个bean表格,当需要一个单例bean时,从表格中获取,没有获取到的,向表格注册一个新的bean。源码就不贴了。 ...原创 2018-12-13 15:06:40 · 1715 阅读 · 0 评论 -
Java中的Byte类型的取值范围为啥是-128到127
基本概念机器数:一个数在计算机中表示叫机器数,带有符号位,正数为0,负数为1。 如:00000011 和 10000011真值:带符号位的机器数的真正数值叫做机器数的真值。 如: 0000 0001的真值 = +000 0001 = +1 ;1000 0001的真值 = –000 0001 = –1原码:第一位是符号位,其余位数值。 如:+1的原码 =...原创 2018-12-24 22:26:28 · 462 阅读 · 0 评论 -
JDK8接口的默认方法与静态方法-接口与抽象类的区别
引入JDK1.8后,接口允许定义默认方法与静态方法,如:Iterable类中的foreach方法。public interface Iterable<T> { /** * Returns an iterator over elements of type {@code T}. * * @return an Iterator. *...原创 2018-12-18 00:18:31 · 896 阅读 · 0 评论 -
依赖倒置、控制反转、依赖注入之间的关系
简单介绍 依赖倒置:Dependency Inversion Principle(DIP) 依赖倒置原则,高层模块不应该依赖于低层模块。两者都应该依赖于抽象。抽象不应该取决于细节。细节应该取决于抽象。 控制反转:Inversion of Control(IoC)控制反转,是面向对象编程的一种原则,用来降低代码之间的耦合度,由外部的容器提供组件,由主动获取变为被动。 依赖注...原创 2018-12-11 20:14:48 · 386 阅读 · 0 评论 -
说说了解的JVM
Run-Time Data Areas:JVM内存结构 堆内存划分: 堆内存结构 ...原创 2018-12-10 22:50:40 · 254 阅读 · 0 评论 -
数组的常用算法-冒泡排序-选择排序-插入排序-折半查找-数组逆序(java实现)
冒泡排序 /** * 冒泡排序的基本思想是对比相邻的元素值, * 如果满足条件就交换元素值, * 把较小的元素值移到数组前面, * 大的元素值移到数组后面, * 这样较小的元素就像气泡一样从底部上升到顶部。 * * @param array the array */ private static void...原创 2018-12-15 15:22:47 · 242 阅读 · 0 评论 -
java的几种图片压缩方式:ImageIO、GraphicsMagick、OpenCV、Thumbnails简单介绍
ImageIO:JDK自带的图片处理类,处理的质量还不错,但是网上都说会发生OOM。例子: /** * 按照固定宽高原图压缩 * * @param img 源图片文件 * @param width 宽 * @param height 高 * @param out 输出流 * @throws IO...原创 2018-12-13 16:25:50 · 9714 阅读 · 3 评论 -
java通过jnr-ffi调用C++外部函数
前一阵子碰到个需求,将图片压缩到指定大小(byte),封装成外部服务,期间找过好多方案,最后选用c++操作opencv处理图片,springboot封装成服务。其中java调用native方法选用了jnr-ffi。这个工具是在以前用lmdb的时候发现的。jnr的github地址使用基本上看他的README就可以了。记一下注意的地方:1、类型对应String - equiva...原创 2018-12-13 15:53:19 · 1947 阅读 · 0 评论 -
静态内部类与非静态内部类的区别?
重要:非静态内部类持有外部类的引用。是否拥有静态成员(属性,方法):非静态内部类不可以有静态成员,静态内部类可以。访问外部类的成员区别静态内部类只能直接访问外部类的静态成员,而非静态内部类可以访问外部类的所有成员。类的声明区别静态内部类的声明不依赖外部类,而非静态内部类需要先有外部类,之后才能new。# 静态内部类OutClass.InnerClass innerC...原创 2018-12-13 15:21:18 · 293 阅读 · 2 评论 -
Java中的自动拆箱装箱,包装类中的缓存,类型之间的转化例子
public static void main(String[] args) { Integer a = 1; Integer b = 2; Integer c = 3; Integer d = 3; Integer e = 321; Integer f = 321; Long g =...原创 2018-12-24 22:42:35 · 159 阅读 · 0 评论