自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小码农薛尧的博客

90后普通程序员的个人生活,非正式的自媒体博主

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

原创 代码优化-多态代替IF条件判断

场景描述在开发的场景中,常常会遇到打折的业务需求,每个用户对应的等级,他们的打折情况也是不一样的。例如普通会员打9折,青铜会员打8.5折,黄金会员打8折等等。在一般开发中最简单的就是判断用户的等级,然后对订单作对应的打折处理。场景示例写了一个简单的小示例,如下所示://1 代表学生 2老师 3校长int type = 1;if (1 == type) { System.ou...

2019-12-01 17:16:15 545

原创 如何实现Oracle先组内排序然后再组外排序

问题描述工作中遇到一个问题,因为我本人的SQL技术太差了,写了好久,都没有处理好,大概的需求如下,有一个列表,根据一个字段排序,排序后的结果,再根据字段排序。问题分析为了让读者能够充分理解这个问题,先分解问题原始数据如下:序号名称部门入职时间等级1小明开发部2012-1012小丽账务部2013-0113小华开发部2021-0134小红开发部2001-0125小张账务部2022-0121、先根据部门分组,

2022-04-29 14:23:57 1681

原创 BUG记录-多线程对事务的影响有多么大?

问题描述有一天,测试妹子W向我提了一个BUG,问题描述如下,当操作动作D时,动作D可以看作更新,更新我当前选择的那一条数据,妹子W看到操作D成功页面中多出一条一样的数据,期望的结果是只会更新当前选择行的数据,并不会新增多余的数据。问题原因开始的时候,我认为代码有问题,查看一下代码,应该没有太大的问题,普通操作动作D时,数据会更新,不会新增多余的数据,但是在出现异常时,这个问题,就会复现出来,我当前猜想应该有事务有关系。现在我先说明一下,动作D的业务逻辑,当我们点击动作D时,首先会调用更新操作,更新数

2021-10-14 13:25:00 364 1

原创 如何使用FTP中的模板文件和EasyPOI来导出Excle?

问题描述因工作需要导出Excel文件,使用技术为EasyPOI,EasyPOI是一个非常好的导出文件工具,官网提供非常详细的使用文档,在项目中使用EasyPOI的模板导出功能,官方提供的示例代码中,模板的路径都是本地,我使用时也是把Excle模板文件放在本地,因为之前需要导出的地方,不是很多,模板文件放在本地也没有太大问题,但是由于现在需求变更,会有大量的模板需要导出,如果放在本地会造成项目容量变大。现在想把导出的模板保存在远程的FTP服务中,EasyPOI读取FTP的中模板文件生成Excle文件。解决

2021-07-25 16:07:24 218

原创 Ant Design中使用Upload上传组件如何自定义文件列表展示位置

软件环境macOS Big Sur 11.1React 16.12.0Ant Design 4.10.0实际效果现有一个需求,是上传文件,点击浏览文件按钮,选中文件后,在按钮的上方显示,上传的文件列表,如下图所示当前效果目前使用阿里的Ant UI组件库,使用其中的上传组件,官方提供的示例,如下图如示本地使用后,如下图所示如何才能实现,我们需要的效果呢,Google了好多文章,找到了一种方式,就是重写itemRender方法,自定义文件列表的展示,使用这个方法,需要重写多个acti

2021-02-01 22:45:57 5284 1

原创 2019年终总结

前言为了回首过去,展望未来,把今年的工作和生活做一个小小的总结,为2019年画上一个美丽的句号。内容公司倒闭了自己的房子单身狗写技术文章公司倒闭了去年中旬入职了xx公司,刚刚开始的时候,看公司的办公场及公司人数规模都很大,觉得公司不差钱。平时的待遇都还可以,说不上好,但也不委屈,和同事相处的也不错。今年四月中旬,公司开始出现资金问题,工资也开始出现晚发的状况,大家都不知道公司...

2019-12-31 22:46:01 223

原创 设计模式入门-简单工厂模式

