关闭

MongodbTemplate的查询操作

Class类@Document(collection = "class") public class Class { private String classId; private List Students; public String getClassId() { return classId; } public void...
阅读(69) 评论(0)

MongodbTemplate的增删改操作

插入数据操作将参数转换成一个对象,直接调用insert方法即可: 举例:@Document(collection="student") public class Student { private String studentId; private String name; private int age; private String sex; public...
阅读(112) 评论(0)

快使搭建zookeeper集群

安装(2n-1)台linux虚拟机(因为zookeeper选举制度的半数规则),具体安装过程可参考 用工具上传zookeeper安装文件到/home目录下,并且发送给其他两台机器,发送指令为:scp /home/zookeeper root@ip:/home 解压文件并zookeeper文件,tar –zxvf zookeeper-3.4.5.tar.gz。将解压缩包进行重命名:mv zookeep...
阅读(38) 评论(0)

虚拟机克隆

当需要在一台服务器上安装多台虚拟机时,我们只需要安装一台,其他的可以直接克隆,这样可以省去大量的时间,但是也会有一个问题,就是网络连接不上。 下面是进行虚拟机克隆的大致过程: 1.复制虚拟机 2.记下新生成的mac地址 3.启动虚拟机 4.删除原有网卡规则 rm -rf /etc/udev/rules.d/70-persistent-net.rules 5.修改MAC地址 vi...
阅读(58) 评论(0)

wait,notify,notifyAll用法解析

在并发开发中,锁是非常常见的,而wait/notify也经常会和锁一起使用,例如在生产者消费者模式中。而且wait/notify也必须和锁一起使用,因为它们都是基于对象的,否则会抛出异常。 下面,我们通过一段简单的代码,来了解以下wait/notify的用法:public class WaitNotifyTest { public static final Object FINAL_OBJE...
阅读(66) 评论(0)

JVM加载对象时内存加载顺序

在开发中,有时会遇到这样的情况:我明明给一个变量赋值了,为什么在使用该变量时却是没有值的,这个和JVM的内存加载顺序有关,当你使用该变量时,这个变量还没初始化完成。 首先我们来看一段代码:public class ObjectLoadMemoryTest extends FuTest{ private int INT =100; private final int FINAL_INT...
阅读(70) 评论(0)

深入了解java序列化

在日常开发中,前端与后端的交互,系统之间的远程调用都需要使用到序列化技术,在java中使用序列化非常简单,只需要将被序列化的对象的类实现Java.io.Serializable接口即可。 对于实现序列化接口的类,我们需要注意两点: 类中的静态变量我们是无法序列化的,因为序列化只是针对对象,而静态变量是类级别的。 当子类实现序列化接口,而父类没有实现序列化接口时,将子类进行序列化,再反序列化回来后,...
阅读(110) 评论(0)

jvm自增,自减运行原理

在jvm中,涉及到变量运算时,会发生压栈弹栈等动作,但如果仅仅是自增和自减,那么jvm会直接在本地变量中实现。public class JavaTest{ public static void main(String[] args){ int a=1,b=1,c=1,d=1; a++; ++b; c = c++;...
阅读(75) 评论(0)

文件操作工具类Files

public class FilesUtils { private static Logger logger = Logger.getLogger(FilesUtils.class); /** * 判断一个文件或文件夹是否存在,如果没有访问权限,返回false * @time:2017年7月10日 * @author:MAZHEN * @descr...
阅读(68) 评论(0)

【加密解密】-AES加密解密实现

AES加密解密工具类:AESUtilspackage org.iti.algorithm;import java.security.SecureRandom;import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import javax.crypto.spec.IvPa...
阅读(65) 评论(0)

使用redis解决并发操作问题

在日常的开发中,有时我们会遇到这样的场景:多个人对同一个数据进行修改操作,导致并发问题发生。这个问题可以通过悲观锁来解决,但是悲观锁也是有限制的,在某些场景中是不适应的,因为和数据的耦合度太高了,可能会影响到其他业务的操作。而使用redis来解决这一问题是很好的选择。原理介绍redis的存储指令中有一个setnx方法,这个方法有一个特性,就是当键不存在的时候,会将这条数据插入,并且返回1,如果这个键...
阅读(102) 评论(0)

java多线程开发基础

多线程的实现方式在目前的jdk版本中,多线程的实现方式有以下三种1.继承Thread这种方式代码很简单,我们只需要自定义一个线程类,让它继承Thread,并复写它的run方法即可:public class MyThread extends Thread{ @Override public void run() { System.out.println("支线程开启。。...
阅读(64) 评论(0)

单例设计模式反射,序列化漏洞及解决方案

单例设计模式的实现方式有很多种,如饿汉式,懒汉式,双重检查锁,静态内部类,枚举等等,但是在平时的开发中,我们实现的单利模式是有一定的漏洞的,可以通过反射或者序列化以及反序列化获取不同的实例,虽然这个漏洞在系统运行的时候不会体现出来,但是在开发时也是值得注意的问题。...
阅读(164) 评论(0)
    个人资料
    • 访问:1056次
    • 积分:127
    • 等级:
    • 排名:千里之外
    • 原创:10篇
    • 转载:1篇
    • 译文:0篇
    • 评论:0条