JAVA基础
文章平均质量分 60
Wesley@
这个作者很懒,什么都没留下…
展开
-
计算表达式(中缀转后缀表达式,逆波兰式结果计算)
前缀,中缀,后缀表达式(逆波兰表达式)参考: https://www.cnblogs.com/chensongxian/p/7059802.html中缀表达式中缀表达式就是常见的运算表达式,如 (3 + 4) * 5 - 6前缀表达式介绍前缀表达式又称为波兰式,前缀表达式的运算符位于操作数之前比如: - * + 3 4 5 6前缀表达式的计算机求值从右至左扫描表达式,遇到数字时,将数字压入堆栈,遇到运算符弹出栈顶的两个数字,并进行运算,将结果压入堆栈。重复上述过程,直到最后的一个数字,即为原创 2021-05-26 21:40:10 · 211 阅读 · 0 评论 -
Java int[]数组如何逆序排序
前言每次写排序的时候,碰到List<>的排序总是容易的很,写个lambda表达式就排好了,但是 int[] 型的数组逆序排序则很麻烦。lambda表达式总是报错。List 排序List<Integer> list = new ArrayList<>();list.add(3);list.add(5);Collections.sort(list, (a, b) -> b - a);int[] 排序顺序排序只要这样就行:Arrays.sort(nu原创 2021-03-11 16:36:39 · 4915 阅读 · 6 评论 -
Java 大厂面试集合(juc jvm linux)
Java 面试集合JUCvolatile并行:同时做A,B两件事并发:同时有很多线程访问某个资源volatile: 是java虚拟机提供的轻量级的同步机制保证可见性不保证原子性禁止指令冲排序JMMJava内存模型:Java Memory Model,它描述的是一组规范或者规范定义了内存中各个变量。主内存是共享内存区域,线程对变量操作,会先把数据读取到自己的工作内存中,然后对变量进行操作,然后写回主内存,各个线程的工作内存中存储着主内存的变量副本拷贝,线程间通信必须通过主内存来完成。原创 2021-01-14 08:57:23 · 276 阅读 · 0 评论 -
手写java线程池(参考jdk源码)
java线程池目前只写到能正确创建线程,线程扩容到最大线程数,还没写线程池缩容。package com.xxx.springboot.myThreadPool;import org.apache.camel.model.GlobalOptionDefinition;import org.junit.jupiter.api.Test;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import java.text.SimpleD原创 2021-01-04 12:31:14 · 232 阅读 · 0 评论 -
Java socket编程
Java 网络编程网络编程概述通过 Ip 和 Port 来通信。TCP/IP参考模型应用层传输层网络层物理 + 数据链路层IP地址对应的类:InetAddress端口号 + ip地址 = 网络套接字:socketTCP 编程服务端和客户端通信Demo。 @Test public void client() throws Exception { InetAddress ip = InetAddress.getByName("localhost");原创 2021-01-03 17:00:21 · 190 阅读 · 2 评论 -
Java IO流
Java IOIO 流原理和分类按照数据单位不同分为:字节流(8 bit)和字符流(16 bit)抽象基类字节流字符流缓冲流输入流InputStreamReaderBufferedInputStream输出流OutputStreamWriterBufferedReader/Wirter字符流输入 @Test public void test() throws Exception { //指定流来源 File原创 2021-01-03 01:02:55 · 136 阅读 · 0 评论 -
字节面试官:GC Root是啥
写在最前很早前面试的时候,问JVM垃圾回收算法,然后深入问了下啥算GC Root,然后就跪了。网上看了一些资料,一般比较含糊,自己整理了下,仅供参考,有错误的地方欢迎指正!GC RootClass - 由系统类加载器(system class loader)加载的对象,这些类是不能够被回收的,他们可以以静态字段的方式保存持有其它对象。我们需要注意的一点就是,通过用户自定义的类加载器加载的类,除非相应的java.lang.Class实例以其它的某种(或多种)方式成为roots,否则它们并不是roots原创 2020-12-29 18:01:10 · 477 阅读 · 0 评论 -
手写Spring的Autowired注解
手写Spring的Autowired注解定义Autowired@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.FIELD)@Inherited@Documentedpublic @interface Autowired {}定义UserServicepublic class UserService {}定义UserControllerpublic class UserController { @Autowire原创 2020-12-10 14:37:48 · 391 阅读 · 2 评论 -
Java 设计模式(剖析spring源码 jdk源码 等)
Java 设计模式高内聚,低耦合,可维护,可读性设计模式七大设计原则单一职责原则Single Responsibility一个类应该只负责一项单一的职责降低类的复杂度,一个类负责一个单一职责提高类的可可读性和可维护性降低变更带来的风险接口隔离原则Interface Segregation Priciple一个类对另一个类的依赖应该建立在最小的接口上。客户端不应该依赖它不需要的接口。如果一个接口的一部分被A依赖,另一部分被B依赖,这个时候应该把接口拆分成两个字接口,实现接口隔离原则原创 2020-11-18 17:07:53 · 436 阅读 · 1 评论 -
手写SpringMVC简易DispatchServlet
手写SpringMVC简易DispatchServletSpringMVC中的DispatchServlet使用了适配器模式,来适配Controller类。当需要新增Controller类的时候,可以在不修改原有框架代码的基础上,添加HandlerAdapter类即可正常工作。Controller类public interface Controller {}class AnnotationController implements Controller { public void do原创 2020-11-18 15:44:03 · 291 阅读 · 1 评论 -
juc和jvm (剖析部分JDK源码)
juc和jvm学习本文档主要是记录juc和jvm的学习之路,阳哥,永远滴神!“生死看淡,不服就干”“基础不牢,地动山摇”“发财的方法都写在’刑法’上”“大学大学: 大家自己学”“没有无所谓,只有做到位”“树长得高是因为它的根扎得深”“沉下来,深深的水,静静地流”“扫帚不倒,灰尘不会自己跑掉”“万丈高楼平地起,一切承担靠地基”SaleTickets并发/并行concurrent parallel。分门别类两件事,并行。三个包Java.util.concurrentjava.u原创 2020-10-20 14:37:58 · 586 阅读 · 2 评论 -
java中的PO VO BO DTO DO DAO之间的关系
java中的PO VO BO DTO DO DAO之间的关系DOdomain object 领域对象,现实世界中抽象出来的有形或无形的业务实体POpersistant object 持久对象,也被称作Data对象,对应数据库中的entity,可以简单认为一个PO对应数据库中的一条记录。PO中不应该包含任何对数据库的操作。VOValue object值对象,通常用于业务层之间传数据,和PO一样也仅仅是包含数据。View object用于展示层,把某个指定页面或组件的所有数据封装起来。DTO原创 2020-10-10 17:01:04 · 343 阅读 · 0 评论 -
JAVA Comparator 重写compare方法
int compare(T o1, T o2);接口源码描述:Compares its two arguments for order. Returns a negative integer,zero, or a positive integer as the first argument is less than, equalto, or greater than the second.翻译:有序比较它的两个参数,返回一个正数,零或者负数;当第一个参数小于,等于或大于第二个参数。@th原创 2020-09-14 10:22:02 · 2204 阅读 · 0 评论 -
Java 位运算符 (Bit Manipulation)
Java 位运算符正确使用位运算符可以有效提高效率判断奇偶偶数 & 1 = 0奇数 & 1 = 1例如 n = 4,则 n & 1 如下所示:n & 1 = 00000 0000 0000 01000000 0000 0000 0001-------------------0000 0000 0000 0000例如 n = 5,则 n & 1 如下所示:n & 1 = 10000 0000 0000 01010000 0000 0原创 2020-07-28 00:48:20 · 185 阅读 · 0 评论 -
JAVA基础--学习笔记04
基本数据类型作为参数当使用基本数据类型作为方法的形参时,在方法体中对形参的修改不会影响到实参的数值 ,会拷贝一份形参变量当使用引用数据类型作为方法的形参时,若在方法体中修改形参指向的数据内容,则会对实参变量的数值产生影响,因为形参变量和实参变量共享同一块堆区当使用引用数据类型作为方法的形参时,若在方法体中修改形参变量的指向,此时不会对实参变量的数值产生影响,因此形参变量和实参变量分别指向不同的堆区...原创 2020-07-18 18:13:46 · 108 阅读 · 0 评论 -
JAVA基础--学习笔记04
JAVA基础–学习笔记04方法重载参数顺序不同也算重载数组每一个基本数据类型都有默认的初始值byte,short,int,long默认值都是0float,double默认值都是0.0boolean默认值为false原创 2020-07-15 16:04:07 · 103 阅读 · 0 评论 -
JAVA基础--学习笔记03
基本类型转化取值范围小的数据类型与取值范围大的数据类型进行运算,会先把小的数据类型转化成大的数据类型再运算。byte, short, char 类型混合运算时都会转成int类型原创 2020-07-06 06:29:23 · 126 阅读 · 0 评论 -
JAVA基础--学习笔记02
进制0b:二进制System.out.println(0b11);输出如下:30:八进制System.out.println(011);输出如下:90x:十六进制System.out.println(0x11);输出如下:17二进制1 字节 = 8 比特位(1byte = 8bit)1 kb = 1024 byte字节是数据储存的基本单位进制转化系数 * 基数的权次幂相加例如 0b1101 = 1 * 1 + 0 * 2 + 1 * 4 + 1 * 8 =原创 2020-07-02 20:29:00 · 112 阅读 · 0 评论 -
JAVA基础--学习笔记01
JRE和JDK的概述JRE是 Java Runtime Environment的简称,jre包括JVM和Java程序所需要的核心类库。JDK是 Java Development Kit的简称,包含java的开发工具和JREJDK = JVM + 核心类库 + java开发工具(javac, jar)标识符java标识符:java严格区分大小写;26个字母,0-9,_或$;不能使用关键字;不能以数字开头;包名:都小写 like:xxxyyyzzz类名,接口名:首字母大写,like:Xxx原创 2020-07-02 19:45:54 · 114 阅读 · 1 评论 -
记录一次bytedance面试经历
PS:首先庆祝下,我英文版leetcode刷题破百了~虽然之前中文版也刷过一些题目,现在大概一百多题的样子,不过可以作为一个新的起点,再接再厉。首先面试官真的是nice了,循循善诱型,一下子回答不出的题目不是一棒子打死,而是挖掘你的思路,这样至少多少能说出来一点。因为面试的是广州的bytedance,面试官有广州腔。还以为他要说粤语呢。主要问了以下几个核心问题:http和https,以及https如何实现加密的。单链表如何查到环入口(快慢指针就行,可惜的是,面试在楼梯上面的,没带笔和纸,用电脑原创 2020-06-22 01:25:37 · 648 阅读 · 0 评论 -
JAVA并发编程: CountDownLatch,CyclicBarrier 和 Semaphore
CyclicBarrierCountDownLatchSemaphoreReference / 参考:https://www.fangzhipeng.com/javainterview/2019/03/21/latch-barrier-semaphore.html原创 2020-06-02 20:50:30 · 232 阅读 · 0 评论 -
Mybatis错误:信息: SQLErrorCodes loaded: [DB2,
Mybatis运行出现错误提示:五月 23, 2018 12:07:22 上午 org.springframework.jdbc.support.SQLErrorCodesFactory 信息: SQLErrorCodes loaded: [DB2, Derby, H2, HDB, HSQL, Informix, MS-SQL, MySQL, Oracle, PostgreSQL, Sybase]一般这个错误是由于sql语句的输入参数与数据库表结构字段类型不一致导致。1、parameterType=原创 2020-06-01 03:47:53 · 1046 阅读 · 0 评论 -
图的DFS与BFS
图的DFS与BFS用好,能解决leetcode 25%的题目DFS是一次走到底,(如果不用递归)所以要用stack保留之前信息(可理解成树的先序遍历),BFS每次只走一步,新添加的待遍历点放入queue,等之后再遍历。其实我有一篇关于DFS和BFS很好的教材,不过是全英版的。链接戳这里~根据数据结构(C语言版)清华大学出版社:DFS:Boolean visited[MAX]; //记录某个节点是否被访问过Status(*VisitFunc)(int v);原创 2020-05-26 22:38:04 · 247 阅读 · 0 评论 -
JAVA Synchronized
参考 / References :https://blog.csdn.net/mulanlong/article/details/84566016最近刷leetcode时刷到了concurrent题目,所以深入学习下synchronized1.概念synchronized可以修饰代码块,方法,静态类和类2.修饰代码块:public class SyncThread implements Runnable { private static int count; public Sy原创 2020-05-25 16:25:40 · 162 阅读 · 0 评论 -
JAVA String 如何排序
思路:先把String转char[],然后用Arrays.sort()来排序// 把String转char[]String ss = "eat";char[] chs = ss.toCharArray();Arrays.sort(chs);Stirng result = new String(chs);原创 2020-05-15 08:55:36 · 3372 阅读 · 0 评论