- 博客(19)
- 收藏
- 关注
原创 Redis阅读笔记(基础数据结构)
1.0 Redis 基础数据结构1.string (字符串)2. list (列表)3. set (集合)4. hash(哈希)5. zset (有序集合)1.1 string (字符串)Redis 所有的数据结构都是以唯一的 key字符串作为名称,然后通过这个唯一 key 值来获取相应的 value 数据。不同类型的数据结 构的差异就在于 value 的结构不一样 字符串结构使用非常广泛 常见的用途就是缓存用户信息。我们将用户信息结构体使用 JSON 序列化成字符串,然后将序列化后的字符串
2020-11-03 09:02:32 144
原创 Netty权威指南阅读笔记(编解码)
6.1 Java序列化的缺点6.1.1 无法跨语言无法跨语言是java序列化最致命的问题 对于跨进程的服务调用 服务提供者可能会使用其它语言开发 当我们需要和异构语言进行交互时 java序列化就难以胜任 对于java序列化技术是java语言内部的私有协议 别的语言无法进行反序列化 严重阻碍它的应用 目前几乎所有流行的Java rpc框架 都没有使用java序列化作为编解码框架 原因就是因为它无法跨语言6.1.2 序列化后的码流太大public class UserInfo implements Se
2020-11-02 09:38:36 176
Netty
1.3 Netty的核心组件1.3.1 ChannelChannel是JavaNIO的一个基本构造 可以把 Channel 看作是传入(入站)或者传出(出站)数据的载体。它可以被打开或者被关闭,连接或者断开连接。1.3.2 回调Netty 在内部使用了回调来处理事件 当一个回调被触发时,相关的事件可以被一个 ChannelHandler 的实现处理 当一个新的连接已经被建立时,ChannelHandler 的 channelActive()回调方法将会被调用,并将打印出一条信息1.3.3 Futu
2020-10-31 08:34:52 230
原创 Spring实战阅读笔记(装配Bean)
2.1 Spring配置的可选方案1.Spring配置的可选方案2.在Java中进行显式配置3.隐式的bean发现机制和自动装配2.2 自动化装配beanSpring从两个角度来实现自动化装配组件扫描(component scanning) : Spring会自动发现应用上下文中所创建的bean。自动装配(autowiring) : Spring自动满足bean之间的依赖2.2.1 @Component 创建可被发现的Bean@Componentpublic class HelloWor
2020-10-25 16:09:16 134
原创 Java多线程编程核心技术阅读笔记(线程通信)
3.1 等待/通知机制public class WaitDemo { private List list = new ArrayList(); public void add() { list.add("demo"); } public int size() { System.out.println(list.size()); return list.size(); } public static cl
2020-10-18 11:43:11 145 2
原创 Java多线程编程核心技术阅读笔记(对象变量的并发访问)
2.1synchronized同步方法非线程安全 会在多个线程对同一个对象中的实例变量进行并发访问时发生 产生的后果就是脏读也就是读到的数据其实是被改过的。 而线程安全就是以获得的实例变量的值是经过同步处理的 不会出现脏读现象2.1.1 方法内的变量为线程安全...
2020-10-16 19:34:35 104
原创 Java多线程编程核心技术阅读笔记(Java多线程技能)
1.1 Java进程和多线程的概念及线程的优点线程可以理解成是在进程中独立运行的子任务 多线程可以最大限度地例用CPU的空闲时间来处理其它任务 比如一边让操作系统处理正在由打印机打印数据 一边使用WORD编辑文档 而CPU在这些任务之间不停地切换 由于切换速度非常快 给使用者的感受就是这些任务似乎在同时运行 单任务的特点就是排队执行 也就是同步 CPU利用率大幅度降低 在多任务的环境中 CPU可以完全在任务1和任务2之间来回切换 使任务2不必等到10秒再运行 系统的运行效率大大提升1.2 使用多线程
2020-10-14 20:56:21 126
原创 Java8实战阅读笔记(用Optional取代null)
public class Person { private Car car; public Car getCar() { return car; } public class Car { private Insurance insurance; public Insurance getInsurance() { return insurance; } } public class Insurance { private
2020-10-13 17:25:05 123 1
原创 Java8实战阅读笔记(默认方法)
简而言之,向接口添加方法是诸多问题的罪恶之源;一旦接口发生变化,实现这些接口的类往往也需要更新,提供新添方法的实现才能适配接口的变化。如果你对接口以及它所有相关的实现有完全的控制,这可能不是个大问题。但是这种情况是极少的。这就是引入默认方法的目的:它让类可以自动地继承接口的一个默认实现。 public interface Resizable extends Drawable{ int getWidth(); int getHeight(); } public
2020-10-13 17:15:35 92
原创 Java8实战阅读笔记(重构设计模式)
8.1 策略模式策略模式包含三部分内容一个代表某个算法的接口(它是策略模式的接口)一个或多个该接口的具体实现,它们代表了算法的多种实现(比如,实体类ConcreteStrategyA或者ConcreteStrategyB)一个或多个使用策略对象的客户 public interface ValidationStrategy{ boolean execute(String s); } // 不同得策略 public static class IsAllLowerCase
2020-10-13 13:36:37 137
原创 Java8实战阅读笔记(流操作)
4.4 流操作 List<Integer> numbers = Arrays.asList(1, 2, 1, 3, 3, 2, 4); // 去重 筛选流 numbers.stream().filter(i ->i % 2 == 0) .distinct(); // 截短流 List<Integer> collect = numbers.stream()
2020-10-13 13:25:04 92
原创 Java8实战阅读笔记(Lambda表达式)
3.1 Lambda 管中窥豹可以把Lambda表达式理解为简洁地表示可传递的匿名函数的一种方式:它没有名称,但它有参数列表、函数主体、返回类型,可能还有一个可以抛出的异常列表利用Lambda表达式,可以更为简洁地自定义一个Comparator对象。// 先前 Comparator<Apple> byWeight = new Comparator<Apple>() { public int compare(Apple a1, Apple a2){
2020-10-13 13:06:23 240
原创 Java8实战阅读笔记(通过行为参数化传递代码)
2 通过行为参数化传递代码2.1 应对不断变化的需求2.1.1 实现一个从列表中筛选绿色苹果的功能 public static class Apple { private String color; private int weight; public int getWeight() { return weight; } public void setWeight(int weight) {
2020-10-12 09:12:57 116
原创 <MySQL入门到精通>阅读笔记之性能优化
性能优化简介MySQL 性能优化就是通过合理安排资源, 调整系统参数使 MySQL 运行更快、 更节省资源。 MySQL 性能优化包括查询速度优化、 数据库结构优化、 MySQL 服务器优化等。优化查询查询是数据库中最频繁的操作, 提高查询速度可以有效地提高 MySQL 数据库的性能分析查询语句MySQL 中提供了 EXPLAIN 语句和 DESCRIBE 语句, 用来分析查询语句。EXPLAIN SELECT * FROM booksDESC SELECT * FROM books
2020-09-14 09:02:09 111
原创 <MySQL入门到精通>阅读笔记之索引
索引简介创建索引创建表时创建索引创建普通索引最基本的索引类型 没有唯一性之类的限制 只是加快对数据的访问速度CREATE TABLE book( bookid INT NOT NULL, bookname VARCHAR(255) NOT NULL, autoors VARCHAR(255) NULL, info VARCHAR(255) NULL, `comment` VARCHAR(255) NULL, year_pulication YEAR NOT NULL, INDEX(y
2020-09-11 09:06:59 125
原创 <MySQL入门到精通>阅读笔记之插入更新与删除数据
插入数据为表的所有字段插入数据// 创建表CREATE TABLE person( id INT UNSIGNED NOT NULL AUTO_INCREMENT, `name` CHAR(40) NOT NULL DEFAULT '', age INT NOT NULL DEFAULT 0, info CHAR(50) NULL, PRIMARY KEY (id));INSERT INTO person (id,`name`,age,info) VALUES(1,'green',21
2020-09-10 09:08:21 74
原创 <MySQL入门到精通>阅读笔记之查询数据
基本查询语句定义数据库表CREATE TABLE fruits( f_id CHAR(10) NOT NULL, s_id INT NOT NULL, f_name CHAR(255) NOT NULL, f_price DECIMAL(8,2) NOT NULL, PRIMARY KEY (f_id))插入数据INSERT INTO fruits(f_id,s_id,f_name,f_price) VALUES ('al', 101, 'apple',5.2),('bl', 10
2020-09-09 20:20:08 372
原创 <MySQL入门到精通>阅读笔记之数据表的基本操作
数据库存储引擎InnoDB存储引擎事务性引擎 支持事务安全表 ACID 支持行锁和外键 MYSQL5.5.5之后 INNODB 作为默认存储引擎MylSAM存储引擎MylSAM拥有较高的插入、查询速度,但不支持事务。MySQL5.5.5之前的版本中,MylSAM是默认存储引擎MEMORY存储引擎MEMORY存储引擎将表中的数据存储到内存中,为查询和引用其他表数据提供快速访问。存储引擎的选择如果要提供提交、回滚和崩溃恢复能力的事务安全ACID兼容)能力,并要求实现并发控制,InnoDB是个很好
2020-09-08 20:54:33 173
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人