自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(49)
  • 收藏
  • 关注

原创 Python抓取某相亲网站用户大数据分析【女】

【郑重声明】本文章统计数据均来自新县网用户数据,未通过任何非公开及违法渠道获取广大用户的个人隐私信息!【技术参考】Python、selenium、pyecharts(自编自写的python脚本抓取的新县网公开信息)摘要喜逢春日佳节之际,受到新型冠状病毒肺炎的影响,窝在家里实在难受,为了防止屁股坐的生疮,闲来无事爬了爬新县网,本文统计的实际新县网城缘女性用户为176位,VIP用户未统计在列(原...

2020-01-29 14:49:28 1377

原创 通过源码分析Mybatis运行原理

MapperFactoryBean 获取SqlSessionTemplate,SqlSessionTemplate的Configuration持有了mapper **************************MapperFactoryBean********************************** public T getObject() throws Excep...

2019-10-17 20:05:08 285

原创 Java静态代理和动态代理

前言动态代理在Java中有着广泛的应用,比如Spring AOP、Mybatis、RPC远程调用、Java注解对象获取、日志、用户鉴权、全局性异常处理、性能监控,甚至事务处理等。代理模式代理模式是给某一个对象提供一个代理,并由代理对象来控制对真实对象的访问代理模式根据Java字节码创建的时机划分为静态代理和动态代理静态代理静态代理也就是在程序运行前就已经存在代理类的字节码文件...

2019-10-17 16:44:19 209

原创 Mysql使用PreparedStatement的批量插入优化

背景上W级别的单表数据,要实现快速插入使用executeBatch 优化原实现 PreparedStatement cmd = connection .prepareStatement("insert into test values(?,?)"); for (int i = 0; i < 10000; i++) { ...

2019-10-12 09:35:26 2978

原创 MySQL千万级数据的全表扫描优化

数据场景一个很简单 的业务数据表,2300W规模的数据,没有复杂数据类型,不想分表,还需要全表遍历Select全表性能查询接口 @Mapper public interface UserMapper { @Select("SELECT * FROM loadtimeslot") public List<Pojo> select(...

2019-10-11 16:27:43 2014

原创 获取Spring中的单例Bean对象的封装

在实际开发过程中我们依赖的bean并不一定按照注入(@autowired)的方式获取,例如非spring托管的对象中获取Bean,这个时候需要我们在Spring容器中获取BeanBean的工具类package module;import org.springframework.beans.BeansException;import org.springframework.beans....

2019-09-30 16:55:38 321

原创 Java 类的加载机制

生命周期Java类在虚拟机中的生命周期包括以下几个阶段:加载、验证、准备、解析、初始化、使用和卸载七个阶段,前五个阶段都可以归纳为验证、准备、解析阶段可归纳为链接阶段加载这个阶段的JVM主要工作是从网络或者 磁盘中读取Java字节码并且转化成二进制流加载到内存中(方法区内),接着会在方法区创建对应的class对象,该class对象是该类的各个数据的访问入口 。Java字节码的存储...

2019-08-30 10:41:30 867

原创 Java并发之ReentrantReadWriteLock

特征ReentrantLock是独占锁, ReentrantReadWriteLock是读写锁成员和构造器默认是非公平锁,非公平锁在 /** Inner class providing readlock */ private final ReentrantReadWriteLock.ReadLock readerLock; /** Inner class pr...

2019-08-29 20:32:41 105

原创 Tomcat原理扫盲

Tomcat加载类和资源的顺序为:/Web-INF/classes/Web-INF/lib/*.jarBootstrapSystem$CATALINA_HOME/common/classes$CATALINA_HOME/common/endores/*.jar$CATALINA_HOME/common/lib/*.jar$CATALINA_HOME/shared/classes...

2019-08-27 16:34:56 94

原创 记一次OutOfMemoryError: Metaspace诊断

起因线上新运行的一个微服务,启动过程到稳定之后,服务一致没有问题,但是在运行一小段时间之后,经常服务状态不可用,访问改服务的Restful接口处于503状态初步分析刚开始的时候并没有意识到这个问题的严重性,以为是服务器突发的问题 ,采取的手段 就是暴力重启,可是重启之后一小段时间内确实没问题,但是之后又服务不可用了通常 情况下,HTTP 503的状态码标示当前的服务响应有问题,难道是...

2019-07-06 09:48:06 5098

原创 Java CAS原理分析

概念CAS:Compare and Swap

2019-07-04 13:20:55 281

原创 Java OutOfMemoryError 分析

异常分类Java OutOfMemoryError分为四大类:Java heap space、Permgen space、Metaspace、GC overhead limit exceededJava heap space当创建对象时,堆内存中的空间不足以存放新的对象,就会触发 Java heap space异常,这个问题比较常见,比如你创建的对象是100M的数组,但是堆空间只剩60...

2019-06-28 13:15:28 130

原创 JVM堆内存分配及垃圾回收算法

堆内存划分Java堆是被所有线程共享的一块内存区域,虚拟机又把堆内存划分为新生代、老年代、永久代三块区域。新生代(Young)又被划分为三个区域:Eden、From Survivor、To Survivor默认情况下 新生代 ( Young ) 与老年代 ( Old ) 的比例的值为 1:2 ,Eden : from : to = 8 : 1 : 1JDK1.8中移除了永久代,替换为元空...

2019-06-21 22:56:32 390

转载 Java锁机制

Java锁的划分Java锁具体可分为悲观锁/乐观锁、自旋锁/适应性自旋锁、偏向锁、轻量级锁/重量级锁、公平锁和非公平锁、可重入锁/非可重入锁、共享锁/排他锁具体划分如下:乐观锁VS悲观锁特征对于同一个数据的并发操作,悲观锁认为自己在使用数据的时候一定有别的线程来修改数据,因此在获取数据的时候会先加锁,确保数据不会被别的线程修改。Java中,synchronized关键字和Lock的实现...

2019-06-20 12:57:09 4589

原创 Java中的Volatile关键字

1

2019-06-15 13:06:27 111

原创 JVM 内存结构介绍整理

Jvm内存模型JVM内存共分为虚拟机、堆、方法区、程序计数器、本地方法栈五个部分。虚拟机栈每个线程都有一个私有的栈,随着线程创建而创建。每个栈空间都存放着栈帧,每个方法都会创建一个栈帧,栈帧主要存放了局部变量列表(局部变量表主要存放了编译器可知的各种数据类型[boolean、byte、char、short、int、float、long、double]、对象引用[reference类...

2019-06-14 13:07:57 208

原创 Java Object对象

Object.getClass()和Object.class区别类名.class叫做“类字面量”,因class是关键字, 所以类名.class编译时确定。而getclass()是某个具体的方法来调用,是运行时根据实际实例确定,getClass()是动态而且是final的HashCode方法Clone方法ToStringnotify/notifyAll,wait...

2019-06-14 00:37:45 286

原创 Java 单例模式与线程安全

1.恶汉式public class Singleton { private static Singleton INSTANCE = new Singleton(); public static Singleton getInstance() { return INSTANCE; }}优点:类加载的时候就完成了创建对象,不用考虑线程同步问题...

2019-05-11 23:06:24 111

转载 IT博文收集

1.浮动IP概念及作用https://blog.csdn.net/readiay/article/details/535380852.SpringBoot appliaction 原理https://www.cnblogs.com/xiaoxi/p/7999885.html3.ORM对象关系映射的理解https://segmentfault.com/a/119000001164...

2019-05-10 13:10:49 84

转载 Java Synchronized锁

一、Synchronized锁的重入(1)当一个线程获得一个对象的锁时,改锁里运行时可以再次请求获取该对象的锁(2)该线程请求其他线程持有的对象锁时,该线程会阻塞住,请求自己持有的对象锁时会请求成功(3)Synchronized锁住的是对象,调用该对象的其他Synchronized修饰的方法或代码块时,是可以获得对象锁的如果已经获取了一个对象的锁,但是锁又无法支持重入,也就是再次请...

2019-05-10 00:38:17 442

转载 Spring Bean 的生命周期

Bean的完整生命周期经历了各种方法调用,这些方法可以划分为以下几类:1、Bean自身的方法  :  这个包括了Bean本身调用的方法和通过配置文件中<bean>的init-method和destroy-method指定的方法2、Bean级生命周期接口方法  :  这个包括了BeanNameAware、BeanFactoryAware、InitializingBean...

2019-05-09 13:12:41 72

原创 Spring之路—常用注解收集

【@Component】——标注一个普通的Spring Bean类【@Controller】——标注一个控制器组件类【@Service】——标注一个业务逻辑组件类【@Repository】——标注一个Dao的组件类【@Bean】——标示为一个bean【@ComponentScan】——自定义扫描路径装配bean【@Configuration】——标示一个配置类【@Ena...

2019-05-08 13:25:28 100

转载 短连接和长连接扫盲

短连接连接->传输数据->关闭连接比如HTTP是无状态的的短链接,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。具体就是 浏览器client发起并建立TCP连接 -> client发送HttpRequest报文 -> server接收到报文->server handle并发送HttpResponse报文给前端,发送完毕之后立即调用s...

2019-05-07 14:09:14 280

转载 Spring Cloud服务框架概述

【Spring Cloud】Spring Cloud为开发者提供了快速构建分布式系统的通用模型的工具(包括配置管理、服务发现、熔断器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态等)。 主要项目包括:Spring Cloud Config:由Git存储库支持的集中式外部配置管理。配置资源直接映射到Spring Environment,但是如果需要可以被非S...

2019-05-07 13:58:35 114

原创 Java 中的ThreadLocal

What is ThreadLocal ?1.ThreadLocal 是一个创建线程局部变量的类2.通常情况下 ,一个对象中创建的变量是可以被任何一个线程访问的,也就是共享变量,ThreadLocal 创建的变量只能被当前线程访问,其他线程无法访问和修改Why is ThreadLocal ?1.ThreadLocal 是为了解决多线程资源共享访问的问题,为了让每个线程中有自己...

2019-03-11 22:10:31 101

原创 Linux高频率命令收集

【Linux命令】1.跳到文本的最后一行:按“G”,即“shift+g”2.跳到最后一行的最后一个字符 : 先重复1的操作即按“G”,之后按“$”键,即“shift+4”。3.跳到第一行的第一个字符:先按两次“g”,4.跳转到当前行的第一个字符:在当前行按“0”。5.grep -R xxxxxx >1.txt 定向 输出当前目录下的查找内容6.linux 软链接制作 ...

2019-02-26 18:40:48 152

原创 SpringBoot集成Mybatis

SpringBoot与SpringFrameWork最大的区别是约定优于配置,今天尝试下如何使用注解而不是基于XML配置来使用Mybatis【SpringBoot集成Mybatis】1.pom依赖配置&lt;!-- 导入Mysql数据库链接jar包 --&gt;&lt;dependency&gt;   &lt;groupId&gt;mysql&lt;/groupId&gt;  ...

2019-02-26 18:23:33 100

原创 Python爬虫爬取大街网工作数据

最近工作状态不饱满,想看看招聘网站上Java工程师都能给多少钱,于是就试试动手写爬虫,最开始使用的是requests,结果发现请求一直报403,估计是网站都有反爬虫手段,目前水平有限,不知道怎么反爬虫,看来这条路行不通# -*- coding: utf-8 -*-import reimport urllib.requestimport urllibimport random#网络数...

2019-02-25 22:57:24 928

原创 Java线程异常逃逸与捕获

Java线程内部执行异常会不会Throw?贴个代码更有说服力package com.app.thread;public class OThread implements Runnable { @Override public void run() { System.out.print("Go to run exception !!!\r\n"); ...

2019-02-22 11:18:45 218

原创 Mybatis中的CDATA标签

CDATA 指的是不应由 XML 解析器进行解析的文本数据,使用改标签主要是防止由于mybatis的xml配置文件解析错误比如在XML中,"&lt;"  解析器会把该字符解释为新元素的开始;"&amp;"  解析器会把该字符解释为字符实体的开始。当配置CDATA时,CDATA 部分中的所有内容都会被解析器忽略,CDATA 部分由 "&lt;![CDATA[" 开始,由 "]]&gt;" 结

2019-02-19 00:01:47 1227

原创 Linux Git常用 操作命令

【Git Commond】1.git checkout 查看本地所有修改2.git checkout -- 文件路径 丢弃当前选中文件3.git checkout . 丢弃本地所有修改4.git branch 查看本地分支5.git checkout master 切换到master分支6.git branch -D hongchangfirst 删除本地某个分支7.git add...

2019-01-24 18:10:38 138

原创 Java集合04_HashSet和LinkedHashSet

1.HashSet本质是用HashMap来存储数据的,HashMap不是线程安全的,所以HashSet也不是线程安全的 public HashSet(int initialCapacity, float loadFactor) { map = new HashMap&lt;&gt;(initialCapacity, loadFactor); } 2.Hash...

2019-01-14 22:56:53 130

原创 Java集合03_Vector

Vector有点类似ArrayList,本质实现还是数组,不多说,但是Vector最终要的一点是他是线程安全的,Vector的操作都携带了synchronized关键字  public synchronized boolean add(E e) { modCount++; ensureCapacityHelper(elementCount + 1);...

2019-01-03 23:08:30 85

原创 Java集合02_LinkedList

1.LinkedList于Collection的关系 2.LinkedList的本质实现是链表 private static class Node&lt;E&gt; { E item; Node&lt;E&gt; next; Node&lt;E&gt; prev; Node(Node&lt;E&gt; pre...

2019-01-03 22:51:25 68

原创 Java集合01_ArrayList

 ArrayList 本质实现是数组,对于数组而言频繁的访问效率比频繁的插入/删除效率更高,插入和删除会导致其他元素移动,当add时超出自己容量时会进行1.5倍扩容  ArrayList的clone最终是靠System.arraycopy实现的,System.arraycopy是浅拷贝,且不是线程安全的 //ArrayList的clone方法,最终调用的System.arrayco...

2019-01-02 22:11:43 99

原创 Spring_02 从ClassPathXmlApplicationContext容器看spring实现

 上集我们说到spring bean的注入方式如下: ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); Student student1 = (Student) context.getBean("student_zhangsan"); 为什么创建一个c...

2018-12-28 22:37:12 116

原创 Spring_01 Bean的注入方式

Bean注入的三种方式:(1)接口注入(不推荐)(2)Setter注入 (3)构造器注入Spring不去对接口注入作支持,因为通过接口注入总归是要 给对象进行赋值的,是存在耦合的,这违背了spring的初衷&lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;!-- xmlns 命名空间,类似于包名 xml 遵循的标签...

2018-12-26 22:32:22 81

原创 Linux buff/cache过高吃掉物理内存

今日发现线上一微服务无法启动,查看了一下物理内存,居然只剩下了1G,然来居然是buff/cache一列占用过高:那么 buff/cache主要是来干嘛的呢?Linux具有先进的缓存机制,会针对会针对dentry(用于VFS,加速文件路径名到inode的转换)、Buffer Cache(针对磁盘块的读     写)和Page Cache(针对文件inode的读写)进行缓存操作用来提高读写...

2018-12-26 21:48:52 20050

原创 从coredump异常看JVM内存的默认划分

在eclipse中设置看了如下启动参数:  -Xms64m -Xmx64m -XX:+PrintHeapAtGC -XX:+HeapDumpOnOutOfMemoryError创建一个size很大的list,一直进行add,直到程序崩溃:  Heap before GC invocations=1 (full 0): PSYoungGen      total 18944K, use...

2018-12-25 21:01:52 135

翻译 Linux常用命令整理

【ls】-a,--all 显示目录下所有的项目清单,包括以 "." 开头的隐藏项-A,--almost-all 显示目录下所有除 "." 和 ".." 以外的所有项-l 以长格式的方式显示目录下的清单-r,--reverse 以名称反序排列的方式显示清单-R,--recursive 递归处理目录下的子目录条目-s,--size 显示大小-S 根据大小排序-t 根据时间排序【mkd...

2018-12-25 20:49:22 99

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除