自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 资源 (1)
  • 收藏
  • 关注

原创 redis 基础数据结构

redis 基础数据结构命令操作说明

2023-04-12 23:24:56 458

原创 Kafka 服务端设计

Kafka的服务端高可用、高并发、高性能设计

2022-08-20 16:05:48 349

原创 多线程设计架构模式

观察者模式监控任务的生命周期利用观察者模式的思想,定义特殊的线程类,final 修饰重写run 方法,在其中各个时刻加入通知方法的调用。Sing Thread Execution 设计模式同一时刻只能有一个线程访问共享资源。通过对共享资源加锁实现。...

2022-03-05 10:51:47 475

原创 volatile 关键字

并发编程的三个特性1、原子性在一次处理中所有操作要么全执行,要么全不执行。2、可见性一个线程对共享变量进行了修改,另外的线程可以立即看到修改后的最新值。3、有序性保证程序代码在执行过程中的先后顺序不会被重排序。volatile关键字可以保证可见性和有序性。实现原理是,被其修饰的变量存在一个lock;前缀。这个相当于一个内存屏障,提供如下保障:1)确保指令重排序时不会将其后面的代码排到内存屏障之前。2)确保指令重排序时不会将其前面的代码排到内存屏障之后。3)确保在执

2022-02-06 12:11:52 405

原创 java 内存模型

cpu的内存模型由于CPU与主内存的访问速度差异比较大,所以在两者之间增加了缓存。其中L1i(i是instruction的首字母)和L1d(d是data的首字母)有各自专门用途。CPU Cache是由多个Cache Line构成的,Cache Line可以认为是CPU Cache中的最小缓存单位,目前主流CPU Cache的Cache Line大小都是64字节。整体CPU和主内存之间交互的大致架构:java 内存模型...

2022-02-05 10:41:35 246

原创 Java ClassLoader

ClassLoader的主要职责就是负责加载各种class文件到JVM中。类的加载过程一般分为三个较大的阶段,加载阶段、连接阶段、初始化阶段。加载阶段:查找并加载类的二进制数据。连接阶段:分为以下三个阶段+ 验证:确保类文件的正确性。+ 准备:为类的静态变量分配内存,并且为其初始化默认值。+ 解析:把类中的符号引用转换为直接引用。初始化阶段:为类的静态变量赋予正确的初始值。加载在加载阶段,会获取类的二进制数据,具体得可以从多个途径渠道获取。class文件、zip压缩包、网络、

2022-02-02 18:10:01 864

原创 Java线程池

线程池,一个存放线程的容器,当有任务时,会使用其中的线程执行任务,当任务较多时,自动增加线程数量到阈值,当空闲时,自动减少活动线程到指定数量,释放资源。目的:重复利用线程,提高系统效率。需要具备的要素:1、任务队列,缓存要执行的任务。需要制定队列大小,防止内存溢出。2、线程数量管理,能够管理线程数量,根据任务多少,自动增加减少线程数量。涉及参数,init_count(初始线程数量),core_count(核心线程数量),max_count(最大线程数量).3、拒绝策略,当提交的任务没

2022-02-02 17:28:57 148

原创 synchronized关键字

synchronied关键字提供了一种锁机制,能够确保共享变量的互斥访问,避免发生数据不一致问题。包括monitor enter和monitor exit两个JVM指令。它可以修饰方法和代码块。synchronized锁定的底层原理是每个对象都与一个monitor相关联,当线程访问时,如果monitor的计数器为0,则意味着该monitor的lock还没有被获得,可以锁定并将计数器加1。如果当前monitor的计数器不为0,而且不是当前线程所有则阻塞等待。如果是当前线程拥有,则计数器加1。当线程

2022-01-22 20:34:19 275

原创 java 多线程基础---API

