Java
Java
calefaction_2015
我就是我 是颜色不一样的烟火
展开
-
code review 总结(更新ing)
1. 静态工厂方法,不用构造器;(Effective java)2. 枚举类代替魔法值,以及不可变常量放入final类中,构造器私有,防止被误实例化;3. 少用内部类,因为每新增一个类,都要被类加载,耗费性能;(遵循最小用够用原则);4.对象转换时候少用BeanUtils.copyProperties(dest, oirgin),因为底层是通过反射实现的,较为耗费性能;推荐使用对象getset方法,推荐idea优秀插件之codeMaker...原创 2022-03-07 23:32:11 · 206 阅读 · 0 评论 -
IDEA优秀插件之codeMaker
在idea-plugins搜索codeMaker,如图直接安装即可;测试代码@Datapublic class PersonDO { private String id; private String name; private String sex; private String address; private String school;}@Datapublic class PersonDTO { privat原创 2022-03-07 23:09:41 · 2726 阅读 · 0 评论 -
Java 并发编程之semaphore
sempaphore 中文意思为信号, 信号灯;顾名思义,就是控制流量,协调各个线程之间资源分配问题。semaphore 是一种信号计数量,内部是基于AQS的共享模式。他就相当于一个synchronized 的加强版。应用场景:一个停车场有固定100个车位, 就可以用semaphore设计实现,new Semaphore(100);当有新车进入时,void acquire() 获取一个许可,同时相当于占用了一个车位,当没有获取许可前,当前线程一直处于阻塞状态;当车辆出场时void rel..原创 2020-12-11 13:56:18 · 188 阅读 · 0 评论 -
代码质量小结
命名严格遵守lowerCamelCase、UpperCamelCase,不要想当然哪里想大写就大写 不要用下划线命名 单元测试类命名 XxxTest,而不是TestXxx 注释需要遵守Javadoc规范(类、类属性、类方法) 不要使用行尾注释 建议把工具方法放在util包里 包名全要小写 成员变量要用包装类型,局部变量可用基本数据类型 消除魔法值,代码中不能凭空出现常量 使用线程池替代显示创建线程 及时清..转载 2020-11-05 10:31:02 · 171 阅读 · 0 评论 -
浅谈JVM内存模型
首先, 众所周知,JVM 内存大致可以分成两个部分。堆 和方法区 为所有线程共享非堆 包括 虚拟机栈, 本地方法栈, 程序计数器 为线程私有;堆占据JVM 大部分的内存;我们常说的jvm内存调优, 也主要是针对堆来调整内存分配;堆内存 = 新生代(Eden) + 老年代 ;往往分配比例 新生代和老生代(大小比例1:2),而 新生代由Eden 和s0 和s1 组成 ;比例是8:1:1;方法区: 也成为永久代,存放着类型,常量...转载 2020-10-24 15:02:03 · 92 阅读 · 0 评论 -
Java 接口作为方法参数
Java 接口作为方法参数好处:1 可以很方便封装起来,供调用者使用;2 参数为接口类型可以实现代码解耦;3 对调用者而言, 无需关心内部构造逻辑 , 只要实现调用相关方法 实现自己的下部逻辑即可,做到开箱即用的效果;4 我们翻看jdk源码发现大量这样应用的代码;...........................下面我们就举例实现说明用户人 基类 ,方法应用时候用到import lombok.AllArgsConstructor;import lombok.Bui.原创 2020-09-18 14:27:18 · 9853 阅读 · 3 评论 -
Java基础篇之值对象值传递和引用传递
当一个对象被当做参数传递到一个方法后,参数的值就是该对象的引用一个副本。指向同一个对象,对象的内容可以在被调用的方法中改变,但对象的引用(不是引用的副本)是永远不会改变的。下面来看个例子 :public class Test006 { public static void main(String[] args)throws Exception { Response r = new Response(); step1(r); Sys原创 2020-07-29 15:04:01 · 245 阅读 · 0 评论 -
【转】深入理解Java中的String
本文转自平凡希-深入理解java中的string,写的很好, 是我见过最好的几篇之一,感谢, 转发以记之。想要了解一个类,最好的办法就是看这个类的实现源代码,来看一下String类的源码:public final class String implements java.io.Serializable, Comparable<String>, CharSeque...转载 2020-05-08 10:55:04 · 145 阅读 · 0 评论 -
[转]垃圾回收-实战篇
垃圾回收-实战篇IT牧场2月11日以下文章来源于码海,作者码海码海一起进阶,一起牛逼!点击上方"IT牧场",选择"设为星标"技术干货每日送达!上文GC 理论颇受大家好评,学习了之后,相信大家对 GC 的工作原理有了比较深刻的认识,这一篇我们继续趁热打铁,来学习下 GC 的实战内容,主要包括以下几点 JVM 参数简介 发生 OOM 的主要几种场景...转载 2020-03-11 17:26:06 · 169 阅读 · 0 评论 -
Jsoup爬虫以及防反爬
1 java也可以爬取第三方网站的数据;注: 1 ip限制【防爬】 2 header参数referer 3 伪装hearder ua就源引 一个第三方代理网站试试{ Random r = new Random(); String[] ua = {"Mozilla/5.0 (Windows NT 6.1; WOW6...原创 2019-08-12 16:45:49 · 3332 阅读 · 2 评论 -
javaweb中的cookie的应用
session是保存在服务端,cookie是保存在客户端浏览器的。cookie在web中越来越用的广泛,一些知名的网站都把cookie用的很好,放很多东西向12306的起始车站,终点站日期都是放在cookie 中的,本文简单介绍下cookie入门,本人也是刚刚接触,希望能够帮助到大家。。。。1 保存用户名和MD5加密密码到cookie,保存时间1星期String host = reques原创 2015-09-22 23:48:35 · 359 阅读 · 0 评论 -
七牛云上传文件工具类
1 方法1 upload(String file, String filename)上传服务器文件路径的demo2 方法2 updateFile(MultipartFile file, String filename) 上传springmvc multipartFile 前端上传的文件流上传demo,仅供参考,有问题多多指教import com.google.gson.Gs...原创 2018-08-28 18:27:18 · 2403 阅读 · 0 评论 -
java转换字符串为string数组并解析
在接收json数据时候,解析字符串为string数组并解析,没有百度到 需要的朋友可以参考下import net.sf.json.JSONArray;public class TestArray {public static void main(String[] args) {String str = "[\"aaa\", \"bbb\", \"ccc\"]";JSON原创 2015-09-16 22:57:57 · 1264 阅读 · 0 评论 -
FileReader读取目录文文件gson解析
项目开发中 ,对于一些生产上用的密钥,肯定是要放在项目之外的。这样一方面隔离了项目,起到一定的安全作用;由此,我们需要用到一些解析文件,获取文件内容 , 并项目启动时初始化变量;这里引用gson(用于解析文件流),首先引入gson依赖 <!-- https://mvnrepository.com/artifact/com.google.code.gson/gson ...原创 2019-12-11 15:14:04 · 561 阅读 · 0 评论 -
了解ThreadLocal以及应用场景
多线程环境中,同一个 ThreadLocal 所包含的对象,在不同的 Thread 中有不同的副本;1 因为每个 Thread 内有自己的实例副本,且该副本只能由当前 Thread 使用。这是也是 ThreadLocal 命名的由来2 既然每个 Thread 有自己的实例副本,且其它 Thread 不可访问,那就不存在多线程间共享的问题总的来说,ThreadLocal 适用于每个线程需要自己...原创 2019-01-17 17:41:16 · 194 阅读 · 0 评论 -
区分网络请求时http和ajax请求
区分是否是ajax请求很简单只要判断rerquest的header里面x-requested-with是否为空;常用在过滤器中用于标记请求属性以及是否拦截public static void isAjaxRequest(HttpServletRequest request) {if (request.getHeader("x-requested-with") != null ...原创 2019-01-17 12:13:30 · 608 阅读 · 0 评论 -
初识CountDownLatch
CountDownLatch是1.5被引入;CountDownLatch是一个能够使一个线程等待其他线程各自完成自己的工作后在执行;例如 应用程序的主线程希望在负责启动框架服务的线程已经启动所有的框架服务之后在执行CountDownLatch 是通过一个计数器来实现的,计数器的初始值未线程的数量,当每个线程完成自己的任务调用countDown.countDown() 计数器值就会减1,当...原创 2019-01-04 14:49:39 · 233 阅读 · 0 评论 -
【转】苏宁500万日订单下的高可用拼购系统,到底暗藏了什么“独门秘籍”?
偶遇优秀的博文,详情请移驾到 苏宁500万日订单下的高可用拼购系统,到底暗藏了什么“独门秘籍”?,再此仅做记录链接零点提交订单峰值破 1 万 TPS,单日总订单量超 500 万,活跃用户数 200 万,苏宁 88 拼购日活动取得了丰硕的成果。在大流量、高销量的背后,是我们近半年来付出的努力,针对拼购系统瞬时高并发能力的优化与升级,才能保证消费者丝滑顺畅的购物体验。下面就来介绍下苏宁拼...转载 2018-11-26 16:49:56 · 351 阅读 · 0 评论 -
API接口加密—非对称加密解密之分段加解密
引言:对称加密:双方使用的同一个密钥,既可以加密又可以解密,这种加密方法称为对称加密,也称为单密钥加密。优点:速度快,对称性加密通常在消息发送方需要加密大量数据时使用,算法公开、计算量小、加密速度快、加密效率高。缺点:在数据传送前,发送方和接收方必须商定好秘钥,然后 使双方都能保存好秘钥。其次如果一方的秘钥被泄露,那么加密信息也就不安全了。另外,每对用户每次使用对称加密算法时,都需要使...原创 2018-11-22 16:11:50 · 2761 阅读 · 1 评论