首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Java中的各种O

    Java中数据的封装会被命名为各种O,常见的有PO、VO、DTO、BO、POJO。...1.PO PO是Persistant Object的缩写,即持久化对象,通常对应数据模型,可以简单的理解为一个PO实例对应数据库中的一条记录,操作该实例即可以操作数据库中对应的数据。...PO只封装数据库中对应的记录,不应该包含对数据库的操作。...5.POJO POJO是Plain Ordinary Java Object的缩写,即简单Java对象,一个只有属性及属性setter和getter方法的基本JavaBean,是一个中间对象...总结:对于各种O的使用,需要根据所在层、用途、及场合来选择,设计这些不同Object的目的就是为了区分不同应用场景下数据意义的不同,彼此之间隔离开,避免思路上的混杂,但是也不可过度的为了区分而使用,这样会造成思绪上的拥堵

    1K50

    Java中的各种锁

    参考:https://tech.meituan.com/2018/11/15/java-lock.html 乐观锁 VS 悲观锁 悲观锁认为自己在使用数据的时候一定有别的线程来修改数据,因此在获取数据的时候会先加锁...Java中,synchronized关键字和Lock的实现类都是悲观锁。 乐观锁认为自己在使用数据时不会有别的线程修改数据,所以不会添加锁,只是在更新数据的时候去判断之前有没有别的线程更新了这个数据。...乐观锁在Java中是通过使用无锁编程来实现,最常采用的是CAS算法,Java原子类中的递增操作就通过CAS自旋实现的。 悲观锁适合写操作多的场景,先加锁可以保证写操作时数据正确。...在不使用锁(没有线程被阻塞)的情况下实现多线程之间的变量同步。java.util.concurrent包中的原子类就是通过CAS来实现了乐观锁。...CAS算法涉及到三个操作数: 需要读写的内存值 V。 进行比较的值 A。 要写入的新值 B。

    36610

    Java各种IO流

    那我们文件又是怎么从我们本地上传到服务器,别人又是怎么从服务器将文件下载下来的呢。其实这就要多亏我们的“流”,正如他的名字一样,当上传或下载文件时,文件会成“流”,最后流又组成了完整的文件。...什么是IO流IO流是Java中用于程序和外部源进行文件传输的一种中间形态,分为输入流(Input Stream)和输出流(Output Stream),分别用于读取文件和写入文件。...IO流的类型Java中有关IO的类一共都有40多个,但所有类都是基于以下4个类InputStream/OutputStream: 分别为字节流中输入流和输出流的基类。...写入的文件,不然可能会遇到文件数据类型不一致,或者乱码的问题。...字节流主要处理文件类型以二进制方式存储的文件,如图片,视频等就只能用字节流来处理,而字符流主要用于以Unicode字符存储的数据流。

    10310

    Java去掉html标签的各种姿势

    一、背景 业务开发中可能需要将html的标签全部去掉,本文将多种方法综合在这里,供大家参考。..."; //定义style的正则表达式 String regEx_html="]+>"; //定义HTML标签的正则表达式...; import java.io.FileReader; import java.io.Reader; import java.util.List; import java.util.ArrayList...具体的jar包请自行到中央仓库里搜索依赖配置 https://search.maven.org/  和 https://mvnrepository.com/ 三、提供一个工具类 可以将资源路径的文本类型文件...测试时读取资源文件可以使用第三节提供的工具类。 如果正则表达式无法满足你的需求,自己进一步优化即可。 如果其他方式仍然有特殊情况没有考虑到,可以自己先用正则去除这种特殊情况。

    2.3K20

    你了解 Java 的各种锁吗?

    类似地,我们使用线程池和信号量来约束资源的使用。 但是缺不能知晓哪些管辖范围内的活动可能形成的资源死锁。Java应用程序不能从死锁中恢复,所以确保你的设计能够避免死锁出现的先决条件是非常有价值。...上面的例子出现死锁的根本原因就是获取所的顺序是乱序的,超乎我们控制的。...与内部锁机制不同,Lock提供了无条件,可轮询,定时的,可中断的锁获取操作,所有加锁和解锁的方法都是显式的。 Lock的实现必须提供举报与内部锁相同的内存可见性的语义。...一般使用 select ...for update 对所选择的数据进行加锁处理,例如 select * from account where name=”JAVA” for update, 这条sql...语句锁定了account 表中所有符合检索条件(name=”JAVA”)的记录。

    63410

    Java去掉html标签的各种姿势

    一、背景 业务开发中可能需要将html的标签全部去掉,本文将多种方法综合在这里,供大家参考。...<\\/style>"; //定义style的正则表达式 String regEx_html="<[^>]+>"; //定义HTML标签的正则表达式...; import java.io.FileReader; import java.io.Reader; import java.util.List; import java.util.ArrayList...可以将资源路径的文本类型文件(如json/html)读取成字符串 public class ResourceUtil { /** * 根据当前类路径,获取资源文件夹对应文件的所有字符串...测试时读取资源文件可以使用第三节提供的工具类。 如果正则表达式无法满足你的需求,自己进一步优化即可。 如果其他方式仍然有特殊情况没有考虑到,可以自己先用正则去除这种特殊情况。

    1.8K10

    java8 各种GC的总结

    1. jvm1.8的内存布局 java的内存布局大致如下图所示: ? 2. 垃圾确认的方法 引用计数法: 给对象添加一个引用计数器,当有一个地方引用时,计数器就加1,当引用失效时,计数器就减1。...4.垃圾收集器 jvm1.8中支持的垃圾收集器见下图: ? 上图表示不同的GC收集器的组合,根据业务场景的不同,结合各垃圾收集器的特点,在年轻代和老年代我们可以使用不同的垃圾收集器。...4.7.2 G1收集过程 G1收集器将java堆从一个整体收集变成了一个个Region进行收集,收集的过程中,采用垃圾优先,也就是会计算每个Region的垃圾回收情况,回收最有利的Region。...因此,这也是我们调优的时候需要重点关注的,G1的退化情况。调优的目的是尽量保证退化的情况不出现。...5.总结 本文对JVM中的各种GC回收器进行了总结,在配置GC回收策略的时候,我们需要结合我们的业务场景来进行: 并行GC是jdk1.8默认的GC回收策略,默认采用 ParNew收集器 + Parallel

    97140

    java 工厂的变形模拟的各种应用

    工厂模式是在项目开发中使用效率高,意一个接口,该定义用于创建对象。让子类来决定哪一个类实例。...这就是一个工厂类的示意图 接着来一个简单的样例: 如上图所看到的,我们首先定义我们的产品抽象类接口,也能够是抽象类: package factory; public abstract class PlatForm...在工厂模式方法中抽象产品类负责定义产品的共性,实现实物最抽象的定义;creator为产品抽喜创建类,也就是抽象工厂详细怎样创建产品类有详细的实现creator的工厂类来完毕。...工厂类的变种非常多,以下,我总结类一个比較通用的源代码。...和上一种都比較类似了,当中简单工厂模式仅仅是简单的把抽象工厂类去掉,然后把工厂实现类的方法改成static方法。多级工厂模式是指:比如当我们见到一个比較复杂的项目时。

    28320

    Java并发编程-各种锁

    类似地,我们使用线程池和信号量来约束资源的使用, 但是缺不能知晓哪些管辖范围内的活动可能形成的资源死锁。Java应用程序不能从死锁中恢复,所以确保你的设计能够避免死锁出现的先决条件是非常有价值。...上面的例子出现死锁的根本原因就是获取所的顺序是乱序的,超乎我们控制的。...与内部锁机制不同,Lock提供了无条件,可轮询,定时的,可中断的锁获取操作,所有加锁和解锁的方法都是显式的。 Lock的实现必须提供举报与内部锁相同的内存可见性的语义。...一般使用 select ...for update 对所选择的数据进行加锁处理,例如 select * from account where name=”JAVA” for update, 这条sql...语句锁定了account 表中所有符合检索条件(name=”JAVA”)的记录。

    86820

    java各种集合类区别

    大家好,又见面了,我是你们的朋友全栈君。 最近面试经常遇到java集合类的问题,上网搜了一下,做个笔记 百度的图 集合类型主要有3种:set(集)、list(列表)和map(映射)。...与Vector的区别: 1.如果集合中的元素数量大于当前集合数组的长度时,Vector的增长率是目前数组长度的100%,而ArryaList增长率为目前数组长度的50%。...客户化排序:其实就是实现java.util.Comparator接口提供的具体的排序方式, 是具体要比较对象的类型,他有个compare的方法,如compare(x,y)返回值大于...Map总结: java的Map(映射)是一种把键对象和值对象进行映射的集合,其中每一个元素都包含了键对象和值对象,其中值对象也可以是Map类型的数据,因此,Map支持多级映射,Map中的键是唯一的,但值可以不唯一...TreeMap 实现了java.io.Serializable接口,意味着它支持序列化。 TreeMap基于红黑树(Red-Black tree)实现。

    53320
    领券