<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[pingping_wang的博客]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/pingping_wang</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; pingping_wang]]></copyright><item><title><![CDATA[java 关于锁 常见面试题]]></title><link>https://blog.csdn.net/pingping_wang/article/details/112799436</link><guid>https://blog.csdn.net/pingping_wang/article/details/112799436</guid><author>pingping_wang</author><pubDate>Tue, 19 Jan 2021 17:28:05 +0800</pubDate><description><![CDATA[synchronized原理
每一个对象都会和一个监视器monitor关联。监视器被占用时会被锁住，其他线程无法获取该monitor。当JVM执行某个线程的某个方法内部的monitorenter时，它会尝试去获取当前对象对应monitor的所有权，过程如下：

若monitor的进入数为0，线程可以进入monitor，并将monitor的进入设置为1.当前线程成为monitor 的owner
若线程已拥有monitor的所有权，允许它重入monitor，则进入monitor的进入数+1
若其他线程已拥有mo]]></description><category></category></item><item><title><![CDATA[大厂面试必考计算机网络问题]]></title><link>https://blog.csdn.net/pingping_wang/article/details/112545720</link><guid>https://blog.csdn.net/pingping_wang/article/details/112545720</guid><author>pingping_wang</author><pubDate>Wed, 13 Jan 2021 16:02:12 +0800</pubDate><description><![CDATA[OSI与TCP/IP各层的结构与功能，都有哪些协议？

应用层
应用层的任务是通过应用进程间的交互来完成特定网络应用。应用层协议定义的是应用进程间的通信和交互规则。对于不同的网络应用需要不同的应用层协议。在互联网中应用层协议很多，如域名系统DNS，支持万维网应用的HTTP协议，支持电子邮件的SMTP协议等等。我们把应用层交互的数据单元称为报文
运输层
运输层的主要任务就是负责两台主机进程之间的通信提供通用的数据传输服务。应用进程利用该服务传送应用层报文。”通用的“是指并不针对某一个特定的网络应用，而是多种应]]></description><category></category></item><item><title><![CDATA[记录一次叮咚买菜面试复盘]]></title><link>https://blog.csdn.net/pingping_wang/article/details/111756196</link><guid>https://blog.csdn.net/pingping_wang/article/details/111756196</guid><author>pingping_wang</author><pubDate>Sat, 26 Dec 2020 19:04:55 +0800</pubDate><description><![CDATA[离职半年的我
在 2020-12-25 这个喜庆的日子
终于卖出了第一步
颤颤巍巍的投递了叮咚买菜java开发
简历过审收到了电面邀请
虽然有两年开发经验
但这两年一直没有到外面面试过
还是有点惴惴不安

约的下午3点
两点半小板凳就准备好
随时等待面试官的电话

3点整
面试官如约打来电话
是位小哥哥
讲话很温柔

我们聊了半个多小时
聊完后我自我感觉良好
挂了小哥哥电话就和李哥嘚瑟起来
”他问的问题我都会哎
Redis，Mysql，线程池，我都能答出来
就一个问题我没答出来“

李哥： ”有一个不知道啊]]></description><category></category></item><item><title><![CDATA[JVM垃圾回收机制]]></title><link>https://blog.csdn.net/pingping_wang/article/details/111318752</link><guid>https://blog.csdn.net/pingping_wang/article/details/111318752</guid><author>pingping_wang</author><pubDate>Fri, 18 Dec 2020 10:59:54 +0800</pubDate><description><![CDATA[JVM垃圾回收机制
JVM的基本组成
虚拟机的组成
所谓java能实现跨平台，是因为在不同平台上运行不同的虚拟机决定的，因此java文件的执行不直接在操作系统上执行，而是通过JVM虚拟机执行，我们可以从这张图看到，JVM并没有直接与硬件打交道，而是与操作系统交互用以执行java程序

运行流程

这张图是JVM的组成图，分为四部分：

