
-----【基础知识】
北漂小白菜
这个作者很懒,什么都没留下…
展开
-
常用命令
jps -l 查看进程和jar所在位置jps -v查看虚拟机启动jvm参数jstat -gc 7438(进程ID)jstat -gcutil 7438查看gc相关数据。git fetch origin同步远程分支git chekout -b mingzi origin/mingzigit clone -b mingzi origin/mingzigit merge hotfi...原创 2019-10-24 16:53:25 · 249 阅读 · 0 评论 -
轻松的实现excel导出-springboot环境
之前就一直挺反感写excel导入导出的,也不是说实现起来有多难,而是那一连串的建立表格工作簿,然后循环每一列等文件流操作着实让我喜欢不起来呀。一个偶然的机会,看到国人写了一个xxl-excel的中间件,可以直接拿过来就好。nice。话不多说,直接上代码。1.maven依赖需要说明的是,我这边使用的poi依赖是3.17版本的。 <dependency>...原创 2019-06-05 16:42:01 · 990 阅读 · 2 评论 -
线程-线程间通信
近期,公司环境很不稳定,之前招我的元老级别的人物都陆陆续续的离开了公司。里头的那些弯弯绕绕也就不跟大家吐槽了,我还是静静的做好手边的事情,yuanlai闲着无事整理了线程这块的东西。最让我,感觉神奇的就是线程之间的通信。在实现的发现真的是代码如人生。1.使用wait、notify方法实现线程间的通信2.wait和notify必须配合synchronized关键字使用3.wait方法释放...原创 2018-12-07 16:32:34 · 275 阅读 · 1 评论 -
Executor框架
最近在看线程池相关的内容,之前总觉得这块很复杂,难以理解,近来跟打通了任督二脉一样,茅塞顿开。话不多说,直接附上最近的一些些收货。Executor这个线程池框架中,有几个很典型的线程池。 1)newCachedThreadPool 是一个可根据需要创建新线程的线程池,但是在以前构造的线程可用时将重用它们。对于执行很多短期异步任务的程序而言,这些线程池通常可提高程序性能。调用 execut...原创 2018-12-13 16:50:15 · 240 阅读 · 1 评论 -
数组如何判断是否包含某个元素
String[] msgGroupIds = staffMsgGroupId.split(",");if(Arrays.asList(msgGroupIds).contains(staff.getGroupId().toString())){ //这里写自己的业务代码 }主要是利用Arrays.asList().contains()方法实现。其次,当然也可以使用s...原创 2018-11-16 11:10:50 · 420 阅读 · 2 评论 -
定时任务quartz
最近在项目选型的时候,我们遇到了一个场景,由于我们是做传统教育行业的,然后教育行业的新生入学,评教等业务都牵涉到了一个定时任务的需求,刚开始有人提议说直接使用队列,但是后来经过衡量,决定使用quartz这个框架来实现这个定时任务的需求。选它的原因:这个技术已经比较的成熟,也有不少的可供参考的资料,后期好维护。好了,废话不多说,直接进入咱们的正题,quartz这个框架可以原创 2017-08-20 21:39:10 · 530 阅读 · 2 评论 -
线程-单例与多线程
众所周知,单例是只在程序运行的时候只有一个实例,在单线程的情况之下单例很容易实现,但是在多线程的时候,如何做到单例呢?第一种方式就是采取静态内部类,看代码展示:package com.tgb.thread;/** * Created by oxj on 2017/8/12. */public class InnerSingleton { private InnerSingleton()原创 2017-08-12 09:33:54 · 1836 阅读 · 2 评论 -
线程-volatile关键字的弊端
volatile的作用:使变量在多个线程间可见,但是不具备原子性,需要注意的是一般volatile用于只针对多个线程可见的变量操作,并不能代替synchronized的同步功能。实例说话:现如今我有一个数据count,10线程对他进行操作,每个线程在count原有的基础上增加100,理想结果应该是10个线程执行完毕之后count是1000,但是实际情况呢……看代码:package com.tgb.t原创 2017-08-10 11:11:38 · 1549 阅读 · 1 评论 -
线程基础1
线程安全的概念:当多个线程访问某个类(对象或者方法)的时候,这个类始终表现出正确的行为,那么这个类(对象或者方法)就是线程安全的。synchronized:可以在任意的对象以及方法上加锁,实现线程互斥。而加锁的这块代码叫做互斥区或者叫做临界区。当多个线程访问线程的run()方法的时候,以排队的方式进行处理(也就是按照CPU分配的先后顺序而定的,并非咱们所写的代码顺序决定的)。多个线程去尝试拿到锁,只原创 2017-08-09 21:09:58 · 383 阅读 · 1 评论 -
dubbo初体验
最近项目用到了dubbo这块的东西,由于之前没有用过,所以在这里总结总结我这几天学习dubbo的一些认识。首先是看看dubbo官方推出dubbo的宣言:看,人家还强调了自己是分布式高性能透明化的RPC服务框架。 接下来就是dubbo究竟能做些什么?1.透明化的远程方法调用,就像调用本地方法一样调用远程方法,只需简单配置,没有任何API侵入。2.软负载均衡及容错机制,原创 2017-07-09 19:18:49 · 453 阅读 · 1 评论 -
快速排序小结
定义:快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(nlogn)次比较。事实上,快速排序通常明显比其他Ο(nlogn) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来,并且在大部分真实世界的数据,可以决定设计的选择,减少所需时间的二次方项之可能性。快速排序,通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字原创 2017-07-23 19:53:11 · 571 阅读 · 14 评论 -
网络编程
网络编程原创 2017-06-25 19:26:55 · 383 阅读 · 3 评论 -
【线程】--基础知识
线程的概念:线程是进程中独立运行的子任务。(就例如我们打开任务管理器,进程面板中罗列的都是当前机器上运行的进程,例如其中有个正在运行的qq进程,在qq进程中发送文件到手机上面和跟好朋友聊天,这就是两个不同的线程)。 使用多线程的背景:原来的电脑都是单核的,然后需要CPU根据时间片来轮询每个线程,可这样,效率很低下。随着技术的跟新,如今电脑都是多核的,使用多线程可以提升效率节省原创 2017-06-19 10:21:35 · 438 阅读 · 9 评论