前言话说设计模式是我们面试中经常遇到的问题,但是开发中遇到的也不少。之前一直想学设计模式,然后总结写一些文章,但一直忙于其它事情,现在终于要学习设计模式,参考的书籍是《大话设计模式》,这本书写得通俗易懂,推荐大家都去看一下。场景描述借用书中示例问题,计算两个数的加、减、乘、除等其它运算,一般我们的思维是自上而下处理问题,也就造成了运算两个数就要经过多次判断。场景示例两个数之前的算法运算,...

2019-12-30 23:50:27 123

原创 第一周总结

前言这是我的第二篇总结,但是我为什么叫做第一周总结呢?因为上次说好每周写总结,可是都没有写,只能从头开始,又从第一周开始写总结。总结的内容主要还是写工作中相关的事情。内容用户优惠券功能优化提货卡功能项目测试个人博客用户优惠券功能用户端终于要加入优惠券功能,优惠券这个功能比较复杂,前期优惠券相关接口已写好,但是用户端需要使用优惠券,这个要做一些业务逻辑的判断,例如:用户此订单有哪...

2019-12-28 14:48:51 96

原创 Java多线程-线程通信

通信的方式要想实现多个线程之间的协同,如:线程执行先后顺序、获取某个线程执行的结果等等。涉及到线程之间的相互通信,分为下面四类:文件共享网络共享共享变量JDK提供的线程协调APIsuspend/resume、wait/notify、park/unpark文件共享public class MainTest { public static void main(Stri...

2019-09-03 23:06:04 110

原创 CPU缓存和内存屏障

CPU性能优化手段-缓存为了提高程序运行的性能,现代CPU在很多方面对程序进行了优化。例如:CPU高速缓存。尽可能地避免处理器访问主内存的时间开销,处理器大多会利用缓存(cache)以提高性能。多级缓存L1 Cache(一级缓存)是CPU第一层高速缓存,分为数据缓存和指令缓存。一般服务器CPU的L1缓存的容量通常在32-4096KB。L2由于L1级高速缓存容量的限制,为了再次提高CPU...

2019-08-28 21:58:24 145

原创 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 109

原创 Java多线程-线程状态

线程状态6个状态定义:java.lang.Thread.StateNew: 尚未启动的线程的线程状态。Runnable: 可运行线程的线程状态,等待CPU调度。Blocked: 线程阻塞等待监视器锁定的线程状态。处于synchronized同步代码块或方法中被阻塞。Waiting: 等待线程的线程状态。下列不带超时的方式:Object.wait、Thread.join、LockSupp...

2019-08-26 09:56:52 106

原创 Java多线程-程序运行堆栈分析

class文件内容class文件包含JAVA程序执行的字节码;数据严格按照格式紧凑排列在class文件中的二进制流,中间无任何分隔符;文件开头有一个0xcafebabe(16进制)特殊的一个标志。JVM运行时数据区线程独占:每个线程都会有它独立的空间,随线程生命周期而创建和销毁线程共享:所有线程能访问这块内存数据,随虚拟机或者GC而创建和销毁方法区JVM用来存储加载的类信息、常量、...

2019-08-25 12:20:33 544

原创 Java内存缓存-通过Google Guava创建缓存

谷歌Guava缓存Guava介绍Guava是Google guava中的一个内存缓存模块,用于将数据缓存到JVM内存中。实际项目开发中经常将一些公共或者常用的数据缓存起来方便快速访问。Guava Cache是单个应用运行时的本地缓存。它不把数据存放到文件或外部服务器。如果不符合需求,可以选择Memcached、Redis等工具。小案例pom.xml添加guava依赖<?xm...

2019-08-24 10:17:36 435

原创 Java内存缓存-通过Map定制简单缓存

缓存在程序中,缓存是一个高速数据存储层,其中存储了数据子集,且通常是短暂性存储,这样日后再次请求此数据时,速度要比访问数据的主存储位置快。通过缓存,可以高效地重用之前检索或计算的数据。为什么要用缓存场景在Java应用中,对于访问频率高,更新少的数据,通常的方案是将这类数据加入缓存中,相对从数据库中读取,读缓存效率会有很大提升。在集群环境下,常用的分布式缓存有Redis、Memcache...

2019-08-23 12:07:26 617

原创 Docker进阶-快速扩容

1、命令方式在创建好的Swarm集群中运行nginx服务,并使用--replicas参数指定启动的副本数。docker service create --replicas 3 -p 80:80 --name nginx nginx:latest复制代码或者docker service create -p 80:80 --name nginx nginx:latestdock...

2019-08-22 09:49:37 300

原创 Docker进阶-资源管理Swarm+Portainer

Docker Swarm资源管理Docker Swarm是Docker官方三剑客项目之一,提供Docker容器集群服务,是Docker官方对容器云生态进行支持的核心方案。使用它,用户可以将多个Docker主机封装为单个大型的虚拟Docker主机,快速打造一套容器云平台。注意:Docker1.12.0之后版本,Swarm模块已经内嵌入Docker引擎,成为Docker子命令docker ...

2019-08-21 10:15:10 154

原创 Docker进阶-容器监控cAdvisor+InfluxDB+Granfana

概述前面文章介绍使用docker compose组合应用并利用scale快速对容器进行扩容。由于docker compose启动的服务都在同一台宿主机上,对于一个宿主机上运行多个容器应用时,容器的运行情况如:CPU使用率、内存使用率、网络状态、磁盘空间等一系列随时间变化的时序数据信息,都是需要去了解,因此监控是必须的。容器监控方案选择对于容器的监控方案可谓多种多样,本身自带命令do...

2019-08-20 10:28:10 176

原创 Docker入门-docker compose的使用

Compose简介Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。其代码目前在https://github.com/docker/compose 上开源。Compose定位是定义和运行多个Docker容器的应用,其前身是开源项目Fig。通过前面内容的介绍,我们知道使用一个Dockerfile模板文件,可以让用户很方便的定义一个单独的应用容器。然...

2019-08-19 11:16:21 155

原创 Docker入门-数据挂载

Docker数据管理在容器中管理数据主要有两种方式:数据卷(Volumes) 挂载主机目录(Bind mounts)数据卷数据卷是一个可供一个或多个容器使用的特殊目录,它绕过UFS,可以提供很多有用的特性:数据卷可以在容器之间共享和重用 对数据卷的修改会立马生效 对数据卷的更新,不会影响镜像 数据卷默认会一直存在,即使容器被删除注意: 数据卷的使用,类似于Linux...

2019-08-18 12:42:10 132

原创 Docker入门-搭建docker私有仓库

Docker Hub目前Docker官方维护了一个公共仓库Docker Hub,其中已经包括了数量超过15000个镜像。大部分需求都可以通过在Docker Hub中直接下载镜像来使用。注册登录可以在https://hub.docker.com 免费注册一个Docker账号。在命令行执行docker login输入用户名及密码来完成在命令行界面登记Docker Hub。你可以通过dock...

2019-08-17 10:10:01 56

原创 Docker入门-构建第一个Java程序

定制镜像准备一个没有第三方依赖的java web项目,可能参考示例maven结构项目:session-web.war把该war上传到安装有docker软件的服务器上宿主目录下。在同级目录创建Dockerfiletouch Dockerfilevim Dockerfile按照前面文章所学的Dockerfile定制镜像知识来编写Dockerfile文件内容如下:# 基础镜...

2019-08-16 10:46:36 63

原创 Docker入门-Dockerfile的使用

使用Dockerfile定制镜像镜像的定制实际上就是定制每一层所添加的配置、文件。我们可以把每一层修改、安装、构建、操作的命令都写入一个脚本,这个脚本就是Dockerfile。Dockerfile是一个文本文件,其内包含了一条条的指令,每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。接下来我们以官方nginx镜像为例,使用Dockerfile来定制。在一个空白目...

2019-08-15 14:49:47 54

原创 Docker入门-常用命令

Docker镜像操作Docker运行容器前需要本地存在对应的镜像,如果本地不存在该镜像,Docker会从镜像仓库下载该镜像。获取镜像从Docker镜像仓库获取镜像的命令是docker pull。其命令格式为:docker pull [选项][Docker Registry地址[:端口号]/]仓库名[:标签]具体的选项可以通过docker pull --help命令看到,这里我...

2019-08-14 20:22:02 60

原创 Docker入门-介绍和安装

Docker容器Docker是什么Docker最初是dotCloud公司创建人Solomon Hykes在法国期间发起的一个公司内部项目,它是基于dotCloud公司多年云服务技术的一次革新,并于2013年3月以Apache2.0授权协议开源,主要项目代码在Github上进行维护。Docker项目后来加入了Linux基金会,并成立推动开放容器联盟(OCI).Docker使用Google...

2019-08-12 17:41:07 72

原创 Mybatis Generator的使用

在写代码过程中,常常要写一些简单的CURD操作,为了能够把时间用在业务逻辑上,看了Mybatis Generator生成工具,根据官网的文档,改成适合自己使用的生成器。mybatis generator的配置文件 如下:&lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;!DOCTYPE generatorConfiguration ...

2019-01-19 13:32:20 132

原创 dokuwiki安装问题

工作了几年,虽然在程序员这个道路上才算开始,希望以后能够有所成长,为了把平时遇到的技术问题,记录下来,第一个想到的就是写wiki,博客虽然创建了许久,但是没有坚持写下去,在网上找了许多的wiki程序,dokuwiki是最符合的。但是,下载下来,安装就有许多问题,最主要的是通过浏览器访问dukuwiki目录时,出现问题,图没有保存,找到一段官网的问题DokuWiki Setup ErrorT...

2019-01-17 21:38:54 1228

原创 Postman之token动态获取

目前项目涉及PC及APP端接口共用问题,后台接口给登陆后的用户设置了一个token,接口调用时请求头的参数值必须要动态生成,为了解决这个问题,查看Postman API文档,配置了可以方便后端开发者的Tests脚本,如果你需要,请按下面方式配置。用户登陆用户登陆页面的请求头参数为固定不变,如图所示当填写正确的用户名和密码时,系统用返回如下图的数据,里面携带token的值,如图所示在用户...

2018-11-13 00:37:52 2771 2

原创 用js写的简单轮播特效

效果如下功能分析1.每隔1秒换一张图片2.鼠标移入停止切换、鼠标离开继续切换3.鼠标移入到数字上面的时候,显示和数字对应的图片,并且停止切换,被选中的数字,背景显示橙色4.鼠标离开数字,从该数字后面继续显示代码如下 div, img, ul, li { padding: 0px; margin: 0px;

2016-09-17 22:18:59 310

原创 开发自己的框架——(二)数据库工具类的封装

为了让框架的内容与数据分离,我们把常用的类封装到一个工具类中,当用到这些方法时,就调用这个封装好的类,能够使代码的复用性得到很大的提高。首先,封装数据库相关操作,为了使封装规范化,我们创建一个接口让数据库实现接口中的方法,数据库使用PDO扩展访问数据。数据库接口类 I_DAO.interface.php<?phpinterface I_DAO{ //查询所有数据的功

2016-09-02 01:35:35 223

原创 开发自己的框架——(一)目录的设定

1.框架目录如下图所示2.目录解释如下app 应用的目录--|admin 后台的目录--|common 通用的目录--|home 前台的目录--|public 公共的资源目录framework 框架的目录--|config  框架配置目录--|core 框架核心类库目录--|dao 框架数据库类目录--|tools 框架工具目录--|vendor

2016-08-30 23:21:04 169

原创 开发自己的模板引擎

自定义模板引擎类MyTpl.class.phpclass MyTpl{ private $tpl_vars = array(); //分配 public function assign($key,$value){ $this->tpl_vars[$key] = $value; } public function displ

2016-08-27 00:40:50 480

空空如也

空空如也

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

TA关注的人

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