Java
小码农薛尧
这个作者很懒,什么都没留下…
展开
-
设计模式入门-简单工厂模式
前言话说设计模式是我们面试中经常遇到的问题,但是开发中遇到的也不少。之前一直想学设计模式,然后总结写一些文章,但一直忙于其它事情,现在终于要学习设计模式,参考的书籍是《大话设计模式》,这本书写得通俗易懂,推荐大家都去看一下。场景描述借用书中示例问题,计算两个数的加、减、乘、除等其它运算,一般我们的思维是自上而下处理问题,也就造成了运算两个数就要经过多次判断。场景示例两个数之前的算法运算,...原创 2019-12-30 23:50:27 · 132 阅读 · 0 评论 -
代码优化-多态代替IF条件判断
场景描述在开发的场景中,常常会遇到打折的业务需求,每个用户对应的等级,他们的打折情况也是不一样的。例如普通会员打9折,青铜会员打8.5折,黄金会员打8折等等。在一般开发中最简单的就是判断用户的等级,然后对订单作对应的打折处理。场景示例写了一个简单的小示例,如下所示://1 代表学生 2老师 3校长int type = 1;if (1 == type) { System.ou...原创 2019-12-01 17:16:15 · 557 阅读 · 0 评论 -
Java多线程-线程通信
通信的方式要想实现多个线程之间的协同,如:线程执行先后顺序、获取某个线程执行的结果等等。涉及到线程之间的相互通信,分为下面四类:文件共享网络共享共享变量JDK提供的线程协调APIsuspend/resume、wait/notify、park/unpark文件共享public class MainTest { public static void main(Stri...原创 2019-09-03 23:06:04 · 115 阅读 · 0 评论 -
CPU缓存和内存屏障
CPU性能优化手段-缓存为了提高程序运行的性能,现代CPU在很多方面对程序进行了优化。例如:CPU高速缓存。尽可能地避免处理器访问主内存的时间开销,处理器大多会利用缓存(cache)以提高性能。多级缓存L1 Cache(一级缓存)是CPU第一层高速缓存,分为数据缓存和指令缓存。一般服务器CPU的L1缓存的容量通常在32-4096KB。L2由于L1级高速缓存容量的限制,为了再次提高CPU...原创 2019-08-28 21:58:24 · 153 阅读 · 0 评论 -
Java多线程-线程中止
不正确的线程中止-StopStop:中止线程,并且清除监控器锁的信息,但是可能导致线程安全问题,JDK不建议用。Destroy: JDK未实现该方法。/** * @author simon */public class StopThread extends Thread { private int i = 0, j = 0; @Override public ...原创 2019-08-27 00:14:55 · 113 阅读 · 0 评论 -
Java多线程-线程状态
线程状态6个状态定义:java.lang.Thread.StateNew: 尚未启动的线程的线程状态。Runnable: 可运行线程的线程状态,等待CPU调度。Blocked: 线程阻塞等待监视器锁定的线程状态。处于synchronized同步代码块或方法中被阻塞。Waiting: 等待线程的线程状态。下列不带超时的方式:Object.wait、Thread.join、LockSupp...原创 2019-08-26 09:56:52 · 112 阅读 · 0 评论 -
Java内存缓存-通过Map定制简单缓存
缓存在程序中,缓存是一个高速数据存储层,其中存储了数据子集,且通常是短暂性存储,这样日后再次请求此数据时,速度要比访问数据的主存储位置快。通过缓存,可以高效地重用之前检索或计算的数据。为什么要用缓存场景在Java应用中,对于访问频率高,更新少的数据,通常的方案是将这类数据加入缓存中,相对从数据库中读取,读缓存效率会有很大提升。在集群环境下,常用的分布式缓存有Redis、Memcache...原创 2019-08-23 12:07:26 · 628 阅读 · 0 评论 -
Docker入门-介绍和安装
Docker容器Docker是什么Docker最初是dotCloud公司创建人Solomon Hykes在法国期间发起的一个公司内部项目,它是基于dotCloud公司多年云服务技术的一次革新,并于2013年3月以Apache2.0授权协议开源,主要项目代码在Github上进行维护。Docker项目后来加入了Linux基金会,并成立推动开放容器联盟(OCI).Docker使用Google...原创 2019-08-12 17:41:07 · 77 阅读 · 0 评论 -
Java多线程-程序运行堆栈分析
class文件内容class文件包含JAVA程序执行的字节码;数据严格按照格式紧凑排列在class文件中的二进制流,中间无任何分隔符;文件开头有一个0xcafebabe(16进制)特殊的一个标志。JVM运行时数据区线程独占:每个线程都会有它独立的空间,随线程生命周期而创建和销毁线程共享:所有线程能访问这块内存数据,随虚拟机或者GC而创建和销毁方法区JVM用来存储加载的类信息、常量、...原创 2019-08-25 12:20:33 · 551 阅读 · 0 评论 -
Java内存缓存-通过Google Guava创建缓存
谷歌Guava缓存Guava介绍Guava是Google guava中的一个内存缓存模块,用于将数据缓存到JVM内存中。实际项目开发中经常将一些公共或者常用的数据缓存起来方便快速访问。Guava Cache是单个应用运行时的本地缓存。它不把数据存放到文件或外部服务器。如果不符合需求,可以选择Memcached、Redis等工具。小案例pom.xml添加guava依赖<?xm...原创 2019-08-24 10:17:36 · 444 阅读 · 0 评论 -
Mybatis Generator的使用
在写代码过程中,常常要写一些简单的CURD操作,为了能够把时间用在业务逻辑上,看了Mybatis Generator生成工具,根据官网的文档,改成适合自己使用的生成器。mybatis generator的配置文件 如下:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE generatorConfiguration ...原创 2019-01-19 13:32:20 · 139 阅读 · 0 评论