- 博客(33)
- 资源 (2)
- 收藏
- 关注
原创 模仿kotlin协程实现原理,手写一个协程,实现异步业务同步操作
模仿kotlin协程实现原理,手写一个协程,实现异步业务同步// An highlighted block import java.util.concurrent.Executorsfun main() { /** * println("start") //主线程 * val user = getUserInfo() //耗时 * println(user) //主线程 * val friendList = getFriendList(
2022-01-13 10:24:52
2041
原创 google-GSON解析和生成JSON数据
public class GsonDemo { public static void main(String[] args) { Map map = new HashMap(); map.put("name", "nam1"); map.put("age", "12"); Gson gson = new Gson();
2015-08-14 22:49:50
579
原创 javaWeb学习笔记3
javaWeb学习笔记JDBCJDBC常用接口和类简介DriverManager 用于管理JDBC驱动的服务类。主要功能是获得Connetion对象 public static Connection getConnection(String url,String user,String pass)throws SQLException Connection 代表数据库连接对象,
2015-06-03 20:27:40
428
原创 javaWeb学习笔记2
javaWeb学习笔记MySQL数据库JDBC可以完成一下三个基本动作 与数据库连接 执行SQL语句 获得SQL语句的执行结果 DBMS有一个数据字典(有时也被称为系统表),用于存储它拥有的每个事物的相关信息,例如名字、结构、位置和类型,这种关于数据的数据也被称为元数据(metadata). 数据库级别 show databases; drop datab
2015-06-03 19:22:32
443
原创 javaWeb学习笔记1
javaWeb学习笔记环境变量设置安装JDK后的环境变量的设置,下面是我的安装路径 JAVA_HOME C:\Program Files (x86)\Java\jdk1.8.0_31 path C:\Program Files (x86)\Java\jdk1.8.0_31\bin; C:\Program Files (x86)\Java\jdk1.8.
2015-05-28 17:04:49
430
原创 javaWeb学习笔记----Tomcat安装
1 下载下载tomcat安装文件,apache-tomcat-8.0.22-windows-x64.zip,我下载的是8.0版本64位的zip文件 2 设置解压zip文件,并设置2个环境变量。 1、JAVA_HOME:jdk的安装目录,我的是 C:\Program Files (x86)\Java\jdk1.8.0_31 2、CATALINA_HOME:tomcat的安装目录,我的是 D:\a
2015-05-13 16:38:04
357
原创 mysql的一些使用总结
SQL语句对大小写不敏感,所以下面都是用的小写。1、命令行连接数据库mysql -p -u root -h 127.0.0.1输入上面命令后,会提示输入密码。输入密码后就连接上数据库了2、一些常用的命令show databases;drop database 数据库名; //删除数据库create database [IF NOT EXISTS] 数据库名;use 数据库名;show tablse
2015-05-11 20:11:34
300
原创 单例模式(JAVA)
单例模式(Singleton)class Singleton { private static Singleton sInstance; public static Singleton getInstance(){//必须为static,因为调用该方法是还不存在对象。 if (sInstance == null) { sInstance = n
2015-05-09 15:40:24
412
原创 设计模式学习(十八):状态模式
当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。 主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同的一系列类当中,可以把复杂的逻辑判断简单化。代码#include <iostream>using namespace std;class Light;class State{ //状态public: virtual
2015-04-12 17:45:34
270
原创 设计模式学习(十七):观察者模式
定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。代码#include <iostream>#include <list>using namespace std;class Observer { //public: virtual void sensorChanger(int state) = 0;};class Sensor{
2015-04-12 17:00:10
238
原创 设计模式学习(十六):职责链模式
职责链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理他为止。代码#include <iostream>#include <string>using namespace std;class Boss{protected: string name; Boss *boss;public:
2015-04-12 15:57:02
279
原创 设计模式学习(十五):中介者模式
用一个中介对象来封装一系列的对象交互。中介使各个对象不需要显示地互相调用,从而使耦合松散,而且可以独立地改变它们之间的交互。代码#include <iostream>#include <string>using namespace std;class Mediator;class Person{ //抽象人public: virtual void setMediator(Mediat
2015-04-12 15:05:11
342
原创 设计模式学习(十四):备忘录模式
备忘录模式(Memento Pattern)又叫做快照模式(Snapshot Pattern)或Token模式,是GoF的23种设计模式之一,属于行为模式。定义(源于GoF《设计模式》):在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。代码#include <iostream>#include <vector>using n
2015-04-08 21:35:59
289
原创 设计模式学习(十三):装饰模式
在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。代码#include <iostream>#include <string>using namespace std;class building{public: virtual void show(){}};class gymBuilding:public buil
2015-04-08 20:42:13
276
原创 设计模式学习(十二):桥接模式
【GOF95】在提出桥梁模式的时候指出,桥梁模式的用意是”将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立地变化”。这句话有三个关键词,也就是抽象化、实现化和脱耦。下面的例子用的是汽车安装座椅的例子。#include <iostream>using namespace std;class Seat{ //座位public: virtual
2015-04-03 21:22:25
322
原创 设计模式学习(十一):享元模式
享元模式(英语:Flyweight Pattern)是一种软件设计模式。它使用共享物件,用来尽可能减少内存使用量以及分享资讯给尽可能多的相似物件;它适合用于当大量物件只是重复因而导致无法令人接受的使用大量内存。通常物件中的部分状态是可以分享。常见做法是把它们放在外部数据结构,当需要使用时再将它们传递给享元。代码#include <iostream>#include <string>#includ
2015-04-02 23:04:49
246
原创 设计模式学习(十):代理模式
组成:抽象角色:通过接口或抽象类声明真实角色实现的业务方法。 代理角色:实现抽象角色,是真实角色的代理,通过真实角色的业务逻辑方法来实现抽象方法,并可以附加自己的操作。 真实角色:实现抽象角色,定义真实角色所要实现的业务逻辑,供代理角色调用。代码#include <iostream>using namespace std;class Game{public: virtual voi
2015-04-02 22:22:40
312
原创 设计模式学习(九):组合模式
有时候又叫做部分-整体模式,它使我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以像处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦。这个例子是最常见的UI元素。比如,一个Panel可以包括button 和eidtview等等,其实这3个元素都是一个View代码#include <iostream>#include <vector>using namespa
2015-04-02 22:02:39
395
原创 设计模式学习(八):外观模式
外观模式(Facade),为子系统中的一组接口提供一个一致的界面,定义一个高层接口,这个接口使得这一子系统更加容易使用。这是从网上找的一个例子代码#include <iostream>using namespace std;class Scanner{public: void scan(){cout<<"scan"<<endl;}};class Parser{public:
2015-04-02 21:15:46
324
原创 设计模式学习(七):建造者模式
将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。 代码#include <iostream>using namespace std;class Product{ //最终产品public: void show(){cout<<"a:"<<a<<" b:"<<b<<" c:"<<c<<endl;} void setPartA
2015-04-02 21:01:25
230
原创 设计模式学习(六):模版模式
又叫模板方法模式,在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情冴下,重新定义算法中的某些步骤。下面的例子是一个去银行办业务的例子,去银行要完成 1、等号 2、办业务,可以是取款,存款,转账 3、评价代码#include <iostream>using namespace std;class Bank{public: void
2015-04-02 20:25:58
302
原创 设计模式学习(五):原型模式
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 Prototype原型模式是一种创建型设计模式,Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。代码#include <iostream>#include <string
2015-04-02 20:01:40
402
原创 设计模式学习(四):适配器模式
在计算机编程中,适配器模式(有时候也称包装样式或者包装)将一个类的接口适配成用户所期待的。一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。下面的例子是从网上找的设计模式C++实现(3)——适配器模式#include <iostream>using namespace std;class Sequence{ //targetpublic:
2015-04-01 23:27:49
284
原创 设计模式学习(三):策略模式
策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。下面的例子以排序算法为例子○下面的一种方式是通过,new 出一种具体算法,并传递指针参数(或引用参数,前面有一篇文章中已实现)的一种实现方式#include <iostream>using namespace std;class SortAlgorithm{ //抽象排序算法类
2015-04-01 22:59:44
271
原创 设计模式学习(一):单例模式
最近,在学习设计模式,由于比较熟悉C++,所以,都是用C++实现的。 由于没看过《设计模式》之类的书,都是从网上搜的资料,看的代码,看完之后,自己又重新实现了一遍。由于是干androd的,所以这个单例模式是参考的android实现的. 位置:android4.4.2\442\system\core\include\utils\Singleton.h android4.4.2\442\frame
2015-04-01 21:11:34
368
原创 利用策略模式实现的线程同步
利用策略模式实现的线程同步代码 头文件#ifndef __MUTEX_DEMO__#define __MUTEX_DEMO__#include <windows.h>//锁接口类class ILock {public: virtual ~ILock(){} virtual void Lock() = 0; virtual void Unlock() = 0;
2015-03-31 21:25:57
338
原创 java交换两个变量的一种方法
由于java中没有指针,所以像c那样swap两个变量没法实现,所以就想了一种方法。在要交换的两个变量之外,再添加一个变量,保存交换后的结果。 代码:package com.demo;public class MainActivity { static void swap1(int a,int b) { int tmp; tmp = a; a
2015-03-31 20:29:01
627
原创 用C++写的一个简单的Log类
这是参考网上的一个了例子【一个简易的C++日志记录类】写的,我的这个不需要boost,而是改成了用windows API。这个Log类,使用了单例模式。思路是单独创建一个线程,获取log文本,并将其写入到文件中。由于是多线程,所以要注意线程同步。代码 ★头文件:MyLogger.h#ifndef __INFO_LOGGER__#define __INFO_LOGGER__#include <s
2015-03-30 22:03:02
1006
原创 重写Adapter类
有时需要对ListView中的每个Item进行个性化,下面是个简单的例子。其中最重要的ArrayAdapter中的getView()方法的重写,参考了android中ArrayAdapter中的源码。一:代码1.首先是Layout,一个是主界面mian.xml,另一个是ListView中的单独的条目imagelayout.xml。代码如下: ★1 main.xml<?xml versio
2015-03-29 09:42:31
584
原创 C++虚析构函数和简单的引用计数原理
C++虚析构函数和简单的引用计数原理一直对C++虚析构函数和引用技术不是特别清楚,所以到网上搜了些资料,写了一个简单的例子。一、代码如下(hello.cpp)#include<stdio.h>class SimpleRefBase {public: SimpleRefBase():mRef_(1) { printf("func:%s() mRef_:%d\n",__F
2015-03-28 08:08:12
635
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人