此时的你小脑袋可能飘满了问号,就这么简单?自定义 Realm 呢?全局过滤器呢?我不用写各种配置文件吗?...自动拼接 HTTP 的各种参数包括 URL、Header、Body 等等参数都能依靠 Java 注解来声明。...,除了浪费在组装各种请求参数外,大部分时间都花了在序列化和反序列化各种格式的数据上,如 JSON 和 XML。...项目不依赖任何框架,完全基于 JDK 本身编写,没有各种花里胡哨的东西,性能还是相当不错的。...以上推荐的开源项目,也是 Dromara Java 社区里的精品项目,很多都已经是 GVP 项目了,用好这些框架/工具,真的能让工作效率大大提升。
此时的你小脑袋可能飘满了问号,就这么简单?自定义 Realm 呢?全局过滤器呢?我不用写各种配置文件吗?...自动拼接 HTTP 的各种参数 包括 URL、Header、Body 等等参数都能依靠 Java 注解来声明。...,除了浪费在组装各种请求参数外,大部分时间都花了在序列化和反序列化各种格式的数据上,如 JSON 和 XML。...项目不依赖任何框架,完全基于 JDK 本身编写,没有各种花里胡哨的东西,性能还是相当不错的。...以上推荐的开源项目,也是 Dromara Java 社区里的精品项目,很多都已经是 GVP 项目了,用好这些框架/工具,真的能让工作效率大大提升。
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的目的就是为了区分不同应用场景下数据意义的不同,彼此之间隔离开,避免思路上的混杂,但是也不可过度的为了区分而使用,这样会造成思绪上的拥堵
使用私有锁可以减小锁的细粒度,减少由锁产生的开销。...在我的爬虫框架NetDiscovery中就使用了 CountDownLatch 来控制某个爬虫的暂停和恢复。 九. 锁的分类 ? Java 锁的小结.png 十....总结 本文小结了 Java 常用的一些锁及其一些特性,掌握这些锁是掌握 Java 并发编程的基础。...当然,Java 的锁并不止这些,例如 ConcurrentHashMap 的分段锁(Segment),分布式环境下所使用的分布式锁。...参考资料: 《Java并发编程艺术》 《Java并发编程实战》 不可不说的Java“锁”事
使用私有锁可以减小锁的细粒度,减少由锁产生的开销。...在我的爬虫框架NetDiscovery中就使用了 CountDownLatch 来控制某个爬虫的暂停和恢复。 九. 锁的分类 ? Java 锁的小结 十....总结 本文小结了 Java 常用的一些锁及其一些特性,掌握这些锁是掌握 Java 并发编程的基础。...当然,Java 的锁并不止这些,例如 ConcurrentHashMap 的分段锁(Segment),分布式环境下所使用的分布式锁。...参考资料: 《Java并发编程艺术》 《Java并发编程实战》 不可不说的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。
做工控经常会在项目上遇到各种需要统计的量(产量,流量...等)。这块工业应用十分广泛,各位工程师构思也不相同,出来项目应用上也参差不齐,如何做到接近实际的需要与精度?...需要理论结合实际的环境编程调试完善程序。...4:定义一小时脉冲计时 5:这里用到上一篇文章提到的填表高级指令(重点要掌握) 至此达到工艺要求的一天每小时的产量统计,上位机读取变量VW14为第一个小时的量,VW16为第二个小时的量......每天的量即24小时的量累加值,包括每月每年......这个是项目实践应过的,有条件的工程师可以上设备验证,所谓实践出真知。
那我们文件又是怎么从我们本地上传到服务器,别人又是怎么从服务器将文件下载下来的呢。其实这就要多亏我们的“流”,正如他的名字一样,当上传或下载文件时,文件会成“流”,最后流又组成了完整的文件。...什么是IO流IO流是Java中用于程序和外部源进行文件传输的一种中间形态,分为输入流(Input Stream)和输出流(Output Stream),分别用于读取文件和写入文件。...IO流的类型Java中有关IO的类一共都有40多个,但所有类都是基于以下4个类InputStream/OutputStream: 分别为字节流中输入流和输出流的基类。...写入的文件,不然可能会遇到文件数据类型不一致,或者乱码的问题。...字节流主要处理文件类型以二进制方式存储的文件,如图片,视频等就只能用字节流来处理,而字符流主要用于以Unicode字符存储的数据流。
sDateFormat = new // SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); // String date = sDateFormat.format(new java.util.Date
Drools 规则是在 Java 应用程序上运行的,其要执行的步骤顺序由代码确定 ,为了实现这一点,Drools 规则引擎将业务规则转换成执行树。...项目结构.png 测试用例: package cn.caijiajia.decision.service; import cn.caijiajia.decision.domain.User; import...,类似java中的null,表示空的值。...变量类型: 与Java的变量命名规则相同,变量的值由用户传入,如"a"、"b"等 nil类型: 常量nil,类似java中的null,但是nil比较特殊,nil不仅可以参与==、!...MVEL用于执行使用Java语法编写的表达式。 2.特性: MVEL是一个功能强大的基于Java应用程序的表达式语言。 目前最新的版本是2.0,具有以下特性: (1). 动态JIT优化器。
一、背景 业务开发中可能需要将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/ 三、提供一个工具类 可以将资源路径的文本类型文件...测试时读取资源文件可以使用第三节提供的工具类。 如果正则表达式无法满足你的需求,自己进一步优化即可。 如果其他方式仍然有特殊情况没有考虑到,可以自己先用正则去除这种特殊情况。
类似地,我们使用线程池和信号量来约束资源的使用。 但是缺不能知晓哪些管辖范围内的活动可能形成的资源死锁。Java应用程序不能从死锁中恢复,所以确保你的设计能够避免死锁出现的先决条件是非常有价值。...上面的例子出现死锁的根本原因就是获取所的顺序是乱序的,超乎我们控制的。...与内部锁机制不同,Lock提供了无条件,可轮询,定时的,可中断的锁获取操作,所有加锁和解锁的方法都是显式的。 Lock的实现必须提供举报与内部锁相同的内存可见性的语义。...一般使用 select ...for update 对所选择的数据进行加锁处理,例如 select * from account where name=”JAVA” for update, 这条sql...语句锁定了account 表中所有符合检索条件(name=”JAVA”)的记录。
一、背景 业务开发中可能需要将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. 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
项目汇总: 序号 地址 说明 1 https://gitee.com/07fly/07flyfms 小说管理系统 2 https://gitee.com/07fly/FLY-CRM CRM和ERP系统
工厂模式是在项目开发中使用效率高,意一个接口,该定义用于创建对象。让子类来决定哪一个类实例。...这就是一个工厂类的示意图 接着来一个简单的样例: 如上图所看到的,我们首先定义我们的产品抽象类接口,也能够是抽象类: package factory; public abstract class PlatForm...在工厂模式方法中抽象产品类负责定义产品的共性,实现实物最抽象的定义;creator为产品抽喜创建类,也就是抽象工厂详细怎样创建产品类有详细的实现creator的工厂类来完毕。...工厂类的变种非常多,以下,我总结类一个比較通用的源代码。...和上一种都比較类似了,当中简单工厂模式仅仅是简单的把抽象工厂类去掉,然后把工厂实现类的方法改成static方法。多级工厂模式是指:比如当我们见到一个比較复杂的项目时。
大家好,又见面了,我是你们的朋友全栈君。 最近面试经常遇到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)实现。
获取两点之间的距离 public class LocationUtils { /** * 赤道半径 */ private static double EARTH_RADIUS...100d; s = s * 1000; return s; } } 根据位置获取经纬度 /** * Description : 地理编码 获取详细地址的经纬度...* Group : * * @param address 详细地址 * @param currentCity 市 * @return java.lang.String...:您的IP是:[xxx.xxx.xxx.xxx] org.jsoup.select.Elements els = doc.body().select("center"); for...public static String getAddrName() throws JSONException, IOException{ //这里调用百度的ip定位api服务 详见
类似地,我们使用线程池和信号量来约束资源的使用, 但是缺不能知晓哪些管辖范围内的活动可能形成的资源死锁。Java应用程序不能从死锁中恢复,所以确保你的设计能够避免死锁出现的先决条件是非常有价值。...上面的例子出现死锁的根本原因就是获取所的顺序是乱序的,超乎我们控制的。...与内部锁机制不同,Lock提供了无条件,可轮询,定时的,可中断的锁获取操作,所有加锁和解锁的方法都是显式的。 Lock的实现必须提供举报与内部锁相同的内存可见性的语义。...一般使用 select ...for update 对所选择的数据进行加锁处理,例如 select * from account where name=”JAVA” for update, 这条sql...语句锁定了account 表中所有符合检索条件(name=”JAVA”)的记录。
领取专属 10元无门槛券
手把手带您无忧上云