Java中的List.addAll复制对象
测试代码
1 | import java.util.ArrayList; |
通过测试发现,无论此时修改list1,或者list2 都会影响到两个list.运行结果如下
1 | hanmeimei |
由此可见,使用list.addAll只是把后者的对象的地址指向复制给了前面的list。所以造成一改全改
Java中的List.addAll复制对象
测试代码
1 | import java.util.ArrayList; |
通过测试发现,无论此时修改list1,或者list2 都会影响到两个list.运行结果如下
1 | hanmeimei |
由此可见,使用list.addAll只是把后者的对象的地址指向复制给了前面的list。所以造成一改全改
Nginx出现的413 Request Entity Too Large
错误,这个错误一般在上传文件的时候出现,打开nginx主配置文件nginx.conf,找到http{}段,添加
解决方法就是
打开nginx主配置文件nginx.conf,一般在/usr/local/nginx/conf/nginx.conf
这个位置,找到http{}段,修改或者添加
1 | client_max_body_size 500m; |
然后重启nginx,
1 | nginx -s reload |
我们一般使用java的时候更多的时候是获取子类的父类是谁。或者多态的使用具体子类。但是有时候的业务会要求你拿到父类下的所有子类。那么该怎么做呢?
注意:子类不一定在同一个包里。
该方式未使用,但肯定可以实现。暂不做讨论,有机会在后面予以补充。
操作方式,获取全局的class文件路径,挨个比对。发现一个存一个,之后即可获得所有子类。但是这种方式在spring下有点浪费。因为spring有类的托管机制。我们把具体的子类交给spring,让其在jvm启动的时候即实例化。使用如下代码:
1 | @Component |
1 | @Autowired |
如上即可获取接口下的所有实现类
org.reflections
包
1 | Reflections reflections = new Reflections("com.yannis.ms.check.service"); |
1 | Set<Class<?>> singletons = reflections.getTypesAnnotatedWith(javax.inject.Singleton.class); |
不过要注意,通过第四种获取到的类为包下所有的子类包含抽象类,但第三种只会拿到具体的实现类
此时 该问题即可解决。
欢迎拍砖。
在Mybatis下比对datetime类型的字段时,使用大于号(>)或小于号(<)报错。
报错原因:
mybatis查询的时候,需要用到运算符 小于号:< 和 大于号: >,在mybatis配置文件里面,这种会被认为是标签,所以解析错误
解决方案:
1 | <![CDATA[ |
在项目中不时会遇到一些特殊的文件处理方法,现记录几个不常见的方法。
1 | //获取系统的临时文件夹 |
假如FTP不限制上传网速的话,基本能达到10M/s(局域网内)
1 | /** |
注意:以下代码是核心解决上传速度的
1 | ftp.setBufferSize(1024*1024); |
启动服务:
1 | [root@netseek root]# #rpm –qa | grep vsftpd ;查看是否安装vsftpd服务 |
配置相关文档:
1 | #vi /etc/vsftpd/vsftpd.conf |
禁止匿名用户访问:
1 | anonymous_enable=YES,将YES改为NO |
在文件末尾加如下的设置:
1 | # new added by netseek |
注:在添加过程中请不要加上”;”和这些中文注释,在这里我上为了方便大家了解才加上的。
添加用户netseek_com,用户目录指定为/var/www/netseek.com,且此用户不能登陆系统.
1 | #mkdir /var/www/netseek.com |
注-s /sbin/nologin是让其不能登陆系统,-d 是指定用户目录为/var/www/netseek.com
1 | #passwd netseek_com (Do not Hack me 3ks) DnHm3ks 这是我设置的密码 |
注:将用户目录及其子目录的所有和所属的组设置为netseek_com
我在安装过程中磁盘了多个区,分别/home,/var,/,/www,tmp,swap,/boot多个分区。建议你将磁盘分多个独单的分区,这样可以降低磁盘分区损坏造成的数据丢失风险.
1 | [root@netseek root]# rpm -qa | grep quota |
我的系统已经安装了磁盘配额工具
1 | #vi /etc/fstab |
找到类似
1 | LABEL=/var /var ext3 defaults 1 2 |
在defaults后加入usrquota,改为如下:
1 | LABEL=/var /var ext3 defaults,usrquota 1 2 |
重新加载/var这个分区:
1 | #mount –o remount /var |
1 | [root@localhost var]# quotacheck -mf /var |
重新启动系统
第一次运行时都会出现这个警告,再次运行的时候就不会啦
为指定用户定额:
1 | #edquota netseek_com 为用户netseek_com设置磁盘配额。 |
注:
1 | ilesystem blocks soft hard inodes soft hard |
让系统启动是自动加载:#vi /etc/rc.d/rc.local
,加入以下:
1 | /etc/init.d/vsftpd start |
现在查看netseek_com 用户使用磁盘空间的情况
1 | [root@localhost ~]# quota -u netseek_com |
注:关于更多的quota命令,请用man命令查看吧,乌哥(VBird)说,我们要学会找男人 !
1 | anonymous_enable=YES ,将YES改为NO, 禁止匿名用户登陆 |
1 | listen_port=8021 ,指定命令通道为8021,默认为21 |
1 | pasv_enable=YES ,是否允使用被动模式,默认是允许的。 |
1 | listen_address=192.168.0.21 ,指定FTP,IP地址 |
注:只有当vsftp运行于独立模式时才允许使用指定IP,如果在/etc/xinetd.d目录下已经建立了vsfpd文件,就要将该文件中的disable设置为yes,方可。
1 | chroot_local_user=YES ,将其设为YES,就锁定在用户主目录,设为NO,可以切换 |
1 | max_clients=100 ;允许的最大连接数,定义为100,默认为0,表没有限制 |
如何对指定用户进行流量限制呢?
1 | #vi /etc/vsftpd/vsftpd.conf,添加一行: |
保存重启服务即可.
目录说明设置
1 | #vi /etc/vsftpd/vsftpd.conf |
然后我们定制一个.message,写上你想写的东西,然后把这个文件复制到各个用户的家目录中,就OK。
系统欢迎消息设置
1 | ftpd_banner=Welcome to ftp.netseek.com , Yeah!!! |
系统欢迎消息文件设置
1 | banner_file=/etc/vsftpd/welcome 与ftpd_banner相类似,不同之处在于,banner_file指定欢迎文件. |
1 | @charset "UTF-8"; |
注意:background部分的position: fixed;否则,只能在当前区域内遮盖
1 | <!-- shade div start --> |
1 | //遮罩效果显示 |
当鼠标滑过某个制定位置,弹出div图片。移出,图片消失。
1 | $(function() { |
1 | <!--浮动产品模板开始--> |
Hibernate缓存分为两类:包括一级缓存(session级别)、二级缓存(sessionFactory级别)以及查询缓存。
缓存范围:缓存只能被当前Session对象访问。缓存的生命周期依赖于Session的生命周期,当Session被关闭后,缓存也就结束生命周期。这就是一级缓存。
Hibernate一些与一级缓存相关的操作(时间点):
数据放入缓存:
缓存范围:缓存被应用范围内的所有session共享,不同的Session可以共享。这些session有可能是并发访问缓存,因此必须对缓存进行更新。缓存的生命周期依赖于应用的生命周期,应用结束时,缓存也就结束了生命周期,二级缓存存在于应用程序范围。
什么样的数据适合放到二级缓存中?
常用的二级缓存插件
1 | EHCache org.hibernate.cache.EhCacheProvider |
demo:
为Hibernate配置二级缓存:
在主配置文件中hibernate.cfg.xml :
1 | <!-- 使用二级缓存 --> |
需要ehcache-1.2.jar包:
还需要 commons_loging1.1.1.jar包
1 | @Cache(usage = CacheConcurrencyStrategy.READ_WRITE) |
二级缓存的使用策略一般有这几种:
1 | read-only |
注意:我们通常使用二级缓存都是将其配置成 read-only ,即我们应当在那些不需要进行修改的实体类上使用二级缓存,否则如果对缓存进行读写的话,性能会变差,这样设置缓存就失去了意义。
二级缓存缓存的仅仅是对象,如果查询出来的是对象的一些属性,则不会被加到缓存中去。
tag:
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent: meta: false pages: false posts: title: true date: true path: true text: false raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: false tags: true