MyBatis

3年程序员不敌刚毕业大学生,Redis面试三连问瞬间破功……

懵懂的女人 提交于 2020-07-24 22:34:30
有个读者是小作坊走出来的小猿,项目经验并不出彩,没有高并发、分布式经验,公司的前端、后台、服务器和数据库都部署在同一台机器上。面试时为了不显得自己太low,不经意间提了提在GitHub上有自己的开源框架,但是面试官似乎并不care。 面试中被问到了著名的redis哲学三连,“是什么?为什么?怎么用?” 不得不把肚子里仅有的关于Redis的知识都搜刮了一遍,仍然没有给出面试官想要的答案。这还不够,被继续追问Redis的数据存储方式、操作方法、读写操作在底层都是如何实现的。 除了低头委屈说不会,此时已经意识到了自身能力的严重缺失。平常只要坦白一点,对方会给个台阶下。这次都快被搞哭了,也没见面试官手下留情…… 接着就是心理防线基本被攻破,追问索引的实现原理,创建一个索引怎么能加快查询效率。 结果也猜到了,只能再一次厚着脸皮主动承认答不出来,走回家已经是浑浑噩噩飘飘忽忽。 大家也知道平时只泛泛读一些技术书籍、技术文章,根本很难抓住技术的本质,干了三五年之后,感觉并没有积累到什么,跟刚毕业的大学生能力差不多。本质原因,是没有辨析清楚自己应该积累究竟是什么样的能力。 以Spring、Redis、Mysql、Redis为例,这些作为互联网面试必备的技术点,其底层原理及源码实现是必须要细过的知识点。 Mybatis相信很多人都会使用

ssm+PageHelper实现分页查询

梦想与她 提交于 2020-07-24 22:32:05
通过搭建ssm框架,然后通过mybatis的分页插件pagehelp进行分页查询。 源码:https://gitee.com/smfx1314/pagehelper 看一下项目结构: 首先创建一个maven工程,pom中引入相关jar包 < dependencies > < dependency > < groupId > org.springframework </ groupId > < artifactId > spring-core </ artifactId > < version > 4.3.2.RELEASE </ version > </ dependency > < dependency > < groupId > org.springframework </ groupId > < artifactId > spring-aop </ artifactId > < version > 4.3.2.RELEASE </ version > </ dependency > < dependency > < groupId > org.springframework </ groupId > < artifactId > spring-aspects </ artifactId > < version > 4.3.2.RELEASE </ version > </

springboot实现读写分离(基于Mybatis,mysql)

此生再无相见时 提交于 2020-07-24 22:20:03
近日工作任务较轻,有空学习学习技术,遂来研究如果实现读写分离。这里用博客记录下过程,一方面可备日后查看,同时也能分享给大家(网上的资料真的大都是抄来抄去,,还不带格式的,看的真心难受)。 完整代码: https://github.com/FleyX/demo-project/tree/master/dxfl 1、背景   一个项目中数据库最基础同时也是最主流的是单机数据库,读写都在一个库中。当用户逐渐增多,单机数据库无法满足性能要求时,就会进行读写分离改造(适用于读多写少),写操作一个库,读操作多个库,通常会做一个数据库集群,开启主从备份,一主多从,以提高读取性能。当用户更多读写分离也无法满足时,就需要分布式数据库了(可能以后会学习怎么弄)。   正常情况下读写分离的实现,首先要做一个一主多从的数据库集群,同时还需要进行数据同步。这一篇记录如何用 mysql 搭建一个一主多次的配置,下一篇记录代码层面如何实现读写分离。 2、搭建一主多从数据库集群   主从备份需要多台虚拟机,我是用 wmware 完整克隆多个实例,注意直接克隆的虚拟机会导致每个数据库的 uuid 相同,需要修改为不同的 uuid。修改方法参考这个: 点击跳转 。 主库配置 主数据库(master)中新建一个用户用于从数据库(slave)读取主数据库二进制日志,sql 语句如下: mysql> CREATE USER

@程序员,如何进入BAT这类一线公司?做到这几点的就有机会!

