java基础
酒中仙1225
大道至简
展开
-
动态规划DP学习
目录1 DP理论1.1 简介1.2 基本思想1.3 适用场景1.4 其他2 DP实例2.1 杨辉三角2.2矩阵取数问题2.3 最长子串2.4 背包问题3 dp总结1 DP理论1.1 简介动态规划(dynamic programming)是运筹学的一个分支,是求解决策过程(decision process)最优化的数学方法。20世纪5...原创 2020-03-22 16:35:22 · 369 阅读 · 0 评论 -
索引和数据存储
目录1 磁盘相关1.1 基础认知1.2 case2 索引相关2.1 二叉树及b-tree问题2.2 b+tree 问题:2.1 LVM树3 关于内存寻址和磁盘寻址的一些思考7 总结8 疑问9 参考资料很久之前在看美团技术博客的时候,就对其中“磁盘预读和io”的章节的感觉理解得不是特别清晰,这也导致了从b-tree到b+tree的发展的背景或者说...原创 2020-02-11 19:24:43 · 373 阅读 · 0 评论 -
Java-JVM
目录1 Java与jvm1.2 JVM1 JVM模式Java是编译型和解释型混合 mixed modejava的解释器逐条解释,这个逐条解释的问题就是我们理解的那个逐条解释,也就是说如果有个for循环,解释器在每个循环都会解释执行循环体。针对这种场景,jvm采用JIT的方式的进行优化,将这种循环体编译成机器码,这样就不用每次循环都去解释执行,而是直接执行,省去解释的过...原创 2020-03-22 15:49:41 · 109 阅读 · 0 评论 -
java 并发编程
1 并发编程模型1.1 jdk并发模型1.1.1 基本概念RunableFuture体系,代表执行逻辑及执行结果的获取。Executor体系代表这对任务生命周期的管理。AbstractExecutorService 抽象类对接口的部分实现。ThreadPoolExecutor表示线程池(线程全生命管理者)。AbstractExecutorService实现了sub...原创 2020-02-11 19:12:03 · 264 阅读 · 1 评论 -
Netty基础
目录1 背景知识1.1 同步/异步 阻塞/非阻塞1.2 Unix 五种 I/O 模型1.3 Java NIO1.4 Netty疑问2 Netty2.1 Netty组件2.1 Channel2.2 回调&Future2.3 事件和ChannelHandler2.4 eventLoopGroup eventLoop3 problem3....原创 2020-02-11 19:32:31 · 317 阅读 · 0 评论 -
ElasticSearch学习
目录1 基本概念1.1 检索概念2 Lucene2.1 简介2.1.1 Lucene基本流程2.1.2 Lucene特性说明2.2 基本概念及操作2.2.1 检索建模2.2.2 创建索引2.2.3 更新索引2.3 Lucene底层数据结构及原理2.4 Lucene的评分机制3 ElasticSearch3.1 定位及竞品对比3.2 分布式...原创 2020-02-11 19:19:22 · 220 阅读 · 0 评论 -
内存管理-分段加载查询数据调研
目录1 背景2 JDBC2.1 jdbc协议2.2 数据查询-JDBC实现2.2.1 Mysql3 使用游标分批获取数据3.2 Mysql&Doris3.3 Kylin4 Spring jdbcTemplates8 结论9 参考资料1 背景在处理天璇大查询的过程中,遇到一些问题: 哪些数据库能够实现分批加载(MySQL、Dor...原创 2020-02-11 19:15:36 · 286 阅读 · 0 评论 -
深入Java虚拟机读书笔记之内存管理机制
Java内存模型及异常待完成垃圾收集器与内存分配策略概述解决三个问题: 1. 哪些内存需要回收(垃圾判定) 2. 什么时候回收 3. 如何回收(垃圾回收实现)垃圾判定算法第一个问题回收大区域主要包括堆和方法区,具体的回收哪些对象所占的区域,换言之如何判断对象已死, 1. 对象计数: 此方法简单粗暴,但是很难解决循环计数的问题 为什么解决不了对象循环计数的问题根搜索算法(主流) 以GcR原创 2016-03-13 19:52:22 · 447 阅读 · 0 评论 -
FastJson和get方法的问题
fastJson转化为字符串时其中的key的决定因素:在项目过程中使用FastJson发现其序列化对象为Json字符串的时候是依赖getXX方法的,即将所有get开头的方法后xx都会变成json字符串中的一个key。即key是依赖get方法。Gson在这方面则完全是依赖于属性的,和get/set方法无关问题:但是却没有提供方法层面对哪些序列化和非序列化的控制(只能作用在属性上进行控...原创 2018-08-01 23:13:15 · 8233 阅读 · 0 评论 -
Java8新特性实践
在Presto中有大量Java8新特性的使用,非常值得学习。这些新的特性,为‘优雅编程’提供了大量的实践方式。1 Optional这个其实源自Guava的optional类,使用该类可以从代码形式上有效的减少ifnull的判断,使得代码简洁不少,逻辑更加清晰。1.1 Optional创建1.1.1 of/ofNullable/empty1.1.2 判空ifPresent这个...原创 2018-08-07 19:29:56 · 380 阅读 · 0 评论 -
深入Java虚拟机之Gc
1 gc1.1 堆内存分布jvm的内存中堆内存所占比例最大。内存回收主要是针对堆内存的,当然永久代(以前的名字)也会有gc。堆内存分为年轻代和老年代,这两者在堆内存上的默认比例是1:2。也就是说年轻代大约占堆内存的1/3。1.2 gc时机minor gc的发生full gc发生1.3 gc算法1.3.1 对象存活判断首先GC主要是针对堆内存的gc。gc...原创 2018-08-03 11:55:34 · 172 阅读 · 0 评论 -
定时调度
Springboot定时调度1 方法一只是说是 fixedRate 任务两次执行时间间隔是任务的开始点,而 fixedDelay 的间隔是前次任务的结束与下次任务的开始。@Configuration@EnableSchedulingpublic class SchedulingConfig { @Autowired XXX xxx @Scheduled(fixe...2018-08-08 20:54:45 · 201 阅读 · 0 评论 -
深入Java虚拟机读书笔记之高效并发
一、引言线程的问题本质上就是并发的问题,并发问题的根源是CPU的运行速度、内存速度、IO、网络资源请求的速度处于不同的层次,相差很多。 进程是资源分配的单位,线程是处理器调度的最小单位,同一进程下面的线程共享系统分配给该进程的资源二、内存一致性Java内存模型多处理器系统的CPU和内存、高速缓存(缓存一致性问题)模型 Java内存模型就是参考该模型的: java线程(n)——》工作内存(n原创 2016-03-13 19:28:08 · 465 阅读 · 0 评论 -
深入Java虚拟机读书笔记之执行子系统
类文件结构这种大致思想就是通过某种规范的形式记录下 搜有的信息,引入包,继承、接口、类名,异常、属性、方法都记录下来。 然后虚拟机加载的时候就能按照此规范进行加载。虚拟机类加载机制加载过程:加载–> 验证–>准备–> 解析–> 初始化 是加载到方法区吗?如何选择加载器:双亲委派模型 顶层是 引导类加载器(c/cc++,我们不能使用其加载类)–>扩展类加载器–>应用程序类加载器-原创 2016-03-13 19:59:30 · 680 阅读 · 0 评论 -
SpringMVC用MultipartFile上传文件及文件名中文乱码
前言过程参考前言近日,项目中有个需求-android端上传一个商品多张图片,需要java后台。以前后台使用了struts,现在是springmvc。想着很多东西是不是能优化一下,正好重新写一下。 android端有时间再记录一下 后台环境是win10+jdk1.8 + tomcat8.0.25 + idea14.0.1 软件:springmvc+ hibernate+sprin原创 2015-11-20 16:55:00 · 61513 阅读 · 4 评论 -
JAVA文件及WEB应用程序路径全解析
java web 相对 绝对 路径目录[-]1. 基本概念的理解2. 关于JSP/Servlet中的相对路径和绝对路径。2.1 服务器端的地址2.2 客户端的地址3. JSP/Servlet中获得当前应用的相对路径和绝对路径3.1 JSP中获得当前应用的相对路径和绝对路径3.2 Servlet中获得当前应用的相对路径和绝对路径4. jav转载 2015-11-22 14:18:37 · 624 阅读 · 0 评论 -
java中日期的使用
一、使用简介我们项目中对于日期的用法是数据库中存的是long类型时间戳,在前后台之间不同,都是以这个形式传递。二、转换一般都是将时间戳转成Date类型,Date类型就有很强语义了。 Date date = new Date(long mill); 但是一些特殊需求还需要转换成string,比如之前项目中保存上传图片的时候根据年月日创建三级文件夹分别获取年月日以前是通过Date的getYear类似原创 2015-11-23 22:29:50 · 88 阅读 · 0 评论 -
java创建文件和目录
codepublic class Main { public static void main(String[] args) { try { File dir = new File("E:/test/"); if (!dir.exists()) {//该file不存在 if (!dir.mkdir(原创 2015-11-23 21:59:49 · 1189 阅读 · 0 评论 -
android studio创建及运行java程序
前言步骤前言经常在写安卓的时候,需要写个java程序测试一下。这个时候再去启动IntelliJ IDEA就不是很方便了,如果能在as中直接书写就好了。当然这是完全可以的。步骤new Module在里面选择java library,并填写一些类的基本信息然后就如图所示: 写个hello world,这个时候是不能运行的,还需要若干配置。见下图 一切准备就绪,点击run试试吧。原创 2015-11-19 22:20:59 · 912 阅读 · 0 评论 -
android studio中直接运行java程序
问题搜了几篇博客,主要参考这篇博客http://blog.csdn.net/xiaxiayige/article/details/46706949 以及百度知道的http://zhidao.baidu.com/question/753270350874404684.html当时以为看到第二篇博客中的步骤三有:apply plugin: ‘application’,以为是第一篇博主为了博客简洁就没写原创 2015-11-25 11:12:25 · 6297 阅读 · 2 评论 -
为什么Java中1000==1000为false而100==100为true?
如果你运行下面的代码Integer a = 1000, b = 1000; System.out.println(a == b);//1 Integer c = 100, d = 100; System.out.println(c == d);//2你会得到falsetrue基本知识:我们知道,如果两个引用指向同一个对象,用转载 2015-11-28 19:13:31 · 64 阅读 · 0 评论 -
Java方法参数太多怎么办—Part3—Builder模式
本文转自:http://www.importnew.com/6605.html目录自定义类型引入参数对象Builder模式本文是这个系列的第三篇文章,介绍了通过Builder模式应对参数过多的问题。如果你也希望参与类似的系列文章翻译,可以加入我们的Java开发 和 技术翻译 小组。在前两篇文章中,我分别使用了自定义类型和参数对象方法来减少构造器或方法调用传入的参数数转载 2016-01-13 11:53:12 · 839 阅读 · 0 评论 -
Java基础之String类
为什么String类不可变一直知道String类是不可变,之前对于不可变类的理解就是类的对象的状态不可变。 如String str = “abc”;这里的str仅仅是String类型对象的一个引用,这个引用完全是可以改变的。但是对象本身(就是在堆中的那块区域的字符串内容)是不能改变的。今天突然想到为什么String是不可变的。 从一般意义上来看:我们日常使用的字符串而言,较多时直接使用,或者原创 2016-03-12 13:58:51 · 415 阅读 · 0 评论 -
Java基础之修饰符
Synchronizedvolatilefinalfinal关键字的好处可以修饰类(不可继承)、方法(不可重写)、成员变量(值:引用也算一种值,不可变)、本地变量 修饰类,方法就默认是final 下面总结了一些使用final关键字的好处final关键字提高了性能。JVM和Java应用都会缓存final变量。 final变量可以安全的在多线程环境下进行共享,而不需要额外的同步开销。 使原创 2016-03-12 14:07:53 · 384 阅读 · 0 评论 -
Java开发必会的Linux命令
本文转自:http://www.hollischuang.com/archives/800 转载过程有注释1.查找文件find / -name filename.txt 根据名称查找/目录下的filename.txt文件。find . -name "*.xml" 递归查找所有的xml文件find . -name "*.xml" |xargs grep "转载 2016-03-12 14:16:29 · 386 阅读 · 0 评论 -
String类到底可不可变
转载自:http://blog.csdn.net/zhangjg_blog/article/details/18319521什么是不可变对象?众所周知, 在Java中, String类是不可变的。那么到底什么是不可变的对象呢? 可以这样认为:如果一个对象,在它创建完成之后,不能再改变它的状态,那么这个对象就是不可变的。不能改变状态的意思是,不能改变对象内的成员变量,包括基本数据类型的值转载 2015-10-12 11:11:01 · 596 阅读 · 1 评论