一、配置插件
在resources文件夹下新建:generatorConfig.xml
内容如下:注意修改包名等信息
1 | <?xml version="1.0" encoding="UTF-8"?> |
在resources文件夹下新建:generatorConfig.xml
内容如下:注意修改包名等信息
1 | <?xml version="1.0" encoding="UTF-8"?> |
运行报错
1 | org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.hisen.dao.UserMapper.insert |
使用mybatis生成插件,产生的mapper,由于路径不对移动了一下mapper.Java文件
所以造成mapper.xml里面的namespace错误,无法映射
所以把namespace改为正确的即可
例如:
mapper.UserMapper
改为
com.hisen.dao.UserMapper
Queue接口与List、Set同一级别,都是继承了Collection接口。LinkedList实现了Queue接口。Queue接口窄化了对LinkedList的方法的访问权限(即在方法中的参数类型如果是Queue时,就完全只能访问Queue接口所定义的方法 了,而不能直接访问 LinkedList的非Queue的方法),以使得只有恰当的方法才可以使用。BlockingQueue 继承了Queue接口。
队列是一种数据结构.它有两个基本操作:在队列尾部加入一个元素,和从队列头部移除一个元素(注意不要弄混队列的头部和尾部)就是说,队列以一种先进先出的方式管理数据,如果你试图向一个 已经满了的阻塞队列中添加一个元素或者是从一个空的阻塞队列中移除一个元索,将导致线程阻塞.在多线程进行合作时,阻塞队列是很有用的工具。工作者线程可以定期地把中间结果存到阻塞队列中而其他工作者线程把中间结果取出并在将来修改它们。队列会自动平衡负载。如果第一个线程集运行得比第二个慢,则第二个 线程集在等待结果时就会阻塞。如果第一个线程集运行得快,那么它将等待第二个线程集赶上来。下表显示了jdk1.5中的阻塞队列的操作:
| 排序方法 | 平均情况 | 最好情况 |
|---|---|---|
| add | 增加一个元素 | 如果队列已满,则抛出一个IllegalSlabEepeplian异常 |
| remove | 移除并返回队列头部的元素 | 如果队列为空,则抛出一个NoSuchElementException异常 |
| element | 返回队列头部的元素 | 如果队列为空,则抛出一个NoSuchElementException异常 |
| offer | 添加一个元素并返回true | 如果队列已满,则返回false |
| poll | 移除并返问队列头部的元素 | 如果队列为空,则返回null |
| peek | 返回队列头部的元素 | 如果队列为空,则返回null |
| put | 返回队列头部的元素 | 如果队列满,则阻塞 |
| take | 返回队列头部的元素 | 如果队列为空,则阻塞 |
介绍:
消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题。
实现高性能,高可用,可伸缩和最终一致性架构。
是大型分布式系统不可缺少的中间件。
目前在生产环境,使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ等。
场景:异步处理、应用解耦、流量削锋、日志处理
以上就是关于为什么要使用队列的大致说明
参考:
maven项目,启动tomcat的时候报错:
1 | No MyBatis mapper was found in '[com.hisen.dao]' package |
这是由于把mybatis的mapper配置文件放在了Java代码的目录下
1 | ├── Java |
前面的例子我们使用的视图技术主要是JSP。JSP的优点是它是Java EE容器的一部分,几乎所有Java EE服务器都支持JSP。缺点就是它在视图表现方面的功能很少,假如我们想迭代一个数组之类的,只能使用<% %>来包括Java语句进行。虽然有标准标签库(JSTL)的补足,但是使用仍然不太方便。另外JSP只能在Java EE容器中使用,如果我们希望渲染电子邮件之类的,JSP就无能为力了。
Java生态圈广泛,自然有很多视图框架,除了JSP之外,还有Freemarker、Velocity、Thymeleaf等很多框架。Thymeleaf的优点是它是基于HTML的,即使视图没有渲染成功,也是一个标准的HTML页面。因此它的可读性很不错,也可以作为设计原型来使用。而且它是完全独立于Java ee容器的,意味着我们可以在任何需要渲染HTML的地方使用Thymeleaf。
Thymeleaf也提供了spring的支持,我们可以非常方便的在Spring配置文件中声明Thymeleaf Beans,然后用它们渲染视图。
1 | <!--thymeleaf模版 spring4.x--> |
概述
工具类 就是封装平常用的方法,不需要你重复造轮子,节省开发人员时间,提高工作效率。谷歌作为大公司,当然会从日常的工作中提取中很多高效率的方法出来。所以就诞生了Guava。
高效设计良好的API,被Google的开发者设计,实现和使用
遵循高效的Java语法实践
使代码更刻度,简洁,简单
节约时间,资源,提高生产力 Guava工程
包含了若干被Google的 Java项目广泛依赖 的核心库,例如:
部分用法如下:
刚在一个群里,有人有这么一个需求。
表A:id,name
表B:id,其他,name(新增字段)
A,B表通过id关联,要把A的name给对应的B的name
以前也没有写过这种update语句
1 | update 表名 set 字段名=字段值 where 条件 |
在安装了git客户端之后,发现Git Bash挺好用
之前在linux shell用过tree命令感觉不错
发现Git Bash也可以实现,于是就记录一下
下载地址:点击前往
下载文件: Binaries Zip
解压文件:bin目录下找到tree.exe
把这个放到git安装目录下后的路径:C:\Program Files\Git\usr\bin\tree.exe
测试:虽然有点丑。。。
SpringBootCLI是一个命令行工具,可用于快速搭建基于spring的原型。
它支持运行Groovy脚本,这也就意味着你可以使用类似Java的语法,但不用写很多的模板代码。
Spring Boot不一定非要配合CLI使用,但它绝对是Spring应用取得进展的最快方式.
1 | spring --version |
在命令行输入:mongo报错
1 | hisen@ubuntu:~$ mongo |
看倒数第二行,应该是权限的问题,于是
1 | hisen@ubuntu:~$ sudo chown -R hisen /home/hisen/.mongorc.js |
完美解决,用户权限的问题。