为什么Spring官方推荐通过构造器注入
一
我们在使用Spring的时候,最方便的就是它的IOC(控制反转),也就是所有的Bean都交由
Spring进行管理,那么我们在看网上的文章或者自己在写代码的时候经常会像这样写:
1 |
|
但是貌似许多人都会使用第一种方式,因为这样简单方便,如果是采用第二种的话,每一次新增加一个bean,都需要在构造器的入参上面加一个参数,就会显得有点麻烦。
我们在使用Spring的时候,最方便的就是它的IOC(控制反转),也就是所有的Bean都交由
Spring进行管理,那么我们在看网上的文章或者自己在写代码的时候经常会像这样写:
1 |
|
但是貌似许多人都会使用第一种方式,因为这样简单方便,如果是采用第二种的话,每一次新增加一个bean,都需要在构造器的入参上面加一个参数,就会显得有点麻烦。
这一周主要学习如下:
在使用ElementUI的时候有一个el-select
标签,我们有一个需求就是需要在下拉列表的时候还需要过滤出特定的选项,但是ElementUI
官方默认的过滤却只能支持 label 的筛选,所以这个时候就需要重新filter-method
方法来过滤出所需要的选项。
1 | <template> |
但是后来又说要把选择的值给另一个字段…于是我就在search方法下面加了一行this.otherField = val
。。后来前端把那一行给去除了。。。然后修改为如下代码。
ElasticSearch6.升级至ElasticSearch7.x的一些变化
由于最近需要将Es6.x
升级至Es7
,所以正好记录下在升级过程中遇到的一些问题,以便以后翻阅。
在Es6
系列之前,创建一个索引是需要index,type
这两个缺一不可的,例如如下请求:
今天在使用Vue的时候,突然发现了一个问题,就是在后端传过来的值因为是一个boolean
类型的,但是前端又需要进行展示,由于我们使用的是ElementUI
的话,于是参照官网上就是这样写的:
1 | <el-select v-model="option_boolean"> |
但是此时页面上展示并非是 1 和 2 ,而是 true 和 false。如下:
在上一篇文章中,我们有一个表,里面的内容如下:
1 | mysql> select * from org_copy; |
这应该是一个很基本的一个mysql表,同时我们在上一篇文章中,也执行了如下SQL。
1 | mysql> explain SELECT * FROM org_copy WHERE org_name>'一级部门' and org_parent_id=1; |
本次的实验是基于Mysql8
版本。首先在数据库中有一个表,其结构如下:
1 | mysql> show create table org; |
可以看到在这个表中,有一个主键org_id
以及一个联合索引index_name
。其他的并无特别之处。
在Mysql里面,有一个最左原则,官网的介绍如下:
这些天一直在踩Vue
的坑…今天遇到的一个问题是在一个父组件中,将某些数据通过props
传递给子组件,同时在子组件里面也有相应的一些rules
规则,但是在实际的开发中,却发现子组件的rules
并未生效…反而一直提示对应的 message,后来才发现是跟 ElementUI 的prop
有关。
首先看一段代码:
1 | <template> |
此时在这个组件中,一切都是正常的,但是一个完整的项目里面,是不可能将所有的元素都堆积在一个页面中,那样的话以后的维护就会非常的麻烦。所以此时就需要一个子组件,然后将父组件中一些数据传递至子组件。
代码如下:
1 | <template> |
在Vue里面,经常会遇到一些字典值的转换,而这些字典值由于和后端进行了约定的,一般不会轻易的改变,所以在前后端开发的项目中,这种字典值最好的做法是前端独立的保存一份,自己在前端自行进行处理。
我们的做法是使用Vuex
的store
配合filters
来进行前端的字典值转化,首先是在store
里面将字典值进行固定,然后通过filters
在页面中进行一个转换。
在Vue
里面使用store
首先需要安装vuex
,安装完毕之后就可以直接在main.js
里面直接引用了,但是为了统一管理还是决定新建一个store
文件夹,然后将store
相关的文件全部统一存放,新建完毕之后项目结构如下:
1 | ---App.vue |
这段时间一直在负责一个前后端项目,前端是Vue
+ElemeUI
,由于自己之前只是会简单的使用 Vue 的一些初级命令,自然只能慢慢的踩坑,然后再出坑….。例如数组无法触发Vue的视图更新
刚开始在使用 Vue 的时候,一直都是在 created
方法里面获取后端数据进行渲染,这样用起来倒也没什么问题,只不过今天突然看到了 Vue 的nextTick
方法,感觉比之前在created
里面请求后端更加高级。所以顺便研究了一波。
nextTick
常用于数据更新后,但是dom元素还未完成刷新,如何理解呢? 在 Vue 里面,更新 DOM 元素是异步的,也就是说当我们修改了数据之后,DOM元素并不会立即被刷新。参考深入响应式原理
如下Demo
在JDK1.8里面,ConcurrentHashMap
在put方法里面已经将分段锁移除了,转而是CAS锁和synchronized
ConcurrentHashMap
是Java里面同时兼顾性能和线程安全的一个键值对集合,同属于键值对的集合还有HashTable
以及HashMap
,HashTable
是一个线程安全的类,因为它的所有public
方法都被synchronized
修饰,这样就导致了一个问题,就是效率太低。
虽然HashMap
在JDK1.8
的并发场景下触发扩容时不会出现成环了,但是会出现数据丢失的情况。
所以如果需要在多线程的情况下(多读少写))使用Map集合的话,ConcurrentHashMap
是一个不错的选择。
ConcurrentHashMap
在JDK1.8的时候将put()方法中的分段锁Segment
移除,转而采用一种CAS
锁和synchronized
来实现插入方法的线程安全。
如下代码:
1 | /** Implementation for put and putIfAbsent */ |