Fork me on GitHub

LeetCode 206.反转单链表

视频来源 206. Reverse Linked List

分析:

mark

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/**
* LeetCode
* 206.反转单链表
* @author GaoHangHang
* @date 2018/07/16 21:54
**/
public class ReverseList {
public ListNode reverseList(ListNode head) {
if (head==null){
return head;
}
//初始化pre
ListNode pre = null;
while (head!=null){
//保存next节点
ListNode tmp = head.next;
//更改next引用
head.next = pre;
//更新pre,head
pre = head;
head = tmp;
}
return pre;
}
}

MyBatis批量增删改查操作

转载自 MyBatis批量增删改查操作

1. 批量增加操作步骤

  • 在接口UserMapper中添加批量增加方法。
1
2
3
4
5
/** 
* 批量增加操作
* @param users
*/
public void batchInsertUsers(List<User> users);
  • 在User.xml中添加批量增加操作的配置。
1
2
3
4
5
6
7
<!-- 批量增加操作 -->  
<insert id="batchInsertUsers" parameterType="java.util.List">
insert into mhc_user(userName,password) values
<foreach collection="list" item="item" index="index" separator=",">
(#{item.userName},#{item.password})
</foreach>
</insert>
阅读更多...

Mybatis动态SQL

转载自 Mybatis动态SQL

1. Mybatis if

如果Product的字段比较多的话,为了应付各个字段的查询,那么就需要写多条sql语句,这样就变得难以维护。

这个时候,就可以使用Mybatis 动态SQL里的if标签

1
2
3
4
5
6
<select id="listProduct" resultType="Product">
select * from product_
<if test="name!=null">
where name like concat('%',#{name},'%')
</if>                         
</select>

如果没有传参数name,那么就查询所有,如果有name参数,那么就进行模糊查询。

阅读更多...

JSON快速入门(Java版本)

内容from

B站 JSON快速入门(Java版本)

蚂蚁课堂-JSON快速入门(Java版本)

1、 什么是JSON
2、 介绍JSON应用场景
3、 如何封装JSON及常用框架介绍
4、 通过Map转JSON
5、 通过JavaBean转JSON
6、 Java如何解析JSON
7、 GSON框架使用
8、 经典面试题JSON与XML区别?

1. 什么是 JSON?

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。

1.1 JSON 语法

1.1.1 JSON 语法规则

JSON 语法是 JavaScript 对象表示语法的子集。

  • 数据在键值对中
  • 数据由逗号分隔
  • 花括号保存对象
  • 方括号保存数组
阅读更多...

Java 8 新特性概述

转载自 唐学波, 林宝川, 和 俞顺杰 Java 8 新特性概述

1. 函数式接口

Java 8 引入的一个核心概念是函数式接口(Functional Interfaces)。通过在接口里面添加一个抽象方法,这些方法可以直接从接口中运行。如果一个接口定义个唯一一个抽象方法,那么这个接口就成为函数式接口。同时,引入了一个新的注解:@FunctionalInterface。可以把他它放在一个接口前,表示这个接口是一个函数式接口。这个注解是非必须的,只要接口只包含一个方法的接口,虚拟机会自动判断,不过最好在接口上使用注解 @FunctionalInterface 进行声明。在接口中添加了 @FunctionalInterface 的接口,只允许有一个抽象方法,否则编译器也会报错。

java.lang.Runnable 就是一个函数式接口。

1
2
3
4
@FunctionalInterface
public interface Runnable {
public abstract void run();
}

2. Lambda 表达式

函数式接口的重要属性是:我们能够使用 Lambda 实例化它们,Lambda 表达式让你能够将函数作为方法参数,或者将代码作为数据对待。Lambda 表达式的引入给开发者带来了不少优点:在 Java 8 之前,匿名内部类,监听器和事件处理器的使用都显得很冗长,代码可读性很差,Lambda 表达式的应用则使代码变得更加紧凑,可读性增强;Lambda 表达式使并行操作大集合变得很方便,可以充分发挥多核 CPU 的优势,更易于为多核处理器编写代码;

阅读更多...

Redis

Redis

1. 什么是Redis

  1. Redis是一种key-value内存数据库
    • 底层算法就是散列表
  2. 性能极佳,查询110000次/秒,写80000次/秒
  3. 提供了持久化支持。
  4. Redis的Value支持5种数据类型,使用方便。

Redis查询性能非常优秀:在软件中经常做为数据库的缓存,提供软件的性能,也就是用于解决“高性能”问题。

2. Redis的用途

redis

  1. 数据库缓存
  2. Redis共享Session
阅读更多...

Nginx

1. 什么是Nginx

Nginx

  • 俄罗斯人开发的一个Web服务器软件。
  • Nginx 具有极好的并发性能!资源占用低。
  • 用于解决高并发问题
    • 利用Nginx与应用服务器组建反向代理负载均衡服务器集群。
    • Nginx 充当前置代理机
  • 据测算Nginx本身能够支持500000并发!

2. Web Server

  • 开源Web Server(Windows Linux Unix)
    • Nginx Apache
  • 商业服务器
    • MS IIS Server (Windows)
  • Java
    • 开源 Tomcat Jetty JBoss
    • 商业 IBM WebSpare, Oracle WebLogic

3. 安装Nginx

3.1 使用yum 安装nginx

  1. 安装

    yum install nginx

    阅读更多...

基于SSM的事务

1.1 准备工作

在Spring的XML配置文件中必须配置TransactionManager和注解驱动:

1
2
3
4
5
6
7
8
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<!-- 以下ref引用到的是数据库连接池的Bean对象 -->
<property name="dataSource" ref="dataSource" />
</bean>

<!-- 以下配置的transaction-manager是以上Bean的id -->
<tx:annotation-driven transaction-manager="transactionManager" />

1.2 使用事务

应该保证在Service中存在与DAO/Mapper中对应的方法,即在DAO/Mapper中有什么方法,在Service中就存在直接调用它们的方法。

当某个方法需要以事务的方式执行,则可以使用@Transactional进行注解,则在这个方法执行的所有数据库的增删改操作都会以事务的方式执行,即一系列的操作将整体成功,或整体失败!

关于@Transactional注解,还可以用于注解整个类,则这个类中所有的方法都会以事务的方式执行,当然,这种做法是不推荐的!原因有:a)并不是所有方法都需要是以事务的方式执行的,例如单条增删改的操作,或者查询的操作;b)该注解还可以做其它配置,每个方法的配置可以不同!

