- 博客(28)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 删除list中某个特定元素
当数据库查询出数据过后,发现有些数据不需要,所以这里要处理一下,加入循环list,根据判断条件去删除的话,就会出现异常。所以这里用到了java8的新特性去删除。 List<UserFictitious> list = new ArrayList<>(); for (int i = 0; i < 50; i++){ UserFictitious userFictitious = new UserFictitious();
2021-01-07 16:27:11
1374
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
转载 List的Stream流操作
Stream流Stream 中文称为 “流”,通过将集合转换为这么一种叫做 “流” 的元素序列,通过声明性方式,能够对集合中的每个元素进行一系列并行或串行的流水线操作。函数式编程带来的好处尤为明显。这种代码更多地表达了业务逻辑的意图,而不是它的实现机制。易读的代码也易于维护、更可靠、更不容易出错。面对一对多结构,查询主实体时需要附带主实体的子实体列表怎么写?查出主列表,循环差子列表List的Stream流操作可以简化我们的代码,减少程序运行的压力,应对上面的问题,以前的话是先查出对应的list数据,
2021-01-07 16:25:24
918
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 SpringBoot模板引擎Thymeleaf前台遍历后台返回数据
springBoot 模板引擎 遍历后台传输的值<div class=""> <label class="">角色</label> <div class=""> <select th:value="${user.role.roleId}" id="role_sel"> <option value="0">请选择</option> <option th:ea.
2021-01-06 14:18:56
802
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 jsp中复选框选中的删除
思路:在jsp中确认删除的标签中添加点击事件<a onclick="remove()" class="btn btn-danger btn-sm tooltip-error ml5"><i class="icon-trash"></i>删除已选</a>jsp中数据是先前通过后台查询语句所返回的语句接收的代码。记住:在该如下代码中input单选框中一定要写value="<%=single.get(“emp_id”)%>",因为你要通过这串代码
2021-01-06 14:11:00
1470
原创 DelayQueue队列
1、实现订单过期自动改变状态功能/** * @author zhangGX * @date 2021-03-18 16:46 */@Datapublic class OrderMessage implements Delayed { /** * 订单id */ private long orderId; /** * 过期时间 */ private long expiredTime; public OrderMes
2021-03-18 17:03:24
192
1
原创 @PostConstruct
@PostConstruct该注解被用来修饰一个非静态的void()方法。被@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器执行一次。PostConstruct在构造函数之后执行,init()方法之前执行。场景:在自己写出的工具类中,调用不用去注入该工具类或者new直接就可使用。/** * @author zhangGX * @date 2021-01-19 14:09 */@Componentpublic class CustomerUtil
2021-01-26 15:12:30
286
原创 ThreadLocal
ThreadLocal在同一个线程中数据的传递,类似于在上层存储,下层可以获取,当然必须处于同一个线程中,在就是为防止内存泄漏的情况发生,需要在最后将其删除。调用以下工具类的方法就可以实现/** * @author zhangGX * @date 2021-01-19 15:40 */public class ThreadLocalUtil { private final static ThreadLocal<String> threadLocal = new ThreadL
2021-01-26 15:08:41
108
原创 设计模式之模板模式
最近在工作中用到模板模式,特此记录下来。何为模板模式,顾名思义,就是采用模板的形式,给其他继承该类的类定制一个模块,其他的交给子类去完成。完成一件事情,有固定的数个步骤,但是每个步骤根据对象的不同,而实现细节不同;就可以在父类中定义一个完成该事情的总方法,按照完成事件需要的步骤去调用其每个步骤的实现方法。每个步骤的具体实现,由子类完成。首先定义个模板接口/** * @author zhangGX * @date 2021-01-26 14:51 */public interface Iner
2021-01-26 15:04:49
76
原创 事件的发送与处理
定义一个事件源@Setter@Getterpublic class ZgxEvent implements Serializable { /** * */ private static final long serialVersionUID = 1L; private String name; @Override public String toString() { return ReflectionToStringBu
2021-01-13 14:59:46
161
原创 nio实现简易聊天
直接上代码服务端/** * @author zhangGX * @date 2021-01-11 17:46 */public class ChatServer { //定义相关属性 private Selector selector; private ServerSocketChannel listenChannel; private final static int PORT = 6667; public ChatServer() throws Exc
2021-01-12 11:35:33
154
1
原创 IO
IO简而言之就是输入、输出,其细分为BIO,NIO,AIO。BIO(同步阻塞):适用于链接数目比较小且固定的架构。实现原理是一个线程管理一个连接,处理一个请求,当下一个连接进入且上一个连接还没有完成相应的操作时,就会造成线程等待,以此消耗资源。这时如果线程没做什么事,就会造成不必要的线程开销。/** * * @author zhangGX * @date 2021-01-08 10:45 */@Slf4jpublic class BioServer { public stati
2021-01-08 16:17:28
209
2
原创 自定义注解搭配AOP使用
首先叙述一下业务,在每个模块中达到某要求时都要给当前用户添加积分,所以这里用到了注解搭配AOP。首先自定义一个注解/** * @author zhangGX * @date 2021-01-06 16:40 */@Target({ElementType.PARAMETER, ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface AddPoint { /**
2021-01-08 09:35:42
335
原创 JAVA实现八大算法排序
一、插入排序插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。 public static void main(String[] s) { int[] array = {3,1,6,0,8}; //循环的次数,也监控着每一轮开始key的位置 for (int i = 0; i < array.length - 1; i++) { int key
2021-01-07 16:31:54
85
原创 java8 时间包
// -----下面是关于Clock的用法-----// 获取当前ClockClock clock = Clock.systemUTC();// 通过Clock获取当前时刻System.out.println("当前时刻为:" + clock.instant());// 获取clock对应的毫秒数,与System.currentTimeMillis()输出相同System.out.println(clock.millis());System.out.println(System.curre
2021-01-07 16:30:32
94
原创 docker
1.docker安装:首先卸载服务器上的docker的命令。yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \
2021-01-07 16:30:02
77
原创 面试题记录
spring的两大特点:IOC:控制反转,将原本在程序中手动创建对象的控制权交给spring框架管理。就是一种容器,IoC 容器是 Spring 用来实现 IoC 的载体, IoC 容器实际上就是个Map(key,value),Map 中存放的是各种对象。将对象之间的相互依赖关系交给 IoC 容器来管理,并由 IoC 容器完成对象的注入。AOP:一种思想,可以理解成面向切面编程,它的能力是什么呢?让一个本没有实现一个接口的实现类通过代理的模式让他去实现那个没有实现的接口 使业务达到可控的效果。spri
2021-01-07 16:29:22
76
原创 线程池
为什么要使用线程池?随着线程数量不断的增多,会导致系统资源占用和内存占用大,此时的线程需要一个类来统一管理,有次诞生了线程池。线程池有两个解决思路。首先,针对反复创建线程开销大的问题,线程池用一些固定的线程一直保持工作状态并反复执行任务。其次,针对过多线程占用太多内存资源的问题,解决思路更直接,线程池会根据需要创建线程,控制线程的总数量,避免占用过多内存资源。/** * 描述: 用固定线程数的线程池执行10000个任务 */ public class ThreadPoolDemo {
2021-01-07 16:28:23
59
原创 如何用 interrupt 停止线程
首先介绍一下线程的六大状态就像生物从出生到长大、最终死亡的过程一样,线程也有自己的生命周期,在 Java 中线程的生命周期中一共有 6 种状态。New(新创建)Runnable(可运行)Blocked(被阻塞)Waiting(等待)Timed Waiting(计时等待)Terminated(被终止)为什么不强制停止?而是通知、协作对于 Java 而言,最正确的停止线程的方式是使用 interrupt。但 interrupt 仅仅起到通知被停止线程的作用。而对于被停止的线程而言,它拥有完全的
2021-01-07 16:27:50
433
原创 redis锁
简单说一下,redis锁主要解决并发量大的情况下,代码被重复执行。比如一件商品的库存值为50,在多个线程同时进入去修改商品的库存值时,会出现该商品会被同时修改两次为48,就会造成我们数据的错乱 ,明明商品购买记录是两次,库存量却只减少了1。 所以我们基于这种情况可以用到redis的锁机制,它可以让每个线程一一排队去执行修改库存的记录,第一个改完第二个才会去改,当然这里会给每一把锁加上唯一标识,并在最后销毁的时候判断是不是该线程的锁,要不会出现一种情况,我销毁掉了不属于自己的线程锁,最后在把...
2021-01-07 16:26:35
1155
1
原创 js后台返回的List<Map<String,Object>>进行排序
data.sort(function(a,b){ return b.counttime - a.counttime;})data为后台传回的数据,counttime为Map中的字段名称。以上方法为降序,升序如下:data.sort(function(a,b){ return a.counttime - b.counttime;})
2021-01-07 16:26:04
688
原创 java断言解释
这是这段时间内遇到的一个关键字,听到时不明白,所以查找资料了解了一下,虽然现在不怎么用,但毕竟是java中的一个关键字。1.在Java中,assert关键字是从JAVA SE 1.4 引入的,为了避免和老版本的Java代码中使用了assert关键字导致错误,Java在执行的时候默认是不启动断言检查的(这个时候,所有的断言语句都 将忽略!),如果要开启断言检查,则需要用开关-enableassertions或-ea来开启。assert关键字语法很简单,有两种用法:1)、assert <boolea
2021-01-06 14:21:01
157
原创 怎么将第三方jar包转成maven的jar包
在cmd中输入:mvn install:install-file -Dfile=C:\Users\Administrator\Desktop\QRCode.jar -DgroupId=QRCode -DartifactId=QRCode -Dversion=3.0 -Dpackaging=jar -DgeneratePom=true-Dfile的后面输入的为你下载的第三方jar包的本地文件路径。-DgroupId的后面输入的为你转maven jar包后groupId的标签内容QRCode。-Dart
2021-01-06 14:20:25
402
原创 JAVA实现发送短信
调用的为阿里云API我使用的框架是SpringBoot框架短信购买地址https://market.aliyun.com/products/56928004/cmapi022659.html?spm=5176.2020520132.101.5.TsClbR#sku=yuncode16659000011以下是代码:pom.xml中要导入的依赖:<dependency> <groupId>com.alibaba</groupId>
2021-01-06 14:18:33
185
原创 controller中返回HashMap,转为json
在配置与controller同层的.java文件下先继承 extends WebMvcConfigurerAdapter ,然后再添加以下代码。@Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { super.configureMessageConverters(converters); //1.需要定义一个co
2021-01-06 14:17:32
529
原创 SpringBoot框架搭建以及返回数据类型为json类型示例
SpringBoot是Pivotal团队提供的全新框架,它的存在减少了我们对代码的需求,前面我们在进行Spring项目搭建的时候导入了很多依赖,正是因为SpringBoot的产生让我们减少了很多依赖的注入。它最重要的是自带Tomcat服务器,让我们在启动项目的时候不用那么繁琐的去配置Tomcat的很多配置,我们只需要在其中写一个Controller方法,并且加上注解,便可以将Tomcat启动,以及让整个项目跑动起来,正是前人的聪明让我们如今在实际项目中达到了高效性。其实它就是一些库的集合,它能够被任意项目的
2021-01-06 14:17:08
212
原创 Idea中SpringMVC整合Mybatis+log4j日志
以下是我idea项目中的分层结构SpringMVC:SpringMVC是一spring的一个子框架,它是一种基于Java,实现了Web MVC设计模式,请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,MVC分为model view controller 三层,将Web层进行职责解耦。基于请求驱动指的就是使用请求-响应模型,它帮助我们让我们减下了代码量,比structs2的代码量小。Mybatis:mybatis是一种半自动化的ORM(Object Relational Mapping
2021-01-06 14:14:31
478
原创 文件的上传与下载
#需要导入的依赖:<dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</version></dependency>#在spring中的applicationContext.xml中配置:<bean id="m
2021-01-06 14:11:39
188
原创 SSM整合+简单的增删改查
SSM整合+简单的增删改查分页查询还没做,但是用到的findAll是分页查询的,但是得到的结果是错的,分析了一下,分页查询可以用到这个公式做{(page-1)number,numberpage},后台mapper文件中sql语句里面的limit功能不能用,还需要补充,其他功能基本完善,这就是一个简陋的SSM整合+简单的增删改查功能。1.controller层代码2.service层接口以及实现代码4.dao层接口定义5.mappe...
2021-01-06 14:05:54
350
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人