java
JoyceYIDA
do myself
展开
-
mybatis插入数据返回指定字段
插入一条数据,返回指定字段原创 2022-08-29 14:53:41 · 1887 阅读 · 0 评论 -
ThreadPoolTaskScheduler的使用以及动态修改cron表达式时的任务stop与start
多个定时任务的动态操作原创 2022-08-09 15:25:31 · 1641 阅读 · 0 评论 -
java中List<Object>转List<Long>踩坑记录
使用强转:List testLists=(List)(List)testList;不生效,依旧是原本的类型方法1:foreach把list的每一个元素强转转成Long方法2:lambdamap中使用Long.parseLong去进行转换:List testLists = testList.stream().map(o->Long.parseLong( o.toString())).collect(Collectors.toList());...原创 2022-05-25 15:50:36 · 2753 阅读 · 0 评论 -
多线程相关
synchronized同步代码块jvm C C++指令调用了操作系统的同步机制monitorenter指令进入同步代码块monitorexit指令退出同步代码块一个monitorenter对应多个monitorexit指令,比如:21行的moniterexit执行完之后goto30行return,27行的onitorexit并没有执行到,因为异常情况也需要释放锁,当程序抛出异常,也要执行monitorexit指令,当执行一次monitorenter指令,计数器+1,执行一次monitorexit.原创 2021-10-12 10:03:21 · 123 阅读 · 0 评论 -
日志操作记录:使用AOP
aop【面向切面编程】:【Spring】在运行时,动态地将代码切入到类的指定方法、指定位置上。但是AOP不一定都像Spring AOP那样,是在运行时生成代理对象来织入的,还可以在编译期、类加载期织入,比如AspectJ定义注解类:@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)指定切入到方法中;在运行时切入相比于面向对象,能把一些重复的操作统一起来...原创 2021-07-16 14:21:50 · 104 阅读 · 0 评论 -
js点击按钮获取后端数据填充到前端文本框
效果图:js ajax请求到后端,获取到map,然后在ajax success 返回函数通过$("#id").val(data.key)后端传值:原创 2021-02-23 16:01:42 · 2150 阅读 · 0 评论 -
.java文件出现小闹钟
莫名出现小闹钟图标,不能运行解决:原创 2021-02-01 10:30:29 · 1401 阅读 · 0 评论 -
初步了解java位图:BitSet
实现cloneable接口;常用方法:void and(BitSet set)对此目标位 set 和参数位 set 执行逻辑与操作。void or(BitSet set)对此目标位 set 和参数位 set 执行逻辑或操作。最后输出的就是四个bitset的或操作的结果。bitset的应用场景:排序:public class SortByBit { public static void main(String args[]) { //输入数字 .原创 2021-01-05 20:43:16 · 217 阅读 · 0 评论 -
SpringBoot
SpringBoot的优势动态加载(用注解)有内置的tomcat,不需要发布到tomcat上或者jboss等http服务器上,有内置的tomcat,jetty等服务器。启动方式是通过一个主函数来启动,但是主函数main要有@SpringBootApplication的注解@SpringBootApplication等价于以默认属性使用@Configuration、@EnableAugtoCo...原创 2020-01-13 18:58:49 · 103 阅读 · 0 评论 -
线程池
为什么要使用线程池?创建多线程,系统要处理很多执行时间很短的请求,系统要不断的进行创建和销毁线程,线程池通过重复利用已创建的线程降低创建和销毁带来的消耗,降低资源的消耗。当任务到达的时候任务可以不用等待线程创建就直接立即执行,提高的响应速度。使用线程池可以统一的进行线程的分配、调度和监控。提高线程的可管理性。线程池的实现:ExecutorService service=new Thr...原创 2019-12-27 16:28:43 · 111 阅读 · 0 评论 -
JVM3:内存分配、回收策略、内存模型JMM
JVM是整个计算机的虚拟模型,JMM属于JVMJava的内存模型:基于线程的内存模型,简称JMMJMM 定义的主要目标:为了定义程序中各个变量的访问规则,也就是如何将变量从内存中取出来,怎样将它写入。定义了虚拟机(JVM)在计算机内存中(RAM)的工作方式。这里的变量是实例字段、静态字段和数组元素(线程共享)一、主内存与工作内存。主内存也就是所有内存共享区域(堆、方法区、运行时常量池);工作...原创 2019-08-11 18:57:30 · 134 阅读 · 0 评论 -
JVM1:内存区域划分与内存分配策略
Java内存区域划分线程私有:程序计数器:可以看做当前线程所执行的字节码的行号指示器。如果执行的是Java方法,计数器记录的是正在执行的虚拟机字节码指令的地址;如果正在执行的是Native方法,计数器的值为空。**程序计数器内存区域是唯一一个在JVM规范中没有规定任何OOM情况的区域。虚拟机栈:描述的是Java方法执行的内存模型:每个方法执行的同时都会创建一个栈帧用于存储局部变量、...原创 2019-08-10 20:47:34 · 144 阅读 · 0 评论 -
基于WebSocket的多人网页聊天室
之前做过基于局域网的多线程聊天室,之前的项目功能有所欠缺,各部分功能的实现都是在控制台进行的,采用webSocket之后可以让前端和后端向C/S模式(客户端服务器)一样进行实时通信,不在需要每次单独发送请求。WebSocket允许通过JS建立和服务器的连接,WebSockt实现了全双工通信(不需要客户端发送请求,服务器就可以直接向服务端发送数据)项目实现:每当有一个客户端连入、关闭、发送消息都...原创 2019-08-07 09:48:44 · 446 阅读 · 0 评论 -
Java多线程:公平锁、重入锁、读写锁、共享锁、乐观锁、分段锁
公平锁公平性是针对获取锁而言的,如果一个锁是公平的,那么锁的获取顺序就应该符合请求上的时间顺序,满足FIFOReentrantLock和ReentrantReadWriteLock默认都是非公平锁,公平锁在ReentrantLock和ReentrantReadWriteLock中的实现增加了hasQueuedPredecessors的逻辑判断,该方法用来判断当前节点在同步队列中是否有前驱节点,...原创 2019-08-05 22:10:37 · 244 阅读 · 0 评论 -
Java多线程3:Lock锁--AQS,ReentrantLock
Lock接口是JDK1.5以后新增的,需要显式加锁,拥有了获取和释放锁的可操作性,可中断地获取锁,可超时获取锁等synchronized关键字所不具备的同步特性。通过子类进行实例化Lock的使用:Lock lock=new ReentrantLock(); lock.lock(); try{ }finally { ...原创 2019-08-05 21:25:04 · 126 阅读 · 0 评论 -
反射小结
反射是框架设计的灵魂反射使用的前提条件:必须先得到代表的字节码的Class,Class类用于表示.class文件(字节码)要想解刨一个类就先拿到该类的Class对象 1.获取Class对象的三种方式1.1 Object-->getClass(); 因为所有类都是继承Object类,所以调用Object类来获取1.2 任何数据类型(包括基本数据类型)都有一个静态class属性...原创 2019-04-26 14:49:57 · 67 阅读 · 0 评论 -
JVM2:垃圾回收器与垃圾回收算法
JDK1.6垃圾收集器有:Serial收集器、parNew收集器、CMS收集器Serial收集器:新生代的单线程收集器,使用一个CPU或者一条收集线程区完成垃圾收集工作,更重要的是,在它运行垃圾收集工作时,不许赞人听其他所有工作线程(stop the world)直到他收集结束。他依然是虚拟机运行在Client模式下的弄人新生代收集器。优点:简单高效。采用的算法是复制算法。parNew收集器:...原创 2019-06-08 17:51:19 · 109 阅读 · 0 评论 -
类集部分总结
ArrayList与LinkedList还有Vector的关系相同点:三者都是List接口下的实现类;ArrayList与Vector底层都是用数组实现的,LinkedList是基于链表实现的。不同点:1)ArrayList采用懒加载模式,在第一次添加元素时开始初始化数组,初始化大小为10;扩容策略是扩容为原来的数组长度的1.5倍;线程不安全,效率较高。2)Vactor在创建对象时就进行初...原创 2019-07-24 22:20:07 · 173 阅读 · 0 评论 -
HashMap源码理解与ConcurrentHashMap了解
HashMap源码分析HashMap底层基于红黑树+hash表;extends AbstractMap,实现了clonable和序列化接口有两个参数影响性能:负载因子和初始容量static final float DEFAULT_LOAD_FACTOR = 0.75f;负载因子,默认为0.75;经过科学计算的值;如果大于0.75会增加哈希表的利用效率,但是会增大哈希冲突的概率;小于0.75...原创 2019-07-25 12:33:32 · 113 阅读 · 0 评论 -
小型网上超市购物项目
项目功能:用户验证登陆(用户需要特定用户名和密码登陆才能进行购物)商品的增删改查商品加入购物车、在订单上商品的修改(加购物车和修改因为关系到新商品品加入订单,因此要判断商品货架集合中是否有该商品)删除订单上的商品对订单的下载(订单下载的清单里计算出整个订单的金额)能退回菜单栏订单的取消项目功能验证:项目总结:通过所学的Java集合框架、I/O以及其他基础知识来完成这个项目...原创 2019-07-31 15:34:17 · 633 阅读 · 0 评论 -
Java多线程1:线程的创建、synchronized的优化、死锁
线程与进程的区别:从根本来看:进程是操作系统分配资源的基本单位;线程是任务调度和执行的基本单位开销方面:每个进程都有自己独立的代码和数据空间,进程之间的切换有交大的开销;而一个线程类共享代码和数据空间,每个线程有独立的运行栈和程序计数器,线程间的切换开销较小。所处环境:操作系统中可以同时开启多个进程,(可以理解为开启一个app),而一个进程中可以同时开启多个线程(可以理解为在一个app中一...原创 2019-08-04 19:50:55 · 148 阅读 · 0 评论 -
性能测试框架
项目名称:Survival_of_fittest 性能测试框架项目背景:排序是我们常用的算法,并且有多种排序的实现,而真正的特定情况下那种排序方式更胜一筹我们应该通过实践数据来说明;快排的优化有很多种;到底那种更快?自己写的算法和系统提供的算法的速度差多少?这些都可以设计一个性能测试的框架来帮我们测试,通过测试结果也能很好地激励我们去优化他们。项目技术栈:反射的使用;反射获取一个类对象...原创 2019-07-31 19:25:55 · 323 阅读 · 0 评论 -
深入理解多线程:ThreadLocal
ThreadLoacal:线程内局部变量,对于一个相同的代码模块,每个线程访问的时候代码模块内的变量互不干扰,互不影响。相当于为每个线程创建一个单独变量的副本,相当于private static类型变量。在多线程中保证各个线程里的变量独立于其他线程的变量。目的是解决变量在单个线程内部变量的传递问题,ThreadLocal修饰的变量多个线程之间不共享,不存在安全性问题,所以它并不是解决多线程之间的...原创 2019-08-04 22:13:21 · 260 阅读 · 0 评论 -
基于Socket实现的局域网多线程聊天室
项目功能:使用线程池创建多个线程,一个线程就是一个客户端的连接;客户端能够实现注册、群聊、私聊以及退出的功能;服务器端用Map保存多个客户端和消息;群聊就是将map集合遍历,将消息发送给每个客户端(把Map转为Set,取得迭代器,取得每个实体)私聊就是取得对应的socket退出使用迭代器移除项目技术栈:Java I/O;线程池;类集的使用;Java基础知识的应用项目源码:Hea...原创 2019-07-31 21:50:32 · 614 阅读 · 0 评论 -
Java实现死锁
死锁的实现一个线程等待另一个线程执行完毕后才可以继续执行,但如果现在相关的线程彼此都在等待着,那么就会造成死锁。一定要注意对资源的上锁不要成“环”。避免死锁:1.按照顺序加锁,但是这种方式必须要事先知道你所要用到的所有锁并且要对这些锁排序。不是很常用,因为一般无法预知。2.加锁时限:在尝试获取锁的时候加一个超时时间,超过这个时间就放弃。但是Java中不能对synchronized同步块设...原创 2019-07-27 21:58:08 · 217 阅读 · 0 评论 -
JVM加载class文件的原理机制;双亲委派模型
由于Java是一种动态解释型语言,所以class只有被加载到JVM中后才能运行。运行一个程序,JVM将编译生成的.class文件按照一定的需求和规则加载到内存中,并组织成为一个完整的Java应用程序。而加载的过程是类加载器完成的,类加载器本身也是一个类,实质就是把类文件从硬盘读取到内存中。类的加载方式:1.隐式加载:new操作创建对象时会隐式调用类加载器将类加载到JVM中,2.显示加载:通过直...原创 2019-08-01 15:51:23 · 369 阅读 · 0 评论 -
idea部分干货
制定项目存放位置以及项目名称进入help>about查看破解到的日期隐藏配置文件:File>settings>editor>file types>ignore files and floders在下面的方框里添加想要忽略的项目名称,加一个分号表示结束,添加好后点apply。运行方式:1.点击菜单栏绿色运行箭头2.点击鼠标右键,通过菜单中的选项来执行。(ctrl+...原创 2019-01-20 13:16:22 · 214 阅读 · 0 评论