首页
赞助
时间轴
追番
留言
友人帐
关于
个人导航
更多
学习笔记
壁纸
Search
1
【台式机】2020-06-07,上半年618推荐配置(都是AMD)
953 阅读
2
21年下半年笔记本挑选
918 阅读
3
域名备案成功
789 阅读
4
2020.10 手机号码正则表达式
730 阅读
5
Mybatis缓存
696 阅读
日常
代码
❤心情
博客插件
电脑推荐
KMS服务
登录
Search
标签搜索
电脑推荐
组装电脑
博客插件
跨域访问错误
Maven
Mybatis
node.js
WebSocket
SpringBoot
Linux
跨域
网页背景效果
音乐播放器
看板娘
Pio插件问题
气泡通知
轻薄本
全能本
笔记本推荐
伪静态
旧梦未眠
累计撰写
71
篇文章
累计收到
13
条评论
今日撰写
0
篇文章
首页
栏目
日常
代码
❤心情
博客插件
电脑推荐
KMS服务
页面
赞助
时间轴
追番
留言
友人帐
关于
个人导航
学习笔记
壁纸
用户登录
登录
搜索到
71
篇与
的结果
2020-05-21
【2020-5-20】联想小新系列15/Air14/Pro13
随着AMD,YES!的声音越来越多,在台式机领域R3 3300X/3100干i5 9400的AMD,在笔记本市场也打了一个翻身仗。前几天联想发布了新一代的小新15、Air14和Pro13。1、小新家族介绍当然对于联想小新家族的定义先介绍一下:数字系列<Air系列<Pro系列2、新一代锐龙低压U介绍CPU名称核心C/线程T基准/最高频率核显R7 4800U8C/16T1.8/4.2GHz8核心 R5 4600U6C/12T2.1/4.0GHz6核心 内存应该(注意:应该)都是DDR4 3200MHz固态:512GB PICe3.0*43、小新15首发价接口续航4、小新Air14首发价接口续航对比图由于现在还没发布Pro13,所以Pro13的介绍暂时空着,但是有13的配置了。谈一谈差别以下意见仅代表个人看法。材料小新15:只有A面是金属,其他都是塑料。Air14、pro13:全金属硬盘扩展位小新15、Pro13不支持,Air14支持M.2 2242(短硬盘)散热pro13:双热管双风扇小新15、Air14:都是双热管,单个大风扇个人意见对于小新15、Air14来说,屏幕参数都是一样的1080P,16:9,100%sRGB,镜面屏,300nit。300nit差了一点意思。小新15、Pro13性能释放都能达到35W,pro13可以到35W+,Air14只有26W。但小新15、Pro13没有硬盘扩展位。三款机子均为板载内存,不可扩展,推荐16G起步。Pro的做工、散热要好于前两者,屏幕也是2.5K,16:10。可以参考i版或者去年的pro13。但是对于Pro13的变相导热材料还不知道好不好,不过贴吧水友说老老实实上7868或者7921。三款机型都是WIFI5,好像都是螃蟹卡,推荐自己更换AX200。毕竟2020年的机器。推荐对于跑来跑去的用户,需要好看,轻:Pro13绝对是你菜。对于需要很大硬盘空间,可以选择Air14。你也可以选择买个大的更换。R7 R5选哪个?这个看自己了,R7 R5版本只相差了400,多了两个核心四个线程,在多任务下有优势。对于程序员朋友其实都可以,400差距也不是很大,而且跑程序也不可能会太大,大项目都扔服务器去测试吧。不过现在开卖的都是R5版本,R7版本估计要等一段时间。R7 R5具体性能附上大佬的测评:点击访问
2020年05月21日
660 阅读
0 评论
0 点赞
2020-05-17
Mybatis缓存
简介查询 → 连接数据库 消耗资源 一次查询结果,暂存在一个可以直接取到的地方 → 内存:缓存 再次查询相同数据的时候,不用连接数据库,而是从缓存中读取。什么是缓存[Cache]?存在在内存中的临时数据。将用户经常查询的数据放在缓存(内存)中,用户去查询数据就不用从磁盘上(关系型数据库数据文件)查询,从缓存中查询,从而提高查询效率,解决了高并发系统的问题。为什么使用缓存?减少和数据库的交互次数,减少系统开销,提高系统效率。什么样的数据能使用缓存?经常查询并且不经常改变的数据。【可以使用缓存】Mybatis缓存MyBatis包含一个非常强大的查询缓存特性,它可以非常方便地定制和配置缓存。缓存可以极大的提升查询效率。MyBatis系统中默认定义了两极缓存:一级缓存和二级缓存默认情况下,只有一级缓存开启。 (SqlSession级别的缓存, 也称为本地缓存)二级缓存需要手动开启和配置,他是基于namespace级别的缓存。为了提高扩展性,MyBatis定义了缓存接口Cache。我们可以通过实现Cache接口来自定义二级缓存。一级缓存一级缓存也叫本地缓存与数据库同一次会话期间查询到的数据会放在本地缓存中。以后如果需要获取相同的数据,直接从缓存中拿,没必要再去查询数据库。二级缓存二级缓存也叫全局缓存,一级缓存作用域太低了,所以诞生了二级缓存。基于namespace级别的缓存, 一个名称空间,对应一个二级缓存;工作机制:一个会话查询一条数据,这个数据就会被放在当前会话的一级缓存中;如果当前会话关闭了,这个会话对应的一级缓存就没了;但是我们想要的是,会话关闭了,一级缓存中的数据被保存到二级缓存中;新的会话查询信息,就可以从二级缓存中获取内容;不同的mapper查出的数据会放在自己对应的缓存(map)中。开启全局缓存步骤:开启全局缓存在mybatis-config.xml中添加<!--显示的开启全局缓存--> <setting name="cacheEnabled" value="true"/>在要使用二级缓存的Mapper.xml中开启<!--在当前Mapper.xml中使用二级缓存--> <cache/>也可以自定义参数<cache eviction="FIFO" flushInterval="60000" size="512" readOnly="true"/>这个更高级的配置创建了一个 FIFO 缓存,每隔 60 秒刷新,最多可以存储结果对象或列表的 512 个引用,而且返回的对象被认为是只读的,因此对它们进行修改可能会在不同线程中的调用者产生冲突。evication:LRU– 最近最少使用:移除最长时间不被使用的对象。【默认】FIFO – 先进先出:按对象进入缓存的顺序来移除它们。SOFT – 软引用:基于垃圾回收器状态和软引用规则移除对象。WEAK – 弱引用:更积极地基于垃圾收集器状态和弱引用规则移除对象。测试问题:在Mapper.xml中直接声明"<cache/>"报错,我们需要将实体类序列化。Caused by: java.io.NoSerializbleException:com.jam.pojo.User在POJO的类中 implements Serializable执行结果Opening JDBC Connection ==> Preparing: select * from mybatis.user where id = ? ==> Parameters: 1(Integer) <== Columns: id, name, pwd <== Row: 1, jam, 123 <== Total: 1 User(id=1, name=jam, pwd=123) Closing JDBC Connection [com.mysql.jdbc.JDBC4Connection@2f0a87b3] Returned connection 789219251 to pool. Cache Hit Ratio [com.jam.dao.UserMapper]: 0.5 User(id=1, name=jam, pwd=123) true Process finished with exit code 0小结:只要开启了二级缓存,在同一个Mapper下就有效所有的数据都会先放在一级缓存中只有当会话提交或者关闭的时候,才会提交到二级缓存中。缓存原理缓存顺序:先看二级缓存中有没有再看一级缓存中有没有查询数据库
2020年05月17日
696 阅读
0 评论
0 点赞
2020-05-01
Mybaits一对多处理。
一对多:比如:一个老师拥有多个学生!对于老师而言,就是一对多的关系!上一节,多对一地址:点击访问数据库(和上一篇Mybatis多对一的处理一样)CREATE TABLE `teacher` ( `id` INT(10) NOT NULL, `name` VARCHAR(30) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=INNODB DEFAULT CHARSET=utf8; INSERT INTO teacher(`id`, `name`) VALUES (1, '庞老师'); CREATE TABLE `student` ( `id` INT(10) NOT NULL, `name` VARCHAR(30) DEFAULT NULL, `tid` INT(10) DEFAULT NULL, PRIMARY KEY (`id`), KEY `fktid` (`tid`), CONSTRAINT `fktid` FOREIGN KEY (`tid`) REFERENCES `teacher` (`id`) ) ENGINE=INNODB DEFAULT CHARSET=utf8; INSERT INTO `student` (`id`, `name`, `tid`) VALUES ('1', '小明', '1'); INSERT INTO `student` (`id`, `name`, `tid`) VALUES ('2', '小红', '1'); INSERT INTO `student` (`id`, `name`, `tid`) VALUES ('3', '小张', '1'); INSERT INTO `student` (`id`, `name`, `tid`) VALUES ('4', '小李', '1'); INSERT INTO `student` (`id`, `name`, `tid`) VALUES ('5', '小王', '1'); 实体类(省略了构造函数、Setter/Getter)//Teacher类 public class Teacher { private int id; private String name; //一个老师拥有多个学生 private List<Student> students; } //Student类 public class Student { private int id; private String name; private int tid; } TeacherMapper接口(interface)//获取指定老师下的所有学生以及老师的信息 Teacher getTeacher(@Param("tid") int id); Teacher getTeacher2(@Param("tid") int id); 按照查询嵌套处理<select id="getTeacher2" resultMap="TeacherStudent2"> select * from mybatis.teacher where id = #{tid} </select> <resultMap id="TeacherStudent2" type="Teacher"> <collection property="students" javaType="ArrayList" ofType="Student" select="getStudentByTeacherId" column="id"/> </resultMap> <select id="getStudentByTeacherId" resultType="Student"> select * from mybatis.student where tid = #{tid} </select> 按照结果嵌套处理<!--按结果嵌套查询--> <select id="getTeacher" resultMap="TeacherStudent"> select s.id sid,s.name sname,t.name tname,t.id tid from student s,teacher t where s.tid = t.id and t.id = #{tid} </select> <resultMap id="TeacherStudent" type="Teacher"> <result property="id" column="tid"/> <result property="name" column="tname"/> <!--复杂的属性 对象:association 集合:collection 集合中的泛型信息,使用ofType获取 --> <collection property="students" ofType="Student"> <result property="id" column="sid"/> <result property="name" column="sname"/> <result property="tid" column="tid"/> </collection> </resultMap> 测试类@Test public void getTeacher(){ SqlSession sqlSession = MybatisUtils.getSqlSession(); TeacherMapper mapper = sqlSession.getMapper(TeacherMapper.class); Teacher teacher = mapper.getTeacher(1); System.out.println(teacher); sqlSession.close(); } @Test public void getTeacher2(){ SqlSession sqlSession = MybatisUtils.getSqlSession(); TeacherMapper mapper = sqlSession.getMapper(TeacherMapper.class); Teacher teacher = mapper.getTeacher2(1); System.out.println(teacher); sqlSession.close(); }
2020年05月01日
518 阅读
0 评论
0 点赞
2020-05-01
Mybatis多对一处理。
多对一:多个学生对应一个老师对于学生而言,关联 多个学生,关联一个老师【多对一】对于老师而言, 一个老师,有很多学生【一对多】数据库CREATE TABLE `teacher` ( `id` INT(10) NOT NULL, `name` VARCHAR(30) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=INNODB DEFAULT CHARSET=utf8; INSERT INTO teacher(`id`, `name`) VALUES (1, '庞老师'); CREATE TABLE `student` ( `id` INT(10) NOT NULL, `name` VARCHAR(30) DEFAULT NULL, `tid` INT(10) DEFAULT NULL, PRIMARY KEY (`id`), KEY `fktid` (`tid`), CONSTRAINT `fktid` FOREIGN KEY (`tid`) REFERENCES `teacher` (`id`) ) ENGINE=INNODB DEFAULT CHARSET=utf8; INSERT INTO `student` (`id`, `name`, `tid`) VALUES ('1', '小明', '1'); INSERT INTO `student` (`id`, `name`, `tid`) VALUES ('2', '小红', '1'); INSERT INTO `student` (`id`, `name`, `tid`) VALUES ('3', '小张', '1'); INSERT INTO `student` (`id`, `name`, `tid`) VALUES ('4', '小李', '1'); INSERT INTO `student` (`id`, `name`, `tid`) VALUES ('5', '小王', '1'); Student类 (省略了构造函数、Setter/Getter)public class Student { private int id; private String name; //学生需要关联一个老师 private Teacher teacher; } Teacher类 (省略了构造函数、Setter/Getter)public class Teacher { private int id; private String name; } 测试环境搭建新建实体类Teacher,Student建立Mapper接口建立Mapper.xml文件【在Resources目录下需要一级一级建立文件夹】在核心配置中绑定注册我们的Mapper接口或者文件测试查询是否能成功StudentMapper接口(interface)//查询所有学生信息,以及对于的老师的信息 public List<Student> getStudent(); // public List<Student> getStudent2(); 按照查询嵌套处理思路:1.查询所有的学生信息2.根据查询出来的学生的tid,寻找对应的老师 子查询<select id="getStudent" resultMap="StudentTeacher"> select * from student </select> <resultMap id="StudentTeacher" type="Student"> <result property="id" column="id"/> <result property="name" column="name"/> <!--复杂的属性 对象:association 集合:collection --> <association property="teacher" column="tid" javaType="Teacher" select="getTeacher"/> </resultMap> <select id="getTeacher" resultType="Teacher"> select * from teacher where id = #{id} </select> 按照结果嵌套处理<!--按照结果处理--> <select id="getStudent2" resultMap="StudentTeacher2"> select s.id sid,s.name sname,t.name tname from student s,teacher t where s.tid = t.id; </select> <resultMap id="StudentTeacher2" type="Student"> <result property="id" column="sid"/> <result property="name" column="sname"/> <association property="teacher" javaType="Teacher"> <result property="name" column="tname"/> </association> </resultMap> 测试代码@Test public void getStudent(){ SqlSession sqlSession = MybatisUtils.getSqlSession(); StudentMapper mapper = sqlSession.getMapper(StudentMapper.class); List<Student> studentList = mapper.getStudent(); for (Student student : studentList) { System.out.println(student); } sqlSession.close(); } @Test public void getStudent2(){ SqlSession sqlSession = MybatisUtils.getSqlSession(); StudentMapper mapper = sqlSession.getMapper(StudentMapper.class); List<Student> studentList = mapper.getStudent2(); for (Student student : studentList) { System.out.println(student); } sqlSession.close(); } 多对一掌握了?那么可以下一课了,来看看一对多吧!点击访问
2020年05月01日
440 阅读
0 评论
0 点赞
2020-04-23
Maven+Mybatis入门问题-无法编译java目录下的xml文件
初学maven+Mybatis的时候,把Mapper.xml放到了dao包下,编译的时候target目录下不会编译在java项目中的xml。解决方法在pom.xml中加入<!-- build中配置resources,来防止我们资源导出失败的问题 --> <build> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> <include>**/*.properties</include> </includes> </resource> </resources> </build> 最后clean一下,就行。Q&A我在自学的时候,加了这个也没用,试了很多方法。比如:xml删除中文注释,build中加入resources目录之类,都没用。最后关机睡觉,第二天打开就突然可以了。配置了buil的同学如果还没用,建议关闭idea重新打开试试。
2020年04月23日
422 阅读
0 评论
0 点赞
1
...
9
10
11
...
15