自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 设计模式之单例模式 JAVA实现

单例模式干啥用的用来替换全局变量,全局变量的缺点在程序一开始就会被创建,如果这个对象非常消耗资源,而程序在这次执行过程中又一直没有用到它就形成了浪费利用单例模式可以解决这个问题保证一个类有且仅有一个实例,并提供一个访问它的全局访问点如何实现1.要自己控制生成实例,所以需要使用private来声明构造函数,这样就防止了调用方创建这个对象的实例2.单例模式没有公开的构造器 一句话我命由我不由天3.如何调用这个私有的构造函数呢?static修饰的方法是类方法,不需要实例化这个类也可以调用,所以需要

2021-07-24 23:37:10 69

原创 Spring Bean的装配

Spring Bean的装配让Spring帮我们管理这些bean而不是我们自己手动去new,这样做的好处就是可以实现上下层的解耦,j2ee的开发中,我们使用某个service时都要new这个service的具体实现类,这是代码是耦合的有很强的依赖关系,通过spring bean我们可以解耦。xml实现配置一个applicationContext.xml文件xml文件头是引入一些命名空间schemaLocation 里的上下两个字符串是一组上面的一条对应相关的xmlns另一个是对应的xsd文件地址

2021-07-24 06:03:23 237 1

原创 多线程java

多线程多线程基础知识为什么要有多线程?如果把线程看做一个个人力 通过谚语’‘人多力量大’’ 那么多线程就是多个单线程,那么这么多工作力自然(真的会快吗?)工作速度快了本质原因其实是 摩尔定律的失效 ==》分布式+多核时代降临实际情况速率比较以前所以的硬件性能会按一定频率进行爆发式增长硬件发展速度>应用程序的并发量的增速21世纪因为web时代到来应用程序的并发量爆发式增长硬件发展速度<应用程序的并发量的增速内存架构共享内存架构所有CPU共享一块内存

2021-07-19 05:29:19 183

原创 jvm日志解读

jvm常用指令java -XX:+PrintGCDetails GCLogAnalysis //打印垃圾回收的事件-XX:+PrintGCDateStamps //打印垃圾回收事件的时间-Xloggc:gclog.txt //将垃圾回收日志打印至一个文件内我的电脑内存是16G,使用四分之一的物理内存作为虚拟机的堆内存如果电脑的总内存小于1G就会使用二分之一的物理内存作为虚拟机的堆内存可以使用-Xmx1g -Xms1g

2021-07-04 06:06:36 242

原创 SQL基础2

Projection投射SELECT [ALL|DISTINCT] {*} [colonene1 alias1 ,colonene2 alias2 ,…]FROM nomtable[aliastable];DISTINCT用来实现去重逻辑*显示表中所有的行alias字段的别名取别名colonne [AS] alias1 ou “Alias1”可以在别名前添加AS关键字如果你设置的别名对大小写敏感或者有特殊字符使用双引号SELECTION选择或约束SELECT nomt

2021-04-26 05:39:59 352

原创 SQL基础

SQLStructured Query Langage 结构化查询语言三个功能查询修改一个关系型数据库定义或修改关系数据库中的表数据访问控制和安全LMDLDDLIDLCDSELECTINSERTGRANTCREATEUPDATEREVOKEALTERDELETETRUNCATEDROPRENAMELMD(Langage du manipulation de données): 操作数据使用的语言

2021-04-26 05:38:32 195

原创 elasticsearch入门

索引->类型->文档安装版本为6.4.3使用插件elasticsearch实现可视化操作修改配置文件建集群起三个服务master的配置http.cors.enabled: truehttp.cors.allow-origin: “*”cluster.name: brainstormingnode.name: masternode.master: true==============随从的配置cluster.name: brainstormingnode.name: s

2021-04-17 04:35:52 187

原创 MPI图拓扑实操

MPI图拓扑实操NodeNneighboursindexedges010+1=11121+2=30, 2223+2=51, 3315+1=62先来一个例子具体代码解析在范例后如果遇到运行不成功的问题见文末有各种bug的解决方案#include <iostream>#include "mpi.h"#include <stdio.h>#include <stdlib.h>#include

2021-03-29 19:49:10 733 4

原创 MPI图拓扑