╄→гoц情女王★ 提交于 2020-07-24 17:08:27
跟大家聊一聊很多很多很多人问我的一个问题: 中小公司的Java工程师该如何规划准备,才能跳槽进入BAT这类一线互联网公司? 作者简介:中华石杉,十余年BAT架构经验,倾囊相授 我用了三个 “很多” 来形容这个问题,是因为这个问题太普遍了。国内Java工程师至少好几十万,但是在国内互联网大厂里干过的码农比例不高。 这个是符合28法则的,少部分人在大厂里干过,发展得很好。但是大部分人还是在中小型公司,或者外包类传统IT公司里工作。 这些同学可能对自己的技术成长,职业发展感到非常的迷茫,自己有点追求,也想去一下大厂,但是又不知道怎么规划。 我个人在国内几个最大的互联网公司先后有着十余年工作经历,面试和招聘过大量各种水平的开发人员。包括初、中、高级开发,技术专家,高级技术专家都面过。也指导过很多同学的职业发展规划,所以打算从我个人的角度来聊聊这个问题:中小公司的同学应该如何一步一步实现逆袭进入BAT。 我相信以下情形很多同学应该都有类似体会:一直徘徊在各种中小公司里开发一些没技术难度的Java系统,主要就是CRUD。 哪怕是用了用MQ、缓存、分库分表,但是也没什么并发量,数据量也不算特别大,自己的技术成长极为缓慢。 等过了三五年,甚至是十多年过去,职业发展和技术水平都停滞在这个状态,无法有更进一步的发展。 随着现在寒冬到来,到处裁员,中年码农的危机,加不动班、体力越来越差、孩子压力越来越大

SpringBoot学习(一)

痞子三分冷 提交于 2020-07-24 12:50:10
SpringBoot简单的实现增删改查服务 1、pom需要的架包 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!--mybatis--> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.0.0</version> </dependency> <!-- mysql --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> 2、配置TestController,interface

基于SpringBoot+MyBatis+Docker实现部署电商系统,分享项目源码

爷,独闯天下 提交于 2020-07-24 00:00:17
前言 mall项目致力于打造一个完整的电商系统,采用现阶段流行技术实现。 mall项目简介 mall项目是一套电商系统,包括前台商城系统及后台管理系统,基于SpringBoot+MyBatis实现,采用Docker容器化部署。 前台商城系统包含首页门户、商品推荐、商品搜索、商品展示、购物车、订单流程、会员中心、客户服务、帮助中心等模块。 后台管理系统包含商品管理、订单管理、会员管理、促销管理、运营管理、内容管理、统计报表、财务管理、权限管理、设置等模块。 需要这个mall项目地址以及源码的老铁,请转发+关注,然后加我VX:tkzl6666 即可获得免费领取方式! mall项目组织结构 mall ├── mall-common -- 工具类及通用代码 ├── mall-mbg -- MyBatisGenerator生成的数据库操作代码 ├── mall-security -- SpringSecurity封装公用模块 ├── mall-admin -- 后台商城管理系统接口 ├── mall-search -- 基于Elasticsearch的商品搜索系统 ├── mall-portal -- 前台商城系统接口 └── mall-demo -- 框架搭建时的测试代码 mall中使用的技术 mall采用现阶主流技术实现,涵盖了一般项目中几乎所有使用的技术。 mall实现的功能概览

MyBatis: Controlling Object Creation vs. Referencing Existing Objects

血红的双手。 提交于 2020-07-22 05:20:32
问题 This is my first question here, so please let me know if there's anything I can provide to make my question clearer. Thanks! Is there anyway to tweak MyBatis (3.0.4) so that when it's running through the nested result maps and creating objects based on the results, it doesn't create "duplicate" objects and instead references the object that has already been created? To clarify, let's say I've got an object that consists of the following (simplified) info: Public class PrimaryObject { Private

MyBatis Cursor with Spring Boot

二次信任 提交于 2020-06-29 06:55:25
问题 I'm trying to use a MyBatis Cursor with Spring Boot to iterate a large query: Mapper: @Mapper @Repository interface UserMapper { @Select("SELECT * FROM huge_user_table") Cursor<User> getUsers(); Consumer: @Component public class UserProcessor { @Autowired private UserMapper userMapper; public boolean process() throws IOException { Cursor<User> users = userMapper.getUsers(); //users.isOpen() == false for (User user : users) { //Never iterates System.out.println(user.getId()); } When I get my

Doing bulk updates with MyBatis and Oracle stored procedures

左心房为你撑大大i 提交于 2020-06-17 14:21:04
问题 Working on a legacy solution that uses MyBatis and Oracle's stored procedures for bulk database updates. Current version of Mapper looks similar to this @Mapper public interface MyMapper { void doUpdate(@Param("in") Map<String, List> in, @Param("out") Map<String, List> out); } The idea is to provide a map of lists of the same length with fields values as "in" parameter to use those lists as an arguments to call a stored procedure like this <select id="doUpdate" statementType="CALLABLE"> <!

Performance comparison between mybaits Batch ExecutorType and for_each Xml

人盡茶涼 提交于 2020-06-01 07:22:46
问题 I have a list of records to be inserted into DB using my baits. Previously, my code is something like: for(Item item : items){ sqlSession.insert("insert", item); } Using this method works but I find there is dynamical incremental DiskIO at Mysql server, due to number of items. As I have little access to MySql configuration, and hope to resolve this high disk io issue, I find some possible solutions: using ExecutorType.BATCH for sqlSession insert multiple values within a single insert