知识积累
文章平均质量分 86
sunnvig
一个java开发的小白程序猿
展开
-
springboot项目的创建
springboot创建1.controller@RestControllerpublic class BaseController { @RequestMapping(value = "/health_check") public String healthCheck() { return "everything is ok"; } } ...原创 2020-03-15 18:29:05 · 229 阅读 · 0 评论 -
ExcelUtils 读取和下载
package com.example.demo;import java.io.*;import java.util.*;public class ExcelUtils { /** * 读取excel数据 * @param multipartFile * @param columns * @return */ pub...原创 2020-02-25 10:05:51 · 397 阅读 · 0 评论 -
简述Zookeeper
Zookeeper一个通用的无单点问题的分布式协调框架,以便让开发人员将精力集中在处理业务逻辑上。①Zookeeper 可以被用作注册中心。②Zookeeper 是 Hadoop 生态系统的一员;③构建 Zookeeper 集群的时候,使用的服务器最好是奇数台。ZooKeeper 是一个典型的分布式数据一致性解决方案,分布式应用程序可以基于 ZooKeeper 实现诸如数据发布/订阅、...翻译 2019-09-30 14:55:58 · 246 阅读 · 0 评论 -
springCloud 简介
1。服务注册与发现通过@EnableEurekaServer注解启动一个服务注册中心提供给其他应用进行对话。最后在主类中通过加上@EnableDiscoveryClient注解,该注解能激活Eureka中的DiscoveryClient实现,才能实现Controller中对服务信息的输出。2. 服务消费者Ribbon是一个基于HTTP和TCP客户端的负载均衡器。在应用主类中,...转载 2019-05-23 18:29:52 · 190 阅读 · 0 评论 -
技术体系
公司发展都是要经过技术体系到变更到。由单体服务到微服务架构,从springMvc到springBoot到springCloud;单体服务到多服务之后还要增加中间件mq,mysql分库,多数据源,redis和rpc等存储NOSQL——hbase、ESSQL——分库分表、读写分离 缓存——redis 小文件——pdfs交互Rpc MQ 数据交换基础设施配置中心、短...原创 2019-04-30 12:33:16 · 1500 阅读 · 0 评论 -
多数据源配置
项目中由于需要访问不同的数据库,所以增加了多数据源配置。单独数据源的时候。在application.yml中,会匹配路径和dev文件中的数据库配置,但是多数据源之后,application.yml中的mybatis会失效##mybatismybatis: mapperLocations: classpath*:mappers/*/*.xml configuration: ...原创 2019-04-30 09:55:51 · 226 阅读 · 0 评论 -
锁
分段锁分段锁其实是一种锁的设计,并不是具体的一种锁,对于ConcurrentHashMap而言,其并发的实现就是通过分段锁的形式来实现高效的并发操作。我们以ConcurrentHashMap来说一下分段锁的含义以及设计思想,ConcurrentHashMap中的分段锁称为Segment,它即类似于HashMap(JDK7与JDK8中HashMap的实现)的结构,即内部拥有一个Entry数...转载 2018-12-19 10:24:01 · 138 阅读 · 0 评论 -
操作系统简单问题&&简单红黑树
操作系统问题1.进程和线程的区别:a.粒度性分析;b.调度性分析;c.系统开销分析:线程不拥有系统资源;多线程线程是程序执行时的最小单位,它是进程的一个执行流,是CPU调度和分派的基本单位,一个进程可以由很多个线程组成,线程间共享进程的所有资源,每个线程有自己的堆栈和局部变量。线程由CPU独立调度执行,在多CPU环境下就允许多个线程同时运行。同样多线程也可以实现并发操作,每个请求分配一...转载 2018-12-18 17:37:27 · 310 阅读 · 0 评论 -
Zookeeper和正则表达式
NGINX 1.反向代理 2.负载均衡 3.http服务器(包含动静分离) 4.正向代理 高并发流量的控制 1.缓存 2.降级 3.限流 限流的方式:计数器,滑动窗口,漏桶,令牌 初始化实例化 1.一个实例变量在对象初始化会被赋值几次?JVM为一个对象分配完内存之后,会给每一个实例变量赋予默认值,第一次;...转载 2018-12-11 21:42:02 · 491 阅读 · 0 评论 -
mysql和redis
MYSQLInnoDB会选择主键作为聚集索引,没有则选择第一个不包含有NULL值的唯一索引所谓主键索引,还没有则选择内置6字节长的ROWID作为隐含的聚集索引InnoDB默认的装载因子15/16nnoDB:支持事务处理等不加锁读取支持外键支持行锁不支持FULLTEXT类型的索引不保存表的具体行数,扫描表来计算有多少行DELETE表时,是一行一行的删除...转载 2018-12-11 21:39:02 · 1171 阅读 · 0 评论 -
消息队列 MQ
mq 消息总线(Message Queue),后文称MQ,是一种跨进程的通信机制,用于上下游传递消息。消息中间件 实现异步处理的好处:将非核心业务逻辑功能异步处理,可以提高响应效率,提高CPU的吞吐量,改善用户的体验; 系统耦合和事务的最终一致性:1.消息中间件降低各个系统至今的耦合性,不会因为其他系统的异常影响到自身业务逻辑。2.通过消息中间件实现事务的最终一致性效果;...转载 2018-11-28 15:52:55 · 350 阅读 · 0 评论 -
简单的Session共享
httpGet.setHeader("Content-Type", "application/json;charset=utf-8");1. 为什么需要Cookie? HTTP是一种无状态的协议,客户端与服务器建立连接并传输数据,数据传输完成后,连接就会关闭。再次交互数据需要建立新的连接,因此,服务器无法从连接上跟踪会话,也无法知道用户上一次做了什么。这严重阻碍了基于We...转载 2018-11-26 19:19:08 · 154 阅读 · 0 评论 -
分布式事务和数据库分库分表
https://blog.csdn.net/wanghang88/article/details/79762761 1:分布式事物的理解: 分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务节点上,分布式事务需要保证这些小操作要么全部成功,要么全...转载 2018-11-26 09:48:49 · 628 阅读 · 0 评论 -
Java并发包之闭锁/栅栏/信号量及并发模型和锁
threadLocal能够为每一个线程维护变量副本,常用于在多线程中用空间换时间 进程死锁:进程死锁,指多个进程循环等待他方占有的资源而一直等待下去的局面; 进程活锁:线程1,2需要同时占有a,b才可以,1占有a,2占有b,为了避免死锁,1,2分别释放,a,b空闲,此时1,2又同时抢锁,发生活锁;(电梯上遇到人,一个进一个出,2个人同时往一个方向让路,来回反复)进程饥饿:指某...转载 2018-11-20 17:39:54 · 384 阅读 · 0 评论 -
equals和hashcode的重写
set集合中可以自动去除掉重复元素也是重写了 equals和hashcodeequals的重写 //Employee 是 person 的子类 // 这个是要求姓名一致,id一致才是同一个职员,进行equals重写比较 @Override public boolean equals(Object obj){ if(obj instanceof ...转载 2018-11-15 11:15:34 · 161 阅读 · 0 评论 -
http协议+SSO
HTTP前端缓存概述 主要分 HTTP缓存和浏览器缓存。 HTTP缓存是HTTP请求传输用到的缓存,主要是在服务器代码上设置; 浏览器缓存是由开发在前端js上进行设置; HTTP缓存:整体流程:HTTP缓存都是从第二次请求开始的。 第一次请求资源时,服务器返回资源,并在respone header头中回传资源的缓...转载 2018-11-14 09:09:18 · 781 阅读 · 0 评论 -
网址知识点
关于springCloudhttp://www.ityouknow.com/spring-cloud.htmlhttp://blog.didispace.com/categories/Spring-Cloud/https://blog.csdn.net/liaokailin/article/category/6212338http://www.itmuch.com/http://xuj...转载 2018-11-06 10:27:06 · 196 阅读 · 0 评论 -
负载均衡+serializable接口
负载均衡1. DNS做负载,通过给客户端解析不同的IP地址,让客户端的流量直接到达各个服务器。但是这种方法有一个很大的缺点就是延时性问题,在做出调度策略改变以后,由于DNS各级节点的缓存并不会及时的在客户端生效,而且DNS负载的调度策略比较简单,无法满足业务需求,因此就出现了负载均衡。客户端的流量首先会到达负载均衡服务器,由负载均衡服务器通过一定的调度算法将流量分发到不同的应用服务器...转载 2018-11-04 16:13:06 · 246 阅读 · 0 评论 -
简单的FileUtil工具类方法
IO模型阻塞IO(BIO)同步堵塞I/O模式,数据的读取写入必须堵塞在一个线程内等待其完成 一排水壶烧水,一个线程停留在一个水壶那知道烧开,才去处理下一个水壶。期间等待非堵塞IO(NIO)同步支持堵塞与费堵塞模式,但是主要使用同步费堵塞IO 一个线程不断的轮询每个水壶的状态,看是否水壶状态发生了改变,从而进行下一步操作异步IO(AIO)异步非堵塞I/O模型...原创 2018-10-10 11:12:01 · 1543 阅读 · 0 评论 -
多线程的粗浅学习ing
https://www.cnblogs.com/sachen/p/7401959.html线程池的种类,区别和使用场景newCachedThreadPool:适用:执行很多短期异步的小程序或者负载较轻的服务器; 高并发 大数据的时候可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。newFixedThreadPool:适用:执行长期的任务,性能好很多 ...原创 2018-08-21 11:13:08 · 164 阅读 · 0 评论 -
简单的controller方法和action方法
不同系统的controller方法和对应的action方法都不一样,但是基本知识调用路径和接口的定义方法有区别,方法中的编写是一样的,post和get定义,接口参数的定义,路径的编写和注解的使用1.ControllerPost@RestController@RequestMapping("/store")public class StoreController extend...原创 2018-08-20 20:10:42 · 2054 阅读 · 0 评论 -
idea+git的使用学习中
1.-----项目分支在切换的时候,容易手误删除未push或者未合并生产的分支,ccommit后,会在本地仓库存在一个commitID,通过git命令找到对应时间点的commitID,将他branch成新的分支就可以还原。2.合并代码时经常会有冲突,因为当前分支可能是由于许久未更新master代码,哈,我就经常将master代码pull到最新,然后用master来merge到当前分支,。有...转载 2018-05-17 16:50:26 · 258 阅读 · 0 评论 -
easyUI学习中
1.当创建用户时,打开一个对话框并清空表单数据。function newUser(){ $('#dlg').dialog('open').dialog('setTitle','New User'); $('#fm').form('clear'); url = 'save_user.php';}2.当编辑用户时,打开一个对话框并从 datagrid 选择的行中加载表单数据。var ...转载 2018-05-17 14:34:30 · 377 阅读 · 0 评论 -
swing的简单控件列表
这几天学习了swing的简单方法,发现swing和android,c#,mfc有一种神相似,所以基本上就是过一遍,看一下具体的方法。通过一些小例子理解一下方法的用处。之后还要学习一下RCP,rcp主要是对swing的封装和组件的优化,在处理布局和页面时更加方便。小例子主要是看的 www.yiibai.com/swing/1.java.awt.Component类: public abstract...原创 2018-04-12 11:27:41 · 983 阅读 · 0 评论 -
oracle和mysql
1. Oracle是大型数据库而Mysql是中小型数据库,Oracle市场占有率达40%,Mysql只有20%左右,同时Mysql是开源的而Oracle价格非常高。2. Oracle支持大并发,大访问量,是OLTP最好的工具。3. 安装所用的空间差别也是很大的,Mysql安装完后才152M而Oracle有3G左右,且使用的时候Oracle占用特别大的内存空间和其他机器性能。4.Ora...转载 2018-02-09 14:51:02 · 217 阅读 · 0 评论 -
String的值传递和引用传递
public class StrTest{public static void main(String[] args){String s0 ="hello";String s1 ="world";String s2 =s0 + s1;String s3 ="hello"+"world";System.out.println(s2=="helloworld");System.out.println(...转载 2018-02-08 17:41:15 · 727 阅读 · 1 评论 -
json+ajax 在前后台的简单交互
页面上有一个数组,里面存放了多个json,需要将该数组作为参数传给java后台。var data= [{name:"jon",age:"12"},{name:"jic",age:"18"},{name:"petter",age:"14"}]$.ajax({ url:'./service/iposremoteapprove/caseToUser.do',原创 2018-02-02 08:53:06 · 375 阅读 · 0 评论 -
redis简单学习
Redis 命令参考http://redisdoc.com/Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。 Redis 与其他 key - value 缓存产品有以下三个特点:Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。 Redis不仅仅支持简单的key-value类型的数据,同时还提供l...转载 2018-01-30 14:41:32 · 409 阅读 · 0 评论 -
Junit 简单学习
我们在编写大型程序的时候,需要写成千上万个方法或函数,这些函数的功能可能很强大,但我们在程序中只用到该函数的一小部分功能,并且经过调试可以确定,这一小部分功能是正确的。但是,我们同时应该确保每一个函数都完全正确,因为如果我们今后如果对程序进行扩展,用到了某个函数的其他功能,而这个功能有bug的话,那绝对是一件非常郁闷的事情。所以说,每编写完一个函数之后,都应该对这个函数的方方面面进行测试,这样的测转载 2018-01-30 14:17:38 · 191 阅读 · 0 评论 -
Tomcat和Weblogic的区别
J2ee开发主要是浏览器和服务器进行交互的一种结构.逻辑都是在后台进行处理,然后再把结果传输回给浏览器。可以看出服务器在这种架构是非常重要的。 这几天接触到两种Java的web服务器,做项目用的Tomcat,看视频看的是WebLogic Server(WLS),都是web服务器,有什么区别和联系呢? (一)先简单介绍一下这两种服务器。 WebLogic是美国bea公司出品的一个a转载 2018-01-24 08:31:25 · 191 阅读 · 0 评论 -
散列表(哈希表)
散列表 采用散列技术将记录存储在一块连续的存储空间中这块连续存储空间称为哈希表或散列表散列技术是记录在存储位置和他的关键字之间建立一个确定的对应关系f,使得每个关键字key对应一个存储位置。这个对应关系 f 称为散列函数,又称为哈希函数。查找步骤: 1.在存储时,通过散列函数计算记录的散列地址,并按照此散列地址存在存储该记录。2.当查找时,通过同样的转载 2018-01-22 09:16:22 · 180 阅读 · 0 评论 -
数据库语句练习
Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(S#,C#,score) 成绩表 Teacher(T#,Tname) 教师表 问题: 1、查询“001”课程比“002”课程成绩高的所有学生的学号; select a.S#from (select s#,scorefro转载 2018-01-22 09:03:59 · 202 阅读 · 0 评论 -
栈和队列
/** * 基于数组实现的顺序栈 * @param */public class Stack { private Object[] data = null; private int maxSize=0; //栈容量 private int top =-1; //栈顶指针 /** * 构造函数:根据给定的size转载 2018-01-22 09:00:22 · 147 阅读 · 0 评论 -
链表
//节点类public class Node { protected Node next; //指针域 protected int data;//数据域 public Node( int data) { this. data = data; } //显示此节点 publi转载 2018-01-22 08:59:31 · 183 阅读 · 0 评论 -
排序
从三点开始比较: 1.时间性能:比较和移动2.辅助空间:执行算法所需要的辅助存储空间3.算法的本身复杂度冒泡排序--------->升级------>快速排序-------------------------交换排序类简单选择排序---->升级------>堆排序----------------------------选择排序类直接插入排序---->升级------转载 2018-01-22 08:37:33 · 148 阅读 · 0 评论 -
树的基本遍历
/** * 求树的高度 * * @author Fangchao 2016年12月4日 */ /** * 递归方法 * * @param root * @return */ static int btdep(Node root) { if (root == null) { return ...转载 2018-01-22 08:32:12 · 221 阅读 · 0 评论 -
线程 || TCP/IP
1。单进程单线程:一个人在一个桌子上吃菜。2。单进程多线程:多个人在同一个桌子上一起吃菜。3。多进程单线程:多个人每个人在自己的桌子上吃菜。进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中转载 2018-01-19 17:16:51 · 282 阅读 · 0 评论 -
单例模式&&工厂模式 || IO流
类就是具有相同的属性和功能的对象的抽象的集合。单例模式 保证一个类仅有一个实例,并提供一个访问它的全局访问点。 通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对象。一个最好的办法就是,让类自身负责保存他的唯一实例。这个类可以保证没有其他实例被创建,并且它可以提供一个访问该实例的方法。 静态初始化的方式是在自己被加载时就将自己实例化,所以被形象的称之为饿汉式单例类,原先的单例转载 2018-01-19 17:12:23 · 751 阅读 · 0 评论 -
get&post || 数据库事物
最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。GET和POST是什么?HTTP协议中的两种发送请求的方法。HTTP是什么?HTTP是基于TCP/IP的关于数据如何在万维网中如何通信的协议。HTTP的底层是TCP/IP。所以GET和POST的底层也是TCP/IP,也就是说,GET/POST都是TCP链接。GET和POST能做的事情是一样一样的。你要给GET转载 2018-01-19 17:11:19 · 255 阅读 · 0 评论 -
堆栈
1. 在通常情况下由操作系统(OS)和语言的运行时(runtime)控制吗?2. 它们的作用范围是什么?3. 它们的大小由什么决定?4. 哪个更快?答案一栈是为执行线程留出的内存空间。当函数被调用的时候,栈顶为局部变量和一些 bookkeeping 数据预留块。当函数执行完毕,块就没有用了,可能在下次的函数调用的时候再被使用。栈通常用后进先出(LIFO)的方式预留空间;因此最近的保留块(reser转载 2018-01-19 17:08:39 · 187 阅读 · 0 评论