sleep 会使当前线程进入指定时间的休眠。yield方法属于一种启发式的方法,其会提醒调度器当前线程愿意放弃当前的CPU资源,如果CPU的资源不紧张,则会忽略这种提醒。线程的优先级不一定会起作用。一般使用默认的既可以,默认为5。数值越大,优先级越高。获取线程ID,getId()。该ID在整个JVM进程中会是唯一的,并且是从0开始逐次递增。JVM启动时,已经开辟了多个线程,占用了部分ID。interrupt()、interrupted()、isInterrupted()inter

2022-01-04 22:16:46 168

原创 java 多线程基础---守护线程

jvm的参数-Xss 栈内存大小设置单个线程栈大小,一般默认512~1024kb。守护线程一类比较特殊的线程,一般用于处理一些后台的工作,比如JDK的垃圾回收线程、游戏中获取用户最新信息线程。当JVM中没有一个非守护线程时,JVM的进程会退出。作用当希望在退出JVM时,一些线程能够自动关闭,可以考虑使用守护线程。设置方式设置守护线程的方法是调用setDaemon方法,true代表守护线程,false代表正常线程。需要在线程启动之前设置才能生效。子线程是否是守护线程与它

2022-01-03 20:07:13 152

原创 java 多线程基础---设计模式的应用