最后,Spring也严重不推荐使用@Transactional对接口或抽象方法进行注解!

1.3 事务的传播特性

在使用@Transactional注解时,可以配置注解参数,其中,propagation参数就是用于配置其传播特性的!语法为:

1
@Transactional(propagation=TransactionDefinition.PROPAGATION_SUPPORTS)
1
transaction 事务 propagation 传播  Definition 定义

该配置的属性取值为枚举值,推荐使用TransactionDefinition中以PROPAGATION_作为前缀的常量,取值有:

1
2
3
4
5
6
7
PROPAGATION_REQUIRED
PROPAGATION_SUPPORTS
PROPAGATION_MANDATORY
PROPAGATION_REQUIRES_NEW
PROPAGATION_NOT_SUPPORTED
PROPAGATION_NEVER
PROPAGATION_NESTED

如果没有配置propagation,则默认值是PROPAGATION_SUPPORTS,表示支持事务,当原本存在事务时,当次的执行将加入到事务中。

以上各PROPAGATION_值的意义可参考TransactionDefinition的注释,或查阅资料。

1.4 小结

如果需要使用事务,先在Spring的XML文件中配置。

在编写Service类时,应该创建与DAO/Mapper中匹配所有方法,与其保持一致!然后,当需要以事务的方法执行时,另使用某个方法调用Service自身的方法来执行,同时,使用@Transactional进行注解!

秋意

如何让别人心甘情愿地把他所学教给我?

[学霸猫:如何让别人心甘情愿地把他所学教给我?](如何让别人心甘情愿地把他所学教给我? - 学霸猫的回答 - 知乎
https://www.zhihu.com/question/38714506/answer/126896554)

透过大量的自学、练习和学习能力的展现,让每一个接触到你的老师都真正感觉到,你是一个会学习,也会用好他们知识的人。
心法是,让每一个老师真正体会到,你发自内心的欣赏和了解他们所拥有的知识和技能的价值所在。所以,如果你自己的积累和练习不够,你是绝对无法正确欣赏老师的。

这个世界上每一个强悍的人都是孤独的,他都希望能有人同行,能有人共同探讨和进步。所以,能教你的老师,恰恰要的都不是学生,而是棋逢对手,差点火候,他愿意为你点播,加一把火。所以,先自己燃烧起来,然后老师们,只是放一根柴,仅此而已。

查理芒格说:我的剑,留给会挥舞它的人。

最后谢谢各位一直点拨和教我的老师们,我在一直加油!

十一月

社会十大俗气

[屌丝气质是什么样的?在行为、穿着上是怎么体现的?](屌丝气质是什么样的?在行为、穿着上是怎么体现的? - 水冰月的回答 - 知乎
https://www.zhihu.com/question/23853957/answer/104781181)

林语堂先生总结的“社会十大俗气”

其一,腰有十文钱,必振衣作响;

其二,每与人言,必谈及贵戚;

其三,遇美人则急索登床;

其四,见问路之人必作傲睨之态;

其五,与友人相聚便高吟其酸腐诗文;

其六,头已花白却喜唱艳曲;

其七,施人一小惠便广布于众;

其八,与人言谈便刁言以逞其才;

其九,借钱时其脸如丐,被人索债时其态如王;

其十,人前常多蜜语,人后必揭人短。

以上十种,可谓一览无余的世相扫描,道尽了人间屌丝之态。可笑的是,这屌丝之态虽常为人不齿,却从古至今绵延不绝。

  • Copyrights © 2015-2023 高行行
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信