- 博客(47)
- 收藏
- 关注
原创 MVEL类库的应用
我们有时候会需要把一些数值计算步骤从全段传到后端,我们后端需要把这些计算步骤的字符串进行计算后返回前端,这时候就可以运用java的MVEL类库来进行计算,就像js的eval函数一样,下面介绍两种mvel类的用法:一、计算简单表达式Object eval = MVEL.eval("1+1");Object eval2 = MVEL.eval("(2+2)*3+5/2");System.out.println("emmm " + eval); // 2System.out.println("e.
2022-04-25 13:02:40
1095
原创 Docker
Docker是一个开元容器引擎,可以理解为是个简易版的linux系统,Docker由client客户端+容器+镜像image仓库组成.我们可以在一个容器可以启动一个应用程序,而且是简单的一行命令就可以直接安装启动,比如说mysql我们可以从官网拉取镜像,也可以从私服拉取镜像,然后在本地启动镜像,启动之后就生成了一个容器,容器可以有多个,容器内部一般不存储数据, 可以-v挂载宿主机的文件夹,...
2020-09-21 00:05:46
171
原创 Quartz分布式定时任务
Quartz是完全由java编写的开源作业调度框架。不要让作业调度这个术语吓着你。尽管Quartz框架整合了许多额外功能, 但就其简易形式看,你会发现它易用得简直让人受不了。那么我们在使用的时候应该怎么设计呢?请看如下定时任务整体应实现的逻辑1、任务实体的添加与删除,实际就是把相应实体类任务添加到scheduler中(实体类中有具体的任务执行方法)使用Scheduler对象添加定时任务...
2020-09-21 00:04:39
3120
原创 创建线程池的两种方式
1、Excutors工厂方式方式 ExecutorService executorService = Executors.newFixedThreadPool(10); 2、手动newThreadPoolExecutor方式 ThreadFactory threadFactory = Executors.defaultThreadFacto...
2020-09-21 00:03:47
376
原创 JPA的问题
公司最近切换了持久层框架: spring-boot-starter-data-jpa 2.2.2.RELEASE使用的时候还是需要详细回忆一下ORM全自动框架的用法:1、持久层需要继承JpaRepository<数据库实体entity,ID类型> QuerydslPredicateExecutor<数据库实体entity>JpaRepository可以使我们使用一些基本的增删改查通用方法,例如findAll,findByI...
2020-09-21 00:02:40
445
原创 java8对集合的操作等
我们在操作集合时,可能会遇到很多复杂的业务逻辑,这时候可能会嵌套n层循环来实现逻辑功能,但是我们用java8的lambda来操作集合的话相比较来说会肥肠简单://选取符合一定条件的新listList<ImportAttributeValue> inserts = groupAttributeValues.stream().filter(it -> !groupBas...
2020-09-21 00:02:17
2029
原创 flayway数据库上线管理
我们上线时候有时候需要手动执行很多sql:那么我们可以使用flayway,但是需要注意两点:<dependency> <groupId>org.flywaydb</groupId> <artifactId>flyway-core</artifactId> <version>5.2.1</version></dependency>...
2020-09-21 00:01:40
675
原创 shiro
shiro很适合用来解决登录认证与权限控制依赖如下: <!-- shiro插件 --> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring</artifactId> <version>1.4.2</version&g...
2020-09-21 00:01:24
251
原创 网关
java的主流网关是SpringCloud那一套一、zuul 二、gatewaygateway是zuul的后代版本,在zuul上做了一些附加修正,依赖包如下:spring-cloud-starter-gateway ,项目中有个需求如下: 现公司app线上有一个论坛的功能,现在要做个"中转", 客户的需求直接发到网关, 然后网关将请求转发到真正的app后台,真正的后台是个php服务, 也就是访问路径要做如下调整: client ---> javap---&g...
2020-09-21 00:00:03
233
原创 Git远程协作开发通用操作
很多版本控制器眼花缭乱,Snv,Git 等,我们下面来说一下Git的远程协作开发的常用步骤1、先说一下Git我们如何切换分支,首先切换分支时候要保证我们的代码是最新的,要先更新我们本地代码git remote update(也就是把远程的分支上别人提交的新代码下载到你的本地,当然你运行完可以看到你的工作空间的目录文件或许已经改变),运行git rebase orign/远程本身,然后运............
2020-07-09 00:10:30
1002
1
原创 开发常用插件
1、一般管理git代码,内部都会搭建自己的GitLab社区版GitLab社区版10.4.6,我们可以在上面看我们的git提交记录,merge请求合并代码,wiki2、我们平时看日志啥的有时候需要安装Xsheelmac用finalshell,windows用xmanager...
2020-06-30 10:41:39
196
原创 AQS组件与锁
并发工具类,锁等都是由Aqs实现基本组件:LockSupport,part(),unPark(),阻塞和唤醒当前线程CLH队列锁,大部分系统所用的锁机制,双向链表,每个节点线程都在循环检查前一个节点线程是否释放锁AQS是CHL的变体实现,公平锁ReetrantLock有静态内部类实现了aqs抽象类aqs模板方法模式...
2020-05-18 08:26:29
158
原创 并发容器ConcorrentHashMap与Hash
Hash是压缩映射Hash冲突的处理方式开放寻址发ThreadLocal链地址法CorrentHashMap再哈希常用Hash函数志杰取余法,乘法取整法,平方取中法MD5 SHA-1等虽然是加密算法,但其实是摘要算法,不可逆,不可能从摘要反推到明文,彩虹表可以解析...
2020-05-18 08:26:24
294
原创 跨域问题
有时候一些前后端不分离的企业,后端可能会开发一些前端的功能,下面说一下,跨域遇到跨域问题时前端与后端都应该怎么做:1、前端配合解决,2、后台配合解决2.1)、其中origins指的是浏览器页面当前的端口,不是指的你跨的端口,由A跨到B,此处填写的是A猜可以2.2)、后端这两种方式都可以尝试。前后端组合一定可以解决跨域问题...
2020-05-18 08:26:10
119
原创 IO流解读
我们都知道IO流是用的装饰器模式, 他的抽象的每个IO类都是继承自基类, 其实若开发人员对于io流不熟悉的话, 用起来会有一种在坟墓里迷路的感觉1、InputStream 此类是对最基本电脑内存与硬盘之间读取操作的抽象,此类你获取到后,他是不能够重复读取的,就是说你read了一遍之后,不管这个流你有没有关,都不能读取第二遍,当然我们可以手写逻辑把inputStream重新读取成ByteArrayOutputStream与ByteArrayInputStream,ByteArrayInputS...
2020-05-18 08:26:04
146
原创 java读取网络图片
1、根据图片的url获取图片内容,赋值到字节数组中 byte[] bytes = new byte[0]; if (StringUtils.isNotEmpty(imgUrl)) { //TODO 此处待抽取helper HttpURLConnection connection = ...
2019-11-28 16:37:46
2183
原创 Guava类库学习--Table(双键的Map)等
一般系统中会用到很多字典数据,比如: pass:已审核,unaudited:未审核,reject:审核驳回,业务上这属于一种字典类型数据,这种类型就叫做audit_status,有时候我们会想通过英文转换为中文或者中文转换为英文,这时候需要写不同的方法来满足,以下类库将帮你省去这些麻烦: HashBasedTable<String, String, String&g...
2019-10-30 10:23:32
2201
原创 Date日期类型传入传出问题
1、在javaweb项目中,我们会接受前台传入的date类型 在接受的过程中,经常会遇到日期转换异常,前台传的格式可能是2019-04-03 00:00:00或者2019-09-19T16:00:00.000Z,后台后者如果用Date对象来接受可能会出现问题,在你的controller中添加如下配置可以解决此问题, @InitBinder public void i...
2019-09-29 17:12:07
1007
原创 复习_日志审计
我们需要下载Xshell 软件来连接: 一般用个人版本就可以。 1、新建连接,填写日志机的ID,用户名与密码,点击连接。 2.1、然后如果是跳板机的话需要连接到相应的ip 192.14.35.140 (如果ip输入错误,输出exit来重输) 2.2、然后输入相应ip服务机的用户名密码 su 用户名...
2019-08-22 16:27:54
327
翻译 虚拟机CentOS-7网络配置问题
虚拟机CentOS-7网络配置问题,我用的是NAT网络配置方式,如果网络连接不上,尝试如下方法。1、编辑网络配置文件vi /etc/sysconfig/network-scripts/ifcfg-ens33TYPE=EthernetBOOTPROTO=dhcpDEFROUTE=yesPEERDNS=yesPEERROUTES=yesIPV4_FAILURE_FATAL=noIPV...
2019-07-23 11:19:08
203
原创 XML_Mapper字符转义的注意事项
操作XML文件时,如果允许用户输入内容,例如∶"< "、">"、"/"、""等,当生成XML时,会破坏了XML结构,使数据中断。不合法的XML字符必须被替换为相应的实体。特殊字符 替代符号 & & < < > > ...
2019-07-16 15:24:57
353
原创 mysql时区与SpringBoot的sql日志打印
1、时区问题jdbc:mysql://19.29.39.270:8066/ics-platform?useSSL=false&Unicode=true&characterEncoding=utf8&useTimezone=true&serverTimezone=GMT%2B8#日期类型格式化spring.jackson.date-format=yyyy...
2019-07-03 17:24:44
371
翻译 zookeeper本地注册中心搭建
1、下载zookeeper包 eg: zookeeper-3.5.0-alpha2、进入conf目录,复制zoo_sample.cfg改为zoo.cfg3、进入bin目录,编辑zkEnv.cmd 将最后一行的配置修改为你的JavaHome4、将zkEnv.cmd相应行注释,eg:5、配置项目中注册中心使用zookeeper6、双击zkSe...
2019-06-19 23:05:10
1086
原创 dubbo开发遇到的问题
1、注解开发服务端生产端类需要加com.alibaba.dubbo.config.annotation.Service;注解如下: @Service(version = "1.0.0") public class QueDataServiceImpl implements IQueDataService2、服务消费端需要加com.alibaba.dubbo.c...
2019-06-10 16:15:47
556
翻译 并发工具,CountDownLatch与CyclicBarrier与Semaphore的用法
一.CountDownLatch用法CountDownLatch类位于java.util.concurrent包下,利用它可以实现类似计数器的功能。比如有一个任务A,它要等待其他4个任务执行完毕之后才能执行,此时就可以利用CountDownLatch来实现这种功能了。下面看一个例子大家就清楚CountDownLatch的用法了:public class Test { publi...
2019-03-20 15:40:22
168
原创 java批量导入导出(poi)
一、批量导入 1、导入时我们接参时使用MultipartFile来接受excel文件,用poi来读取文件内容 InputStream inputStream = MultipartFile.getInputStream(); Workbook wb = WorkbookFactory.create(inputStream);2、获取某个sheet...
2018-09-18 18:59:02
5075
1
原创 java8新特性
一、java8函数式编程函数接口BiConsumer<T,U>见名思意BiConsumer ,多客户端的意思,意思就是我们有多个客户都有不同的需求,我们的代码有可变性,可能为任何一种逻辑,比如我们的对于一个客户是想删除商品,一个客户是想添加商品,一个客户是想修改商品,那么我们的代码可能有很多分支(if判断),我们可以将每个代码分支赋值给我们的客户引擎BiConsumer&l...
2018-06-27 17:43:23
545
原创 java异常的注意事项
我们在捕获到异常后,在cath中打印了异常信息,并且向上抛出了异常,这时候异常信息不能打印堆栈信息,只有一个错误提示,如果不调用initCause是无法打印出所有异常链的如下所示:} catch (Exception e) { LOGGER.error("查询服务单管理列表异常", e); throw new RefundException(ExceptionDict
2018-01-18 17:07:15
231
原创 电商中关于价格的思考
1、供货价供货价是B2B(企业to企业)中常见的名词,他是指一方向另一方提供货物时的定价, 件/元2、面价面价指的是向最终客户售卖的价钱, 件/元3、批发价顾名思义我们去商场批发东西的价格,一般货物都有一个起批数量,就是超过多少件我才能给你批发价(相对较便宜的资格)
2018-01-10 17:31:00
457
翻译 Iterator迭代删除的注意事项
1、Iterator介绍Iterator 用同一种逻辑来遍历集合。使得客户端自身不需要来维护集合的内部结构,所有的内部状态都由Iterator来维护。客户端从不直接和集合类打交道,它总是控制Iterator,向它发送"向前","向后","取当前元素"的命令,就可以间接遍历整个集合。在Java中Iterator为一个接口,它只提供了迭代了基本规则,在JDK中他是这样定义的:对 col
2018-01-03 16:41:02
2382
原创 事物注解用法
1、项目中我们可以使用基于配置的事物控制:这样指定类中指定方法会有事物(切面控制)2、我们也可以使用事物注解来控制事物:在类(或者方法)上声明@Transactional表明类中的所有方法均受事物的控制,但是默认只是受非受检异常(RunTimeException)的控制 让checked受检异常也回滚:在整个方法前加上@Transactional(rollbackFor=E
2018-01-03 15:21:48
810
翻译 Ajax 防止表单重复提交
我们知道很多种防止表单重复提交的方法:总结开来一共有以下三种:1、前后台结合来解决问题(Token)每次提交前段的Token值与后端的Token值互相比较,相等则进行运算逻辑,不相等则返回 (现在主流的框架都支持Token验证)2、按钮置灰的方式来防止重复提交如果提交对象为按钮的话,可以对按钮设置disabled,此办法适应于按钮提交,此种方法简单粗暴,也是很多人用的办法,代如
2017-12-12 18:57:53
520
原创 java参数传递问题
当我们写习惯了之后,会发现值传递也是很奇妙的问题。 1、若果形参与实参都是基本类型,等同于向被调用方法中拷贝了一份,称为值传递,java中全部是值传递 (包含了包装类型与String- 不包含数组) ,也就是说拷贝的这一份数据在另一个方法中的任何改动都与父调用者中的没有关系。 2、若形参与实参都是对象类型,等同于把指针拷贝了一份 (包含了任何数组类型) ,也就是说拷贝的这一
2017-11-28 15:02:51
192
原创 String 的深究
字符串对象是一种特殊的对象.String类是一个不可变的类..也就说,String对象一旦创建就不允许修改 String类有一个对应的String池,也就是String pool.每一个内容相同的字符串对象都对应于一个pool里的对象public class Demo {public static void main(String[] args) { String s = ne...
2017-11-09 17:40:26
234
原创 整型-文件-方法名-日期-文件拷贝-缩略图-JSON创建-PDF-HTTP-单例-抓屏-目录-ZIP-XML-Map-邮件-Array-beanCopy-数组类型转换-数组集合转换-枚举示例-画图
20个非常有用的Java程序片段程序员精选下面是20个非常有用的Java程序片段,希望能对你有用。内容比较早,有些函数可能过时了,但是总体思路是不错滴,供参考。1、字符串有整型的相互转换String a = String.valueOf(2); //integer to numeric stringint i = Integer.parseInt(a); //num...
2017-08-30 23:04:09
594
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人