MPI图拓扑MPI图拓扑就是用有向图(数据结构里的)来描述处理器(进程)的组织结构,帮助我们分析和解决 MPI的通信问题图的基本元素(弧是有方向的,由顶点集和弧集构成的图为有向图)1.顶点的集合2.弧的集合3.邻接点4.度一个 MPI图拓扑具有四个基本元素就是类比有向图节点:处理器(进程)链接:节点之间的通信器箭头:确定起点和终点就是弧的方向索引:描述节点度的整数图拓扑只能在内部通讯器内使用图节点数不应该超过处理器的数量可以通过重组寻址过程,提高通信速度可以使用非对称结构也可以

2021-03-29 05:54:26 477

原创 Druid配置

Druid配置使用yml进行连接池配置yml是使用空格的缩进表示层级关系,空格数目不重要,只要是左对齐的一列数据,都是同一个层级的spring是第一级spring.datasource是第二级spring.datasource.druid是第三级spring的datasource的自动装配是通过其org.springframework.boot.autoconfigure.jdbc这个jar包内的DataSourceAutoConfiguration类实现的,是通过META-INF内的sprin

2021-03-27 22:33:26 5384 2

原创 ==和equals的区别

==和equals的区别之前做密码校验的时候,遇到了这个问题,当时因为不清楚两者区别,导致了一次bug,现在打算好好分析一下举个例子int i=1;String s="123";String s2="123";String s3=new String("123");boolean res=i==1;//trueboolean res2=s=="123";//trueboolean res3=s==s2;//trueboolean res4=s==s3;//false一开始我也很懵逼,

2021-03-25 07:17:07 148 1

原创 MPI启动参数设置解析

设置Codeblock的mpi启动参数Project->set program arguments设置系统参数默认情况下就算不设置参数也有一个系统参数,现在来测试一下#include <iostream>#include<stdio.h>#include<mpi.h>using namespace std;int main(int argc,char* argv[]){ int rank,size; MPI_Init(&a

2021-02-28 20:19:58 1701

原创 MPI基础入门-1

MPI将一组进程定义成一个通信器.每个进程都有一个标识符range.int MPI_Init(int argc,char * argv)创建一个通信器,这个通信器就包含了所有的进程,默认为MPI_COMM_WORLD,很形象的定义一个MPI的共有世界。argc表示变量的数目,argv是具体的传入参数int MPI_Finalize()关闭MPI的执行环境。int MPI_Comm_rank(MPI_Comm comm, int*rank)用来确定当前进程在本通信器里的进程号,建议主进程为

2021-02-28 07:23:49 560

原创 MPICH1.4+CODEBLOCK WINDOWS 64位安装指南

1.下载安装文件https://www.mpich.org/static/tarballs/1.4/一路无脑安装默认C盘2.配置环境变量用户环境变量->PATH->新建->C:\Program Files\MPICH2\bin系统环境变量->PATH->新建-> C:\Program Files\MPICH2\bin3.安装Codeblockhttps://www.codeblocks.org/downloads/binaries/然后继续无脑安装

2021-02-27 06:32:27 825

原创 JAVA反射

什么是反射机制?在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。说白了就是,有一个程序已经在运行了,但是运行中间你想知道某一个类的详细信息。第一反应,那我(人)直接在Project的文件里找到对应的类点开看看这个类的定义(.java文件)不就完事了。我这样也算是动态获取了信息。就java而言肯定不可能这么做,那么java是如何动态获取的呢?就是反射机制了。我们在id

2020-11-11 11:50:06 95

原创 shardingsphere-proxy实现水平分库分表

使用shardingsphere-proxy实现水平分库分表1.下载官方软件shardingsphere-proxy下载: 下载链接.mysql驱动安装mysql-connector-java-8.0.19.jar将下载好的jar包放入lib文件夹中2.修改配置文件config-shardingschemaName: sharding_dbdataSourceCommon: username: root password: 123456 # 连接数据库用的用户名和密码 conne

2021-08-15 23:04:08 357

原创 Mysql百万级数据插入--批处理四秒解决

