- 博客(160)
- 资源 (15)
- 收藏
- 关注
转载 Java PDFBox提取PDF中字符的坐标或位置
为了提取 pdf 中字符的坐标或位置和大小,我们将扩展 PDFTextStripper 类,拦截并实现 writeString(String string, List textPositions)方法。org.apache.pdfbox.contentstream 类。PDFTextStripper 去除所有文本。writeString() 方法中的List 包含有关字符的信息,例如是否其 Unicode、字符的 X 坐标、Y 坐标、高度、宽度、x 缩......
2022-06-23 14:53:58
5460
转载 JVM保守式GC(区分引用和基本数据)
HotSpotJVM在进行GC回收的时候,采用的是可达性分析法来对对象进行标记的,可达性分析法是从GC Roots出发(注意是GC Roots说明是有多个GC Root),当某个对象到GC Roots没有任何引用链时,则该对象判定为可回收对象(当然如果该对象重写过finalize()方法的话 还会有一次自我拯救的机会,会先将该对象放入一个F-Queue对象中)。不得不说,可达性分析法是一个非常不错的方法,能够解决引用计数法中相互引用而导致无法回收的问题。 从上面的描述中,我...
2021-11-12 23:20:08
1070
转载 Java线程池种类及关键参数
在Java编码的过程中,我们经常会创建一个线程来提高程序的执行效率,虽然这样实现起来很方便,但是会有一个问题:如果并发的线程数多,并且每个线程都是执行一个时间很短的任务就结束了,这样会造成频繁的创建和销毁线程从而导致降低系统的效率。那么问题来了,有没有办法可用复用创建好的线程呢,也就是线程执行完一个任务后,不被销毁,继续执行其他的任务?在Java可以通过线程池来实现这样的效果。下面从三个方面和大家一起来探讨一下Java线程池相关的内容:Java中的ThreadPoolExecutor类 Java中
2021-09-01 20:50:02
1162
转载 juc包下四大并发工具
1.juc.CountDownLatch 闭锁一个线程在等待一组线程后再恢复执行await()等待其他线程执行完毕被等待线程执行完毕后计数器-1如何知道其他线程执行完了?计数器,若一组线程为,CountDown为5,减到0代表等待线程被全部执行完毕一次性工具:当Countdown的值减到0的时候再也无法恢复juc内部的代码都是lock体系来实现的import java.util.concurrent.CountDownLatch;import java.util.conc
2021-08-31 23:38:40
338
转载 Java原子类及内部原理
一、引入 原子是世界上的最小单位,具有不可分割性。比如 a=0;(a非long和double类型) 这个操作是不可分割的,那么我们说这个操作是原子操作。再比如:a++;这个操作实际是a = a + 1;是可分割的,所以他不是一个原子操作。非原子操作都会存在线程安全问题,需要我们使用同步技术(sychronized)来让它变成一个原子操作。 但是,像i++这种非原子操作,我们除了使用synchroinzed关键字实现同步外,还可以使用java.util.concurre...
2021-08-31 23:22:15
237
转载 消息队列使用的四种场景介绍
一、简介消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题实现高性能,高可用,可伸缩和最终一致性架构使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ二、消息队列应用场景以下介绍消息队列在实际应用中常用的使用场景。异步处理,应用解耦,流量削锋和消息通讯四个场景2.1异步处理场景说明:用户注册后,需要发注册邮件和注册短信。传统的做法有两种 1.串行的方式;2.并行方式(1)串行方式:将
2021-08-11 22:10:59
6791
转载 缓存与数据库一致性之一:缓存更新设计
一、缓存更新场景介绍缓存是一种提高系统读性能的常见技术,对于读多写少的应用场景,我们经常使用缓存来进行优化。例如对于用户的余额信息表account(uid, money),业务上的需求是:(1)查询用户的余额,SELECT money FROM account WHERE uid=XXX,占99%的请求(2)更改用户余额,UPDATE account SET money=XXX WHERE uid=XXX,占1%的请求由于大部分的请求是查询,我们在缓存中建立uid到money的键值
2021-08-09 20:56:21
223
转载 怎么保证 缓存和数据库中的数据一致
你只要用缓存,就可能会涉及到缓存与数据库双存储双写,你只要是双写,就一定会有数据一致性的问题,那么你如何解决一致性问题?首先需要考虑到:更新数据库或者更新缓存都有可能失败,在这种前提下分析业务带来的影响。 一般来说,如果允许缓存可以稍微的跟数据库偶尔有不一致的情况,也就是说如果你的系统不是严格要求“缓存+数据库” 必须保持一致性的话,最好不要做这个方案,即:读请求和写请求串行化,串到一个内存队列里去。 串行化可以保证一定不会出现不一致的情况,但是它也会导致系统的吞吐量大幅度降低,用比正常情.
2021-08-08 22:39:37
965
原创 单例模式的八种写法
1、饿汉式(静态常量)[可用]public class Singleton { private final static Singleton INSTANCE = new Singleton(); private Singleton(){} public static Singleton getInstance(){ return INSTANCE; }}优点:这种写法比较简单,就是在类装载的时候就完成实例化。避免了线程同步问题。缺点
2021-08-02 14:54:22
634
转载 RabbitMQ简介及其六种工作模式
本文参考自:https://blog.youkuaiyun.com/kavito/article/details/91403659https://www.cnblogs.com/zpKang/p/13599813.html什么是消息队列MQ全称为Message Queue,即消息队列。“消息队列”是在消息的传输过程中保存消息的容器。它是典型的:生产者、消费者模型。生产者不断向消息队列中生产消息,消费者不断的从队列中获取消息。因为消息的生产和消费都是异步的,而且只关心消息的发送和接收,没有业务逻辑的侵入,
2021-07-14 11:45:06
875
转载 MYSQL的分区字段,必须包含在主键字段内
MYSQL的分区字段,必须包含在主键字段内在对表进行分区时,如果分区字段没有包含在主键字段内,如表A的主键为ID,分区字段为createtime ,按时间范围分区,代码如下:CREATE TABLE T1 ( id int(8) NOT NULL AUTO_INCREMENT, createtime datetime NOT NULL, PRIMARY KEY (id)) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET
2021-07-14 09:52:19
3347
转载 springboot整合多数据源以及多数据源中的事务处理
前言本篇文章主要介绍的是springboot整合多数据源以及多数据源事务处理。多数据源就是在同一个项目中连接多个数据库,使用多个数据库可能是由于业务量扩大进行数据库拆分,也可能是根据项目实际情况需要连接多个数据库。比如我之前有个项目,需要访问一个已有的数据库进行查询操作,但不能修改,还需要新建数据库表进行其他的业务处理,这时就需要使用多数据源。GitHub源码链接位于文章底部。创建数据库创建member数据库,添加一张user表,字段为id主键自增,name,age;创建order数据库
2021-05-18 15:58:20
1870
1
转载 POST/GET请求中RequestBody和RequestParam的应用场景
POST请求时@RequestBody --> JSON字符串部分@RequestParam --> 请求参数部分application/json格局图图一.pngform-data、x-www-form-urlencoded格局图图二.png1、从content-type方面总结:① form-data、x-www-form-urlencoded:不可以用@RequestBody;可以用@RequestParam。见postman的格局,这两...
2021-05-17 10:40:58
2120
转载 SpringBoot中RedisTemplate订阅发布对象
解说RedisMessageListenerContainer Redis订阅发布的监听容器,你的消息发布、订阅配置都必须在这里面实现 * addMessageListener(MessageListenerAdapter,PatternTopic) 新增订阅频道及订阅者,订阅者必须有相关方法处理收到的消息。 * setTopicSerializer(RedisSerializer) 对频道内容进行序列化解析MessageListenerAdapter 监听适配器 MessageListe
2021-05-14 15:59:05
1501
转载 K8S健康检查--探针
参考链接https://segmentfault.com/a/1190000021402257https://jimmysong.io/kubernetes-handbook/guide/configure-liveness-readiness-probes.htmlhttps://www.jianshu.com/p/d87a50272310背景:在k8s部署服务的时候,会出现pod是running状态,也可以进入到容器中,但是服务端口没有起,尤其再是小组件,没有受到关注的情况下,就.
2021-05-11 14:23:02
747
转载 Java:多线程中的volatile
一、为什么使用volatile首先,通过一段简单的代码来理解为什么要使用volatile: 1 public class RunThread extends Thread{ 2 private boolean isRunning = true; 3 public boolean isRunning(){ 4 return isRunning; 5 } 6 7 public void setRunning(boolean isRunnin
2021-03-01 11:36:22
256
转载 volatile关键字的用法
关键字volatile的主要作用是使变量在多个线程间可见,强制从公共堆栈中取得变量的值,而不是从线程的私有数据栈中取得变量的值。这么说很难理解,我们直接看代码例子来说明。创建一个RunThread.java的类如下:运行类Run代码如下:public class RunTest { public static void main(String[] args){ try { RunThread thread = new RunThread();
2021-02-25 08:43:40
425
转载 MyBatis:使用MyBatis执行SQL多出LIMIT ?的问题,MyBatis分页查询SQL自动执行SELECT count(0)的Bug,PageHelper.clearPage()清理缓存
情景:1.在使用MyBatis执行SQL(包含分页功能)的时候,明明SQL里没写LIMIT,执行时却多出了一个LiMIT。2.在使用MyBatis执行SQL的时候,明明SQL里写的是SELECT * ...,执行时却执行了SELECT count(0)...,后文中对此Bug进行说明。解决方案:分页查询数据之前先清理分页缓存。先执行PageHelper.clearPage();SQL代码如下:发现SQL中并没有LIMIT。查询结果仅一页,期望的结果是多页。查..
2021-02-23 16:50:42
6224
3
转载 Mybatis中进行批量更新
一.更新多条数据,每条数据都不一样背景描述:通常如果需要一次更新多条数据有两个方式,(1)在业务代码中循环遍历逐条更新。(2)一次性更新所有数据(更准确的说是一条sql语句来更新所有数据,逐条更新的操作放到数据库端,在业务代码端展现的就是一次性更新所有数据)。两种方式各有利弊,下面将会对两种方式的利弊做简要分析,主要介绍第二种方式在mybatis中的实现。1.逐条更新(java实现)这种方式显然是最简单,也最不容易出错的,即便出错也只是影响到当条出错的数据,而且可以对每条数据都比较可控,更新失败
2021-02-23 16:29:35
2452
原创 (1)MySQL之并发控制与事务
1.共享锁(读锁)与排他锁(写锁) 同一时刻多个用户并发读取数据不会存在什么问题,因为读取不会修改数据,但是如果一个用户正在读取某个数据,而另一个用户又在修改这个数据,就会产生不确定的结果,这就涉及到并发控制。 在处理并发读的或者写时,可以通过实现一个由两种类型的锁组成的锁系统来解决,这两种类型的锁通常就被称为共享锁和排他锁,又叫做读锁和写锁。其中,读锁是共享的,多个用户可以在同一时刻读取同一个资源而互不干扰,写锁则是排他的,也就是说一个写锁会阻塞其他的写锁和读锁,只有这...
2020-12-22 19:42:40
198
转载 mybatis 报错:Caused by: java.lang.NumberFormatException: For input string
mybatis的if标签之前总是使用是否为空,今天要用到字符串比较的时候遇到了困难,倒腾半天,才在一个论坛上找到解决方法。笔记一下,如下:转自:https://code.google.com/p/mybatis/issues/detail?id=262错误描述:<select id="sltTreatment" resultType="com.vitaminmd.sunny.core.bo.Treatment"> select * from trea
2020-12-03 20:55:14
1020
转载 SpringBoot项目中前端页面通过URL访问本地文件夹(访问静态文件)
前端页面通过URL访问本地文件夹在application.yml中添加配置 实现WebMvcConfigurer接口 前端页面中进行访问前端页面通过URL访问本地文件夹 因为SpringBoot项目中使用的嵌入Tomcat,所以前端页面不能像以前那样直接将从Tomcat很目录访问文件。解决办法:继承WebMvcConfigurer接口对访问URL进行拦截,然后将访问文件的URL映射至本地文件夹1.在application.yml中添加配置首先在本地创建文件夹acc...
2020-09-04 17:21:53
3575
转载 Java中mongodb使用MongoCollection和BasicDBObject条件查询
本文转自:https://www.cnblogs.com/richard-ju/p/L2018006.html//链接数据库 MongoClient mongoClient = new MongoClient( "172.26.xxx.xxx" , 27017 ); MongoDatabase mongoDatabase =mongoClient.getDatabase("xxxx"); MongoCollection<Document>...
2020-05-22 10:28:59
2653
转载 【PageHelper分页】实现拦截pageNum和pageSize
本文转自:https://blog.youkuaiyun.com/tr1912/article/details/80525621 我们在使用pageHelper的时候,总是需要往后端传pageNum和pageSize,以便我们在后面做分页处理,但是我们在controller中也需要在方法参数中接收并带到我们的数据查询层,中间基本对于这两个变量没有任何操作,这样做是在的很麻烦。今天我们写一个拦截,让这两个变量可以直接从请求中直接到我们的查询层,跳过从controller层到service层的艰辛。一...
2020-05-19 08:50:27
5335
转载 Mybatis调用MySQL存储过程(返回参数,单结果集,多结果集)
一、接收一个返回值使用Map接收返回参数,output参数放在传入的param中创建表:DROP TABLE IF EXISTS `demo`;CREATE TABLE `demo` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=32 DEFAULT CHARSET=utf8;-...
2020-05-14 21:01:46
2217
转载 Thymeleaf直接调用后台Service之${@serviceBean.doSomething()}
方法说明:thymeleaf的官方文档中提到了${@myBean.doSomething()}可以访问容器中bean的数据。前端thymeleaf写法:<label>性别: </label> <select name="status" th:with="type=${@dict.getType('sys_sex')}"> <option value="">--请选择--</option> ...
2020-05-13 14:41:03
2591
2
转载 MySQL分类统计数量
比如我表test里面有id,mc,xh三个字段(分别是自动编号,钢材名称(若干种),钢材型号(大号,中号,小号))id mc xh 1 钢管 大号2 铜管 大号3 铁管 小号4 铝管 中号5 钢管 小号我现在要分别统计出“mc”里面的各种型号的东西有多少。意思是:我要统计钢管,铜管,铁管,铝管的大,中,小号各有多少条记录。并且mc里面
2020-05-12 11:23:07
8223
7
转载 Springboot中前端传同属性名多对象的处理
本文转自:https://blog.youkuaiyun.com/selina5288/article/details/88167939在开发过程中我们经常会遇到表单提交数据时,具有相同属性名的两个对象。先创建两个对象,用户和产品public class User { private Integer id; private String name; public In...
2020-04-30 17:13:10
1917
转载 CSS样式——字体垂直、水平居中
本文转自:https://www.cnblogs.com/huchong/p/7875127.html<div class="tt">啦啦啦</div>.tt{ padding: 0px; width:500px; height:200px; text-align:center; background-color:#F69;...
2020-04-06 15:14:00
833
转载 Elasticsearch 6.4基本操作-Java版
本文转自:https://www.cnblogs.com/swordfall/p/9981883.html1. Elasticsearch Java API有四类client连接方式TransportClient RestClient Jest Spring Data Elasticsearch其中TransportClient和RestClient是Elasticsearch原生...
2020-04-01 14:36:19
826
转载 前后端分离项目,如何解决跨域问题
本文转自:http://www.imooc.com/article/292349SpringBoot实战电商项目mall(20k+star)地址:https://github.com/macrozheng/mall摘要跨域资源共享(CORS)是前后端分离项目很常见的问题,本文主要介绍当SpringBoot应用整合SpringSecurity以后如何解决该问题。什么是...
2020-03-17 19:06:00
955
转载 Elasticsearch:Java使用批量操作bulk及注意事项
1.BulkRequest对象可以用来在一次请求中,执行多个索引、更新或删除操作且允许在一次请求中进行不同的操作,即一次请求中索引、更新、删除操作可以同时存在BulkRequest bulkRequest = new BulkRequest();bulkRequest.add(new DeleteRequest("posts", "doc", "300"));bulkRequ...
2020-03-02 11:05:24
7542
转载 Elasticsearch索引Index API(7.5.0)
本文转自:https://www.cnblogs.com/ruhuanxingyun/p/11429347.html1. Java代码层配置模板,执行成功将打印自定义的放置模板成功几个字,可前往官网地址:https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/java-rest-high-put-templa...
2020-02-19 20:46:00
2413
1
原创 Mybatis处理select中where后面的and的两种方式
第一种方式:后面跟1=1,使条件绝对成立:<select id="selectStudent"> select * from student where 1=1 <if test=" id !=null and id !='' "> and id = #{id} </if> <if test=" name !=null and name...
2020-02-07 15:14:31
19968
2
转载 通过命令行查看MySQL配置参数、状态优化MySQL性能
本文转自:https://blog.youkuaiyun.com/demonson/article/details/80103204mysql的监控方法大致分为两类:1.连接到mysql数据库内部,使用show status,show variables,flush status 来查看mysql的各种性能指标。2. 直接使用mysqladmin查看其性能指标,例如:UserParameter=my...
2020-01-20 19:19:11
3338
转载 Python获取时间段内的随机时间和时间戳(列表等)
本文转自:https://blog.youkuaiyun.com/Chihwei_Hsu/article/details/83589309获取两个时间点间的随机时间&时间戳方案一# python2 不兼容,python3正常import datetime,randomdef randomtimes(start, end, n, frmt="%Y-%m-%d"): stime =...
2020-01-16 15:57:58
4010
1
转载 VUE中iview table组件和page分页组件简单组合使用
本文转自:https://segmentfault.com/a/1190000010392169最近在iview交流群里,有人问过分页怎么使用?iview的列表示例里面暂时还未有列表和分页的组合,所以暂时做了一个简单列表和简单分页的组合,供大家参考。模板<template> <div> <Table :columns="hist...
2019-12-10 20:20:54
2681
转载 HTML页面中设置同行元素垂直居中
Using Flexbox to set vertical centre easily 当我们用CSS设置HTML页面布局的时候,经常会遇到需要将若干Elements水平或者垂直对齐的情况。对我来说,水平对齐还比较容易处理,但是垂直对齐,尤其是在浮动float布局上将同一行的不同高度的元素垂直居中排列,常常让我头疼不已。如果你还没有被这样的痛苦折磨过,那么你很幸运,因为现在有了更...
2019-12-09 10:22:00
1267
转载 SpringBoot中Service层事务控制
SpringBoot中使用事务比较简单,在Application启动类上添加@EnableTransactionManagement注解,然后在service层的方法上添加@Transactional注解@Transactional属性属性 类型 描述 value String 可选的限定描述符,指定使用的事务管理器 propagation enum...
2019-11-29 14:18:07
8917
1
转载 Vue项目中mock.js的使用(前端数据模拟)及基本用法
官方网址:http://mockjs.com/mockjs是用来模拟产生一些虚拟的数据,可以让前端在后端接口还没有开发出来时独立开发。我们可以使用真实的url,mockjs可以拦截ajax请求,返回设定好的数据。1.使用方式这里主要讨论在vue项目中,使用axios发送ajax请求,mock.js模拟数据的流程。vue-cli搭建项目后,在项目中安装axios和mock.js...
2019-11-26 11:28:22
6950
1
cryptography-2.8-cp27-cp27m-manylinux1_x86_64.whl
2020-03-09
MySQL数据库的ODBC驱动安装包(32位和64位Windows系统)
2018-02-10
MySQL数据库驱动程序JAR包(JDBC访问数据库)
2018-02-09
libsvm工具箱
2018-02-09
吴恩达斯坦福公开课机器学习的讲义+课后作业+答案
2017-10-20
sl4a_r6.apk
2017-09-23
Python语言程序设计(梁)Introduction to Programming Using Python.rar
2017-07-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人