- 博客(44)
- 收藏
- 关注
原创 selenium和bs4的联合使用
Selenium可以模拟浏览器点击或登录网站的行为。但在获取网站文本上并不方便。可以尝试使用Selenium+bs4获取文本信息。导入相关库from selenium import webdriverimport timefrom bs4 import BeautifulSoup打开网页url = "https://www.xxx.com"driver.get(url)driver = webdriver.Chrome()模拟浏览器活动点击driver.find_ele
2022-03-08 15:52:29
1404
原创 为Java项目添加Redis缓存
Redis的安装Redis一般有Linux和Windows两种安装方式,Windows的最高版本为3.2,Linux的最高版本为5.0,大家可以根据自己的需要添加Linux首先在linux下安装docker,在docker环境下安装redis5.0的镜像docker pull redis:5.0然后使用Docker命令启动Redis容器docker run -p 6379:6379 --name redis \-v /mydata/redis/data:/data \-d redis:5.
2021-05-18 11:16:42
1132
2
原创 ELK日志系统入门
1.ELK的经典应用Logstash:部署至服务主机,对各个服务的日志进行采集、过滤、推送Elasticsearch:存储Logstash传送的结构化数据,提供给KibanaKibana:提供用户UIweb页面进行,数据展示和分析形成图表等2.引入Beats为什么要引入BeatsLogstash的缺陷Logstash为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上。因此,非常
2021-04-02 09:22:39
240
原创 Linux常用命令
Linux常用命令1.find [PATH] [option] [action]查找路径下符合要求的文件2. ls 命令展示文件夹内内容3. cd 命令切换目录4. tree命令显示树形的层级目录结构,非原生命令,需要安装tree5. cp 命令复制文件6.rm命令删除7. mv命令移动文件8. pwd命令查看”当前工作目录“的完整路径9. tar命令压缩解压10. mkdir命令创建目录11. rmdir 命令删除目录12. gzip 命令压缩文件或文件夹为
2021-03-11 10:43:47
124
原创 Java中对象一定分配在堆空间上吗?
栈、堆、方法区Java栈的区域很小,只有1M,特点是存取速度很快,所以在stack中存放的都是快速执行的任务,基本数据类型的数据,和对象的引用(reference)。栈空间用光了会引发StackOverflowError。类的对象放在heap(堆)中,所有的类对象都是通过new方法创建,创建后,在stack(栈)会创建类对象的引用(内存地址)。堆是垃圾收集器管理的主要区域,由于现在的垃圾收集器都采用分代收集算法,所以堆空间还可 以细分为新生代和老生代,再具体一点可以分为Eden、Survivor(又可分
2021-03-06 23:23:26
1993
1
原创 Visual Studio C#前端画面下拉框自动填充默认值 实现
背景介绍今天接到一个新的需求:在发货界面选择库区的下拉列表默认选中当前库区,以免去人工选择的这一步步骤实现思想因为当前分区下所有画面可能未来都需要默认选中当前分区,所以最好的方法是提取一个工具类,写一个静态方法以替换原有的下拉框绑定方法,而不是一个个修改每个页面选择库区下拉框的绑定方法。这样我们就不用在每个C#页面中再实现一遍选择库区的方法,而是通过 类名.方法名这样的静态调用方法来实现默认选中当前库区的需求代码实现 public static void p_stock_no(String pa
2021-02-23 18:16:34
1703
原创 Nginx的反向代理、负载均衡和动静分离
为什么要用Nginx什么是NginxNginx(“engine x”)是一个高性能的HTTP和反向代理服务器,特点是占有内存少,并发能力强为什么要用Nginx不用tomcat同样是做代理,为什么用nginx服务器代理,不直接用tomcat 7.0,还做多了一次接请求呢?事实上,nginx常用做静态内容服务和代理服务器,直面外来请求转发给后台的应用服务(tomcat,django等),tomcat更多用来做一个应用容器,让java web app在其中运行,对应同级别的有jboss,jetty等Ng
2021-01-05 09:13:07
139
原创 ES与倒排索引
ES与倒排索引ElasticSearchElaticsearch,简称为es, es是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。es也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单Elasticsearch核心概念ES对比传统数据库结构如下Relational DB -> Datab
2021-01-05 00:23:58
320
原创 如何解决数据关联查询
如何解决数据关联查询在传统数据库查询时,如果要获取的字段在别的库表中,通常会使用join操作获得,但是当数据量越来越大时,join操作会使查询速度越来越慢,这显然是不可取的,那么我们该如何进行查询呢?调用接口补填数据在微服务环境下,各个微服务在业务进行过程需要进行的各种查询,由于数据库的拆分,其实不能像以前那样进行 join 操作了,而是需要采用接口调用的方式进行数据补填。比如电商平台中“用户下单”“商家接单”“物流配送”等微服务,由于数据库的拆分,它们已经没有访问用户表与商家表的权限,就不能像以往那
2020-12-27 23:30:17
1000
原创 为什么会出现慢SQL
为什么会出现慢SQL在生产环境中,慢SQL是一个比较严重的问题,在面试时也会经常被问到,那究竟哪些情况会产生慢SQL,我们又该如何排查,如何定位呢?接下来我们将一步步带来这些问题的答案写操作刷脏页脏页的定义是这样的:内存数据页和磁盘数据页不一致时,那么称这个内存数据页为脏页。对于一条写操作的 SQL 来说,执行的过程中涉及到写日志,内存及同步磁盘这几种情况在写操作时,InnoDB会将记录写入到 redo log 中,并更新缓存,这样更新操作就算完成了。后续操作存储引擎会在适当的时候(buffer
2020-12-26 12:07:45
4556
3
原创 SpringCloud包含的微服务介绍--Gateway
SpringCloud包含的微服务介绍–GatewayGateway基础介绍什么是网关在SpringCloud微服务体系中,有个很重要的组件就是网关,网关是整个微服务API请求的入口,负责拦截所有请求,分发到服务上去。可以实现日志拦截、权限控制、解决跨域问题、限流、熔断、负载均衡,隐藏服务端的ip,黑名单与白名单拦截、授权等,常用的网关有zuul(netflix的,但是已经停更了)和spring cloud gateway (springcloudalibaba)网关可以理解为网络关卡,是整个微服
2020-12-19 13:15:38
314
1
原创 Redis常用指令
Redis常用指令通用命令连接Redis服务第一种:启动默认配置的redis服务(当关闭页面后或者 ctrl+C就会自动关闭redis服务,无法在后台启动)第二种:启动自定义配置的redis服务客户端访问Redis关闭Redis服务Redis支持的五种数据结构StringSET key value [EX seconds] [PX milliseconds] [NX|XX]INCR keyHash当 HSET 命令在哈希表中新创建 field 域并成功为它设置值时,
2020-12-15 10:22:33
206
原创 Redis的分布式锁
Redis的分布式锁1. 为什么需要分布式锁2. Redis分布式锁原理2.1 Setnx(key,value)2.2 Redis单线程模型3. 当前模式可能存在问题3.1死锁3.2 运行时异常导致释放锁没有执行3.3 释放了其他进程的锁3.4 改进4. 仍存在问题4.1 续租问题4.2 锁的删除问题5. 解决 redis企业级分布式锁 Redisson5.1 大致的使用步骤5.2 基本原理5.3 仍存在缺点5.4 一定程度上的解决方法5.5Redlock问题6. Redis分布式锁的性能提升1. 为什么
2020-12-12 02:02:55
170
原创 SpringCloud包含的微服务介绍--Eureka
SpringCloud包含的微服务介绍Eureka服务注册与发现为什么需要注册中心当我们启动项目时,我们通常会在属性文件中包含所有配置。随着越来越多的服务的开发和部署,添加和修改这些属性变得更加复杂。某些服务可能会停止运行,而某些服务可能会发生变化。手动更改属性可能会产生问题。加上现在是开发都是微服务容器化部署,ip地址往往是动态,修改很麻烦,是有eureka的话只需要配置注册服务的别名,就不用关注ip地址了,注册中心可以自动获取。Eureka服务注册和发现在这种情况下有所帮助。由于所有服务都已注册
2020-12-06 03:18:59
449
原创 正则表达式入门及简单应用
正则表达式语法普通字符字符描述[ABC]匹配 […] 中存在的所有字符[^ABC]匹配除了 […] 中字符以外的所有字符[A-Z][A-Z] 表示一个区间,匹配所有大写字母.匹配除换行符(\n、\r)之外的任何单个字符,相等于 [^\n\r][\s\S]匹配所有。\s 是匹配所有空白符,包括换行,\S 非空白符,包括换行\w匹配字母、数字、下划线。等价于 [A-Za-z0-9_]\b匹配一个单词边界,也就是指单词和空格间的位置。例如,
2020-11-26 10:57:10
123
原创 mybatis中xml和dao对应规则
mybatis中xml和dao对应规则dao也就是mapper接口接口的全限名–映射文件的namespace值接口的方法名–映射文件的MappedStatement的id值接口方法内的参数–传递给sql的参数Mapper接口是没有实现类的,当调用接口的方法时,接口全限名+方法名拼接字符串作为key值,可唯一定位一个MappedStatment...
2020-11-23 08:47:24
1532
原创 解决pom.xml文件spring-boot-maven-plugin not found问题
解决pom.xml文件spring-boot-maven-plugin not found问题<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId></plugin>显示spring-boot-maven-plugin not found解决方法:1.打开本地仓库respos
2020-11-16 15:06:22
15534
3
原创 Redis是如何实现持久化的?
Redis是如何实现持久化的?Redis持久化之RDB什么是RDB?RDB的实现原理savebgsavebgsave 的触发机制save m n触发机制其他触发机制RDB的优缺点优点:缺点:Redis持久化之AOF什么是AOF?AOF的实现原理AOF的重写机制拓展:同时存在RDB文件和AOF文件时,redis重启时加载持久化文件的顺序redis有两种持久化方式,RDB和AOF。RDB是Redis默认的持久化方式。Redis持久化之RDB什么是RDB?RDB持久化是指Redis在指定时间间隔内执行指定
2020-11-14 01:11:13
259
原创 SQL语句是怎样写入磁盘的?
SQL语句是怎样写入磁盘的?data数据在本地的存储形式data从存储引擎层写入磁盘过程我们都知道SQL语句是存储存储在磁盘上的,但是执行SQL语句后的数据是先存在InnoDB存储引擎的内存中的,那它究竟是怎么记录到磁盘中的呢?要想了解这个,我们首先要知道SQL数据在本地到底是什么类型的文件进行存储。data数据在本地的存储形式在本地mysql对应库中,data数据实际上是以ibd文件存储,其中包括数据页和索引页(页是磁盘和内存交互的最小单位,一页大小是16k,页也就是B+树的叶子结点)。data数
2020-11-04 22:56:43
437
原创 MySQL日志系统:redo log、bin log、undo log的基础知识
MySQL日志系统:redo log、binlog、undo log的基础知识1 redo log1.1 为什么需要redo log1.2 什么时候产生1.3 什么时候释放1.4 redo log 作用2 bin log2.1 为什么需要bin log2.2 什么时候产生2.3 什么时候释放2.4 bin log 作用3 undo log3.1 为什么需要undo log3.2 什么时候产生3.3 什么时候释放3.4 undo log的作用4 mysql执行更新操作过程图解1 redo log1.1 为
2020-10-31 17:10:23
379
原创 Spring--IOC控制反转与DI依赖注入的三种方式
Spring--IOC控制反转与DI依赖注入的三种方式1. setter方法注入2.构造器注入3.接口注入Spring的核心思想是IOC和AOP,IOC即控制反转,包括依赖注入和依赖查找,最主要使用的即依赖注入DI。通常情况下,我们创建对象时,是通过new关键字主动进行的;而DI则是在创建对象时,只设置配置文件,由Spring统一创建对象并调用。这也就是控制反转的由来。接下来本文将重点介绍依赖注入的三种方式本文使用maven创建工程,pom.xml中依赖设置如下 <dependencies&g
2020-10-27 22:06:50
186
原创 Linux下MongoDB设置config文件后启动报错
报错内容:Error parsing INI config file: unrecognised option ‘bind ip’mongodb.conf内容如下dbpath = /home/admin/myapps/mongodbdata #数据文件存放目录logpath = /home/admin/myapps/logs/mongodb.log #日志文件存放目录port = 27017 #端口fork = true #以守护程序的方式启用,即在后台运行bind ip=0.0.0.0re
2020-10-24 00:38:57
2284
原创 Mysql InnoDB底层实现
Mysql InnoDB底层实现1.InnoDB存储结构2.InnoDB的索引实现3.InnoDB中的八种锁3.1 共享锁或排它锁(Shared and Exclusive Locks)3.2 意向锁(Intention Locks)3.3 索引记录锁(Record Locks)3.4 间隙锁(Gap Locks)3.5 下一个键锁(Next-Key Locks)3.6 插入意向锁(Insert Intention Locks)3.7 自增锁(AUTO-INC Locks)3.8 空间索引(Predica
2020-10-23 00:34:48
772
原创 如何将javaWeb部署到Linux系统
如何将javaWeb部署到Linux系统1. 前期准备1.1 虚拟机安装1.2 Xshell安装1.3下载SecureFXPortable1.4 安装jdk1.4.1 创建保存解压后jdk的文件夹1.4.2 解压jdk压缩包1.4.3 配置环境变量1.5 安装Tomcat1.5.1 解压安装包1.5.2 进入bin目录并开启tomcat1.5.3 进入tomcat主页检测1.6 安装Mysql1.6.1 检测系统是否自带安装mysql1.6.2 删除系统自带的mysql及其依赖命令:1.6.3 给Cent
2020-10-21 15:19:01
516
原创 Mysql性能优化方法
Mysql性能优化方法1. mysql架构2. 慢查询日志2.1 慢查询日志概念2.2 慢查询开启方式:2.2.1 单次生效2.2.2 永久生效3.查看执行计划3.1 查看执行计划概念3.2 查询结果的列含义3.2.1 id3.2.2 select_type :3.2.3 table3.2.4 ==type== (重要) :3.2.5 possible_keys3.2.6 key3.2.7 key_len3.2.8 ref3.2.9 rows3.3 ==Extra==(重要)3.3.1 显示信息3.4 索引
2020-10-12 15:18:24
131
原创 Idea2020 在src下右键无法出现new Servlet 解决方法
1.打开Idea,创建JavaWeb项目,点击File->Project Structure2.点击Module->选择你当前的项目->选择sources分页->点击src文件夹,选择Marked As Sources这时src文件夹由普通文件夹变为蓝色标识的资源文件夹3.此时在src文件夹右键就可以看到 new Servlet选项啦...
2020-10-02 10:59:56
5019
2
原创 设计模式之六大设计原则【入门】
设计模式之六大设计原则1 开闭原则 Open Closed Principle,OCP1.1 概念1.2 软件实体1.3 开闭原则的作用2. 单一职责原则 Single responsibility principle,SRP2.1 概念2.2 一个对象承担太多职责的缺点2.3 单一职责原则的优点3 里氏替换原则:Liskov Substitution Principle,LSP3.1 概念3.2 四层含义3.3 里氏替换原则作用4 依赖倒置原则:Dependence Inversion Principl
2020-10-01 01:20:36
151
原创 Mysql性能优化
Mysql性能优化1. 性能分析思路2. Mysql架构介绍2.1 Mysql存储引擎3. 索引介绍3.1 索引是什么3.2 索引的优势和劣势3.2.1 优势3.2.2 劣势3.3 常用索引分类3.3.1 单列索引3.3.2 组合索引(用的几率大,更好)3.4 索引的存储结构3.4.1 B树和B+树的区别3.4.2 聚集索引(InnoDB)3.4.3主键索引3.4.4 辅助索引3.4.5 非聚集索引(MyISAM)3.5 组合索引使用(性能优化的门槛)3.5.1 创建组合索引3.5.2 最左前缀原则:针对组
2020-09-28 18:00:26
117
转载 JSP四大域对象和九大内置对象
JSP四大域对象和九大内置对象Servlet三大域对象JSP四大域对象九大内置对象:Servlet三大域对象ServletContext : context域HttpServletRequest : request域HttpSession : session域JSP四大域对象域对象的作用:保存数据,获取数据,共享数据.page:jsp页面被执行,生命周期开始,jsp页面执行完毕,生命周期结束(jsp当前页面有效)request:用户发送一个请求,生命周期开始,服务器返回响应,请求结束,生
2020-09-27 14:08:21
137
原创 Servlet原理及用法解析
Servlet原理及用法解析1.Servlet原理1.1 Servlet处理浏览器请求过程1.2 tomcat和servlet关系1.3 详解创建servlet的原理1.3.1 servlet的生命周期是什么?1.3.2 为什么GenericServlet类中init方法有两个,一个是带有参数ServletConfig的,一个有无参的方法?1.3.3 四个重点对象:ServletConfig、ServletContext,request、response用法解析(实例)HTTP部分Servlet部分XML部
2020-09-27 10:42:39
263
转载 servlet跳转页面的方法
servlet跳转页面的方法:跳转分为两部分,一部分发生在servlet,另一部分发生在JSP,JSP就是servlet,但是两者还是有部分差异。一、Servlet:(跳转发生在doGet,doPost等方法里)(1)redirect方式response.sendRedirect("/index.jsp");页面的路径是相对路径。sendRedirect可以将页面跳转到任何页面,不一定局限于web应用中,如:response.sendRedirect(“http://www.baidu.com”);
2020-09-24 01:45:20
4900
原创 【Java】Synchronize与锁升级
Synchronize实现方法,锁升级是Java面试中经常考到的内容,为了方便学习与理解Synchronize与锁升级,本文详细总结了一些相关的知识点。Synchronize简介synchronize是java中的关键字,可以用来修饰实例方法、静态方法、还有代码块;主要有三种作用:可以确保原子性、可见性、有序性,原子性就是能够保证同一时刻有且只有一个线程在操作共享数据,其他线程必须等该线程处理完数据后才能进行;可见性就是当一个线程在修改共享数据时,其他线程能够看到,保证可见性,volatile关键字也有
2020-09-16 17:25:44
330
1
原创 【MAC mysql 5.7安装】报错ERROR 1820 (HY000): You must reset your password using ALTER USER statement解决方法
本人是MAC电脑,在mysql官网下载5.7版本后输入PATH="$PATH":/usr/local/mysql/binmysql -u root -p登陆再输入安装时自动生成的密码 ps:需要记录成功登入,但是当输入show databases;系统报错:ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.解决方法:需要修改初
2020-09-15 02:06:44
439
原创 JAVA线程池实现原理
线程池实现原理为什么要使用线程池?提高程序的执行效率控制线程的数量,防止程序崩溃使用线程池的风险死锁资源不足并发错误线程泄露线程过载JUC包内部架构ExecutorExcutorServiceAbstractExecutorServiceScheduledExecutorServiceThreadPoolExecutorScheduledThreadPoolExecutorExecutorsExecutors与ThreadPoolExecutor的区别Executors可以创建的四种线程池简介线程池实现原理
2020-09-11 01:58:05
146
原创 JavaScript 正则表达式 基础用法+案例
JavaScript基础用法及案例正则表达式语法修饰符方括号量词元字符RegExp对象方法支持正则表达式的String对象的方法正则表达式使用案例正则匹配使用正则匹配子串str中的数字使用RegExp创建一个正则对象使用正则对象匹配的另一种方式匹配多次正则搜索使用正则搜索使用创建正则对象方式搜索使用test方法搜索正则拆分字符串方法拆分正则方法拆分正则替换正则表达式将分割符统一替换成逗号将\\替换成\\将西方日期格式替换成中国[年-月-日]格式正则表达式语法修饰符i 大小写不敏感g 全局匹配m
2020-09-06 00:21:30
312
原创 JavaScript事件处理的两种常用方法
JS进行事件处理的两种常用办法在标签属性值中添加事件在js中通过对特定id添加事件在标签属性值中添加事件标签属性值οnclick="fun(this)"调用参数,传入this,在script框里 编写function fun(a){a.style.color = “green”}再通过传入的this对标签属性值修改。<body><h2 onclick="fun(this)">2级标题1</h2></body><script>
2020-09-05 00:22:53
365
原创 面向对象 面试题16道(附答案)
面向对象 面试题16道(附答案)1. 接口与抽象类的区别?2. 构造方法可否能被重写?3. (= =)与equals()的区别?4. 什么是拆箱和装箱?5. 方法重载(overload)需要满足什么条件,方法覆盖/方法重写(override)需要满足什么条件?6. 谈谈final,finally,finalize的区别。7. abstract的method是否可同时是static,是否可同时是synchronized?8. 接口是否可继承接口?抽象类是否可实现(implements)接口?实现类是否可继承抽
2020-09-03 23:09:06
2822
2
原创 Json 的三种解析方式
数据交换中最常用的数据格式--Json 的三种解析方式Json简介Json基础语法普通格式举例数组格式举例Json的三种解析方式原生解析举例Gson解析举例补充java对象转Json方法FastJson解析举例补充java对象转Json方法Json简介Json(JavaScript Object Notation JS)中文翻译为对象简谱 , 是一种轻量级的数据交换格式。Json基础语法一个对象, 由一个大括号{}表示。括号中描述对象的属性,通过键值对来描述对象的属性 (可以理解为大括号中包含的是一
2020-08-31 12:51:57
2198
原创 HashMap红黑树树化过程,看这一篇就够了
HashMap红黑树树化过程,看这一篇就够了红黑树基础概念红黑树性质红黑树示意图红黑树数据结构JDK1.8 HashMap源码分析putVal()treeifyBin()treeNode()treeify()moveRootToFront()rotateLeft()rotateRight()balanceInsertion()左旋、右旋过程详细解析上一篇文章大厂面试爱问的HashMap死锁问题,看这一篇就够了,我们分析了JDK1.7中Hashmap的部分源码实现,最后说到在JDK1.8的时候HashMap
2020-08-28 11:12:25
1157
原创 大厂面试爱问的HashMap死锁问题,看这一篇就够了
大厂面试爱问的HashMap死锁问题,看这一篇就够了JDK 1.7 HashMap源码分析put()方法addEntry()方法resize()方法transfer()方法(重点)死锁演示如何规避使用Hashtable 或 ConcurrentHashMapJDK1.8的升级和仍存在的死锁问题升级内容仍可能存在死锁问题经历过大厂面试或者有所了解的同学都应该知道,HashMap是面试时面试官特别喜欢的问题,除了HashMap的扩容方式,为什么扩容的2的次幂等以外,还经常会问到HashMap死锁的相关问题。最
2020-08-23 15:49:21
5585
3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人