java基础知识
DachuanDachuan
缘于对卓越的不懈追求,我们才会登上新的高度。在一次次腾飞、跨越与攀登中,我们寻求新的目标、新的挑战、新的朋友。放眼于未来、开拓于世界,我们将为自己的明天做好充实的奠基。
展开
-
建造者模式
建造者(Builder)模式的定义:指将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。它是将一个复杂的对象分解为多个简单的对象,然后一步一步构建而成。它将变与不变相分离,即产品的组成部分是不变的,但每一部分是可以灵活选择的。该模式的主要优点如下:封装性好,构建和表示分离。 扩展性好,各个具体的建造者相互独立,有利于系统的解耦。 客户端不必知道产品内部组成的细节,建造者可以对创建过程逐步细化,而不对其它模块产生任何影响,便于控制细节风险。其缺原创 2021-05-16 17:17:02 · 122 阅读 · 0 评论 -
Java是解释型语言,还是编译语言
跨平台运行时无需再编译,就是解释性语言跨平台需要重新编译--->就是编译时语言,拿java来说,是解释性语言, 这个需要JVM虚拟机在进行解释成汇编语言,才能再次转换成机器码,原创 2020-07-24 09:42:14 · 488 阅读 · 0 评论 -
MySQL事务ID分配时机问题
在快照读的时候, 有三个隐藏列: row_id trx_id undo_log 指针, 还有delete_flag快照读是通过trx_id 和时间来确定读取哪条undo_log, 这个时间就存在下边的表中 select * from information_schema.INNODB_TRX;也可以通过这个监控 事务ID生成的时间及先后顺序....原创 2020-06-21 06:52:53 · 1760 阅读 · 1 评论 -
MySQL join 语句优化
常见的join 语句: 左关联 右关联 全关联优化原则: 小表作为驱动表 大表作为被驱动表举例:T1 表示订单表有1000W条记录;T2 表示个人信息表10000条数据;select * from T1 left join T2 on T1.id =T2.id where ******;这个时候要查询1000W次,执行流程是这样的: 拿到T1的一条记录,去T2查询, 然后where ;// 第二种情况 反转一下select * from T2 le...原创 2020-06-20 17:46:01 · 230 阅读 · 0 评论 -
面试:网络知识汇总
面试题经常问到:1.首先根据URL访问DNS服务器找到需要方位的IP, 因为IP才是真正第对应一台真正的机器;2.get 到IP的时候,这个时就会三次握手, 正常的走一次TCP/IP请求; 注意:源IP:本地机器IP源端口号:随机的一个端口号,一般是大于1000,目标IP: 刚刚获得的IP 端口号: 803.组织HTTP请求参数{应用层} ,TCP组装参数[传输层]--->要做的事情就是封装HTTP参数,然后将端口号 封装进去;4 网络层 IP...原创 2020-06-18 19:03:20 · 300 阅读 · 0 评论 -
彻底搞懂IO
经常问到IO,用到什么设计模式,手写IO 读取 写入 复制;1. IO是什么? 为什么要这样操作?答: IO是流, 是数据流,字节流, 视频流, Java操作这些流式从内核中读取的, 写入也是写到内核中,然后内核再将数据刷到磁盘上的. 就拿一个socket来的文件流来举例: 第一步: 网卡有文件流来的时候, 可以通过事件监听,去网卡上读取这些流到内核中, 也可以是内核定时去网卡中取数据到内核中来; 第二步: 用户将这些流从内核态读到用户态. 这就是为什么要定义 new...原创 2020-05-13 21:26:00 · 180 阅读 · 0 评论 -
各大厂经典算法
头条两道算法题:https://blog.csdn.net/wantflydacheng/article/details/100078735#comments原创 2020-03-28 19:30:41 · 534 阅读 · 0 评论 -
算法: 判断字符串输入是否正确
AABB ---AABAAA---AAAABBCC---AABCCpackage leetcode.easy.niuke;/** * @author sunfch * @version V1.0 * @Description: 检查字符串输入的是否正确 * @date 2020/3/22 09:12 */public class CheckWord { ...原创 2020-03-22 10:13:45 · 1170 阅读 · 0 评论 -
threadLocal的数据模型
之前一直对threadLocal一知半解;1.通过thread 就能找到自己存储对value;2.看源码分析,他存放对是 this , 也就是当前对对象的地址hashcode啊,这个又是怎么回事?自己看源码理解到的threadLocal的数据模型;这个你细细品:<Thread thread < ThreadLocal localObjct,T value>...原创 2020-03-10 09:22:10 · 174 阅读 · 0 评论 -
JavaEE JavaSE Javaweb 之间的区别
JavaSE: java SE 是基础Java SE 以前称为 J2SE。它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的 Java 应用程序。Java SE 包含了支持 Java Web 服务开发的类,并为 Java Platform,Enterprise Edition(Java EE)提供基础。 Java EE: 企业版java :是企业开发体系Java EE...原创 2018-12-18 23:22:56 · 1600 阅读 · 0 评论 -
Java 简单实现HTTP服务器
HTTP服务器 解释: 个人理解,http服务器就是解析http请求信息,并解析信息;然后根据信息做后续事情。 Http请求格式与响应格式 核心代码 package com_2.Httpserver;import java.io.BufferedReader;import java.io.IOException;import java.i...原创 2019-01-03 16:56:34 · 17819 阅读 · 3 评论 -
enum 枚举的作用
首先要知道枚举是干什么的,能起什么作用我的理解:枚举就和select 的作用是一样一样的,根据选择获得枚举对象的值或者对象的元素内容, 1. 固定字段,比如说系统需要设置有些固定字段:read ,unread,email,address等字段,可以用枚举; 2. 固定字段里面可以添加属性,获得固定字段的属性,这样就和select 中的option 非常相似了;直接上代码...原创 2019-03-29 15:48:10 · 1060 阅读 · 0 评论 -
springMVC 集成quartz注解版
spring集成注解版的定时任务框架,其实就两步走第一步:添加注解相关的信息这个要加在spring-contex.xml 文件中,启动的时候就能启动注解<task:annotation-driven/><context:component-scan base-package="com.inspur.tax.task"/> 第二步:将注解加...原创 2018-12-28 11:09:02 · 1038 阅读 · 0 评论 -
JsonArray和JsonObject遍历方法
大概念:JsonObject 其实就是个Map:JsonArry: 就是一个数组 Aarry; 测试代码粘贴就能测试使用;public class Testmain { public static void main(String[] args) { String str = "{\"name\":\"gu\",\"num\"...原创 2018-12-28 00:17:14 · 19080 阅读 · 2 评论 -
手写简易版连接池
手写简易版连接池: package cn.itcats.thread.datasoursepool;/** * 自定义数据库连接池 * @author fatah */ import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.util....原创 2019-02-16 22:47:17 · 265 阅读 · 0 评论 -
静态内部类加载顺序
静态内部类加载顺序我们先来区分一下两个概念:类加载、加载。类加载的过程包括加载,初始化,验证,解析,准备,初始化等五个过程。加载是类加载的一部分。区分完这两个概念之后我们再来看下面的问题。我们声明一个类,这个类有个内部静态类。还有主函数,当我们启动程序之后,运行java application程...原创 2019-02-19 15:32:05 · 371 阅读 · 0 评论 -
深入分析synchronized的实现原理
非常吊的一篇文章,让你瞬间理解锁的定义:https://blog.csdn.net/chenssy/article/details/54883355synchronize锁:锁有两个中重要东西:Monitor 对象头【或者叫Markword +class pointer】Monitor: 其实就是一个对象,可以说当遇到synchronize的就能自动生成这样一个对象,与需...转载 2019-03-08 23:26:40 · 124 阅读 · 0 评论 -
重新看待Jar包冲突问题及解决方案
参考地址:http://www.yangbing.club/2017/07/15/solution-for-jar-conflicts/首先jar冲突的本质:加载到不正确的类,导致的结果与预期不一致本质是:1.同一个jar包,出现了不同的版本; jar包版本较多,不知道加载哪个合适,导致加载到不正确的类2 同一个类,出现在不同的jar包中;由于种种原因(方法签名不一致),导致...转载 2019-05-28 22:28:28 · 368 阅读 · 0 评论 -
StringUtils中isNotEmpty与isNotBlank之间的区别
stringutils中的这两个用的比较多,其中的区别是:isNotEmpty(str)等价于 str != null && str.length > 0isNotBlank(str) 等价于 str != null && str.length > 0 && str.trim().length > 0同理isEmpty...原创 2019-09-04 16:18:23 · 469 阅读 · 0 评论 -
spring注解方式实现简单的定时任务
定时任务链接:https://blog.csdn.net/qq_33556185/article/details/51852537亲测可用。转载 2018-04-25 17:42:51 · 118 阅读 · 0 评论 -
spring 事务的4中隔离级别,7种传播属性
事务的5种隔离级别 隔离级别:default 是数据库默认的隔离级别 |--read uncommitted 级别最低,没有什么作用 |--read committed 解决脏读的问题 |--reaptable read 解决重复读的问题, |--serial 系列化 ,解决幻读的问...原创 2018-12-06 23:50:14 · 285 阅读 · 0 评论 -
Intelli IDEA 中tomcat 启动慢,每次修改后台都要重启问题解决
问题描述: 在IDEA 使用tomcat 的过程中,启动集成的tomcat 本身就很慢,然后每次修改后台都要启动,这样造成了时间的浪费,而且非常麻烦,有没有热启动或者修改后台就不用重新启动呢? 答案是:有。 解决思路: 第二步:选择update classes and resource ,这样就不用重启项目,就能使用了,但是有一点:修改.xml .properties ...原创 2018-10-31 10:15:31 · 8853 阅读 · 7 评论 -
二分法查找, 粘贴就能用,好使
二分法查找到条件是: 必须是有序数组;时间复杂度(log n);package com.Bianli_learning;/** * @author sunfch * @create 2018-10-07 14:48 * @desc 二分法查找实现 **/public class Binary_search { // 这个是while循环查找; public...原创 2018-10-07 15:51:28 · 133 阅读 · 0 评论 -
Maven 编译打包的时候,报错:程序包org.junit不存在
问题定位: 问题出在java test 文件中 出现的问题: java.junit.的版本问题, 默认的版本为3.8.1,修改为4.x,因为3.x使用的为编程的方式,4.x为注解的形式 解决方案:将java.junit 版本更换一下,更改为: <dependency> <groupId>junit</groupId> ...原创 2018-09-28 14:41:47 · 1591 阅读 · 0 评论 -
在eclipse中修改项目名称【亲测好用】
在开发过程中经常是用现有的项目中进行开发,最后修改项目名称, 在修改项目过程中遇到过问题,特此记录一下;第一步: 选中项目,点击F2, 修改项目名称; 第二步: .project 中修改: 第三步: .setting/org.eclipse.wst.commom.compnent 修改,默认情况下,修改完项目之后,这个地方已经自动修改了 第四步: web.xml 修...原创 2018-09-03 14:51:12 · 21094 阅读 · 0 评论 -
JVM 系统调优【非常好的一篇文章】
Tomcat本身不能直接在计算机上运行,需要依赖于硬件基础之上的操作系统和一个Java虚拟机。Tomcat的内存溢出本质就是JVM内存溢出,所以在本文开始时,应该先对Java JVM有关内存方面的知识进行详细介绍。一、Java JVM内存介绍JVM管理两种类型的内存,堆和非堆。按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java 虚...转载 2018-03-27 13:53:40 · 228 阅读 · 0 评论 -
《深入理解JAVA虚拟机》——学习笔记
《深入理解JAVA虚拟机》——学习笔记JVM内存模型以及分区JVM内存分为:1.方法区:线程共享的区域,存储已经被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据2.堆:线程共享的区域,存储对象实例,以及给数组分配的内存区域也在这里。3.虚拟机栈:线程隔离的区域,每个线程都有自己的虚拟机栈,生命周期和线程相同。虚拟机栈描述方法执行的内存模型,以站栈帧为单位,每个栈帧存储和方法运行有...转载 2018-03-12 23:14:09 · 134 阅读 · 0 评论 -
HTTPPOST 与HTTPGET
目前大大小小的项目中,都不可避免两个系统之间的通讯交互,此处简单整理一下关于HttpClient常用的HttpGet和HttpPost这两个类的编码方式。HttpClient常用的HttpGet和HttpPost这两个类分别对应Get方式和Post方式。无论是使用HttpGet,还是使用HttpPost,都必须通过如下3步来访问HTTP资源。1.创建HttpGet或HttpPost对象,将要请求的...转载 2018-03-12 15:57:08 · 442 阅读 · 0 评论 -
泛型-深入理解
泛型之前在面向对象编程语言中,多态算是一种泛化机制。例如,你可以将方法的参数类型设置为基类,那么该方法就可以接受从这个基类中导出的任何类作为参数,这样的方法将会更具有通用性。此外,如果将方法参数声明为接口,将会更加灵活。在Java增加泛型类型之前,通用程序的设计就是利用继承实现的,例如,ArrayList类只维护一个Object引用的数组,Object为所有类基类。转载 2018-01-10 09:19:06 · 175 阅读 · 0 评论 -
quartz cron 表达式
CronTriggerCronTriggers往往比SimpleTrigger更有用,如果您需要基于日历的概念,而非SimpleTrigger完全指定的时间间隔,复发的发射工作的时间表。CronTrigger,你可以指定触发的时间表如“每星期五中午”,或“每个工作日9:30时”,甚至“每5分钟一班9:00和10:00逢星期一上午,星期三星期五“。即便如此,SimpleTrigger原创 2018-01-26 10:30:33 · 159 阅读 · 0 评论 -
Mybatis 是如何防止SQL注入的?
面试中经常会问到: Mybatis 是如何防止注入的? 首先:SQL是怎样的注入攻击的?String sql = String.Format( "SELECT * FROM tablename WHERE username='{0}'", username); 当用户和密码验证的时候,会写 user="2222" &pass="123456" 然后后台将参数...原创 2018-10-31 15:23:27 · 1429 阅读 · 4 评论 -
设计模式六大原则解析,屌炸天
设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的;设计模式使代码编制真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。 1.单一原则---> 目的是为了高内聚,低耦合...原创 2018-11-03 10:12:03 · 213 阅读 · 0 评论 -
Java栈(基于链表与基于数组实现)
基于数组实现package com.ma.stack; /** * @author sunfch *此栈实现基于数组,初始栈时已经设置栈大小 */public class MyArrayStack { private int size; private int top = -1; private int[] arr; MyArrayStack(){ arr =ne...原创 2018-11-08 19:41:57 · 199 阅读 · 0 评论 -
常用设计模式总结
Singleton(单例模式)一句话总结:一个类在Java虚拟机中只有一个对象,并提供一个全局访问点。生活中例子:太阳、月亮、国家主席等。解决什么问题:对象的唯一性,性能浪费太多。项目里面怎么用:数据库连接对象,属性配置文件的读取对象。模式结构:分为饿汉式和懒汉式(如果考虑性能问题的话,就使用懒汉式,因为懒汉式是在方法里面进行初始化的),构造器私 有化,对外提供方法加同步关键...原创 2018-11-05 10:53:02 · 232 阅读 · 0 评论 -
Java注解使用,超经典文章
java 注解,从名字上看是注释,解释。但功能却不仅仅是注释那么简单。注解(Annotation) 为我们在代码中添加信息提供了一种形式化的方法,是我们可以在稍后 某个时刻方便地使用这些数据(通过 解析注解 来使用这些数据),常见的作用有以下几种:生成文档。这是最常见的,也是java 最早提供的注解。常用的有@see @param @return 等; 跟踪代码依赖性,实现替代配...转载 2018-11-07 16:43:15 · 173 阅读 · 0 评论 -
设计模式:适配器模式
举例: 在国外买了一个笔记本mac pro 但是充电器是110V的,在国内都是220V的,如何解决? 此时就想买个适配器将220V转110V, 但是不需要写里面的怎么将220 转110的,这都有现成的方法 接下来是见证奇迹的时刻。。。。适配器模式: 分为类的适配器 与方法的适配器;...原创 2018-11-04 12:44:52 · 103 阅读 · 0 评论 -
Java后台解析Json数据的两种方式
JSON数据解析的有点在于他的体积小,在网络上传输的时候可以更省流量,所以使用越来越广泛,下面介绍使用JsonObject和JsonArray的两种方式解析Json数据。使用以上两种方式解析json均需要依赖json-lib.jar开发包使用依赖包1、JsonObject使用JsonObject解析只有一条数据的json是非常方便的例如:"{\"name\":\"zhang转载 2018-01-15 16:31:52 · 17562 阅读 · 0 评论