- 博客(19)
- 收藏
- 关注
原创 系统架构变迁——个人成长路线
想法雏形某普通大学CS专业的小丁,经常在表白墙qq群里淘各种二手产品,可是每次打开群都会99+,每次都看不到之前别人发了什么东西,要是有一个和淘宝一样的平台来校内交易就好了,哎!小丁想到:“我自己就是计算机专业的啊,我可以做,可是都类应用我不会做啊,我只会在C语言的黑框框里输出烫烫烫烫烫烫烫烫口。”于是乎,这个念头就在藏在了小丁的脑海中。他不知道的是,这就是需求的产生。系统基础架构后来,学习了Java,了解了j2ee,小丁豁然开朗,自己可以做一个web程序!于是自学Javaweb,用servlet和
2021-09-07 19:38:04
222
原创 Java锁的分类
1 公平锁 / 非公平锁1.1 公平锁公平锁是指多个线程按照申请锁的顺序来获取锁。1.2 非公平锁非公平锁是指多个线程获取锁的顺序并不是按照申请锁的顺序,有可能后申请的线程比先申请的线程优先获取锁。有可能,会造成优先级反转或者饥饿现象。1.3 Java实例// ReentrantLock初始化参数为true 即为公平锁private static Lock lock = new ReentrantLock(true);public ReentrantLock(boolean fair) {
2021-09-04 17:30:55
182
原创 Java容器线程安全源码探究
我们经常听说这个容器是线程安全的,那个是不安全的,那到底为什么一些是安全的一些是不安全的呢,我们将从源码来查看。线程安全线程安全是多线程编程时的计算机程序代码中的一个概念。在拥有共享数据的多条线程并行执行的程序中,线程安全的代码会通过同步机制保证各个线程都可以正常且正确的执行,不会出现数据污染等意外情况。—百度百科Java容器依赖图(基础)ListVector 同步/*** Vector类实现了一个动态数组。和ArrayList和相似,但是两者是不同的:* Vector是同步访问的。*
2021-09-01 11:28:52
220
原创 Java动态代理Proxy.newProxyInstance源码到底干了什么?【2021-8-31】
动态代理用一个简单的例子来描述动态代理,你想租房子,一般的话,你需要四处找房子,很辛苦,你想在家躺着交了钱就行,所以你找了个代理(中介),代理去找好了房子,和房东商量,你过来看下房子签合同交钱就好了。这就是代理的作用。(找中介需谨慎,中介不同于代码,代码不会骗人)实际代码中,当你有一个已有的方法,你在不希望修改它的前提下想要扩展它的功能,即可使用动态代理。典型案例就是Spring AOP。例子代码/** * @author ddd * @create 2021-06-25 19:21 *
2021-08-31 10:30:04
1174
1
原创 FutureTask+Callable+ExecutorService实现异步返回值源码
上文中,我们说了ExecutorService运行Runnable和Callable的原理https://blog.csdn.net/dhdhsff/article/details/119984090现在我们来说一下FutureTask+Callable+ExecutorService完成异步返回值的原理使用代码例子package My.ThreadExcutorService;import com.google.common.util.concurrent.ThreadFactoryBuilde
2021-08-30 10:21:46
414
1
原创 ExecutorService和ThreadPoolExecutor运行原理
为什么要使用线程池服务器应用程序中经常出现的情况是:单个任务处理的时间很短而请求的数目却是巨大的。构建服务器应用程序的一个过于简单的模型应该是:每当一个请求到达就创建一个新线程,然后在新线程中为请求服务。实际上,对于原型开发这种方法工作得很好,但如果试图部署以这种方式运行的服务器应用程序,那么这种方法的严重不足就很明显。每个请求对应一个线程(thread-per-request)方法的不足之一是:为每个请求创建一个新线程的开销很大;为每个请求创建新线程的服务器在创建和销毁线程上花费的时间和消耗的系统资
2021-08-29 20:06:56
1419
6
原创 SpringBoot使用Redission完成分布式锁
需要导入的依赖/*需要的依赖 <dependency> <groupId>org.redisson</groupId> <artifactId>redisson</artifactId> <version>3.12.0</version> </dependency> <dependency>
2021-07-19 15:06:44
191
原创 Java问题记录:synchronized详解
在Java里面,最基本的互斥同步手段就是synchronized关键字,这是一种块结构(Block Structured)的同步语法。synchronized关键字经过Javac编译之后,会在同步块的前后分别形成 monitorenter和monitorexit这两个字节码指令。这两个字节码指令都需要一个reference类型的参数来指明 要锁定和解锁的对象。如果Java源码中的synchronized明确指定了对象参数,那就以这个对象的引用作 为reference;如果没有明确指定,那将根据synch
2021-07-19 14:32:27
160
原创 JAVA问题记录:volatile详解
在读了《深入理解Java虚拟机》一书后,终于弄清楚了volatile的原理主内存和工作内存 Java内存模型的主要目的是定义程序中各种变量的访问规则,即关注在虚拟机中把变量值存储到 内存和从内存中取出变量值这样的底层细节。此处的变量(Variables)与Java编程中所说的变量有所区 别,它包括了实例字段、静态字段和构成数组对象的元素,但是不包括局部变量与方法参数,因为后 者是线程私有的,不会被共享,自然就不会存在竞争问题。为了获得更好的执行效能,Java内存模 型并没有限制执行引擎使用处理器的特定
2021-07-16 16:59:17
97
原创 JAVA问题记录:List与Map
/* transient Object[] elementData; // non-private to simplify nested class access ArrayList<>() 底层原理是数组 */ List<Integer> list=new ArrayList<>(); /* private static class Node&...
2021-07-16 14:44:58
64
原创 JAVA问题记录:为什么使用消息队列而不是用多线程
二者如何选择,又该在什么情况下使用 因为多线程会消耗当前服务器资源,根本不算加快系统的性能,如果线程挂掉,那线程中的信息仍然会丢失,消息队列可部署在其他中间件上,并且其中的信息可以额外保存。 在一个方法中,前后两段步骤没有联系,互不干扰,即可采用多线程,如:1.先查询A,再查询B,再根据A,B结果修改C,即可使用带返回值的线程同时操作A和B,结果都返回后再修改C,其中操作还有什么细节,暂不讨论。 邮件任务:1.发邮件2.库存修改3.流量削峰4.应用解耦等等...
2021-07-16 14:39:31
679
原创 Java问题记录:为什么变量要分基本类型和引用类型
个人理解 首先JAVA是一门面向对象语言,那它本可以将所有变量都用类来保存,但是它本没有这样做,还是保留了八个基本类型。 那了解过JVM虚拟的朋友会知道,运行时的基本变量会放在运行栈内,对象类型变量会存在堆内而只在栈内放一个引用地址,结合我们操作系统以及计算机组成原理的知识,内存和磁盘交互会因为IO速度不匹配而采用高速缓存来过渡,这其中又会涉及到缓存的置换策略与命中率,而且对象类型变量会因为存储的是引用地址,又会多一个地址解析的过程。并且对象类变量在编译后会带有对象头属性,里面有很多标志信息会很占空
2021-07-16 14:28:31
322
原创 超全超详细的Java企业级学习路线(韩顺平老师思维导图)
超全超详细的Java企业级学习路线(韩顺平老师思维导图)个人整理,后续会持续对图中知识点进行更新
2021-07-07 15:45:44
3879
1
原创 csp火车购票(90待修改)
201609-2试题名称: 火车购票时间限制: 1.0s内存限制: 256.0MB问题描述: 问题描述 请实现一个铁路购票系统的简单座位分配算法,来处理一节车厢的座位分配。 假设一节车厢有20排、每一排5个座位。为方便起见,我们用1到100来给所有的座位编号,第一排是1到5号,第二排是6到10号,依次类推,第20排是96到100号。 购票时,一个人可能购一张或多张票,最多不...
2018-10-13 12:21:50
298
原创 csp除法java(超时80分= =)
201709-5试题名称: 除法时间限制: 10.0s内存限制: 256.0MB问题描述: 问题描述 小葱喜欢除法,所以他给了你N个数a1, a2, ⋯, aN,并且希望你执行M次操作,每次操作可能有以下两种: 给你三个数l, r, v,你需要将al, al+1, ⋯, ar之间所有v的倍数除以v。 给你两个数l, r,你需要回答al + al+1 + ⋯ + ar的值是多少...
2018-10-08 20:39:24
332
1
原创 csp工资计算java满分
201612-2试题名称: 工资计算时间限制: 1.0s内存限制: 256.0MB问题描述: 问题描述 小明的公司每个月给小明发工资,而小明拿到的工资为交完个人所得税之后的工资。假设他一个月的税前工资(扣除五险一金后、未扣税前的工资)为S元,则他应交的个人所得税按如下公式计算: 1) 个人所得税起征点为3500元,若S不超过3500,则不交税,3500元以上的部分才计算个人所得税...
2018-10-07 21:32:10
254
原创 csp中间数java满分
201612-1试题名称: 中间数时间限制: 1.0s内存限制: 256.0MB问题描述: 问题描述 在一个整数序列a1, a2, …, an中,如果存在某个数,大于它的整数数量等于小于它的整数数量,则称其为中间数。在一个序列中,可能存在多个下标不相同的中间数,这些中间数的值是相同的。 给定一个整数序列,请找出这个整数序列的中间数的值。输入格式 输入的第一行包含了一个整数...
2018-10-07 20:43:58
428
原创 csp打酱油Java满分
试题编号: 201709-1试题名称: 打酱油时间限制: 1.0s内存限制: 256.0MB问题描述: 问题描述 小明带着N元钱去买酱油。酱油10块钱一瓶,商家进行促销,每买3瓶送1瓶,或者每买5瓶送2瓶。请问小明最多可以得到多少瓶酱油。输入格式 输入的第一行包含一个整数N,表示小明可用于买酱油的钱数。N是10的整数倍,N不超过300。输出格式 输出一个整数,表示小明最多...
2018-10-07 20:18:46
134
原创 学生成绩等级分化java实现
package dingdd;import java.util.*;class M{ int x; Scanner reader=new Scanner(System.in); int input(){ Scanner reader=new Scanner(System.in); x=reader.nextInt(); reader.close(); return x;...
2018-10-07 16:51:35
2096
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人