类加载器
类加载器的作用是加载类文件到内存。比如我们写一个HelloWorld.java 的程序，首先使用javac命令进行编译，生成HelloWorld.class字节码文]]></description><category></category></item><item><title><![CDATA[volatile+双重检查 实现单例模式]]></title><link>https://blog.csdn.net/pingping_wang/article/details/111286182</link><guid>https://blog.csdn.net/pingping_wang/article/details/111286182</guid><author>pingping_wang</author><pubDate>Wed, 16 Dec 2020 16:25:48 +0800</pubDate><description><![CDATA[/*
   目标：双重检查机制，以及使用volatile修饰（最好，最安全，最推荐）
   步骤：
        1.构造器私有
        2.提供一个静态变量用于存储一个单例对象
        3.提供一个方法进行双重检查机制返回单例对象
        4.使用volatile修饰静态的变量

    双重检查的优点：线程安全，延迟加载，效率较高！
 */
public class Singleton {
    private volatile static Singleton INSTAN]]></description><category></category></item><item><title><![CDATA[一个SQL执行的很慢的原因有哪些？]]></title><link>https://blog.csdn.net/pingping_wang/article/details/110174194</link><guid>https://blog.csdn.net/pingping_wang/article/details/110174194</guid><author>pingping_wang</author><pubDate>Thu, 26 Nov 2020 11:31:57 +0800</pubDate><description><![CDATA[一条SQL语句执行很慢，那是每次执行都很慢呢？还是大多数情况下是正常的，偶尔出现很慢呢？所以我们得分两种情况来讨论。
一、大多数情况是正常的，只是偶尔会出现很慢的情况。
这个SQL大多数情况很正常，只有偶尔出现很慢，针对这种情况，我觉得这条SQL语句的书写本身是没什么问题的，而是由其他原因导致的。
1. 数据库在刷新脏页（flush）
当我们要往数据库插一条数据、或者更新一条数据的时候，我们知道数据库会在内存中把对应字段的数据更新了，但是更新之后，这些更新的字段并不会马上同步持久化到磁盘中去，而是把这些更新]]></description><category></category></item><item><title><![CDATA[常用SQL技巧]]></title><link>https://blog.csdn.net/pingping_wang/article/details/110131950</link><guid>https://blog.csdn.net/pingping_wang/article/details/110131950</guid><author>pingping_wang</author><pubDate>Wed, 25 Nov 2020 15:32:19 +0800</pubDate><description><![CDATA[SQL执行顺序
编写顺序
SELECT DISTINCT
	&lt;select list&gt;
FROM
	&lt;left_table&gt; &lt;join_type&gt;
JOIN
	&lt;right_table&gt; ON &lt;join_condition&gt;
WHERE
	&lt;where_condition&gt;
GROUP BY
	&lt;group_by_list&gt;
HAVING
	&lt;having_condition&gt;
ORDER BY
	&lt;o]]></description><category></category></item><item><title><![CDATA[Mysql中查询缓存优化]]></title><link>https://blog.csdn.net/pingping_wang/article/details/110125776</link><guid>https://blog.csdn.net/pingping_wang/article/details/110125776</guid><author>pingping_wang</author><pubDate>Wed, 25 Nov 2020 13:48:44 +0800</pubDate><description><![CDATA[概述
开启Mysql的查询缓存，当执行完全相同的SQL语句的时候，服务器就会直接从缓存中读取结果，当数据被修改，之前的缓存会失效，修改比较频繁的表不适合做查询缓存。
操作流程


客户端发送一条查询给服务器；
服务器先会检查查询缓存，如果命中了缓存，则立即返回存储在缓存中的结果。否则进入下一阶段；
服务器端进行SQL解析、预处理，再由优化器生成对应的执行计划；
MySQL根据优化器生成的执行计划，调用存储引擎的API来执行查询；
将结果返回给客户端。

查询缓存配置


