自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(98)
  • 收藏
  • 关注

原创 SpringBean的生命周期

SpringBean的生命周期一、传统 Bean 的生命周期new实例化;可使用了无引用时,GC回收。二、Servlet 的生命周期实例化Servlet对象;init初始化对象;相应客户端请求service()(doGet()与doPost());destroy()终止/销毁。三、Spring Bean的生命周期1、实例化对象;2、填充属性值及引用;3、调用 BeanNameAware 的 setBeanName(String name) 设置 bean 的 id;4、调用 Be

2021-03-28 19:34:16 139

原创 Java多线程学习之:CountDownLatch

概念countDownLatch这个类使一个线程等待其他线程各自执行完毕后再执行。是通过一个计数器来实现的,计数器的初始值是线程的数量。每当一个线程执行完毕后,计数器的值就-1,当计数器的值为0时,表示所有线程都执行完毕,然后在闭锁上等待的线程就可以恢复工作了。例子: public class TestCountDownLatch { public static void main(String[] args) { final CountDownLatch latch = new CountD

2021-01-17 13:13:48 190

原创 Java IO:参考链接

IO:https://www.ibm.com/developerworks/cn/java/j-lo-javaio/index.htmlNIO:http://www.imooc.com/article/265871

2021-01-12 09:18:54 177

原创 Java IO:NIO实现网络通信

一、使用 NIO 完成网络通信的三个核心:通道(Channel):负责连接java.nio.channels.Channel 接口:|–SelectableChannel|–SocketChannel|–ServerSocketChannel|–DatagramChannel|–Pipe.SinkChannel|–Pipe.SourceChannel缓冲区(Buffer):负责数据的存取选择器(Selector):是 SelectableChannel 的多路复用器。用于监控

2021-01-11 23:53:27 378

原创 Java IO:NIO通道

一、通道(Channel):用于源节点与目标节点的连接。在 Java NIO 中负责缓冲区中数据的传输。Channel 本身不存储数据,因此需要配合缓冲区进行传输。二、通道的主要实现类java.nio.channels.Channel 接口:FileChannelSocketChannelServerSocketChannelDatagramChannel //利用通道完成文件的复制(非直接缓冲区) FileInputStream fis = null; FileOutp

2021-01-11 23:45:30 148

原创 Java IO:NIO缓冲区

一、缓冲区(Buffer):在 Java NIO 中负责数据的存取。缓冲区就是数组。用于存储不同数据类型的数据根据数据类型不同(boolean 除外),提供了相应类型的缓冲区:ByteBufferCharBufferShortBufferIntBufferLongBufferFloatBufferDoubleBuffer上述缓冲区的管理方式几乎一致,通过 allocate() 获取缓冲区缓冲区存取数据的两个核心方法:put() : 存入数据到缓冲区中get() : 获取

2021-01-11 23:30:13 89

原创 Java IO:IO

一、Java IO 作有关的类或接口:二、Java IO 类图结构:2.1 InputStream 使用示例:InputStream inputStream = new FileInputStream("D:\\log.txt");byte[] bytes = new byte[inputStream.available()];inputStream.read(bytes);String str = new String(bytes, "utf-8");System.out.println

2021-01-11 23:12:19 188

转载 Java IO:BIO NIO AIO

BIO是传统的 java.io包,它基于流模型实现,提供了我们最熟知的一些 IO 功能,比如 File 抽象、输入输出流等。交互方式是同步、阻塞的方式,也就是说,在读取输入流或者写入输出流时,在读、写动作完成之前,线程会一直阻塞在那里,它们之间的调用是可靠的线性顺序。java.io包的好处是代码比较简单、直观,缺点则是 IO 效率和扩展性存在局限性,容易成为应用性能的瓶颈。很多时候,人们也把 java.net下面提供的部分网络 API,比如 Socket、ServerSocket、HttpURLCon

2021-01-11 22:25:21 138

原创 算法学习之:希尔排序

一、冒泡排序原理:希尔排序(Shell’s Sort)是插入排序的一种又称“缩小增量排序”,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。二、java代码实现:public static void ShellSort(int arr[]) { int increasement = arr.length; int i, j, k; do { // 确定分组的增量 increasement = increasement / 3 + 1; for (i = 0; i

2021-01-03 12:36:59 103

原创 算法学习之:插入排序

一、插入排序原理:一般也被称为直接插入排序。对于少量元素的排序,它是一个有效的算法 。插入排序是一种最简单的排序方法,它的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增1的有序表。在其实现过程使用双层循环,外层循环对除了第一个元素之外的所有元素,内层循环对当前元素前面有序表进行待插入位置查找,并进行移动 。二、java代码实现:public static void InsertSort(int arr[]){ for (int i = 1; i < arr.lengt

2021-01-03 12:27:13 94

原创 算法学习之:冒泡排序

一、冒泡排序原理:比较两个相邻的元素,将值大的元素交换至右端。二、java代码实现:public static void main(String[] args){ int[] num = {121,32,58,33,19,100}; sort(num); System.out.println(Arrays.toString(num));}public static void so...

2019-11-24 21:58:34 142

原创 算法学习之:选择排序

一、选择排序原理:每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置再从剩余未排序元素中继续寻找最小(大)元素,然后放到刚才已排序序列的后面以此类推,直到全部待排序的数据元素排完二、java代码实现:public static void main(String[] args){ int[] num = {121,32,58,33,19,100}; s...

2019-11-24 21:51:54 138

原创 SpringBoot学习之:中文文档

https://my.oschina.net/geekidentity/blog/872888

2019-09-09 07:59:04 138

原创 SpringBoot学习之:第一个程序HelloWorld

打开网址:http://start.spring.io/ 导出项目项目导入添加依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <...

2019-09-09 06:40:17 178

转载 Java基础学习之:相关书籍

有多少人曾迷失在Java这条路上?尤其处于职业瓶颈期,上下不定,左右为难。这时候,如果有高手适时正确引导,你可能很快跨越障碍,走出困惑。如果是自己一人瞎摸索,那么这道门槛啥时候跨过去,就看个人造化了。如果能从前辈们学习Java,层层进阶的路上学点什么,将对我们有非常大的帮助。他,曾经是一枚菜鸟,职业发展遇到瓶颈,通过自己一点一点探索,从最初的几千薪资到现在的几万。他以看书自学的方式逐步搭建自己的...

2019-09-07 11:25:59 345

原创 Spring学习之:整合log4j

https://blog.youkuaiyun.com/genyizha/article/details/74502812如果需要按日志大小归档又需要按日期归档,可以重写FileAppender方法。

2019-09-06 07:50:10 115

原创 Java基础学习之:BIO、NIO、AIO

http://www.imooc.com/article/265871https://www.ibm.com/developerworks/cn/java/j-lo-javaio/index.html

2019-09-03 07:19:47 133

原创 Java基础学习之:泛型

https://blog.youkuaiyun.com/s10461/article/details/53941091

2019-09-03 06:56:41 111

原创 Java基础学习之:socket编程

https://blog.youkuaiyun.com/w_linux/article/details/79394150

2019-09-03 06:49:58 129

原创 Java基础学习之:序列化与反序列化

https://blog.youkuaiyun.com/qq_27093465/article/details/78544505

2019-09-03 06:47:47 112

转载 Spring学习之:常用注解

Spring部分1.声明bean的注解@Component 组件,没有明确的角色@Service 在业务逻辑层使用(service层)@Repository 在数据访问层使用(dao层)@Controller 在展现层使用,控制器的声明(C)2.注入bean的注解@Autowired:由Spring提供@Inject:由JSR-330提供@Resource:由JSR-250...

2019-08-29 22:47:57 300 1

原创 Spring学习之:aop

https://blog.youkuaiyun.com/Summer_YuXia/article/details/75104949

2019-08-29 22:29:59 94

原创 Spring学习之:Bean装配及注入

Bean装配方式:xml配置 <!-- xml配置 set配置 --> <bean id="userBusinessImpl" class="com.cfs.sp.business.UserBusinessImpl" /> <bean id="userServiceImpl" class="com.cfs.sp.service.UserServiceI...

2019-08-29 00:54:59 224

原创 Java多线程学习之:BlockingQueue实现生产者消费者

PCCommon:public class PCCommon { private BlockingQueue<User> queue = new LinkedBlockingQueue<User>(); //生产 public void productData(User user){ queue.add(user); } //消费 public void ...

2019-08-27 22:01:14 335

原创 Java多线程学习之:await/signalAll实现生产者消费者

PCCommon 生产者消费者公共类:public class PCCommon { private Queue<User> queue = new LinkedList<User>(); private Lock lock = new ReentrantLock(); private Condition condition = lock.newCondition(...

2019-08-27 21:59:27 946 2

原创 Java多线程学习之:wait/notifyAll实现生产者消费者

PCCommon 生成消费公共类:public class PCCommon { private Queue<User> queue = new LinkedList<User>(); //生产 public synchronized void productData(){ try{ while(queue.size() == 1 ){ wait...

2019-08-27 21:54:05 197

原创 JVM学习之:Java字节码(.class)文件详解

https://blog.youkuaiyun.com/weelyy/article/details/78969412

2019-08-11 16:51:00 167

原创 JVM学习之:性能监控工具

1、jps:进程状况工具jps可以通过RMI协议查询开启了RMI服务的远程虚拟机进程状态,hostid为RMI注册表中注册的主机名。命令格式:jps [ options ] [ hostid ]jps工具主要选项:-q : 只输出LVMID,省略主类的名称-m :输出虚拟机进程启动时传递给主类main()函数的参数-l :输出主类的全名,如果进程执行的是Jar包,输出Jar路径-...

2019-08-08 07:46:50 173

原创 JVM学习之:内存分配与回收策略

内存分配与回收策略Minor GC :从年轻代空间(包括 Eden 和 Survivor 区域)回收内存被称为 Minor GCMajor GC :清理老年代Full GC :清理整个堆空间—包括年轻代和老年代1、对象优先在Eden分配:在大多数情况下,对象在新生代Eden区中分配。当Eden区没有足够的空间进行分配时,虚拟机将发起一次Minor GC,把仍存活的对象复...

2019-08-06 23:57:42 141

原创 JVM学习之:垃圾收集器

垃圾收集器如下图所示,收集器之间有连线,说明它们可以搭配使用新生代1、Serial收集器:工作区域:新生代单线程/多线程:单线程垃圾收集算法:复制算法Serial收集器是最基本、发展历史最悠久的收集器,是一个单线程的收集器,进行垃圾收集时,必须暂停其他所有的工作现场,直到它收集结束。2、ParNew收集器:工作区域:新生代单线程/多线程:多线程垃圾收集算法:复制算法...

2019-08-06 20:00:03 179

转载 JVM学习之:HotSpot虚拟机对象探秘

一、对象的创建对象的创建过程:虚拟机遇到一条new指令时,首先将先去检查这个指令的参数能否在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已经被加载、解析和初始化过。如果没有,那必须先执行相应的类加载过程。接着虚拟机将为新生对象分配内存。对象所需的内存大小在类加载的完成后即可完全确定,为对象分配空间的任务就是把一块确定大小的内存从Java中划分出来。指针碰撞假设Jav...

2019-08-06 07:28:31 141

转载 JVM学习之:垃圾回收算法

机制:在java中,程序员是不需要显示的去释放一个对象的内存的,而是由虚拟机自行执行。在JVM中,有一个垃圾回收线程,它是低优先级的,在正常情况下是不会执行的,只有在虚拟机空闲或者当前堆内存不足时,才会触发执行,扫面那些没有被任何引用的对象,并将它们添加到要回收的集合中,进行回收。方法:标记-清除:这是垃圾收集算法中最基础的,根据名字就可以知道,它的思想就是标记哪些要被回收的对象,然后统一...

2019-08-05 23:30:34 168

转载 JVM学习之:内存分区

java虚拟机主要分为以下几个区:方法区:有时候也成为永久代,在该区内很少发生垃圾回收,但是并不代表不发生GC,在这里进行的GC主要是对方法区里的常量池和对类型的卸载方法区主要用来存储已被虚拟机加载的类的信息、常量、静态变量和即时编译器编译后的代码等数据。该区域是被线程共享的。方法区里有一个运行时常量池,用于存放静态编译产生的字面量和符号引用。该常量池具有动态性,也就是说...

2019-08-05 23:17:08 372

原创 Java基础学习之:内部类

https://www.cnblogs.com/dolphin0520/p/3811445.html

2019-08-01 07:35:31 126

转载 Java基础学习之:final

一、final关键字的基本用法在Java中,final关键字可以用来修饰类、方法和变量(包括成员变量和局部变量)。下面就从这三个方面来了解一下final关键字的基本用法。1、修饰类当用final修饰一个类时,表明这个类不能被继承。也就是说,如果一个类你永远不会让他被继承,就可以用final进行修饰。final类中的成员变量可以根据需要设为final,但是要注意final类中的所有成员方法都会...

2019-07-30 21:27:34 115

原创 JVM学习之:初始化

通过一个例子来看下类初始化过程:Base:public class Base { static{ System.out.println("我是Base,static代码块"); } { System.out.println("我是Base,代码块"); } public Base(){ System.out.println("我是Base构造"); } public ...

2019-07-29 21:39:44 214

原创 Java基础学习之:控制执行流程

一、if-elseif(a > b){ System.out.println("a大于b");}else if(a == b){ System.out.println("a等于b");}else{ System.out.println("a小于b");}二、while和do-whilewhile while(a < 10){ System.out.prin...

2019-07-28 17:49:51 140

原创 Java基础学习之:操作符

一、算术操作符加号(+)减号(-)称号(*)除号(/)取模(%)%:从整数除法中产生余数。二、自动递增和递减递增i++、++i int i = 3; int j = i++;//先赋值后运算 //int j = ++i;//先运算后赋值 System.out.println("i="+i); System.out.println("j="+j);结果 i=4...

2019-07-28 12:34:04 180

转载 Java基础学习之:static

static基本用法《Java编程思想》中有这样一段话: “static方法就是没有this的方法。在static方法内部不能调用非静态方法,反过来是可以的。而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法。这实际上正是static方法的主要用途。” static可以用来修饰:类的成员变量类的成员方法static代码块一、类的成员变量static变量也称...

2019-07-28 09:45:30 174

原创 Java基础学习之:数据类型

一、8种基本数据类型如下图:bit(位):表示信息的最小单位,是二进制数的一位包含的信息;byte(字节):用来计量存储容量的一种计量单位;1 byte = 8 bit(1个字节等于8位);long型后如果不加 L/l 则默认为int型,浮点型如果不加 F/f 则默认为double型(隐式转型)二、引用数据类型如下图:...

2019-07-27 09:53:31 111

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除