- 博客(80)
- 收藏
- 关注
原创 Mysql(五)高级原理问题
1.Mysql的binlog有哪集中录入格式,有什么区别?1)3种格式,statement,row,mixedstatement模式:每一条会修改数据的sql都会记录binlog中。不需要记录每一行的变化,减少了binlog日志量,节约了IO,提高了性能。由于sql的执行是有上下文的,由于sql的执行是有上下文的,因为保存的时候,需要保存相关的信息。同时还有一些使用了函数之类的语句无法被复制。(例如hostname函数)3)row模式:不记录sql语句上下文相关信息。仅保存哪条记录被修
2021-07-21 14:51:34 189
原创 Mysql(四)配置文件my.cnf详解及参数调优设置
Mysql配置文件详解[client] # 客户端设置,即客户端默认的连接参数# 端口号port = 3306# 用于本地连接的socket套接字socket=/tmp/mysql.sock[mysql] # mysql的客户端是否命令自动补全,默认是不补齐no-auto-rehash# 数据库或数据表的默认字符集,等同于character_set_server参数default-character-set=utf8mb4#服务端默认的比对规则,排序规则collation_
2021-07-21 14:49:04 4195
原创 Mysql(二)硬件优化及数据量测试
Mysql硬件优化1.CPU选择:数据库读写数据,一般是IO密集(E系列-至强),主频相对低,核心数量多。2.内存容量选择: 建议2-3倍CPU核心数量(带缓存的数据库内存可以多点)。(ECC带有健康检查的)3.磁盘选择:Flash最快–SSD–PCI-E4.存储RAID级别(使用RAID10):R0R1R5: 读多写少的数据R10:性能很高5.网络:硬件网卡绑定,交换机堆叠。多个网卡绑定,0 1 主备的网卡,防止网卡坏了,不能通信。bonding。I系列的CPU,
2021-07-21 14:25:01 253
原创 Mysql(一)Explain详解
概述概念:通过explain命令获取select语句的执行计划。explain主要用于分析查询语句或表结构的性能瓶颈。核心:表的读取顺序。(id)数据读取操作的类型。(select_type)哪些索引可以使用,实际使用了哪些索引。(possible_keys)表之间的引用。(ref)每张表有多少行被优化器查询。(rows)id概念:id列的编号是select的序号列。有几个select就有几个id。select查询分类:简单查询和复杂查询。复杂查询:简单子查询派生表(from
2021-07-21 14:17:01 135
原创 Nginx配置文件详解
# 配置worker进程运行用户 nobody也是一个linux用户,一般用于启动程序,没有密码#user nobody; # 配置工作进程数目,根据硬件调整,通常同于CPU数量或者2倍于CPU数量worker_processes 1;# 配置全局错误日志及类型,默认是error#error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info;# 配置进程
2021-05-05 11:07:46 117
转载 单例设计和静态方法
单例模式VS静态方法此文翻译文主要介绍下单例模式和静态方法的区别比较结论单例模式:是指实现了单例模式的类。下文提到单例类的时候指的是同一含义。静态类: 此处的静态类并不是特指语法意义上的静态类,而是指只包含静态方法的类。下文提到的静态类或静态或静态方法,在本文中的含义是一样的。另外一篇关于单例模式的不错的文章:http://poltora.info/blog/all-you-want-to-know-about-singleton/详细单例模式和静态类都很容易理解, 他们之间有一些相似
2021-04-15 22:48:10 736
原创 k8s部署应用案例
服务介绍t-sc 服务依赖于mysqlt-kateway 服务依赖于t-scdocker镜像推送下载mysql 5.7镜像制作sc kateway镜像参考任意节点登录harbor并推送镜像到harbor仓库将镜像推送到harbor仓库k8sMaster获取登录私服Harbor的秘钥docker login 192.168.10.102## admin Harbor12345在/root/.docker/config.json里面有一个秘钥cat /root/.docker/c
2021-04-13 23:49:37 1290
原创 K8s集群部署
使用kubeadm搭建k8s集群集群环境规划4台虚拟机,每台至少2G内存,2个CPU,能联网192.168.10.102 k8smaster节点192.168.10.103 k8snode1节点192.168.10.104 k8snode2节点192.168.10.105 nfs服务器虚拟机配置4台虚拟机都需要操作# 关闭防火墙systemctl stop firewalldsystemctl disable firewalld# 关闭selinuxsed -i 's
2021-04-13 23:15:40 308 1
原创 java try catch finally return结果
public class T { public static void main(String[] args) { System.out.println(test1()); //5 Map<String, String> map = test2(); System.out.println(map.get("name")); //lisi System.out.println(test3()); //3
2021-03-23 17:47:13 136
原创 java父类子类代码块加载顺序
public class Father { static{ System.out.println("父类静态代码块"); } { System.out.println("父类构造代码块"); } public Father(){ System.out.println("父类构造函数"); } static class Son extends Father { static{ .
2021-03-23 17:30:00 138
原创 Hive核心
Hive的客户端和服务端客户端bin/hive 服务端元数据服务:nohup hive --service metastore 2>&1 &jdbc服务:nohup bin/hive --service hiveserver2 2>&1 &通过命令执行 使用-e参数执行hql语句: bin/hive -e "use test;select * from student;" 使用-f参数通过指定文本文件执行hql语句: bin
2021-03-23 17:24:08 158
原创 CAS
CAS定义CAS全称:CompareAndSwap,比较并替换。CAS操作包含3个操作数,内存位置V,期望值A,新值B。如果内存位置的值和期望值匹配,那么处理器会自动将该位置的值更新。否则处理器不做任何操作。无论哪种情况,它都会在CAS指令之前,返回该位置的值。怎样使用JDK提供CAS支持java提供对CAS操作,具体在sum.misc.unsafe类下:final native boolean compareAndSwapObject(Object var1, long var2,
2021-03-14 23:41:05 89
原创 HashMap&ConcurrentHashMap
HashMap原理,数据结构是什么,为什么?jdk7使用数组+链表。因为Hashmap是根据key计算hash值,从而得到哈希表的索引下标,而hash本质是数组实现。当出现hash冲突的时候,一个桶可能需要存放多个数据,hashmap将根据equals方法,判断hash冲突的key是否是同一个值,如果此时key不相同,利用头插法,将出现Hash冲突的Key+Value存放在链表上。缺点:如果一个链表特边长,查询的效率就会很低。链表的特性是增删快,查询慢。jdk8使用了红黑树来解决链表过长而导致效率
2021-03-14 23:35:34 123
原创 Session event listener threw exception java.lang.AbstractMethodError: org.apache.tomcat.websocket
异常: Session event listener threw exception java.lang.AbstractMethodError: org.apache.tomcat.websocket.server.WsSessionListener.sessionCreated(Ljavax/servlet/http/HttpSessionEvent;)原因springboot 2.1.x版本中tomcat引起的。解决去除pom依赖中的<!-- <depe
2021-03-12 11:53:55 1657
原创 线程池ThreadPoolExecutor整合Springboot使用
pom.xml为了在application.properties自定义的配置有提示 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>tru
2021-03-11 16:13:41 2215
原创 CompletableFuture任务编排案例
场景一个接口内有很多的业务逻辑,这些业务逻辑有的是可以并行执行的,有的是有先后顺序的。为了保证异步执行提升效率,并且异步中又有先后逻辑顺序,可以使用CompletableFuture异步编排的类。异步编排任务的创建及基本使用/** * 1:异步编排任务的创建及基本使用 * 使用线程池,异步执行任务。并且可以获取到任务的返回值。并且对任务的结果进行二次加工。 */public class CompletableFutureTest { public static ThreadPoo
2021-03-11 15:57:18 612
原创 nginx代理转发配置
需求centos服务器,192.168.4.1docker安装了两个springboot服务:192.168.8.20:8080 192.168.8.21:8081对外统一要用 192.168.4.1/xxx去访问所有的服务案例1本身访问服务2的url是: 192.168.8.21/ss浏览器输入 192.168.4.1/ss 就要访问到服务2的转发配置:server { listen 80; server_name localhost; charset
2021-03-05 19:54:52 4552
原创 Springboot 拦截器中使用application.properties配置的值
需求1.Springboot项目中,拦截器中想要获取到application.yml中的值2.Springboot项目中,拦截器中想要注入 RestTemplate或者其他对象3.Springboot项目中,使用了拦截器如果过滤掉swagger,让swagger可以正常访问。实现InterceptorProperties.java读取application.yml中user开头的配置。@Component@ConfigurationProperties(prefix = "user"
2021-03-05 13:39:29 1726
原创 zookeeper动态修改spring中的Enviornment对象中的配置
需求不停止代码,动态修改springboot的enviorment的值。原理:利用zookeeper的节点watch机制。原理分析1.Enviornment加载的时候会把application.properties中的文件,加载到enviorment–> propertySources–>propertySourcelist–>OriginTrackedMapProertySource中。2.我们可以再程序启动的时候,使用@PostConstruct注解,去连接zookee
2021-03-01 12:56:49 632
原创 ThreadLocal原理
1.原生jdbc如何实现事务伪代码 conn = DBpool.getConnection(); conn.setAutoCommit(false); insert(data,conn); //业务1 update(data2,conn); //业务2 conn.commit(); //事务必须在一个连接中才是有效的,因此必须要把获取到的conn连接传递到每个sql里面,才能保证事务。2.Spring对jdbc的事务如何实现的@Transactional注解保证事务,本质是AOP,
2021-03-01 11:50:17 178
原创 Redis核心原理
Redis 多路IO复用及原理Jedis源码 Jedis jedis = new Jedis("192.169.4.4", 6379); jedis.set("name","aa"); //socket jedis.close(); 底层是 this.socket = this.jedisSocketFactory.createSocket(); 创建了一个Socket socket-->tcp协议--->操作系统的内核 os kernel 模拟redis服务端和客户端
2021-02-27 22:34:38 156
原创 Mysql索引数据结构
索引的本质帮助Mysql高效查询的一种数据结构,存储在磁盘中。Mysql innodb存储引擎索引数据结构有哪些[1].hash索引[2].B + tree索引[3].为什么innodb引擎不让用户手动去控制hash索引?例如:select * from user where fname= ‘peter’根据fname=peter计算相应的hash值,找到9527这一行的记录指针。2)需要比对值是不是peter。(因为会有hash碰撞,如果不同的value通过一个hash计算达到了相
2021-02-27 12:36:56 148
原创 aop动态切换mysql数据源
需求Springboot项目,配置多个数据源,动态自动切换数据源。实现1.mysql建库建表1.创建4个库 test/customer/labormoney/employee2.对应库下创建表:person/customer/labor/employee3.每个表都是两个字段: id varchar(20),name varchar(20)2.pom.xml <parent> <groupId>org.springframework.boot&l
2021-02-26 17:21:45 251
原创 springboot注解和Aspect切面
场景分析 public User gerUser(String id) { //1.查询缓存 boolean cache = CacheUtil.isCache(id); //2.缓存命中,返回数据 if (cache) { System.out.println("缓存命中了-----------------"); return CacheUtil.getCache(id);
2021-02-26 11:49:29 489
原创 Spring data jpa 操作Mysql
1.maven依赖pom.xml <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <maven.compiler.compilerVersion>1.8</maven.compiler.compil
2021-01-31 22:26:24 178
原创 java(docker) 中文乱码
1.使用java -jar xxx.jar在linux服务器上打印出的中文日志乱码的解决: java -Dfile.encoding=utf-8 -jar xxx.jar2. docker容器中读取外挂的linux服务器上的中文文件名乱码: (文件上传到服务器中文乱码)设置容器的环境:ENV LANG=C.UTF-8如果使用的是docker-compose,如下: environment: LANG: C.UTF-8 LANGUAGE: en T
2021-01-31 21:52:32 718
原创 大数据量sql文件导入mysql测试
1.sql文件说明a.sql 400M(3.7w条)b.sql 1.48G (17.3万条)c.sql 6G (24万条)主要存储的是互联网爬取的文章,包括内容。2.sql结构所有的sql文件的表结构如下:3.导入mysqlmysql使用docker安装mysql的my.cnf配置如下:[client]port = 3306socket=/tmp/mysql.sock[mysql]no-auto-rehashdefault-character-set=utf8m
2020-12-20 14:03:58 601 1
原创 java代码实现word转pdf(windows和linux都适用)
1.外挂一个jar包aspose-words-15.8.0-jdk16.jar 这个需要到官网下载2.准备一个配置文件license.xml 放在maven项目的resources目录下<License> <Data> <Products> <Product>Aspose.Total for Java</Product> <Product>Aspose.Words for Java<
2020-12-17 22:44:15 2987 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人