查看当前的MySQL数据库是否支持查]]></description><category></category></item><item><title><![CDATA[MySQL优化]]></title><link>https://blog.csdn.net/pingping_wang/article/details/110085426</link><guid>https://blog.csdn.net/pingping_wang/article/details/110085426</guid><author>pingping_wang</author><pubDate>Tue, 24 Nov 2020 17:00:48 +0800</pubDate><description><![CDATA[大批量插入数据
对于InnoDB类型的表，有以下几种方式可以提高导入效率：

主键顺序插入
因为InnoDB类型的表是按住主键的顺序保存的，所以将导入的数据按照主键的顺序排列，可以有效的提高导入数据的效率。如果InnoDB表没有主键，那么系统会自动默认创建一个内部列表作为主键，所以如果可以给表创建一个主键，将可以利用这点，来提高导入数据的效率。
关闭唯一性校验
在导入数据前执行  SET UNIQUE_CHECKS=0，关闭唯一性校验，在导入结束后执行SET UNIQUE_CHECKS=1，恢复唯一性校验，]]></description><category></category></item><item><title><![CDATA[MySQL索引的使用]]></title><link>https://blog.csdn.net/pingping_wang/article/details/110054322</link><guid>https://blog.csdn.net/pingping_wang/article/details/110054322</guid><author>pingping_wang</author><pubDate>Tue, 24 Nov 2020 12:07:31 +0800</pubDate><description><![CDATA[准备环境
create table tb_seller (
sellerid varchar (100),
name varchar (100),
nickname varchar (50),
password varchar (60),
status varchar (1),
address varchar (100),
createtime datetime,
primary key(sellerid)
)engine=innodb default charset=utf8mb4;
insert int]]></description><category></category></item><item><title><![CDATA[Mysql的体系结构]]></title><link>https://blog.csdn.net/pingping_wang/article/details/109846498</link><guid>https://blog.csdn.net/pingping_wang/article/details/109846498</guid><author>pingping_wang</author><pubDate>Fri, 20 Nov 2020 13:40:28 +0800</pubDate><description><![CDATA[整个MySQL Server由以下组成

Connection Pool：连接池组件
Management Service &amp; Utilities：管理服务和工具组件
SQL Interface：SQL接口组件
Parser：查询分析器组件
Optimizer：优化器组件
Caches &amp; Buffers：缓冲池组件
Pluggable Storage Engines ：存储引擎
File System：文件系统

1.连接层
第一层是一些客户端和链接服务，包含本地sock通信和大多数基于.]]></description><category></category></item><item><title><![CDATA[Linux 系统安装MySQL]]></title><link>https://blog.csdn.net/pingping_wang/article/details/109806593</link><guid>https://blog.csdn.net/pingping_wang/article/details/109806593</guid><author>pingping_wang</author><pubDate>Thu, 19 Nov 2020 12:09:41 +0800</pubDate><description><![CDATA[Linux 系统安装MySQL
下载Linux 安装包
					https://dev.mysql.com/downloads/mysql/5.7.html#downloads

安装MySQL
1). 卸载 centos 中预安装的 mysql
rpm -qa | grep -i mysql（查看MySQL当前版本号）

rpm -e mysql-libs-5.1.71-1.el6.x86_64 --nodeps
（rpm -e 卸载之前的MySQL）

