java
大鸡腿同学
SoftRpc contribuer; 21年拿到阿里淘系口头offer; 目前在某公司架构组搬砖,多多指教~
展开
-
contains正确使用
目录正常运行没有问题的情况错误的使用情况正确的使用方式出错原因:正常运行没有问题的情况java封装类,比如String,Integer等等举个粒子:public static void main(String[] args) { List list = new ArrayList(); //User u1 = new User(1,...原创 2019-04-30 09:57:08 · 16254 阅读 · 2 评论 -
银行减法注意点
1.做减法的时候可能因为精度问题导致错误如:double a=0.06;double b=0.01;System.out.println()a-b这个会显示0.049999...显然不是我们要的2.使用BigDecimal,注意了!是使用BigDecimal(String s)这个,不是BigDecimal(double b)这个,它计算结果也是0.4999..正确:...转载 2018-07-27 00:37:22 · 149 阅读 · 0 评论 -
通过applicationContext去动态加载bean
1.网上很多方法的https://www.ktanx.com/blog/p/3262.我使用的是springboot 然后上面链接最后一种方法import org.springframework.beans.BeansException;import org.springframework.context.ApplicationContext;import org.springf...原创 2018-07-30 11:20:07 · 2110 阅读 · 1 评论 -
List正确删除元素方法
原文:https://mp.weixin.qq.com/s/oeNGPy5Pac7wYd5t3hByjQ个人总结:有意思,for 原理是Iterator实现,如果你只是删除List里面元素,会导致Iterator判断hasnext时数量不同而报错。这个是使用ArrayList.remove(Object xx)的方法。正确是使用Iterator的remive()方法来删除,源码可以看出它删除...转载 2018-07-20 16:58:04 · 3764 阅读 · 0 评论 -
java并发之锁
有两种锁,悲观锁,乐观锁java和数据库都一样拥有这两种锁,数据库悲观锁for update,乐观锁每个表都有一个version字段,查询字段,然后set这个字段+1,如果操作成功而且version=version+1.update xx set version=version+1 and xx where version =1;如果有人改变version的值,那么这个操作会失败! java悲观锁...转载 2018-07-07 16:37:42 · 126 阅读 · 0 评论 -
BeanFactory与FactoryBean区别
1.BeanFactory是一个管理,创建,生产bean的工厂2.FactoryBean是一个工程类根据Bean的id从BeanFactory获取的对象,其实是从FactoryBean的getobject()返回原创 2018-07-18 15:54:18 · 236 阅读 · 0 评论 -
volatile关键字
1.volatile不能保证原子性,只保证可见性。所以使用的时候要用在原子性的语句。2.什么语句具有原子性,x++,x=x+1,x=y这些都不是原子性的,因为他们需要读取x原本的值,再赋值,拿到的值,和你想赋值时原来的值有可能不同,所以是非原子性的。x=1这个是原子性的,直接赋值,不需要管它之前的值多少3.so volatile使用情景:1)标识状态的值private vola...转载 2018-07-24 09:06:29 · 115 阅读 · 0 评论 -
logback储存在mongodb
1.在实习中遇到一个问题,就是日志太多,一般日志是保存在服务器文件里面,动不动就几g,那解决这个问题的话,可以保存到数据库里面。2.这里不局限与mongodb,mysql。3.如何实现?pom.xml <dependency> <groupId>org.mongodb</groupId> <artifactId...转载 2018-07-17 10:53:23 · 1378 阅读 · 0 评论 -
spring 依赖注入
1.@Autowired这个要配合@Service @Repository来进行配置@Service是注入service类的impl,impl来实现service注入@Repository是注入dao层impl的。@Autowired注入是根据类来注入,@Resource是根据类名来注入(name)举个板栗:@Autowiredprivate StudentDao studentdao;上面这个是...转载 2018-07-09 10:12:45 · 125 阅读 · 0 评论 -
ReenTrantLock可重入锁和synchronized区别
1.简便性:synchronized使用起来方便,不用像ReenTranLock还要手动lock(),unlock()ReenTrantLock独有的能力:1. ReenTrantLock可以指定是公平锁还是非公平锁。而synchronized只能是非公平锁。所谓的公平锁就是先等待的线程先获得锁。2. ReenTrantLock提供了一个Condition(条件)类,用来实现分...转载 2018-06-18 20:38:14 · 295 阅读 · 0 评论 -
关于request线程安全
1.线程安不安全,可以使用多线程进行测试,如果线程不安全,会出现重复的情况2.线程安全1)在Controller参数中的request如:public void a(HttpServletRequest request)2)自动注入@Autowired3)基类注入基类代码public class B{@Autowiredpublic xx xx;}3.线程不安全@ModelAttributepub...转载 2018-06-10 21:02:18 · 1369 阅读 · 0 评论 -
CopyOnWrite系列
写时复制,读的时候直接返回它直接保证最终一致性,不能保证强一致性,所以使用时要注意1.CopyOnWriteArrayList List<Integer> tempList = Arrays.asList(new Integer [] {1,2}); CopyOnWriteArrayList<Integer> copyList = new Co...转载 2018-06-18 14:41:05 · 177 阅读 · 0 评论 -
ConcurrentHashMap
HashTable线程安全,但是一旦在并发线程里面会导致持续等待,性能比较差。ConcurrentHashMap采用锁分段机制原创 2018-06-18 00:31:09 · 142 阅读 · 0 评论 -
防止用户多次提交
比如双十一,抢货。方法一:可以看下下面这个做法就是通过注解,重新拦截器,在访问页面的时候在request加上token,页面也有这个token。通过token传过来,拦截看下是不是同一个token,是的话放过去,为空或者你已经点击的时候,会去掉request这个token,拦截下来https://mp.weixin.qq.com/s?__biz=MzI3ODcxMzQzMw==...转载 2018-07-27 18:12:33 · 858 阅读 · 0 评论 -
延时任务实现方式之队列
延时任务:可以使用DelayQueue队列来进行实现写一个类实现Delayed这个接口,然后复写里面的2个方法/* * 获取延时时间 */ @Override public long getDelay(TimeUnit unit) { return endtime-System.currentTimeMillis(); }ge...原创 2018-08-13 09:59:08 · 936 阅读 · 0 评论 -
秒转毫秒
System.currentTimeMillis()这个是按ms来算的,那么如何秒转ms,看下面,坑了我很久TimeUnit.MILLISECONDS.convert(long time, TimeUnit.SECONDS)其他的类似TimeUnit.要转换的时间单位.convert(输入要转换的时间比如3, TimeUnit.原本的时间单位)...原创 2018-08-13 10:00:44 · 2703 阅读 · 0 评论 -
java锁总结
目录面试必考?volatilesynchronized偏向锁轻量级锁(CAS)自旋概念重量级锁ConcurrentHashMapReadWriteLock可重入锁总结java ReentrantReadWriteLock读写锁Java锁上面都是之前写过的博客参考一下面试必考?讲讲多线程并发。首先是锁,synchronized属于jv...原创 2019-04-26 00:12:24 · 258 阅读 · 0 评论 -
java面试之IOC
https://mp.weixin.qq.com/s?__biz=MzAxNjk4ODE4OQ==&mid=2247485011&idx=1&sn=e4c1c094ddb952d81141e396f7ff1bfe&chksm=9bed2721ac9aae37e293b1f44d3de7bd75974f1e489729b5d41274c1515bad9b93d2201...转载 2019-02-23 19:34:26 · 861 阅读 · 0 评论 -
AtomicLong使用
Long64位置,会被分成2段进行储存,不安全。所以使用ActomicLong保证原子性下面介绍下使用方法AtomicLong atomicLong=new AtomicLong(100);新建一个初始值为100的,如果要获得值调用get()方法如果需要++操作,调用incrementAndGet()atomiclong.get()获取值...原创 2019-01-30 20:21:58 · 1600 阅读 · 0 评论 -
HashMap构造以及出现的问题
hashmap由一个数组还有链表组成,数组报错地址,链表存放地址值。可以说这个很形象。当它高并发扩展的时候可能会变成环形链表。遍历的时候会无限循环,是线程不安全的。我们可以使用ConcurentHashMap代替。 ...转载 2019-02-02 23:49:00 · 147 阅读 · 0 评论 -
java基础总结
一、jvm1.java jvm优化(一)2.Java内存模型二、并发1.线程安全与共享资源2.线程安全以及不可变性3.java锁4.java并发之阻塞队列BlockingQueue5.java并发CAS操作三、网络编程1.java网络编程(一)Socket、ServerSocket2.java网络编程(二)URL项目地址:https://github...原创 2019-02-02 21:48:24 · 274 阅读 · 0 评论 -
json库性能对比
由于看到占小狼的公众号https://mp.weixin.qq.com/s/RBfQYcBBqvj90jB_qebnfQ,有所感触。从我一开始接触JsonObject到Gson,最近的ObjectMapper,都是对json进行序列化和反序列化。具体性能看上面的链接,这里主要是个人总结: Gson库<dependency> <groupId>co...转载 2019-01-27 17:28:21 · 762 阅读 · 0 评论 -
Semaphore Java控制并发
前有CountDownLatch模拟并发https://blog.csdn.net/weixin_38336658/article/details/81624539这一篇讲下Semaphore,可以完成synchorized实现不了的限流功能。它有几个函数semaphore.acquire();拿到一个信号量semaphore.release();释放一个信号量S...原创 2018-12-11 22:52:42 · 161 阅读 · 0 评论 -
springboot jar 打包完没有主清单属性
在maven中填下<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </p转载 2018-12-14 23:30:30 · 1114 阅读 · 0 评论 -
java优化(一)
1.使用clone复制对象,尽量不使用new去新建对象package com.example.demo.Test;public class test2 implements Cloneable{ private static test2 t=new test2(); public static test2 getnewtest2() { try { ...原创 2018-09-09 13:57:03 · 287 阅读 · 0 评论 -
shell对nginx状态,mysql的查看
1.nginx状态,它本来就有状态检查的模板这里使用之间访问nginx 的网页,如果是200则成功,其他则提示失败curl -m 5 -s -w %{http_code} 127.0.0.1:8080 -o /dev/null上面是tomcat 的,nginx的链接换下就行 ...转载 2018-09-02 22:48:34 · 521 阅读 · 0 评论 -
split坑
转自https://blog.csdn.net/sun5769675/article/details/50204591String ids = "1,2,3,";// 对,你没有看错,我故意这么写的,根据我们的设想这里一定是四个值拼接的,即时有空字符串,使用split神器也可以成功分割出长度为4的数组。// 所以我这么写了。String[] idArr = ids.split(","...转载 2018-08-30 11:33:45 · 433 阅读 · 0 评论 -
java异步执行之线程池
java异步执行可以使用线程,或者第三方消息中间件,如mq线程池的使用:1)Executors来创建线程池ExecutorService cachePool = Executors.newCachedThreadPool(); for (int i=1;i<=10;i++){ cachePool.execute(task); ...转载 2018-09-04 16:17:25 · 10825 阅读 · 0 评论 -
jsp动静加载
jsp动态加载(和java交互产生的动态页面,如查询结果等等)<jsp:include page="" flush="true">jsp静态加载(头尾样式,html等等)<%@ include file=""%>原创 2018-06-16 09:14:02 · 210 阅读 · 0 评论 -
java进阶--aop
aop:面向切面编程概念AOP核心概念1、横切关注点对哪些方法进行拦截,拦截后怎么处理,这些关注点称之为横切关注点2、切面(aspect)类是对物体特征的抽象,切面就是对横切关注点的抽象3、连接点(joinpoint)被拦截到的点,因为Spring只支持方法类型的连接点,所以在Spring中连接点指的就是被拦截到的方法,实际上连接点还可以是字段或者构造器4、切入点(po...转载 2018-06-14 12:25:03 · 162 阅读 · 0 评论 -
java进阶--设计模式
1.工厂模式FactoryBean,依赖注入,一个创建,管理其他bean的工厂类,通过这个工厂来创建bean,如下<beans> <bean id="singletonBean" class="com.itxxz.HelloItxxz"> <constructor-arg> <value>Hello! ...转载 2018-06-14 10:35:47 · 164 阅读 · 0 评论 -
java Integer.getInteger和Integer.valueOf的区别
今天遇到这个坑,然后总结一下1.Integer.valueOf(String s)经典的String类转Integer类的方法2.Integer.getInteger(String s )是读取一个系统属性里面的值,属性对应的值。懂?像Integer.getInteger("1")为啥为null,因为系统本来就没有给1这个属性赋值。其次很多NullException错误的,记得在赋值前转载 2018-01-27 23:55:29 · 1535 阅读 · 0 评论 -
java文件上传下载
这里先说下spring mvc 遇到的坑,就是如果文件上传时,后端这样写public String file1(HttpServletRequest request),根据request拿到的东西是空的。所以要下面这样写。上传在任何xml里面(因为都要加载到的,所以可以随便放进去)加上 cotroller里面@RequestMapping(value=...原创 2017-07-25 17:26:44 · 2483 阅读 · 0 评论 -
@Configuration,@Bean,@ComponentScan
@Configuration是配置类,标注在类上,相当于spring xml配置文件里面的不配置的话,当你注入@Autowired的时候,会报注入错误@Bean是配置需要配置的类@ComponentScan(basePackages="")自动扫描转载 2018-01-25 01:02:42 · 245 阅读 · 0 评论 -
Mybaties与Hibernate不同
个人是小白,就开发经验谈谈想法:Mybaties是从数据库数据表生成基类,并利用插件生成mapping类Hibernate是根据基类生成数据库数据表后续再更新原创 2017-12-18 23:21:53 · 382 阅读 · 0 评论 -
@ResrController与@Controller的区别
@ResrController=@ResponseBody+@Controller@ResponseBody这个是跳过spring mvc框架里面的视图,直接显示出结果的json格式原创 2017-12-17 17:23:42 · 1378 阅读 · 0 评论 -
hashcode()与equals区别
Object提供hasCode(),该方法的值与数据存储地址有关用特定的方法产生的对象hasCode()不同,但是不按照特定方法产生的hascode可能相同2个对象不同,hasCode()一定不同但是如果要验证2个对象相同一定要用到equals转载 2017-12-12 00:14:24 · 167 阅读 · 0 评论 -
rbac框架
很多网站需要权限管理,java 可以采用rbac框架rbac框架:基于角色的权限管理框架what想要访问的资源,how链接,who用户,角色,权限数据库:用户,角色,用户与角色对应关系,权限(urls,对链接的访问权限),角色与权限对应关系实现其实不难,传用户id获取角色,然后获取权限,判断当前访问的路径是否在权限urls里面新的知识:比如说每次访问页面判断是否已经登录,或者判转载 2017-11-12 22:38:36 · 1479 阅读 · 0 评论 -
Restful api
直译:表现层状态转移一般请求链接:http://xx.com/xx?xx=a(get请求)Restful api请求链接中都是名词:http://xx.com/xx/xx(接口 e.g /name/{123})后端实现@ResponseBody,或者@RestController---->不进行页面渲染,jsp等等,直接返回json格式数据。Restful api可以很好的实现前后原创 2017-11-12 11:37:23 · 265 阅读 · 0 评论 -
java定时任务Timer,Quartz
1.一般可以使用数据库的定时任务来完成需求,比较方便2.TimerTimerTaskpackage test;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.TimerTask;public class TimeTask extends TimerTask{ priv转载 2017-10-17 22:56:07 · 234 阅读 · 0 评论