100w条数据插入今天做个小实验模拟百万数据插入,思路如下使用批处理,减少连接数,每次处理十万条预编译sqlpublic class UserJDBCTemplate implements UserDAO { private DataSource dataSource; private JdbcTemplate jdbcTemplateObject; @Override public void setDataSource(DataSource dataSourc

2021-08-05 17:59:46 598

原创 Mysql-5.7.31-winx64安装

Mysql-5.7.31-winx64安装下载链接1.解压得到文件2.安装和配置新建一个配置文件 my.ini注意不要忘记[mysqld]组名,因为忘记这个报错了[mysqld]basedir = C:\\Users\\16431\\Downloads\\mysql-5.7.31-winx64\\mysql-5.7.31-winx64datadir = C:\\Users\\16431\\Downloads\\mysql-5.7.31-winx64\\mysql-5.7.31-winx6

2021-08-04 17:19:14 345

原创 MySQL事务

ACIDAtomicity: 原子性,一次事务中的操作要么全部成功,要么全部失败Consistency: 一致性 跨表跨行跨事务,数据库始终保持一致状态Isolation: 隔离性 可见性,保护事务不会互相干扰,包含四种隔离级别Durability: 持久性,事务提交成功后,不会丢数据表级锁意向锁: 表明事务稍后要进行哪种类型的锁定共享锁S排他锁X共享意向锁 IS :打算在某些行上设置共享锁排他意向锁IX :打算在某些行设置排他锁Insert意向锁 :Insert操作设置的间隙

2021-08-02 23:56:06 97

原创 Java Stream

Java Stream流式编程技术泛型是什么?java中的泛型是伪泛型,在jvm层面是没有泛型的.代码里的泛型进行编译后就会被擦除,只是在取出元素后做了一个类型检查,在JAVA里通过泛型之后就没有层级关系了,不像别的语言还是有层级关系的。可以在运行期,通过反射获取到泛型什么是流?一个来自数据源的元素队列并支持聚合操作。元素:特定类型的对象,形成一个队列。流并不会存储对象,而是按需计算数据源:流的来源,可以是数组,集合,I/O channel,产生器generator聚合操作:类似Sql语句

2021-07-30 20:10:19 91

原创 Lambda

lambda表达式是一个匿名函数 极大程度的简化了java代码的编写@FunctionalInterfacePredicate<T> 有参数,条件判断最后返回一个true false判断的一个表达式Function<T,R>有参数有返回值Consumer<T>有参数无返回值Supplier<T>无参数,有返回值import java.io.Serializable;import java.util.Collection;publi

2021-07-30 05:06:47 281

原创 jvm gc的理解

jvmGC串行GC并行GCCMS GCG1堆的GC就像一个公司的管理体系年轻代就是实习生和新员工 老年代就是老员工 年轻代和老年代的默认比例是1:2年轻代里有新生区和两个存活区比例是8:1 :1一个公司要招一批新的实习生进这个新生区进行锻炼,当这个新生区满的时候就要进行第一次选拔就是我们的ygc这时会选出一批合适的实习生可达的进入考核区一个存活区内其余不合适的实习生不可达的对象全部淘汰考核中可能出现的情况 :1.如果有一个部门的一组实习生们大对象都特别优秀,他们便直接晋升为老员工老年代2.其

2021-07-04 06:12:28 193

原创 第一次gc就出现晋升的原因

第一次gc就出现晋升的原因:新生代对象每经历依次minor gc,年龄会加一,当达到年龄阀值会直接进入老年代。阀值大小一般为15(最大也是15因为jvm只给了4位存储该值)Survivor空间中年龄所有对象大小的总和大于survivor空间的一半,年龄大于或等于该年龄的对象就可以直接进入老年代,而无需等到年龄阀值 该年龄是通过内存空间算出来的 这个年龄用来筛选eden+survivor的对象用来晋升 注意这里的age和筛选的范围 其余的对象可能被回收也可能存活下来所以存活下来的对象就是可达的且小于a

2021-07-04 00:12:04 443

原创 bit和byte的趣事

1btye单个字节=8bits 八个比特一天,小T去办宽带,被一番推销,办理了一个百兆宽带,于是开心地回家冲浪结果发现测速工具球显示最高下载速度只有12.5兆,于是小T打算去投诉这个 “黑心”运营商,但是却投诉失败了?原因就是运营商在宣传时使用的bit这个单位,而我们电脑在下载时使用磁盘的单位是byte,这两者的单位差刚好是八倍。小T只好吃了这个没文化的亏。...

2021-07-03 04:34:41 123

原创 java对象的内存大小

文章目录前言一、java对象占用内存怎么算?二、对象头对象体1.对象头2.对象体分析别用多维数组啦前言一个对象占用多少内存。一、java对象占用内存怎么算?对象头+对象体=对象二、对象头对象体1.对象头对象头 |-标记字 1个机器字 |-Class指针 1个机器字 |-数组长度(int) 数组独有2.对象体对象体 |-内部空白 |-实例数据最后可能还有外部对齐分析64位JVM中对象头占用12byte 8+4 所以一个空类实例也

2021-07-01 04:39:17 461

原创 哨兵的妙用

在做一些算法的时候,可以利用哨兵帮我们解决一些涉及边界的问题,可能可以优化算法,简化处理逻辑。举一个归并中合并的例子:如果不使用哨兵需要判断是否遍历完两段子数组 //归并merge public void merge(int[] A,int head,int mid,int tail){ int[] tmp=new int[tail-head+1]; int i=head; int j=mid+1; int k=0;

2021-02-07 12:04:58 168

原创 Comparable接口

Comparable接口这个接口会对实现其的类进行排序。这种排序方法被称为这个类的自然排序。List和Arrary这种线性的数据结构可以使用sort()方法进行自动排序。然后实现这个接口的Object可以作为SortedMap的键或者SortedSet的元素不需要实现Comparator。对于一个类C我们说他的自然排序与equals一致,当且仅当其中所有元素满足e1.equals(e2)和e1.compareTo(e2)==0值相等,e1和e2都是类C中的元素。这其中要注意的是null,null不是

2021-02-07 11:47:55 281

原创 List接口源码解读

List接口一个有序的collection(序列),就是用户可以准确控制每个元素的插入和通过整数索引去获取每个元素。和Set不一样,List是支持重复的元素出现,还支持null。List接口提供了四种方法通过寻址的方法管理元素。(add,remove,set,get)增删改查。List在Java中是以0开始的(数组)。在LinkedList中,寻址操作消耗的时间是和索引值成正比的。其中提供了ListIterator,支持所有Iterator的操作和元素插入,替换和双向遍历List提供了两种搜索元素

2021-02-05 14:19:56 241 1

原创 Collection源码解读

Collection源码解读Collection就是一组同类型的元素。这个接口干啥的?传递各种集合并且提供一些通用的方法怎么用?大部分集合类都是间接使用这个类,通过其子接口但要实现两个构造器:一个是用来创建一个空的Collection,另一个是可以放置相同类型元素的Collection。出现的异常 UnsupportedOperationException,往一个不可变的集合里加元素就会出现NullPointerException 空指针异常ClassCastException 类转换异常J

2021-02-03 22:23:57 227

原创 Consumer

@FunctionalInterfacepublic interface Consumer<T>函数式接口:有且仅有一个抽象方法,但可以有多个非抽象方法Consumer接口就是一个函数式接口Consumer可以认为是一个消费者void accept(T t);因为accept是一个抽象方法,所以可以后面自定义实现对传入元素t的操作。(该方法主要是留给后面定义做什么操作)default Consumer<T> andThen(Consumer<? super T

2021-02-02 22:26:58 100

原创 Iterable接口

@Iterable接口所有的集合类源于CollectionCollection又源于Iterable接口Iterator<T> iterator();一个泛型的迭代器JDK 1.5default void forEach(Consumer<? super T> action) { Objects.requireNonNull(action); for (T t : this) { action.accept(t); }}循环

2021-02-02 22:08:22 237

原创 一个初入后端的小白面试经

一直不知道如何开启自己第一篇优快云的博文。我自己是一个想要入门后端的技术小白,本科学的偏向于通信工程,硕士转的软工。本科期间,自我感觉还不错,误以为C++和JAVA基础就可以拿得出台面。直到最近找实习,才发现自己差的很多,和软工出身的或者计算机学院的没办法比。我想结合自己的经历和面试和大家一起分享我的一些拙见,后续我也会把自己学习的一些东西做一个总结望各位大佬们多多指点。感觉今年的实习不是...

2020-04-28 10:47:28 714

空空如也

空空如也

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

TA关注的人

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