- 博客(67)
- 资源 (8)
- 收藏
- 关注
原创 使用jsoup获取微信公众号文章发布时间
从weixin.sogou.com找到的公众号文章,查看源码可以发现,文章的标题,内容,作者,微信号,封面图,都可以轻松获取;但是唯独这个发布时间节点为空,代码如下<em id="publish_time" class="rich_media_meta rich_media_meta_text"></em>既然jsoup节点直接获取不到,那就在script脚本...
2019-12-09 11:24:42
1800
1
转载 JAVA 文件监控 WatchService
概述java1.7中 提供了WatchService来监控系统中文件的变化。该监控是基于操作系统的文件系统监控器,可以监控系统是所有文件的变化,这种监控是无需遍历、无需比较的,是一种基于信号收发的监控,因此效率一定是最高的;现在Java对其进行了包装,可以直接在Java程序中使用OS的文件系统监控器了。使用场景场景一:比如系统中的配置文件,一般都是系统启动的时候只加载一次,如果想修改配...
2019-08-17 10:49:32
335
转载 记录多层代理后获取真实请求IP,来自搜云库
public static String getIpAddr(HttpServletRequest request) { String ipAddress = null; try { ipAddress = request.getHeader("x-forwarded-for"); if (ipAddress == ...
2019-06-22 18:19:53
744
翻译 spring将HTTP请求对象绑定到Thread为该请求提供服务的对象
如果您使用Servlet 2.5 Web容器,并且在Spring之外处理请求 DispatcherServlet(例如,使用JSF或Struts时),则需要注册org.springframework.web.context.request.RequestContextListener ServletRequestListener。对于Servlet 3.0+,可以使用该WebApplication...
2019-02-20 10:02:12
342
原创 Mybatis基础四(Mybatis一级缓存,二级缓存)
Mybatis提供了两个缓存级别:一级缓存,二级缓存。一、一级缓存 我们知道Mybatis一级缓存是框架开启的,是属于一个SqlSession级别的缓存(和数据库会话的缓存也就是说它的作用域是会话范围),所以在一级缓存策略没有失效的情况下,同一个会话的重复查询,mybatis只会执行一次请求。后面的相同查询都会直接使用缓存(Map)的内容。1.1 造成一级缓存失效的情况有四个1.1...
2019-01-27 10:13:34
239
原创 Mybatis基础三(内置参数_parameter,_databaseId)
除了映射接口的方法传递过来的参数外,Mybatis内置了两个参数_parameter,_databaseId。1. _parameter:Mybatis会把方法传递过来的参数封装到该参数中,代表整个参数对象,如果方法传递过来的只有一个简单类型(对应封装类)的参数,如getUser(String name),那么此时_parameter = name,如果传递的是多个参数或引用参数,那么Myba...
2019-01-27 08:43:32
2026
2
原创 Mybatis基础二(获取自增主键的值)
一般情况下,假如我们需要在增加一个主键自增的对象成功后,拿到该对象的自增主键ID,Mybatis也是支持的。关于这部分的知识我们可以看一下JDK原生的接口,java.sql.Statement类中的getGeneratedKesy()接口获取自增主键值。Mybatis的操作如下:1.在insert 语句中使用useGeneratedKeys="true" 属性与keyProperty=...
2019-01-25 22:02:13
385
原创 Mybatis基础一
根据Mybatis官网http://www.mybatis.org/mybatis-3/zh/index.html可以看到使用Mybatis使用的java工程中是非常简单的,提供了两种非常方便的方式:基于XML配置文件方式和基于Java编码方式。不管基于那种方式,要使用Mybatis框架,都必须需要两个基础元素,那就是 数据源(DataSource)和事务管理器(TransationManager...
2019-01-24 11:37:41
168
原创 为什么要使用Mybatis ORM框架?前奏三
1.当我们自己实现java.sql.DataSource类实现一个连接池时,发现虽然减少了数据库连接的创建与销毁,提高了一定的性能,但是由于我们在项目中需要频繁的跟数据库打交道,我们需要更方便的使用数据库连接,于是需要对数据库操作的进行进一步封装,比如对数据库的增删改查操作的基本操作或批量操作,同时还会涉及到事务的提交与回滚、缓存等,而且sql语句与业务代码耦合性太高了,特别是sql语句非常长的时...
2019-01-24 10:52:40
394
原创 为什么要使用Mybatis ORM框架?前奏二
我们知道每执行一次sql语句都需要创建与数据库的链接,这样太消耗性能了,于是下一步就是使用池化技术了。这里说一下数据库连接池的基本实现和原理。连接池本质就是存放已经创建好的固定数量的链接实例,方便后期执行sql语句操作时获取。步骤如下:1.实现java.sql.DataSource接口,然后使用LinkedList存储链接实例即可。为了简单,这里省略了DataSource接口的其他需要...
2019-01-23 17:42:30
596
原创 为什么要使用Mybatis ORM框架?前奏一
1.在使用java编程过程中,如果要将数据库持久化,我们可以选择mysql,oracle,ms sql等存储系统。这里我们选择mysql。2.java要操作mysql数据库,在不使用其他框架的情况下,非常简单。 2.1.首先需要引入mysql官方提供的mysql-connector-java.jar包。 2.2.提供数据库服务的url、user、password即可。简单的操作...
2019-01-23 17:23:47
654
原创 mybatis设置sql执行时间超时时间
存在这样的场景,当一些比较耗时的查询时,如果不中断,则会导致数据库堵塞,进而会拖垮整个数据库服务的正常运行。1.如果你使用的是HikariCP连接池的话,可以在配置文件设置connetion-timeout这个属性(如application.properties)2.如果你使用的是其他链接池,比如tomcat连接池,同时持久化框架用的是mybatis的话,那可以这样设置2.1 在配置文...
2019-01-17 16:13:51
29878
2
转载 构建Maven工程时,指定工程的默认jdk版本
方法一般有两种:1.在构建的工程的pom.xml文件加上(针对指定的maven工程)<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifa...
2019-01-15 22:44:54
1092
1
原创 记一次springboot 中使用redis分布式锁引发的问题
记一次springboot 中使用redis分布式锁引发的问题我们知道spring redis为我们提供了两个非常有用的模板:RedisTemplate,StringRedisTemplate。1.主要分析一下RedisTemplate,我们主要看一下key和value使用的是什么序列化。public void afterPropertiesSet() { super.afterPro...
2018-12-26 11:37:14
907
原创 spring boot 中logback日志输出到RabbitMq中
最近在接口项目开始使用微服务设计构架,使用的是现在流行的spring cloud技术栈。网关做权限,限流,日志记录等前置统一入口。在网关统一记录请求及相应日志,单实例的时候情况下,没有问题,但是想到网关压力比较大,于是决定启动多个实例。但是为了查询日志方便,多实例记录的日志打算不分开,还是记录到同一个文件中(按天分割),看到这里可能有人会问,分布式日志收集,为什么不用ELK呢?我们是有ELK系...
2018-12-18 11:23:21
6077
3
转载 记录使用Nginx做代理后,spring boot 日志获取真实IP
设置NGINX,把真实IP转发过来location / { proxy_pass http://127.0.0.1:8008/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; prox...
2018-12-12 16:20:44
7482
转载 IDEA 中配置文件properties文件中文乱码解决
1.首先我们的IDEA文件编码一般都修改为utf-8(setting-->file encodings--->Global Encoding 和 Project Encoding 都设置为UTF-8)2.对于 Properties 文件,重要属性 Transparent native-to-ascii conversion 主要用于转换 ascii,一般都要勾选,不然 Proper...
2018-10-17 11:18:38
44512
14
原创 spring boot 的maven设置阿里云仓库
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin<...
2018-09-09 21:44:41
15069
原创 工程中同时存在spring cloud Feign 与 Swagger2 时,导致feign注入失败,采坑记
最近开始搭一个分布式框架,同一个模块同时使用了spring cloud feign 和swagger2。工程的pox.xml如下:<!--################## spring cloud component start ####################--> <dependency> <groupId>org.springf...
2018-09-07 11:09:44
3059
2
原创 消息中间件-kafka
一、目前市面上比较流行的注册中心有Zoopeeker、consul、Eureka、etcd。1. Zoopeeker:Apache ZooKeeper is an effort to develop and maintain an open-source server which enables highly reliable distributed coordination. Zoopeep...
2018-06-19 21:45:44
5553
1
原创 IDEA 快速将spring boot项目打包成jar包,简单快速有效
1.spring boot pom.xml清单中的spring-boot-maven-plugin已经包含了我们需简要打包的插件。<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId>...
2018-06-15 09:46:46
4626
3
原创 java this 关键字解说
1.this关键字在什么时候开始存在?当一个对象创建后,Java虚拟机就会为该对象分配一个引用自身的指针,这个指针的名字就是this。所以this不可在static方法或static块中使用,原因是:因为this是在对象创建的时候才存在。2.this关键字代表的是什么?2.1 this在一个对象中,this表示该对象本身。用法如:this(参数列表)表示调用该对象的构造方法。如public cla...
2018-06-14 16:34:17
224
原创 layer 弹出层在提交后关闭,然后刷新父窗口
使用场景是这样的:在用户列表页面,新增一个用户,点击新增的时候弹出一个layer弹出层,在该层完成信息后提交,保存成功后关闭弹出层,然后刷新用户列表。解决方法有两种吧。1.弹出层在提交保存后不关闭,由用户点击关闭,这时候layer可以监测到end事件,在该事件里做刷新列表页面(未测试过)2.提交后根据服务器返回的结果是否保存成功来判断是否要关闭弹出层或刷新列表,一般情况如果返回的结果是
2017-12-01 16:21:28
34547
转载 Spring Boot的启动器Starter详解
Spring Boot的启动器Starter详解Spring Boot应用启动器基本的一共有44种,具体如下:1)spring-boot-starter 这是Spring Boot的核心启动器,包含了自动配置、日志和YAML。2)spring-boot-starter-actuator 帮助监控和管理应用。3)spring-boot-starter-amqp
2017-09-07 21:48:43
315
转载 在一个千万级的数据库查寻中,如何提高查询效率
在一个千万级的数据库查寻中,如何提高查询效率?1)数据库设计方面: a. 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 b. 应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null 可以在num上设置
2017-06-25 14:50:58
1980
1
原创 js时间差
/** * 获取时间差字面量(超过一天返回null) * @param diff 毫秒时间差 * @returns {*} */function getDateDiff(diff){ var day=parseInt(diff / (1000*60*60*24)); if(day>0){ return null; } v
2017-06-23 15:37:52
329
转载 Maven之(六)setting.xml配置文件详解
setting.xml配置文件maven的配置文件settings.xml存在于两个地方:1.安装的地方:${M2_HOME}/conf/settings.xml2.用户的目录:${user.home}/.m2/settings.xml前者又被叫做全局配置,对操作系统的所有使用者生效;后者被称为用户配置,只对当前操作系统的使用者生效。如果两者都存在,它们的内容将被合并,并且用户范围
2017-02-07 09:17:32
504
转载 Netty 使用安全的连接即HTTPS连接
当需要使用安全的连接即HTTPS连接时,需配置SslHandler到ChannelPipeline,SslHandler无需另外写出,调用NETTY封装的即可,传入的SSLEngine在下面生成package com.lin.socket.ssl; import java.security.KeyStore;import java.security.Security; import
2017-01-23 11:08:39
9054
原创 esayUI datagrid根据不同的选择构造不同的表头
// 根据分类选择构造数据表表头function get_columns_arr(){var action_class = $('#q_action_class').val();var columns=new Array();var column={}; //选择商品,加上商品货号if(action_class == 1) {column={}; column[
2017-01-03 17:30:21
472
转载 JAVA IO
流的概念和作用学习Java IO,不得不提到的就是JavaIO流。流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。IO流的分类根据处理数据类型的不同分为:字符流和字节流根据数据流向不同分为:输入流和输出流字符流和字节流
2016-12-20 17:23:26
333
转载 优化mysql
1、选取最适用的字段属性 MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快。因此,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度设得尽可能小。例如,在定义邮政编码这个字段时,如果将其设置为CHAR(255),显然给数据库增加了不必要的空间,甚至使用VARCHAR这种类型也是多余的,因为CHAR(6)就可以很好的完成任务了。同样的
2016-11-26 17:06:21
276
原创 JAVA帮助文档全系列 JDK1.5 JDK1.6 JDK1.7 官方中英完整版下载
JAVA帮助文档全系列 JDK1.5 JDK1.6 JDK1.7 官方中英完整版下载JDK(Java Development Kit,Java开发包,Java开发工具)是一个写Java的applet和应用程序的程序开发环境。它由一个处于操作系统层之上的运行环境还有开发者编译,调试和运行用Java语言写的applet和应用程序所需的工具组成。 JDK(Java Development K
2016-10-21 09:43:23
682
转载 java socket 套接字通信
对于这种服务端或客户端接收中文乱码的情况通常是因为数据发送时使用的编码跟接收时候使用的编码不一致。比如有下面这样一段服务端代码:Java代码 public class Server { public static void main(String args[]) throws IOException { //为了简单起见,所有的异常信息都往外抛
2016-10-20 19:33:33
1400
转载 【socket】用PHP的socket实现客户端到服务端的通信
一、server.PHP服务端:[php] view plain copy print?error_reporting(E_ALL); set_time_limit(0); ob_implicit_flush(); //本地IP $address = 'localhost'; //设置用111端口进行通信
2016-10-20 17:31:26
4865
转载 类加载器
类加载器是 Java 语言的一个创新,也是 Java 语言流行的重要原因之一。它使得 Java 类可以被动态加载到 Java 虚拟机中并执行。类加载器从 JDK 1.0 就出现了,最初是为了满足 Java Applet 的需要而开发出来的。Java Applet 需要从远程下载 Java 类文件到浏览器中并执行。现在类加载器在 Web 容器和 OSGi 中得到了广泛的使用。一般来说,Java 应用
2016-10-15 15:16:38
284
转载 URLClassLoader使用方法和实例 类加载器
1、首先了解下Java几个加载器的基本原理: Java 中的类加载器大致可以分成两类,一类是系统提供的,另外一类则是由 Java 应用开发人员编写的。系统提供的类加载器主要有下面三个: 引导类加载器(bootstrap class loader):它用来加载 Java 的核心库,是用原生代码来实现的,并不继承自 java.lang.ClassLoader。
2016-10-15 13:45:53
2528
转载 socket 通信
我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠socket?那什么是socket?socket的类型有哪些?还有socket的基本函数,这些都是本文想介绍的。本文的主要内容如下:1、网络中进程之间如何通信?2、Socket是什么?
2016-09-26 14:46:44
366
原创 从view中得到bitmap
/** * 从view 得到图片 * * @param view * @return Bitmap */public Bitmap getBitmapFromView(View view) { view.destroyDrawingCache(); view.measure(View.MeasureSpec.makeMeasureSpec(0, View.Measure
2016-09-20 19:38:39
736
原创 android创建固定宽度,高度的图片,比例缩放
/** * resize图片.创建固定宽度的新图片 * 缩小 * * @param src * @param dstWidth * @return Bitmap */public Bitmap createBitmap(Bitmap src, int dstWidth) throws Exception { Bitmap ret = null; int srcW
2016-09-20 19:36:16
902
原创 android px转dip,sp
/** * dp转像素 * * @param context 上下文 * @param dp dp值 * @return 像素值 */public int dip2px(Context context, float dp) { final float scale = context.getResources().getDisplayMetrics().density
2016-09-20 19:30:11
564
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人