找工作准备知识JAVA开发
文章平均质量分 58
记录了我找工作时学习内容以及自己的总结
小布米
在校学生
展开
-
ubuntu18.04如何安装mysql
1.2.安装完成之后可以使用如下命令来检查是否安装成功:netstat -tap | grep mysql通过上述命令检查之后,如果看到有 mysql 的socket处于 LISTEN 状态则表示安装成功。3.登录mysql数据库可以通过如下命令:mysql -u root -p4.接下来,为了确保数据库的安全性和正常运转,对数据库进行初始化操作。这个初始化操作涉及下面5个步骤。(1)安装验证密码插件。(2)设置root管理员在数据库中的专有密码。(3)转载 2021-01-19 22:14:14 · 118 阅读 · 0 评论 -
Mybatis(20)注解实现二级缓存
以查询User信息为例在IUserDao接口种加入注释@CacheNamespace(blocking = true)//开启二级缓存public interface IUserDao { ......}验证:public class SecondLevelCatchTest { private InputStream in; private SqlSessionFactory factory; private IAccountDao accountD原创 2021-01-08 12:33:56 · 174 阅读 · 0 评论 -
Mybatis(19)注解实现多表查询
两个类,User,Account查询每个账户以及其对应的用户信息,一对一查询,采用及时加载Account类package com.itheima.domain;import java.io.Serializable;public class Account implements Serializable { private Integer id; private Integer uid; private Double money; //多对一(mybat原创 2021-01-08 12:26:24 · 349 阅读 · 1 评论 -
Mybatis(18)注解实现表名和类属性名不匹配问题
解决方法,是通过Results注解IUserDao.java/*查询所有用户*/ @Select("select * from user") @Results(id = "userMap",value = { @Result(id=true,column = "id",property = "userId"), @Result(column = "username",property = "userName"),原创 2021-01-05 12:43:26 · 309 阅读 · 0 评论 -
Mybatis(17)注解方式增删改查单表
IUserDao.java/*在mybatis中,CRUD一共有四个注解* @Select @Insert @Update @Delete*/public interface IUserDao { /*查询所有用户*/ @Select("select * from user") List<User> findAll(); /*保存用户*/ @Insert("insert into user(username,address,sex,birthda原创 2021-01-05 10:21:43 · 113 阅读 · 0 评论 -
java中HashSet
HashMap还没讲完,还有几篇文章,目前在构思中,HashMap是集合类的精华,底层实现也比较复杂,真正理解了HashMap,也算是上了小小的一层台阶。这篇文章我们先轻松一下,不讲HashMap,来说说HashSet。如果有点Java基础的童鞋,应该都知道List和Set都实现自Collection,List保证元素的添加顺序,元素可重复。而Set不保证元素的添加顺序,元素不可重复先来看看Set家族在Collection中的位置,红框里的内容就是Set的大家族了,Set接口继承自Collect转载 2020-12-22 13:21:28 · 517 阅读 · 0 评论 -
java中字符串(2)String
上一篇我们讲了Java中的数组,其实是为本章的内容做准备的,String这个类是我们在写Java代码中用得最多的一个类,没有之一,今天我们就讲讲它,我们打开String这个类的源码:声明了一个char[]数组,变量名value,声明了一个int类型的变量hash(hash的作用我们后续会讲),话不多说,上代码:我们点开构造函数看一下:多年以前,我看到这段代码时我是懵逼的,没错,我现正在准备构造一个String的对象,那original这个对象又是从何而来?是什么时候构造的呢?在J转载 2020-12-22 13:05:18 · 106 阅读 · 0 评论 -
java中字符串(1)
我们再来看一段代码:运行一下:没错,一个true,一个是false,(答错的小朋友去面壁去),大家可能在想编译器肯定又调皮了,编译的时候是不是又偷偷加了些什么,迫不及待的打开class文件看一下:除了删掉了空行以外和我的java源文件一致呀,这回可冤枉编译器了,那为什么会导致不同的结果呢?我们都知道,Java代码是运行在JVM里的,那是不是JVM在执行这段代码时给我们做了什么?在JVM中,当代码执行到String s1 = "100" 时,会先看常量池里有没有字符串刚好是“100”转载 2020-12-22 13:03:48 · 149 阅读 · 0 评论 -
java中equals理解(2)
在面向对象 - 知乎专栏一文中,我们后续留了一个话题,引入了Set,我们知道Set里面的元素是不可以重复的,话不多说,上代码:精简了上一章中的Person类,保留了isSame()方法;想必大家看到类似的代码开始怀疑笔者是不是又挖坑让大伙跳了吧,来看一下结果。没错,有坑,同样是对象,都是放到了set中,一个打印size()是1,另一个打印size()是2。在面向对象 - 知乎专栏一文中,我们在Person这个类,虽然写了一个isSame()方法来判断业务上是否相等,看上去是解决了..转载 2020-12-22 13:01:00 · 126 阅读 · 0 评论 -
java中equals的理解(1)
在Java字符串那些事儿一文发表后,朋友给我留言说:比较字符串用equals不就完了呗,干嘛要用"==",吃饱了撑的,能不能来点实际的。其实在文章里我是想表明,Java字符串两种声明方式在堆内存中不同的体现,我们在写代码过程中,为了避免重复的创建对象,尽量使用String s1 ="123" 而不是String s1 = new String("123"),因为JVM对前者给做了优化。那么,我们今天来说说equels,话不多说,上代码:执行一下,结果如下:面试题中老问"=="与和eq转载 2020-12-22 12:34:31 · 542 阅读 · 0 评论 -
LinkedList理解(2)元素删除
上一篇文章我们说了LinkedList,并说了往里添加了元素。这篇文章我们来说说LinkedList元素的删除,话不多说,上代码,还是那个Person类还是那两个属性,name,age,提供了一些简单的get与set方法。写我们的main方法和前文一样,new了一个LinkedList,并往里添加了四个元素,看过前文的朋友都知道现在LinkedList目前在堆内存中的样子如下图:现在我们来删除王五这个用户,运行一下看一下结果好奇怪,打印返回的删除状态居然是false,转载 2020-12-18 15:17:13 · 969 阅读 · 1 评论 -
LinkedList理解(1)结构
在前面的文章里,我们讲了数组和ArrayList,在现实中,不管什么系统,如果不考虑性能的话,用其中的一个就可以完成所有工作,那为什么不用它们来进行所有的数据存储呢?在数组/ArrayList中读取和存储(get/set)的性能非常高,为O(1),但插入(add(int index, E element))和删除(remove(int index))却花费了O(N)时间,效率并不高。今天我们来看Java中的另一种List即LinkedList,LinkedList是基于双向链表来实现的,关于链表的知转载 2020-12-18 14:58:36 · 136 阅读 · 0 评论 -
ArrayList理解(5)与vector区别
前几篇文章我们重点说了ArrayLIst,是时候放出这张图了。这张图里的内容对我们学习Java来说,非常的重要,白色的部分是需要去了解的,黄色部分是我们要去重点了解的,不但要知道怎么去用,至少还需要读一次源码。绿色部分内容已经很少用了,但在面试题中有可能会问到,我们来看一个经常出现的面试题:Arraylist与Vector的区别是什么?首先我们给出标准答案:1、Vector是线程安全的,ArrayList不是线程安全的。2、ArrayList在底层数组不够用时在原来的基础上扩展0.5倍,Ve转载 2020-12-17 15:14:46 · 79 阅读 · 0 评论 -
ArrayList(4)时间复杂度
在以前的文章里,我们已经看过了add方法的源码,还有一个add方法,我们看一下, public void add(int index, E element) ,从指定位置添加元素按照下标把元素添加到指定位置,想必大家都知道,我们直接上源码。老规矩,我们还是画一画,当执行到System.arraycopy()这个方法时我看到有些书上写的是依次移动元素到下一格,这种说法不够严谨,所以我再强调一遍,是依次复制插入位置及后面的数组元素,到后面一格,不是移动,因此,复制完后,arr[2],ar转载 2020-12-17 14:59:14 · 2399 阅读 · 0 评论 -
Arraylist理解(3)删除元素
第三次强调,ArrayLIst是一个普通的类。好,现在我们来讨论一下数组的删除,我们知道数组一但在堆内存中创建出来,数组长度是不可变的,看以下源码:添加10个用户比如我们要把“周八”这个人从数组中删除,如图:我们只能循环数组,找到“周八“的下标5,由于数组没有提供删除方法,我们只能把下标为5的位置赋值为null(造成了数组空洞),“周八”这个Person对象已经没有引用指向它了,JVM的垃圾回收机制会在适当的时候回收它。但数组的长度还是10。下次当我们再循环查找某人时,稍不注意就转载 2020-12-17 14:51:33 · 800 阅读 · 1 评论 -
Arraylist理解(2)扩容
我们先回顾一下之前的所说过的数组,话不多说,上代码:老规则,我们继续画一画,加深一下印象,上图:这个图我们去掉了ArrayList初探 - 知乎专栏一文图里那些无用的细节(方法区,常量池等),方便大家看起来清晰,我们用eclipse的debug功能看一下,看是否与我们图上画的一致再看一下执行结果,也在我们期望中。好,我们改一下代码,再往数组里加添加一个叫“周八”的person对象执行一下看到了传说的中数组下标越界异常。在Java中,数组一但在堆内存中创建,长.转载 2020-12-17 14:31:41 · 96 阅读 · 0 评论 -
ArrayList理解(1)初始化
ArrayList初始化首先ArrayList是一个普通的类,我们来看一段代码:首先:执行List<Person> list1 = new ArrayList<>();当看到new这个关键字的时候,我们脑袋里应该第一印象就是这货在堆内存开辟了一块空间,好我们再来画一画。注:常量池位于方法区,方法区位于堆内存,前面没涉及到,所以没画方法区,现在补上好,既然是new出来的,那我们直接从构造函数入手,看一下构造函数做了什么。很简单,就一行代码,继续看一下,t转载 2020-12-17 14:23:06 · 334 阅读 · 0 评论 -
HashMap底层理解(下)
上一篇文章我们介绍了HashMap的底层实现,但还遗留了一点内容,我们再回顾一下上一篇文章里说的内执行完红框里的代码,personMap里放入了8个元素,放置完成后在堆内存表现如下图如果忽略底层实现细节,是这样的在Map中,一个key,对应了一个value,如果key的值已经存在,Map会直接替换value的内容,来看一下源码中是怎么实现的,来看以下代码Person oldPerson1 = personMap.put("张三", new Person("新张三", 21)).转载 2020-12-16 15:03:42 · 84 阅读 · 0 评论 -
HashMap底层理解(上)
本来想先在专栏里简单的说一下二叉树,红黑树的内容后再说HashMap的,但看到评论区里不断的出现HashMap这个词,怕大家等得着急,本篇文章就先说说HashMap吧,前面讲ArrayList和LinkedList时把源码说得很细,只要理解了这两块内容,本篇内容也很好理解,先来看看HashMap在Map这个大家族中的位置。上图中,白色部分是接口,黄色部分是要重点了解的,最好是看一遍源码,绿色部分已经过时,不常用了,但是面试中可能会问到。这里先简单的说一下这几个Map,TreeMap是基于树的实现,H转载 2020-12-16 14:48:20 · 292 阅读 · 0 评论 -
java中equals和==的区别
转载文章,链接:https://blog.csdn.net/lcsy000/article/details/82782864在Java学习和面试中经常遇到这个问题,虽然想着简单,但还是决定记录下来,毕竟菜嘛......==:==是直接比较的两个对象的堆内存地址,如果相等,则说明这两个引用实际是指向同一个对象地址的。但是我们又常常碰到这样一个问题最终结果是 true,true,false,那既然==是比较的地址,那么int数据的地址是怎样的呢,String又是怎样的呢?对于基本数据类型转载 2020-12-04 16:21:07 · 86 阅读 · 0 评论 -
Mybatis(16)注解开发环境搭建
创建项目:day04_eesy_03annotation_mybatis工程目录如下:创建实体类User:public class User implements Serializable { private Integer id; private String username; private String address; private String sex; private Date birthday; //get和set省略原创 2020-12-03 14:29:30 · 100 阅读 · 0 评论 -
Mybatis(15)Mybatis延迟加载/缓存
复制项目day03_eesy_03one2many到新建的项目day04_eesy_01lazy1.删除项目中AccountUser类2.IAccountDao接口中只保留findAll()3.AccountTest类只保留testFindAll()实现延迟加载4.更改IAccountDao.xml文件<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//m...原创 2020-12-03 10:38:45 · 85 阅读 · 0 评论 -
Mybatis(14)多表查询
准备工作新建项目day03_eesy_03one2many复制day03_eesy_02dynamicSQL项目1.账户表创建CREATE TABLE `account` ( `ID` INT(11) NOT NULL COMMENT '编号', `UID` INT(11) DEFAULT NULL COMMENT '用户编号', `MONEY` DOUBLE DEFAULT NULL COMMENT '金额', PRIMARY KEY (`ID`), KEY...原创 2020-11-04 21:37:12 · 198 阅读 · 0 评论 -
Mybatis(13)动态sql语句if/where/foreach
创建项目day03_eesy_02dynamicSQL,复制Mybatis(12)中项目day03_eesy_01datasourceAndTxif标签的使用,针对查询1.更改IUseDao接口package com.itheima.dao;import com.itheima.domain.QueryVo;import com.itheima.domain.User;import java.util.List;public interface IUserDao { //原创 2020-11-04 11:24:05 · 192 阅读 · 0 评论 -
Mybatis(12)事务原理和自动提交设置
Mybatis中实现事务和回滚追踪代码,发现sqlSession调用的方法实际是掉用的JdbcTransaction类中的方法可以设置自动提交,通过openSession(参数)方法如:更改1:public void init() throws IOException { sqlSession=factory.openSession(true);//此处更改,其他忽略 }更改2:public void des...原创 2020-11-03 22:22:54 · 384 阅读 · 0 评论 -
Mybatis(11)连接池基本介绍
连接池的基本介绍type属性取值:POOLEDUNPOOLEDJNDI使用复制项目day02_eesy_01mybatisCRUD,到新项目day03_eesy_01datasourceAndTx项目连接池类型采用POOLED和UNPOOLED查询结果对比以上, 每次从池中创建/获取连接,线程使用之后再放回连接池以上,每次都会创建一个连接,线程使用完连接后就关闭连接对应类的方法操作UnpooledDataSource类...原创 2020-11-03 21:54:38 · 176 阅读 · 0 评论 -
Mybatis(10)properties标签的使用及细节,typeAliases和package标签
在day02_eesy_01mybatisCRUD项目基础上进行更改不采用外部配置文件1,更改SqlMapConfig.xml文件,两处特别第一处,增加properties配置<!--配置properties--> <properties> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jd原创 2020-11-02 21:32:59 · 171 阅读 · 0 评论 -
Mybatis(9)Dao实现类和无实现类的执行过程
findAll方法执行为例1.执行findAll方法,DefaultSqlSession类2. CachingExecutor类3.BaseExecutor类4.SimpleExecutor类5.RoutingStatementHandle类6.PreparedStatementHandle类7.关于PreparedStatement对象方法的介绍使用execute方法的好处?通过判断结果集是否为true后,再通过preparedStatem.原创 2020-11-02 19:40:19 · 167 阅读 · 0 评论 -
Mybatis(8)DAO实现类的使用方式
新建项目,复制Mybatis的day02_eesy_01mybatisCRUD1.更改一,删掉QueryVo类,domain(包)下2.IUserDao接口,删掉findUserByVo方法3.IUserDao.xml映射文件更改和User实体类属性更改删掉resultMap相关,并复原实体类和数据表列对应名称<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//myba原创 2020-11-02 14:29:34 · 321 阅读 · 0 评论 -
Mybatis(7)参数传递和结果封装
参数传递OGNL表达式使用实例一般查询条件是复合的,会将多种查询条件包装为一个类,在是现实就会用到OGNL表达式方法1.IUserDao接口//根据queryVo中的条件查询用户,QueryVo是查询条件复合对象 List<User> findUserByVo(QueryVo vo);2.新建QueryVo类,domain(包)->QueryVo类package com.itheima.domain;public class QueryVo原创 2020-11-02 09:36:22 · 487 阅读 · 0 评论 -
Mybatis(6)CURD增删改查操作
流程回顾:增加操作创建项目环境,同Mybatis(1)1.添加保存方法,IUserDao接口package com.itheima.dao;import com.itheima.domain.User;import java.util.List;public interface IUserDao { //查询所有 List<User> findAll(); //保存用户 void saveUser(User user...原创 2020-11-01 20:48:19 · 181 阅读 · 0 评论 -
Mybatis(5)自定义Mybatis分析以及自定义实现
执行查询所有和创建代理对象的分析执行查询所有分析,是对selectList()方法的执行,执行步骤如下提供:连接信息和映射信息1.读取配置文件,SqlMapConfig.xml->IUserDao.xml2.对执行SQL查询3.对查询结果进行封装在封装时,Element是利用反射技术来获得对象在封装时,使用反射技术为Element的属性赋值创建代理对象的分析主要是getMapper()方法的实现自定义实现同Myatis(1)创建项目更改1,删除po.原创 2020-11-01 11:17:54 · 340 阅读 · 1 评论 -
Mybatis(4)入门案例中设计模式分析
1.读配置文件//1.读取配置文件,连接数据库的信息InputStream in= Resources.getResourceAsStream("SqlMapConfig.xml"); 采用绝对路径和相对路径均不可以,有两种方式可以采用2.构建者模式,创建工厂把对象的创建细节隐藏,使用者直接掉用方法可拿到对象 //2.创建SqlSessionFactory工厂,有了工厂可以生产和操作对象 SqlSessionFactoryBuilde.原创 2020-10-31 21:35:13 · 91 阅读 · 0 评论 -
Mybatis(3)-编写dao实现类的方式
创建项目,同Mybatis(1)环境搭建,并做出更改1.更改MybatisTest类因为有了IUserDao的实现类故不需要代理对象了,更改后为package com.itheima.test;import com.itheima.dao.IUserDao;import com.itheima.dao.impl.UserDaoImpl;import com.itheima.domain.User;import org.apache.ibatis.io.Resources;impor原创 2020-10-31 21:19:17 · 293 阅读 · 0 评论 -
Mybatis(2)-注解使用-IDEA
环境搭建同(1)即上一篇博客变化为以下:1.因为使用注解方式,则IUserDao.xml配置文件没有意义,删掉当下项目目录为:2.改变IUserDao.javapackage com.itheima.dao;import com.itheima.domain.User;import org.apache.ibatis.annotations.Select;import java.util.List;public interface IUserDao { //查原创 2020-10-31 20:23:26 · 90 阅读 · 0 评论 -
IDEA和mysql的连接
首先找到工具栏中View 然后找到Tool Windows下的Database 然后点击有上角处的那个绿色的“+”,选择Data Source 下的MySQL 如果你是初次连接数据库的话,你得下载连接MySQL对应的文件 修改URL为URL only,然后给连接名@localhost 前添加个自定义名字,改好后点击Test Connection 如果连接能成功的话就会出现一个原谅色的successful 最后..转载 2020-10-31 20:22:24 · 689 阅读 · 0 评论 -
Mybatis学习IDEA(1)-环境搭建以及入门案例
Mybatis的环境搭建:第一步:创建Maven项目new Project->Maven->next->GroupId(反写域名如:com.itheima)ArtifactID(如:day01_eesy_01mybatis)->next->finish第二步:创建eesy_mybatis数据库(创建user表)第三步:在pom.xml文件中加入内容打包方式、导入mybatis坐标(dependency依赖,去mybatis的官网,要更...原创 2020-10-31 18:53:40 · 338 阅读 · 0 评论 -
计算机网络4-万维网和HTTP
1.www万维网(1)什么是万维网?万维网(World Wide Web, WWW)是一个资料空间,在这个空间中:一样有用的事物称为一样“资源”,并由一个全域“统一资源定位符”(URL)标识。这些资源通过超文本传输协议(HTTP)传送给使用者,通过单击链接来获取资源。 万维网使用链接的方法能让用户非常方便地从因特网上的一个站点访问另一个站点,从而主动地按需获取丰富的信息。 超文本标记语言(HyperText Markup Language,HTML)使得万维网页面的设计者可以很方便地用一个超链接转载 2020-10-29 14:36:30 · 3127 阅读 · 0 评论 -
计算机网络3-DNS域名解析系统
1.DNS系统域名系统(Domain Name System, DNS)是因特网使用的命名系统,用来把便于人们记忆的具有特定含义的主机名(如www.BitHachi.com)转换为便于机器处理的IP地址。 相对于IP地址,人们更喜欢使用具有特定含义的字符串来标识因特网上的计算机。 DNS系统采用客户/服务器模型,其协议运行在UDP之上,使用53号端口。某台主机访问网站www.bithachi.cn网站为例,DNS的大致流程2.域名域名空间的树状结构:每个域名都由标号序列组.成,而各标号之间转载 2020-10-29 14:20:29 · 522 阅读 · 0 评论 -
计算机网络(2)-数据链路层流量控制
1.什么是流量控制?流量控制是数据链路层的一种功能,流量控制对数据链路上的帧的发送速率进行控制,以使接收方有足够的缓冲空间来接受每个帧 流量控制的基本方法是由接收方控制发送方发送数据的速率 常见的流量控制方式有两种:停止-等待协议、滑动窗口协议2.什么是可靠传输机制? 可靠传输机制是为了使数据可以正确稳定的传输和接收而制定的规则。 数据链路层的可靠传输通常使用确认和超时重传两种机制来完成。 确认是一种无数据的控制帧,这种控制帧使得接收方可以让发送方知道哪些内容被正确接收。转载 2020-10-28 20:54:01 · 5805 阅读 · 0 评论