随笔分类 -  java基础

摘要:什么是位运算 ? 计算机在底层使用的是二进制补码进行运算。对应的二进制位进行操作,计算机只识别0和1。 位运算的好处 巧妙的使用位运算可以大量减少运行开销,优化算法。 位运算快的原因是直接跟计算机的底层二进制机器操作指令,而我们的程序代码运算最终也是由 JVM转换成计算机可执行的二进制操作指令,位运 阅读全文
posted @ 2024-05-22 15:00 孙伟业 阅读(76) 评论(0) 推荐(0) 编辑
摘要:布隆过滤器之原理及应用什么是布隆过滤器 首先,我们需要了解布隆过滤器的概念。 布隆过滤器(Bloom Filter,BF)是一个叫做 Bloom 的老哥于 1970 年提出的。我们可以把它看作由二进制向量(或者说位数组)和一系列随机映射函数(哈希函数)两部分组成的数据结构。相比于我们平时常用的 List、Map、Set 阅读全文
posted @ 2024-04-10 13:02 孙伟业 阅读(124) 评论(0) 推荐(0) 编辑
摘要:一、什么是自动装箱拆箱 很简单,下面两句代码就可以看到装箱和拆箱过程 简单一点说,装箱就是自动将基本数据类型转换为包装器类型;拆箱就是自动将包装器类型转换为基本数据类型。 这个过程是自动执行的,那么我们需要看看它的执行过程: 反编译class文件之后得到如下内容: 1 javap -c String 阅读全文
posted @ 2019-07-12 11:30 孙伟业 阅读(328) 评论(0) 推荐(1) 编辑
摘要:因为之前一直是用的execute方法,最近有个情况需要用到submit方法,所以研究了下。 他们的区别: 1、execut()可以添加一个Runable任务,submit()不仅可以添加Runable任务还可以添加Callable任务。 2、execut()没有返回值,而submit()在添加Cal 阅读全文
posted @ 2019-07-11 19:09 孙伟业 阅读(8854) 评论(0) 推荐(0) 编辑
摘要:ThreadLocal介绍&跳出误区 ThreadLocal一般称为线程本地变量,它是一种特殊的线程绑定机制,将变量与线程绑定在一起,为每一个线程维护一个独立的变量副本。通过ThreadLocal可以将对象的可见范围限制在同一个线程内。 跳出误区 需要重点强调的的是,不要拿ThreadLocal和s 阅读全文
posted @ 2019-07-11 17:05 孙伟业 阅读(290) 评论(0) 推荐(0) 编辑
摘要:spring boot就是一个大框架里面包含了许许多多的东西,其中spring就是最核心的内容之一,当然就包含spring mvc。 spring mvc 是只是spring 处理web层请求的一个模块。 因此他们的关系大概就是这样: spring mvc < spring <springboot。 阅读全文
posted @ 2019-07-11 16:32 孙伟业 阅读(334) 评论(0) 推荐(0) 编辑
摘要:偏向锁 Hotspot 的作者经过以往的研究发现大多数情况下锁不仅不存在多线程竞争,而且总是由同一线程多次获得,为了让线程获得锁的代价更低而引入了偏向锁。当一个线程访问同步块并获取锁时,会在对象头和栈帧中的锁记录里存储锁偏向的线程 ID,以后该线程在进入和退出同步块时不需要花费 CAS操作来加锁和解 阅读全文
posted @ 2019-07-11 11:43 孙伟业 阅读(4512) 评论(0) 推荐(3) 编辑
摘要:流量控制和阻塞控制实例: 可以用一个例子来说明这种区别。设某个光纤网络的链路传输速率为1000Gbit/s。有一台巨型计算机向一台个人电脑以1Gbit/s的速率传送文件。显然,网络本身的带宽是足够大的,因而不存在产生拥塞的问题。但流量控制却是必须的,因为巨型计算机必须经常停下来,以便使个人电脑来得及 阅读全文
posted @ 2019-06-29 16:51 孙伟业 阅读(1748) 评论(2) 推荐(0) 编辑
摘要:当你在浏览器地址栏输入一个URL后回车,将会发生的事情? 原文:http://igoro.com/archive/what-really-happens-when-you-navigate-to-a-url/ 作为一个软件开发者,你一定会对网络应用如何工作有一个完整的层次化的认知,同样这里也包括这些 阅读全文
posted @ 2019-06-25 16:03 孙伟业 阅读(239) 评论(0) 推荐(0) 编辑
摘要:问题起源 事情得从一个多线程编程里面臭名昭著的问题"Lost wake-up problem"说起。 这个问题并不是说只在Java语言中会出现,而是会在所有的多线程环境下出现。 假如我们有两个线程,一个消费者线程,一个生产者线程。生产者线程的任务可以简化成将count加一,而后唤醒消费者;消费者则是 阅读全文
posted @ 2019-06-19 22:57 孙伟业 阅读(2918) 评论(1) 推荐(1) 编辑
摘要:为了大家对JDK有一个全面的了解,下面我为大家整理了JDK5~11的所有关键新特性! 先看一下JDK的版本迭代图: 注: OpenJDK和JDK区别 GPL协议通用性公开许可证(General Public License) LTS是长期支持(Long Term Support)的缩写 关于Java 阅读全文
posted @ 2019-06-17 09:12 孙伟业 阅读(306) 评论(0) 推荐(0) 编辑
摘要:任何程序都追求正确有效的运行,除了保证我们代码尽可能的少出错之外,我们还要考虑如何有效的处理异常,一个良好的异常框架对于系统来说是至关重要的。最近在采集框架的时候系统的了解一边,收获颇多,特此记录相关的理论。 1 .异常体系简介: 异常是指由于各种不期而至的情况,导致程序中断运行的一种指令流,如:文 阅读全文
posted @ 2019-06-14 17:08 孙伟业 阅读(935) 评论(2) 推荐(0) 编辑
摘要:Java 提供了三种创建线程的方法 通过实现 Runnable 接口来创建线程 通过继承Thread类 通过Callable和Future创建线程 Runnable和Callable的异同: 相同点: 不同点: 注意点: Callable接口支持返回执行结果,此时需要调用FutureTask.get 阅读全文
posted @ 2019-06-14 15:35 孙伟业 阅读(842) 评论(0) 推荐(0) 编辑
摘要:代理(Proxy)是一种设计模式,通俗的讲就是通过别人达到自己不可告人的目的(玩笑)。 如图: 代理模式的关键点是:代理对象与目标对象.代理对象是对目标对象的扩展,并会调用目标对象 这三个代理模式,就像是更新换代,越来越先进。动态代理解决了静态代理必须同目标对象继承同一个接口或类,CGlib解决了动 阅读全文
posted @ 2019-06-12 17:06 孙伟业 阅读(356) 评论(1) 推荐(1) 编辑
摘要:1.创建一个Test.java文件,并输入内容 2.使用javac命令编译Test.java文件,得到Test.class文件 3.使用Sublime3打开Test.class 4.使用javap命令,反编译Test.class文件 输出为: 使用命令: 输出为: 用法摘要: -help 帮助-l 阅读全文
posted @ 2019-06-12 11:13 孙伟业 阅读(4752) 评论(0) 推荐(0) 编辑
摘要:先看一段java代码,func返回值为int: 正确的返回结果是,func返回1。 分析可总结为: 如果finally中没有return语句,但是改变了要返回的值,这里有点类似与引用传递和值传递的区别,分以下两种情况,: 1)如果return的数据是基本数据类型或文本字符串**,则在finally中 阅读全文
posted @ 2019-05-30 22:06 孙伟业 阅读(1287) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示