2). 上传 mysql 的安装包
alt + ]]></description><category></category></item><item><title><![CDATA[前端增加水印]]></title><link>https://blog.csdn.net/pingping_wang/article/details/106642071</link><guid>https://blog.csdn.net/pingping_wang/article/details/106642071</guid><author>pingping_wang</author><pubDate>Fri, 12 Jun 2020 09:13:13 +0800</pubDate><description><![CDATA[addWatermark:function(el,color, text, bgPos, bgSize, font){
            var wdh = 400;
            var hgh = 280;
            if (font) {
                wdh = font[0];
                hgh = font[1];
            }
            var baseTxt = (text == '') ?..]]></description><category></category></item><item><title><![CDATA[sqlserver  查询一个字段里数字类型的值出来]]></title><link>https://blog.csdn.net/pingping_wang/article/details/106262352</link><guid>https://blog.csdn.net/pingping_wang/article/details/106262352</guid><author>pingping_wang</author><pubDate>Thu, 21 May 2020 17:15:00 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[case when   and  多个条件 决定一个新字段]]></title><link>https://blog.csdn.net/pingping_wang/article/details/106261005</link><guid>https://blog.csdn.net/pingping_wang/article/details/106261005</guid><author>pingping_wang</author><pubDate>Thu, 21 May 2020 16:36:09 +0800</pubDate><description><![CDATA[case   when  
           open_date = '1990-01-01'
           and supplierid = 1856
           and close_date = '2020-03-10' 
           then  'wpp'  else   'cxk'   end  


]]></description><category></category></item><item><title><![CDATA[mysql 查看数据库版本]]></title><link>https://blog.csdn.net/pingping_wang/article/details/106260745</link><guid>https://blog.csdn.net/pingping_wang/article/details/106260745</guid><author>pingping_wang</author><pubDate>Thu, 21 May 2020 16:28:40 +0800</pubDate><description><![CDATA[mysql 查看数据库版本：
 select @@version;


]]></description><category></category></item><item><title><![CDATA[浅谈clickhouse在大数据分析领域的应用]]></title><link>https://blog.csdn.net/pingping_wang/article/details/91355787</link><guid>https://blog.csdn.net/pingping_wang/article/details/91355787</guid><author>pingping_wang</author><pubDate>Sun, 09 Jun 2019 18:52:48 +0800</pubDate><description><![CDATA[一． 概述
随着我们业务需求的发展，数据量级的增加，传统的数据库的查询速度已满足不了我们的业务需求，对于一张千万级数据量的表，使用mysql 或者mssql 查询出一列数据，就要5秒左右，不！这不是我们想要的！！！我们必须找到应对方法，来解决查询速度这一问题。经过多天的考虑与讨论，我们最终选择，使用click house 来解决这一问题。
二． 什么是Clickhouse
官方给出的解释是：Cli...]]></description><category></category></item><item><title><![CDATA[不依赖后端 , 前端几行代码实现下载csv]]></title><link>https://blog.csdn.net/pingping_wang/article/details/89705540</link><guid>https://blog.csdn.net/pingping_wang/article/details/89705540</guid><author>pingping_wang</author><pubDate>Tue, 30 Apr 2019 11:10:03 +0800</pubDate><description><![CDATA[function exportCsv(lines, filename) {
const uri = ‘data:text/csv;charset=UTF-8,%EF%BB%BF’ + encodeURIComponent(lines.join(’\n’));
const el_a = document.createElement(‘a’);
el_a.href = uri;
el_a.downlo...]]></description><category></category></item><item><title><![CDATA[sourcetree 不显示新添加的文件]]></title><link>https://blog.csdn.net/pingping_wang/article/details/87818783</link><guid>https://blog.csdn.net/pingping_wang/article/details/87818783</guid><author>pingping_wang</author><pubDate>Wed, 20 Feb 2019 20:01:13 +0800</pubDate><description><![CDATA[在项目中新添加了文件，
但是想要提交的时候在sourcetree 中却不显示。
可能是sourcetree显示文件状态的原因

如图所示，把文件状态修改为  待定 后 ，就会显示新添加的文件了

...]]></description><category></category></item><item><title><![CDATA[$(...)[0].attr is not a function]]></title><link>https://blog.csdn.net/pingping_wang/article/details/87009210</link><guid>https://blog.csdn.net/pingping_wang/article/details/87009210</guid><author>pingping_wang</author><pubDate>Mon, 11 Feb 2019 17:38:31 +0800</pubDate><description><![CDATA[$(…)[0]  返回的是一个dom对象
而  attr() 方法 只能被JQuery对象所使用
所以，可以用$(…).eq()


]]></description><category></category></item></channel></rss>