java基础
zz的的
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
IO流基础回顾
package com.io.learn;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;/** * Created by 79782 on 2018/6/22. */public class ReadAndWrite { public static vo...原创 2018-06-22 07:31:39 · 132 阅读 · 0 评论 -
死锁之加锁顺序
package thread.test;import java.math.BigDecimal;import java.util.Currency;public abstract class Amount implements Comparable<Amount>{ public abstract BigDecimal getBalance(); public abs...原创 2018-07-23 16:31:51 · 1499 阅读 · 0 评论 -
《java并发编程实战》读书笔记2
3.共享变量 编写正确的并发程序的关键在于对共享的、可变的状态进行访问管理。3.1可见性 可见性是微妙的,这是因为可能发生错误的事情总是与直觉大相庭径。在一个单线程化的环境里,如果想一个变量先写入值,然后在没有写干涉的情况下读取这个变量,你希望能得到相同的返回值。这看起来是很自然的。但是当读和写发生在不同的线程中时,情况却根本不是这样。为了确保跨线程写入的内存可见性,你必须使用...原创 2018-07-18 13:54:47 · 151 阅读 · 0 评论 -
缓存
打开一个网站,响应的时间不能超过三秒。高频率的相对稳定 读多写少的数据可以缓存。缓存加异步缓存: 将持久化的数据存放到内存副本中,用以提高并发,提高读写速度。原因:1.基于内存操作。2.空间换时间。3.降低瓶颈操作。4.减少对外依赖。层级 常见产品 缓存解决方案 ...原创 2018-07-18 21:02:29 · 167 阅读 · 0 评论 -
《java并发编程实战》读书笔记3
5.2并发容器 Java5.0通过提供几种并发的容器类来改进同步容器。同步容器通过对容器的所有状态进行串行访问,从而实现了它们的线程安全。这样做的代价是削弱了并发性,当多个线程共同竞争容器级的锁时,吞吐量会降低。 另一方面,并发容器是为多线程并发访问而设计的。 因为ConcurrentHashMap不能够在独占访问中被加锁,我们不能使用客户端加锁来创建新的原子操作...原创 2018-07-19 14:06:23 · 177 阅读 · 0 评论 -
过滤器,拦截器,监听器
一张图原创 2018-07-07 15:19:21 · 138 阅读 · 0 评论 -
hashMap,linkedHashMap以及synchronized和lock的一点总结
给定表M,存在函数f(key),对任意给定的关键字值key,代入函数后若能得到包含该关键字的记录在表中的地址,则称表M为哈希(Hash)表,函数f(key)为哈希(Hash) 函数。存储位置 = f(关键字)这个函数f一般称为哈希函数。在哈希表中进行添加,删除,查找等操作,性能十分之高,不考虑哈希冲突的情况下,仅需一次定位即可完成,时间复杂度为O(1)。哈希表的主干就是数组。当我们对某个元素进行哈...原创 2018-07-15 20:34:37 · 647 阅读 · 0 评论 -
JDK1.7和JDK1.8的ConcurrentHashMap
从JDK1.7版本的ReentrantLock+Segment+HashEntry,到JDK1.8版本中synchronized+CAS+HashEntry+红黑树,相对而言,总结如下思考1.JDK1.8的实现降低锁的粒度,JDK1.7版本锁的粒度是基于Segment的,包含多个HashEntry,而JDK1.8锁的粒度就是HashEntry(首节点)2.JDK1.8版本的数据结构变得更加简单,使...原创 2018-07-15 22:26:23 · 334 阅读 · 0 评论 -
线程的中断interrupt,判断是否中断isInterrupt和interrupted的区别
api 含义 public void interrupt() 中断线程,中断并不是真正的中断线程,而只设置标志位(中断位)来通知用户 public boolean isInterrupt() 判断Thread 对象是否中断 public static boolean interrupted 判断 当前线程是否中断,并且清除当前中断状态 pa...原创 2018-07-21 10:54:47 · 855 阅读 · 0 评论 -
java项目小技巧
static{ Timer timer=new Timer(); timer.schedule(new TimerTask() { public void run() { task(); } },0, 60 * 1000); }写在类里面 每一分钟执行一次原创 2018-08-22 17:52:29 · 241 阅读 · 0 评论 -
java中的BigDecimal
public static void main(String[] args) { double d1=1.01; double d2=2.01; System.out.println(d1+d2); }结果:3.0199999999999996 不论是float 还是double都是浮点数,而计算机是二进制的,浮点数会失去一...原创 2018-08-23 09:59:06 · 185 阅读 · 0 评论 -
注册加密用户密码
String salt = RandomStringUtils.randomAlphanumeric(20);user.setPassword(new Sha256Hash(user.getPassword(), salt).toHex());user.setSalt(salt);登陆时://密码错误if(!user.getPassword().equals(new Sha256...原创 2018-08-23 14:13:37 · 747 阅读 · 0 评论 -
通过ThreadPoolExecutor创建线程池
线程池不使用 Executors 去创建,而是通过 ThreadPoolExecutor 的方式,这样 的处理方式让写的同学更加明确线程池的运行规则,规避资源耗尽的风险。说明: Executors 返回的线程池对象的弊端如下:FixedThreadPool 和 SingleThreadPool : 允许的请求队列长度为 Integer.MAX_VALUE ,可能会堆积大量的请求,从而导致 ...原创 2018-11-28 10:41:32 · 1579 阅读 · 1 评论 -
《java并发编程实战》读书笔记1
1.找到顺序和异步之间最好的平衡,通常是那些高效率人士的一个特点--对于程序来说也是如此。2.相同的关注点(资源利用,公平和方便)不仅促进了线程的发展,也促进了线程的发展。线程允许程序控制流的多重分支同时存在于一个进程。他们共享进程范围内的资源,比如内存和文件句柄,但是每一个线程有其自己的程序计数器、栈和本地变量。线程也为多处理器系统中并行地使用硬件提供了一个自然而然的分解;同一程序内的多...原创 2018-07-17 18:09:14 · 142 阅读 · 0 评论 -
对动态代理的复习
package my.proxy;public interface UserService { public String getName(int id); public Integer getAge(int id); }package my.proxy;public class UserServiceImpl implements UserService { ...原创 2018-07-23 10:37:06 · 172 阅读 · 0 评论 -
java根据IP及子网掩码获取IP段的工具包
发现自己对IP地址一窍不通。当你的设备需要做网络,合理分配IP地址。IP地址由二进制组成。32位 ip地址最终的范围:0.0.0.0到255.255.255.255128 64 32 16 8 4 2 1A类:1.0.0.1-126.255.255.254 默认掩码:255.0.0.0==/8没有127 ,环回地址,自己的主机,如果能ping通,说明自己电脑的网卡是能用的B类:128.0.0.1...原创 2018-06-23 20:58:49 · 3818 阅读 · 0 评论 -
Java反射
1.反射概述 主要指程序可以访问,检测和修改它本身状态或行为的一种能力。 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能称为JAVA语言的反射机制。 简单来说,反射机制指的是程序在运行时能够获取自身的信息。在java中只要给定类的名字,那么就可以通过反射...原创 2018-06-24 20:56:41 · 127 阅读 · 0 评论 -
netty编程第一课
一.Java IO 通信BIO通信:1.一个线程负责连接,为每个客户端建立一个新的线程进行处理。 2.一请求一应答 3.缺乏弹性伸缩能力,由于线程是jvm非常宝贵的系统资源,当线程数膨胀之后,系统的性能将下降,随着系统访问量的增多,系统将会发生系统堆栈溢出。BIO通信模型:当有n个客户端接入时,服务端将会创建n个线程。伪异步IO通信 ...原创 2018-06-26 20:48:28 · 174 阅读 · 0 评论 -
一致性hash算法
今天看了下一致性hash算法,先总结如下:一致性Hash算法将整个哈希值空间组织成一个虚拟的圆环。整个空间按顺时针方向组织,圆环的正上方的点代表0,0点右侧的第一个点代表1,以此类推,2、3、4、5、6……直到2^32-1,也就是说0点左侧的第一个点代表2^32-1, 0和2^32-1在零点中方向重合,我们把这个由2^32个点组成的圆环称为Hash环。下一步将各个服务器使用Hash进行一个哈希,具...原创 2018-07-08 21:22:24 · 137 阅读 · 0 评论 -
java基本数据类型和引用数据类型
基本数据类型: 2b:byte,boolean 1字节 cs:char,short 2字节 if:int,float 4字节 dl:double,long 8字节不论是基本数据类型还是引用类型,他们都会先在栈中分配一块内存,对于基本类型来说,这块区域包含的是基本类型的内容;而对于对象类型来说,这块区域包含的是指向真正内容的指针,真正的内容被手动的分配在堆上。3种引用类型: ...原创 2018-07-09 09:47:40 · 125 阅读 · 0 评论 -
Properties
Java中有个比较重要的类Properties(Java.util.Properties),主要用于读取Java的配置文件Properties pps=new Properties(); pps.load(new FileInputStream("d:\\test.properties")); Enumeration enum1=pps.propertyNames(); while(enum...原创 2018-06-27 17:49:27 · 272 阅读 · 0 评论 -
transient的使用
package javatest;import java.io.FileInputStream; import java.io.FileOutputStream;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.io.Serializable;public class transientDe...原创 2018-06-28 10:08:46 · 214 阅读 · 0 评论 -
多线程编程1
package learn.test;public class TestThread { public static void main(String[] args) throws Exception { System.out.println("begin"); new Thread(new Runnable() { @Overr...原创 2018-07-10 15:30:31 · 117 阅读 · 0 评论 -
多线程编程2
package learn.threadpool;public class MemberService extends Thread { @Override public void run() { long l1=System.currentTimeMillis(); try { Thread.sleep(2000); ...原创 2018-07-10 17:18:26 · 164 阅读 · 0 评论 -
CAS
由于CAS操作属于乐观派,它总认为自己可以成功完成操作,当多个线程同时使用CAS操作一个变量时,只有一个会胜出,并成功更新,其余均会失败,但失败的线程并不会被挂起,仅是被告知失败,并且允许再次尝试,当然也允许失败的线程放弃操作,这点从图中也可以看出来。基于这样的原理,CAS操作即使没有锁,同样知道其他线程对共享资源操作影响,并执行相应的处理措施。同时从这点也可以看出,由于无锁操作中没有锁的存在...原创 2018-07-17 14:37:27 · 146 阅读 · 0 评论 -
多线程编程3线程生命周期图和多线程内存模型图
原创 2018-07-11 11:36:39 · 161 阅读 · 0 评论 -
Zookeeper分布式锁
package com.yf.test.demo;import org.apache.zookeeper.*;import org.apache.zookeeper.data.Stat;import java.util.ArrayList;import java.util.Collections;import java.util.List;import java.util.con...原创 2018-11-28 10:49:08 · 217 阅读 · 0 评论
分享