Java项目中如何实现数据的安全性,比如安全锁之类的,求代码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java项目中如何实现数据的安全性,比如安全锁之类的,求代码相关的知识,希望对你有一定的参考价值。

您好,提问者:
    1、重要信息进行加密操作。

    2、地址栏尽量采用post提交方式。

    3、如果涉及多线程的话,可以使用Synchronized锁。

    下面例子:

public class Main
    public static void main(String[] args)
        new Thread(new Suo()).start();
        new Thread(new Suo()).start();
        //开启两个线程,加锁之后数据就不会出错
    

class Suo implements Runnable
    private static int num = 100;
    public synchronized void run()
        while(true)
            if(num==0)
                break;
            else
                System.out.println(num--);
        
    
追问

没学过线程,领导让实现项目数据的安全性,可否详细描述讲解

追答

这个很多知识,你可以找一些线程的书籍看下吧,安全性就是加锁或者休眠(wait())、唤醒(notify())

追问

是否有现成的例子我好赶快完成工作

追答

有例子也不是很符合你的,有这个时间看了自己写都出来了。

参考技术A 为数据加上一个字段,每次操作数据都会改变该字段的内容,并且操作时都会比对一下该字段的内容。追问

求代码

追答

没必要用多线程
没有代码
代码都是普通的数据库增删改查。
可能我说的不够清楚。

详细点:
在设计数据库中的表的时候,加上一个字段X,

每次取数据的时候把X的值取出来,

更新的时候比一下数据库中的X字段的内容是否和你取出来时一样。

如果一样,就更新这条数据,并把X的内容改变,比如设成X+1。

删除的时候也比对一下。

这是一种行级的排他锁。

java 锁的分类

  java中为了解决多线程并发带来的线程安全问题,引入了锁机制。

     java的加锁机制,可粗略分为两种:

  1.内置锁。

  什么是内置锁?把一个对象用作实现同步的锁,这样的锁就是内置锁。这是基于互斥的思想来实现的锁,即只有一个线程可以持有某一个锁。

  显然这样做可以保证线程安全,但是性能方面不那么友好。比如直接将某个方法声明为synchronized。

  2.重入锁。

  重入锁是指当一个线程获取已经由它自己持有的锁,就会成功,这样意味着锁操作的粒度由 调用 降低到了 线程,如何实现这种机制呢,可以采用程序计数器法。

  重入锁,降低了锁操作的粒度,大幅提升了性能。比如java并发包下的ReentrantLock 。当然它也可以解决线程死锁的问题。

以上是关于Java项目中如何实现数据的安全性,比如安全锁之类的,求代码的主要内容,如果未能解决你的问题,请参考以下文章

带你快速了解Java锁中的公平锁与非公平锁

java 锁的分类

Java线程安全问题代码实现

《java并发编程实战》读书笔记1--线程安全性,内置锁,重入,状态

如何确保Java线程安全?

JAVA乐观锁悲观锁实现