
java
文章平均质量分 67
devnn
Stay Foolish!Stay Hungry!Read The Funking Source Code!
展开
-
【Kotlin】by lazy关键字的实现原理
kotlin的by lazy关键字是很常用的,它表示延时初始化变量,只在第一次使用时才给它初始化。那么它是如何实现这种功能的呢?这篇文章从字节码和Java语言的角度揭密它的实现原理。原创 2022-11-12 00:21:43 · 2557 阅读 · 0 评论 -
【Kotlin】从字节码角度理解kotlin构造函数、成员变量、init代码块执行顺序
kotlin的构造函数、init代码块、成员变量初始化三者执行顺序是怎样的? 这篇文档从节字码的角度去理解它们的逻辑。原创 2022-10-31 18:25:30 · 1252 阅读 · 0 评论 -
【Java】JVM运行时数据区域与内存回收机制
前言JVM(Java Virtual Machine)是Java、Kotlin、Groovy等程序运行的虚拟机,它是Java技术系统里最重要的组成部分之一。熟悉JVM的运行过程、运行时数据区以及内存回收机制,对我们认识Java语言,解决内存泄漏、内存溢出等问题非常有帮助。文章目录前言一、Java技术体系二、Java运行时数据区域(1) 程序计数器(2) Java虚拟机栈(3) 本地方法栈(4) Java堆(5) 方法区(6) 运行时常量池三、JVM内存回收机制(1) 如何判定内存是否需要回收(2) 引用原创 2021-11-25 21:31:36 · 2141 阅读 · 0 评论 -
【Java】Java中实现单例(Singleton)模式的八种方式
单例模式定义单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例。即一个类只有一个对象实例。基本的实现思路单例模式要求类能够有返回对象一个引用(永远是同一个)和一个获得该实例的方法(必须是静态方法,通常使用getInstance这个名称)。单例的实现主要是通过以下两个步骤:将该类的构造方法定义为私有方法,这样其他处的代码就无法通过调用该类的构造方法来实例化该类的对象,只有通过该类提供的静态方法来得到该类的唯一转载 2020-07-28 19:23:01 · 1505 阅读 · 0 评论 -
【Java】Java实现冒泡排序、简单选择排序、直接插入排序
插入排序和冒泡排序的时间复杂度都是O(n^2),都是稳定排序算法,但是插入排序不存在交换元素,比冒泡少两次操作,整体上优于冒泡排序。选择排序时间复杂度是O(n^2),但它是不稳定排序算法。冒泡排序时间复杂度是O(n^2),它是稳定排序算法。原创 2018-11-07 16:41:16 · 897 阅读 · 1 评论 -
【Java】Java最简单的生产者消费者模型
生产者消费者模型就是两个线程轮流执行一段代码。下面用Java实现两个线程轮流进行打印。使用synchronized+wait/nofity实现。public class Main { public static void main(String[] args) { TestRunnable runnable = new TestRunnable(); Th...原创 2018-11-02 18:24:01 · 498 阅读 · 0 评论 -
【Java】Java多线程wait()、notify()、join()、yield()方法解析
了解区别之前,先了解一下多线程的基本规律热热身,看一简单的例子:public class Main { public static void main(String[] args) { TestRunnable testRunnable = new TestRunnable(); Thread thread1 = new Thread(testRunnab...原创 2018-11-01 19:19:14 · 343 阅读 · 0 评论 -
Android开发者常用网站收藏
常用网站Android官网(中文)Google开发者(中文)极客导航Android源码在线阅读IOS开发官网Google官方示例项目集合在线文档与工具匠心写作-重新开始一次认真的写作ReactNative中文网CodeKK-源码解析、开源项目优达学城Android 绿色应用公约阿里巴巴矢量图标库 开源框架集阿里巴巴开源框架腾...原创 2018-08-11 20:53:43 · 266 阅读 · 0 评论 -
【Java】Java HashMap的设计精髓
HashMap是Java开发者最常用的集合类之一,今天阿楠结合jdk7的源码来对HashMap作一翻总结,盘点一下HashMap的设计精髓。了解源代码之前,先了解一下两位赫赫有名的HashMap源代码的作者。Josh BlochJava 集合框架创办人,Joshua Bloch 领导了很多 Java 平台特性的设计和实现,包括 JDK 5.0 语言增强以及屡获殊荣的 Java 集合框架。2...原创 2018-08-26 23:13:36 · 1291 阅读 · 0 评论 -
【Java】Java双端队列Deque使用详解
Deque是一个双端队列接口,继承自Queue接口,它们共同的实现类是LinkedList。Deque的功能很强大:代替普通队列Queue:先进先出、队尾进队头出可以作为双端队列:队尾和队头都可以进出还可以作为堆栈使用:先进后出、只能从一端进出 注意:Java堆栈Stack类已经过时,Java官方推荐使用Deque替代Stack使用。jdk文档中关于Deque的使用介...原创 2018-09-15 18:14:05 · 129700 阅读 · 21 评论 -
【Java】Java队列Queue使用详解
Queue是java中实现队列的接口,它总共只有6个方法,我们一般只用其中3个就可以了。Queue的实现类有LinkedList和PriorityQueue。最常用的实现类是LinkedList。原创 2018-09-10 16:29:27 · 88297 阅读 · 0 评论 -
教你口算任意一个数的二进制
我们都知道,计算机只能识别二进制指令,任何十进制的数字都会转换成二进制再计算。因为在计算机的存储单元——晶体管中高电位代表1低电位代表0。而且任何汉字和英文字母以及各种符号都有对应的二进制数字。我们日常交流都是是用十进制。十进制就是逢十进一,二进制就是逢二进一。十进制的我们都算得很快,那么因为我们很熟悉,而二进制其实跟十进制一样,也有它的规律。那么给一个十进制的数,如何快速算出它的二进制呢?其实很...原创 2018-09-10 22:50:52 · 11697 阅读 · 4 评论 -
【Android】盘点Android开发中常见的设计模式
一、适配器模式ListView+BaseAdapterRecyclerView+RecyclerView.Adapter二、建造者模式new AlertDialog.Builder()new OkHttpClient.Builder()new Retrofit.Builder()三、简单工厂模式Bitmap BitmapFactory.decodeByteArray(…)Bitm...原创 2018-10-13 17:27:43 · 724 阅读 · 0 评论 -
【Java】Java四舍五入保留1位小数、2位小数...
Java四舍五入保留1位小数的方法:import java.math.BigDecimal; public class Test { public static void main(String[] args) { double d1 = 3.02; System.out.println(d1); //利用字符串格式化的方式实现四舍五入...原创 2018-10-17 08:37:01 · 69719 阅读 · 5 评论 -
【Java】Java获取昨天日期的正确姿势
Java获取昨天的日期,其实大部分人都用得不对: DateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd"); Calendar calendar=Calendar.getInstance(); calendar.set(Calendar.DATE,-1); String yesterdayDate=dateFormat.for...原创 2018-10-17 08:40:26 · 25536 阅读 · 12 评论 -
【Java】Java人民币单位转换:分转换成元
一个简单的分转换成元的代码: public static void main(String[] args){ long penny=30009;//分 String rmb = penny / 100 + "." + penny % 100 / 10 + penny % 100 % 10; System.out.println(rmb); ...原创 2018-10-17 11:29:48 · 6171 阅读 · 0 评论 -
【Git】Git常用命令
[git status] 查看状态,包括当前所在分支,代码修改状态[git add 文件名] 或 [git add --all] 两个功能:跟踪文件,(如果已跟踪)将修改的文件放在暂存区[git commit -m “提交说明”] 将暂存区的文件提交到版本库[git branch 分支名] 创建新分支但不切换到新分支上[git branch -d 分支名] 删除分支[git checko...原创 2018-10-25 21:49:30 · 227 阅读 · 0 评论 -
jdbc动态条件查询防止sql注入的解决方案
问题场景:这里的动态查询是指,select语句的某一个或多个查询条件是这种情况:不限或指定值。不限就是这个条件要去掉,指定值就是这个条件必须要。比如你会看到买房子的网站的查询选项是这样的:地区:不限或北京、上海、…。(下拉选项)类型:不限或二手房或新房。(下拉选项)户型:不限或三室一厅、三室二厅、二室一厅、…。(下拉选项)也可能还有更多的条件。分析:如果地区条件用户选不限,sql查询的whe原创 2017-01-05 00:04:44 · 4726 阅读 · 1 评论