线程 (英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。1、模板设计模式一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。...

2022-01-03 12:19:06 383

原创 Optional

Optional<T> 对象是一种包装器对象,它的作用是方便我们对于null的判断处理。Optional的创建1、Optional<T> of(T value)创建包含T的Optional对象。T不能为null2、Optional<T> empty()创建空的Optional对象。3、Optional<T> ofNullable(T value)创建包含T的Optional对象。T可以为null适合使用Optional的..

2021-07-12 22:24:03 61

原创 Java 8 流 (四)

流的终结操作1、long count()返回流中元素的数量。2、Optional<T> max(Comparator<? super T> comparator)返回这个流中按比较器排序的最大值。如果流为空,返回一个空的Optional对象。3、Optional<T> min(Comparator<? super T> comparator)返回这个流中按比较器排序的最小值。如果流为空,返回一个空的Optional对象。4、Opti

2021-07-09 22:58:11 206

原创 java 8 流(三)

流的中间操作1、Stream<T> filter(Predicate<?super T> predicate)返回一个流,它包含当前流中所有满足断言条件的元素。2、<R> Stream<R> map(Function<? super T, ? extends R> mapper)返回一个流,它包含将mapper应用于当前流中所有元素所产生的结果。3、<R> Stream<R> flatMap(Funct.

2021-07-08 23:12:37 68

原创 java 8 流(二)

流的创建1、集合类可以使用stream方法创建流。List<String> data = new ArrayList<>();Stream<String> s = data.stream();2、可以使用Stream.of 方法创建流,此方法具有可变长参数。Stream<String> s = Stream.of("a","b","c");3、使用Array.stream 方法创建流。Array.stream(array, from

2021-07-07 22:50:25 39

原创 java 8 流(一)

Java 8 的流是对集合操作的不同实现,在一定程度上可以简化我们的代码。它遵循了“做什么而非怎么做”的原则。流与集合操作的差异1. 流不存储元素。2. 流的操作不会修改数据源。3. 流的操作是惰性执行的,在需要结果时,操作才会执行。流的处理过程1.创建一个流。2.中间操作(将初始流转换为其他流)。3.终止操作,产生结果。ps: 流能够以想要的方式来调度操作,只要结果正确就可以。将stream修改为parallelStream...

2021-07-06 23:06:54 48

转载 jvm 垃圾回收可达性分析相关

转载至:https://www.cnblogs.com/thisiswhy/p/12354864.html这次的文章我们聊聊jvm。jvm可以说是面试必备技能了。简历上写了,多问几句。简历上没写,也得提上几句。我们先从一个简单的热身题入手,引出本文想要分享的内容。当面试扯到jvm这一部分的时候,面试官大概率会问你jvm怎么判断哪些对象应该回收呢?这种经典的面试题当然难不住你。你会脱口而出引用计数算法和可达性分析算法。然后你就停下来了吗?难道你不知道你回答了一句话之后,面试官肯定会

2020-05-14 20:49:34 367

转载 maven2

一、maven父工程与子模块的拆分与聚合原理      问题描述:将ssh工程拆分为多个模块开发      1.1、拆分原理        创建一个maven project(pom),然后在创建三个子模块(maven moudule),其中三个子模块,分别为 dao、service、web,也就是将三层的内容分别独立为一个项目,进一步将耦合性降低,其中如何将他们连接起来了,看下图。...

2019-03-08 10:48:43 287

转载 maven1

 一、简单的小问题?    解释之前,提1个小问题。      1.1、假如你正在Eclipse下开发两个Java项目,姑且把它们称为A、B,其中A项目中的一些功能依赖于B项目中的某些类,那么如何维系这种依赖关系的呢?        很简单,这不就是跟我们之前写程序时一样吗,需要用哪个项目中的哪些类,也就是用别人写好了的功能代码,导入jar包即可。所以这里也如此,可以将B项目...

2019-03-08 10:47:33 117

转载 java面试题

Java 面试中的重要话题除了你看到的惊人的问题数量,我也尽量保证质量。我不止一次分享各个重要主题中的问题,也确保包含所谓的高级话题,这些话题很多程序员不喜欢准备或者直接放弃,因为他们的工作不会涉及到这些。Java NIO 和 JVM 底层就是最好的例子。你也可以将设计模式划分到这一类中,但是越来越多有经验的程序员了解 GOF 设计模式并应用这些模式。我也尽量在这个列表中包含 2015 年最新...

2019-02-27 09:26:33 24157 1

转载 jsp直接导出EXCEL多sheet

&lt;%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%&gt;&lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dt

2019-01-18 13:47:29 877 2

转载 FTP上传文件

 /** * ftp链接常量 * */public class Ftp {    private String ipAddr;//ip地址        private Integer port;//端口号        private String userName;//用户名        private String pwd;//密码        priva...

2018-12-17 17:07:42 119

转载 struts2 中文乱码 设置字段编码格式

java可供判断某字符串是什么编码的一行代码  System.out.println("中文"); System.out.println("中文".getBytes()); System.out.println("中文".getBytes("GB2312")); System.out.println("中文".getBytes("ISO8859.

2018-06-26 14:30:20 725

原创 mysql 更新id的初始值

设置users表的自增字段从10000开始alter table users AUTO_INCREMENT=10000

2018-06-11 16:36:34 1588

原创 mysql 字段值是拼接值的部分删除处理

表 test对应字段login_name的值类似   1016,1020,1023,1024,1050每列值对应的值的顺序不确定现要删除值1020可以分两步实现先删除1020,update test set login_name =REPLACE (login_name,'1012,','')再删除,1020update test set login_name =REPLACE (login_na...

2018-06-07 20:04:28 421

转载 MySQL的FIND_IN_SET()函数

今天在做项目时,看到了一个从没见过的MySQL函数——FIND_IN_SET(),顿时就产生了浓郁的兴趣,然后就搜了搜,翻了翻。语法:FIND_IN_SET(str,strlist)定义:1. 假如字符串str在由N子链组成的字符串列表strlist中,则返回值的范围在1到N之间。2. 一个字符串列表就是一个由一些被‘,’符号分开的自链组成的字符串。3. 如果第一个参数是一个常数字符串,而第二个是...

2018-06-06 15:39:02 985

转载 中文请求乱码问题

使用tomcat的情况:有下面几个地方需要你看看是否配置正确:(1)Tomcat 的 conf 下的server.xml文件中将&lt;Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /&gt;里添加上后面3个编...

2018-05-08 10:51:10 99

转载 @Transactional注解

项目开发过程中,如果您的项目中使用了Spring的@Transactional注解,有时候会出现一些奇怪的问题,例如: 明明抛了异常却不回滚?嵌套事务执行报错?...等等 很多的问题都是没有全面了解@Transactional的正确使用而导致的,下面一段代码就可以让你完全明白@Transactional到底该怎么用。 直接上代码,请细细品味@Servicepublic class SysConf...

2018-05-07 16:52:45 126

原创 前端异步请求获取图片下载

前端主要部分&lt;script type="text/javascript"&gt; $(document).ready(function(){ $("#cardImg").on('click', function(){     const xhr = new XMLHttpRequest();     var url = 'getImg.action';     ...

2018-04-04 14:02:10 983

转载 HashMap工作原理

HashMap的工作原理是近年来常见的Java面试题。几乎每个Java程序员都知道HashMap,都知道哪里要用HashMap,知道Hashtable和HashMap之间的区别,那么为何这道面试题如此特殊呢?是因为这道题考察的深度很深。这题经常出现在高级或中高级面试中。投资银行更喜欢问这个问题,甚至会要求你实现HashMap来考察你的编程能力。ConcurrentHashMap和其它同步集合的引入...

2018-03-13 10:08:38 80

转载 数据库教程

http://www.w3school.com.cn/sql/sql_primarykey.asp

2018-03-13 09:42:56 217

转载 mysql 数值字符串排序

order by 字段名称+0 desc/asc

2018-03-07 14:39:06 270

转载 Java 生成随机数

一、JAVA中生成随机数的方式      1、在j2se中使用Math.random()令系统随机选取一个0~1之间的double类型小数,将其乘以一个数,比如25,就能得到一个0~25范围内的随机数,这个在j2me中没有;    Java代码  int randomNumber = (int) Math.round(Math.random()*(max-min)+min);        2、在...

2018-03-05 14:40:07 202

转载 JVM理解

1. 什么是JVM?JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。 JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字节码...

2018-02-28 15:24:34 123

转载 mysql UNION 或UNION ALL 与OEDER BY 冲突的解决。

使用mysql用union或union all并子集中用order by排序顺序会混乱(select id from a order by start_time asc)     union all    (select id from b order by start_time desc) limit 0, 20这样的写法会导致排序混乱解决方法如下1  使用limit(select id fro...

2018-02-12 11:01:00 532

转载 GET与POST的区别

GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二。最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。你可能自己写过无数个GET和POST请求,或者已经看过很多权威网站总结出的他们的区别,你非常清楚知道什么时候该用什么。当你在面试中被问到这个问题,你的内心充满了自信和喜悦。你

2018-02-07 14:54:51 89

转载 Java 克隆

假如说你想复制一个简单变量。很简单:int apples = 5; int pears = apples; 不仅仅是int类型,其它七种原始数据类型(boolean,char,byte,short,float,double.long)同样适用于该类情况。但是如果你复制的是一个对象,情况就有些复杂了。假设说我是一个beginner,我会这样写:c

2018-02-05 17:21:05 111

转载 mysql in条件语句

偶尔看到的。。。或许有人会注意过,但我以前真不知道 SQL: select * from table where id IN (3,6,9,1,2,5,8,7); 这样的情况取出来后,其实,id还是按1,2,3,4,5,6,7,8,9,排序的,但如果我们真要按IN里面的顺序排序怎么办?SQL能不能完成?是否需要取回来后再foreach一下?其实mysql就有这个方法 sql:

2018-01-30 14:10:26 2715

转载 MySQL的语句执行顺序

MySQL的语句执行顺序MySQL的语句一共分为11步,如下图所标注的那样,最先执行的总是FROM操作,最后执行的是LIMIT操作。其中每一个操作都会产生一张虚拟的表,这个虚拟的表作为一个处理的输入,只是这些虚拟的表对用户来说是透明的,但是只有最后一个虚拟的表才会被作为结果返回。如果没有在语句中指定某一个子句,那么将会跳过相应的步骤。下面我们来具体分析一下查询处理的每一个阶

2018-01-17 15:35:45 129

DES算法的安全性

DES算法的安全性

2014-10-21

空空如也

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

TA关注的人

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