- 博客(161)
- 资源 (21)
- 收藏
- 关注
原创 distinct 和 order by 使用时注意事项
distinct 和 order by 使用时注意点:案例:查询最近登录的2个不同的用户表中的数据如下sql语句 按照时间倒序:select a.login_time, a.nike_name from test_data a order by a.login_time desc;按照上面的结果我们把nick_name去除重复后取出前两条使用limit 2: select DISTINCT a.nike_name from test_data a order by a.lo.
2021-09-24 16:09:55
1259
原创 Java面试题
一.ArrayList、LinkedList 和 Vector 的区别。1.ArrayList非线程安全的,Vector是线程安全的。2.ArrayList扩容时按照50%增加,Vector 按照100%增加或则根据指定的扩容增量进行增加。3.ArrayList的性能要高于Vector4.LinkedList是链表实现的,因此查询慢,增删快。5.LinkedList提供了List接口没有提供的方法,方便数据的头尾操作。二.快速失败 (fail-fast) 和安全失败 (fail-safe) 的区
2021-07-04 16:48:59
239
原创 jvm垃圾回收器之CMS收集器
jvm垃圾回收器之CMS收集器cms收集器 (Concurrent Mark Sweep 并发标记删除)cms收集器摘要CMS (Concurrent Mark Sweep)收集器是一种以获取最短回收停顿时间为目标的收集器。目前很大一部分的 Java应用集中在互联网站或者B/S系统的服务端上,这类应用尤其重视服务的响应速度,希望系统停顿时间最短,以给用户带来较好的体验。CMS收集器就非常符合这类应用的需求。学习cms收集器之前带着问题去学习cms收集器在执行时都包含那几..
2021-03-27 11:08:16
265
原创 jvm内存模型
jvm内存模型主内存和工作内存内存间的交互操作对volatile的特殊规则对long和double的特殊规则原子性,可见性和有序性先行发生原则jvm内存模型的作用(为什么要定义内存模型)1:用来屏蔽硬件和各种操作系统之间内存访问的差异。可以让Java程序在各种不同硬件的操作系统上具有一致的访问效果。(外话: 这也就是为什么说,java具有具有跨平台性,因为不同平台jvm)。2:java内存模型主要通过定义内存访问规则来屏蔽硬件和操作系统之间内存访问的差异。内存访问规则通常指实.
2021-03-26 09:54:33
425
1
原创 开源javaoffers之spring框架的多数据源路由(切换)
业务场景公司一项目中的业务涉及到了多个数据库,业务需求要查寻更改多个数据库中的数据, 查询比较容易,但是在更改时需要涉及到数据的一致性。多数据源要保持数据的一致性,这时你有可能想到的是分布式事务,但是分布式事务不适合这个场景,因为这是一个项目包含多个数据源,而并非一个项目设计到多个项目,针对与这种业务场景我们使用的是开源技术 com.javaoffers:mh-base-db-router:1.0.2maven<dependency> <groupId>com.jav.
2021-01-17 22:14:42
18467
原创 ubuntu给网卡设置静态ip
第一步查看网卡:ip a 或则 ifconfig -a选择一个非(Local Loopback)网卡, 然后将网卡的名称记录一下比如为enp1s0第二步: 在目录/etc/netplan/ 下创建00-installer-config.yaml 内容如下# This is the network config written by 'subiquity'network: ethernets: enp6s0: #enp1s0代码网卡名称,把该名称进行替换为自己的网卡名称
2020-11-14 19:13:30
6131
原创 netty学习总结
**Bootstrap** 1、客户端的引导类,用来连接远程主机 2、通过调用bootstrap.connect()链接服务端 3、连接服务端时指定ip、port 4、有1个EventLoopGroup**ServerBootstrap** 1、服务端的引导类,用来接受客户端请求 2、通过调用serverBootstrap.bind()接受客户端 3、在服务器监听一个端口轮询客户端的“Bootstrap”或Datagr
2020-11-14 19:08:07
5656
1
原创 Linux Mint 安装 remmina 远程桌面
Linux Mint 安装 remmina 远程桌面1.sudo apt-get install remmina2.sudo apt-get install remmina-plugin-rdp RDP插件 用来连接远程桌面3.sudo apt-get install remmina-plugin-vnc VNC插件4.sudo apt-get install libfreerdp-plugins-standard5.重启或注销一下电脑下图为链接远程桌面:...
2020-10-31 01:46:43
6839
原创 KVM启动报错: 连接到图形控制台出错
下面为软件源文本:# 默认注释了源码仓库,如有需要可自行取消注释deb https://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiverse# deb-src https://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiversedeb https://mirrors.ustc.edu.cn/ubuntu/ xenial-...
2020-10-27 11:40:30
1575
原创 curator api 使用操作zk
package com.mh.others.zk.curator;import com.mh.others.log.LOGUtils;import org.apache.curator.*;import org.apache.curator.framework.CuratorFramework;import org.apache.curator.framework.CuratorFrameworkFactory;import org.apache.curator.framework.api.tr
2020-10-25 00:49:03
6288
原创 vue 添加显示,编辑隐藏 form表单中的一列
v-show: true为显示,false为隐藏v-show=“this.data.isShow” 该值:this.data.isShow 在下面配置为true(默认).<Form ref="dataFrom" :model="dataFrom" :label-width="70" :rules="dataFromValidate"> <FormItem label="op" prop="opOpValue"> <Input v-model="dataFro
2020-09-27 21:58:45
4911
原创 vue环境搭建
下载地址: https://nodejs.org/en/download/解压命令:xz -d node-v12.18.4-linux-x64.tar.xz tar -xvf node-v12.18.4-linux-x64.tar node-v12.18.4-linux-x64/配置环境变量export NODEJS_HOME=/home/cmj/soft/node-v12.18.4-linux-x64export PATH=$PATH:$NODEJS_HOME然后在idea-vue项
2020-09-27 21:41:03
5636
1
原创 nginx配置文件
nginx配置文件结构mainevents(...)http{ server { location {...} }}从上面的描述分为5个模块: main,events,http,server,location.模块描述main配置nginx的子进程数,子进程优先级,以及子进程所属用户/组, 错误日志位置与级别,进程能够打开’文件描述符数量’ 和配置pid 位置等events配置nginx处理链接的方式httpnginx处理http请求的主
2020-09-27 00:19:14
5652
原创 linux(linux mint,ubuntu) 安装kvm
linux 安装kvm首先安装cpu检测1: sudo apt-get install cpu-checker查看cpu内核2: egrep -c '(vmx|svm)' /proc/cpuinfo检测是否支持 kvm3: kvm-okINFO: /dev/kvm existsKVM acceleration can be used开始安装(忽略重复): sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder brid
2020-09-23 00:23:24
877
原创 netty 之 解决tcp粘包拆包
tcp: 传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议.(百度百科), 因为tcp是面向(字节)流的协议,所以就好像河流一样没有分割界限.所以tcp协议对要发送消息是不做分割的(即只是顺序发送字节数据流,但是并不保证会把我们的消息整体发过去,有可能先发前部分然后再发后半部分(拆包),也有可能会把两条我们要发送的消息合并进行发送(粘包))
2020-09-20 22:18:51
5758
原创 简述设计模式-单例(Singleton)模式
概述:如果要保证系统里一个类最多只能存在一个实例时,我们就需要单例模式。这种情况在我们应用中经常碰到,例如缓存池,数据库连接池,线程池,一些应用服务实例等。在多线程环境中,为了保证实例的唯一性其实并不简单,这章将和读者一起探讨如何实现单例模式最简单的单例public class Singleton {private static Singleton instance = new Singleton();//other fields...private Singleton() {}pu
2020-09-15 00:14:19
18254
原创 mvn 私服推送jar,并从私服下载jar
上传命令:mvn deploy:deploy-file -DgroupId=主包名 -DartifactId=项目名 -Dversion=版本号 -Dpackaging=jar -Dfile=要上传到私服的jar包 -Durl=私服地址 -DrepositoryId=仓库id(在setting.xml中配置)私服地址http://urcs.feinno.com:5260/repository/maven-releases私服密码username/password案例如下:cmj@cmj-I
2020-09-14 23:34:54
5946
原创 es 操作 crud 简单操作
基础知识: 在Elasticsearch中,文档归属于一种类型(type),而这些类型存在于索引(index)中,我们可以画一些简单的对比图来类比传统关系型数据库:Relational DB -> Databases -> Tables -> Rows -> ColumnsElasticsearch -> Indices -> Types -> Documents -> FieldsPUT 插入值 (PUT 必须大写)cmj@cmj-Inspiro
2020-09-14 13:13:56
336
1
原创 kibana es 中中文显示乱码??????
先看一张图kibana中显示????乱码, 从响应json数据中可以看到 msg的数据为????? 乱码,说明 从es中获取数据时就是乱码, 与kibana应该没有多大关系. 所以调整了一下客户端向es 上传(put)数据时显示指定一下编码 为utf-8.然后删除es中测试数据, 重新put数据, 再次查看没有????乱码了 ,如图...
2020-08-23 23:20:25
3637
1
原创 简述设计模式-模板方法
模板方法: 提前定义好的一套/一组具有逻辑顺序的动作.去喝水案例 : 1 拿起杯子, 2 喝水, 3 放下杯子. 每个人的喝水习惯有可能不同, 比如A喜欢用玻璃杯, B喜欢用保温杯, A喜欢喝可乐,B喜欢喝温水,A喜欢把杯子放在自己的左边, B喜欢把杯子放在自己的右边. 所以模板方法通常是对一组具有逻辑顺序动作的抽象提取.类:public abstract class WantWater { public void toWantWater(){ pickUpCap()
2020-08-23 20:52:24
18276
原创 docker 修改容器启动配置
在启动docker容器时,有可能一些参数写错了,或则在某些场景下我们需要修改容器的启动的参数,这时我们可以直接去修改容器启动的参数文件中的数据即可.容器启动参数参数的位置: /var/lib/docker/containers/root@cmj-Inspiron-7590:/home/cmj# cd /var/lib/docker/containers/root@cmj-Inspiron-7590:/var/lib/docker/containers# ll总用量 68drwx------ 17
2020-08-23 18:32:15
1139
原创 Java中的JVM关闭钩子
Java中的JVM关闭钩子(翻译篇)关机钩子是一种特殊的构造,允许开发人员插入一段代码,以便在JVM关闭时执行。当我们需要在VM关闭时执行特殊的清理操作时,这就很方便了。通常使用关机钩子处理的一般结构,如确保我们调用特殊过程在应用程序退出(调用system . exit(0))将不工作情况下VM关闭是由于外部原因(例如杀死请求从O / S),或由于资源问题(内存)。我们很快就会看到,shutdown钩子很容易解决这个问题,因为它允许我们提供一个任意的代码块,JVM在关闭时将调用这个代码块。从表面上看
2020-08-14 00:54:54
18984
原创 程序的原子性操作
作为开发人员经常会用到锁, 因为锁通常来说具有原子性,那原子性又是什么? 有些人说,原子性就是同一个代码块在任何时刻只能被一个线程访问执行,其他线程则等待(阻塞). 细想一下这句话应该属于排它性. 也有人说不可分割就属于原子性.科普一下知识:并行: 多个cpu在同一时刻执行各自的多线程并发: 单个cpu 在同一时间段循环执行多线程线程: 用来执行具有一系列关联性的操作单元(本质上是机器码, 从编程角度来说就是你的程序代码, 因为程序码最终会编译成机器码)总线锁: CPU芯片上有一条引线
2020-08-14 00:21:09
19386
原创 tomcat之 解析表单参数
核心类: /home/cmj/.m2/repository/org/apache/tomcat/embed/tomcat-embed-core/9.0.16/tomcat-embed-core-9.0.16-sources.jar!/org/apache/catalina/connector/Request.java:3276/** * Parse request parameters. */protected void parseParameters() { parametersPars
2020-06-28 23:34:40
5937
原创 <init>构造器 与构造方法的关系
java中的构造器有两种:分别是 实例构造器<init>和类构造器<cinit> . 构造器的作用: 构造器的产生过程实际上是一个**代码收敛的过程**,**编译器会把语句块**(对于实例构造器而言是“{}”块,对于类构造器而言是“static{}”块)、**变量初始化**(实例变量和类变量)、**调用父类的实例构造器**(仅仅是实例构造器,<clinit>()方法中无须调用父类的<clinit>()方法,虚拟机会自动保证父类构造器的执行,但在<clinit>()方法中经常会生成调用java.lang.
2020-06-28 22:48:42
20690
2
原创 Reflections 反射api使用总结
package com.mh.others.reflect_;import com.mh.others.log.LOGUtils;import org.junit.Test;import org.reflections.Configuration;import org.reflections.Reflections;import org.reflections.scanners.*;import org.reflections.util.ClasspathHelper;import org.
2020-06-21 23:35:00
4516
原创 java 内部类 知识梳理
java内部类和外部类之间的关系. 通过代码加注释的形式说明.package com.mh.others.class_;import java.lang.reflect.Constructor;/** * 内部类的 * @author mingjie * */public class OutClassAndInnerClass extends OutClassAndInnerClassParent{ public String name = "OutClassAndInnerClass
2020-06-21 15:30:56
18261
原创 读书笔记之 jvm的 关闭钩子
参考书籍: java并发编程实战.jvm在正常关闭时会调用以注册的关闭钩子(ShutDown Hook), 通过 Runtime.getRuntime().addShutdownHook(Thread) 注册关闭钩子, jvm不保证关闭钩子的执行顺序. 在jvm关闭时,如果有线程(守护线程和非守护线程)仍然在运行, 那么这些线程将与关闭钩子线程一起并发执行, 当所有关闭钩子正常执行结束时,jvm会运行终结器,然后再停止. 当jvm最终结束时,所有的线程被强行结束. 如果关闭钩子或终结器没有执行完成, 那
2020-06-21 15:09:01
5647
原创 docker 安装elk
es: 日志储存logstash: 日志收集器kibana : 日志查询=============================================================================================================https://www.docker.elastic.co/ 版本选择下载镜像docker pull docker.elastic.co/elasticsearch/elasticsearch:6.0.1
2020-06-15 00:04:26
5671
原创 docker常用命令
常用命令:docker build -t [容器名] . 根据Dockerfile 配置开始打包镜像 注意:后面有个点,表示当前目录下service docker restart 重启dockerdocker images 查看当前的镜像文件docker ps -a 查看当前运行的镜像程序docker pull 拉去镜像文件 从镜像仓库docker build -t [容器名] . 注意:后面有个点,表示当前目录下docker run 运行
2020-06-14 17:19:36
5712
原创 ReentrantLock源码阅读
ReentrantLock 是jdk提供的一种锁机制,该锁支持公平锁和非公平锁这两种。这两种锁的实现原理是 通过一 锁队列,公平锁是按照锁队列顺序执行,而非公平锁则不是按照锁队列顺序执行,会存在锁竞争,因为新锁会和锁队列中等待的锁进行竞争,所以有可能新锁会竞争到锁(如果竞争不到则加入锁队列)。下图为类依赖关系。NofairSync , FairSync 是 ReentrantLock 中的内部类。分别是非公平和公平锁。接下来从源码入手,先查看NofairSync:new ReentrantLock()
2020-06-01 01:22:20
18294
原创 读书笔记之 java中的标准注解
java给我们提供了一些标准的注解,在这里做一下统计。注解名词应用场合目的Deprecated全部将目标标记为过时的SuppressWarnings除了包和注解之外的所有情况阻止某个给定的类型的警告信息Override方法检查该方法是否覆盖了某一个超类的方法PostConstruct方法被标记的方法应该在构造之后立即被调用PreDes...
2020-05-03 20:48:30
18369
原创 spring源码之bean定义注册
看过spring源码的都知道,每个bean的初始化都需要经过BeanDefinition,BeanDefinition理解为bean定义:用于描述bean的信息,spring容器根据bean定义进行 IOC/AOP, 通常在业务开发时,我们常用的注解 @Component, @Service, @Controller,@Repository,@Bean 可以使一普通类成为BeanDefiniti...
2020-05-02 08:02:43
5779
原创 架构方案之 单用户登陆
老板要求一个同一个帐号只能在一个移动设备上登陆,不允许多登陆。大致方案有两种:一:给予cookie(存放一随机数uuid)+Mysql,登陆时将生成新uuid记录在数据库user表中,每一次请求都需要都需要匹配uuid, 如果uuid 被改变说明已经在其他设备登陆。缺点:频繁的请求数据库,优点,开发简单二:给予cookie(存放一随机数uuid)+userId+reids, 登陆时生成新的u...
2020-04-24 00:55:11
255
原创 spark HA遇到的坑
集群的结构:node1 Master zknode2 Master zknode3 Workernode4 Workernode5 Worker本人在搭建HA步骤如下(这里的JDK,ZK 安装省略,只说sparkHA 安装)安装配置Spark,修改Spark配置文件(两个配置文件spark-env.sh和slaves)vim spark-env...
2020-04-22 01:56:50
5801
11
原创 读书笔记之 volatile关键字理解与使用
volatile关键字我们在开发的时候很少使用,在看spring源码的时候很有可能会看到,但是很少有人知道在什么环境下使用。本人查看一些书籍资料后做一下总结。volatile 通常理解为jvm虚拟机提供的最轻量级的同步机制(本句来源于‘深入理解JAVA虚拟机’)两大特征:(1)使用volatile的变量对所有线程具有可见性。(2)使用volatile的变量禁止指令重排序两大特征的具体理解...
2020-04-21 02:33:44
18686
6
cpdetector-1.0.4.jar 针对info.monitorenter.cpdetector.io.*包
2019-10-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人