自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(68)
  • 资源 (2)
  • 收藏
  • 关注

原创 spark partition(task)的并行执行

import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaRDD;import org.apache.spark.api.java.JavaSparkContext;import org.apache.spark.api.java.function.Function2;import org.apache.s...

2020-04-14 11:39:38 677

原创 java 自带jvm调优工具的使用以及死锁的检测

jdk/bin文件下有一些自带的jvm性能监控工具,如jconsole,JMC,功能差不多但是JMC的界面要美观一些.JConsole:里面可以看到,线程,类数量,cpu占用等信息.其中线程信息中记录了线程运行中的堆栈信息编写一段会产生死锁的代码:import java.util.concurrent.TimeUnit;/** * 测试死锁: * 1、首先,leftLoc...

2019-09-19 15:28:46 422

原创 spring获取bean的方式

一般在写项目是获取bean是使用@Autowired/@Autowired,@@Qualifier/@Resource注解的方式.但如果被注入的类是@Scope(value= ConfigurableBeanFactory.SCOPE_PROTOTYPE)原型模式的话以上方法就不好用了,这时可以使用实现ApplicationContextAware接口的方式从applicationContext中...

2019-09-13 19:14:39 241

原创 使用timer定时器结合线程池发送消息

定时发送消息主类(Sendmail):从数据库表中读取符合条件的信息使用线程池进行发送public class Mytask extends TimerTask { @Override public void run() { //使用mysql List<String> curtask = new ArrayList<&...

2019-09-05 16:54:29 463

原创 多线程异步调用接口数据同步问题

在多线程进行接口调用时如果调用的接口执行时间不同会直接跳过慢的接口,导致最终数据出错。PrintUtil类模拟被调用的2个接口方法ThreadDemo类是多线程的实现类Test类是调用方。注释掉f1.join()时执行结果:因为fun1执行时间慢于fun2所以导致f1的结果没有写入map中;当使用f1.join()时执行结果:但是在实际场景中无法明确知道各个接口的执行时...

2019-08-27 18:16:00 3824 1

原创 netty nio reactor epoll 多路I/O redis这些常容易混在一块的名词

reactor模型零拷贝

2019-08-09 18:43:47 770

原创 http请求到tomcat到servlet与springmvc

tomcat是web服务器,用来接收http请求并作出响应,servlet则是服务和小程序的合写译作服务小程序,tomcat作为servlet容器,用来运行多个servlet实例,web.xml作为配置文件其中有servlet、servlet-mapping、filter、listener、等标签进行配置, <load-on-startup> 标签可以决定容器是否应该在web应用程序...

2019-07-30 11:47:11 821

转载 reactor线程模型

netty框架采用了reactor模型。reactor单线程reactor多线程reactor主从线程

2019-07-24 10:39:02 109

原创 简化代码编写

利用数组与for循环减少代码冗余://如果不为空则把内容加入map中,如果不使用for循环则一共需写6个if判断语句。Map nodeDetail = new HashMap();String[] mapContent ={"processStatus","processTime","processTime","logType","auditType", ...

2019-07-19 15:44:36 124

转载 java nio

由于高性能服务一般使用c/c++开发而c/c++可以直接使用操作系统的异步IO所以java nio发展受到一定影响。在java nio中多了 selector多路复用器,channel,缓冲区的概念(netty权威指南)selectorchannel缓冲区...

2019-07-09 17:03:06 94

原创 dubbo

dubbo 默认使用dubbo协议,底层使用netty进行通讯。dubbo 使用 Netty 还是挺简单的,消费者使用 NettyClient,提供者使用 NettyServer,Provider 启动的时候,会开启端口监听,使用我们平时启动 Netty 一样的方式。而 Client 在 Spring getBean 的时候,会创建 Client,当调用远程方法的时候,将数据通过 dubbo 协...

2019-07-09 12:39:34 110

原创 cas

cas会将内存值V与旧值A比较,若相等则将新值B赋给A。CAS 利用 CPU 指令保证了操作的原子性,以达到锁的效果,自旋就是循环,一般是用一个for循环实现。这样一来,一个无限循环中,执行一个 CAS 操作,当操作成功,返回 true 时,循环结束;当返回 false 时,接着执行循环,继续尝试 CAS 操作,直到返回 true。(java并发包java.util.concurrent.*的核...

2019-07-09 10:06:26 144

转载 滑动窗口

如果采用同步的数据传送方式即发送一个数据包就等待接收方一个ack确认信息的话,传输效率太低。采用滑动窗口:发送方的发送缓存内的数据都可以被分为4类:已发送,已收到ACK已发送,未收到ACK未发送,但允许发送未发送,但不允许发送其中类型2和3都属于发送窗口。接收方的缓存数据分为3类:已接收未接收但准备接收未接收而且不准备接收数据传输过程:首先发送端发送A,B,...

2019-07-08 14:43:03 702

原创 同步,异步;阻塞,非阻塞

同步:发出一个请求,需要得到相应回复再进行下一步操作(两个操作依次进行)异步:发出一个请求,不需要得到回复就进行下一步操作(两个操作各做各的,互不相干)阻塞非阻塞:线程是否可以运行。一个线程维持多个io连接:同步非阻塞(nio),某个io无数据返回时线程并没有阻塞而是去处理其他io操作,当此io有数据返回再对此io做下一步操作。...

2019-07-08 10:28:31 79

原创 事务隔离

事务的并发问题1、脏读所谓脏读,就是指事务A读到了事务B还没有提交的数据,比如扣库存,初始库存为1,事务B扣库存-1,但未提交然后切换到事务A,事务A读取的库存数还是原始的1,也就是事务A读取了脏数据.2、不可重复读所谓不可重复读,就是指在一个事务多次读取同一数据,读出来的数据不一致。比如库存数为100,事务A读取库存数为100,切换到事务B事务B开启事务–>事务B减库存50–&g...

2019-05-20 17:20:40 276

原创 springcloud微服务

Hystrix会建立很多个小小的线程池,比如订单服务请求库存服务是一个线程池,请求仓储服务是一个线程池,请求积分服务是一个线程池。每个线程池里的线程就仅仅用于请求那个服务。防止某个微服务模块异常导致其他模块受到影响(某一个服务挂了,就会引起连锁反应,导致别的服务也挂。比如积分服务挂了,会导致订单服务的线程全部卡在请求积分服务这里,没有一个线程可以工作,瞬间导致订单服务也挂了)....

2019-05-18 21:39:55 172

转载 java线程池

java的线程池:https://blog.csdn.net/pozmckaoddb/article/details/51478017https://www.cnblogs.com/lic309/p/4564507.htmlhttps://www.jianshu.com/p/f030aa5d7a28

2019-05-17 12:02:27 117

原创 mysql基础操作

创建数据库:create database base;删除数据库drop database base;选择数据库use base;创建数据表create table if not exists a(id int,date date); #此处注意格式插入数据insert into a(id,date)value...

2019-05-16 13:18:31 101

原创 spring 读写分离

应用层解决:分别定义读写数据源,一个是MasterDataSource,另一个是SlaveDataSource。通过写死的方法,更新数据时读取MasterDataSource,查询数据时读取SlaveDataSource。第二种方式动态数据源切换,就是在程序运行时,把数据源动态织入到程序中,从而根据方法名选择访问主库还是从库。主要使用的技术是:annotation,Spring A...

2019-05-13 16:42:36 396

原创 jvm堆和栈

局部基本类型是在方法栈中,成员基本类型是放在堆中的某个对象里.每当线程调用一个方法的时候就会向方法栈压入一个新帧。这里的帧用来存储方法的参数、局部变量和运算过程中的临时数据。堆和栈的区别(来源:Java中的堆和栈的区别,英文原文地址:http://javarevisited.blogspot.com.au/2013/01/difference-between-stack-and-heap-...

2019-05-12 11:11:15 140

原创 线程复用

对于一个线程,线程池会有一个管理任务的队列,这个任务队列里存放的就是各种任务,线程池会一直不停循环的去查看消息队里有没有接到任务,如果没有,则继续循环,如果有了只执行一次start()来创建新线程,但多次执行run()来复用这个线程,线程代码中写上相应逻辑,判断是否超时销毁此线程或不销毁就进入等待(sleep),等待时间过后继续查询消息是否有任务,如此循环,直到逻辑判断需要销毁该线程为止....

2019-04-19 11:25:36 709

转载 分布式 数据一致性

单数据库情况下对于不同表的操作可以在一个事务里,由关系数据库来保证一致性。假如要转账的两个账户正好落在了一个库里,那么可以依赖关系型数据库的事务保持强一致性(关系型数据库完全满足ACID的特性)。如果要转账的两个账户正好落在了不同的库里,转账操作是无法封装在同一个数据库事务中的,这个时候会发生一个库的账户扣减余额成功,另外一个库的账户增加余额失败的情况。但拆分之后就不同了,不同的子系统都有自己...

2019-04-15 17:19:31 164

原创 java,python发送http请求

java:httpclient,HttpURLConnection,spring的RestTemplate,spring cloud的feignpython:requests

2019-03-12 16:48:51 1087

原创 纵向继承与aop横向代理

如果想实现一个公共功能将公共功能写到父类中,子类继承父类.使用面向切面编程aop,设置切点切入所要添加功能的类.aop(底层使用了动态代理机制)优点: 1.功能切换方便,比如想去掉某些类的该公共功能,直接修改连接点即可(继承的话还需挨个修改子类).2.通过织入多个切面可以实现类似多继承的功能(java不支持多继承).//继承方式class Commen{ public void f...

2019-03-06 21:02:12 1110

原创 一种智能客服对话引擎的思路

停用词处理–触发词匹配–名称语义和地址语义停用词:出现频率高但对意图识别,语义分析不起作用的词触发词:与关键词类似,如出现北科|科*大;之类则可触发到北京科技大学.同义词表:如北京科技大学|北京钢铁学院(曾用名),经济技术开发区|经开区|开发区名称语义:提取出:行业信息,地址信息,自定义信息.如:北京航空航天大学:地址:北京,行业大学,专长;航空.转拼音:防止语音...

2019-03-06 14:18:08 1993

转载 外键 优劣

不用外键时数据管理简单,操作方便,性能高(导入导出等操作,在insert, update, delete 数据的时候更快)eg:在海量的数据库中想都不要去想外键,试想,一个程序每天要insert数百万条记录,当存在外键约束的时候,每次要去扫描此记录是否合格,一般还不止一个字段有外键,这样扫描的数量是成级数的增长!我的一个程序入库在3个小时做完,如果加上外键,需要28个小时!...

2019-03-04 21:14:18 126

原创 springcloud服务注册中心默认为http://localhost:8888

虽然在application.yml文件中配置了服务注册中心的地址但运行时仍然访问默认配置:http://localhost:8888.但因为bootstrap.yml文件优先级高于application.yml,所以程序会先从bootstrap.yml寻找所以此时需要创建bootstrap.yml文件并进行配置.文件结构:bootstrap.yml文件内容:spring: cloud...

2019-03-02 12:07:27 11496

原创 服务注册到服务治理中心时自动关闭

控制台信息:2019-03-02 12:01:29.819 INFO 4320 — [ main] com.netflix.discovery.DiscoveryClient : Starting heartbeat executor: renew interval is: 302019-03-02 12:01:29.835 INFO 4320 — [ ...

2019-03-02 12:02:37 369

原创 排序

快速排序:def sort(a,l,r): if l&amp;amp;amp;amp;gt;=r: return left=l right=r base=a[l] while left!=right: while left!=right and a[right] &amp;amp;amp;amp;gt; base: right-=1 a[left]...

2019-02-28 10:28:13 83

原创 java使用list而不是arraylist(java面向接口编程)

java是强类型语言变量需要提前声明.直接声明为ArrayList list=new ArrayList()这个也没有问题。而声明成:List list=new ArrayList();这样的形式使得list这个对象可以有多种的存在形式,比如要用链表存数据的话直接用LinkedList,使用ArrayList或者Vector直接通过list去=就可以了,这样让list这个对象活起来了...

2019-02-28 10:27:39 374

原创 springboot实现基本购物网站

本项目部分页面来自天天生鲜项目(原项目使用django编写),本项目中所用到的框架:spring boot + mybatis + jpa + bootstrap + redis + freemaker实现注册及登录界面:用户名需满足:非空,长度2-20位.密码需满足:为6-20位字母、数字的组合.卖家与买家信息使用不同的数据表存储.网站首页:用户中心界面:使用aop进...

2019-02-28 10:24:35 7300 13

原创 springboot 静态资源路径问题(无法访问css,js等静态文件)

无法访问http://localhost:8080/static/css/reset.css 文件项目目录结构为:index.ftl文件内容为:打开http://localhost:8080/buyer/index页面不显示样式且打开http://localhost:8080/static/css/reset.css报错:在application.yml文件中添加:#这表示只有...

2019-02-20 19:52:48 29555 11

原创 正则匹配

public static void main(String[] args) { //匹配包含某一数字 String v3_str=&amp;amp;amp;quot;农业银行、0.11|农行、0.53&amp;amp;amp;quot;; System.out.println(v3_str.matches(&amp;amp;amp;quot;(.*)0\\.[5-9](.*)&amp;amp;amp;quot;));

2019-01-14 12:32:17 212

转载 @Cacheable,@CachePut

@Cacheable,@CachePut可以标记在一个方法上,也可以标记在一个类上。当标记在一个方法上时表示该方法是支持缓存的,当标记在一个类上时则表示该类所有的方法都是支持缓存的。在支持Spring Cache的环境下,对于使用@Cacheable标注的方法,Spring在每次执行前都会检查Cache中是否存在相同key的缓存元素,如果存在就不再执行该方法,而是直接从缓存中获取结果进行...

2019-01-13 20:32:09 187

原创 @DynamicInsert(实现JPA的save方法不更新null属性)

实体文件中写@DynamicInsert(true)从而实现在使用save函数保存数据时如果实例对象某个属性为null时则不写入数据库中。如果不使用此注解则会把null写入数据库中,数据库中该字段变为null值。...

2019-01-13 13:13:48 4465 1

原创 分布式和集群

分布式:不同的业务模块部署在不同的服务器上或者同一个业务模块分拆多个子业务,部署在不同的服务器上,解决高并发的问题。如有两个人一个负责炒菜一个负责切菜。集群:同一个业务部署在多台机器上,提高系统可用性。如有两个人都负责炒菜。...

2019-01-12 16:25:08 82

原创 受限类型参数( 推论变量T具有不兼容的上限)

public class EnumUtil { public static &amp;lt;T extends CodeEnum&amp;gt; T getByCode(Integer code, Class&amp;lt;T&amp;gt; enumClass) { for (T each: enumClass.getEnumConstants()) { if (code.eq...

2019-01-10 10:16:13 7209

原创 java动态加载类

通过反射使用Class.forname(“类名”)来根据实际需要加载类使用newInstance()方法创建加载的类的实例对象.如此做有助于实现解耦合,结合面向接口编程方法不再需要修改代码,通过修改类名就可以改变具体的实现类.public class App { public static void main(String[] args) throws ClassNotFoundExcep...

2018-12-18 16:34:33 182 1

原创 docker

使用docker利用镜像创建容器,通过已经创建的容器中更新镜像,并且提交这个镜像和使用 Dockerfile 指令来创建一个新的镜像可以快速还原原来的开发环境,docker基于linux内核所以在Ubuntu等环境可以直接安装Docker(服务端、客户端),但是在Mac、Windows环境却无法直接安装Docker服务端。这种情况下,我们有3种选择:1、在使用vmware等虚拟机安装CentO...

2018-12-05 20:30:33 84 1

原创 redis

采用rediscluster集群方案(没有中心节点),数据分布式存储在集群中各主节点中,为防止主节点挂掉,每个主节点配置相应数量冗余节点进行备份.集群内部使用主从配置:数据分布式存储:建立集群步骤:1.运行docker容器:默认情况下不能指定ip地址C:\Users\fei&amp;gt;docker run -it -d --name r1 --ip 172.0.0.2 ...

2018-11-28 20:36:03 558

JAVA图书管理系统

JAVA图书管理系统 过实例为大家快速掌握数据库编程技术,感兴趣的小伙伴们可以参考一下

2017-10-19

空空如也

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

TA关注的人

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