java学习
文章平均质量分 77
java开发学习路线
L Y C
这个作者很懒,什么都没留下…
展开
-
22届SHEIN校招面试--JAVA开发工程师面经
这里写自定义目录标题个人背景性格测评+笔试一面 8.30 同事面二面 9.08 tl面三面 9.13 hr面四面 9.16 部门总监面五面 9.25 CEO面面试总结+实习期的感受今年一月,我投递了shein的Java实习岗位,当时没有准备充分,没有通过面试。今年九月,我卷土重来,顺利通过Shein提前批的五轮面试。现在已经提前去shein实习,成为一名光荣的sheiner了。先提前打个广告,shein的2022届的春招和2023届的实习招聘年后就会火速开启,使用我的内推码(NTAJPas) 投递的话,原创 2021-12-22 16:55:40 · 4787 阅读 · 3 评论 -
Netty源码分析(六)pipeline初始化,handlerContext添加和删除handler,inbound和outbound事件的传播
pipeline初始化创建channel的时候创建pipeline创建tail和head 两个ChannelHandlerContext 并连接起来,成为一个双向链表一个channel对应一个pipelineclass AbstractChannel { protected AbstractChannel(Channel parent) { this.parent = parent; id = newId(); unsafe = newUn原创 2021-08-25 21:53:51 · 324 阅读 · 1 评论 -
Netty源码分析(五) Netty检测新连接,并注册到workgroup的nioeventLoop线程,最后更新selector状态
新连接处理逻辑检测新连接创建NioSocketChannel分配线程和注册Selector向Selector注册读事件检测新连接bossGroup线程不断轮询,一有连接接入会调用processSelectedKey 方法获取通道上就绪的事件,关心连接事件连接并把缓冲区的写事件全部释放出去class NioEventLoop { private void processSelectedKey(SelectionKey k, AbstractNioChannel ch) {原创 2021-08-24 20:57:21 · 295 阅读 · 0 评论 -
Netty源码分析(四) NioEventLoop探究,线程创建器,执行器,启动,轮询io事件,处理io事件,优化任务队列,定时队列
上文提到了Netty创建Nio线程的过程,本文将更深入的了解EventLoopEventLoop事件循环通过不停的轮训事件集合,去处理所有的事件NioEventLoopGroup里面的线程创建器传入一个默认线程工厂 //底层实现了自己的ThreadFactory,继承于juc的ThreadFactory 每次执行任务都会新增一个线程实体线程命名为NioEventLoop - 1-xx(第一个NioeventLoop)class Test { public static voi原创 2021-08-18 20:25:45 · 322 阅读 · 0 评论 -
Netty源码分析(三)channel,创建channel,初始化channel,绑定端口,唤醒回调事件
ChannelNetty的抽象了一个顶层接口Channel相比原来NIO提供的Channel有更多的功能,当然也是相对复杂的。Java NIO包下的channelJavaNIO包下的channel 做了三层封装最顶层的Channel只封装了关和开两种状态第二层SelectableChannel封装了和Selector交互的状态第三层封装了具体的业务类Netty的channel继承图做了四层封装第一层channel抽象了所有的channel的公共行为第二层c原创 2021-08-09 20:57:33 · 874 阅读 · 0 评论 -
Netty源码分析(二),Netty中的future和Promise,DefaultPromise的实现
JUC包中的futureclass Test { public static void main(String[] args) { FutureTask<Boolean> hTask = new FutureTask<>(() -> { System.out.println(getCurrentThreadName() + "---------"); System.out.println("洗好茶壶");原创 2021-07-24 21:03:58 · 303 阅读 · 1 评论 -
Netty源码分析(一),Reactor模型,创建Nio线程组的过程
Reactor 模型Reactor适用于同步io事件分离者等待某个事件或者另外一个操作的状态发生分离者就会将事件传给回调函数处理经典Reactorreactor 将Io事件转发给对应的handleracceptor 处理连接事件Netty的Reactor 模型使用多Reactor模型一个Reactor监控所有的连接请求多个子Reactor监控处理读写请求一个子Reactor属于独立的线程,每个成功连接的Channel的操作只由一个线程处理,避免了不必要的上下文切换。原创 2021-07-22 21:32:16 · 165 阅读 · 1 评论 -
Netty入门,NIO,BIO,三大组件
NettyNetty是什么Netty是由JBOSS提供的一个java开源框架,现为 Github上的独立项目。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。也就是说,Netty 是一个基于NIO的客户、服务器端的编程框架,使用Netty 可以确保你快速和简单的开发出一个网络应用,例如实现了某种协议的客户、服务端应用。Netty相当于简化和流线化了网络应用的编程开发过程,例如:基于TCP和UDP的socket服务开发。“快速”和“简单”并原创 2021-02-06 15:05:37 · 224 阅读 · 0 评论 -
Es6语法,VUE快速入门(一)
ES6JavaScript的下一代标准与JavaScript的关系Es6是js的规格标准,js是Es6的一种实现ES6和ES5ES6代码简洁,es5的代码复杂ES6的浏览器兼容性很差,ES5的代码浏览器兼容性很好<script> //let为局部变量定义 { var a = 0; let b = 1; } console.log(a); console.log(b);</script>&l原创 2020-12-26 23:34:08 · 289 阅读 · 1 评论 -
面试问题准备(一),单例模式实例,类初始化和实例初始化,方法的参数传递,bean的作用域
写一个单例模式实例定义某个类只能在jvm存在一个实例并给别人使用只能存在一个实例 -->构造器私有化它必须自行创建这个实例 -》静态变量保存向整个系统提供这个实例 -》方法暴露出实例接口分类饿汉式直接实例化枚举式静态代码块饿汉式懒汉式线程不安全线程安全静态内部类饿汉式直接实例化public class Single { //1.构造器私有化 private Single(){ } //2.静态变量存储实原创 2020-12-25 21:08:36 · 286 阅读 · 0 评论 -
Redis进阶,事务,整合springboot 配置文件,持久化rdb aof,发布订阅,主从复制,哨兵模式,缓存穿透和雪崩
事务ACID原则要么同时成功,要么同时失败但Redis单条命令保证原子性,但事务不保证原则性Redis事务:一组命令一起执行,按照队列的顺序执行一次性,顺序性,排他性redis事务没有隔离级别的概念类比缓存,只有发行期执行命令的时候才会执行流程开启事务 multi命令入队 …执行事务 exec127.0.0.1:6379> multiOK127.0.0.1:6379> set k1 v1QUEUED127.0.0.1:6379> set k1 v2QU原创 2020-11-19 00:20:35 · 580 阅读 · 2 评论 -
redis入门,nosql,linux安装,测试性能,redis基础知识,Redis八大数据类型
redisRedis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave主从同步用处内存存储,持久化(rdb,原创 2020-11-10 19:50:39 · 160 阅读 · 0 评论 -
MyBatisPlus入门,crud扩展,主键生成策略,乐观锁,分页查询,条件构造器,代码自动生成器
MyBatisPlus简介mybatisi - plus是MyBatis的一个强大的增强工具包,用于简化开发。这个工具包为MyBatis提供了一些高效、有用、开箱即用的特性,使用它可以有效地节省您的开发时间。可以简化CRUD代码特性无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作。BaseMapper强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部原创 2020-10-08 20:51:41 · 400 阅读 · 0 评论 -
一次校内java实习岗面试记录
一次校内java实习岗面试记录Java基础部分Java8大基本类型int,double,long,short,char,float,Boolean,byteString是基本数据类型吗String不是基本类型,是一个final修饰的类,String类包含了很多常用方法,所以不是基本数据类型为什么Java只有单继承没有多继承避免多继承带来的方法混乱,跟现实世界抽象吻合,一般只有一个父类对象,同时Java拥有多接口实现,可以实现多个约束从技术的角度来说,是为bai了降低复杂性。例如,A类中du有原创 2020-09-25 15:56:19 · 197 阅读 · 0 评论 -
单例模式,工厂方法模式,抽象工厂模式,模板方法模式
单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供整个实例代码实现public class Singleton { //private限定初始化,保证自动初始化且只初始化一个对象 private static final Singleton singleton=new Singleton(); //私有化构造函数,防止创建多个变量 private Singleton() { } //提供给外部访问这个对象 pu原创 2020-09-16 22:53:15 · 195 阅读 · 0 评论 -
表,队列,栈入门
表表的定义形如 A0A_0A0 ,A1A_1A1 ,…,AN−1A_{N-1}AN−1的一系列数据表的简单数组实现public class Array { public static void main(String[] args) { int []arr =new int[10]; //生成一个两倍的新数组 int []newarr= new int[arr.length*2]; for (int i=0;i< a原创 2020-09-01 23:10:40 · 128 阅读 · 0 评论 -
SpringMvc入门,Restful风格
HelloSpringMvcweb.xml配置<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http原创 2020-09-01 12:42:53 · 88 阅读 · 0 评论 -
Swagger快速入门 集成到springboot中
Swagger简介Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法、参数和模型紧密集成到服务器端的代码,允许 API 来始终保持同步。Swagger 让部署管理和使用功能强大的 API 从未如此简单。Restful Api文档在线自动生成工具Spring boot集成swaggerswagger2 swaggerui导入依赖<dependency>原创 2020-08-25 15:28:01 · 176 阅读 · 1 评论 -
JavaScript面向对象编程,操作bom,dom,表单,jquery入门
面向对象编程原型:在JavaScript中,每个对象都有一个proto属性,这个属性指向该对象的原型。原型对象可以理解为父类Class创建对象 //原生给JS对象增加方法function Student(name){ this.name= name;}Student.prototype.hello = function (){ alert('hello');}//使用class创建对象 class Student1{ constructor(name) {原创 2020-08-24 19:45:36 · 142 阅读 · 0 评论 -
JavaScript快速入门,基本语法,数据类型,函数,内部对象
什么是JavaScript一门脚本语言,可以在浏览器上直接解释ECMAScipt一个JavaScript的标准,最新版本到es6快速入门<!--在script标签内,写javascript代码 弹出helloword--><script> alert("helloworld");</script>也可以把JavaScript语句放在js文件中,再引用 <script src="js/tc.js"> </scrip原创 2020-08-18 19:26:08 · 123 阅读 · 0 评论 -
Springboot入门 微服务,启动器,主程序启动,yaml语法,thymeleaf模板引擎
什么是SpringBoot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置,拒绝xml配置,解决SSM的配置第i与问题 能够迅速开发web应用 核心:自动装箱Springboot的特点约定大于配置继承了大量常用的第三库配置:Redis,MongoDB,JPa,RabbitMQ,Quartz内嵌式容器简化web项目没有多余代码生成和x原创 2020-08-15 11:22:16 · 249 阅读 · 0 评论 -
Spring注解开发,用JavaConfig配置spring 静态代理和动态代理,Spring实现aop
使用注解开发类的注入@Component //等价于<bean id="user" class="com.lyc.pojo.User"/> //组件,放在类上,说明这个类被Spring管理了 <!--指定要扫描的包,包下的注解就会生效--> <context:component-scan base-package="com.lyc.pojo"/>属性的注入放在属性上方@value@Value("lyc")private Str原创 2020-08-04 21:12:40 · 377 阅读 · 1 评论 -
Spring入门 IOC理论,第一个spring程序Di依赖注入,Bean的自动装配
简介spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅仅限于服务器端的开发。从简单性、可测试性和松耦合性角度而言,绝大部分Java应用都可以从Spring中受益。Spring的组成Spring Core 核心容器核心容器提供Spring框架的基本功能,Spring以bean的方式组织和管理java应用的各个组件和关系使用BeanFactory来产生和管理BeanSpringCont原创 2020-08-03 10:49:59 · 176 阅读 · 1 评论 -
Mybatis模糊查询和配置解析
模糊查询java代码执行的时候,传递通配符% %List<User> getUserLike(String name);<select id="getUserLike" resultType="com.lyc.pojo.User"> select * from user where name like #{value}</select>public void getUserLike(){ SqlSession sqlSessi原创 2020-07-30 11:10:04 · 321 阅读 · 0 评论 -
Mybatis入门,第一个Mybatis程序,Mybatis实现增查改删
简介MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。获得Mybatis通过maven导入依赖Gayhub上下载为什么需要Mybatis简洁完成JDBC代码框架:封装了很多代码,只需要专注于实原创 2020-07-29 15:30:42 · 155 阅读 · 0 评论 -
注解,反射,类加载内存方式,反射操作注解
注解,反射,类加载内存方式,反射操作注解注解的简介什么是注解Annotation不是程序本身,可以对程序做出解释可以被其他程序读取Annotation的格式@注释名例:@OverrideAnnotation在哪里使用可以附加在package,class,method,field上面,相当于给他们添加了额外的辅助信息我们可以通过反射机制编程实现对这些元数据的访问内置注解@Override:表示一个方法声明打算重写超类中的另一个方法声明@Deprecated:表示不鼓励程序原创 2020-07-27 16:54:33 · 170 阅读 · 0 评论 -
Cookie和Session,JSP,JSP和EL表达式
Cookie和Session,JSP,JSP和EL表达式会话**会话:**用户打开了一个浏览器,点击了很多超链接,访问多个web资源,关闭浏览器的过程有状态会话:带着用户身份进行会话网站怎么标识用户的身份?服务端给客户端一个cookie,客户端下次访问服务端带上cookie服务器登记cookie,下次cookie来匹配用户保存会话的两种技术Cookie客户端技术(响应和请求)源码分析public class Cookie implements Cloneable, Serial原创 2020-07-22 14:19:01 · 146 阅读 · 0 评论 -
DNS,P2P,TCP套接字编程
DNS,P2P,TCP套接字编程DNSDNS提供的服务同一台用户主机上运行着DNS应用的客户机端。该浏览器从上述URL中抽取出主机名wWw. someschoo1,edu,并将这个主机名传给DNS应用的客户机端。该DNS客户机向DNS服务器发送一个包含主机名的请求。该DNS客户机最终会收到一份回答报文,其中含有对应于该主机名的IP地址。一旦该浏览器接收到来自DNS的IP地址,它就可以向由该IP地址定位的HTTP服务器发起一个TCP连接。DNS协议运行在UDP之上, 使用53号端口。D原创 2020-07-21 14:14:55 · 400 阅读 · 0 评论 -
HTTPservlet简单学习:下载文件,验证码动态图片生成,请求重定向
Java web学习Maven背景:javaweb开发中需要大量的jar包让一个东西自动导入和配置jar包Maven:架构管理工具**核心思想:**约定大于配置有约束,不要去违反Maven会规定你该如何去编写java代码Servlet简介sun公司开发动态web的一门技术Sun在这些api中提供了一个接口,叫做Servlet编写类,实现Servlet接口部署到web服务器中ServletContext对象web容器在启动的时候,它会为每一个web程序都创建一原创 2020-07-20 21:36:15 · 124 阅读 · 0 评论 -
计算机网络应用层协议部分学习
计算机网络学习第二章,应用层协议部分应用层协议原理研发网络应用程序的核心是写出能够运行在不同的端系统和通过网络彼此通信的程序。例如,在Web应用程序中,有两个互相通信的不同的程序:一个是运行在用户主机(桌面机、膝上机、PDA、蜂窝电话等)上的浏览器程序;另一个是运行在Web服务器主机上的Web服务器程序。又比如P2P文件共享系统,在参与文件共享的每台主机中都有一个程序。在这种情况下,每台主机中的这些程序可能都是类似的或相同的。网络应用程序体系结构各种端系统上组织该应用程序。在选择应用程序体系结构原创 2020-07-18 14:10:01 · 421 阅读 · 0 评论 -
Docker镜像学习,构建jdk+tomcat镜像
Docker镜像学习什么是镜像镜像是可执行的独立软件包,包括代码,运行时的库,环境变量和配置文件所有的应用直接打包成docker镜像,可以直接跑起来。如何得到镜像Docker pull从别人获取自己打包制作镜像 DockerFileUnionFS(联合文件系统)分层下载镜像的层目的是公用资源重复利用UnionFS:分层,轻量,高性能的文件系统,支持对文件系统的修改作文一次提交达到一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下。Docker镜像可以通过分层来进行继承,可以制原创 2020-07-17 16:18:37 · 721 阅读 · 0 评论 -
docker 学习,安装,部署
docker 学习docker 为什么出现没有docker传统开发的问题开发,上线两套环境,对开发和运维产生问题版本更新,导致服务不可用环境配置麻烦windows开发和Linux服务器不一样多个应用端口冲突,配置冲突通过docker把项目和环境捆绑起来,解决以上问题java -jar(环境) 打包项目带上环境(镜像)运行镜像。使用Docker的好处应用更快速的交付和部署传统:帮助文档,安装程序docker :打包镜像发布测试更便携的升级环境更方便的升级更简单的系统运维原创 2020-07-16 10:12:27 · 217 阅读 · 0 评论 -
计算机网络自顶向下方法第一章学习
第1章计算机网络和因特网什么是因特网公共因特网是一个世界范围的计算机网络互联了遍及全世界的数以百万计的计算设备的网络,这些计算设备多数是传统的桌面PC、 基于Lhux的工作站以及所谓的服务器(它们用干存储和传输web冗面和电子邮件报文等信息所有这些设备都称为主机(host)或端系统( end system)端系统通过通信链路(communication link)和分组交换机(packet switch)连接到一起,这些物理媒体包括同轴电缆、铜线、光纤和无线电频谱。不同的链路以不同的速率传输数据原创 2020-07-14 22:30:12 · 979 阅读 · 0 评论 -
java socket 编程实现客户端和服务端接收信息
java socket 编程,实现客户端和服务端接收信息#学习笔记/编程/sockettcp/IP四层模型链路层:数据物理层,光纤,网线之类网络层:用于将传输的数据进行分组,分配到相应的计算机或端口传输层:网络之间进行通信应用层:应用程序常见网络通信协议网络双方必须同时遵守才能进行数据交换UDP:数据源和目的地封装在数据包中数据包大小<64k安全性差,速度快,面向无连接,容易丢包,用于传输即时性数据,比如视频,音频;TCP通过三次握手后形成通道,再传输数据,安全性较原创 2020-06-04 23:19:44 · 2253 阅读 · 0 评论 -
jdbc,servlet 实现向数据库插入数据 在数据库查询数据
思路将数据库增查改删封装到dao类,先设计一个dao接口,后面实现相应的操作dao接口只用到增加和查询package jdbc;import java.sql.SQLException;public interface dao { public boolean add(String name,String password) ; public boolean get(String name,String password);}向数据库插入数据使用Prep原创 2020-06-01 22:57:14 · 1206 阅读 · 0 评论 -
git学习第一天
git的学习#学习笔记/编程/gitgit 和svn的区别svn 集中管理工具每一个客户机和svn服务器交互服务器单点故障(少有的缺点)适用于局域网内git分布式管理工具每个开发人员都有一个版本库(本地仓库开发)远程仓库(共享版本库)git 工作流程从远程仓库克隆git资源作为本地仓库从本地仓库中checkout 代码然后进行代码修改提交前将代码提交到暂存区提交修改。本地仓库保存修改的各个历史版本修改完成后将代码push到远程仓库创建版本库.git 本地仓库,包原创 2020-05-30 15:02:23 · 91 阅读 · 0 评论 -
Linux服务器部署jdk,tomcat,mysql服务
Linux服务器部署jdk,tomcat,mysql服务#项目部署jdk在官网下载对应版本jdk包:https://www.oracle.com/cn/java/technologies/javase-downloads.htmlJava Development Kit(JDK) 和 Java Runtime Environment(JRE)的区别:JDK包括了Java运行环境(JRE),Java工具和Java基础类库。JRE包含JVM标准实现和Java核心类库。服务器端可原创 2020-05-27 16:31:50 · 116 阅读 · 0 评论 -
jdbc 第二天
数据库修改命令增删改传递相应的sql语句进入statement对象sql="insert into table values() ";//添加进表sql="delete from table";//删除sql="update table set ";//更新s.excute(sql);查使用executeQuery查询,查询结果返回一个ResultSet相当于获得一个指向表头的...原创 2020-04-28 17:21:49 · 105 阅读 · 0 评论 -
jdbc 第一天
jdbc基本环境mysql connector for java安装jar包导入建立连接导包步骤(eclipse中)右键project-〉property-〉java bulid path-〉libaries->add external jars;初始化驱动如果没有导包,会抛出ClassNotFoundExceptiontry{ Class.forNam...原创 2020-06-12 16:38:02 · 113 阅读 · 0 评论 -
用java单向循环链表解决约瑟夫问题
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Ma...原创 2019-09-28 22:16:16 · 339 阅读 · 0 评论