Java
文章平均质量分 83
行走的歌
这个作者很懒,什么都没留下…
展开
-
线程通信--
三个线程实现顺序打印0aA1bB//1、 park--unparkpublic class Main { static Thread threadA,threada,threadN; public static void main(String[] args) { Print2 print = new Print2(); threadA = new Thread(()->{ for(int i=0;i<26;i++){原创 2021-08-31 12:56:39 · 106 阅读 · 0 评论 -
Redis
Redis1、什么是Redis?Redis是一个使用C语言开发的数据库,与传统数据库不同的是,Redis的数据存在内存中,是内存数据库,读写速度快,被广泛用于数据缓存。Redis除了用作缓存,还可以用来做分布式锁,甚至是消息队列。Redis提供了多种数据类型支持不同的业务场景。Redis还支持事务、持久化、Lua脚本、多种集群方案等。什么场景下使用Redis?配合关系型数据库用作高速缓存用作分布式锁用作缓存队列发布订阅场景为什么redis快?(1)redis是运行在内存的,自然原创 2021-08-13 23:01:50 · 1002 阅读 · 0 评论 -
浅析单例模式
1、静态内部类部分 :public class Singleton { private Singleton() { } private static class SingletonHolder { private static final Singleton INSTANCE = new Singleton(); } public static Singleton getUniqueInstance() { return Sing原创 2021-07-22 22:57:07 · 179 阅读 · 0 评论 -
SpringBoot
SpringBootSpringBoot Controller从前端取参数的方式:第一类:请求路径参数1、@PathVariable获取路径参数。即url/{id}这种形式。2、@RequestParam获取查询参数。即url?name=这种形式第二类:Body参数1、@RequestBody2、无注解第三类:请求头参数以及Cookie1、@RequestHeader2、@CookieValue@GetMapping("/demo3")public void demo3(原创 2021-06-29 21:16:31 · 238 阅读 · 0 评论 -
SpringMVC
Spring MVCSpring MVC 简单概述:Model1:早期 Java Web 的开发中,统一把显示层、控制层、数据层的操作全部交给 JSP 或者 JavaBean 来进行处理[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U5ZZLPZC-1624972406395)(./Java工程.assets/model11.png)]JSP 和 Java Bean 之间严重耦合,Java 代码和 HTML 代码也耦合在了一起要求开发者不仅要掌握 Java ,还要原创 2021-06-29 21:15:00 · 442 阅读 · 0 评论 -
Spring
MyBatis0、MyBatis、JDBC、Hibernate、IBatis对比:1、JDBC 的缺点:工作量较大。需要先连接,然后处理JDBC底层事务,处理数据类型。需要操作Connection对象、Statement对象和ResultSet对象去取数据,并准确关闭它们。要对JDBC的编程可能产生的异常进行捕捉处理并正确关闭资源。在工程中很少使用JDBC编程,通常使用对象关系映射(Object Relational Mapping,ORM),将数据库对象和POJO相互映射。2、Hibern原创 2021-06-29 21:09:37 · 233 阅读 · 0 评论 -
MyBatis
MyBatis0、MyBatis、JDBC、Hibernate、IBatis对比:1、JDBC 的缺点:工作量较大。需要先连接,然后处理JDBC底层事务,处理数据类型。需要操作Connection对象、Statement对象和ResultSet对象去取数据,并准确关闭它们。要对JDBC的编程可能产生的异常进行捕捉处理并正确关闭资源。在工程中很少使用JDBC编程,通常使用对象关系映射(Object Relational Mapping,ORM),将数据库对象和POJO相互映射。2、Hibern原创 2021-06-29 21:07:38 · 431 阅读 · 0 评论 -
关于push()、pop()、offer()、poll()
之前一直以为push和offer方法都一样,今天做一道题,使用栈进行实现。发现有所不同,读一下源码观察一下发现源码都是封装好的hh—源码读起来真开心// Deque 继承自 Queue 继承自 Collection 继承自 Iterable--Iterable实现迭代器public interface Deque<E> extends Queue<E> {}public interface Queue<E> extends Collection<E>原创 2021-05-26 11:49:20 · 8879 阅读 · 1 评论 -
Java8 新特性
本来打算通过看书《Java 8 函数式编程》,然后加深对Java 8特性的学习;但读书还是慢的,可能也有些浮躁,看不下去书。先速成一波,对一些我不知道的功能先进行一个了解,然后再通过看书进行补充。概要:Lambda 表达式 − Lambda 允许把函数作为一个方法的参数(函数作为参数传递到方法中)。Stream API −新添加的Stream API(java.util.stream) 把真正的函数式编程风格引入到Java中。方法引用 −方法引用提供了非常有用的语法,可以直接引用已有Java类或原创 2021-05-25 20:24:17 · 212 阅读 · 2 评论 -
详解序列化和反序列化
序列化的最终目的就是为了对象可以跨平台存储及进行网络传输。进行跨平台存储和网络传输的方式就是IO,IO支持的数据格式是字节数组。并且我们还需要将字节数组还原回对象的原来模样,因此需要在对象转换成字节数组时就制定一种规则–序列化1、概念把Java对象转换为字节序列的过程称为对象的序列化。把字节序列恢复为对象的过程称为对象的反序列化。2、序列化的用途:核心作用就是对象状态的保存和重建–字节流中所保存的对象状态及描述信息把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中 --(持久化对象)原创 2021-05-21 20:13:37 · 460 阅读 · 1 评论 -
Thrift
Apache Thrift–概述与入门0、前言RPC框架远程过程调用(Remote Procedure Call, RPC),是一种可以通过网络从远程计算机程序上请求服务的计算机通信协议。RPC框架的开发步骤:1、定义一个接口说明文件:描述对象(结构体)、对象成员、接口方法等信息;2、通过RPC框架所提供的编译器,将接口说明文件编译成具体的语言文件;3、在客户端和服务器端分别引入RPC编译器所生成的文件,即可像调用本地方法一样调用服务器端代码。RPC框架工作流程:1、服务消费者(cli原创 2021-05-21 19:32:53 · 863 阅读 · 0 评论 -
REST&RESRful
RESTful API 编写指南RESTful架构风格概述REST架构风格REST1、什么是REST?“REST不是一种协议,也不是一种文件格式,更不是一种开发框架。它是一系列设计约束的集合。” --是一组架构约束条件和原则。REST描述的是在网络中client和server的一种交互形式;REST本身不实用,实用的是如何设计 RESTful API(REST风格的网络接口)REST(REpresentational State Transfer)–表现层状态转移–是一种软原创 2021-05-20 21:10:49 · 469 阅读 · 0 评论 -
Dubbo & Zookeeper
dubbo跟thrift都是比较常见的RPC框架。DubboDubbo只支持Java语言。Dubbo 的架构主要包含四个角色,其中 Consumer 是服务消费者,Provider 是服务提供者,Registry 是注册中心,Monitor 是监控系统。具体的交互流程是 Consumer 一端通过注册中心获取到 Provider 节点后,通过 Dubbo 的客户端 SDK 与 Provider 建立连接,并发起调用。Provider 一端通过 Dubbo 的服务端 SDK 接收到 Consumer原创 2021-05-20 20:20:12 · 3113 阅读 · 0 评论 -
RPC
需要精简1、常见的分布式应用架构风格:从架构风格的抽象高度来看,常见的分布式应用架构风格有三种:分布式对象(Distributed Objects,简称 DO)– 架构实例有 CORBA/RMI/EJB/DCOM/.NET Remoting 等等远程过程调用(Remote Procedure Call,简称 RPC)– 架构实例有 SOAP/XML-RPC/Hessian/Flash AMF/DWR 等等表现层状态转移(Representational State Transfer,简称 RE原创 2021-05-20 17:24:41 · 222 阅读 · 0 评论 -
Java十大排序算法实现
十大排序算法–知乎十大排序算法–菜鸟教程import java.util.ArrayList;import java.util.Collections;public class Sort { public static void main(String[] args) { } // 1、冒泡排序 // 从最后一个索引位置开始,每次确定一个位置的数,保证后半段有序 // 第二层循环是从最前面一个一个比较,直到有序的位置 public static翻译 2021-05-10 20:31:27 · 113 阅读 · 0 评论 -
深入理解volatile关键字
Volatile关键字为了解决线程并发的问题,在语言内部引入了 同步块 和 volatile 关键字机制。synchronized同步块:在多线程访问的时候,关键字synchronized可以保证同一时刻只能有一个线程执行某方法或某代码块。volatile关键字:多线程编程中,不希望对拷贝的副本进行操作,希望直接进行原始变量的操作(节约复制变量副本与同步的时间),就可以在变量声明时使用volatile关键字。使用volatile定义的变量在进行操作时直接进行原始变量内容的处理。被volatil原创 2021-05-10 13:29:57 · 175 阅读 · 1 评论 -
Map.Entry
interface Entry<K,V> { K getKey(); V getValue(); V setValue(V value); boolean equals(Object o); int hashCode(); public static <K extends Comparable<? super K>, V> Comparator<Map.Ent原创 2021-05-10 11:22:25 · 205 阅读 · 1 评论 -
2021四月实习部分面经
很吵,,,很突然。。。。1、介绍一下商城项目这一部分要在通顺一些。2、MySQL的锁3、设计数据库表,考虑那些方面?4、数据库的索引有什么作用?5、用什么算法实现数据结构?6、B+树查询的时间复杂度?7、除了B+树之外还有没有别的实现结构?—哈希索引、全文索引8、哈希的查询时间复杂度9、为什么使用B+实现,用哈希的不多?10、Hashmap和HashTable的区别?11、线程安全通过什么方式保证?12、出现哈希冲突的时候有哪几种解决方式?13、出现很多冲突的时候?14、红黑树原创 2021-05-10 10:35:24 · 172 阅读 · 0 评论 -
操作系统笔记
操作系统这部分,等面完下次面试再结合别人的博客进一步整理学习先针对面试题补一下空。1、什么是操作系统?1、操作系统(Operating System,OS)本质上是一个运行在计算机上的软件程序,用于管理计算机硬件与软件资源,是计算机的基石。2、操作系统的存在屏蔽了硬件层的复杂性,可以对硬件资源进行管理、分配、调度。3、操作系统向用户提供操作界面。4、操作系统是一种介于硬件和用户之间的特殊的软件。5、操作系统的内核是操作系统的核心部分,它负责系统的内存管理,硬件设备的管理,文件系统的管理及应用程原创 2021-05-10 10:08:26 · 106 阅读 · 0 评论 -
MySQL及数据库部分笔记
之前的写的太碎了,把之前的四篇博客合在一起,去除代码及冗杂。一、数据库Database:用于存储和管理数据的仓库。使用MySQL客户端—Navicat for MySQL----使用介绍1、概述:特点:1、可以持久化地存储数据,本身是一个文件系统。2、可以方便地存储和管理数据。3、使用统一的SQL来操作数据库。data/mysql文件夹下 :文件夹对应数据库, .frm文件都是一些表安装目录下,my.ini 是配置文件。2、SQL:1、什么是SQL? 结构化查询语言(Struc转载 2021-04-08 17:39:48 · 455 阅读 · 0 评论 -
HTTP笔记
这部分本来没打算仔细看,后来发现面试的时候会问到我,再稍微看一看。面试题:在浏览器中输入url地址->显示主页的过程?1、DNS解析2、TCP连接3、发送HTTP请求4、服务器处理请求并返回HTTP报文5、浏览器解析并渲染页面6、结束连接面试题:各种协议和HTTP协议之间的关系:1、基础概念请求和响应报文客户端发送一个请求报文给服务器,服务器根据请求报文中的信息进行处理,并将处理结果放入响应报文中返回给客户端。请求报文结构:第一行包含了请求方法、URL、协议版本;接着多原创 2021-04-06 21:41:53 · 535 阅读 · 0 评论 -
谷粒商城学习(七)
记录一些视频中的讲述,后面整理的时候再进行补充修正。1、什么是事务?保证数据的一致性:对于复杂的业务操作,由于业务的复杂性,需要完成多表的增删改查并放在同一张元子里面同时提交和回滚,同时兼顾数据一致性,引入的就是事务。2、什么是分布式事务?在分布式环境下保持数据的一致性---保持事务一致性--在分布式的环境下有些业务需要并发处理,但是不同业务对应不同的数据及结构,不同的数据和结构如何在一个业务中同时提交或回滚。--其他的事务成功了,有一个事务没有成功进行了回滚,这样不行。---要死一起死原创 2021-03-27 18:02:56 · 267 阅读 · 0 评论 -
谷粒商城学习笔记---补充部分
初步记一下,后续整理1、秒杀及限流使用redis进行实现--开启商品的监控----使用redis的watch来保证秒杀的成功--multi-watch使用Redisson进行实现---getSemaphore-----tryAcquire();随机运气机制、先到先得机制2、限流限流,限制服务器的流量,单位时间内的吞吐数,处理请求的数量。漏桶算法:设置一个桶的容量,即最大承载值,如果大于这个容量直接false,时间间隔相乘速率。令牌桶算法:以一个恒定的速度往桶里放入令牌,而如果请求需要被原创 2021-03-27 15:29:42 · 208 阅读 · 0 评论 -
谷粒商城学习笔记(六)--搜索
1、搜索搜索:计算机根据用户输入的关键词进行匹配,从已有的数据库中摘录出相关的记录反馈给用户。若使用传统关系型数据库:1、对于传统的关系性数据库对于关键词的查询,只能逐字逐行的匹配,性能非常差。2、匹配方式不合理,比如搜索“小密手机” ,如果用like进行匹配, 根本匹配不到。但是考虑使用者的用户体验的话,除了完全匹配的记录,还应该显示一部分近似匹配的记录,至少应该匹配到“手机”。使用专业全文索引进行搜索:全文搜索引擎目前主流的索引技术就是倒排索引的方式。-----用内容去匹配索引传统的保原创 2021-03-26 22:29:39 · 750 阅读 · 1 评论 -
谷粒商城学习笔记(五)
1、项目整体流程2、FastDFS工作机理nginx+FastDFS:把文件服务单独管理起来,作为文件服务器。项目中,我们把FastDFS安装配置在虚拟机–作为存储商品图片的文件服务器。3、Example类Mybatis中Example类的使用 //修改属性 Example example = new Example(PmsBaseAttrInfo.class); example.createCriteria().andEqualTo("id", pmsBaseAttrInfo.getI原创 2021-03-24 14:55:59 · 580 阅读 · 0 评论 -
MySQL学习记录(四)
之前单独地学习过MySQL,项目中又有讲,作为对之前笔记的补充Select *fromJoin onWhereGroup ByHavingOrder byLimitFromJoin onWhereGroup byHavingSelectOrder byLimitFROM ONJOIN WHEREGROUP BY HAVING SELECT ORDER BYLIMIT左连接、右连接、内连接--LEFT、RIGHT、INNER------可以延伸出七原创 2021-03-19 13:53:38 · 116 阅读 · 0 评论 -
MySQL学习记录(三)
这一部分主要记录一下MySQL的一些本身的知识。1、B树、B+树、红黑树1、B TreeB Tree 指的是 Balance Tree,也就是平衡树。平衡树是一颗查找树,并且所有叶子节点位于同一层。M=3 的 B树:B树(B-树) 是一种多路搜索树(并不是二叉的): 1.定义任意非叶子结点最多只有M个儿子;且M>2; 2.根结点的儿子数为[2, M]; 3.除根结点以外的非叶子结点的儿子数为[M/2, M]; 4.每个结点存放至少M/2-1(取上整)和至多M-原创 2021-03-19 13:52:47 · 256 阅读 · 0 评论 -
计算机网络--笔记
这一部分之前本科时学习过,但是忘了不少,还是仔细看一下,直接看cyc大佬的笔记。1、基本概念互联网:网络连接主机,互联网(internet)连接网络,互联网(Internet)是全球范围的互连网。ISP:Internet Service Provider,互联网服务提供商。可以从互联网管理机构获得许多 IP 地址,同时拥有通信线路以及路由器等联网设备,个人或机构向 ISP 缴纳一定的费用就可以接入互联网。IXP:Internet Exchange Point,互联网交换点。目前的互联网是一种多层原创 2021-03-16 22:01:48 · 605 阅读 · 0 评论 -
Java IO -- 笔记
感觉这一部分,面试问不太多,快速看一下。同样还是看cyc大佬笔记1、Java IO分类:1、磁盘操作:File2、字节操作:InputStream、OutputStream3、字符操作:Reader、Writer4、对象操作:Serializable5、网络操作:Socket6、新的输入输出:NIO2、磁盘操作:File类File类可以用于表示文件和目录的信息,但是不表示文件内容。Java7开始,可以使用Paths和Files代替File//使用File类递归地列出一个目录下所有文件:原创 2021-03-13 23:48:39 · 165 阅读 · 0 评论 -
Java并发--笔记
有看过一部分,但是用得少,也没什么记性。瞎敲,cyc大佬的笔记,很多很碎,还是得敲。一、使用线程有三种使用线程的方法:1、实现Runnable接口 2、实现Callable接口 3、继承Thread类实现Runnable和Callable接口的类只能当做一个可以在线程中运行的任务,不是真正意义上的线程,因此最后还需要通过Thread来调用。可以理解为任务是通过线程驱动而执行的。插播面试题:线程和进程的区别?进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系原创 2021-03-12 23:41:18 · 285 阅读 · 0 评论 -
Java虚拟机--笔记
好记性不如烂笔头,对Java虚拟机部分做个笔记。–阅读cyc大佬的笔记一、运行时数据区域1、程序计数器是线程私有的。记录当前线程所执行的字节码的行号指示器,程序运行过程中,字节码解释器工作时就是通过改变计数器的值选取下一条需要执行的字节码指令,分支、循环、异常处理、线程恢复等基础功能都依赖计数器完成记录正在执行的虚拟机字节码指令的地址,如果正在执行的是本地方法则为空。2、Java虚拟机栈Java虚拟机栈是Java方法执行的内存模型,栈中存放栈帧,每个栈帧对应一个被调用的方法从方法调用至执行原创 2021-03-10 23:00:45 · 193 阅读 · 0 评论 -
Java容器--笔记
Java容器1、概述Collection:存储对象的集合1、Set 1、TreeSet:基于红黑树实现,支持有序性操作。查找效率不如HashSet。查找的时间复杂度为O(logN) 2、HashSet:基于哈希表HashMap实现,支持快速查找但不有序。失去了元素插入顺序信息。查找的时间复杂度为O(1) 3、LinkedHashSet:内部使用双向链表维护元素的插入顺序,有HashSet的查找效率。 2、List 1、ArrayList:基于动态数组实现,支持随机访问。 2、Vect原创 2021-03-07 23:28:34 · 200 阅读 · 0 评论 -
java基础部分笔记
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码原创 2021-03-04 20:26:31 · 188 阅读 · 2 评论 -
Java反射及注解
反射-----------------框架设计的灵魂。框架:半成品软件。可以在框架的基础上进行软件开发,简化代码。—用框架写代码不用反射,写框架得懂反射。反射:将类的各个组成部分封装成其他对象,就是反射机制。 ----将成员变量封装成Field对象、构造方法封装成Constructor对象、成员方法封装成Method对象---这就是反射。 --好处: 1、可以在程序运行过程中,操作这些对象。--可以知道对象在运行中有什么方法 2、可以解耦,提高程序的可扩展性。获取class对象的三原创 2021-03-04 17:33:54 · 154 阅读 · 2 评论 -
Arrays.sort详解
先放一篇别人写的:他山之石今天做一道题,使用了Arrays.sort并重写Comparator比较器。之前也做过,知道怎么写,但是具体怎么实现的有点迷糊。1、Arrays.sort(int[] a)这个是最基础的,我们都知道可以将数组按从小到大的顺序进行排序。 int[] a = {9, 8, 7, 2, 3, 4, 1, 0, 6, 5}; Arrays.sort(a);结果:0 1 2 3 4 5 6 7 8 9 2、Arrays.sort(int[] a, i原创 2020-12-31 16:17:21 · 2142 阅读 · 1 评论 -
谷粒商城学习笔记(四)
本文用来记录实现功能的一些代码。原创 2020-12-18 23:23:48 · 235 阅读 · 0 评论 -
谷粒商城学习笔记(三)
数据结构:1、分类 一共分为三级,即一级分类、二级分类、三级分类。 比如:家用电器是一级分类,电视是二级分类,那么超薄电视就是三级分类。2、平台属性和销售属性 平台属性和平台属性值主要用于商品的检索,每个三级分类对应的属性都不同。 销售属性,就是商品详情页右边,可以通过销售属性来定位一组spu下的哪款sku。可以让当前的商品详情页,跳转到自己的“兄弟”商品。 不同销售属性的组合也就构成了一个spu下多个sku的结构。 关系: 平台属性, 就是之前分类下面,辅助搜索原创 2020-12-15 17:59:33 · 387 阅读 · 0 评论 -
谷粒商城项目笔记(二)
前后端分离谷粒商城是前后端分离的结构。----------前端模块已经是写好的项目—做后端的我们一般用不到,不过界面和后端代码连接的方法名有问题可以在这里改,改前端的信息。src文件目录:其中,api是异步服务调用的地址,views是页面数据属性的封装。这个路径下修改某些方法名:分布式架构gmall-user项目中所有的controller、service接口、service实现都在一个工程,通过Spring的ioc就可以实现互相调用。随着架构不断增大,服务节点也越来越多,服务之间的原创 2020-12-15 17:18:37 · 314 阅读 · 0 评论 -
MySQL学习记录(二)
约束 概念: 对表中的数据进行限定,保证数据的正确性、有效性、完整性。 分类: 1、主键约束:primary key 2、非空约束:not null 3、唯一约束:unique 4、外键约束:foreign key1、非空约束: not null 值不能为空-- 创建表时添加非空约束CREATE TABLE stu( id INT, NAME VARCHAR(20) NOT NULL -- name 为非空);-- 删除name的非空约束ALTER TABLE stu原创 2020-12-15 15:12:44 · 392 阅读 · 0 评论 -
谷粒商城项目笔记(一)
这里是对我对谷粒商城项目学习的一些记录,方便日后查阅。涉及到的软件及技术:1、Spring-SpringBoot:springboot是一个微服务框架。参考 参考2、Dubbo-SpringCloud:做分布式请求的处理,远程服务调用的分布式框架。 Dubbo使用Zookeeper作为服务发现和治理的组件,所以需要搭建Zookeeper集群作为依赖。参考 参考参考3、MavenMaven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组原创 2020-12-13 13:07:31 · 1127 阅读 · 1 评论