- 博客(35)
- 问答 (1)
- 收藏
- 关注
原创 生产者与消费者的实现
生产者与消费者的实现一到多个线程充当生产者,生产元素。一到多个线程充当消费者,消费元素。在两者之间插入一个队列充当缓冲区,建立起生产者和消费者的松散耦合。正常情况下,即生产元素的速度和消费元素的速度差不多时,生产者和消费者其实是不需要去关注对方的。生产者可以一直生产,因为队列里总是有空间。消费者可以一直消费,因为队列里总是有元素。即达到一个动态的平衡。但在特殊情况下,比如生产元素的速度很...
2020-03-23 11:10:03 223
原创 CyclicBarrier并发工具类(三)
CyclicBarrier让一组线程达到某个屏障(同步点)被阻塞,一直到组内最后一个线程达到屏障时,屏障开放,所有被阻塞的线程会继续运行;两种构造方法CyclicBarrier(int parties);//parties表示屏障拦截的线程数量CyclicBarrier(int parties, Runnable barrierAction),屏障开放,其中barrierAction...
2019-08-04 21:05:14 124
原创 CountDownLatch并发工具类(二)
CountDownLatch1. countDownLatch 简介CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他countDownLatch中的线程里执行完后再执行其他等待的线程。举例:要求主线程等待10个同样步骤的线程执行完后,主线程才继续执行下面的任务。任务开始时,就需要将10个线程放入计数器countDownLatch中,主线程等待,直到10个...
2019-08-04 14:57:34 448
原创 Fork\Join分而治之--RecursiveTask和RecursiveAction(一)
fork/join 分而治之1.什么是Fork/join框架?从JDK1.7开始,Java提供Fork/Join框架用于并行执行任务。它的思想就是讲一个大任务分割成若干小任务,最终汇总每个小任务的结果得到这个大任务的结果。如下图:2.什么是分而治之思想可以简单的理解为:将规模为N的问题,当N<阈值,直接解决;当N>阈值,将N分解为K个小规模子问题,子问题互相对立,与原问题形式...
2019-07-30 10:13:23 1471
原创 谈谈显示锁Lock和Synchronized
Lock接口和synchronized的比较Lock是一个接口,而synchronized是java的一个关键字。Lock适用于以下场景:获取锁可以被中断interrupt,超时获取锁,尝试获取锁trylock,读多写少用读写锁。而synchronized就不是可中断锁。synchronized和ReentrantLock都是可重入锁。Lock一定要将同步代码块用try catch包起来...
2019-08-06 17:11:17 244
原创 原子操作CAS
原子操作CAS今天给大家介绍原子类操作,原子操作CAS是一种非阻塞的、线程安全的,相对于阻塞的synchronized同步锁性能更好,在多线程同时更新一个变量,可能造成更新后的值不准确。synchronized会保证多线程不会同时更新一个变量。Jdk1.5增加了java.util.concurrent包,这个包中的原子操作类就为我们提供了一种性能高效、线程安全地更新一个变量的方式。 看看jdk...
2019-08-05 15:33:31 194
原创 Callable、Future和FutureTask (五)
Callable、Future和FutureTask通常大家都知道创建线程的方式主要是继承Thread和实现Runable接口,下面为大家介绍第三种方式,实现Callable接口。Callable只能在ExecutorService的线程池中跑,并且有返回结果,也可以通过返回的Future对象查询执行状态(Future 本身也是一种设计模式,它是用来取得异步任务的结果)。结构图Futu...
2019-08-05 10:02:03 381
原创 Semaphore并发工具类(四)
SemaphoreSemaphore是一种在多线程中的信号量,主要协调各个线程,以保证它们能够正确、合理的使用公共资源的设施,也是操作系统中用于控制进程同步互斥的量。Semaphore是一种计数信号量,用于管理一组资源,内部是基于AQS的共享模式。它相当于给线程规定一个量从而控制允许活动的线程数,可以理解为与数据库连接池一样的,最多允许多少个线程拿到锁资源,其余的就等待锁资源的释放。Sem...
2019-08-05 09:39:21 140
原创 MySQL,tomcat并发默认值
MySQL的默认并发数:100MySQL建议最多连接不超过1000,根据自身服务器来设置,MySQL的最大连接:16384;tomcat的默认并发是:150一般Tomcat建议设置500并发,超过700就可能导致并发问题...
2019-07-22 10:43:50 544
原创 java数据库连接池的实现
java数据库连接池的实现今天我们模拟实现数据库连接池的功能:连接池比较典型的应用有数据库的连接池,数据库连接是一种关键的有限的昂贵的资源,连接是有限的,这一点在多用户的网页应用程序中体现得尤为突出。 一个数据库连接对象均对应一个物理数据库连接,每次操作都打开一个物理连接,使用完都关闭连接,这样造成系统的 性能低下。数据库连接池的解决方案是在应用程序启动时建立足够的数据库连接,并讲这些连接...
2019-07-22 10:33:40 416 3
转载 mysql通用日志以及慢日志
MySQL中的日志包括:错误日志、二进制日志、通用查询日志、慢查询日志等等。这里主要介绍下比较常用的两个功能:通用查询日志和慢查询日志。1)通用查询日志:记录建立的客户端连接和执行的语句。2)慢查询日志:记录所有执行时间超过long_query_time秒的所有查询或者不使用索引的查询(1)通用查询日志在学习通用日志查询时,需要知道两个数据库中的常用命令:1) showvari...
2019-07-22 09:13:05 113
原创 office在线word、excel预览
在线预览 http://view.officeapps.live.com/op/view.aspx?src=文件地址通过拼接的地址即可实现office 的在线预览 需要注意的是office 在线预览限制:文档访问地址不能直接使用 ip,需要通过域名访问,并且端口必须是 80 端口文档的格式(必须为以下格式之一): Word:docx、docm、dotm、dotx Excel:xls...
2018-12-25 16:26:34 1840
转载 MYSQL数据库导出和备份----mysqldump
1. 介绍在日常维护工作当中经常会需要对数据进行导出操作,而mysqldump是导出数据过程中使用非常频繁的一个工具。 它自带的功能参数非常多,文章中会列举出一些常用的操作,在文章末尾会将所有的参数详细说明列出来。在日常运维工作中,对mysql数据库的备份是万分重要的,以防在数据库表丢失或损坏情况出现,可以及时恢复数据。下面我将分成三节来讲解mysql数据库备份和恢复的相关操作:2.常见mys...
2018-12-18 15:10:33 564
原创 鼠标移入或者移出的悬浮框实现
鼠标移入时显示悬浮框: 悬浮框代码:<div class="flex-model"> <p class="title">管理</p> <p>您的正确率:22</p> <p>年级平均正确率:55</p></div>悬浮框的不
2018-06-21 11:56:57 2970
原创 页面分为左右两侧div里使用display:flex;实现
将页面分为左右两侧(或者多侧)的栏目的的页面实现借鉴display属性规定元素应该生成的框的类型。布局可以借鉴flex的格式。举例如下:<div style="display:flex;padding-top:30px;height: 360px"> <div class="left-model"></div> <div class="righ...
2018-06-21 11:38:11 8979
原创 电脑远程传输操作
1.通过mstsc命令: mstsc /v 端口号 如:mstsc /v 192.168.2.1202.虚拟映射电脑1).点击我的计算机。找到“映射网络驱动器”;2).输入命令: \\ip服务\\映射位置 如 \\192.168.2.120\d$ (表示映射到d盘目录下。记得加上美元符)...
2018-04-28 10:17:14 268
原创 查询linux某个进程号
查看进程号:ps -ef查看Java进程号:ps -ef | grep javanetstat -lntp # 查看所有监听端口netstat -antp # 查看所有已经建立的连接查看应用端口:查看nginx的进程:ps aux | grep nginx...
2018-04-25 10:53:54 1367
原创 Intelij IDEA常用快捷键
总结快捷键:1编辑快捷键Ctrl+Z 撤销Ctrl+Shift+Z 重做(恢复)Shift+F6,重构 - 重命名Ctrl+X,删除行Ctrl+D,复制行Ctrl+Shift+U,大小写转化Ctrl+Y,删除当前行Shift+Enter,向下插入新行Alt+Insert,可以生成构造器/Getter/Setter等Ctrl+Alt+T,可以把代码包在一个块内,例如:try/catchCtrl+Sh...
2018-03-12 15:16:24 348
转载 jvm内存模型
1 JVM内存模型2 程序计数器(PC)每个线程都会有自己私有的程序计数器(PC)。可以看作是当前线程所执行的字节码的行号指示器。也可以理解为下一条将要执行的指令的地址或者行号。字节码解释器就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、 循环、 跳转、 异常处理、 线程上下文切换,线程恢复时,都要依赖PC.如果线程正在执行的是一个Java方法,PC值为正在执行的虚拟机字节码指令...
2018-03-09 15:42:50 220
转载 linux常用命令--查看文件和系统操作
一、查看日志命令 cat 、 tail -f1.查看日志,从第一行开始 cat (目录)文件 cat filename : 一次性显示整个文件内容; cat > filename: 创建一个新文件并编辑内容(ctrl+c结束编辑),不能编辑已有文件 cat file1 file2 > file:...
2018-03-05 11:01:58 2564
转载 快速理解乐观锁和悲观锁
乐观锁与悲观锁乐观锁乐观锁(Optimistic Lock),顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号等机制。乐观锁适用于多读的应用类型,这样可以提高吞吐量,像数据库如果提供类似于write_condition机制的其实都是提供的乐观锁。CAS便是乐观锁技术,当多个线程尝试使用CAS同时更新...
2018-02-24 17:34:28 193
原创 CKEditor工具栏自定义配置
CKEditor中的工具栏默认显示所有功能按钮。出于安全的原因、或者是简化的原因,需要对这个工具栏进行自定义设置。CKEditor工具栏自定义配置非常简单。编辑ckeditor目录下的的config.js文件,默认的是下面的工具栏代码:工具栏的定义英汉对照说明:Source = 源码模式-Save = 保存(提交表单)NewPage = 新建Preview = 预览- = 分割线Templates...
2018-02-13 13:41:28 3924
原创 CKEditor上传图片
CKEditor作为老牌开源的优秀在线编辑器,一直受到开发者的青睐,由于CKFinder的图片上传和视频上传要收费,所以没有采用其ckfinder搭配使用。这里我们讲解下 ckeditor最新版本4.8的图片上传配置。 https://ckeditor.com/download1.开启图片上传界面文件地址:ckeditor/plugins/image/dialogs/image.js搜索"Uplo...
2018-02-13 12:49:55 4269
转载 1.8重新认识hashMap
简介Java为数据结构中的映射定义了一个接口java.util.Map,此接口主要有四个常用的实现类,分别是HashMap、Hashtable、LinkedHashMap和TreeMap,类继承关系如下图所示:下面针对各个实现类的特点做一些说明:(1) HashMap:它根据键的hashCode值存储数据,大多数情况下可以直接定位到它的值,因而具有很快的访问速度,但遍历顺序却是不确定的。 Hash...
2018-02-09 10:05:06 193
原创 mybatis中类的属性和表的字段自动关联
mybatis中为了更敏捷开发,实现对象属性和表的字段映射关联,在mybatis-config.xml里加入配置: name="mapUnderscoreToCamelCase" value="true"/> name="logImpl" value="STDOUT_LOGGING" />该配置节省了在dao层的实现xml文件里写resultMap的对象属性与表的字段的映
2018-02-02 18:01:04 1295
原创 The remote end hung up unexpectedly while git cloning
The remote end hung up unexpectedly while git cloning。I think it that's same error with BitBucketmy answer:git config --global http.postBuffer 524288000git config --global http.maxRequestBuff
2018-01-30 17:11:41 243
原创 Linux系统内存日志清理
每当服务器的日志太多,导致内存不足,影响我们正常访问,下面三个步骤方便我们快速定位服务器中分区内存的不足的原因:free -h/-m:可以查看空间使用的大小,可利用的空间还有多少;df -l: 发现可以分区硬盘是否爆满了,于是就知道内存使用问题;du -sh * :一路检查当前分区下的那些文件或者目录的内存占领太多了,过多不必要的代码文件日志可以定期删除或者手动删除;对于Tomca...
2018-01-29 11:56:39 3072
原创 demo的main执行打包
pom的配置如下:(Java的打包方式不支持config在gzip下执行,因此将config加载和lib同一层目录下读取。) spider src/main/java--> --> org.apache.maven.plugins--> maven-compiler-plugin-->
2018-01-19 10:12:03 363
转载 Jenkins服务搭建和部署
jenkins安装,配置,环境部署,项目自动化部署,jenkins+tomcat+maven+jdk配置,一键式部署开发项目
2017-12-28 17:25:54 21858 1
转载 Java设计原则
面向对象的设计,我们通常会涉及到两个元素:接口,类,及他们之间的协作关系。对于接口的设计:需要考虑接口隔离原则对于类的设计:需要考虑类本身的设计,需要考虑类的职责是否单一(单一职责原则);对于有继承关系的类设计,要注意子类是否改变父类的方法,目标是不要改变,子类应该只扩展父类的行为(里氏替换原则,开闭原则),这样才能把将来子类变化时产生的影响缩小到最小的范围。对于协作关系的设计:做顶层的框架设计时...
2017-12-22 16:49:59 317
转载 MYSQL索引--btree和hash的区别
1.hash索引:hash 索引结构的特殊性,其检索效率非常高,索引的检索可以一次定位,不像B-Tree 索引需要从根节点到枝节点,最后才能访问到页节点这样多次的IO访问,所以 Hash 索引的查询效率要远高于 B-Tree 索引。(hash索引通过hash值快速定位,而B-Tree需要从树根到叶子节点查询,因此hash查询效率高于B-Tree)可 能很多人又有疑问了,既然 Hash
2017-12-22 16:14:02 467
转载 mysql索引--使用注意事项
索引使用缺点:虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT,UPDATE和DELETE。因为更新表时,mysql不仅要保存数据,还要保存一下索引文件建立索引会占用磁盘空间的索引文件。一般情况这个问题不太严重,但如果你在要给大表上建了多种组合索引,索引文件会膨胀很宽索引只是提高效率的一个方式,如果mysql有大数据量的表,就要花时间研究
2017-12-22 15:46:21 940
空空如也
Java导出excel如何使用poi实现在同一个单元格既可以插入文字也可以插入多个图片
2017-11-29
TA创建的收藏夹 TA关注的收藏夹
TA关注的人